From 44631afbbfa662ecd9b37c30e450f191d2178978 Mon Sep 17 00:00:00 2001 From: Theodoros Tsioutsias Date: Sun, 29 Sep 2019 16:48:54 +0000 Subject: [PATCH] ng-10: Fix cluster template conditions Removes the role heat param from all templates. Instead and only for k8s templates adds the master_role and worker_role params. The new worker_only condition should be true for all roles except for master. Finally, adds the missing is_cluster_stack param to all templates. Change-Id: Ie0799373fe492c2e0a0cad903ed6e8c93e6266b5 --- magnum/drivers/heat/k8s_template_def.py | 2 + magnum/drivers/heat/template_def.py | 2 - .../k8s_coreos_v1/templates/kubecluster.yaml | 12 +++++ .../templates/kubecluster.yaml | 49 ++++++++++++------- .../templates/kubecluster.yaml | 49 ++++++++++++------- .../templates/kubecluster.yaml | 12 +++++ .../templates/mesoscluster.yaml | 4 ++ .../templates/cluster.yaml | 4 ++ .../templates/swarmcluster.yaml | 4 ++ .../handlers/test_k8s_cluster_conductor.py | 18 ++++--- .../handlers/test_mesos_cluster_conductor.py | 5 -- .../handlers/test_swarm_cluster_conductor.py | 6 --- 12 files changed, 110 insertions(+), 57 deletions(-) diff --git a/magnum/drivers/heat/k8s_template_def.py b/magnum/drivers/heat/k8s_template_def.py index 44c06c8744..e58edfa94a 100644 --- a/magnum/drivers/heat/k8s_template_def.py +++ b/magnum/drivers/heat/k8s_template_def.py @@ -126,11 +126,13 @@ class K8sTemplateDefinition(template_def.BaseTemplateDefinition): master_params.update({ 'master_flavor': 'flavor_id', 'master_image': 'image_id', + 'master_role': 'role', }) worker_params.update({ 'number_of_minions': 'node_count', 'minion_flavor': 'flavor_id', 'minion_image': 'image_id', + 'worker_role': 'role', }) return super( K8sTemplateDefinition, self).get_nodegroup_param_maps( diff --git a/magnum/drivers/heat/template_def.py b/magnum/drivers/heat/template_def.py index c9954aaede..65e58a1b46 100755 --- a/magnum/drivers/heat/template_def.py +++ b/magnum/drivers/heat/template_def.py @@ -423,9 +423,7 @@ class BaseTemplateDefinition(TemplateDefinition): worker_params = worker_params or dict() master_params.update({ 'number_of_masters': 'node_count', - 'role': 'role' }) - worker_params.update({'role': 'role'}) return master_params, worker_params def _handle_nodegroup_param_map(self, nodegroup, param_map): diff --git a/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml index 834b304079..894907f6b9 100644 --- a/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_coreos_v1/templates/kubecluster.yaml @@ -7,6 +7,18 @@ description: > parameters: + is_cluster_stack: + type: boolean + default: false + + master_role: + type: string + default: "" + + worker_role: + type: string + default: "" + octavia_enabled: type: string default: true diff --git a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml index e5c086ce62..e291b07b3a 100644 --- a/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_atomic_v1/templates/kubecluster.yaml @@ -6,29 +6,36 @@ description: > defaults to 1). conditions: - master_only: - or: - - equals: - - get_param: role - - "master" - - equals: - - get_param: is_cluster_stack - - true - - worker_only: - or: - - equals: - - get_param: role - - "worker" - - equals: - - get_param: is_cluster_stack - - true - create_cluster_resources: equals: - get_param: is_cluster_stack - true + is_master: + and: + - equals: + - get_param: master_role + - "master" + - equals: + - get_param: worker_role + - "" + + is_worker: + not: + equals: + - get_param: worker_role + - "" + + master_only: + or: + - create_cluster_resources + - is_master + + worker_only: + or: + - create_cluster_resources + - is_worker + parameters: # needs to become a list if we want to join master nodes? @@ -40,7 +47,11 @@ parameters: type: boolean default: false - role: + master_role: + type: string + default: "" + + worker_role: type: string default: "" diff --git a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml index e3d7209e1b..e6a7902667 100644 --- a/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_coreos_v1/templates/kubecluster.yaml @@ -6,29 +6,36 @@ description: > defaults to 1). conditions: - master_only: - or: - - equals: - - get_param: role - - "master" - - equals: - - get_param: is_cluster_stack - - true - - worker_only: - or: - - equals: - - get_param: role - - "worker" - - equals: - - get_param: is_cluster_stack - - true - create_cluster_resources: equals: - get_param: is_cluster_stack - true + is_master: + and: + - equals: + - get_param: master_role + - "master" + - equals: + - get_param: worker_role + - "" + + is_worker: + not: + equals: + - get_param: worker_role + - "" + + master_only: + or: + - create_cluster_resources + - is_master + + worker_only: + or: + - create_cluster_resources + - is_worker + parameters: # needs to become a list if we want to join master nodes? @@ -40,7 +47,11 @@ parameters: type: boolean default: false - role: + master_role: + type: string + default: "" + + worker_role: type: string default: "" diff --git a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml index 84acdf8cea..f5787b6bf1 100644 --- a/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml +++ b/magnum/drivers/k8s_fedora_ironic_v1/templates/kubecluster.yaml @@ -7,6 +7,18 @@ description: > parameters: + is_cluster_stack: + type: boolean + default: false + + master_role: + type: string + default: "" + + worker_role: + type: string + default: "" + ssh_key_name: type: string description: name of ssh key to be provisioned on our server diff --git a/magnum/drivers/mesos_ubuntu_v1/templates/mesoscluster.yaml b/magnum/drivers/mesos_ubuntu_v1/templates/mesoscluster.yaml index 0a6ee8e90d..4c42c53a45 100644 --- a/magnum/drivers/mesos_ubuntu_v1/templates/mesoscluster.yaml +++ b/magnum/drivers/mesos_ubuntu_v1/templates/mesoscluster.yaml @@ -8,6 +8,10 @@ description: > parameters: + is_cluster_stack: + type: boolean + default: false + ssh_key_name: type: string description: name of ssh key to be provisioned on our server diff --git a/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml b/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml index 1db66e3bef..fabb83e15c 100644 --- a/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v1/templates/cluster.yaml @@ -13,6 +13,10 @@ parameters: # # REQUIRED PARAMETERS # + is_cluster_stack: + type: boolean + default: false + ssh_key_name: type: string description: name of ssh key to be provisioned on our server diff --git a/magnum/drivers/swarm_fedora_atomic_v2/templates/swarmcluster.yaml b/magnum/drivers/swarm_fedora_atomic_v2/templates/swarmcluster.yaml index 82394cd870..a4fbd017f0 100644 --- a/magnum/drivers/swarm_fedora_atomic_v2/templates/swarmcluster.yaml +++ b/magnum/drivers/swarm_fedora_atomic_v2/templates/swarmcluster.yaml @@ -13,6 +13,10 @@ parameters: # # REQUIRED PARAMETERS # + is_cluster_stack: + type: boolean + default: false + ssh_key_name: type: string description: name of ssh key to be provisioned on our server diff --git a/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py b/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py index a79cf22df0..98c31021c1 100644 --- a/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py +++ b/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py @@ -369,7 +369,8 @@ class TestClusterConductorWithK8s(base.TestCase): 'boot_volume_size': '60', 'boot_volume_type': 'lvmdriver-1', 'etcd_volume_type': 'lvmdriver-1', - 'role': 'master' + 'master_role': 'master', + 'worker_role': 'worker', } if missing_attr is not None: @@ -517,7 +518,8 @@ class TestClusterConductorWithK8s(base.TestCase): 'boot_volume_size': '60', 'boot_volume_type': 'lvmdriver-1', 'etcd_volume_type': 'lvmdriver-1', - 'role': 'master', + 'master_role': 'master', + 'worker_role': 'worker', } self.assertEqual(expected, definition) @@ -647,7 +649,8 @@ class TestClusterConductorWithK8s(base.TestCase): 'boot_volume_type': 'lvmdriver-1', 'etcd_volume_type': 'lvmdriver-1', 'keystone_auth_default_policy': self.keystone_auth_default_policy, - 'role': 'master', + 'master_role': 'master', + 'worker_role': 'worker', } self.assertEqual(expected, definition) self.assertEqual( @@ -756,7 +759,8 @@ class TestClusterConductorWithK8s(base.TestCase): 'kubeproxy_options': '--kubeproxy', 'octavia_enabled': False, 'portal_network_cidr': '10.254.0.0/16', - 'role': 'master', + 'master_role': 'master', + 'worker_role': 'worker', } self.assertEqual(expected, definition) self.assertEqual( @@ -863,7 +867,8 @@ class TestClusterConductorWithK8s(base.TestCase): 'kubeproxy_options': '--kubeproxy', 'octavia_enabled': False, 'portal_network_cidr': '10.254.0.0/16', - 'role': 'master', + 'master_role': 'master', + 'worker_role': 'worker', } self.assertEqual(expected, definition) self.assertEqual( @@ -1093,7 +1098,8 @@ class TestClusterConductorWithK8s(base.TestCase): 'boot_volume_size': '60', 'boot_volume_type': 'lvmdriver-1', 'etcd_volume_type': 'lvmdriver-1', - 'role': 'master' + 'master_role': 'master', + 'worker_role': 'worker', } self.assertEqual(expected, definition) self.assertEqual( diff --git a/magnum/tests/unit/conductor/handlers/test_mesos_cluster_conductor.py b/magnum/tests/unit/conductor/handlers/test_mesos_cluster_conductor.py index 77e46e764c..5c8b3e9d82 100644 --- a/magnum/tests/unit/conductor/handlers/test_mesos_cluster_conductor.py +++ b/magnum/tests/unit/conductor/handlers/test_mesos_cluster_conductor.py @@ -188,7 +188,6 @@ class TestClusterConductorWithMesos(base.TestCase): 'verify_ca': True, 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': 'master' } self.assertEqual(expected, definition) self.assertEqual( @@ -255,7 +254,6 @@ class TestClusterConductorWithMesos(base.TestCase): 'slave_flavor': 'flavor_id', 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': 'master' } self.assertEqual(expected, definition) self.assertEqual( @@ -327,7 +325,6 @@ class TestClusterConductorWithMesos(base.TestCase): 'verify_ca': True, 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': 'master' } self.assertEqual(expected, definition) self.assertEqual( @@ -403,7 +400,6 @@ class TestClusterConductorWithMesos(base.TestCase): 'verify_ca': True, 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': 'master' } self.assertEqual(expected, definition) self.assertEqual( @@ -477,7 +473,6 @@ class TestClusterConductorWithMesos(base.TestCase): 'verify_ca': True, 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': 'master' } self.assertEqual(expected, definition) self.assertEqual( diff --git a/magnum/tests/unit/conductor/handlers/test_swarm_cluster_conductor.py b/magnum/tests/unit/conductor/handlers/test_swarm_cluster_conductor.py index 241a79145a..44a1aacac0 100644 --- a/magnum/tests/unit/conductor/handlers/test_swarm_cluster_conductor.py +++ b/magnum/tests/unit/conductor/handlers/test_swarm_cluster_conductor.py @@ -213,7 +213,6 @@ class TestClusterConductorWithSwarm(base.TestCase): 'verify_ca': True, 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': u'master', } self.assertEqual(expected, definition) self.assertEqual( @@ -300,7 +299,6 @@ class TestClusterConductorWithSwarm(base.TestCase): 'verify_ca': True, 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': u'master', } self.assertEqual(expected, definition) self.assertEqual( @@ -382,7 +380,6 @@ class TestClusterConductorWithSwarm(base.TestCase): 'node_flavor': 'flavor_id', 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': 'master' } self.assertEqual(expected, definition) self.assertEqual( @@ -467,7 +464,6 @@ class TestClusterConductorWithSwarm(base.TestCase): 'verify_ca': True, 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': u'master', } self.assertEqual(expected, definition) self.assertEqual( @@ -556,7 +552,6 @@ class TestClusterConductorWithSwarm(base.TestCase): 'verify_ca': True, 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': u'master', } self.assertEqual(expected, definition) self.assertEqual( @@ -643,7 +638,6 @@ class TestClusterConductorWithSwarm(base.TestCase): 'verify_ca': True, 'openstack_ca': '', 'nodes_affinity_policy': 'soft-anti-affinity', - 'role': u'master', } self.assertEqual(expected, definition) self.assertEqual(