|
12 | 12 | # License for the specific language governing permissions and limitations |
13 | 13 | # under the License. |
14 | 14 |
|
| 15 | +from types import SimpleNamespace |
| 16 | + |
15 | 17 | import pytest |
16 | 18 | from magnum.objects import fields |
17 | 19 | from magnum.tests.unit.objects import utils |
@@ -82,6 +84,124 @@ def test_generate_machine_deployments_for_cluster_with_deleting_node_group( |
82 | 84 | assert len(mds) == 2 |
83 | 85 |
|
84 | 86 |
|
| 87 | +def test_cluster_control_plane_labels_match_cloud_controller_manager( |
| 88 | + context, mocker |
| 89 | +): |
| 90 | + cluster = mocker.Mock() |
| 91 | + cluster.cluster_template = mocker.Mock( |
| 92 | + network_driver="calico", |
| 93 | + dns_nameserver="1.1.1.1", |
| 94 | + external_network_id="public", |
| 95 | + ) |
| 96 | + cluster.default_ng_master = mocker.Mock(image_id="image") |
| 97 | + cluster.docker_volume_size = None |
| 98 | + cluster.fixed_network = None |
| 99 | + cluster.fixed_subnet = None |
| 100 | + cluster.flavor_id = "worker" |
| 101 | + cluster.keypair = None |
| 102 | + cluster.labels = {} |
| 103 | + cluster.master_count = 1 |
| 104 | + cluster.master_flavor_id = "control-plane" |
| 105 | + cluster.master_lb_enabled = True |
| 106 | + cluster.nodegroups = [] |
| 107 | + cluster.stack_id = "kube-test" |
| 108 | + |
| 109 | + default_volume_type = SimpleNamespace(name="fast") |
| 110 | + openstack_client = mocker.Mock() |
| 111 | + openstack_client.cinder.return_value.volume_types.default.return_value = ( |
| 112 | + default_volume_type |
| 113 | + ) |
| 114 | + mocker.patch( |
| 115 | + "magnum_cluster_api.resources.clients.get_openstack_api", |
| 116 | + return_value=openstack_client, |
| 117 | + ) |
| 118 | + mocker.patch( |
| 119 | + "magnum_cluster_api.resources.cinder.get_default_boot_volume_type", |
| 120 | + return_value=default_volume_type.name, |
| 121 | + ) |
| 122 | + mocker.patch( |
| 123 | + "magnum_cluster_api.resources.generate_machine_deployments_for_cluster", |
| 124 | + return_value=[], |
| 125 | + ) |
| 126 | + mocker.patch( |
| 127 | + "magnum_cluster_api.resources.neutron.get_external_network_id", |
| 128 | + return_value="external-network", |
| 129 | + ) |
| 130 | + mocker.patch( |
| 131 | + "magnum_cluster_api.resources.neutron.get_fixed_subnet_id", |
| 132 | + return_value=None, |
| 133 | + ) |
| 134 | + mocker.patch( |
| 135 | + "magnum_cluster_api.resources.utils.ensure_controlplane_server_group", |
| 136 | + return_value="server-group", |
| 137 | + ) |
| 138 | + mocker.patch( |
| 139 | + "magnum_cluster_api.resources.utils.generate_api_cert_san_list", |
| 140 | + return_value="", |
| 141 | + ) |
| 142 | + mocker.patch( |
| 143 | + "magnum_cluster_api.resources.utils.generate_apt_proxy_config", |
| 144 | + return_value="", |
| 145 | + ) |
| 146 | + mocker.patch( |
| 147 | + "magnum_cluster_api.resources.utils.generate_containerd_config", |
| 148 | + return_value="", |
| 149 | + ) |
| 150 | + mocker.patch( |
| 151 | + "magnum_cluster_api.resources.utils.generate_systemd_proxy_config", |
| 152 | + return_value="", |
| 153 | + ) |
| 154 | + mocker.patch( |
| 155 | + "magnum_cluster_api.resources.utils.get_cluster_container_infra_prefix", |
| 156 | + return_value="", |
| 157 | + ) |
| 158 | + mocker.patch( |
| 159 | + "magnum_cluster_api.resources.utils.get_fixed_network_id", |
| 160 | + return_value=None, |
| 161 | + ) |
| 162 | + mocker.patch( |
| 163 | + "magnum_cluster_api.resources.utils.get_kube_tag", |
| 164 | + return_value="v1.34.3", |
| 165 | + ) |
| 166 | + mocker.patch( |
| 167 | + "magnum_cluster_api.resources.utils.get_operating_system", |
| 168 | + return_value="ubuntu", |
| 169 | + ) |
| 170 | + mocker.patch( |
| 171 | + "magnum_cluster_api.resources.utils.is_controlplane_different_failure_domain", |
| 172 | + return_value=False, |
| 173 | + ) |
| 174 | + mocker.patch( |
| 175 | + "magnum_cluster_api.resources.utils.lookup_flavor", |
| 176 | + side_effect=[ |
| 177 | + SimpleNamespace(name="control-plane"), |
| 178 | + SimpleNamespace(name="worker"), |
| 179 | + ], |
| 180 | + ) |
| 181 | + mocker.patch( |
| 182 | + "magnum_cluster_api.resources.utils.lookup_image", |
| 183 | + return_value={"id": "image"}, |
| 184 | + ) |
| 185 | + |
| 186 | + rust_driver = mocker.Mock() |
| 187 | + rust_driver.resolve_immutable_fields.return_value = { |
| 188 | + "apiServerLoadBalancer": {"enabled": True} |
| 189 | + } |
| 190 | + |
| 191 | + resource = resources.Cluster( |
| 192 | + context, |
| 193 | + mocker.Mock(), |
| 194 | + mocker.Mock(), |
| 195 | + cluster, |
| 196 | + rust_driver, |
| 197 | + ).get_object() |
| 198 | + |
| 199 | + assert resource["spec"]["topology"]["controlPlane"]["metadata"]["labels"] == { |
| 200 | + "node-role.kubernetes.io/master": "", |
| 201 | + "node-role.kubernetes.io/control-plane": "", |
| 202 | + } |
| 203 | + |
| 204 | + |
85 | 205 | @pytest.mark.parametrize( |
86 | 206 | "auto_scaling_enabled", |
87 | 207 | [True, False, None], |
|
0 commit comments