in pkg/virtualservice/resource_manager.go [231:268]
func (m *defaultResourceManager) updateSDKVirtualService(ctx context.Context, sdkVS *appmeshsdk.VirtualServiceData, vs *appmesh.VirtualService,
vnByKey map[types.NamespacedName]*appmesh.VirtualNode, vrByKey map[types.NamespacedName]*appmesh.VirtualRouter) (*appmeshsdk.VirtualServiceData, error) {
actualSDKVSSpec := sdkVS.Spec
desiredSDKVSSpec, err := BuildSDKVirtualServiceSpec(vs, vnByKey, vrByKey)
if err != nil {
return nil, err
}
opts := cmpopts.EquateEmpty()
if cmp.Equal(desiredSDKVSSpec, actualSDKVSSpec, opts) {
return sdkVS, nil
}
if !m.isSDKVirtualServiceControlledByCRDVirtualService(ctx, sdkVS, vs) {
m.log.V(1).Info("skip virtualService update since it's not controlled",
"virtualService", k8s.NamespacedName(vs),
"virtualServiceARN", aws.StringValue(sdkVS.Metadata.Arn),
)
return sdkVS, nil
}
diff := cmp.Diff(desiredSDKVSSpec, actualSDKVSSpec, opts)
m.log.V(1).Info("virtualServiceSpec changed",
"virtualService", k8s.NamespacedName(vs),
"actualSDKVRSpec", actualSDKVSSpec,
"desiredSDKVRSpec", desiredSDKVSSpec,
"diff", diff,
)
resp, err := m.appMeshSDK.UpdateVirtualServiceWithContext(ctx, &appmeshsdk.UpdateVirtualServiceInput{
MeshName: sdkVS.MeshName,
MeshOwner: sdkVS.Metadata.MeshOwner,
VirtualServiceName: sdkVS.VirtualServiceName,
Spec: desiredSDKVSSpec,
})
if err != nil {
return nil, err
}
return resp.VirtualService, nil
}