Skip to content

Commit

Permalink
Merge pull request #51138 from yujuhong/alpha-calls
Browse files Browse the repository at this point in the history
Automatic merge from submit-queue

GCE: Add functions for Alpha address and forwarding rules
  • Loading branch information
Kubernetes Submit Queue committed Aug 24, 2017
2 parents 470eb92 + 0d1efd5 commit 5cb1ccc
Show file tree
Hide file tree
Showing 21 changed files with 131 additions and 95 deletions.
1 change: 1 addition & 0 deletions pkg/cloudprovider/providers/gce/BUILD
Expand Up @@ -83,6 +83,7 @@ go_test(
"gce_healthchecks_test.go",
"gce_loadbalancer_external_test.go",
"gce_test.go",
"metrics_test.go",
],
library = ":go_default_library",
deps = [
Expand Down
28 changes: 23 additions & 5 deletions pkg/cloudprovider/providers/gce/gce_addresses.go
Expand Up @@ -18,17 +18,18 @@ package gce

import (
"fmt"
"time"

"github.com/golang/glog"
computealpha "google.golang.org/api/compute/v0.alpha"
compute "google.golang.org/api/compute/v1"
)

func newAddressMetricContext(request, region string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"address_" + request, region, unusedMetricLabel},
}
return newAddressMetricContextWithVersion(request, region, computeV1Version)
}

func newAddressMetricContextWithVersion(request, region, version string) *metricContext {
return newGenericMetricContext("address", request, region, unusedMetricLabel, version)
}

// ReserveGlobalAddress creates a global address.
Expand Down Expand Up @@ -71,6 +72,16 @@ func (gce *GCECloud) ReserveRegionAddress(addr *compute.Address, region string)
return gce.waitForRegionOp(op, region, mc)
}

// ReserveAlphaRegionAddress creates an Alpha, regional address.
func (gce *GCECloud) ReserveAlphaRegionAddress(addr *computealpha.Address, region string) error {
mc := newAddressMetricContextWithVersion("reserve", region, computeAlphaVersion)
op, err := gce.serviceAlpha.Addresses.Insert(gce.projectID, region, addr).Do()
if err != nil {
return mc.Observe(err)
}
return gce.waitForRegionOp(op, region, mc)
}

// DeleteRegionAddress deletes a region address by name.
func (gce *GCECloud) DeleteRegionAddress(name, region string) error {
mc := newAddressMetricContext("delete", region)
Expand All @@ -88,6 +99,13 @@ func (gce *GCECloud) GetRegionAddress(name, region string) (*compute.Address, er
return v, mc.Observe(err)
}

// GetAlphaRegionAddress returns the Alpha, regional address by name.
func (gce *GCECloud) GetAlphaRegionAddress(name, region string) (*computealpha.Address, error) {
mc := newAddressMetricContextWithVersion("get", region, computeAlphaVersion)
v, err := gce.serviceAlpha.Addresses.Get(gce.projectID, region, name).Do()
return v, mc.Observe(err)
}

// GetRegionAddressByIP returns the regional address matching the given IP
// address.
func (gce *GCECloud) GetRegionAddressByIP(region, ipAddress string) (*compute.Address, error) {
Expand Down
9 changes: 9 additions & 0 deletions pkg/cloudprovider/providers/gce/gce_addresses_fakes.go
Expand Up @@ -20,6 +20,7 @@ import (
"fmt"
"net/http"

computealpha "google.golang.org/api/compute/v0.alpha"
compute "google.golang.org/api/compute/v1"
"google.golang.org/api/googleapi"
)
Expand Down Expand Up @@ -103,3 +104,11 @@ func (cas *FakeCloudAddressService) GetRegionAddressByIP(region, ipAddress strin
}
return nil, makeGoogleAPINotFoundError("")
}

func (cas *FakeCloudAddressService) GetAlphaRegionAddress(name, region string) (*computealpha.Address, error) {
return nil, fmt.Errorf("not implemented")
}

func (cas *FakeCloudAddressService) ReserveAlphaRegionAddress(addr *computealpha.Address, region string) error {
return fmt.Errorf("not implemented")
}
6 changes: 1 addition & 5 deletions pkg/cloudprovider/providers/gce/gce_backendservice.go
Expand Up @@ -18,16 +18,12 @@ package gce

import (
"net/http"
"time"

compute "google.golang.org/api/compute/v1"
)

func newBackendServiceMetricContext(request, region string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"backendservice_" + request, region, unusedMetricLabel},
}
return newGenericMetricContext("backendservice", request, region, unusedMetricLabel, computeV1Version)
}

