mirror of https://github.com/kubernetes/kops.git
Merge pull request #9623 from zetaab/removelbcircular
remove LB circular in OpenStack
This commit is contained in:
commit
a7023cedcd
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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{
|
||||
|
|
Loading…
Reference in New Issue