in pkg/cloudmap/resource_manager.go [89:138]
func (m *defaultResourceManager) Reconcile(ctx context.Context, vn *appmesh.VirtualNode) error {
ms, err := m.findMeshDependency(ctx, vn)
if err != nil {
return err
}
cloudMapConfig := vn.Spec.ServiceDiscovery.AWSCloudMap
nsSummary, err := m.findCloudMapNamespace(ctx, cloudMapConfig.NamespaceName)
if err != nil {
return err
}
if nsSummary == nil {
return fmt.Errorf("cloudMap namespace not found: %v", cloudMapConfig.NamespaceName)
}
svcSummary, err := m.findCloudMapService(ctx, nsSummary, cloudMapConfig.ServiceName)
if err != nil {
return err
}
if svcSummary == nil {
svcSummary, err = m.createCloudMapService(ctx, vn, nsSummary, cloudMapConfig.ServiceName, m.config.CloudMapServiceTTL)
if err != nil {
return err
}
}
if err := m.updateCRDVirtualNode(ctx, vn, svcSummary); err != nil {
return err
}
var readyPods []*corev1.Pod
var notReadyPods []*corev1.Pod
if vn.Spec.PodSelector != nil {
readyPods, notReadyPods, _, err = m.virtualNodeEndpointResolver.Resolve(ctx, vn)
if err != nil {
return err
}
m.log.V(1).Info("resolved VirtualNode endpoints",
"readyPods", len(readyPods),
"notReadyPods", len(notReadyPods),
)
} else {
m.log.V(1).Info("VirtualNode does not have a pod selector, no endpoints")
}
nodeInfoByName := m.getClusterNodeInfo(ctx)
if err := m.instancesReconciler.Reconcile(ctx, ms, vn, *svcSummary, readyPods, notReadyPods, nodeInfoByName); err != nil {
return err
}
return nil
}