// GetGlobalBackendService retrieves a backend by name.
Expand Down
6 changes: 1 addition & 5 deletions pkg/cloudprovider/providers/gce/gce_cert.go
Expand Up @@ -18,16 +18,12 @@ package gce

import (
"net/http"
"time"

compute "google.golang.org/api/compute/v1"
)

func newCertMetricContext(request string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"cert_" + request, unusedMetricLabel, unusedMetricLabel},
}
return newGenericMetricContext("cert", request, unusedMetricLabel, unusedMetricLabel, computeV1Version)
}

// GetSslCertificate returns the SslCertificate by name.
Expand Down
7 changes: 1 addition & 6 deletions pkg/cloudprovider/providers/gce/gce_clusters.go
Expand Up @@ -16,13 +16,8 @@ limitations under the License.

package gce

import "time"

func newClustersMetricContext(request, zone string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"clusters_" + request, unusedMetricLabel, zone},
}
return newGenericMetricContext("clusters", request, unusedMetricLabel, zone, computeV1Version)
}

func (gce *GCECloud) ListClusters() ([]string, error) {
Expand Down
6 changes: 1 addition & 5 deletions pkg/cloudprovider/providers/gce/gce_disks.go
Expand Up @@ -21,7 +21,6 @@ import (
"fmt"
"net/http"
"strings"
"time"

"k8s.io/apimachinery/pkg/types"
"k8s.io/kubernetes/pkg/cloudprovider"
Expand Down Expand Up @@ -85,10 +84,7 @@ type GCEDisk struct {
}

func newDiskMetricContext(request, zone string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"disk_" + request, unusedMetricLabel, zone},
}
return newGenericMetricContext("disk", request, unusedMetricLabel, zone, computeV1Version)
}

func (gce *GCECloud) AttachDisk(diskName string, nodeName types.NodeName, readOnly bool) error {
Expand Down
7 changes: 1 addition & 6 deletions pkg/cloudprovider/providers/gce/gce_firewall.go
Expand Up @@ -17,16 +17,11 @@ limitations under the License.
package gce

import (
"time"

compute "google.golang.org/api/compute/v1"
)

func newFirewallMetricContext(request string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"firewall_" + request, unusedMetricLabel, unusedMetricLabel},
}
return newGenericMetricContext("firewall", request, unusedMetricLabel, unusedMetricLabel, computeV1Version)
}

// GetFirewall returns the Firewall by name.
Expand Down
30 changes: 24 additions & 6 deletions pkg/cloudprovider/providers/gce/gce_forwardingrule.go
Expand Up @@ -17,16 +17,15 @@ limitations under the License.
package gce

import (
"time"

computealpha "google.golang.org/api/compute/v0.alpha"
compute "google.golang.org/api/compute/v1"
)

func newForwardingRuleMetricContext(request, region string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"forwardingrule_" + request, region, unusedMetricLabel},
}
return newForwardingRuleMetricContextWithVersion(request, region, computeV1Version)
}
func newForwardingRuleMetricContextWithVersion(request, region, version string) *metricContext {
return newGenericMetricContext("forwardingrule", request, region, unusedMetricLabel, version)
}

