in pkg/cloudmap/instances_reconcile_task.go [135:175]
func (t *instancesReconcileTask) matchDesiredInstancesAgainstExistingInstances(
desiredReadyInstanceInfoByID map[string]instanceInfo,
desiredNotReadyInstanceInfoByID map[string]instanceInfo,
existingInstanceAttrsByID map[string]instanceAttributes) (map[string]instanceInfo, []string) {
instancesToCreateOrUpdate := make(map[string]instanceInfo)
for instanceID, desiredInfo := range desiredReadyInstanceInfoByID {
if existingAttrs, exists := existingInstanceAttrsByID[instanceID]; exists {
if !cmp.Equal(desiredInfo.attrs, existingAttrs, ignoreAttrAWSInitHealthStatus()) {
if existingInitHealthStatus, ok := existingAttrs[attrAWSInitHealthStatus]; ok {
desiredInfo.attrs[attrAWSInitHealthStatus] = existingInitHealthStatus
} else {
desiredInfo.attrs[attrAWSInitHealthStatus] = servicediscovery.CustomHealthStatusHealthy
}
instancesToCreateOrUpdate[instanceID] = desiredInfo
}
} else {
desiredInfo.attrs[attrAWSInitHealthStatus] = servicediscovery.CustomHealthStatusHealthy
instancesToCreateOrUpdate[instanceID] = desiredInfo
}
}
for instanceID, desiredInfo := range desiredNotReadyInstanceInfoByID {
if existingAttrs, exists := existingInstanceAttrsByID[instanceID]; exists {
if !cmp.Equal(desiredInfo.attrs, existingAttrs, ignoreAttrAWSInitHealthStatus()) {
if existingInitHealthStatus, ok := existingAttrs[attrAWSInitHealthStatus]; ok {
desiredInfo.attrs[attrAWSInitHealthStatus] = existingInitHealthStatus
} else {
desiredInfo.attrs[attrAWSInitHealthStatus] = servicediscovery.CustomHealthStatusUnhealthy
}
instancesToCreateOrUpdate[instanceID] = desiredInfo
}
}
}
desiredInstanceIDs := sets.StringKeySet(desiredReadyInstanceInfoByID).Union(sets.StringKeySet(desiredNotReadyInstanceInfoByID))
existingInstanceIDs := sets.StringKeySet(existingInstanceAttrsByID)
instancesToDelete := existingInstanceIDs.Difference(desiredInstanceIDs).List()
return instancesToCreateOrUpdate, instancesToDelete
}