Fix federated service reconcilation issue due to addition of ExternalTrafficPolicy field to v1.Service
This commit is contained in:
		@@ -664,6 +664,11 @@ func (s *ServiceController) getOperationsToPerformOnCluster(cluster *v1beta1.Clu
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							// If ExternalTrafficPolicy is not set in federated service, use the ExternalTrafficPolicy
 | 
				
			||||||
 | 
							// defaulted to in federated cluster.
 | 
				
			||||||
 | 
							if desiredService.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyType("") {
 | 
				
			||||||
 | 
								desiredService.Spec.ExternalTrafficPolicy = clusterService.Spec.ExternalTrafficPolicy
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Update existing service, if needed.
 | 
							// Update existing service, if needed.
 | 
				
			||||||
		if !Equivalent(desiredService, clusterService) {
 | 
							if !Equivalent(desiredService, clusterService) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -379,10 +379,13 @@ func deleteServiceShard(c *fedframework.Cluster, namespace, service string) erro
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// equivalent returns true if the two services are equivalent.  Fields which are expected to differ between
 | 
					// equivalent returns true if the two services are equivalent.  Fields which are expected to differ between
 | 
				
			||||||
// federated services and the underlying cluster services (e.g. ClusterIP, NodePort) are ignored.
 | 
					// federated services and the underlying cluster services (e.g. ClusterIP, NodePort) are ignored.
 | 
				
			||||||
func equivalent(federationService, clusterService v1.Service) bool {
 | 
					func equivalent(clusterService, federationService v1.Service) bool {
 | 
				
			||||||
	clusterService.Spec.ClusterIP = federationService.Spec.ClusterIP
 | 
						federationService.Spec.ClusterIP = clusterService.Spec.ClusterIP
 | 
				
			||||||
	for i := range clusterService.Spec.Ports {
 | 
						for i := range federationService.Spec.Ports {
 | 
				
			||||||
		clusterService.Spec.Ports[i].NodePort = federationService.Spec.Ports[i].NodePort
 | 
							federationService.Spec.Ports[i].NodePort = clusterService.Spec.Ports[i].NodePort
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if federationService.Spec.ExternalTrafficPolicy == v1.ServiceExternalTrafficPolicyType("") {
 | 
				
			||||||
 | 
							federationService.Spec.ExternalTrafficPolicy = clusterService.Spec.ExternalTrafficPolicy
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if federationService.Name != clusterService.Name || federationService.Namespace != clusterService.Namespace {
 | 
						if federationService.Name != clusterService.Name || federationService.Namespace != clusterService.Namespace {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user