Merge pull request #36344 from anguslees/gophercloud
Automatic merge from submit-queue (batch tested with PRs 41756, 36344, 34259, 40843, 41526) Migrate rackspace/gophercloud -> gophercloud/gophercloud `gophercloud` is the go library we use to interact with openstack. It has recently been renamed and incorporated a number of breaking code cleanups. This change migrates the Kubernetes openstack code (openstack provider, keystone auth, cinder volumes) to the new library. Fixes #30404 ```release-note The openstack cloud provider config no longer supports the deprecated `api-key` option. ``` Note this PR doesn't change the rackspace provider. It uses some rackspace-specific APIs and continues to use the older rackspace/gophercloud library.
This commit is contained in:
commit
0f9833ff05
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 != ""))
|
||||
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue