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.
 | 
			
		||||
		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
 | 
			
		||||
// federated services and the underlying cluster services (e.g. ClusterIP, NodePort) are ignored.
 | 
			
		||||
func equivalent(federationService, clusterService v1.Service) bool {
 | 
			
		||||
	clusterService.Spec.ClusterIP = federationService.Spec.ClusterIP
 | 
			
		||||
	for i := range clusterService.Spec.Ports {
 | 
			
		||||
		clusterService.Spec.Ports[i].NodePort = federationService.Spec.Ports[i].NodePort
 | 
			
		||||
func equivalent(clusterService, federationService v1.Service) bool {
 | 
			
		||||
	federationService.Spec.ClusterIP = clusterService.Spec.ClusterIP
 | 
			
		||||
	for i := range federationService.Spec.Ports {
 | 
			
		||||
		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 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user