mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			139 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| /*
 | |
| Copyright 2017 The Kubernetes Authors.
 | |
| 
 | |
| Licensed under the Apache License, Version 2.0 (the "License");
 | |
| you may not use this file except in compliance with the License.
 | |
| You may obtain a copy of the License at
 | |
| 
 | |
|     http://www.apache.org/licenses/LICENSE-2.0
 | |
| 
 | |
| Unless required by applicable law or agreed to in writing, software
 | |
| distributed under the License is distributed on an "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| See the License for the specific language governing permissions and
 | |
| limitations under the License.
 | |
| */
 | |
| 
 | |
| package gce
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 
 | |
| 	compute "google.golang.org/api/compute/v1"
 | |
| )
 | |
| 
 | |
| func newTargetProxyMetricContext(request string) *metricContext {
 | |
| 	return newGenericMetricContext("targetproxy", request, unusedMetricLabel, unusedMetricLabel, computeV1Version)
 | |
| }
 | |
| 
 | |
| // GetTargetHttpProxy returns the UrlMap by name.
 | |
| func (gce *GCECloud) GetTargetHttpProxy(name string) (*compute.TargetHttpProxy, error) {
 | |
| 	mc := newTargetProxyMetricContext("get")
 | |
| 	v, err := gce.service.TargetHttpProxies.Get(gce.projectID, name).Do()
 | |
| 	return v, mc.Observe(err)
 | |
| }
 | |
| 
 | |
| // CreateTargetHttpProxy creates a TargetHttpProxy
 | |
| func (gce *GCECloud) CreateTargetHttpProxy(proxy *compute.TargetHttpProxy) error {
 | |
| 	mc := newTargetProxyMetricContext("create")
 | |
| 	op, err := gce.service.TargetHttpProxies.Insert(gce.projectID, proxy).Do()
 | |
| 	if err != nil {
 | |
| 		return mc.Observe(err)
 | |
| 	}
 | |
| 	return gce.waitForGlobalOp(op, mc)
 | |
| }
 | |
| 
 | |
| // SetUrlMapForTargetHttpProxy sets the given UrlMap for the given TargetHttpProxy.
 | |
| func (gce *GCECloud) SetUrlMapForTargetHttpProxy(proxy *compute.TargetHttpProxy, urlMap *compute.UrlMap) error {
 | |
| 	mc := newTargetProxyMetricContext("set_url_map")
 | |
| 	op, err := gce.service.TargetHttpProxies.SetUrlMap(
 | |
| 		gce.projectID, proxy.Name, &compute.UrlMapReference{UrlMap: urlMap.SelfLink}).Do()
 | |
| 	if err != nil {
 | |
| 		return mc.Observe(err)
 | |
| 	}
 | |
| 	return gce.waitForGlobalOp(op, mc)
 | |
| }
 | |
| 
 | |
| // DeleteTargetHttpProxy deletes the TargetHttpProxy by name.
 | |
| func (gce *GCECloud) DeleteTargetHttpProxy(name string) error {
 | |
| 	mc := newTargetProxyMetricContext("delete")
 | |
| 	op, err := gce.service.TargetHttpProxies.Delete(gce.projectID, name).Do()
 | |
| 	if err != nil {
 | |
| 		if isHTTPErrorCode(err, http.StatusNotFound) {
 | |
| 			return nil
 | |
| 		}
 | |
| 		return mc.Observe(err)
 | |
| 	}
 | |
| 	return gce.waitForGlobalOp(op, mc)
 | |
| }
 | |
| 
 | |
| // ListTargetHttpProxies lists all TargetHttpProxies in the project.
 | |
| func (gce *GCECloud) ListTargetHttpProxies() (*compute.TargetHttpProxyList, error) {
 | |
| 	mc := newTargetProxyMetricContext("list")
 | |
| 	// TODO: use PageToken to list all not just the first 500
 | |
| 	v, err := gce.service.TargetHttpProxies.List(gce.projectID).Do()
 | |
| 	return v, mc.Observe(err)
 | |
| }
 | |
| 
 | |
