Merge pull request #9821 from olemarkus/openstack-newer-nova-3

Reconcile ports and floating ips
This commit is contained in:
Kubernetes Prow Robot 2020-08-27 07:15:53 -07:00 committed by GitHub
commit e5e8908cce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 83 additions and 54 deletions

View File

@ -51,8 +51,6 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.ModelBuilderContext, sg *
sshKeyName := strings.Replace(sshKeyNameFull, ":", "_", -1) sshKeyName := strings.Replace(sshKeyNameFull, ":", "_", -1)
clusterTag := "KubernetesCluster:" + strings.Replace(b.ClusterName(), ".", "-", -1)
igMeta := make(map[string]string) igMeta := make(map[string]string)
cloudTags, err := b.KopsModelContext.CloudTagsForInstanceGroup(ig) cloudTags, err := b.KopsModelContext.CloudTagsForInstanceGroup(ig)
if err != nil { if err != nil {
@ -149,7 +147,6 @@ func (b *ServerGroupModelBuilder) buildInstances(c *fi.ModelBuilderContext, sg *
Image: fi.String(ig.Spec.Image), Image: fi.String(ig.Spec.Image),
SSHKey: fi.String(sshKeyName), SSHKey: fi.String(sshKeyName),
ServerGroup: sg, ServerGroup: sg,
Tags: []string{clusterTag},
Role: fi.String(string(ig.Spec.Role)), Role: fi.String(string(ig.Spec.Role)),
Port: portTask, Port: portTask,
UserData: startupScript, UserData: startupScript,

View File

@ -124,7 +124,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image-master"), Image: s("image-master"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterServerGroup, ServerGroup: masterServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterPort, Port: masterPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -171,7 +170,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image-node"), Image: s("image-node"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodePort, Port: nodePort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -314,7 +312,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterServerGroup, ServerGroup: masterServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterPort, Port: masterPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -361,7 +358,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodePort, Port: nodePort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -404,7 +400,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: bastionServerGroup, ServerGroup: bastionServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Bastion"), Role: s("Bastion"),
Port: bastionPort, Port: bastionPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[2]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[2]),
@ -585,7 +580,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterAServerGroup, ServerGroup: masterAServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterAPort, Port: masterAPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -633,7 +627,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterBServerGroup, ServerGroup: masterBServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterBPort, Port: masterBPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -681,7 +674,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterCServerGroup, ServerGroup: masterCServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterCPort, Port: masterCPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -728,7 +720,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeAServerGroup, ServerGroup: nodeAServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeAPort, Port: nodeAPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -775,7 +766,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeBServerGroup, ServerGroup: nodeBServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeBPort, Port: nodeBPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -822,7 +812,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeCServerGroup, ServerGroup: nodeCServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeCPort, Port: nodeCPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -1023,7 +1012,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterAServerGroup, ServerGroup: masterAServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterAPort, Port: masterAPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -1066,7 +1054,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterBServerGroup, ServerGroup: masterBServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterBPort, Port: masterBPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -1109,7 +1096,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterCServerGroup, ServerGroup: masterCServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterCPort, Port: masterCPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -1152,7 +1138,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeAServerGroup, ServerGroup: nodeAServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeAPort, Port: nodeAPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -1199,7 +1184,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeBServerGroup, ServerGroup: nodeBServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeBPort, Port: nodeBPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -1246,7 +1230,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeCServerGroup, ServerGroup: nodeCServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeCPort, Port: nodeCPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -1488,7 +1471,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterAServerGroup, ServerGroup: masterAServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterAPort, Port: masterAPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -1532,7 +1514,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterBServerGroup, ServerGroup: masterBServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterBPort, Port: masterBPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -1576,7 +1557,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterCServerGroup, ServerGroup: masterCServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterCPort, Port: masterCPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -1619,7 +1599,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeAServerGroup, ServerGroup: nodeAServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeAPort, Port: nodeAPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -1662,7 +1641,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeBServerGroup, ServerGroup: nodeBServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeBPort, Port: nodeBPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -1705,7 +1683,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeCServerGroup, ServerGroup: nodeCServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeCPort, Port: nodeCPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -1850,7 +1827,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterServerGroup, ServerGroup: masterServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterAPort, Port: masterAPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -1890,7 +1866,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterServerGroup, ServerGroup: masterServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterBPort, Port: masterBPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -1930,7 +1905,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterServerGroup, ServerGroup: masterServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterCPort, Port: masterCPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -1977,7 +1951,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeAPort, Port: nodeAPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -2016,7 +1989,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeBPort, Port: nodeBPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -2055,7 +2027,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodeCPort, Port: nodeCPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -2184,7 +2155,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image-master"), Image: s("image-master"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterServerGroup, ServerGroup: masterServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterPort, Port: masterPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -2227,7 +2197,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image-node"), Image: s("image-node"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodePort, Port: nodePort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -2364,7 +2333,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: masterServerGroup, ServerGroup: masterServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Master"), Role: s("Master"),
Port: masterPort, Port: masterPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -2407,7 +2375,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodePort, Port: nodePort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[1]),
@ -2450,7 +2417,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image"), Image: s("image"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: bastionServerGroup, ServerGroup: bastionServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Bastion"), Role: s("Bastion"),
Port: bastionPort, Port: bastionPort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[2]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[2]),
@ -2548,7 +2514,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image-node"), Image: s("image-node"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodePort, Port: nodePort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -2646,7 +2611,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image-node"), Image: s("image-node"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodePort, Port: nodePort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -2742,7 +2706,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image-node"), Image: s("image-node"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodePort, Port: nodePort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -2835,7 +2798,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image-node"), Image: s("image-node"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodePort, Port: nodePort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -2926,7 +2888,6 @@ func Test_ServerGroupModelBuilder(t *testing.T) {
Image: s("image-node"), Image: s("image-node"),
SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"), SSHKey: s("kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1"),
ServerGroup: nodeServerGroup, ServerGroup: nodeServerGroup,
Tags: []string{"KubernetesCluster:cluster"},
Role: s("Node"), Role: s("Node"),
Port: nodePort, Port: nodePort,
UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]), UserData: mustUserdataForClusterInstance(cluster, instanceGroups[0]),
@ -3178,9 +3139,6 @@ func compareInstances(t *testing.T, actualTask fi.Task, expected *openstacktasks
compareStrings(t, "AvailabilityZone", actual.AvailabilityZone, expected.AvailabilityZone) compareStrings(t, "AvailabilityZone", actual.AvailabilityZone, expected.AvailabilityZone)
comparePorts(t, actual.Port, expected.Port) comparePorts(t, actual.Port, expected.Port)
compareServerGroups(t, actual.ServerGroup, expected.ServerGroup) compareServerGroups(t, actual.ServerGroup, expected.ServerGroup)
if !reflect.DeepEqual(actual.Tags, expected.Tags) {
t.Errorf("Tags differ:\n%v\n\tinstead of\n%v", actual.Tags, expected.Tags)
}
if !reflect.DeepEqual(actual.Metadata, expected.Metadata) { if !reflect.DeepEqual(actual.Metadata, expected.Metadata) {
t.Errorf("Metadata differ:\n%v\n\tinstead of\n%v", actual.Metadata, expected.Metadata) t.Errorf("Metadata differ:\n%v\n\tinstead of\n%v", actual.Metadata, expected.Metadata)
} }

View File

@ -153,7 +153,9 @@ func (e *FloatingIP) Find(c *fi.Context) (*FloatingIP, error) {
e.ID = actual.ID e.ID = actual.ID
return actual, nil return actual, nil
} }
fips, err := cloud.ListL3FloatingIPs(l3floatingip.ListOpts{}) fips, err := cloud.ListL3FloatingIPs(l3floatingip.ListOpts{
Description: fi.StringValue(e.Name),
})
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to list layer 3 floating ip's: %v", err) return nil, fmt.Errorf("failed to list layer 3 floating ip's: %v", err)
} }

