From c962c2602a883d54e0b16b30a41d907c7a7b8464 Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Fri, 18 Nov 2016 12:58:42 -0800 Subject: [PATCH] dependencies: pkg/cloudprovider --- pkg/cloudprovider/cloud.go | 22 +++---- pkg/cloudprovider/providers/aws/aws.go | 46 ++++++------- pkg/cloudprovider/providers/aws/aws_test.go | 26 ++++---- pkg/cloudprovider/providers/aws/volumes.go | 3 +- .../providers/azure/azure_instances.go | 10 +-- .../providers/azure/azure_loadbalancer.go | 26 ++++---- .../providers/azure/azure_test.go | 32 ++++----- .../providers/azure/azure_util.go | 18 ++--- .../cloudstack/cloudstack_loadbalancer.go | 32 ++++----- .../providers/cloudstack/cloudstack_test.go | 4 +- pkg/cloudprovider/providers/fake/fake.go | 28 ++++---- pkg/cloudprovider/providers/gce/gce.go | 66 +++++++++---------- pkg/cloudprovider/providers/mesos/client.go | 12 ++-- pkg/cloudprovider/providers/mesos/mesos.go | 12 ++-- .../providers/openstack/openstack.go | 30 ++++----- .../openstack/openstack_instances.go | 16 ++--- .../openstack/openstack_loadbalancer.go | 60 ++++++++--------- .../providers/openstack/openstack_test.go | 4 +- pkg/cloudprovider/providers/ovirt/ovirt.go | 12 ++-- pkg/cloudprovider/providers/photon/photon.go | 23 +++---- .../providers/rackspace/rackspace.go | 12 ++-- .../providers/vsphere/vsphere.go | 16 ++--- 22 files changed, 256 insertions(+), 254 deletions(-) diff --git a/pkg/cloudprovider/cloud.go b/pkg/cloudprovider/cloud.go index 6ed104ff15b..06c9674bfc4 100644 --- a/pkg/cloudprovider/cloud.go +++ b/pkg/cloudprovider/cloud.go @@ -21,7 +21,7 @@ import ( "fmt" "strings" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/types" ) @@ -53,7 +53,7 @@ type Clusters interface { // TODO(#6812): Use a shorter name that's less likely to be longer than cloud // providers' name length limits. -func GetLoadBalancerName(service *api.Service) string { +func GetLoadBalancerName(service *v1.Service) string { //GCE requires that the name of a load balancer starts with a lower case letter. ret := "a" + string(service.UID) ret = strings.Replace(ret, "-", "", -1) @@ -81,26 +81,26 @@ type LoadBalancer interface { // TODO: Break this up into different interfaces (LB, etc) when we have more than one type of service // GetLoadBalancer returns whether the specified load balancer exists, and // if so, what its status is. - // Implementations must treat the *api.Service parameter as read-only and not modify it. + // Implementations must treat the *v1.Service parameter as read-only and not modify it. // Parameter 'clusterName' is the name of the cluster as presented to kube-controller-manager - GetLoadBalancer(clusterName string, service *api.Service) (status *api.LoadBalancerStatus, exists bool, err error) + GetLoadBalancer(clusterName string, service *v1.Service) (status *v1.LoadBalancerStatus, exists bool, err error) // EnsureLoadBalancer creates a new load balancer 'name', or updates the existing one. Returns the status of the balancer - // Implementations must treat the *api.Service parameter as read-only and not modify it. + // Implementations must treat the *v1.Service parameter as read-only and not modify it. // Parameter 'clusterName' is the name of the cluster as presented to kube-controller-manager - EnsureLoadBalancer(clusterName string, service *api.Service, nodeNames []string) (*api.LoadBalancerStatus, error) + EnsureLoadBalancer(clusterName string, service *v1.Service, nodeNames []string) (*v1.LoadBalancerStatus, error) // UpdateLoadBalancer updates hosts under the specified load balancer. - // Implementations must treat the *api.Service parameter as read-only and not modify it. + // Implementations must treat the *v1.Service parameter as read-only and not modify it. // Parameter 'clusterName' is the name of the cluster as presented to kube-controller-manager - UpdateLoadBalancer(clusterName string, service *api.Service, nodeNames []string) error + UpdateLoadBalancer(clusterName string, service *v1.Service, nodeNames []string) error // EnsureLoadBalancerDeleted deletes the specified load balancer if it // exists, returning nil if the load balancer specified either didn't exist or // was successfully deleted. // This construction is useful because many cloud providers' load balancers // have multiple underlying components, meaning a Get could say that the LB // doesn't exist even if some part of it is still laying around. - // Implementations must treat the *api.Service parameter as read-only and not modify it. + // Implementations must treat the *v1.Service parameter as read-only and not modify it. // Parameter 'clusterName' is the name of the cluster as presented to kube-controller-manager - EnsureLoadBalancerDeleted(clusterName string, service *api.Service) error + EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error } // Instances is an abstract, pluggable interface for sets of instances. @@ -109,7 +109,7 @@ type Instances interface { // TODO(roberthbailey): This currently is only used in such a way that it // returns the address of the calling instance. We should do a rename to // make this clearer. - NodeAddresses(name types.NodeName) ([]api.NodeAddress, error) + NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) // ExternalID returns the cloud provider ID of the node with the specified NodeName. // Note that if the instance does not exist or is no longer running, we must return ("", cloudprovider.InstanceNotFound) ExternalID(nodeName types.NodeName) (string, error) diff --git a/pkg/cloudprovider/providers/aws/aws.go b/pkg/cloudprovider/providers/aws/aws.go index 3bea88ab5b8..dff6afedd6e 100644 --- a/pkg/cloudprovider/providers/aws/aws.go +++ b/pkg/cloudprovider/providers/aws/aws.go @@ -41,9 +41,9 @@ import ( "github.com/aws/aws-sdk-go/service/elb" "github.com/golang/glog" - "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/api/service" "k8s.io/kubernetes/pkg/api/unversioned" + "k8s.io/kubernetes/pkg/api/v1" + "k8s.io/kubernetes/pkg/api/v1/service" "k8s.io/kubernetes/pkg/cloudprovider" aws_credentials "k8s.io/kubernetes/pkg/credentialprovider/aws" "k8s.io/kubernetes/pkg/types" @@ -878,17 +878,17 @@ func (c *Cloud) Routes() (cloudprovider.Routes, bool) { } // NodeAddresses is an implementation of Instances.NodeAddresses. -func (c *Cloud) NodeAddresses(name types.NodeName) ([]api.NodeAddress, error) { +func (c *Cloud) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) { if c.selfAWSInstance.nodeName == name || len(name) == 0 { - addresses := []api.NodeAddress{} + addresses := []v1.NodeAddress{} internalIP, err := c.metadata.GetMetadata("local-ipv4") if err != nil { return nil, err } - addresses = append(addresses, api.NodeAddress{Type: api.NodeInternalIP, Address: internalIP}) + addresses = append(addresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: internalIP}) // Legacy compatibility: the private ip was the legacy host ip - addresses = append(addresses, api.NodeAddress{Type: api.NodeLegacyHostIP, Address: internalIP}) + addresses = append(addresses, v1.NodeAddress{Type: v1.NodeLegacyHostIP, Address: internalIP}) externalIP, err := c.metadata.GetMetadata("public-ipv4") if err != nil { @@ -896,7 +896,7 @@ func (c *Cloud) NodeAddresses(name types.NodeName) ([]api.NodeAddress, error) { // but the AWS client masks all failures with the same error description. glog.V(2).Info("Could not determine public IP from AWS metadata.") } else { - addresses = append(addresses, api.NodeAddress{Type: api.NodeExternalIP, Address: externalIP}) + addresses = append(addresses, v1.NodeAddress{Type: v1.NodeExternalIP, Address: externalIP}) } return addresses, nil @@ -906,7 +906,7 @@ func (c *Cloud) NodeAddresses(name types.NodeName) ([]api.NodeAddress, error) { return nil, fmt.Errorf("getInstanceByNodeName failed for %q with %v", name, err) } - addresses := []api.NodeAddress{} + addresses := []v1.NodeAddress{} if !isNilOrEmpty(instance.PrivateIpAddress) { ipAddress := *instance.PrivateIpAddress @@ -914,10 +914,10 @@ func (c *Cloud) NodeAddresses(name types.NodeName) ([]api.NodeAddress, error) { if ip == nil { return nil, fmt.Errorf("EC2 instance had invalid private address: %s (%s)", orEmpty(instance.InstanceId), ipAddress) } - addresses = append(addresses, api.NodeAddress{Type: api.NodeInternalIP, Address: ip.String()}) + addresses = append(addresses, v1.NodeAddress{Type: v1.NodeInternalIP, Address: ip.String()}) // Legacy compatibility: the private ip was the legacy host ip - addresses = append(addresses, api.NodeAddress{Type: api.NodeLegacyHostIP, Address: ip.String()}) + addresses = append(addresses, v1.NodeAddress{Type: v1.NodeLegacyHostIP, Address: ip.String()}) } // TODO: Other IP addresses (multiple ips)? @@ -927,7 +927,7 @@ func (c *Cloud) NodeAddresses(name types.NodeName) ([]api.NodeAddress, error) { if ip == nil { return nil, fmt.Errorf("EC2 instance had invalid public address: %s (%s)", orEmpty(instance.InstanceId), ipAddress) } - addresses = append(addresses, api.NodeAddress{Type: api.NodeExternalIP, Address: ip.String()}) + addresses = append(addresses, v1.NodeAddress{Type: v1.NodeExternalIP, Address: ip.String()}) } return addresses, nil @@ -1042,7 +1042,7 @@ func (c *Cloud) getAllZones() (sets.String, error) { // We don't currently cache this; it is currently used only in volume // creation which is expected to be a comparatively rare occurrence. - // TODO: Caching / expose api.Nodes to the cloud provider? + // TODO: Caching / expose v1.Nodes to the cloud provider? // TODO: We could also query for subnets, I think filters := []*ec2.Filter{newEc2Filter("instance-state-name", "running")} @@ -2464,7 +2464,7 @@ func getPortSets(annotation string) (ports *portSets) { // buildListener creates a new listener from the given port, adding an SSL certificate // if indicated by the appropriate annotations. -func buildListener(port api.ServicePort, annotations map[string]string, sslPorts *portSets) (*elb.Listener, error) { +func buildListener(port v1.ServicePort, annotations map[string]string, sslPorts *portSets) (*elb.Listener, error) { loadBalancerPort := int64(port.Port) portName := strings.ToLower(port.Name) instancePort := int64(port.NodePort) @@ -2499,12 +2499,12 @@ func buildListener(port api.ServicePort, annotations map[string]string, sslPorts } // EnsureLoadBalancer implements LoadBalancer.EnsureLoadBalancer -func (c *Cloud) EnsureLoadBalancer(clusterName string, apiService *api.Service, hosts []string) (*api.LoadBalancerStatus, error) { +func (c *Cloud) EnsureLoadBalancer(clusterName string, apiService *v1.Service, hosts []string) (*v1.LoadBalancerStatus, error) { annotations := apiService.Annotations glog.V(2).Infof("EnsureLoadBalancer(%v, %v, %v, %v, %v, %v, %v, %v)", clusterName, apiService.Namespace, apiService.Name, c.region, apiService.Spec.LoadBalancerIP, apiService.Spec.Ports, hosts, annotations) - if apiService.Spec.SessionAffinity != api.ServiceAffinityNone { + if apiService.Spec.SessionAffinity != v1.ServiceAffinityNone { // ELB supports sticky sessions, but only when configured for HTTP/HTTPS return nil, fmt.Errorf("unsupported load balancer affinity: %v", apiService.Spec.SessionAffinity) } @@ -2517,7 +2517,7 @@ func (c *Cloud) EnsureLoadBalancer(clusterName string, apiService *api.Service, listeners := []*elb.Listener{} portList := getPortSets(annotations[ServiceAnnotationLoadBalancerSSLPorts]) for _, port := range apiService.Spec.Ports { - if port.Protocol != api.ProtocolTCP { + if port.Protocol != v1.ProtocolTCP { return nil, fmt.Errorf("Only TCP LoadBalancer is supported for AWS ELB") } if port.NodePort == 0 { @@ -2773,7 +2773,7 @@ func (c *Cloud) EnsureLoadBalancer(clusterName string, apiService *api.Service, } // GetLoadBalancer is an implementation of LoadBalancer.GetLoadBalancer -func (c *Cloud) GetLoadBalancer(clusterName string, service *api.Service) (*api.LoadBalancerStatus, bool, error) { +func (c *Cloud) GetLoadBalancer(clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) { loadBalancerName := cloudprovider.GetLoadBalancerName(service) lb, err := c.describeLoadBalancer(loadBalancerName) if err != nil { @@ -2788,13 +2788,13 @@ func (c *Cloud) GetLoadBalancer(clusterName string, service *api.Service) (*api. return status, true, nil } -func toStatus(lb *elb.LoadBalancerDescription) *api.LoadBalancerStatus { - status := &api.LoadBalancerStatus{} +func toStatus(lb *elb.LoadBalancerDescription) *v1.LoadBalancerStatus { + status := &v1.LoadBalancerStatus{} if !isNilOrEmpty(lb.DNSName) { - var ingress api.LoadBalancerIngress + var ingress v1.LoadBalancerIngress ingress.Hostname = orEmpty(lb.DNSName) - status.Ingress = []api.LoadBalancerIngress{ingress} + status.Ingress = []v1.LoadBalancerIngress{ingress} } return status @@ -2989,7 +2989,7 @@ func (c *Cloud) updateInstanceSecurityGroupsForLoadBalancer(lb *elb.LoadBalancer } // EnsureLoadBalancerDeleted implements LoadBalancer.EnsureLoadBalancerDeleted. -func (c *Cloud) EnsureLoadBalancerDeleted(clusterName string, service *api.Service) error { +func (c *Cloud) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error { loadBalancerName := cloudprovider.GetLoadBalancerName(service) lb, err := c.describeLoadBalancer(loadBalancerName) if err != nil { @@ -3085,7 +3085,7 @@ func (c *Cloud) EnsureLoadBalancerDeleted(clusterName string, service *api.Servi } // UpdateLoadBalancer implements LoadBalancer.UpdateLoadBalancer -func (c *Cloud) UpdateLoadBalancer(clusterName string, service *api.Service, hosts []string) error { +func (c *Cloud) UpdateLoadBalancer(clusterName string, service *v1.Service, hosts []string) error { hostSet := sets.NewString(hosts...) instances, err := c.getInstancesByNodeNamesCached(hostSet) if err != nil { diff --git a/pkg/cloudprovider/providers/aws/aws_test.go b/pkg/cloudprovider/providers/aws/aws_test.go index 7a9c99bcc42..7f81aad2090 100644 --- a/pkg/cloudprovider/providers/aws/aws_test.go +++ b/pkg/cloudprovider/providers/aws/aws_test.go @@ -28,8 +28,8 @@ import ( "github.com/aws/aws-sdk-go/service/autoscaling" "github.com/golang/glog" - "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/unversioned" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/util/sets" "github.com/stretchr/testify/assert" @@ -624,7 +624,7 @@ func TestList(t *testing.T) { } } -func testHasNodeAddress(t *testing.T, addrs []api.NodeAddress, addressType api.NodeAddressType, address string) { +func testHasNodeAddress(t *testing.T, addrs []v1.NodeAddress, addressType v1.NodeAddressType, address string) { for _, addr := range addrs { if addr.Type == addressType && addr.Address == address { return @@ -697,9 +697,9 @@ func TestNodeAddresses(t *testing.T) { if len(addrs3) != 3 { t.Errorf("Should return exactly 3 NodeAddresses") } - testHasNodeAddress(t, addrs3, api.NodeInternalIP, "192.168.0.1") - testHasNodeAddress(t, addrs3, api.NodeLegacyHostIP, "192.168.0.1") - testHasNodeAddress(t, addrs3, api.NodeExternalIP, "1.2.3.4") + testHasNodeAddress(t, addrs3, v1.NodeInternalIP, "192.168.0.1") + testHasNodeAddress(t, addrs3, v1.NodeLegacyHostIP, "192.168.0.1") + testHasNodeAddress(t, addrs3, v1.NodeExternalIP, "1.2.3.4") // Fetch from metadata aws4, fakeServices := mockInstancesResp(&instance0, []*ec2.Instance{&instance0}) @@ -710,8 +710,8 @@ func TestNodeAddresses(t *testing.T) { if err4 != nil { t.Errorf("unexpected error: %v", err4) } - testHasNodeAddress(t, addrs4, api.NodeInternalIP, "192.168.0.2") - testHasNodeAddress(t, addrs4, api.NodeExternalIP, "2.3.4.5") + testHasNodeAddress(t, addrs4, v1.NodeInternalIP, "192.168.0.2") + testHasNodeAddress(t, addrs4, v1.NodeExternalIP, "2.3.4.5") } func TestGetRegion(t *testing.T) { @@ -1192,7 +1192,7 @@ func TestDescribeLoadBalancerOnDelete(t *testing.T) { c, _ := newAWSCloud(strings.NewReader("[global]"), awsServices) awsServices.elb.expectDescribeLoadBalancers("aid") - c.EnsureLoadBalancerDeleted(TestClusterName, &api.Service{ObjectMeta: api.ObjectMeta{Name: "myservice", UID: "id"}}) + c.EnsureLoadBalancerDeleted(TestClusterName, &v1.Service{ObjectMeta: v1.ObjectMeta{Name: "myservice", UID: "id"}}) } func TestDescribeLoadBalancerOnUpdate(t *testing.T) { @@ -1200,7 +1200,7 @@ func TestDescribeLoadBalancerOnUpdate(t *testing.T) { c, _ := newAWSCloud(strings.NewReader("[global]"), awsServices) awsServices.elb.expectDescribeLoadBalancers("aid") - c.UpdateLoadBalancer(TestClusterName, &api.Service{ObjectMeta: api.ObjectMeta{Name: "myservice", UID: "id"}}, []string{}) + c.UpdateLoadBalancer(TestClusterName, &v1.Service{ObjectMeta: v1.ObjectMeta{Name: "myservice", UID: "id"}}, []string{}) } func TestDescribeLoadBalancerOnGet(t *testing.T) { @@ -1208,7 +1208,7 @@ func TestDescribeLoadBalancerOnGet(t *testing.T) { c, _ := newAWSCloud(strings.NewReader("[global]"), awsServices) awsServices.elb.expectDescribeLoadBalancers("aid") - c.GetLoadBalancer(TestClusterName, &api.Service{ObjectMeta: api.ObjectMeta{Name: "myservice", UID: "id"}}) + c.GetLoadBalancer(TestClusterName, &v1.Service{ObjectMeta: v1.ObjectMeta{Name: "myservice", UID: "id"}}) } func TestDescribeLoadBalancerOnEnsure(t *testing.T) { @@ -1216,7 +1216,7 @@ func TestDescribeLoadBalancerOnEnsure(t *testing.T) { c, _ := newAWSCloud(strings.NewReader("[global]"), awsServices) awsServices.elb.expectDescribeLoadBalancers("aid") - c.EnsureLoadBalancer(TestClusterName, &api.Service{ObjectMeta: api.ObjectMeta{Name: "myservice", UID: "id"}}, []string{}) + c.EnsureLoadBalancer(TestClusterName, &v1.Service{ObjectMeta: v1.ObjectMeta{Name: "myservice", UID: "id"}}, []string{}) } func TestBuildListener(t *testing.T) { @@ -1317,11 +1317,11 @@ func TestBuildListener(t *testing.T) { annotations[ServiceAnnotationLoadBalancerCertificate] = test.certAnnotation } ports := getPortSets(test.sslPortAnnotation) - l, err := buildListener(api.ServicePort{ + l, err := buildListener(v1.ServicePort{ NodePort: int32(test.instancePort), Port: int32(test.lbPort), Name: test.portName, - Protocol: api.Protocol("tcp"), + Protocol: v1.Protocol("tcp"), }, annotations, ports) if test.expectError { if err == nil { diff --git a/pkg/cloudprovider/providers/aws/volumes.go b/pkg/cloudprovider/providers/aws/volumes.go index f0ed233892e..c9d11ef8a7b 100644 --- a/pkg/cloudprovider/providers/aws/volumes.go +++ b/pkg/cloudprovider/providers/aws/volumes.go @@ -18,9 +18,10 @@ package aws import ( "fmt" - "github.com/aws/aws-sdk-go/aws" "net/url" "strings" + + "github.com/aws/aws-sdk-go/aws" ) // awsVolumeID represents the ID of the volume in the AWS API, e.g. vol-12345678a diff --git a/pkg/cloudprovider/providers/azure/azure_instances.go b/pkg/cloudprovider/providers/azure/azure_instances.go index a03c5dd9b05..46178b4298e 100644 --- a/pkg/cloudprovider/providers/azure/azure_instances.go +++ b/pkg/cloudprovider/providers/azure/azure_instances.go @@ -20,7 +20,7 @@ import ( "fmt" "regexp" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" "github.com/Azure/azure-sdk-for-go/arm/compute" @@ -28,15 +28,15 @@ import ( ) // NodeAddresses returns the addresses of the specified instance. -func (az *Cloud) NodeAddresses(name types.NodeName) ([]api.NodeAddress, error) { +func (az *Cloud) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) { ip, err := az.getIPForMachine(name) if err != nil { return nil, err } - return []api.NodeAddress{ - {Type: api.NodeInternalIP, Address: ip}, - {Type: api.NodeHostName, Address: string(name)}, + return []v1.NodeAddress{ + {Type: v1.NodeInternalIP, Address: ip}, + {Type: v1.NodeHostName, Address: string(name)}, }, nil } diff --git a/pkg/cloudprovider/providers/azure/azure_loadbalancer.go b/pkg/cloudprovider/providers/azure/azure_loadbalancer.go index bd26a41c528..8c43e1968ac 100644 --- a/pkg/cloudprovider/providers/azure/azure_loadbalancer.go +++ b/pkg/cloudprovider/providers/azure/azure_loadbalancer.go @@ -21,8 +21,8 @@ import ( "strconv" "strings" - "k8s.io/kubernetes/pkg/api" - serviceapi "k8s.io/kubernetes/pkg/api/service" + "k8s.io/kubernetes/pkg/api/v1" + serviceapi "k8s.io/kubernetes/pkg/api/v1/service" utilerrors "k8s.io/kubernetes/pkg/util/errors" "github.com/Azure/azure-sdk-for-go/arm/network" @@ -33,7 +33,7 @@ import ( // GetLoadBalancer returns whether the specified load balancer exists, and // if so, what its status is. -func (az *Cloud) GetLoadBalancer(clusterName string, service *api.Service) (status *api.LoadBalancerStatus, exists bool, err error) { +func (az *Cloud) GetLoadBalancer(clusterName string, service *v1.Service) (status *v1.LoadBalancerStatus, exists bool, err error) { lbName := getLoadBalancerName(clusterName) pipName := getPublicIPName(clusterName, service) serviceName := getServiceName(service) @@ -56,13 +56,13 @@ func (az *Cloud) GetLoadBalancer(clusterName string, service *api.Service) (stat return nil, false, nil } - return &api.LoadBalancerStatus{ - Ingress: []api.LoadBalancerIngress{{IP: *pip.Properties.IPAddress}}, + return &v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{IP: *pip.Properties.IPAddress}}, }, true, nil } // EnsureLoadBalancer creates a new load balancer 'name', or updates the existing one. Returns the status of the balancer -func (az *Cloud) EnsureLoadBalancer(clusterName string, service *api.Service, nodeNames []string) (*api.LoadBalancerStatus, error) { +func (az *Cloud) EnsureLoadBalancer(clusterName string, service *v1.Service, nodeNames []string) (*v1.LoadBalancerStatus, error) { lbName := getLoadBalancerName(clusterName) pipName := getPublicIPName(clusterName, service) serviceName := getServiceName(service) @@ -135,13 +135,13 @@ func (az *Cloud) EnsureLoadBalancer(clusterName string, service *api.Service, no } glog.V(2).Infof("ensure(%s): FINISH - %s", serviceName, *pip.Properties.IPAddress) - return &api.LoadBalancerStatus{ - Ingress: []api.LoadBalancerIngress{{IP: *pip.Properties.IPAddress}}, + return &v1.LoadBalancerStatus{ + Ingress: []v1.LoadBalancerIngress{{IP: *pip.Properties.IPAddress}}, }, nil } // UpdateLoadBalancer updates hosts under the specified load balancer. -func (az *Cloud) UpdateLoadBalancer(clusterName string, service *api.Service, nodeNames []string) error { +func (az *Cloud) UpdateLoadBalancer(clusterName string, service *v1.Service, nodeNames []string) error { _, err := az.EnsureLoadBalancer(clusterName, service, nodeNames) return err } @@ -152,7 +152,7 @@ func (az *Cloud) UpdateLoadBalancer(clusterName string, service *api.Service, no // This construction is useful because many cloud providers' load balancers // have multiple underlying components, meaning a Get could say that the LB // doesn't exist even if some part of it is still laying around. -func (az *Cloud) EnsureLoadBalancerDeleted(clusterName string, service *api.Service) error { +func (az *Cloud) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error { lbName := getLoadBalancerName(clusterName) pipName := getPublicIPName(clusterName, service) serviceName := getServiceName(service) @@ -160,7 +160,7 @@ func (az *Cloud) EnsureLoadBalancerDeleted(clusterName string, service *api.Serv glog.V(2).Infof("delete(%s): START clusterName=%q lbName=%q", serviceName, clusterName, lbName) // reconcile logic is capable of fully reconcile, so we can use this to delete - service.Spec.Ports = []api.ServicePort{} + service.Spec.Ports = []v1.ServicePort{} lb, existsLb, err := az.getAzureLoadBalancer(lbName) if err != nil { @@ -259,7 +259,7 @@ func (az *Cloud) ensurePublicIPDeleted(serviceName, pipName string) error { // This ensures load balancer exists and the frontend ip config is setup. // This also reconciles the Service's Ports with the LoadBalancer config. // This entails adding rules/probes for expected Ports and removing stale rules/ports. -func (az *Cloud) reconcileLoadBalancer(lb network.LoadBalancer, pip *network.PublicIPAddress, clusterName string, service *api.Service, nodeNames []string) (network.LoadBalancer, bool, error) { +func (az *Cloud) reconcileLoadBalancer(lb network.LoadBalancer, pip *network.PublicIPAddress, clusterName string, service *v1.Service, nodeNames []string) (network.LoadBalancer, bool, error) { lbName := getLoadBalancerName(clusterName) serviceName := getServiceName(service) lbFrontendIPConfigName := getFrontendIPConfigName(service) @@ -471,7 +471,7 @@ func (az *Cloud) reconcileLoadBalancer(lb network.LoadBalancer, pip *network.Pub // This reconciles the Network Security Group similar to how the LB is reconciled. // This entails adding required, missing SecurityRules and removing stale rules. -func (az *Cloud) reconcileSecurityGroup(sg network.SecurityGroup, clusterName string, service *api.Service) (network.SecurityGroup, bool, error) { +func (az *Cloud) reconcileSecurityGroup(sg network.SecurityGroup, clusterName string, service *v1.Service) (network.SecurityGroup, bool, error) { serviceName := getServiceName(service) wantLb := len(service.Spec.Ports) > 0 diff --git a/pkg/cloudprovider/providers/azure/azure_test.go b/pkg/cloudprovider/providers/azure/azure_test.go index d48a3e43129..246ec62755b 100644 --- a/pkg/cloudprovider/providers/azure/azure_test.go +++ b/pkg/cloudprovider/providers/azure/azure_test.go @@ -21,8 +21,8 @@ import ( "strings" "testing" - "k8s.io/kubernetes/pkg/api" - serviceapi "k8s.io/kubernetes/pkg/api/service" + "k8s.io/kubernetes/pkg/api/v1" + serviceapi "k8s.io/kubernetes/pkg/api/v1/service" "k8s.io/kubernetes/pkg/types" "github.com/Azure/azure-sdk-for-go/arm/compute" @@ -229,20 +229,20 @@ func getTestPublicIP() network.PublicIPAddress { return pip } -func getTestService(identifier string, requestedPorts ...int32) api.Service { - ports := []api.ServicePort{} +func getTestService(identifier string, requestedPorts ...int32) v1.Service { + ports := []v1.ServicePort{} for _, port := range requestedPorts { - ports = append(ports, api.ServicePort{ + ports = append(ports, v1.ServicePort{ Name: fmt.Sprintf("port-%d", port), - Protocol: api.ProtocolTCP, + Protocol: v1.ProtocolTCP, Port: port, NodePort: getBackendPort(port), }) } - svc := api.Service{ - Spec: api.ServiceSpec{ - Type: api.ServiceTypeLoadBalancer, + svc := v1.Service{ + Spec: v1.ServiceSpec{ + Type: v1.ServiceTypeLoadBalancer, Ports: ports, }, } @@ -253,7 +253,7 @@ func getTestService(identifier string, requestedPorts ...int32) api.Service { return svc } -func getTestLoadBalancer(services ...api.Service) network.LoadBalancer { +func getTestLoadBalancer(services ...v1.Service) network.LoadBalancer { rules := []network.LoadBalancingRule{} probes := []network.Probe{} @@ -286,14 +286,14 @@ func getTestLoadBalancer(services ...api.Service) network.LoadBalancer { return lb } -func getServiceSourceRanges(service *api.Service) []string { +func getServiceSourceRanges(service *v1.Service) []string { if len(service.Spec.LoadBalancerSourceRanges) == 0 { return []string{"Internet"} } return service.Spec.LoadBalancerSourceRanges } -func getTestSecurityGroup(services ...api.Service) network.SecurityGroup { +func getTestSecurityGroup(services ...v1.Service) network.SecurityGroup { rules := []network.SecurityRule{} for _, service := range services { @@ -322,7 +322,7 @@ func getTestSecurityGroup(services ...api.Service) network.SecurityGroup { return sg } -func validateLoadBalancer(t *testing.T, loadBalancer network.LoadBalancer, services ...api.Service) { +func validateLoadBalancer(t *testing.T, loadBalancer network.LoadBalancer, services ...v1.Service) { expectedRuleCount := 0 for _, svc := range services { for _, wantedRule := range svc.Spec.Ports { @@ -381,7 +381,7 @@ func validateLoadBalancer(t *testing.T, loadBalancer network.LoadBalancer, servi } } -func validateSecurityGroup(t *testing.T, securityGroup network.SecurityGroup, services ...api.Service) { +func validateSecurityGroup(t *testing.T, securityGroup network.SecurityGroup, services ...v1.Service) { expectedRuleCount := 0 for _, svc := range services { for _, wantedRule := range svc.Spec.Ports { @@ -455,7 +455,7 @@ func TestSecurityRulePriorityFailsIfExhausted(t *testing.T) { } func TestProtocolTranslationTCP(t *testing.T) { - proto := api.ProtocolTCP + proto := v1.ProtocolTCP transportProto, securityGroupProto, probeProto, err := getProtocolsFromKubernetesProtocol(proto) if err != nil { t.Error(err) @@ -473,7 +473,7 @@ func TestProtocolTranslationTCP(t *testing.T) { } func TestProtocolTranslationUDP(t *testing.T) { - proto := api.ProtocolUDP + proto := v1.ProtocolUDP _, _, _, err := getProtocolsFromKubernetesProtocol(proto) if err == nil { t.Error("Expected an error. UDP is unsupported.") diff --git a/pkg/cloudprovider/providers/azure/azure_util.go b/pkg/cloudprovider/providers/azure/azure_util.go index c020671042b..ff9cbe48df8 100644 --- a/pkg/cloudprovider/providers/azure/azure_util.go +++ b/pkg/cloudprovider/providers/azure/azure_util.go @@ -20,7 +20,7 @@ import ( "fmt" "strings" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" "github.com/Azure/azure-sdk-for-go/arm/compute" @@ -122,9 +122,9 @@ func getLastSegment(ID string) (string, error) { // returns the equivalent LoadBalancerRule, SecurityRule and LoadBalancerProbe // protocol types for the given Kubernetes protocol type. -func getProtocolsFromKubernetesProtocol(protocol api.Protocol) (network.TransportProtocol, network.SecurityRuleProtocol, network.ProbeProtocol, error) { +func getProtocolsFromKubernetesProtocol(protocol v1.Protocol) (network.TransportProtocol, network.SecurityRuleProtocol, network.ProbeProtocol, error) { switch protocol { - case api.ProtocolTCP: + case v1.ProtocolTCP: return network.TransportProtocolTCP, network.TCP, network.ProbeProtocolTCP, nil default: return "", "", "", fmt.Errorf("Only TCP is supported for Azure LoadBalancers") @@ -168,31 +168,31 @@ func getBackendPoolName(clusterName string) string { return clusterName } -func getRuleName(service *api.Service, port api.ServicePort) string { +func getRuleName(service *v1.Service, port v1.ServicePort) string { return fmt.Sprintf("%s-%s-%d-%d", getRulePrefix(service), port.Protocol, port.Port, port.NodePort) } // This returns a human-readable version of the Service used to tag some resources. // This is only used for human-readable convenience, and not to filter. -func getServiceName(service *api.Service) string { +func getServiceName(service *v1.Service) string { return fmt.Sprintf("%s/%s", service.Namespace, service.Name) } // This returns a prefix for loadbalancer/security rules. -func getRulePrefix(service *api.Service) string { +func getRulePrefix(service *v1.Service) string { return cloudprovider.GetLoadBalancerName(service) } -func serviceOwnsRule(service *api.Service, rule string) bool { +func serviceOwnsRule(service *v1.Service, rule string) bool { prefix := getRulePrefix(service) return strings.HasPrefix(strings.ToUpper(rule), strings.ToUpper(prefix)) } -func getFrontendIPConfigName(service *api.Service) string { +func getFrontendIPConfigName(service *v1.Service) string { return cloudprovider.GetLoadBalancerName(service) } -func getPublicIPName(clusterName string, service *api.Service) string { +func getPublicIPName(clusterName string, service *v1.Service) string { return fmt.Sprintf("%s-%s", clusterName, cloudprovider.GetLoadBalancerName(service)) } diff --git a/pkg/cloudprovider/providers/cloudstack/cloudstack_loadbalancer.go b/pkg/cloudprovider/providers/cloudstack/cloudstack_loadbalancer.go index 63e5b713ce1..1e24fe10073 100644 --- a/pkg/cloudprovider/providers/cloudstack/cloudstack_loadbalancer.go +++ b/pkg/cloudprovider/providers/cloudstack/cloudstack_loadbalancer.go @@ -22,7 +22,7 @@ import ( "github.com/golang/glog" "github.com/xanzy/go-cloudstack/cloudstack" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" ) @@ -40,7 +40,7 @@ type loadBalancer struct { } // GetLoadBalancer returns whether the specified load balancer exists, and if so, what its status is. -func (cs *CSCloud) GetLoadBalancer(clusterName string, service *api.Service) (*api.LoadBalancerStatus, bool, error) { +func (cs *CSCloud) GetLoadBalancer(clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) { glog.V(4).Infof("GetLoadBalancer(%v, %v, %v)", clusterName, service.Namespace, service.Name) // Get the load balancer details and existing rules. @@ -56,14 +56,14 @@ func (cs *CSCloud) GetLoadBalancer(clusterName string, service *api.Service) (*a glog.V(4).Infof("Found a load balancer associated with IP %v", lb.ipAddr) - status := &api.LoadBalancerStatus{} - status.Ingress = append(status.Ingress, api.LoadBalancerIngress{IP: lb.ipAddr}) + status := &v1.LoadBalancerStatus{} + status.Ingress = append(status.Ingress, v1.LoadBalancerIngress{IP: lb.ipAddr}) return status, true, nil } // EnsureLoadBalancer creates a new load balancer, or updates the existing one. Returns the status of the balancer. -func (cs *CSCloud) EnsureLoadBalancer(clusterName string, service *api.Service, hosts []string) (status *api.LoadBalancerStatus, err error) { +func (cs *CSCloud) EnsureLoadBalancer(clusterName string, service *v1.Service, hosts []string) (status *v1.LoadBalancerStatus, err error) { glog.V(4).Infof("EnsureLoadBalancer(%v, %v, %v, %v, %v, %v)", clusterName, service.Namespace, service.Name, service.Spec.LoadBalancerIP, service.Spec.Ports, hosts) if len(service.Spec.Ports) == 0 { @@ -78,9 +78,9 @@ func (cs *CSCloud) EnsureLoadBalancer(clusterName string, service *api.Service, // Set the load balancer algorithm. switch service.Spec.SessionAffinity { - case api.ServiceAffinityNone: + case v1.ServiceAffinityNone: lb.algorithm = "roundrobin" - case api.ServiceAffinityClientIP: + case v1.ServiceAffinityClientIP: lb.algorithm = "source" default: return nil, fmt.Errorf("unsupported load balancer affinity: %v", service.Spec.SessionAffinity) @@ -158,14 +158,14 @@ func (cs *CSCloud) EnsureLoadBalancer(clusterName string, service *api.Service, } } - status = &api.LoadBalancerStatus{} - status.Ingress = []api.LoadBalancerIngress{{IP: lb.ipAddr}} + status = &v1.LoadBalancerStatus{} + status.Ingress = []v1.LoadBalancerIngress{{IP: lb.ipAddr}} return status, nil } // UpdateLoadBalancer updates hosts under the specified load balancer. -func (cs *CSCloud) UpdateLoadBalancer(clusterName string, service *api.Service, hosts []string) error { +func (cs *CSCloud) UpdateLoadBalancer(clusterName string, service *v1.Service, hosts []string) error { glog.V(4).Infof("UpdateLoadBalancer(%v, %v, %v, %v)", clusterName, service.Namespace, service.Name, hosts) // Get the load balancer details and existing rules. @@ -211,7 +211,7 @@ func (cs *CSCloud) UpdateLoadBalancer(clusterName string, service *api.Service, // EnsureLoadBalancerDeleted deletes the specified load balancer if it exists, returning // nil if the load balancer specified either didn't exist or was successfully deleted. -func (cs *CSCloud) EnsureLoadBalancerDeleted(clusterName string, service *api.Service) error { +func (cs *CSCloud) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error { glog.V(4).Infof("EnsureLoadBalancerDeleted(%v, %v, %v)", clusterName, service.Namespace, service.Name) // Get the load balancer details and existing rules. @@ -238,7 +238,7 @@ func (cs *CSCloud) EnsureLoadBalancerDeleted(clusterName string, service *api.Se } // getLoadBalancer retrieves the IP address and ID and all the existing rules it can find. -func (cs *CSCloud) getLoadBalancer(service *api.Service) (*loadBalancer, error) { +func (cs *CSCloud) getLoadBalancer(service *v1.Service) (*loadBalancer, error) { lb := &loadBalancer{ CloudStackClient: cs.client, name: cloudprovider.GetLoadBalancerName(service), @@ -403,7 +403,7 @@ func (lb *loadBalancer) releaseLoadBalancerIP() error { // checkLoadBalancerRule checks if the rule already exists and if it does, if it can be updated. If // it does exist but cannot be updated, it will delete the existing rule so it can be created again. -func (lb *loadBalancer) checkLoadBalancerRule(lbRuleName string, port api.ServicePort) (bool, bool, error) { +func (lb *loadBalancer) checkLoadBalancerRule(lbRuleName string, port v1.ServicePort) (bool, bool, error) { lbRule, ok := lb.rules[lbRuleName] if !ok { return false, false, nil @@ -434,7 +434,7 @@ func (lb *loadBalancer) updateLoadBalancerRule(lbRuleName string) error { } // createLoadBalancerRule creates a new load balancer rule and returns it's ID. -func (lb *loadBalancer) createLoadBalancerRule(lbRuleName string, port api.ServicePort) (*cloudstack.LoadBalancerRule, error) { +func (lb *loadBalancer) createLoadBalancerRule(lbRuleName string, port v1.ServicePort) (*cloudstack.LoadBalancerRule, error) { p := lb.LoadBalancer.NewCreateLoadBalancerRuleParams( lb.algorithm, lbRuleName, @@ -446,9 +446,9 @@ func (lb *loadBalancer) createLoadBalancerRule(lbRuleName string, port api.Servi p.SetPublicipid(lb.ipAddrID) switch port.Protocol { - case api.ProtocolTCP: + case v1.ProtocolTCP: p.SetProtocol("TCP") - case api.ProtocolUDP: + case v1.ProtocolUDP: p.SetProtocol("UDP") default: return nil, fmt.Errorf("unsupported load balancer protocol: %v", port.Protocol) diff --git a/pkg/cloudprovider/providers/cloudstack/cloudstack_test.go b/pkg/cloudprovider/providers/cloudstack/cloudstack_test.go index 8cb147d92f6..25f6795b07d 100644 --- a/pkg/cloudprovider/providers/cloudstack/cloudstack_test.go +++ b/pkg/cloudprovider/providers/cloudstack/cloudstack_test.go @@ -22,7 +22,7 @@ import ( "strings" "testing" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" ) const testClusterName = "testCluster" @@ -111,7 +111,7 @@ func TestLoadBalancer(t *testing.T) { t.Fatalf("LoadBalancer() returned false") } - _, exists, err := lb.GetLoadBalancer(testClusterName, &api.Service{ObjectMeta: api.ObjectMeta{Name: "noexist"}}) + _, exists, err := lb.GetLoadBalancer(testClusterName, &v1.Service{ObjectMeta: v1.ObjectMeta{Name: "noexist"}}) if err != nil { t.Fatalf("GetLoadBalancer(\"noexist\") returned error: %s", err) } diff --git a/pkg/cloudprovider/providers/fake/fake.go b/pkg/cloudprovider/providers/fake/fake.go index 56b7b073ff5..e4bed45df32 100644 --- a/pkg/cloudprovider/providers/fake/fake.go +++ b/pkg/cloudprovider/providers/fake/fake.go @@ -23,7 +23,7 @@ import ( "regexp" "sync" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/types" ) @@ -35,12 +35,12 @@ type FakeBalancer struct { Name string Region string LoadBalancerIP string - Ports []api.ServicePort + Ports []v1.ServicePort Hosts []string } type FakeUpdateBalancerCall struct { - Service *api.Service + Service *v1.Service Hosts []string } @@ -49,11 +49,11 @@ type FakeCloud struct { Exists bool Err error Calls []string - Addresses []api.NodeAddress + Addresses []v1.NodeAddress ExtID map[types.NodeName]string InstanceTypes map[types.NodeName]string Machines []types.NodeName - NodeResources *api.NodeResources + NodeResources *v1.NodeResources ClusterList []string MasterName string ExternalIP net.IP @@ -122,16 +122,16 @@ func (f *FakeCloud) Routes() (cloudprovider.Routes, bool) { } // GetLoadBalancer is a stub implementation of LoadBalancer.GetLoadBalancer. -func (f *FakeCloud) GetLoadBalancer(clusterName string, service *api.Service) (*api.LoadBalancerStatus, bool, error) { - status := &api.LoadBalancerStatus{} - status.Ingress = []api.LoadBalancerIngress{{IP: f.ExternalIP.String()}} +func (f *FakeCloud) GetLoadBalancer(clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) { + status := &v1.LoadBalancerStatus{} + status.Ingress = []v1.LoadBalancerIngress{{IP: f.ExternalIP.String()}} return status, f.Exists, f.Err } // EnsureLoadBalancer is a test-spy implementation of LoadBalancer.EnsureLoadBalancer. // It adds an entry "create" into the internal method call record. -func (f *FakeCloud) EnsureLoadBalancer(clusterName string, service *api.Service, hosts []string) (*api.LoadBalancerStatus, error) { +func (f *FakeCloud) EnsureLoadBalancer(clusterName string, service *v1.Service, hosts []string) (*v1.LoadBalancerStatus, error) { f.addCall("create") if f.Balancers == nil { f.Balancers = make(map[string]FakeBalancer) @@ -148,15 +148,15 @@ func (f *FakeCloud) EnsureLoadBalancer(clusterName string, service *api.Service, f.Balancers[name] = FakeBalancer{name, region, spec.LoadBalancerIP, spec.Ports, hosts} - status := &api.LoadBalancerStatus{} - status.Ingress = []api.LoadBalancerIngress{{IP: f.ExternalIP.String()}} + status := &v1.LoadBalancerStatus{} + status.Ingress = []v1.LoadBalancerIngress{{IP: f.ExternalIP.String()}} return status, f.Err } // UpdateLoadBalancer is a test-spy implementation of LoadBalancer.UpdateLoadBalancer. // It adds an entry "update" into the internal method call record. -func (f *FakeCloud) UpdateLoadBalancer(clusterName string, service *api.Service, hosts []string) error { +func (f *FakeCloud) UpdateLoadBalancer(clusterName string, service *v1.Service, hosts []string) error { f.addCall("update") f.UpdateCalls = append(f.UpdateCalls, FakeUpdateBalancerCall{service, hosts}) return f.Err @@ -164,7 +164,7 @@ func (f *FakeCloud) UpdateLoadBalancer(clusterName string, service *api.Service, // EnsureLoadBalancerDeleted is a test-spy implementation of LoadBalancer.EnsureLoadBalancerDeleted. // It adds an entry "delete" into the internal method call record. -func (f *FakeCloud) EnsureLoadBalancerDeleted(clusterName string, service *api.Service) error { +func (f *FakeCloud) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error { f.addCall("delete") return f.Err } @@ -180,7 +180,7 @@ func (f *FakeCloud) CurrentNodeName(hostname string) (types.NodeName, error) { // NodeAddresses is a test-spy implementation of Instances.NodeAddresses. // It adds an entry "node-addresses" into the internal method call record. -func (f *FakeCloud) NodeAddresses(instance types.NodeName) ([]api.NodeAddress, error) { +func (f *FakeCloud) NodeAddresses(instance types.NodeName) ([]v1.NodeAddress, error) { f.addCall("node-addresses") return f.Addresses, f.Err } diff --git a/pkg/cloudprovider/providers/gce/gce.go b/pkg/cloudprovider/providers/gce/gce.go index c56dd43b6b0..a4063718b27 100644 --- a/pkg/cloudprovider/providers/gce/gce.go +++ b/pkg/cloudprovider/providers/gce/gce.go @@ -30,9 +30,9 @@ import ( "gopkg.in/gcfg.v1" - "k8s.io/kubernetes/pkg/api" - apiservice "k8s.io/kubernetes/pkg/api/service" "k8s.io/kubernetes/pkg/api/unversioned" + "k8s.io/kubernetes/pkg/api/v1" + apiservice "k8s.io/kubernetes/pkg/api/v1/service" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/types" utilerrors "k8s.io/kubernetes/pkg/util/errors" @@ -527,12 +527,12 @@ func (gce *GCECloud) waitForZoneOp(op *compute.Operation, zone string) error { } // GetLoadBalancer is an implementation of LoadBalancer.GetLoadBalancer -func (gce *GCECloud) GetLoadBalancer(clusterName string, service *api.Service) (*api.LoadBalancerStatus, bool, error) { +func (gce *GCECloud) GetLoadBalancer(clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) { loadBalancerName := cloudprovider.GetLoadBalancerName(service) fwd, err := gce.service.ForwardingRules.Get(gce.projectID, gce.region, loadBalancerName).Do() if err == nil { - status := &api.LoadBalancerStatus{} - status.Ingress = []api.LoadBalancerIngress{{IP: fwd.IPAddress}} + status := &v1.LoadBalancerStatus{} + status.Ingress = []v1.LoadBalancerIngress{{IP: fwd.IPAddress}} return status, true, nil } @@ -554,7 +554,7 @@ func isHTTPErrorCode(err error, code int) bool { // Due to an interesting series of design decisions, this handles both creating // new load balancers and updating existing load balancers, recognizing when // each is needed. -func (gce *GCECloud) EnsureLoadBalancer(clusterName string, apiService *api.Service, hostNames []string) (*api.LoadBalancerStatus, error) { +func (gce *GCECloud) EnsureLoadBalancer(clusterName string, apiService *v1.Service, hostNames []string) (*v1.LoadBalancerStatus, error) { if len(hostNames) == 0 { return nil, fmt.Errorf("Cannot EnsureLoadBalancer() with no hosts") } @@ -832,8 +832,8 @@ func (gce *GCECloud) EnsureLoadBalancer(clusterName string, apiService *api.Serv glog.Infof("EnsureLoadBalancer(%v(%v)): created forwarding rule, IP %s", loadBalancerName, serviceName, ipAddress) } - status := &api.LoadBalancerStatus{} - status.Ingress = []api.LoadBalancerIngress{{IP: ipAddress}} + status := &v1.LoadBalancerStatus{} + status.Ingress = []v1.LoadBalancerIngress{{IP: ipAddress}} return status, nil } @@ -889,7 +889,7 @@ func (gce *GCECloud) ensureHttpHealthCheck(name, path string, port int32) (hc *c // IP is being requested. // Returns whether the forwarding rule exists, whether it needs to be updated, // what its IP address is (if it exists), and any error we encountered. -func (gce *GCECloud) forwardingRuleNeedsUpdate(name, region string, loadBalancerIP string, ports []api.ServicePort) (exists bool, needsUpdate bool, ipAddress string, err error) { +func (gce *GCECloud) forwardingRuleNeedsUpdate(name, region string, loadBalancerIP string, ports []v1.ServicePort) (exists bool, needsUpdate bool, ipAddress string, err error) { fwd, err := gce.service.ForwardingRules.Get(gce.projectID, region, name).Do() if err != nil { if isHTTPErrorCode(err, http.StatusNotFound) { @@ -926,13 +926,13 @@ func (gce *GCECloud) forwardingRuleNeedsUpdate(name, region string, loadBalancer return true, false, fwd.IPAddress, nil } -func loadBalancerPortRange(ports []api.ServicePort) (string, error) { +func loadBalancerPortRange(ports []v1.ServicePort) (string, error) { if len(ports) == 0 { return "", fmt.Errorf("no ports specified for GCE load balancer") } // The service controller verified all the protocols match on the ports, just check and use the first one - if ports[0].Protocol != api.ProtocolTCP && ports[0].Protocol != api.ProtocolUDP { + if ports[0].Protocol != v1.ProtocolTCP && ports[0].Protocol != v1.ProtocolUDP { return "", fmt.Errorf("Invalid protocol %s, only TCP and UDP are supported", string(ports[0].Protocol)) } @@ -951,7 +951,7 @@ func loadBalancerPortRange(ports []api.ServicePort) (string, error) { // Doesn't check whether the hosts have changed, since host updating is handled // separately. -func (gce *GCECloud) targetPoolNeedsUpdate(name, region string, affinityType api.ServiceAffinity) (exists bool, needsUpdate bool, err error) { +func (gce *GCECloud) targetPoolNeedsUpdate(name, region string, affinityType v1.ServiceAffinity) (exists bool, needsUpdate bool, err error) { tp, err := gce.service.TargetPools.Get(gce.projectID, region, name).Do() if err != nil { if isHTTPErrorCode(err, http.StatusNotFound) { @@ -977,11 +977,11 @@ func (gce *GCECloud) targetPoolNeedsUpdate(name, region string, affinityType api } // translate from what K8s supports to what the cloud provider supports for session affinity. -func translateAffinityType(affinityType api.ServiceAffinity) string { +func translateAffinityType(affinityType v1.ServiceAffinity) string { switch affinityType { - case api.ServiceAffinityClientIP: + case v1.ServiceAffinityClientIP: return gceAffinityTypeClientIP - case api.ServiceAffinityNone: + case v1.ServiceAffinityNone: return gceAffinityTypeNone default: glog.Errorf("Unexpected affinity type: %v", affinityType) @@ -989,7 +989,7 @@ func translateAffinityType(affinityType api.ServiceAffinity) string { } } -func (gce *GCECloud) firewallNeedsUpdate(name, serviceName, region, ipAddress string, ports []api.ServicePort, sourceRanges netsets.IPNet) (exists bool, needsUpdate bool, err error) { +func (gce *GCECloud) firewallNeedsUpdate(name, serviceName, region, ipAddress string, ports []v1.ServicePort, sourceRanges netsets.IPNet) (exists bool, needsUpdate bool, err error) { fw, err := gce.service.Firewalls.Get(gce.projectID, makeFirewallName(name)).Do() if err != nil { if isHTTPErrorCode(err, http.StatusNotFound) { @@ -1050,7 +1050,7 @@ func slicesEqual(x, y []string) bool { return true } -func (gce *GCECloud) createForwardingRule(name, serviceName, region, ipAddress string, ports []api.ServicePort) error { +func (gce *GCECloud) createForwardingRule(name, serviceName, region, ipAddress string, ports []v1.ServicePort) error { portRange, err := loadBalancerPortRange(ports) if err != nil { return err @@ -1077,7 +1077,7 @@ func (gce *GCECloud) createForwardingRule(name, serviceName, region, ipAddress s return nil } -func (gce *GCECloud) createTargetPool(name, serviceName, region string, hosts []*gceInstance, affinityType api.ServiceAffinity, hc *compute.HttpHealthCheck) error { +func (gce *GCECloud) createTargetPool(name, serviceName, region string, hosts []*gceInstance, affinityType v1.ServiceAffinity, hc *compute.HttpHealthCheck) error { var instances []string for _, host := range hosts { instances = append(instances, makeHostURL(gce.projectID, host.Zone, host.Name)) @@ -1114,7 +1114,7 @@ func (gce *GCECloud) createTargetPool(name, serviceName, region string, hosts [] return nil } -func (gce *GCECloud) createFirewall(name, region, desc string, sourceRanges netsets.IPNet, ports []api.ServicePort, hosts []*gceInstance) error { +func (gce *GCECloud) createFirewall(name, region, desc string, sourceRanges netsets.IPNet, ports []v1.ServicePort, hosts []*gceInstance) error { firewall, err := gce.firewallObject(name, region, desc, sourceRanges, ports, hosts) if err != nil { return err @@ -1132,7 +1132,7 @@ func (gce *GCECloud) createFirewall(name, region, desc string, sourceRanges nets return nil } -func (gce *GCECloud) updateFirewall(name, region, desc string, sourceRanges netsets.IPNet, ports []api.ServicePort, hosts []*gceInstance) error { +func (gce *GCECloud) updateFirewall(name, region, desc string, sourceRanges netsets.IPNet, ports []v1.ServicePort, hosts []*gceInstance) error { firewall, err := gce.firewallObject(name, region, desc, sourceRanges, ports, hosts) if err != nil { return err @@ -1150,7 +1150,7 @@ func (gce *GCECloud) updateFirewall(name, region, desc string, sourceRanges nets return nil } -func (gce *GCECloud) firewallObject(name, region, desc string, sourceRanges netsets.IPNet, ports []api.ServicePort, hosts []*gceInstance) (*compute.Firewall, error) { +func (gce *GCECloud) firewallObject(name, region, desc string, sourceRanges netsets.IPNet, ports []v1.ServicePort, hosts []*gceInstance) (*compute.Firewall, error) { allowedPorts := make([]string, len(ports)) for ix := range ports { allowedPorts[ix] = strconv.Itoa(int(ports[ix].Port)) @@ -1331,7 +1331,7 @@ func (gce *GCECloud) ensureStaticIP(name, serviceName, region, existingIP string } // UpdateLoadBalancer is an implementation of LoadBalancer.UpdateLoadBalancer. -func (gce *GCECloud) UpdateLoadBalancer(clusterName string, service *api.Service, hostNames []string) error { +func (gce *GCECloud) UpdateLoadBalancer(clusterName string, service *v1.Service, hostNames []string) error { hosts, err := gce.getInstancesByNames(hostNames) if err != nil { return err @@ -1402,7 +1402,7 @@ func (gce *GCECloud) updateTargetPool(loadBalancerName string, existing sets.Str } // EnsureLoadBalancerDeleted is an implementation of LoadBalancer.EnsureLoadBalancerDeleted. -func (gce *GCECloud) EnsureLoadBalancerDeleted(clusterName string, service *api.Service) error { +func (gce *GCECloud) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error { loadBalancerName := cloudprovider.GetLoadBalancerName(service) glog.V(2).Infof("EnsureLoadBalancerDeleted(%v, %v, %v, %v, %v)", clusterName, service.Namespace, service.Name, loadBalancerName, gce.region) @@ -1555,15 +1555,15 @@ func (gce *GCECloud) CreateFirewall(name, desc string, sourceRanges netsets.IPNe return err } // TODO: This completely breaks modularity in the cloudprovider but the methods - // shared with the TCPLoadBalancer take api.ServicePorts. - svcPorts := []api.ServicePort{} + // shared with the TCPLoadBalancer take v1.ServicePorts. + svcPorts := []v1.ServicePort{} // TODO: Currently the only consumer of this method is the GCE L7 // loadbalancer controller, which never needs a protocol other than TCP. // We should pipe through a mapping of port:protocol and default to TCP // if UDP ports are required. This means the method signature will change // forcing downstream clients to refactor interfaces. for _, p := range ports { - svcPorts = append(svcPorts, api.ServicePort{Port: int32(p), Protocol: api.ProtocolTCP}) + svcPorts = append(svcPorts, v1.ServicePort{Port: int32(p), Protocol: v1.ProtocolTCP}) } hosts, err := gce.getInstancesByNames(hostNames) if err != nil { @@ -1589,15 +1589,15 @@ func (gce *GCECloud) UpdateFirewall(name, desc string, sourceRanges netsets.IPNe return err } // TODO: This completely breaks modularity in the cloudprovider but the methods - // shared with the TCPLoadBalancer take api.ServicePorts. - svcPorts := []api.ServicePort{} + // shared with the TCPLoadBalancer take v1.ServicePorts. + svcPorts := []v1.ServicePort{} // TODO: Currently the only consumer of this method is the GCE L7 // loadbalancer controller, which never needs a protocol other than TCP. // We should pipe through a mapping of port:protocol and default to TCP // if UDP ports are required. This means the method signature will change, // forcing downstream clients to refactor interfaces. for _, p := range ports { - svcPorts = append(svcPorts, api.ServicePort{Port: int32(p), Protocol: api.ProtocolTCP}) + svcPorts = append(svcPorts, v1.ServicePort{Port: int32(p), Protocol: v1.ProtocolTCP}) } hosts, err := gce.getInstancesByNames(hostNames) if err != nil { @@ -2171,7 +2171,7 @@ func (gce *GCECloud) AddSSHKeyToAllInstances(user string, keyData []byte) error } // NodeAddresses is an implementation of Instances.NodeAddresses. -func (gce *GCECloud) NodeAddresses(_ types.NodeName) ([]api.NodeAddress, error) { +func (gce *GCECloud) NodeAddresses(_ types.NodeName) ([]v1.NodeAddress, error) { internalIP, err := metadata.Get("instance/network-interfaces/0/ip") if err != nil { return nil, fmt.Errorf("couldn't get internal IP: %v", err) @@ -2180,9 +2180,9 @@ func (gce *GCECloud) NodeAddresses(_ types.NodeName) ([]api.NodeAddress, error) if err != nil { return nil, fmt.Errorf("couldn't get external IP: %v", err) } - return []api.NodeAddress{ - {Type: api.NodeInternalIP, Address: internalIP}, - {Type: api.NodeExternalIP, Address: externalIP}, + return []v1.NodeAddress{ + {Type: v1.NodeInternalIP, Address: internalIP}, + {Type: v1.NodeExternalIP, Address: externalIP}, }, nil } diff --git a/pkg/cloudprovider/providers/mesos/client.go b/pkg/cloudprovider/providers/mesos/client.go index 84b506fc7a2..cfb207b6f09 100644 --- a/pkg/cloudprovider/providers/mesos/client.go +++ b/pkg/cloudprovider/providers/mesos/client.go @@ -31,8 +31,8 @@ import ( "github.com/mesos/mesos-go/detector" mesos "github.com/mesos/mesos-go/mesosproto" "golang.org/x/net/context" - "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/resource" + "k8s.io/kubernetes/pkg/api/v1" utilnet "k8s.io/kubernetes/pkg/util/net" ) @@ -52,7 +52,7 @@ type mesosClient struct { type slaveNode struct { hostname string kubeletRunning bool - resources *api.NodeResources + resources *v1.NodeResources } type mesosState struct { @@ -315,12 +315,12 @@ func parseMesosState(blob []byte) (*mesosState, error) { continue } node := &slaveNode{hostname: slave.Hostname} - cap := api.ResourceList{} + cap := v1.ResourceList{} if slave.Resources != nil && len(slave.Resources) > 0 { // attempt to translate CPU (cores) and memory (MB) resources if cpu, found := slave.Resources["cpus"]; found { if cpuNum, ok := cpu.(float64); ok { - cap[api.ResourceCPU] = *resource.NewQuantity(int64(cpuNum), resource.DecimalSI) + cap[v1.ResourceCPU] = *resource.NewQuantity(int64(cpuNum), resource.DecimalSI) } else { log.Warningf("unexpected slave cpu resource type %T: %v", cpu, cpu) } @@ -329,7 +329,7 @@ func parseMesosState(blob []byte) (*mesosState, error) { } if mem, found := slave.Resources["mem"]; found { if memNum, ok := mem.(float64); ok { - cap[api.ResourceMemory] = *resource.NewQuantity(int64(memNum), resource.BinarySI) + cap[v1.ResourceMemory] = *resource.NewQuantity(int64(memNum), resource.BinarySI) } else { log.Warningf("unexpected slave mem resource type %T: %v", mem, mem) } @@ -338,7 +338,7 @@ func parseMesosState(blob []byte) (*mesosState, error) { } } if len(cap) > 0 { - node.resources = &api.NodeResources{ + node.resources = &v1.NodeResources{ Capacity: cap, } log.V(4).Infof("node %q reporting capacity %v", node.hostname, cap) diff --git a/pkg/cloudprovider/providers/mesos/mesos.go b/pkg/cloudprovider/providers/mesos/mesos.go index 1fbaa04dcc8..4facb9ecdce 100644 --- a/pkg/cloudprovider/providers/mesos/mesos.go +++ b/pkg/cloudprovider/providers/mesos/mesos.go @@ -28,7 +28,7 @@ import ( log "github.com/golang/glog" "github.com/mesos/mesos-go/detector" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/types" ) @@ -284,15 +284,15 @@ func (c *MesosCloud) ListWithoutKubelet() ([]string, error) { } // NodeAddresses returns the addresses of the instance with the specified nodeName. -func (c *MesosCloud) NodeAddresses(nodeName types.NodeName) ([]api.NodeAddress, error) { +func (c *MesosCloud) NodeAddresses(nodeName types.NodeName) ([]v1.NodeAddress, error) { name := mapNodeNameToHostname(nodeName) ip, err := ipAddress(name) if err != nil { return nil, err } - return []api.NodeAddress{ - {Type: api.NodeLegacyHostIP, Address: ip.String()}, - {Type: api.NodeInternalIP, Address: ip.String()}, - {Type: api.NodeExternalIP, Address: ip.String()}, + return []v1.NodeAddress{ + {Type: v1.NodeLegacyHostIP, Address: ip.String()}, + {Type: v1.NodeInternalIP, Address: ip.String()}, + {Type: v1.NodeExternalIP, Address: ip.String()}, }, nil } diff --git a/pkg/cloudprovider/providers/openstack/openstack.go b/pkg/cloudprovider/providers/openstack/openstack.go index 7ba6ab7cda3..b86e67ba1ee 100644 --- a/pkg/cloudprovider/providers/openstack/openstack.go +++ b/pkg/cloudprovider/providers/openstack/openstack.go @@ -36,7 +36,7 @@ import ( "github.com/rackspace/gophercloud/pagination" "github.com/golang/glog" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/types" ) @@ -261,13 +261,13 @@ func getServerByName(client *gophercloud.ServiceClient, name types.NodeName) (*s return &serverList[0], nil } -func getAddressesByName(client *gophercloud.ServiceClient, name types.NodeName) ([]api.NodeAddress, error) { +func getAddressesByName(client *gophercloud.ServiceClient, name types.NodeName) ([]v1.NodeAddress, error) { srv, err := getServerByName(client, name) if err != nil { return nil, err } - addrs := []api.NodeAddress{} + addrs := []v1.NodeAddress{} for network, netblob := range srv.Addresses { list, ok := netblob.([]interface{}) @@ -276,7 +276,7 @@ func getAddressesByName(client *gophercloud.ServiceClient, name types.NodeName) } for _, item := range list { - var addressType api.NodeAddressType + var addressType v1.NodeAddressType props, ok := item.(map[string]interface{}) if !ok { @@ -285,9 +285,9 @@ func getAddressesByName(client *gophercloud.ServiceClient, name types.NodeName) extIPType, ok := props["OS-EXT-IPS:type"] if (ok && extIPType == "floating") || (!ok && network == "public") { - addressType = api.NodeExternalIP + addressType = v1.NodeExternalIP } else { - addressType = api.NodeInternalIP + addressType = v1.NodeInternalIP } tmp, ok := props["addr"] @@ -299,8 +299,8 @@ func getAddressesByName(client *gophercloud.ServiceClient, name types.NodeName) continue } - api.AddToNodeAddresses(&addrs, - api.NodeAddress{ + v1.AddToNodeAddresses(&addrs, + v1.NodeAddress{ Type: addressType, Address: addr, }, @@ -310,18 +310,18 @@ func getAddressesByName(client *gophercloud.ServiceClient, name types.NodeName) // AccessIPs are usually duplicates of "public" addresses. if srv.AccessIPv4 != "" { - api.AddToNodeAddresses(&addrs, - api.NodeAddress{ - Type: api.NodeExternalIP, + v1.AddToNodeAddresses(&addrs, + v1.NodeAddress{ + Type: v1.NodeExternalIP, Address: srv.AccessIPv4, }, ) } if srv.AccessIPv6 != "" { - api.AddToNodeAddresses(&addrs, - api.NodeAddress{ - Type: api.NodeExternalIP, + v1.AddToNodeAddresses(&addrs, + v1.NodeAddress{ + Type: v1.NodeExternalIP, Address: srv.AccessIPv6, }, ) @@ -339,7 +339,7 @@ func getAddressByName(client *gophercloud.ServiceClient, name types.NodeName) (s } for _, addr := range addrs { - if addr.Type == api.NodeInternalIP { + if addr.Type == v1.NodeInternalIP { return addr.Address, nil } } diff --git a/pkg/cloudprovider/providers/openstack/openstack_instances.go b/pkg/cloudprovider/providers/openstack/openstack_instances.go index 71d1d3309be..40df290f8d9 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_instances.go +++ b/pkg/cloudprovider/providers/openstack/openstack_instances.go @@ -26,15 +26,15 @@ import ( "github.com/rackspace/gophercloud/openstack/compute/v2/servers" "github.com/rackspace/gophercloud/pagination" - "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/resource" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/types" ) type Instances struct { compute *gophercloud.ServiceClient - flavor_to_resource map[string]*api.NodeResources // keyed by flavor id + flavor_to_resource map[string]*v1.NodeResources // keyed by flavor id } // Instances returns an implementation of Instances for OpenStack. @@ -51,17 +51,17 @@ func (os *OpenStack) Instances() (cloudprovider.Instances, bool) { pager := flavors.ListDetail(compute, nil) - flavor_to_resource := make(map[string]*api.NodeResources) + flavor_to_resource := make(map[string]*v1.NodeResources) err = pager.EachPage(func(page pagination.Page) (bool, error) { flavorList, err := flavors.ExtractFlavors(page) if err != nil { return false, err } for _, flavor := range flavorList { - rsrc := api.NodeResources{ - Capacity: api.ResourceList{ - api.ResourceCPU: *resource.NewQuantity(int64(flavor.VCPUs), resource.DecimalSI), - api.ResourceMemory: *resource.NewQuantity(int64(flavor.RAM)*MiB, resource.BinarySI), + rsrc := v1.NodeResources{ + Capacity: v1.ResourceList{ + v1.ResourceCPU: *resource.NewQuantity(int64(flavor.VCPUs), resource.DecimalSI), + v1.ResourceMemory: *resource.NewQuantity(int64(flavor.RAM)*MiB, resource.BinarySI), "openstack.org/disk": *resource.NewQuantity(int64(flavor.Disk)*GB, resource.DecimalSI), "openstack.org/rxTxFactor": *resource.NewMilliQuantity(int64(flavor.RxTxFactor)*1000, resource.DecimalSI), "openstack.org/swap": *resource.NewQuantity(int64(flavor.Swap)*MiB, resource.BinarySI), @@ -126,7 +126,7 @@ func (i *Instances) AddSSHKeyToAllInstances(user string, keyData []byte) error { return errors.New("unimplemented") } -func (i *Instances) NodeAddresses(name types.NodeName) ([]api.NodeAddress, error) { +func (i *Instances) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) { glog.V(4).Infof("NodeAddresses(%v) called", name) addrs, err := getAddressesByName(i.compute, name) diff --git a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go index caa917af6df..e35834b25ad 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go +++ b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go @@ -39,8 +39,8 @@ import ( neutron_ports "github.com/rackspace/gophercloud/openstack/networking/v2/ports" "github.com/rackspace/gophercloud/pagination" - "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/api/service" + "k8s.io/kubernetes/pkg/api/v1" + "k8s.io/kubernetes/pkg/api/v1/service" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/types" ) @@ -282,7 +282,7 @@ func getListenersByLoadBalancerID(client *gophercloud.ServiceClient, id string) } // get listener for a port or nil if does not exist -func getListenerForPort(existingListeners []listeners.Listener, port api.ServicePort) *listeners.Listener { +func getListenerForPort(existingListeners []listeners.Listener, port v1.ServicePort) *listeners.Listener { for _, l := range existingListeners { if l.Protocol == string(port.Protocol) && l.ProtocolPort == int(port.Port) { return &l @@ -418,7 +418,7 @@ func popMember(members []v2_pools.Member, addr string, port int) []v2_pools.Memb return members } -func getSecurityGroupName(clusterName string, service *api.Service) string { +func getSecurityGroupName(clusterName string, service *v1.Service) string { return fmt.Sprintf("lb-sg-%s-%v", clusterName, service.Name) } @@ -521,7 +521,7 @@ func createNodeSecurityGroup(client *gophercloud.ServiceClient, nodeSecurityGrou return nil } -func (lbaas *LbaasV2) createLoadBalancer(service *api.Service, name string) (*loadbalancers.LoadBalancer, error) { +func (lbaas *LbaasV2) createLoadBalancer(service *v1.Service, name string) (*loadbalancers.LoadBalancer, error) { createOpts := loadbalancers.CreateOpts{ Name: name, Description: fmt.Sprintf("Kubernetes external service %s", name), @@ -549,7 +549,7 @@ func stringInArray(x string, list []string) bool { return false } -func (lbaas *LbaasV2) GetLoadBalancer(clusterName string, service *api.Service) (*api.LoadBalancerStatus, bool, error) { +func (lbaas *LbaasV2) GetLoadBalancer(clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) { loadBalancerName := cloudprovider.GetLoadBalancerName(service) loadbalancer, err := getLoadbalancerByName(lbaas.network, loadBalancerName) if err == ErrNotFound { @@ -559,8 +559,8 @@ func (lbaas *LbaasV2) GetLoadBalancer(clusterName string, service *api.Service) return nil, false, err } - status := &api.LoadBalancerStatus{} - status.Ingress = []api.LoadBalancerIngress{{IP: loadbalancer.VipAddress}} + status := &v1.LoadBalancerStatus{} + status.Ingress = []v1.LoadBalancerIngress{{IP: loadbalancer.VipAddress}} return status, true, err } @@ -570,7 +570,7 @@ func (lbaas *LbaasV2) GetLoadBalancer(clusterName string, service *api.Service) // a list of regions (from config) and query/create loadbalancers in // each region. -func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *api.Service, nodeNames []string) (*api.LoadBalancerStatus, error) { +func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Service, nodeNames []string) (*v1.LoadBalancerStatus, error) { glog.V(4).Infof("EnsureLoadBalancer(%v, %v, %v, %v, %v, %v, %v)", clusterName, apiService.Namespace, apiService.Name, apiService.Spec.LoadBalancerIP, apiService.Spec.Ports, nodeNames, apiService.Annotations) ports := apiService.Spec.Ports @@ -581,7 +581,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *api.Ser // Check for TCP protocol on each port // TODO: Convert all error messages to use an event recorder for _, port := range ports { - if port.Protocol != api.ProtocolTCP { + if port.Protocol != v1.ProtocolTCP { return nil, fmt.Errorf("Only TCP LoadBalancer is supported for openstack load balancers") } } @@ -595,12 +595,12 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *api.Ser return nil, fmt.Errorf("Source range restrictions are not supported for openstack load balancers without managing security groups") } - affinity := api.ServiceAffinityNone + affinity := v1.ServiceAffinityNone var persistence *v2_pools.SessionPersistence switch affinity { - case api.ServiceAffinityNone: + case v1.ServiceAffinityNone: persistence = nil - case api.ServiceAffinityClientIP: + case v1.ServiceAffinityClientIP: persistence = &v2_pools.SessionPersistence{Type: "SOURCE_IP"} default: return nil, fmt.Errorf("unsupported load balancer affinity: %v", affinity) @@ -794,9 +794,9 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *api.Ser glog.V(2).Infof("Deleted obsolete listener: %s", listener.ID) } - status := &api.LoadBalancerStatus{} + status := &v1.LoadBalancerStatus{} - status.Ingress = []api.LoadBalancerIngress{{IP: loadbalancer.VipAddress}} + status.Ingress = []v1.LoadBalancerIngress{{IP: loadbalancer.VipAddress}} port, err := getPortByIP(lbaas.network, loadbalancer.VipAddress) if err != nil { @@ -818,7 +818,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *api.Ser } } if floatIP != nil { - status.Ingress = append(status.Ingress, api.LoadBalancerIngress{IP: floatIP.FloatingIP}) + status.Ingress = append(status.Ingress, v1.LoadBalancerIngress{IP: floatIP.FloatingIP}) } if lbaas.opts.ManageSecurityGroups { @@ -939,7 +939,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *api.Ser return status, nil } -func (lbaas *LbaasV2) UpdateLoadBalancer(clusterName string, service *api.Service, nodeNames []string) error { +func (lbaas *LbaasV2) UpdateLoadBalancer(clusterName string, service *v1.Service, nodeNames []string) error { loadBalancerName := cloudprovider.GetLoadBalancerName(service) glog.V(4).Infof("UpdateLoadBalancer(%v, %v, %v)", clusterName, loadBalancerName, nodeNames) @@ -1086,7 +1086,7 @@ func (lbaas *LbaasV2) UpdateLoadBalancer(clusterName string, service *api.Servic return nil } -func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *api.Service) error { +func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error { loadBalancerName := cloudprovider.GetLoadBalancerName(service) glog.V(4).Infof("EnsureLoadBalancerDeleted(%v, %v)", clusterName, loadBalancerName) @@ -1256,7 +1256,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *api return nil } -func (lb *LbaasV1) GetLoadBalancer(clusterName string, service *api.Service) (*api.LoadBalancerStatus, bool, error) { +func (lb *LbaasV1) GetLoadBalancer(clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error) { loadBalancerName := cloudprovider.GetLoadBalancerName(service) vip, err := getVipByName(lb.network, loadBalancerName) if err == ErrNotFound { @@ -1266,8 +1266,8 @@ func (lb *LbaasV1) GetLoadBalancer(clusterName string, service *api.Service) (*a return nil, false, err } - status := &api.LoadBalancerStatus{} - status.Ingress = []api.LoadBalancerIngress{{IP: vip.Address}} + status := &v1.LoadBalancerStatus{} + status.Ingress = []v1.LoadBalancerIngress{{IP: vip.Address}} return status, true, err } @@ -1277,7 +1277,7 @@ func (lb *LbaasV1) GetLoadBalancer(clusterName string, service *api.Service) (*a // a list of regions (from config) and query/create loadbalancers in // each region. -func (lb *LbaasV1) EnsureLoadBalancer(clusterName string, apiService *api.Service, nodeNames []string) (*api.LoadBalancerStatus, error) { +func (lb *LbaasV1) EnsureLoadBalancer(clusterName string, apiService *v1.Service, nodeNames []string) (*v1.LoadBalancerStatus, error) { glog.V(4).Infof("EnsureLoadBalancer(%v, %v, %v, %v, %v, %v, %v)", clusterName, apiService.Namespace, apiService.Name, apiService.Spec.LoadBalancerIP, apiService.Spec.Ports, nodeNames, apiService.Annotations) ports := apiService.Spec.Ports @@ -1289,16 +1289,16 @@ func (lb *LbaasV1) EnsureLoadBalancer(clusterName string, apiService *api.Servic // The service controller verified all the protocols match on the ports, just check and use the first one // TODO: Convert all error messages to use an event recorder - if ports[0].Protocol != api.ProtocolTCP { + if ports[0].Protocol != v1.ProtocolTCP { return nil, fmt.Errorf("Only TCP LoadBalancer is supported for openstack load balancers") } affinity := apiService.Spec.SessionAffinity var persistence *vips.SessionPersistence switch affinity { - case api.ServiceAffinityNone: + case v1.ServiceAffinityNone: persistence = nil - case api.ServiceAffinityClientIP: + case v1.ServiceAffinityClientIP: persistence = &vips.SessionPersistence{Type: "SOURCE_IP"} default: return nil, fmt.Errorf("unsupported load balancer affinity: %v", affinity) @@ -1405,9 +1405,9 @@ func (lb *LbaasV1) EnsureLoadBalancer(clusterName string, apiService *api.Servic return nil, err } - status := &api.LoadBalancerStatus{} + status := &v1.LoadBalancerStatus{} - status.Ingress = []api.LoadBalancerIngress{{IP: vip.Address}} + status.Ingress = []v1.LoadBalancerIngress{{IP: vip.Address}} if lb.opts.FloatingNetworkId != "" { floatIPOpts := floatingips.CreateOpts{ @@ -1419,14 +1419,14 @@ func (lb *LbaasV1) EnsureLoadBalancer(clusterName string, apiService *api.Servic return nil, err } - status.Ingress = append(status.Ingress, api.LoadBalancerIngress{IP: floatIP.FloatingIP}) + status.Ingress = append(status.Ingress, v1.LoadBalancerIngress{IP: floatIP.FloatingIP}) } return status, nil } -func (lb *LbaasV1) UpdateLoadBalancer(clusterName string, service *api.Service, nodeNames []string) error { +func (lb *LbaasV1) UpdateLoadBalancer(clusterName string, service *v1.Service, nodeNames []string) error { loadBalancerName := cloudprovider.GetLoadBalancerName(service) glog.V(4).Infof("UpdateLoadBalancer(%v, %v, %v)", clusterName, loadBalancerName, nodeNames) @@ -1488,7 +1488,7 @@ func (lb *LbaasV1) UpdateLoadBalancer(clusterName string, service *api.Service, return nil } -func (lb *LbaasV1) EnsureLoadBalancerDeleted(clusterName string, service *api.Service) error { +func (lb *LbaasV1) EnsureLoadBalancerDeleted(clusterName string, service *v1.Service) error { loadBalancerName := cloudprovider.GetLoadBalancerName(service) glog.V(4).Infof("EnsureLoadBalancerDeleted(%v, %v)", clusterName, loadBalancerName) diff --git a/pkg/cloudprovider/providers/openstack/openstack_test.go b/pkg/cloudprovider/providers/openstack/openstack_test.go index bf8b7864acb..df656a9c73d 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_test.go +++ b/pkg/cloudprovider/providers/openstack/openstack_test.go @@ -25,7 +25,7 @@ import ( "k8s.io/kubernetes/pkg/util/rand" "github.com/rackspace/gophercloud" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" ) const volumeAvailableStatus = "available" @@ -226,7 +226,7 @@ func TestLoadBalancer(t *testing.T) { t.Fatalf("LoadBalancer() returned false - perhaps your stack doesn't support Neutron?") } - _, exists, err := lb.GetLoadBalancer(testClusterName, &api.Service{ObjectMeta: api.ObjectMeta{Name: "noexist"}}) + _, exists, err := lb.GetLoadBalancer(testClusterName, &v1.Service{ObjectMeta: v1.ObjectMeta{Name: "noexist"}}) if err != nil { t.Fatalf("GetLoadBalancer(\"noexist\") returned error: %s", err) } diff --git a/pkg/cloudprovider/providers/ovirt/ovirt.go b/pkg/cloudprovider/providers/ovirt/ovirt.go index 5bc2f28fb25..ddeb6e7fc5a 100644 --- a/pkg/cloudprovider/providers/ovirt/ovirt.go +++ b/pkg/cloudprovider/providers/ovirt/ovirt.go @@ -31,7 +31,7 @@ import ( "gopkg.in/gcfg.v1" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/types" ) @@ -151,7 +151,7 @@ func (v *OVirtCloud) Routes() (cloudprovider.Routes, bool) { } // NodeAddresses returns the NodeAddresses of the instance with the specified nodeName. -func (v *OVirtCloud) NodeAddresses(nodeName types.NodeName) ([]api.NodeAddress, error) { +func (v *OVirtCloud) NodeAddresses(nodeName types.NodeName) ([]v1.NodeAddress, error) { name := mapNodeNameToInstanceName(nodeName) instance, err := v.fetchInstance(name) if err != nil { @@ -173,10 +173,10 @@ func (v *OVirtCloud) NodeAddresses(nodeName types.NodeName) ([]api.NodeAddress, address = resolved[0] } - return []api.NodeAddress{ - {Type: api.NodeLegacyHostIP, Address: address.String()}, - {Type: api.NodeInternalIP, Address: address.String()}, - {Type: api.NodeExternalIP, Address: address.String()}, + return []v1.NodeAddress{ + {Type: v1.NodeLegacyHostIP, Address: address.String()}, + {Type: v1.NodeInternalIP, Address: address.String()}, + {Type: v1.NodeExternalIP, Address: address.String()}, }, nil } diff --git a/pkg/cloudprovider/providers/photon/photon.go b/pkg/cloudprovider/providers/photon/photon.go index 89d4e738d51..e4b18e4bd7d 100644 --- a/pkg/cloudprovider/providers/photon/photon.go +++ b/pkg/cloudprovider/providers/photon/photon.go @@ -26,16 +26,17 @@ package photon import ( "errors" "fmt" - "github.com/golang/glog" - "github.com/vmware/photon-controller-go-sdk/photon" - "gopkg.in/gcfg.v1" "io" - "k8s.io/kubernetes/pkg/api" - "k8s.io/kubernetes/pkg/cloudprovider" - k8stypes "k8s.io/kubernetes/pkg/types" "log" "os/exec" "strings" + + "github.com/golang/glog" + "github.com/vmware/photon-controller-go-sdk/photon" + "gopkg.in/gcfg.v1" + "k8s.io/kubernetes/pkg/api/v1" + "k8s.io/kubernetes/pkg/cloudprovider" + k8stypes "k8s.io/kubernetes/pkg/types" ) const ( @@ -284,8 +285,8 @@ func (pc *PCCloud) List(filter string) ([]k8stypes.NodeName, error) { } // NodeAddresses is an implementation of Instances.NodeAddresses. -func (pc *PCCloud) NodeAddresses(nodeName k8stypes.NodeName) ([]api.NodeAddress, error) { - addrs := []api.NodeAddress{} +func (pc *PCCloud) NodeAddresses(nodeName k8stypes.NodeName) ([]v1.NodeAddress, error) { + addrs := []v1.NodeAddress{} name := string(nodeName) var vmID string @@ -326,10 +327,10 @@ func (pc *PCCloud) NodeAddresses(nodeName k8stypes.NodeName) ([]api.NodeAddress, if val, ok := network["ipAddress"]; ok && val != nil { ipAddr := val.(string) if ipAddr != "-" { - api.AddToNodeAddresses(&addrs, - api.NodeAddress{ + v1.AddToNodeAddresses(&addrs, + v1.NodeAddress{ // TODO: figure out the type of the IP - Type: api.NodeInternalIP, + Type: v1.NodeInternalIP, Address: ipAddr, }, ) diff --git a/pkg/cloudprovider/providers/rackspace/rackspace.go b/pkg/cloudprovider/providers/rackspace/rackspace.go index 10548cae55a..c2852a0ac3f 100644 --- a/pkg/cloudprovider/providers/rackspace/rackspace.go +++ b/pkg/cloudprovider/providers/rackspace/rackspace.go @@ -40,7 +40,7 @@ import ( "github.com/rackspace/gophercloud/rackspace/compute/v2/servers" "github.com/rackspace/gophercloud/rackspace/compute/v2/volumeattach" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" "k8s.io/kubernetes/pkg/types" ) @@ -397,7 +397,7 @@ func getAddressByName(api *gophercloud.ServiceClient, name string) (string, erro return getAddressByServer(srv) } -func (i *Instances) NodeAddresses(nodeName types.NodeName) ([]api.NodeAddress, error) { +func (i *Instances) NodeAddresses(nodeName types.NodeName) ([]v1.NodeAddress, error) { glog.V(2).Infof("NodeAddresses(%v) called", nodeName) serverName := mapNodeNameToServerName(nodeName) ip, err := probeNodeAddress(i.compute, serverName) @@ -409,10 +409,10 @@ func (i *Instances) NodeAddresses(nodeName types.NodeName) ([]api.NodeAddress, e // net.ParseIP().String() is to maintain compatibility with the old code parsedIP := net.ParseIP(ip).String() - return []api.NodeAddress{ - {Type: api.NodeLegacyHostIP, Address: parsedIP}, - {Type: api.NodeInternalIP, Address: parsedIP}, - {Type: api.NodeExternalIP, Address: parsedIP}, + return []v1.NodeAddress{ + {Type: v1.NodeLegacyHostIP, Address: parsedIP}, + {Type: v1.NodeInternalIP, Address: parsedIP}, + {Type: v1.NodeExternalIP, Address: parsedIP}, }, nil } diff --git a/pkg/cloudprovider/providers/vsphere/vsphere.go b/pkg/cloudprovider/providers/vsphere/vsphere.go index 804931a96bb..3438a708690 100644 --- a/pkg/cloudprovider/providers/vsphere/vsphere.go +++ b/pkg/cloudprovider/providers/vsphere/vsphere.go @@ -42,7 +42,7 @@ import ( "github.com/vmware/govmomi/vim25/types" "golang.org/x/net/context" - "k8s.io/kubernetes/pkg/api" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/cloudprovider" k8stypes "k8s.io/kubernetes/pkg/types" k8runtime "k8s.io/kubernetes/pkg/util/runtime" @@ -492,8 +492,8 @@ func (i *Instances) List(filter string) ([]k8stypes.NodeName, error) { } // NodeAddresses is an implementation of Instances.NodeAddresses. -func (i *Instances) NodeAddresses(nodeName k8stypes.NodeName) ([]api.NodeAddress, error) { - addrs := []api.NodeAddress{} +func (i *Instances) NodeAddresses(nodeName k8stypes.NodeName) ([]v1.NodeAddress, error) { + addrs := []v1.NodeAddress{} // Create context ctx, cancel := context.WithCancel(context.Background()) @@ -512,15 +512,15 @@ func (i *Instances) NodeAddresses(nodeName k8stypes.NodeName) ([]api.NodeAddress // retrieve VM's ip(s) for _, v := range mvm.Guest.Net { - var addressType api.NodeAddressType + var addressType v1.NodeAddressType if i.cfg.Network.PublicNetwork == v.Network { - addressType = api.NodeExternalIP + addressType = v1.NodeExternalIP } else { - addressType = api.NodeInternalIP + addressType = v1.NodeInternalIP } for _, ip := range v.IpAddress { - api.AddToNodeAddresses(&addrs, - api.NodeAddress{ + v1.AddToNodeAddresses(&addrs, + v1.NodeAddress{ Type: addressType, Address: ip, },