| // TargetHttpsProxy management
 | |
| 
 | |
| // GetTargetHttpsProxy returns the UrlMap by name.
 | |
| func (gce *GCECloud) GetTargetHttpsProxy(name string) (*compute.TargetHttpsProxy, error) {
 | |
| 	mc := newTargetProxyMetricContext("get")
 | |
| 	v, err := gce.service.TargetHttpsProxies.Get(gce.projectID, name).Do()
 | |
| 	return v, mc.Observe(err)
 | |
| }
 | |
| 
 | |
| // CreateTargetHttpsProxy creates a TargetHttpsProxy
 | |
| func (gce *GCECloud) CreateTargetHttpsProxy(proxy *compute.TargetHttpsProxy) error {
 | |
| 	mc := newTargetProxyMetricContext("create")
 | |
| 	op, err := gce.service.TargetHttpsProxies.Insert(gce.projectID, proxy).Do()
 | |
| 	if err != nil {
 | |
| 		return mc.Observe(err)
 | |
| 	}
 | |
| 	return gce.waitForGlobalOp(op, mc)
 | |
| }
 | |
| 
 | |
| // SetUrlMapForTargetHttpsProxy sets the given UrlMap for the given TargetHttpsProxy.
 | |
| func (gce *GCECloud) SetUrlMapForTargetHttpsProxy(proxy *compute.TargetHttpsProxy, urlMap *compute.UrlMap) error {
 | |
| 	mc := newTargetProxyMetricContext("set_url_map")
 | |
| 	op, err := gce.service.TargetHttpsProxies.SetUrlMap(
 | |
| 		gce.projectID, proxy.Name, &compute.UrlMapReference{UrlMap: urlMap.SelfLink}).Do()
 | |
| 	if err != nil {
 | |
| 		return mc.Observe(err)
 | |
| 	}
 | |
| 	return gce.waitForGlobalOp(op, mc)
 | |
| }
 | |
| 
 | |
| // SetSslCertificateForTargetHttpsProxy sets the given SslCertificate for the given TargetHttpsProxy.
 | |
| func (gce *GCECloud) SetSslCertificateForTargetHttpsProxy(proxy *compute.TargetHttpsProxy, sslCert *compute.SslCertificate) error {
 | |
| 	mc := newTargetProxyMetricContext("set_ssl_cert")
 | |
| 	op, err := gce.service.TargetHttpsProxies.SetSslCertificates(
 | |
| 		gce.projectID, proxy.Name, &compute.TargetHttpsProxiesSetSslCertificatesRequest{SslCertificates: []string{sslCert.SelfLink}}).Do()
 | |
| 	if err != nil {
 | |
| 		return mc.Observe(err)
 | |
| 	}
 | |
| 	return gce.waitForGlobalOp(op, mc)
 | |
| }
 | |
| 
 | |
| // DeleteTargetHttpsProxy deletes the TargetHttpsProxy by name.
 | |
| func (gce *GCECloud) DeleteTargetHttpsProxy(name string) error {
 | |
| 	mc := newTargetProxyMetricContext("delete")
 | |
| 	op, err := gce.service.TargetHttpsProxies.Delete(gce.projectID, name).Do()
 | |
| 	if err != nil {
 | |
| 		if isHTTPErrorCode(err, http.StatusNotFound) {
 | |
| 			return nil
 | |
| 		}
 | |
| 		return mc.Observe(err)
 | |
| 	}
 | |
| 	return gce.waitForGlobalOp(op, mc)
 | |
| }
 | |
| 
 | |
| // ListTargetHttpsProxies lists all TargetHttpsProxies in the project.
 | |
| func (gce *GCECloud) ListTargetHttpsProxies() (*compute.TargetHttpsProxyList, error) {
 | |
| 	mc := newTargetProxyMetricContext("list")
 | |
| 	// TODO: use PageToken to list all not just the first 500
 | |
| 	v, err := gce.service.TargetHttpsProxies.List(gce.projectID).Do()
 | |
| 	return v, mc.Observe(err)
 | |
| }
 |