Fix federated service reconcilation issue due to addition of ExternalTrafficPolicy field to v1.Service

This commit is contained in:
shashidharatd 2017-05-15 07:26:19 +05:30
parent 3227f44157
commit d22527522f
2 changed files with 12 additions and 4 deletions

View File

@ -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) {

View File

@ -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 {