Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 726c2e7

Browse files
author
Kubernetes Submit Queue
authored
Merge pull request #34652 from quinton-hoole/2016-10-12-fix-fed-e2e-resource-leak
Automatic merge from submit-queue Fix leaking ingress resources in federated ingress e2e test. Originally the federated ingresses were being deleted, but due to the lack of cascading deletion, the cluster ingresses were never being deleted, leading to leaked GCE loadbalancer resources. This fixes that.
2 parents f20e1cc + 455e79b commit 726c2e7

1 file changed

Lines changed: 19 additions & 2 deletions

File tree

test/e2e/federated-ingress.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
6464

6565
It("should be created and deleted successfully", func() {
6666
framework.SkipUnlessFederated(f.Client)
67-
67+
framework.SkipUnlessProviderIs("gce", "gke") // TODO: Federated ingress is not yet supported on non-GCP platforms.
6868
nsName := f.FederationNamespace.Name
6969
ingress := createIngressOrFail(f.FederationClientset_1_5, nsName)
7070
By(fmt.Sprintf("Creation of ingress %q in namespace %q succeeded. Deleting ingress.", ingress.Name, nsName))
@@ -86,6 +86,7 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
8686
// register clusters in federation apiserver
8787
BeforeEach(func() {
8888
framework.SkipUnlessFederated(f.Client)
89+
framework.SkipUnlessProviderIs("gce", "gke") // TODO: Federated ingress is not yet supported on non-GCP platforms.
8990
if federationName = os.Getenv("FEDERATION_NAME"); federationName == "" {
9091
federationName = DefaultFederationName
9192
}
@@ -104,7 +105,11 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
104105
defer func() { // Cleanup
105106
By(fmt.Sprintf("Deleting ingress %q in namespace %q", ingress.Name, ns))
106107
err := f.FederationClientset_1_5.Ingresses(ns).Delete(ingress.Name, &v1.DeleteOptions{})
107-
framework.ExpectNoError(err, "Error deleting ingress %q in namespace %q", ingress.Name, ns)
108+
framework.ExpectNoError(err, "Error deleting ingress %q/%q in federation", ns, ingress.Name)
109+
for clusterName, cluster := range clusters {
110+
err := cluster.Ingresses(ns).Delete(ingress.Name, &v1.DeleteOptions{})
111+
framework.ExpectNoError(err, "Error deleting ingress %q/%q in cluster %q", ns, ingress.Name, clusterName)
112+
}
108113
}()
109114
// wait for ingress shards being created
110115
waitForIngressShardsOrFail(ns, ingress, clusters)
@@ -143,6 +148,9 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
143148
}
144149
if jig.ing != nil {
145150
deleteIngressOrFail(f.FederationClientset_1_5, ns, jig.ing.Name)
151+
for clusterName, cluster := range clusters {
152+
deleteClusterIngressOrFail(clusterName, cluster.Clientset, ns, jig.ing.Name)
153+
}
146154
jig.ing = nil
147155
} else {
148156
By("No ingress to delete. Ingress is nil")
@@ -268,6 +276,15 @@ func deleteIngressOrFail(clientset *fedclientset.Clientset, namespace string, in
268276
framework.ExpectNoError(err, "Error deleting ingress %q from namespace %q", ingressName, namespace)
269277
}
270278

279+
// TODO: quinton: This is largely a cut 'n paste of the above. Yuck! Refactor as soon as we have a common interface implmented by both fedclientset.Clientset and kubeclientset.Clientset
280+
func deleteClusterIngressOrFail(clusterName string, clientset *kubeclientset.Clientset, namespace string, ingressName string) {
281+
if clientset == nil || len(namespace) == 0 || len(ingressName) == 0 {
282+
Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteClusterIngressOrFail: cluster: %q, clientset: %v, namespace: %v, ingress: %v", clusterName, clientset, namespace, ingressName))
283+
}
284+
err := clientset.Ingresses(namespace).Delete(ingressName, v1.NewDeleteOptions(0))
285+
framework.ExpectNoError(err, "Error deleting cluster ingress %q/%q from cluster %q", namespace, ingressName, clusterName)
286+
}
287+
271288
func createIngressOrFail(clientset *fedclientset.Clientset, namespace string) *v1beta1.Ingress {
272289
if clientset == nil || len(namespace) == 0 {
273290
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createIngressOrFail: clientset: %v, namespace: %v", clientset, namespace))

0 commit comments

Comments
 (0)