View File

@ -21,6 +21,7 @@ import (
"strconv" "strconv"
l3floatingip "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips" l3floatingip "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips"
"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/bootfromvolume" "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/bootfromvolume"
"github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/keypairs" "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/keypairs"
@ -41,7 +42,6 @@ type Instance struct {
Image *string Image *string
SSHKey *string SSHKey *string
ServerGroup *ServerGroup ServerGroup *ServerGroup
Tags []string
Role *string Role *string
UserData *fi.ResourceHolder UserData *fi.ResourceHolder
Metadata map[string]string Metadata map[string]string
@ -115,8 +115,9 @@ func (e *Instance) Find(c *fi.Context) (*Instance, error) {
if e == nil || e.Name == nil { if e == nil || e.Name == nil {
return nil, nil return nil, nil
} }
client := c.Cloud.(openstack.OpenstackCloud).ComputeClient() cloud := c.Cloud.(openstack.OpenstackCloud)
serverPage, err := servers.List(client, servers.ListOpts{ computeClient := cloud.ComputeClient()
serverPage, err := servers.List(computeClient, servers.ListOpts{
Name: fmt.Sprintf("^%s$", fi.StringValue(e.Name)), Name: fmt.Sprintf("^%s$", fi.StringValue(e.Name)),
}).AllPages() }).AllPages()
if err != nil { if err != nil {
@ -139,9 +140,63 @@ func (e *Instance) Find(c *fi.Context) (*Instance, error) {
Name: fi.String(server.Name), Name: fi.String(server.Name),
SSHKey: fi.String(server.KeyName), SSHKey: fi.String(server.KeyName),
Lifecycle: e.Lifecycle, Lifecycle: e.Lifecycle,
Metadata: server.Metadata,
Role: fi.String(server.Metadata["KopsRole"]),
AvailabilityZone: e.AvailabilityZone, AvailabilityZone: e.AvailabilityZone,
} }
ports, err := cloud.ListPorts(ports.ListOpts{
DeviceID: server.ID,
})
if err != nil {
return nil, fmt.Errorf("failed to fetch port for instance %v: %v", server.ID, err)
}
if len(ports) == 1 {
port := ports[0]
porttask, err := newPortTaskFromCloud(cloud, e.Lifecycle, &port, nil)
if err != nil {
return nil, fmt.Errorf("failed to fetch port for instance %v: %v", server.ID, err)
}
actual.Port = porttask
} else if len(ports) > 1 {
return nil, fmt.Errorf("found more than one port for instance %v", server.ID)
}
if e.FloatingIP != nil && e.Port != nil {
fips, err := cloud.ListL3FloatingIPs(l3floatingip.ListOpts{
PortID: fi.StringValue(e.Port.ID),
})
if err != nil {
return nil, fmt.Errorf("failed to fetch floating ips for instance %v: %v", server.ID, err)
}
if len(fips) == 1 {
fip := fips[0]
fipTask := &FloatingIP{
ID: fi.String(fip.ID),
Name: fi.String(fip.Description),
}
actual.FloatingIP = fipTask
} else if len(fips) > 1 {
return nil, fmt.Errorf("found more than one floating ip for instance %v", server.ID)
}
}
// Avoid flapping
e.ID = actual.ID e.ID = actual.ID
actual.ForAPIServer = e.ForAPIServer
// Immutable fields
actual.Flavor = e.Flavor
actual.Image = e.Image
actual.UserData = e.UserData
actual.Region = e.Region
actual.SSHKey = e.SSHKey
actual.ServerGroup = e.ServerGroup
return actual, nil return actual, nil
} }
@ -170,14 +225,20 @@ func (_ *Instance) ShouldCreate(a, e, changes *Instance) (bool, error) {
if a == nil { if a == nil {
return true, nil return true, nil
} }
if changes.Port != nil {
return true, nil
}
if changes.FloatingIP != nil {
return true, nil
}
return false, nil return false, nil
} }
func (_ *Instance) RenderOpenstack(t *openstack.OpenstackAPITarget, a, e, changes *Instance) error { func (_ *Instance) RenderOpenstack(t *openstack.OpenstackAPITarget, a, e, changes *Instance) error {
cloud := t.Cloud.(openstack.OpenstackCloud)
if a == nil { if a == nil {
klog.V(2).Infof("Creating Instance with name: %q", fi.StringValue(e.Name)) klog.V(2).Infof("Creating Instance with name: %q", fi.StringValue(e.Name))
cloud := t.Cloud.(openstack.OpenstackCloud)
imageName := fi.StringValue(e.Image) imageName := fi.StringValue(e.Image)
image, err := cloud.GetImage(imageName) image, err := cloud.GetImage(imageName)
@ -240,15 +301,26 @@ func (_ *Instance) RenderOpenstack(t *openstack.OpenstackAPITarget, a, e, change
if e.FloatingIP != nil { if e.FloatingIP != nil {
err = associateFloatingIP(t, e) err = associateFloatingIP(t, e)
} if err != nil {
if err != nil { return err
return err }
} }
klog.V(2).Infof("Creating a new Openstack instance, id=%s", v.ID) klog.V(2).Infof("Creating a new Openstack instance, id=%s", v.ID)
return nil
}
if changes.Port != nil {
ports.Update(cloud.NetworkingClient(), fi.StringValue(changes.Port.ID), ports.UpdateOpts{
DeviceID: e.ID,
})
}
if changes.FloatingIP != nil {
err := associateFloatingIP(t, e)
if err != nil {
return err
}
} }
return nil return nil
} }