mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	test service shard recreation when deleted from federated cluster
This commit is contained in:
		@@ -144,6 +144,28 @@ var _ = framework.KubeDescribe("Federated Services [Feature:Federation]", func()
 | 
			
		||||
				verifyCascadingDeletionForService(f.FederationClientset, clusters, nil, nsName)
 | 
			
		||||
				By(fmt.Sprintf("Verified that services were not deleted from underlying clusters"))
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
			It("should recreate service shard in underlying clusters when service shard is deleted", func() {
 | 
			
		||||
				fedframework.SkipUnlessFederated(f.ClientSet)
 | 
			
		||||
				service = createServiceOrFail(f.FederationClientset, nsName, FederatedServiceName)
 | 
			
		||||
				defer func() {
 | 
			
		||||
					// Cleanup
 | 
			
		||||
					By(fmt.Sprintf("Deleting service %q in namespace %q", service.Name, nsName))
 | 
			
		||||
					err := f.FederationClientset.Services(nsName).Delete(service.Name, &metav1.DeleteOptions{})
 | 
			
		||||
					framework.ExpectNoError(err, "Error deleting service %q in namespace %q", service.Name, nsName)
 | 
			
		||||
				}()
 | 
			
		||||
				By(fmt.Sprintf("Wait for service shards to be created in all clusters for service \"%s/%s\"", nsName, service.Name))
 | 
			
		||||
				waitForServiceShardsOrFail(nsName, service, clusters)
 | 
			
		||||
				framework.Logf("Successfully created and synced service \"%s/%s\" to all clusters", nsName, service.Name)
 | 
			
		||||
 | 
			
		||||
				By(fmt.Sprintf("Deleting a service shard in one underlying cluster"))
 | 
			
		||||
				primaryClusterName := clusters[0].Name
 | 
			
		||||
				err := deleteServiceShard(clusters[0], nsName, FederatedServiceName)
 | 
			
		||||
				framework.ExpectNoError(err, fmt.Sprintf("while deleting service shard %q in cluster %q", FederatedServiceName, primaryClusterName))
 | 
			
		||||
 | 
			
		||||
				waitForServiceShardsOrFail(nsName, service, clusters)
 | 
			
		||||
				framework.Logf("Successfully recreated service shard \"%s/%s\" in %q cluster", nsName, service.Name, primaryClusterName)
 | 
			
		||||
			})
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		var _ = Describe("DNS", func() {
 | 
			
		||||
@@ -345,6 +367,16 @@ func updateServiceOrFail(clientset *fedclientset.Clientset, namespace, name stri
 | 
			
		||||
	return newService
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func deleteServiceShard(c *fedframework.Cluster, namespace, service string) error {
 | 
			
		||||
	err := c.Clientset.Services(namespace).Delete(service, &metav1.DeleteOptions{})
 | 
			
		||||
	if err != nil && !errors.IsNotFound(err) {
 | 
			
		||||
		framework.Logf("Failed to delete service %q in namespace %q, in cluster %q", service, namespace, c.Name)
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	By(fmt.Sprintf("Service %q in namespace %q in cluster %q deleted", service, namespace, c.Name))
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user