in pkg/virtualnode/resource_manager.go [227:263]
func (m *defaultResourceManager) updateSDKVirtualNode(ctx context.Context, sdkVN *appmeshsdk.VirtualNodeData, ms *appmesh.Mesh, vn *appmesh.VirtualNode, vsByKey map[types.NamespacedName]*appmesh.VirtualService) (*appmeshsdk.VirtualNodeData, error) {
actualSDKVNSpec := sdkVN.Spec
desiredSDKVNSpec, err := BuildSDKVirtualNodeSpec(vn, vsByKey)
if err != nil {
return nil, err
}
opts := equality.CompareOptionForVirtualNodeSpec()
if cmp.Equal(desiredSDKVNSpec, actualSDKVNSpec, opts) {
return sdkVN, nil
}
if !m.isSDKVirtualNodeControlledByCRDVirtualNode(ctx, sdkVN, vn) {
m.log.V(1).Info("skip virtualNode update since it's not controlled",
"virtualNode", k8s.NamespacedName(vn),
"virtualNodeARN", aws.StringValue(sdkVN.Metadata.Arn),
)
return sdkVN, nil
}
diff := cmp.Diff(desiredSDKVNSpec, actualSDKVNSpec, opts)
m.log.V(1).Info("virtualNodeSpec changed",
"virtualNode", k8s.NamespacedName(vn),
"actualSDKVNSpec", actualSDKVNSpec,
"desiredSDKVNSpec", desiredSDKVNSpec,
"diff", diff,
)
resp, err := m.appMeshSDK.UpdateVirtualNodeWithContext(ctx, &appmeshsdk.UpdateVirtualNodeInput{
MeshName: ms.Spec.AWSName,
MeshOwner: ms.Spec.MeshOwner,
Spec: desiredSDKVNSpec,
VirtualNodeName: sdkVN.VirtualNodeName,
})
if err != nil {
return nil, err
}
return resp.VirtualNode, nil
}