mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	Merge pull request #38255 from bprashanth/svc_cleanup
Automatic merge from submit-queue Delete regional static-ip instead of global for type=lb Global vs region is the difference between ``` $ gcloud compute addresses delete foo --global $ gcloud compute addresses delete foo --region us-central1 ``` Type=LoadBalancer users the second type and were were doing the first. Also adds some logging.
This commit is contained in:
		| @@ -41,6 +41,7 @@ import ( | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/golang/glog" | ||||
| 	"google.golang.org/api/googleapi" | ||||
| 	"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5" | ||||
| 	"k8s.io/kubernetes/pkg/api" | ||||
| 	apierrs "k8s.io/kubernetes/pkg/api/errors" | ||||
| @@ -5000,17 +5001,49 @@ func (p *E2ETestNodePreparer) CleanupNodes() error { | ||||
| 	return encounteredError | ||||
| } | ||||
|  | ||||
| func CleanupGCEResources(loadBalancerName string) (err error) { | ||||
| // CleanupGCEResources cleans up GCE Service Type=LoadBalancer resources with | ||||
| // the given name. The name is usually the UUID of the Service prefixed with an | ||||
| // alpha-numeric character ('a') to work around cloudprovider rules. | ||||
| func CleanupGCEResources(loadBalancerName string) (retErr error) { | ||||
| 	gceCloud, ok := TestContext.CloudConfig.Provider.(*gcecloud.GCECloud) | ||||
| 	if !ok { | ||||
| 		return fmt.Errorf("failed to convert CloudConfig.Provider to GCECloud: %#v", TestContext.CloudConfig.Provider) | ||||
| 	} | ||||
| 	gceCloud.DeleteFirewall(loadBalancerName) | ||||
| 	gceCloud.DeleteForwardingRule(loadBalancerName) | ||||
| 	gceCloud.DeleteGlobalStaticIP(loadBalancerName) | ||||
| 	hc, _ := gceCloud.GetHttpHealthCheck(loadBalancerName) | ||||
| 	gceCloud.DeleteTargetPool(loadBalancerName, hc) | ||||
| 	return nil | ||||
| 	if err := gceCloud.DeleteFirewall(loadBalancerName); err != nil && | ||||
| 		!IsGoogleAPIHTTPErrorCode(err, http.StatusNotFound) { | ||||
| 		retErr = err | ||||
| 	} | ||||
| 	if err := gceCloud.DeleteForwardingRule(loadBalancerName); err != nil && | ||||
| 		!IsGoogleAPIHTTPErrorCode(err, http.StatusNotFound) { | ||||
| 		retErr = fmt.Errorf("%v\n%v", retErr, err) | ||||
|  | ||||
| 	} | ||||
| 	if err := gceCloud.DeleteGlobalStaticIP(loadBalancerName); err != nil && | ||||
| 		!IsGoogleAPIHTTPErrorCode(err, http.StatusNotFound) { | ||||
| 		retErr = fmt.Errorf("%v\n%v", retErr, err) | ||||
| 	} | ||||
| 	// This function shells out to gcloud, so we can't compare for NotFound errors. | ||||
| 	// TODO: Invoke cloudprovider method directly instead. | ||||
| 	if err := DeleteGCEStaticIP(loadBalancerName); err != nil { | ||||
| 		Logf("%v", err) | ||||
| 	} | ||||
| 	hc, getErr := gceCloud.GetHttpHealthCheck(loadBalancerName) | ||||
| 	if getErr != nil && !IsGoogleAPIHTTPErrorCode(getErr, http.StatusNotFound) { | ||||
| 		retErr = fmt.Errorf("%v\n%v", retErr, getErr) | ||||
| 		return | ||||
| 	} | ||||
| 	if err := gceCloud.DeleteTargetPool(loadBalancerName, hc); err != nil && | ||||
| 		!IsGoogleAPIHTTPErrorCode(err, http.StatusNotFound) { | ||||
| 		retErr = fmt.Errorf("%v\n%v", retErr, err) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| // IsHTTPErrorCode returns true if the error is a google api | ||||
| // error matching the corresponding HTTP error code. | ||||
| func IsGoogleAPIHTTPErrorCode(err error, code int) bool { | ||||
| 	apiErr, ok := err.(*googleapi.Error) | ||||
| 	return ok && apiErr.Code == code | ||||
| } | ||||
|  | ||||
| // getMaster populates the externalIP, internalIP and hostname fields of the master. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user