Merge pull request #9623 from zetaab/removelbcircular

remove LB circular in OpenStack
This commit is contained in:
Kubernetes Prow Robot 2020-07-23 23:08:23 -07:00 committed by GitHub
commit a7023cedcd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 14 deletions

View File

@ -93,12 +93,6 @@ func (e *LB) GetDependencies(tasks map[string]fi.Task) []fi.Task {
if _, ok := task.(*Subnet); ok {
deps = append(deps, task)
}
if _, ok := task.(*ServerGroup); ok {
deps = append(deps, task)
}
if _, ok := task.(*Instance); ok {
deps = append(deps, task)
}
if _, ok := task.(*SecurityGroup); ok {
deps = append(deps, task)
}

View File

@ -21,10 +21,12 @@ import (
"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
"github.com/gophercloud/gophercloud"
v2pools "github.com/gophercloud/gophercloud/openstack/loadbalancer/v2/pools"
"k8s.io/klog"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/openstack"
"k8s.io/kops/util/pkg/vfs"
)
//go:generate fitask -type=PoolAssociation
@ -135,19 +137,33 @@ func (_ *PoolAssociation) CheckChanges(a, e, changes *PoolAssociation) error {
return nil
}
func GetServerFixedIP(client *gophercloud.ServiceClient, serverID string, interfaceName string) (server *servers.Server, memberAddress string, err error) {
done, err := vfs.RetryWithBackoff(readBackoff, func() (bool, error) {
server, err = servers.Get(client, serverID).Extract()
if err != nil {
return true, fmt.Errorf("Failed to find server with id `%s`: %v", serverID, err)
}
memberAddress, err = openstack.GetServerFixedIP(server, interfaceName)
if err != nil {
// sometimes provisioning interfaces is slow, that is why we need retry the interface from the server
return false, fmt.Errorf("Failed to get fixed ip for associated pool: %v", err)
}
return true, nil
})
if done {
return server, memberAddress, nil
}
return server, memberAddress, err
}
func (_ *PoolAssociation) RenderOpenstack(t *openstack.OpenstackAPITarget, a, e, changes *PoolAssociation) error {
if a == nil {
for _, serverID := range e.ServerGroup.Members {
server, err := servers.Get(t.Cloud.ComputeClient(), serverID).Extract()
server, memberAddress, err := GetServerFixedIP(t.Cloud.ComputeClient(), serverID, fi.StringValue(e.InterfaceName))
if err != nil {
return fmt.Errorf("Failed to find server with id `%s`: %v", serverID, err)
}
memberAddress, err := openstack.GetServerFixedIP(server, fi.StringValue(e.InterfaceName))
if err != nil {
return fmt.Errorf("Failed to get fixed ip for associated pool: %v", err)
return err
}
member, err := t.Cloud.AssociateToPool(server, fi.StringValue(e.Pool.ID), v2pools.CreateMemberOpts{