// CreateGlobalForwardingRule creates the passed GlobalForwardingRule
Expand Down Expand Up @@ -85,6 +84,13 @@ func (gce *GCECloud) GetRegionForwardingRule(name, region string) (*compute.Forw
return v, mc.Observe(err)
}

// GetAlphaRegionForwardingRule returns the Alpha forwarding rule by name & region.
func (gce *GCECloud) GetAlphaRegionForwardingRule(name, region string) (*computealpha.ForwardingRule, error) {
mc := newForwardingRuleMetricContextWithVersion("get", region, computeAlphaVersion)
v, err := gce.serviceAlpha.ForwardingRules.Get(gce.projectID, region, name).Do()
return v, mc.Observe(err)
}

// ListRegionForwardingRules lists all RegionalForwardingRules in the project & region.
func (gce *GCECloud) ListRegionForwardingRules(region string) (*compute.ForwardingRuleList, error) {
mc := newForwardingRuleMetricContext("list", region)
Expand All @@ -105,6 +111,18 @@ func (gce *GCECloud) CreateRegionForwardingRule(rule *compute.ForwardingRule, re
return gce.waitForRegionOp(op, region, mc)
}

// CreateAlphaRegionForwardingRule creates and returns an Alpha
// forwarding fule in the given region.
func (gce *GCECloud) CreateAlphaRegionForwardingRule(rule *computealpha.ForwardingRule, region string) error {
mc := newForwardingRuleMetricContextWithVersion("create", region, computeAlphaVersion)
op, err := gce.serviceAlpha.ForwardingRules.Insert(gce.projectID, region, rule).Do()
if err != nil {
return mc.Observe(err)
}

return gce.waitForRegionOp(op, region, mc)
}

// DeleteRegionForwardingRule deletes the RegionalForwardingRule by name & region.
func (gce *GCECloud) DeleteRegionForwardingRule(name, region string) error {
mc := newForwardingRuleMetricContext("delete", region)
Expand Down
7 changes: 1 addition & 6 deletions pkg/cloudprovider/providers/gce/gce_healthchecks.go
Expand Up @@ -17,8 +17,6 @@ limitations under the License.
package gce

import (
"time"

"k8s.io/api/core/v1"
"k8s.io/kubernetes/pkg/master/ports"
utilversion "k8s.io/kubernetes/pkg/util/version"
Expand All @@ -45,10 +43,7 @@ func init() {
}

func newHealthcheckMetricContext(request string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"healthcheck_" + request, unusedMetricLabel, unusedMetricLabel},
}
return newGenericMetricContext("healthcheck", request, unusedMetricLabel, unusedMetricLabel, computeV1Version)
}

// GetHttpHealthCheck returns the given HttpHealthCheck by name.
Expand Down
11 changes: 2 additions & 9 deletions pkg/cloudprovider/providers/gce/gce_instancegroup.go
Expand Up @@ -16,17 +16,10 @@ limitations under the License.

package gce

import (
"time"

compute "google.golang.org/api/compute/v1"
)
import compute "google.golang.org/api/compute/v1"

func newInstanceGroupMetricContext(request string, zone string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"instancegroup_" + request, unusedMetricLabel, zone},
}
return newGenericMetricContext("instancegroup", request, unusedMetricLabel, zone, computeV1Version)
}

// CreateInstanceGroup creates an instance group with the given
Expand Down
5 changes: 1 addition & 4 deletions pkg/cloudprovider/providers/gce/gce_instances.go
Expand Up @@ -41,10 +41,7 @@ const (
)

func newInstancesMetricContext(request, zone string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"instances_" + request, unusedMetricLabel, zone},
}
return newGenericMetricContext("instances", request, unusedMetricLabel, zone, computeV1Version)
}

