diff --git a/pkg/model/openstackmodel/BUILD.bazel b/pkg/model/openstackmodel/BUILD.bazel index 7d0a47872a..971609eaaf 100644 --- a/pkg/model/openstackmodel/BUILD.bazel +++ b/pkg/model/openstackmodel/BUILD.bazel @@ -30,12 +30,14 @@ go_library( go_test( name = "go_default_test", srcs = ["servergroup_test.go"], + data = glob(["tests/**"]), #keep embed = [":go_default_library"], deps = [ "//pkg/apis/kops:go_default_library", "//pkg/apis/nodeup:go_default_library", "//pkg/model:go_default_library", "//pkg/model/iam:go_default_library", + "//pkg/testutils:go_default_library", "//upup/pkg/fi:go_default_library", "//upup/pkg/fi/cloudup/openstacktasks:go_default_library", "//util/pkg/architectures:go_default_library", diff --git a/pkg/model/openstackmodel/servergroup_test.go b/pkg/model/openstackmodel/servergroup_test.go index 195a283f9f..d56de6d63d 100644 --- a/pkg/model/openstackmodel/servergroup_test.go +++ b/pkg/model/openstackmodel/servergroup_test.go @@ -18,6 +18,7 @@ package openstackmodel import ( "fmt" + "path/filepath" "reflect" "sort" "strings" @@ -28,20 +29,22 @@ import ( "k8s.io/kops/pkg/apis/nodeup" "k8s.io/kops/pkg/model" "k8s.io/kops/pkg/model/iam" + "k8s.io/kops/pkg/testutils" "k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi/cloudup/openstacktasks" "k8s.io/kops/util/pkg/architectures" ) -func Test_ServerGroupModelBuilder(t *testing.T) { - tests := []struct { - desc string - cluster *kops.Cluster - instanceGroups []*kops.InstanceGroup - clusterLifecycle *fi.Lifecycle - expectedTasksBuilder func(cluster *kops.Cluster, instanceGroups []*kops.InstanceGroup) map[string]fi.Task - expectedError error - }{ +type serverGroupModelBuilderTestInput struct { + desc string + cluster *kops.Cluster + instanceGroups []*kops.InstanceGroup + expectedTasksBuilder func(cluster *kops.Cluster, instanceGroups []*kops.InstanceGroup) map[string]fi.Task + expectedError error +} + +func getServerGroupModelBuilderTestInput() []serverGroupModelBuilderTestInput { + return []serverGroupModelBuilderTestInput{ { desc: "one master one node", cluster: &kops.Cluster{ @@ -2224,7 +2227,7 @@ func Test_ServerGroupModelBuilder(t *testing.T) { }, }, { - desc: "one master one node one bastion", + desc: "one master one node one bastion 2", cluster: &kops.Cluster{ ObjectMeta: metav1.ObjectMeta{ Name: "cluster", @@ -2913,6 +2916,10 @@ func Test_ServerGroupModelBuilder(t *testing.T) { }, }, } +} + +func Test_ServerGroupModelBuilder(t *testing.T) { + tests := getServerGroupModelBuilderTestInput() for _, testCase := range tests { t.Run(testCase.desc, func(t *testing.T) { @@ -3437,3 +3444,44 @@ func mustUserdataForClusterInstance(cluster *kops.Cluster, ig *kops.InstanceGrou } return fi.WrapResource(fi.NewStringResource(userdata)) } + +func TestServerGroupBuilder(t *testing.T) { + tests := getServerGroupModelBuilderTestInput() + for _, testCase := range tests { + RunGoldenTest(t, "tests/servergroup", testCase) + } +} + +func RunGoldenTest(t *testing.T, basedir string, testCase serverGroupModelBuilderTestInput) { + h := testutils.NewIntegrationTestHarness(t) + defer h.Close() + + h.MockKopsVersion("1.18.0") + h.SetupMockOpenstack() + + clusterLifecycle := fi.LifecycleSync + bootstrapScriptBuilder := &model.BootstrapScriptBuilder{ + NodeUpConfigBuilder: &nodeupConfigBuilder{}, + NodeUpSource: map[architectures.Architecture]string{ + architectures.ArchitectureAmd64: "source-amd64", + architectures.ArchitectureArm64: "source-arm64", + }, + NodeUpSourceHash: map[architectures.Architecture]string{ + architectures.ArchitectureAmd64: "source-hash-amd64", + architectures.ArchitectureArm64: "source-hash-arm64", + }, + } + + builder := createBuilderForCluster(testCase.cluster, testCase.instanceGroups, clusterLifecycle, bootstrapScriptBuilder) + + context := &fi.ModelBuilderContext{ + Tasks: make(map[string]fi.Task), + LifecycleOverrides: map[string]fi.Lifecycle{}, + } + + builder.Build(context) + + file := filepath.Join(basedir, strings.ReplaceAll(testCase.desc, " ", "-")+".yaml") + + testutils.ValidateTasks(t, file, context) +} diff --git a/pkg/model/openstackmodel/tests/servergroup/adds-additional-security-groups.yaml b/pkg/model/openstackmodel/tests/servergroup/adds-additional-security-groups.yaml new file mode 100644 index 0000000000..f1ad0d5f48 --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/adds-additional-security-groups.yaml @@ -0,0 +1,104 @@ +Name: node +--- +AvailabilityZone: zone-1 +Flavor: blc.2-4 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image-node +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-1-cluster +Port: + AdditionalSecurityGroups: + - additional-sg + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: +- additional-sg +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: +- additional-sg +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/adds-cloud-labels-from-ClusterSpec.yaml b/pkg/model/openstackmodel/tests/servergroup/adds-cloud-labels-from-ClusterSpec.yaml new file mode 100644 index 0000000000..e9695bd8ca --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/adds-cloud-labels-from-ClusterSpec.yaml @@ -0,0 +1,102 @@ +Name: node +--- +AvailabilityZone: zone-1 +Flavor: blc.2-4 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image-node +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node + some___:x: label +Name: node-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/adds-cloud-labels-from-InstanceGroupSpec.yaml b/pkg/model/openstackmodel/tests/servergroup/adds-cloud-labels-from-InstanceGroupSpec.yaml new file mode 100644 index 0000000000..e9695bd8ca --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/adds-cloud-labels-from-InstanceGroupSpec.yaml @@ -0,0 +1,102 @@ +Name: node +--- +AvailabilityZone: zone-1 +Flavor: blc.2-4 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image-node +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node + some___:x: label +Name: node-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-bastion-auto-zone-distribution.yaml b/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-bastion-auto-zone-distribution.yaml new file mode 100644 index 0000000000..0f22686ddf --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-bastion-auto-zone-distribution.yaml @@ -0,0 +1,677 @@ +Name: master +--- +Name: node +--- +ForAPIServer: true +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-master-1-cluster +--- +ForAPIServer: true +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-master-2-cluster +--- +ForAPIServer: true +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-master-3-cluster +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-1-cluster +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-2-cluster +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-3-cluster +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: true + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-master-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master +Name: master-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master + Lifecycle: Sync + MaxSize: 3 + Members: null + Name: cluster-master + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master +--- +AvailabilityZone: zone-2 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: true + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-master-2-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master +Name: master-2-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-2-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master + Lifecycle: Sync + MaxSize: 3 + Members: null + Name: cluster-master + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master +--- +AvailabilityZone: zone-3 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: true + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-master-3-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master +Name: master-3-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-3-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master + Lifecycle: Sync + MaxSize: 3 + Members: null + Name: cluster-master + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 3 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AvailabilityZone: zone-2 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-2-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-2-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-2-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 3 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AvailabilityZone: zone-3 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-3-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-3-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-3-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 3 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-2-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-3-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-2-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-3-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: master +Lifecycle: Sync +MaxSize: 3 +Members: null +Name: cluster-master +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 3 +Members: null +Name: cluster-node +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-bastion-with-API-loadbalancer.yaml b/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-bastion-with-API-loadbalancer.yaml new file mode 100644 index 0000000000..386d35da2f --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-bastion-with-API-loadbalancer.yaml @@ -0,0 +1,827 @@ +Name: master-a +--- +Name: master-b +--- +Name: master-c +--- +Name: node-a +--- +Name: node-b +--- +Name: node-c +--- +ForAPIServer: false +ID: null +IP: null +LB: + ID: null + Lifecycle: Sync + Name: master-public-name + PortID: null + SecurityGroup: + Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnet: subnet-a.cluster + VipSubnet: null +Lifecycle: Sync +Name: fip-master-public-name +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-a-1-cluster +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-b-1-cluster +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-c-1-cluster +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master-a + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master-a +Name: master-a-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-a-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-a + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-a + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master-a +--- +AvailabilityZone: zone-2 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master-b + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master-b +Name: master-b-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-b-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-b + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-b + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master-b +--- +AvailabilityZone: zone-3 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master-c + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master-c +Name: master-c-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-c-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-c + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-c + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master-c +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-a-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node-a + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node-a +Name: node-a-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-a-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node-a + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node-a + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node-a +--- +AvailabilityZone: zone-2 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-b-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node-b + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node-b +Name: node-b-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-b-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node-b + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node-b + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node-b +--- +AvailabilityZone: zone-3 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-c-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node-c + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node-c +Name: node-c-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-c-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node-c + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node-c + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node-c +--- +ID: null +Lifecycle: Sync +Name: master-public-name +PortID: null +SecurityGroup: + Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnet: subnet-a.cluster +VipSubnet: null +--- +AllowedCIDRs: null +ID: null +Lifecycle: Sync +Name: master-public-name +Pool: + ID: null + Lifecycle: Sync + Loadbalancer: + ID: null + Lifecycle: Sync + Name: master-public-name + PortID: null + SecurityGroup: + Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnet: subnet-a.cluster + VipSubnet: null + Name: master-public-name-https +--- +ID: null +Lifecycle: Sync +Loadbalancer: + ID: null + Lifecycle: Sync + Name: master-public-name + PortID: null + SecurityGroup: + Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnet: subnet-a.cluster + VipSubnet: null +Name: master-public-name-https +--- +ID: null +InterfaceName: cluster +Lifecycle: Sync +Name: cluster-master-a +Pool: + ID: null + Lifecycle: Sync + Loadbalancer: + ID: null + Lifecycle: Sync + Name: master-public-name + PortID: null + SecurityGroup: + Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnet: subnet-a.cluster + VipSubnet: null + Name: master-public-name-https +ProtocolPort: 443 +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-a + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-a + Policies: + - anti-affinity +--- +ID: null +InterfaceName: cluster +Lifecycle: Sync +Name: cluster-master-b +Pool: + ID: null + Lifecycle: Sync + Loadbalancer: + ID: null + Lifecycle: Sync + Name: master-public-name + PortID: null + SecurityGroup: + Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnet: subnet-a.cluster + VipSubnet: null + Name: master-public-name-https +ProtocolPort: 443 +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-b + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-b + Policies: + - anti-affinity +--- +ID: null +InterfaceName: cluster +Lifecycle: Sync +Name: cluster-master-c +Pool: + ID: null + Lifecycle: Sync + Loadbalancer: + ID: null + Lifecycle: Sync + Name: master-public-name + PortID: null + SecurityGroup: + Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnet: subnet-a.cluster + VipSubnet: null + Name: master-public-name-https +ProtocolPort: 443 +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-c + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-c + Policies: + - anti-affinity +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-a-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-b-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-c-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-a-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-b-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-c-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: master-a +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master-a +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: master-b +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master-b +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: master-c +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master-c +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node-a +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node-a +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node-b +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node-b +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node-c +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node-c +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-bastion.yaml b/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-bastion.yaml new file mode 100644 index 0000000000..fd2b4b1631 --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-bastion.yaml @@ -0,0 +1,725 @@ +Name: master-a +--- +Name: master-b +--- +Name: master-c +--- +Name: node-a +--- +Name: node-b +--- +Name: node-c +--- +ForAPIServer: true +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-master-a-1-cluster +--- +ForAPIServer: true +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-master-b-1-cluster +--- +ForAPIServer: true +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-master-c-1-cluster +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-a-1-cluster +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-b-1-cluster +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-c-1-cluster +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: true + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-master-a-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master-a + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master-a +Name: master-a-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-a-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-a + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-a + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master-a +--- +AvailabilityZone: zone-2 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: true + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-master-b-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master-b + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master-b +Name: master-b-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-b-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-b + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-b + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master-b +--- +AvailabilityZone: zone-3 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: true + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-master-c-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master-c + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master-c +Name: master-c-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-c-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-c + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-c + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master-c +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-a-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node-a + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node-a +Name: node-a-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-a-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node-a + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node-a + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node-a +--- +AvailabilityZone: zone-2 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-b-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node-b + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node-b +Name: node-b-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-b-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node-b + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node-b + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node-b +--- +AvailabilityZone: zone-3 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-c-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node-c + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node-c +Name: node-c-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-c-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node-c + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node-c + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node-c +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-a-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-b-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-c-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-a-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-b-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-c-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: master-a +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master-a +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: master-b +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master-b +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: master-c +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master-c +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node-a +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node-a +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node-b +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node-b +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node-c +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node-c +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-external-router.yaml b/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-external-router.yaml new file mode 100644 index 0000000000..f545891553 --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/multizone-setup-3-masters-3-nodes-without-external-router.yaml @@ -0,0 +1,647 @@ +Name: master-a +--- +Name: master-b +--- +Name: master-c +--- +Name: node-a +--- +Name: node-b +--- +Name: node-c +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master-a + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master-a +Name: master-a-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-a-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-a + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-a + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master-a +--- +AvailabilityZone: zone-2 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master-b + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master-b +Name: master-b-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-b-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-b + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-b + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master-b +--- +AvailabilityZone: zone-3 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master-c + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master-c +Name: master-c-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-c-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master-c + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master-c + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master-c +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node-a + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node-a +Name: node-a-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-a-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node-a + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node-a + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node-a +--- +AvailabilityZone: zone-2 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node-b + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node-b +Name: node-b-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-b-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node-b + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node-b + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node-b +--- +AvailabilityZone: zone-3 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node-c + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node-c +Name: node-c-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-c-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node-c + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node-c + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node-c +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-a-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-b-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-c-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-a-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-a.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-b-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-b.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-c-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet-c.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: master-a +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master-a +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: master-b +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master-b +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: master-c +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master-c +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node-a +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node-a +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node-b +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node-b +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node-c +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node-c +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/one-master-one-node-one-bastion-2.yaml b/pkg/model/openstackmodel/tests/servergroup/one-master-one-node-one-bastion-2.yaml new file mode 100644 index 0000000000..8175488901 --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/one-master-one-node-one-bastion-2.yaml @@ -0,0 +1,316 @@ +Name: bastion +--- +Name: master +--- +Name: node +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: bastion + KopsNetwork: cluster + KopsRole: Bastion + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_bastion: "1" + kops.k8s.io_instancegroup: bastion +Name: bastion-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-bastion-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: bastion.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: utility-subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Bastion +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: bastion + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-bastion + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: bastion +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master +Name: master-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-bastion-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: bastion.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: utility-subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: bastion +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-bastion +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: master +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/one-master-one-node-one-bastion.yaml b/pkg/model/openstackmodel/tests/servergroup/one-master-one-node-one-bastion.yaml new file mode 100644 index 0000000000..7c972ad629 --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/one-master-one-node-one-bastion.yaml @@ -0,0 +1,342 @@ +Name: bastion +--- +Name: master +--- +Name: node +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-bastion-1-cluster +--- +ForAPIServer: true +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-master-1-cluster +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-bastion-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: bastion + KopsNetwork: cluster + KopsRole: Bastion + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_bastion: "1" + kops.k8s.io_instancegroup: bastion +Name: bastion-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-bastion-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: bastion.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: utility-subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Bastion +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: bastion + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-bastion + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: bastion +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: true + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-master-1-cluster +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: master + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master +Name: master-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-bastion-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: bastion.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: utility-subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: bastion +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-bastion +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: master +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/one-master-one-node-without-bastion-no-public-ip-association.yaml b/pkg/model/openstackmodel/tests/servergroup/one-master-one-node-without-bastion-no-public-ip-association.yaml new file mode 100644 index 0000000000..e2e3e1eb1b --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/one-master-one-node-without-bastion-no-public-ip-association.yaml @@ -0,0 +1,215 @@ +Name: master +--- +Name: node +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image-master +Lifecycle: null +Metadata: + KopsInstanceGroup: master + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master +Name: master-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master +--- +AvailabilityZone: zone-1 +Flavor: blc.2-4 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image-node +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: master +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/one-master-one-node.yaml b/pkg/model/openstackmodel/tests/servergroup/one-master-one-node.yaml new file mode 100644 index 0000000000..f05e822e91 --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/one-master-one-node.yaml @@ -0,0 +1,241 @@ +Name: master +--- +Name: node +--- +ForAPIServer: true +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-master-1-cluster +--- +ForAPIServer: false +ID: null +IP: null +LB: null +Lifecycle: Sync +Name: fip-node-1-cluster +--- +AvailabilityZone: zone-1 +Flavor: blc.1-2 +FloatingIP: + ForAPIServer: true + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-master-1-cluster +ForAPIServer: false +ID: null +Image: image-master +Lifecycle: null +Metadata: + KopsInstanceGroup: master + KopsNetwork: cluster + KopsRole: Master + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_master: "1" + kops.k8s.io_instancegroup: master +Name: master-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-master-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false + - Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Master +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: master + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-master + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: master +--- +AvailabilityZone: zone-1 +Flavor: blc.2-4 +FloatingIP: + ForAPIServer: false + ID: null + IP: null + LB: null + Lifecycle: Sync + Name: fip-node-1-cluster +ForAPIServer: false +ID: null +Image: image-node +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-1-cluster +Port: + AdditionalSecurityGroups: null + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: null +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-master-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: masters.cluster + RemoveExtraRules: null + RemoveGroup: false +- Description: null + ID: null + Lifecycle: null + Name: master-public-name + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +AdditionalSecurityGroups: null +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: master +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-master +Policies: +- anti-affinity +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/uses-instance-group-subnet-as-availability-zones-fallback.yaml b/pkg/model/openstackmodel/tests/servergroup/uses-instance-group-subnet-as-availability-zones-fallback.yaml new file mode 100644 index 0000000000..24d4fd594a --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/uses-instance-group-subnet-as-availability-zones-fallback.yaml @@ -0,0 +1,104 @@ +Name: node +--- +AvailabilityZone: subnet +Flavor: blc.2-4 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image-node +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-1-cluster +Port: + AdditionalSecurityGroups: + - additional-sg + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: +- additional-sg +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: +- additional-sg +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node +Policies: +- anti-affinity diff --git a/pkg/model/openstackmodel/tests/servergroup/uses-instance-group-zones-as-availability-zones.yaml b/pkg/model/openstackmodel/tests/servergroup/uses-instance-group-zones-as-availability-zones.yaml new file mode 100644 index 0000000000..8b5aa501fc --- /dev/null +++ b/pkg/model/openstackmodel/tests/servergroup/uses-instance-group-zones-as-availability-zones.yaml @@ -0,0 +1,104 @@ +Name: node +--- +AvailabilityZone: zone-a +Flavor: blc.2-4 +FloatingIP: null +ForAPIServer: false +ID: null +Image: image-node +Lifecycle: null +Metadata: + KopsInstanceGroup: node + KopsNetwork: cluster + KopsRole: Node + KubernetesCluster: cluster + cluster_generation: "0" + ig_generation: "0" + k8s: cluster + k8s.io_role_node: "1" + kops.k8s.io_instancegroup: node +Name: node-1-cluster +Port: + AdditionalSecurityGroups: + - additional-sg + ID: null + Lifecycle: Sync + Name: port-node-1-cluster + Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null + SecurityGroups: + - Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false + Subnets: + - CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null + Tag: cluster +Region: region +Role: Node +SSHKey: kubernetes.cluster-ba_d8_85_a0_5b_50_b0_01_e0_b2_b0_ae_5d_f6_7a_d1 +SecurityGroups: +- additional-sg +ServerGroup: + ClusterName: cluster + ID: null + IGName: node + Lifecycle: Sync + MaxSize: 1 + Members: null + Name: cluster-node + Policies: + - anti-affinity +UserData: + Name: "" + Resource: + task: + Name: node +--- +AdditionalSecurityGroups: +- additional-sg +ID: null +Lifecycle: Sync +Name: port-node-1-cluster +Network: + ID: null + Lifecycle: null + Name: cluster + Tag: null +SecurityGroups: +- Description: null + ID: null + Lifecycle: null + Name: nodes.cluster + RemoveExtraRules: null + RemoveGroup: false +Subnets: +- CIDR: null + DNSServers: null + ID: null + Lifecycle: null + Name: subnet.cluster + Network: null + Tag: null +Tag: cluster +--- +ClusterName: cluster +ID: null +IGName: node +Lifecycle: Sync +MaxSize: 1 +Members: null +Name: cluster-node +Policies: +- anti-affinity