func()

in pkg/virtualrouter/resource_manager.go [209:245]


func (m *defaultResourceManager) updateSDKVirtualRouter(ctx context.Context, sdkVR *appmeshsdk.VirtualRouterData, vr *appmesh.VirtualRouter) (*appmeshsdk.VirtualRouterData, error) {
	actualSDKVRSpec := sdkVR.Spec
	desiredSDKVRSpec, err := BuildSDKVirtualRouterSpec(vr)
	if err != nil {
		return nil, err
	}

	opts := cmpopts.EquateEmpty()
	if cmp.Equal(desiredSDKVRSpec, actualSDKVRSpec, opts) {
		return sdkVR, nil
	}
	if !m.isSDKVirtualRouterControlledByCRDVirtualRouter(ctx, sdkVR, vr) {
		m.log.V(1).Info("skip virtualRouter update since it's not controlled",
			"virtualRouter", k8s.NamespacedName(vr),
			"virtualRouterARN", aws.StringValue(sdkVR.Metadata.Arn),
		)
		return sdkVR, nil
	}

	diff := cmp.Diff(desiredSDKVRSpec, actualSDKVRSpec, opts)
	m.log.V(1).Info("virtualRouterSpec changed",
		"virtualRouter", k8s.NamespacedName(vr),
		"actualSDKVRSpec", actualSDKVRSpec,
		"desiredSDKVRSpec", desiredSDKVRSpec,
		"diff", diff,
	)
	resp, err := m.appMeshSDK.UpdateVirtualRouterWithContext(ctx, &appmeshsdk.UpdateVirtualRouterInput{
		MeshName:          sdkVR.MeshName,
		MeshOwner:         sdkVR.Metadata.MeshOwner,
		VirtualRouterName: sdkVR.VirtualRouterName,
		Spec:              desiredSDKVRSpec,
	})
	if err != nil {
		return nil, err
	}
	return resp.VirtualRouter, nil
}