Fix cleanupServiceShardLoadBalancer

This commit is contained in:
shashidharatd 2017-06-05 22:38:34 +05:30
parent 605b106d2d
commit f81c1e6702
2 changed files with 16 additions and 36 deletions

View File

@ -18,6 +18,7 @@ package framework
import (
"fmt"
"strings"
"time"
"k8s.io/apimachinery/pkg/api/errors"
@ -231,3 +232,9 @@ func restConfigForCluster(clusterConf *clusterConfig) *restclient.Config {
framework.ExpectNoError(err, fmt.Sprintf("Error creating client for cluster %q: %+v", clusterConf.name, err))
return restConfig
}
func GetZoneFromClusterName(clusterName string) string {
// Ref: https://github.com/kubernetes/kubernetes/blob/master/cluster/kube-util.sh#L55
prefix := "federation-e2e-" + framework.TestContext.Provider + "-"
return strings.TrimPrefix(clusterName, prefix)
}

View File

@ -27,9 +27,9 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/test/e2e/common"
"k8s.io/kubernetes/test/e2e/framework"
fedframework "k8s.io/kubernetes/test/e2e_federation/framework"
@ -243,16 +243,18 @@ func cleanupServiceShardsAndProviderResources(namespace string, service *v1.Serv
continue
}
if cSvc.Spec.Type == v1.ServiceTypeLoadBalancer {
// In federation tests, e2e zone names are used to derive federation member cluster names
zone := fedframework.GetZoneFromClusterName(name)
serviceLBName := cloudprovider.GetLoadBalancerName(cSvc)
framework.Logf("cleaning cloud provider resource for service %q in namespace %q, in cluster %q", service.Name, namespace, name)
framework.CleanupServiceResources(serviceLBName, zone)
}
err = cleanupServiceShard(c.Clientset, name, namespace, cSvc, fedframework.FederatedDefaultTestTimeout)
if err != nil {
framework.Logf("Failed to delete service %q in namespace %q, in cluster %q: %v", service.Name, namespace, name, err)
}
if service.Spec.Type == v1.ServiceTypeLoadBalancer {
err = cleanupServiceShardLoadBalancer(name, cSvc, fedframework.FederatedDefaultTestTimeout)
if err != nil {
framework.Logf("Failed to delete cloud provider resources for service %q in namespace %q, in cluster %q, err: %v", service.Name, namespace, name, err)
}
}
}
}
@ -270,35 +272,6 @@ func cleanupServiceShard(clientset *kubeclientset.Clientset, clusterName, namesp
return err
}
func cleanupServiceShardLoadBalancer(clusterName string, service *v1.Service, timeout time.Duration) error {
provider := framework.TestContext.CloudConfig.Provider
if provider == nil {
return fmt.Errorf("cloud provider undefined")
}
internalSvc := &v1.Service{}
err := api.Scheme.Convert(service, internalSvc, nil)
if err != nil {
return fmt.Errorf("failed to convert versioned service object to internal type: %v", err)
}
err = wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
lbi, supported := provider.LoadBalancer()
if !supported {
return false, fmt.Errorf("%q doesn't support load balancers", provider.ProviderName())
}
err := lbi.EnsureLoadBalancerDeleted(clusterName, internalSvc)
if err != nil {
// Deletion failed with an error, try again.
framework.Logf("Failed to delete cloud provider resources for service %q in namespace %q, in cluster %q: %v", service.Name, service.Namespace, clusterName, err)
return false, nil
}
By(fmt.Sprintf("Cloud provider resources for Service %q in namespace %q in cluster %q deleted", service.Name, service.Namespace, clusterName))
return true, nil
})
return err
}
func podExitCodeDetector(f *fedframework.Framework, name, namespace string, code int32) func() error {
// If we ever get any container logs, stash them here.
logs := ""