From 7ad4910b6a1c4e5d656a2ca5cd8700279ec5f644 Mon Sep 17 00:00:00 2001 From: Angus Lees Date: Mon, 7 Nov 2016 19:35:42 +1100 Subject: [PATCH] Migrate rackspace/gophercloud -> gophercloud/gophercloud This change migrates the 'openstack' provider and 'keystone' authenticator plugin to the newer gophercloud/gophercloud library. Note the 'rackspace' provider still uses rackspace/gophercloud. Fixes #30404 --- pkg/cloudprovider/providers/openstack/BUILD | 50 ++++---- .../providers/openstack/openstack.go | 37 +++--- .../openstack/openstack_instances.go | 10 +- .../openstack/openstack_loadbalancer.go | 108 +++++++++++------- .../providers/openstack/openstack_routes.go | 8 +- .../providers/openstack/openstack_test.go | 7 +- .../providers/openstack/openstack_volumes.go | 10 +- 7 files changed, 130 insertions(+), 100 deletions(-) diff --git a/pkg/cloudprovider/providers/openstack/BUILD b/pkg/cloudprovider/providers/openstack/BUILD index e30be10..623ee9c 100644 --- a/pkg/cloudprovider/providers/openstack/BUILD +++ b/pkg/cloudprovider/providers/openstack/BUILD @@ -27,30 +27,30 @@ go_library( "//pkg/util/mount:go_default_library", "//pkg/volume:go_default_library", "//vendor:github.com/golang/glog", + "//vendor:github.com/gophercloud/gophercloud", + "//vendor:github.com/gophercloud/gophercloud/openstack", + "//vendor:github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes", + "//vendor:github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach", + "//vendor:github.com/gophercloud/gophercloud/openstack/compute/v2/flavors", + "//vendor:github.com/gophercloud/gophercloud/openstack/compute/v2/servers", + "//vendor:github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/trusts", + "//vendor:github.com/gophercloud/gophercloud/openstack/identity/v3/tokens", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/members", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/monitors", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/pools", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/vips", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/listeners", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/rules", + "//vendor:github.com/gophercloud/gophercloud/openstack/networking/v2/ports", + "//vendor:github.com/gophercloud/gophercloud/pagination", "//vendor:github.com/mitchellh/mapstructure", - "//vendor:github.com/rackspace/gophercloud", - "//vendor:github.com/rackspace/gophercloud/openstack", - "//vendor:github.com/rackspace/gophercloud/openstack/blockstorage/v1/volumes", - "//vendor:github.com/rackspace/gophercloud/openstack/compute/v2/extensions/volumeattach", - "//vendor:github.com/rackspace/gophercloud/openstack/compute/v2/flavors", - "//vendor:github.com/rackspace/gophercloud/openstack/compute/v2/servers", - "//vendor:github.com/rackspace/gophercloud/openstack/identity/v3/extensions/trust", - "//vendor:github.com/rackspace/gophercloud/openstack/identity/v3/tokens", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/routers", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas/members", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas/monitors", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas/pools", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas/vips", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/listeners", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/security/groups", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/extensions/security/rules", - "//vendor:github.com/rackspace/gophercloud/openstack/networking/v2/ports", - "//vendor:github.com/rackspace/gophercloud/pagination", "//vendor:gopkg.in/gcfg.v1", "//vendor:k8s.io/apimachinery/pkg/api/resource", "//vendor:k8s.io/apimachinery/pkg/types", @@ -69,8 +69,8 @@ go_test( deps = [ "//pkg/api/v1:go_default_library", "//pkg/cloudprovider:go_default_library", - "//vendor:github.com/rackspace/gophercloud", - "//vendor:github.com/rackspace/gophercloud/openstack/compute/v2/servers", + "//vendor:github.com/gophercloud/gophercloud", + "//vendor:github.com/gophercloud/gophercloud/openstack/compute/v2/servers", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", "//vendor:k8s.io/apimachinery/pkg/types", "//vendor:k8s.io/apimachinery/pkg/util/rand", diff --git a/pkg/cloudprovider/providers/openstack/openstack.go b/pkg/cloudprovider/providers/openstack/openstack.go index 7ab38ab..572d209 100644 --- a/pkg/cloudprovider/providers/openstack/openstack.go +++ b/pkg/cloudprovider/providers/openstack/openstack.go @@ -26,13 +26,13 @@ import ( "strings" "time" + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack" + "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" + "github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/trusts" + tokens3 "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens" + "github.com/gophercloud/gophercloud/pagination" "github.com/mitchellh/mapstructure" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack" - "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - "github.com/rackspace/gophercloud/openstack/identity/v3/extensions/trust" - token3 "github.com/rackspace/gophercloud/openstack/identity/v3/tokens" - "github.com/rackspace/gophercloud/pagination" "gopkg.in/gcfg.v1" "github.com/golang/glog" @@ -110,7 +110,6 @@ type Config struct { Username string UserId string `gcfg:"user-id"` Password string - ApiKey string `gcfg:"api-key"` TenantId string `gcfg:"tenant-id"` TenantName string `gcfg:"tenant-name"` TrustId string `gcfg:"trust-id"` @@ -139,7 +138,6 @@ func (cfg Config) toAuthOptions() gophercloud.AuthOptions { Username: cfg.Global.Username, UserID: cfg.Global.UserId, Password: cfg.Global.Password, - APIKey: cfg.Global.ApiKey, TenantID: cfg.Global.TenantId, TenantName: cfg.Global.TenantName, DomainID: cfg.Global.DomainId, @@ -150,6 +148,18 @@ func (cfg Config) toAuthOptions() gophercloud.AuthOptions { } } +func (cfg Config) toAuth3Options() tokens3.AuthOptions { + return tokens3.AuthOptions{ + IdentityEndpoint: cfg.Global.AuthUrl, + Username: cfg.Global.Username, + UserID: cfg.Global.UserId, + Password: cfg.Global.Password, + DomainID: cfg.Global.DomainId, + DomainName: cfg.Global.DomainName, + AllowReauth: true, + } +} + func readConfig(config io.Reader) (Config, error) { if config == nil { err := fmt.Errorf("no OpenStack cloud provider config file given") @@ -205,11 +215,12 @@ func newOpenStack(cfg Config) (*OpenStack, error) { return nil, err } if cfg.Global.TrustId != "" { - authOptionsExt := trust.AuthOptionsExt{ - TrustID: cfg.Global.TrustId, - AuthOptions: token3.AuthOptions{AuthOptions: cfg.toAuthOptions()}, + opts := cfg.toAuth3Options() + authOptsExt := trusts.AuthOptsExt{ + TrustID: cfg.Global.TrustId, + AuthOptionsBuilder: &opts, } - err = trust.AuthenticateV3Trust(provider, authOptionsExt) + err = openstack.AuthenticateV3(provider, authOptsExt, gophercloud.EndpointOpts{}) } else { err = openstack.Authenticate(provider, cfg.toAuthOptions()) } @@ -446,7 +457,7 @@ func (os *OpenStack) LoadBalancer() (cloudprovider.LoadBalancer, bool) { } func isNotFound(err error) bool { - e, ok := err.(*gophercloud.UnexpectedResponseCodeError) + e, ok := err.(*gophercloud.ErrUnexpectedResponseCode) return ok && e.Actual == http.StatusNotFound } diff --git a/pkg/cloudprovider/providers/openstack/openstack_instances.go b/pkg/cloudprovider/providers/openstack/openstack_instances.go index 244be64..ce22459 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_instances.go +++ b/pkg/cloudprovider/providers/openstack/openstack_instances.go @@ -20,11 +20,11 @@ import ( "errors" "github.com/golang/glog" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack" - "github.com/rackspace/gophercloud/openstack/compute/v2/flavors" - "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - "github.com/rackspace/gophercloud/pagination" + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack" + "github.com/gophercloud/gophercloud/openstack/compute/v2/flavors" + "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" + "github.com/gophercloud/gophercloud/pagination" "k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/types" diff --git a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go index 64f6741..aa859e2 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go +++ b/pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go @@ -23,21 +23,21 @@ import ( "time" "github.com/golang/glog" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/floatingips" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas/members" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas/monitors" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas/pools" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas/vips" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/listeners" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers" - v2monitors "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors" - v2pools "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/security/groups" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/security/rules" - neutronports "github.com/rackspace/gophercloud/openstack/networking/v2/ports" - "github.com/rackspace/gophercloud/pagination" + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/members" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/monitors" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/pools" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas/vips" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/listeners" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers" + v2monitors "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors" + v2pools "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/rules" + neutronports "github.com/gophercloud/gophercloud/openstack/networking/v2/ports" + "github.com/gophercloud/gophercloud/pagination" "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1/service" @@ -221,7 +221,7 @@ func getLoadbalancerByName(client *gophercloud.ServiceClient, name string) (*loa loadbalancerList := make([]loadbalancers.LoadBalancer, 0, 1) err := pager.EachPage(func(page pagination.Page) (bool, error) { - v, err := loadbalancers.ExtractLoadbalancers(page) + v, err := loadbalancers.ExtractLoadBalancers(page) if err != nil { return false, err } @@ -275,7 +275,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 v1.ServicePort) *listeners.Listener { for _, l := range existingListeners { - if l.Protocol == string(port.Protocol) && l.ProtocolPort == int(port.Port) { + if listeners.Protocol(l.Protocol) == toListenersProtocol(port.Protocol) && l.ProtocolPort == int(port.Port) { return &l } } @@ -321,7 +321,7 @@ func getPoolByListenerID(client *gophercloud.ServiceClient, loadbalancerID strin func getMembersByPoolID(client *gophercloud.ServiceClient, id string) ([]v2pools.Member, error) { var members []v2pools.Member - err := v2pools.ListAssociateMembers(client, id, v2pools.MemberListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := v2pools.ListMembers(client, id, v2pools.ListMembersOpts{}).EachPage(func(page pagination.Page) (bool, error) { membersList, err := v2pools.ExtractMembers(page) if err != nil { return false, err @@ -477,25 +477,45 @@ func waitLoadbalancerDeleted(client *gophercloud.ServiceClient, loadbalancerID s } } -func createNodeSecurityGroup(client *gophercloud.ServiceClient, nodeSecurityGroupID string, port int, protocol string, lbSecGroup string) error { +func toRuleProtocol(protocol v1.Protocol) rules.RuleProtocol { + switch protocol { + case v1.ProtocolTCP: + return rules.ProtocolTCP + case v1.ProtocolUDP: + return rules.ProtocolUDP + default: + return rules.RuleProtocol(strings.ToLower(string(protocol))) + } +} + +func toListenersProtocol(protocol v1.Protocol) listeners.Protocol { + switch protocol { + case v1.ProtocolTCP: + return listeners.ProtocolTCP + default: + return listeners.Protocol(string(protocol)) + } +} + +func createNodeSecurityGroup(client *gophercloud.ServiceClient, nodeSecurityGroupID string, port int, protocol v1.Protocol, lbSecGroup string) error { v4NodeSecGroupRuleCreateOpts := rules.CreateOpts{ - Direction: "ingress", + Direction: rules.DirIngress, PortRangeMax: port, PortRangeMin: port, - Protocol: strings.ToLower(protocol), + Protocol: toRuleProtocol(protocol), RemoteGroupID: lbSecGroup, SecGroupID: nodeSecurityGroupID, - EtherType: "IPv4", + EtherType: rules.EtherType4, } v6NodeSecGroupRuleCreateOpts := rules.CreateOpts{ - Direction: "ingress", + Direction: rules.DirIngress, PortRangeMax: port, PortRangeMin: port, - Protocol: strings.ToLower(protocol), + Protocol: toRuleProtocol(protocol), RemoteGroupID: lbSecGroup, SecGroupID: nodeSecurityGroupID, - EtherType: "IPv6", + EtherType: rules.EtherType6, } _, err := rules.Create(client, v4NodeSecGroupRuleCreateOpts).Extract() @@ -705,7 +725,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Serv if !memberExists(members, addr, int(port.NodePort)) { glog.V(4).Infof("Creating member for pool %s", pool.ID) - _, err := v2pools.CreateAssociateMember(lbaas.network, pool.ID, v2pools.MemberCreateOpts{ + _, err := v2pools.CreateMember(lbaas.network, pool.ID, v2pools.CreateMemberOpts{ ProtocolPort: int(port.NodePort), Address: addr, SubnetID: lbaas.opts.SubnetId, @@ -848,7 +868,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Serv for _, port := range ports { for _, sourceRange := range sourceRanges.StringSlice() { - ethertype := "IPv4" + ethertype := rules.EtherType4 network, _, err := net.ParseCIDR(sourceRange) if err != nil { @@ -859,14 +879,14 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Serv } if network.To4() == nil { - ethertype = "IPv6" + ethertype = rules.EtherType6 } lbSecGroupRuleCreateOpts := rules.CreateOpts{ - Direction: "ingress", + Direction: rules.DirIngress, PortRangeMax: int(port.Port), PortRangeMin: int(port.Port), - Protocol: strings.ToLower(string(port.Protocol)), + Protocol: toRuleProtocol(port.Protocol), RemoteIPPrefix: sourceRange, SecGroupID: lbSecGroup.ID, EtherType: ethertype, @@ -881,7 +901,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Serv } } - err := createNodeSecurityGroup(lbaas.network, lbaas.opts.NodeSecurityGroupID, int(port.NodePort), string(port.Protocol), lbSecGroup.ID) + err := createNodeSecurityGroup(lbaas.network, lbaas.opts.NodeSecurityGroupID, int(port.NodePort), port.Protocol, lbSecGroup.ID) if err != nil { glog.Errorf("Error occured creating security group for loadbalancer %s:", loadbalancer.ID) _ = lbaas.EnsureLoadBalancerDeleted(clusterName, apiService) @@ -890,13 +910,13 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Serv } lbSecGroupRuleCreateOpts := rules.CreateOpts{ - Direction: "ingress", + Direction: rules.DirIngress, PortRangeMax: 4, // ICMP: Code - Values for ICMP "Destination Unreachable: Fragmentation Needed and Don't Fragment was Set" PortRangeMin: 3, // ICMP: Type - Protocol: "icmp", + Protocol: rules.ProtocolICMP, RemoteIPPrefix: "0.0.0.0/0", // The Fragmentation packet can come from anywhere along the path back to the sourceRange - we need to all this from all SecGroupID: lbSecGroup.ID, - EtherType: "IPv4", + EtherType: rules.EtherType4, } _, err = rules.Create(lbaas.network, lbSecGroupRuleCreateOpts).Extract() @@ -908,13 +928,13 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Serv } lbSecGroupRuleCreateOpts = rules.CreateOpts{ - Direction: "ingress", + Direction: rules.DirIngress, PortRangeMax: 0, // ICMP: Code - Values for ICMP "Packet Too Big" PortRangeMin: 2, // ICMP: Type - Protocol: "icmp", + Protocol: rules.ProtocolICMP, RemoteIPPrefix: "::/0", // The Fragmentation packet can come from anywhere along the path back to the sourceRange - we need to all this from all SecGroupID: lbSecGroup.ID, - EtherType: "IPv6", + EtherType: rules.EtherType6, } _, err = rules.Create(lbaas.network, lbSecGroupRuleCreateOpts).Extract() @@ -968,7 +988,7 @@ func (lbaas *LbaasV2) UpdateLoadBalancer(clusterName string, service *v1.Service // Get all listeners for this loadbalancer, by "port key". type portKey struct { - Protocol string + Protocol listeners.Protocol Port int } @@ -983,7 +1003,7 @@ func (lbaas *LbaasV2) UpdateLoadBalancer(clusterName string, service *v1.Service // Double check this Listener belongs to the LB we're updating. Neutron's API filtering // can't be counted on in older releases (i.e Liberty). if loadbalancer.ID == lb.ID { - key := portKey{Protocol: l.Protocol, Port: l.ProtocolPort} + key := portKey{Protocol: listeners.Protocol(l.Protocol), Port: l.ProtocolPort} lbListeners[key] = l break } @@ -1034,7 +1054,7 @@ func (lbaas *LbaasV2) UpdateLoadBalancer(clusterName string, service *v1.Service for _, port := range ports { // Get listener associated with this port listener, ok := lbListeners[portKey{ - Protocol: string(port.Protocol), + Protocol: toListenersProtocol(port.Protocol), Port: int(port.Port), }] if !ok { @@ -1049,7 +1069,7 @@ func (lbaas *LbaasV2) UpdateLoadBalancer(clusterName string, service *v1.Service // Find existing pool members (by address) for this port members := make(map[string]v2pools.Member) - err := v2pools.ListAssociateMembers(lbaas.network, pool.ID, v2pools.MemberListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := v2pools.ListMembers(lbaas.network, pool.ID, v2pools.ListMembersOpts{}).EachPage(func(page pagination.Page) (bool, error) { membersList, err := v2pools.ExtractMembers(page) if err != nil { return false, err @@ -1069,7 +1089,7 @@ func (lbaas *LbaasV2) UpdateLoadBalancer(clusterName string, service *v1.Service // Already exists, do not create member continue } - _, err := v2pools.CreateAssociateMember(lbaas.network, pool.ID, v2pools.MemberCreateOpts{ + _, err := v2pools.CreateMember(lbaas.network, pool.ID, v2pools.CreateMemberOpts{ Address: addr, ProtocolPort: int(port.NodePort), SubnetID: lbaas.opts.SubnetId, @@ -1167,7 +1187,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *v1. // get all members associated with each poolIDs var memberIDs []string for _, poolID := range poolIDs { - err := v2pools.ListAssociateMembers(lbaas.network, poolID, v2pools.MemberListOpts{}).EachPage(func(page pagination.Page) (bool, error) { + err := v2pools.ListMembers(lbaas.network, poolID, v2pools.ListMembersOpts{}).EachPage(func(page pagination.Page) (bool, error) { membersList, err := v2pools.ExtractMembers(page) if err != nil { return false, err @@ -1338,7 +1358,7 @@ func (lb *LbaasV1) EnsureLoadBalancer(clusterName string, apiService *v1.Service } } - lbmethod := lb.opts.LBMethod + lbmethod := pools.LBMethod(lb.opts.LBMethod) if lbmethod == "" { lbmethod = pools.LBMethodRoundRobin } diff --git a/pkg/cloudprovider/providers/openstack/openstack_routes.go b/pkg/cloudprovider/providers/openstack/openstack_routes.go index ecf62eb..28e5160 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_routes.go +++ b/pkg/cloudprovider/providers/openstack/openstack_routes.go @@ -19,10 +19,10 @@ package openstack import ( "errors" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack/compute/v2/servers" - "github.com/rackspace/gophercloud/openstack/networking/v2/extensions/layer3/routers" - neutronports "github.com/rackspace/gophercloud/openstack/networking/v2/ports" + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" + "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers" + neutronports "github.com/gophercloud/gophercloud/openstack/networking/v2/ports" "github.com/golang/glog" "k8s.io/apimachinery/pkg/types" diff --git a/pkg/cloudprovider/providers/openstack/openstack_test.go b/pkg/cloudprovider/providers/openstack/openstack_test.go index c3a6fc0..6916e6c 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_test.go +++ b/pkg/cloudprovider/providers/openstack/openstack_test.go @@ -24,8 +24,8 @@ import ( "testing" "time" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack/compute/v2/servers" + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/rand" @@ -247,14 +247,13 @@ func configFromEnv() (cfg Config, ok bool) { cfg.Global.Username = os.Getenv("OS_USERNAME") cfg.Global.Password = os.Getenv("OS_PASSWORD") - cfg.Global.ApiKey = os.Getenv("OS_API_KEY") cfg.Global.Region = os.Getenv("OS_REGION_NAME") cfg.Global.DomainId = os.Getenv("OS_DOMAIN_ID") cfg.Global.DomainName = os.Getenv("OS_DOMAIN_NAME") ok = (cfg.Global.AuthUrl != "" && cfg.Global.Username != "" && - (cfg.Global.Password != "" || cfg.Global.ApiKey != "") && + cfg.Global.Password != "" && (cfg.Global.TenantId != "" || cfg.Global.TenantName != "" || cfg.Global.DomainId != "" || cfg.Global.DomainName != "")) diff --git a/pkg/cloudprovider/providers/openstack/openstack_volumes.go b/pkg/cloudprovider/providers/openstack/openstack_volumes.go index 1e9b9d2..8fdcc35 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_volumes.go +++ b/pkg/cloudprovider/providers/openstack/openstack_volumes.go @@ -25,11 +25,11 @@ import ( "k8s.io/kubernetes/pkg/volume" - "github.com/rackspace/gophercloud" - "github.com/rackspace/gophercloud/openstack" - "github.com/rackspace/gophercloud/openstack/blockstorage/v1/volumes" - "github.com/rackspace/gophercloud/openstack/compute/v2/extensions/volumeattach" - "github.com/rackspace/gophercloud/pagination" + "github.com/gophercloud/gophercloud" + "github.com/gophercloud/gophercloud/openstack" + "github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes" + "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach" + "github.com/gophercloud/gophercloud/pagination" "github.com/golang/glog" )