From 53f6de609d99ec82f96640259ad345fb5262292d Mon Sep 17 00:00:00 2001 From: Feilong Wang Date: Thu, 7 May 2020 10:31:19 +1200 Subject: [PATCH] Add master_lb_enabled to cluster Adding the master_lb_enabled option when creating a cluster, which will benefit both the cloud provider side and the end user side. For cloud prodiver, they don't have to maintain separate cluster templates with or w/o master_lb_enabled enabled. For end user, they can easily use one single template to create different clusters with different configs. Task: 39680 Story: 2007634 Change-Id: I0b586f05168ece84fd340ef7493a56688191053d (cherry picked from commit 946c1d67c73a1b325dadd27018c38555acfee52f) --- .../drivers/heat/dcos_centos_template_def.py | 6 +- .../drivers/k8s_opensuse_v1/template_def.py | 6 +- doc/source/user/index.rst | 4 ++ magnum/api/controllers/v1/bay.py | 5 ++ magnum/api/controllers/v1/cluster.py | 12 +++- ...2334ee_add_master_lb_enabled_to_cluster.py | 41 ++++++++++++ magnum/db/sqlalchemy/models.py | 1 + magnum/drivers/common/k8s_monitor.py | 2 +- .../drivers/heat/k8s_coreos_template_def.py | 4 +- .../drivers/heat/k8s_fedora_template_def.py | 4 +- .../drivers/heat/swarm_fedora_template_def.py | 2 +- .../drivers/heat/swarm_mode_template_def.py | 4 +- magnum/drivers/heat/template_def.py | 8 +-- .../drivers/mesos_ubuntu_v1/template_def.py | 2 +- magnum/objects/cluster.py | 4 +- .../handlers/test_k8s_cluster_conductor.py | 1 + .../handlers/test_mesos_cluster_conductor.py | 4 ++ .../handlers/test_swarm_cluster_conductor.py | 4 ++ magnum/tests/unit/conductor/test_monitors.py | 2 +- magnum/tests/unit/db/utils.py | 1 + .../unit/drivers/test_template_definition.py | 62 ++++--------------- magnum/tests/unit/objects/test_objects.py | 2 +- ...b_enabled-to-cluster-c773fac9086b2531.yaml | 5 ++ 23 files changed, 113 insertions(+), 73 deletions(-) create mode 100644 magnum/db/sqlalchemy/alembic/versions/95096e2334ee_add_master_lb_enabled_to_cluster.py create mode 100644 releasenotes/notes/add-master_lb_enabled-to-cluster-c773fac9086b2531.yaml diff --git a/contrib/drivers/heat/dcos_centos_template_def.py b/contrib/drivers/heat/dcos_centos_template_def.py index 0c203d0525..ff8599152f 100644 --- a/contrib/drivers/heat/dcos_centos_template_def.py +++ b/contrib/drivers/heat/dcos_centos_template_def.py @@ -124,7 +124,7 @@ class DcosCentosTemplateDefinition(template_def.BaseTemplateDefinition): # By default, master_discovery is set to 'static' # If --master-lb-enabled is specified, # master_discovery will be set to 'master_http_loadbalancer' - if cluster_template.master_lb_enabled: + if cluster.master_lb_enabled: extra_params['master_discovery'] = 'master_http_loadbalancer' if 'true' == extra_params['dcos_overlay_enable']: @@ -157,7 +157,7 @@ class DcosCentosTemplateDefinition(template_def.BaseTemplateDefinition): env_files = [] template_def.add_priv_net_env_file(env_files, cluster) - template_def.add_lb_env_file(env_files, cluster_template) - template_def.add_fip_env_file(env_files, cluster_template, cluster) + template_def.add_lb_env_file(env_files, cluster) + template_def.add_fip_env_file(env_files, cluster) return env_files diff --git a/contrib/drivers/k8s_opensuse_v1/template_def.py b/contrib/drivers/k8s_opensuse_v1/template_def.py index 54e529606f..b0bf167239 100644 --- a/contrib/drivers/k8s_opensuse_v1/template_def.py +++ b/contrib/drivers/k8s_opensuse_v1/template_def.py @@ -44,15 +44,15 @@ class JeOSK8sTemplateDefinition(k8s_template_def.K8sTemplateDefinition): extra_params=extra_params, **kwargs) - def get_env_files(self, cluster_template, cluster): + def get_env_files(self, cluster): env_files = [] - if cluster_template.master_lb_enabled: + if cluster.master_lb_enabled: env_files.append( template_def.COMMON_ENV_PATH + 'with_master_lb.yaml') else: env_files.append( template_def.COMMON_ENV_PATH + 'no_master_lb.yaml') - if cluster_template.floating_ip_enabled: + if cluster.floating_ip_enabled: env_files.append( template_def.COMMON_ENV_PATH + 'enable_floating_ip.yaml') else: diff --git a/doc/source/user/index.rst b/doc/source/user/index.rst index be5f762628..947c89cc19 100644 --- a/doc/source/user/index.rst +++ b/doc/source/user/index.rst @@ -651,6 +651,10 @@ follows: reached during cluster-create, the operation will be aborted and the cluster status will be set to 'CREATE_FAILED'. +--master-lb-enabled + Indicates whether created clusters should have a load balancer for + master nodes or not. + List ++++ diff --git a/magnum/api/controllers/v1/bay.py b/magnum/api/controllers/v1/bay.py index dad79d20b2..5f11a5a91f 100755 --- a/magnum/api/controllers/v1/bay.py +++ b/magnum/api/controllers/v1/bay.py @@ -151,6 +151,11 @@ class Bay(base.APIBase): floating_ip_enabled = wsme.wsattr(types.boolean, default=True) """Indicates whether created clusters should have a floating ip or not.""" + master_lb_enabled = wsme.wsattr(types.boolean) + """Indicates whether created clusters should have a load balancer for master + nodes or not. + """ + def __init__(self, **kwargs): super(Bay, self).__init__() diff --git a/magnum/api/controllers/v1/cluster.py b/magnum/api/controllers/v1/cluster.py index a817057f40..e9663d54d0 100755 --- a/magnum/api/controllers/v1/cluster.py +++ b/magnum/api/controllers/v1/cluster.py @@ -200,6 +200,11 @@ class Cluster(base.APIBase): wtypes.text, six.integer_types, bool, float)) """Contains labels that exist in the parent but were not inherited.""" + master_lb_enabled = wsme.wsattr(types.boolean) + """Indicates whether created clusters should have a load balancer for master + nodes or not. + """ + def __init__(self, **kwargs): super(Cluster, self).__init__() self.fields = [] @@ -273,7 +278,8 @@ class Cluster(base.APIBase): container_version=None, fixed_network=None, fixed_subnet=None, - floating_ip_enabled=True) + floating_ip_enabled=True, + master_lb_enabled=True) return cls._convert_with_links(sample, 'http://localhost:9511', expand) @@ -512,6 +518,10 @@ class ClustersController(base.Controller): if cluster.floating_ip_enabled == wtypes.Unset: cluster.floating_ip_enabled = cluster_template.floating_ip_enabled + # If master_lb_enabled is not present, use cluster_template value + if cluster.master_lb_enabled == wtypes.Unset: + cluster.master_lb_enabled = cluster_template.master_lb_enabled + attributes = ["docker_volume_size", "master_flavor_id", "flavor_id", "fixed_network", "fixed_subnet"] for attr in attributes: diff --git a/magnum/db/sqlalchemy/alembic/versions/95096e2334ee_add_master_lb_enabled_to_cluster.py b/magnum/db/sqlalchemy/alembic/versions/95096e2334ee_add_master_lb_enabled_to_cluster.py new file mode 100644 index 0000000000..a43a24a643 --- /dev/null +++ b/magnum/db/sqlalchemy/alembic/versions/95096e2334ee_add_master_lb_enabled_to_cluster.py @@ -0,0 +1,41 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from alembic import op +import sqlalchemy as sa + +"""add-master_lb_enabled-to-cluster + +Revision ID: 95096e2334ee +Revises: c04e925e65c2 +Create Date: 2020-06-26 14:33:05.529200 + +""" + +# revision identifiers, used by Alembic. +revision = '95096e2334ee' +down_revision = 'c04e925e65c2' + + +def upgrade(): + op.add_column('cluster', + sa.Column('master_lb_enabled', sa.Boolean(), default=False)) + # Populate existing cluster with the cluster template_id + connection = op.get_bind() + connection.execute( + "UPDATE cluster " + "INNER JOIN cluster_template " + "ON cluster_template.uuid=cluster.cluster_template_id " + "SET cluster.master_lb_enabled=cluster_template.master_lb_enabled " + "WHERE cluster_template.uuid=cluster.cluster_template_id and " + "cluster.master_lb_enabled is NULL" + ) diff --git a/magnum/db/sqlalchemy/models.py b/magnum/db/sqlalchemy/models.py index 286a8bed2e..507fc2dfdb 100644 --- a/magnum/db/sqlalchemy/models.py +++ b/magnum/db/sqlalchemy/models.py @@ -148,6 +148,7 @@ class Cluster(Base): fixed_network = Column(String(255, mysql_ndb_type=TINYTEXT)) fixed_subnet = Column(String(255, mysql_ndb_type=TINYTEXT)) floating_ip_enabled = Column(Boolean, default=True) + master_lb_enabled = Column(Boolean, default=False) class ClusterTemplate(Base): diff --git a/magnum/drivers/common/k8s_monitor.py b/magnum/drivers/common/k8s_monitor.py index 615d94db3d..c57ab0a5dd 100644 --- a/magnum/drivers/common/k8s_monitor.py +++ b/magnum/drivers/common/k8s_monitor.py @@ -70,7 +70,7 @@ class K8sMonitor(monitors.MonitorBase): return (auto_healing_enabled and controller == "magnum-auto-healer") def _is_cluster_accessible(self): - if self.cluster.cluster_template.master_lb_enabled: + if self.cluster.master_lb_enabled: lb_fip = self.cluster.labels.get("master_lb_floating_ip_enabled", self.cluster.floating_ip_enabled) return strutils.bool_from_string(lb_fip) diff --git a/magnum/drivers/heat/k8s_coreos_template_def.py b/magnum/drivers/heat/k8s_coreos_template_def.py index 3728b36032..855a768f44 100644 --- a/magnum/drivers/heat/k8s_coreos_template_def.py +++ b/magnum/drivers/heat/k8s_coreos_template_def.py @@ -97,7 +97,7 @@ class CoreOSK8sTemplateDefinition(k8s_template_def.K8sTemplateDefinition): template_def.add_etcd_volume_env_file(env_files, cluster) template_def.add_volume_env_file(env_files, cluster, nodegroup=nodegroup) - template_def.add_lb_env_file(env_files, cluster_template) - template_def.add_fip_env_file(env_files, cluster_template, cluster) + template_def.add_lb_env_file(env_files, cluster) + template_def.add_fip_env_file(env_files, cluster) return env_files diff --git a/magnum/drivers/heat/k8s_fedora_template_def.py b/magnum/drivers/heat/k8s_fedora_template_def.py index ad5a47fe43..94a5c6aa4a 100644 --- a/magnum/drivers/heat/k8s_fedora_template_def.py +++ b/magnum/drivers/heat/k8s_fedora_template_def.py @@ -233,7 +233,7 @@ class K8sFedoraTemplateDefinition(k8s_template_def.K8sTemplateDefinition): template_def.add_etcd_volume_env_file(env_files, cluster) template_def.add_volume_env_file(env_files, cluster, nodegroup=nodegroup) - template_def.add_lb_env_file(env_files, cluster_template) - template_def.add_fip_env_file(env_files, cluster_template, cluster) + template_def.add_lb_env_file(env_files, cluster) + template_def.add_fip_env_file(env_files, cluster) return env_files diff --git a/magnum/drivers/heat/swarm_fedora_template_def.py b/magnum/drivers/heat/swarm_fedora_template_def.py index 80bac4a204..6cfb80da34 100644 --- a/magnum/drivers/heat/swarm_fedora_template_def.py +++ b/magnum/drivers/heat/swarm_fedora_template_def.py @@ -163,7 +163,7 @@ class SwarmFedoraTemplateDefinition(template_def.BaseTemplateDefinition): cluster) template_def.add_volume_env_file(env_files, cluster, nodegroup=nodegroup) - template_def.add_lb_env_file(env_files, cluster_template) + template_def.add_lb_env_file(env_files, cluster) return env_files diff --git a/magnum/drivers/heat/swarm_mode_template_def.py b/magnum/drivers/heat/swarm_mode_template_def.py index 618ee8723a..e97849df9f 100644 --- a/magnum/drivers/heat/swarm_mode_template_def.py +++ b/magnum/drivers/heat/swarm_mode_template_def.py @@ -189,8 +189,8 @@ class SwarmModeTemplateDefinition(template_def.BaseTemplateDefinition): cluster) template_def.add_volume_env_file(env_files, cluster, nodegroup=nodegroup) - template_def.add_lb_env_file(env_files, cluster_template) - template_def.add_fip_env_file(env_files, cluster_template, cluster) + template_def.add_lb_env_file(env_files, cluster) + template_def.add_fip_env_file(env_files, cluster) return env_files diff --git a/magnum/drivers/heat/template_def.py b/magnum/drivers/heat/template_def.py index 32993acc04..d4111bd17f 100755 --- a/magnum/drivers/heat/template_def.py +++ b/magnum/drivers/heat/template_def.py @@ -526,8 +526,8 @@ class BaseTemplateDefinition(TemplateDefinition): return dict() -def add_lb_env_file(env_files, cluster_template): - if cluster_template.master_lb_enabled: +def add_lb_env_file(env_files, cluster): + if cluster.master_lb_enabled: if keystone.is_octavia_enabled(): env_files.append(COMMON_ENV_PATH + 'with_master_lb_octavia.yaml') else: @@ -554,7 +554,7 @@ def add_etcd_volume_env_file(env_files, cluster): env_files.append(COMMON_ENV_PATH + 'with_etcd_volume.yaml') -def add_fip_env_file(env_files, cluster_template, cluster): +def add_fip_env_file(env_files, cluster): lb_fip_enabled = cluster.labels.get("master_lb_floating_ip_enabled") master_lb_fip_enabled = (strutils.bool_from_string(lb_fip_enabled) or cluster.floating_ip_enabled) @@ -564,7 +564,7 @@ def add_fip_env_file(env_files, cluster_template, cluster): else: env_files.append(COMMON_ENV_PATH + 'disable_floating_ip.yaml') - if cluster_template.master_lb_enabled and master_lb_fip_enabled: + if cluster.master_lb_enabled and master_lb_fip_enabled: env_files.append(COMMON_ENV_PATH + 'enable_lb_floating_ip.yaml') else: env_files.append(COMMON_ENV_PATH + 'disable_lb_floating_ip.yaml') diff --git a/magnum/drivers/mesos_ubuntu_v1/template_def.py b/magnum/drivers/mesos_ubuntu_v1/template_def.py index bbf092cf35..28702157c6 100644 --- a/magnum/drivers/mesos_ubuntu_v1/template_def.py +++ b/magnum/drivers/mesos_ubuntu_v1/template_def.py @@ -128,7 +128,7 @@ class UbuntuMesosTemplateDefinition(template_def.BaseTemplateDefinition): template_def.add_priv_net_env_file(env_files, cluster_template, cluster) - template_def.add_lb_env_file(env_files, cluster_template) + template_def.add_lb_env_file(env_files, cluster) return env_files diff --git a/magnum/objects/cluster.py b/magnum/objects/cluster.py index 9c3fcc11ec..f8c58f2163 100644 --- a/magnum/objects/cluster.py +++ b/magnum/objects/cluster.py @@ -52,8 +52,9 @@ class Cluster(base.MagnumPersistentObject, base.MagnumObject, # Version 1.20: Fields node_count, master_count, node_addresses, # master_addresses are now properties. # Version 1.21 Added fixed_network, fixed_subnet, floating_ip_enabled + # Version 1.22 Added master_lb_enabled - VERSION = '1.21' + VERSION = '1.22' dbapi = dbapi.get_instance() @@ -89,6 +90,7 @@ class Cluster(base.MagnumPersistentObject, base.MagnumObject, 'fixed_network': fields.StringField(nullable=True), 'fixed_subnet': fields.StringField(nullable=True), 'floating_ip_enabled': fields.BooleanField(default=True), + 'master_lb_enabled': fields.BooleanField(default=False), } @staticmethod 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 eee7752de7..79b189348e 100644 --- a/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py +++ b/magnum/tests/unit/conductor/handlers/test_k8s_cluster_conductor.py @@ -122,6 +122,7 @@ class TestClusterConductorWithK8s(base.TestCase): 'fixed_network': 'fixed_network', 'fixed_subnet': 'c2a6c8b0-a3c2-42a3-b3f4-01400a30896f', 'floating_ip_enabled': False, + 'master_lb_enabled': False, } self.worker_ng_dict = { 'uuid': '5d12f6fd-a196-4bf0-ae4c-1f639a523a53', 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 5c8b3e9d82..26cdfc17e7 100644 --- a/magnum/tests/unit/conductor/handlers/test_mesos_cluster_conductor.py +++ b/magnum/tests/unit/conductor/handlers/test_mesos_cluster_conductor.py @@ -75,6 +75,7 @@ class TestClusterConductorWithMesos(base.TestCase): 'fixed_network': '', 'fixed_subnet': '', 'floating_ip_enabled': False, + 'master_lb_enabled': False, } self.worker_ng_dict = { 'uuid': '5d12f6fd-a196-4bf0-ae4c-1f639a523a53', @@ -276,6 +277,7 @@ class TestClusterConductorWithMesos(base.TestCase): self.context, **self.cluster_template_dict) mock_objects_cluster_template_get_by_uuid.return_value = \ cluster_template + self.cluster_dict["master_lb_enabled"] = True cluster = objects.Cluster(self.context, **self.cluster_dict) worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict) master_ng = objects.NodeGroup(self.context, **self.master_ng_dict) @@ -347,6 +349,7 @@ class TestClusterConductorWithMesos(base.TestCase): self.context, **self.cluster_template_dict) mock_objects_cluster_template_get_by_uuid.return_value = \ cluster_template + self.cluster_dict["master_lb_enabled"] = True cluster = objects.Cluster(self.context, **self.cluster_dict) worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict) master_ng = objects.NodeGroup(self.context, **self.master_ng_dict) @@ -424,6 +427,7 @@ class TestClusterConductorWithMesos(base.TestCase): self.context, **self.cluster_template_dict) mock_objects_cluster_template_get_by_uuid.return_value = \ cluster_template + self.cluster_dict["master_lb_enabled"] = True cluster = objects.Cluster(self.context, **self.cluster_dict) worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict) master_ng = objects.NodeGroup(self.context, **self.master_ng_dict) 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 44a1aacac0..d7c2c1f45d 100644 --- a/magnum/tests/unit/conductor/handlers/test_swarm_cluster_conductor.py +++ b/magnum/tests/unit/conductor/handlers/test_swarm_cluster_conductor.py @@ -85,6 +85,7 @@ class TestClusterConductorWithSwarm(base.TestCase): 'fixed_network': '', 'fixed_subnet': '', 'floating_ip_enabled': False, + 'master_lb_enabled': False, } self.worker_ng_dict = { 'uuid': '5d12f6fd-a196-4bf0-ae4c-1f639a523a53', @@ -411,6 +412,7 @@ class TestClusterConductorWithSwarm(base.TestCase): mock_resp.text = expected_result mock_get.return_value = mock_resp mock_driver.return_value = swarm_dr.Driver() + self.cluster_dict["master_lb_enabled"] = True cluster = objects.Cluster(self.context, **self.cluster_dict) worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict) master_ng = objects.NodeGroup(self.context, **self.master_ng_dict) @@ -495,6 +497,7 @@ class TestClusterConductorWithSwarm(base.TestCase): mock_resp.text = expected_result mock_get.return_value = mock_resp mock_driver.return_value = swarm_dr.Driver() + self.cluster_dict["master_lb_enabled"] = True cluster = objects.Cluster(self.context, **self.cluster_dict) worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict) master_ng = objects.NodeGroup(self.context, **self.master_ng_dict) @@ -585,6 +588,7 @@ class TestClusterConductorWithSwarm(base.TestCase): mock_resp.text = expected_result mock_get.return_value = mock_resp mock_driver.return_value = swarm_dr.Driver() + self.cluster_dict["master_lb_enabled"] = True cluster = objects.Cluster(self.context, **self.cluster_dict) worker_ng = objects.NodeGroup(self.context, **self.worker_ng_dict) master_ng = objects.NodeGroup(self.context, **self.master_ng_dict) diff --git a/magnum/tests/unit/conductor/test_monitors.py b/magnum/tests/unit/conductor/test_monitors.py index f1a0ca8126..bece2ca71c 100644 --- a/magnum/tests/unit/conductor/test_monitors.py +++ b/magnum/tests/unit/conductor/test_monitors.py @@ -536,7 +536,7 @@ class MonitorsTestCase(base.TestCase): mock_nodes.items = [mock_node] cluster = self.k8s_monitor.cluster cluster.floating_ip_enabled = True - cluster.cluster_template.master_lb_enabled = True + cluster.master_lb_enabled = True cluster.labels['master_lb_floating_ip_enabled'] = False self.k8s_monitor.poll_health_status() diff --git a/magnum/tests/unit/db/utils.py b/magnum/tests/unit/db/utils.py index fc8cd3fa59..aab0f6afe9 100644 --- a/magnum/tests/unit/db/utils.py +++ b/magnum/tests/unit/db/utils.py @@ -101,6 +101,7 @@ def get_test_cluster(**kw): 'fixed_network': kw.get('fixed_network', None), 'fixed_subnet': kw.get('fixed_subnet', None), 'floating_ip_enabled': kw.get('floating_ip_enabled', True), + 'master_lb_enabled': kw.get('master_lb_enabled', False), } if kw.pop('for_api_use', False): diff --git a/magnum/tests/unit/drivers/test_template_definition.py b/magnum/tests/unit/drivers/test_template_definition.py index 0c5d68af1b..197b6d9ade 100644 --- a/magnum/tests/unit/drivers/test_template_definition.py +++ b/magnum/tests/unit/drivers/test_template_definition.py @@ -184,13 +184,9 @@ class TemplateDefinitionTestCase(base.TestCase): definition.output_mappings) def test_add_fip_env_lb_disabled_with_fp(self): - mock_cluster_template = mock.MagicMock(floating_ip_enabled=True, - master_lb_enabled=False, - labels={}) - mock_cluster = mock.MagicMock(labels={}) + mock_cluster = mock.MagicMock(master_lb_enabled=False, labels={}) env_files = [] - cmn_tdef.add_fip_env_file(env_files, mock_cluster_template, - mock_cluster) + cmn_tdef.add_fip_env_file(env_files, mock_cluster) self.assertEqual( [ cmn_tdef.COMMON_ENV_PATH + 'enable_floating_ip.yaml', @@ -200,13 +196,11 @@ class TemplateDefinitionTestCase(base.TestCase): ) def test_add_fip_env_lb_enabled_with_fp(self): - mock_cluster_template = mock.MagicMock(floating_ip_enabled=True, - master_lb_enabled=True, - labels={}) - mock_cluster = mock.MagicMock(floating_ip_enabled=True, labels={}) + mock_cluster = mock.MagicMock(floating_ip_enabled=True, + master_lb_enabled=True, + labels={}) env_files = [] - cmn_tdef.add_fip_env_file(env_files, mock_cluster_template, - mock_cluster) + cmn_tdef.add_fip_env_file(env_files, mock_cluster) self.assertEqual( [ cmn_tdef.COMMON_ENV_PATH + 'enable_floating_ip.yaml', @@ -216,13 +210,9 @@ class TemplateDefinitionTestCase(base.TestCase): ) def test_add_fip_env_lb_disabled_without_fp(self): - mock_cluster_template = mock.MagicMock(floating_ip_enabled=False, - master_lb_enabled=False, - labels={}) mock_cluster = mock.MagicMock(labels={}, floating_ip_enabled=False) env_files = [] - cmn_tdef.add_fip_env_file(env_files, mock_cluster_template, - mock_cluster) + cmn_tdef.add_fip_env_file(env_files, mock_cluster) self.assertEqual( [ cmn_tdef.COMMON_ENV_PATH + 'disable_floating_ip.yaml', @@ -232,13 +222,9 @@ class TemplateDefinitionTestCase(base.TestCase): ) def test_add_fip_env_lb_enabled_without_fp(self): - mock_cluster_template = mock.MagicMock(floating_ip_enabled=False, - master_lb_enabled=True, - labels={}) mock_cluster = mock.MagicMock(labels={}, floating_ip_enabled=False,) env_files = [] - cmn_tdef.add_fip_env_file(env_files, mock_cluster_template, - mock_cluster) + cmn_tdef.add_fip_env_file(env_files, mock_cluster) self.assertEqual( [ cmn_tdef.COMMON_ENV_PATH + 'disable_floating_ip.yaml', @@ -248,17 +234,11 @@ class TemplateDefinitionTestCase(base.TestCase): ) def test_add_fip_env_lb_fip_enabled_without_fp(self): - mock_cluster_template = mock.MagicMock( - floating_ip_enabled=False, - master_lb_enabled=True, - labels={"master_lb_floating_ip_enabled": "true"} - ) mock_cluster = mock.MagicMock( labels={"master_lb_floating_ip_enabled": "true"}, floating_ip_enabled=False,) env_files = [] - cmn_tdef.add_fip_env_file(env_files, mock_cluster_template, - mock_cluster) + cmn_tdef.add_fip_env_file(env_files, mock_cluster) self.assertEqual( [ cmn_tdef.COMMON_ENV_PATH + 'disable_floating_ip.yaml', @@ -268,18 +248,12 @@ class TemplateDefinitionTestCase(base.TestCase): ) def test_add_fip_env_lb_enable_lbfip_disable(self): - mock_cluster_template = mock.MagicMock( - floating_ip_enabled=False, - master_lb_enabled=True, - labels={"master_lb_floating_ip_enabled": "false"} - ) mock_cluster = mock.MagicMock( labels={"master_lb_floating_ip_enabled": "false"}, floating_ip_enabled=False,) env_files = [] - cmn_tdef.add_fip_env_file(env_files, mock_cluster_template, - mock_cluster) + cmn_tdef.add_fip_env_file(env_files, mock_cluster) self.assertEqual( [ @@ -290,18 +264,12 @@ class TemplateDefinitionTestCase(base.TestCase): ) def test_add_fip_env_lb_enable_lbfip_template_disable_cluster_enable(self): - mock_cluster_template = mock.MagicMock( - floating_ip_enabled=False, - master_lb_enabled=True, - labels={} - ) mock_cluster = mock.MagicMock( floating_ip_enabled=True, labels={}) env_files = [] - cmn_tdef.add_fip_env_file(env_files, mock_cluster_template, - mock_cluster) + cmn_tdef.add_fip_env_file(env_files, mock_cluster) self.assertEqual( [ @@ -312,18 +280,12 @@ class TemplateDefinitionTestCase(base.TestCase): ) def test_add_fip_master_lb_fip_disabled_cluster_fip_enabled(self): - mock_cluster_template = mock.MagicMock( - floating_ip_enabled=False, - master_lb_enabled=True, - labels={"master_lb_floating_ip_enabled": "false"} - ) mock_cluster = mock.MagicMock( labels={"master_lb_floating_ip_enabled": "false"}, floating_ip_enabled=True,) env_files = [] - cmn_tdef.add_fip_env_file(env_files, mock_cluster_template, - mock_cluster) + cmn_tdef.add_fip_env_file(env_files, mock_cluster) self.assertEqual( [ diff --git a/magnum/tests/unit/objects/test_objects.py b/magnum/tests/unit/objects/test_objects.py index 5aa0eceed1..9dae859983 100644 --- a/magnum/tests/unit/objects/test_objects.py +++ b/magnum/tests/unit/objects/test_objects.py @@ -355,7 +355,7 @@ class TestObject(test_base.TestCase, _TestObject): # For more information on object version testing, read # https://docs.openstack.org/magnum/latest/contributor/objects.html object_data = { - 'Cluster': '1.21-e28dc2dd599433a6249f7901ebf7b162', + 'Cluster': '1.22-39ae1aa9ed1e90ee05f67f64b5fce4bb', 'ClusterTemplate': '1.19-3b0b2b3933d0955abf3ab40111744960', 'Certificate': '1.1-1924dc077daa844f0f9076332ef96815', 'MyObj': '1.0-34c4b1aadefd177b13f9a2f894cc23cd', diff --git a/releasenotes/notes/add-master_lb_enabled-to-cluster-c773fac9086b2531.yaml b/releasenotes/notes/add-master_lb_enabled-to-cluster-c773fac9086b2531.yaml new file mode 100644 index 0000000000..b3478bbe52 --- /dev/null +++ b/releasenotes/notes/add-master_lb_enabled-to-cluster-c773fac9086b2531.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Users can enable or disable master_lb_enabled when creating + a cluster.