func()

in pkg/virtualrouter/resource_manager.go [266:300]


func (m *defaultResourceManager) updateCRDVirtualRouter(ctx context.Context, vr *appmesh.VirtualRouter, sdkVR *appmeshsdk.VirtualRouterData, sdkRouteByName map[string]*appmeshsdk.RouteData) error {
	oldVR := vr.DeepCopy()

	needsUpdate := false
	if aws.StringValue(vr.Status.VirtualRouterARN) != aws.StringValue(sdkVR.Metadata.Arn) {
		vr.Status.VirtualRouterARN = sdkVR.Metadata.Arn
		needsUpdate = true
	}
	if aws.Int64Value(vr.Status.ObservedGeneration) != vr.Generation {
		vr.Status.ObservedGeneration = aws.Int64(vr.Generation)
		needsUpdate = true
	}

	routeARNByName := make(map[string]string)
	for name, sdkRoute := range sdkRouteByName {
		routeARNByName[name] = aws.StringValue(sdkRoute.Metadata.Arn)
	}
	if !cmp.Equal(vr.Status.RouteARNs, routeARNByName) {
		vr.Status.RouteARNs = routeARNByName
		needsUpdate = true
	}

	vrActiveConditionStatus := corev1.ConditionFalse
	if sdkVR.Status != nil && aws.StringValue(sdkVR.Status.Status) == appmeshsdk.VirtualRouterStatusCodeActive {
		vrActiveConditionStatus = corev1.ConditionTrue
	}
	if updateCondition(vr, appmesh.VirtualRouterActive, vrActiveConditionStatus, nil, nil) {
		needsUpdate = true
	}

	if !needsUpdate {
		return nil
	}
	return m.k8sClient.Status().Patch(ctx, vr, client.MergeFrom(oldVR))
}