func splitNodesByZone(nodes []*v1.Node) map[string][]*v1.Node {
Expand Down
9 changes: 8 additions & 1 deletion pkg/cloudprovider/providers/gce/gce_interfaces.go
Expand Up @@ -16,7 +16,10 @@ limitations under the License.

package gce

import compute "google.golang.org/api/compute/v1"
import (
computealpha "google.golang.org/api/compute/v0.alpha"
compute "google.golang.org/api/compute/v1"
)

// CloudAddressService is an interface for managing addresses
type CloudAddressService interface {
Expand All @@ -25,4 +28,8 @@ type CloudAddressService interface {
GetRegionAddressByIP(region, ipAddress string) (*compute.Address, error)
// TODO: Mock `DeleteRegionAddress(name, region string) endpoint
// TODO: Mock Global endpoints

// Alpha API.
GetAlphaRegionAddress(name, region string) (*computealpha.Address, error)
ReserveAlphaRegionAddress(addr *computealpha.Address, region string) error
}
6 changes: 1 addition & 5 deletions pkg/cloudprovider/providers/gce/gce_loadbalancer.go
Expand Up @@ -21,7 +21,6 @@ import (
"fmt"
"net"
"strings"
"time"

"github.com/golang/glog"

Expand All @@ -40,10 +39,7 @@ var (
)

func newLoadBalancerMetricContext(request, region string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"loadbalancer_" + request, region, unusedMetricLabel},
}
return newGenericMetricContext("loadbalancer", request, region, unusedMetricLabel, computeV1Version)
}

type lbScheme string
Expand Down
6 changes: 1 addition & 5 deletions pkg/cloudprovider/providers/gce/gce_routes.go
Expand Up @@ -20,7 +20,6 @@ import (
"fmt"
"net/http"
"path"
"time"

"k8s.io/apimachinery/pkg/types"
"k8s.io/kubernetes/pkg/cloudprovider"
Expand All @@ -30,10 +29,7 @@ import (
)

func newRoutesMetricContext(request string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"routes_" + request, unusedMetricLabel, unusedMetricLabel},
}
return newGenericMetricContext("routes", request, unusedMetricLabel, unusedMetricLabel, computeV1Version)
}

func (gce *GCECloud) ListRoutes(clusterName string) ([]*cloudprovider.Route, error) {
Expand Down
11 changes: 2 additions & 9 deletions pkg/cloudprovider/providers/gce/gce_targetpool.go
Expand Up @@ -16,17 +16,10 @@ limitations under the License.

package gce

import (
"time"

compute "google.golang.org/api/compute/v1"
)
import compute "google.golang.org/api/compute/v1"

func newTargetPoolMetricContext(request, region string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"targetpool_" + request, region, unusedMetricLabel},
}
return newGenericMetricContext("targetpool", request, region, unusedMetricLabel, computeV1Version)
}

// GetTargetPool returns the TargetPool by name.
Expand Down
6 changes: 1 addition & 5 deletions pkg/cloudprovider/providers/gce/gce_targetproxy.go
Expand Up @@ -18,16 +18,12 @@ package gce

import (
"net/http"
"time"

compute "google.golang.org/api/compute/v1"
)

func newTargetProxyMetricContext(request string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"targetproxy_" + request, unusedMetricLabel, unusedMetricLabel},
}
return newGenericMetricContext("targetproxy", request, unusedMetricLabel, unusedMetricLabel, computeV1Version)
}

// GetTargetHttpProxy returns the UrlMap by name.
Expand Down
6 changes: 1 addition & 5 deletions pkg/cloudprovider/providers/gce/gce_urlmap.go
Expand Up @@ -18,16 +18,12 @@ package gce

import (
"net/http"
"time"

compute "google.golang.org/api/compute/v1"
)

func newUrlMapMetricContext(request string) *metricContext {
return &metricContext{
start: time.Now(),
attributes: []string{"urlmap_" + request, unusedMetricLabel, unusedMetricLabel},
}
return newGenericMetricContext("urlmap", request, unusedMetricLabel, unusedMetricLabel, computeV1Version)
}

// GetUrlMap returns the UrlMap by name.
Expand Down

0 comments on commit 5cb1ccc

Please sign in to comment.