|
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,135 @@ 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_variables_disable_managed_security_groups_for_bm(context, mocker): |
| 88 | + cluster = mocker.Mock() |
| 89 | + cluster.cluster_template = mocker.Mock( |
| 90 | + network_driver="calico", |
| 91 | + dns_nameserver="1.1.1.1", |
| 92 | + external_network_id="public", |
| 93 | + server_type="vm", |
| 94 | + ) |
| 95 | + cluster.default_ng_master = mocker.Mock(image_id="image") |
| 96 | + cluster.docker_volume_size = None |
| 97 | + cluster.fixed_network = None |
| 98 | + cluster.fixed_subnet = None |
| 99 | + cluster.flavor_id = "worker" |
| 100 | + cluster.keypair = None |
| 101 | + cluster.labels = {} |
| 102 | + cluster.master_count = 1 |
| 103 | + cluster.master_flavor_id = "control-plane" |
| 104 | + cluster.master_lb_enabled = True |
| 105 | + cluster.nodegroups = [] |
| 106 | + cluster.stack_id = "kube-test" |
| 107 | + |
| 108 | + default_volume_type = SimpleNamespace(name="fast") |
| 109 | + openstack_client = mocker.Mock() |
| 110 | + openstack_client.cinder.return_value.volume_types.default.return_value = ( |
| 111 | + default_volume_type |
| 112 | + ) |
| 113 | + mocker.patch( |
| 114 | + "magnum_cluster_api.resources.clients.get_openstack_api", |
| 115 | + return_value=openstack_client, |
| 116 | + ) |
| 117 | + mocker.patch( |
| 118 | + "magnum_cluster_api.resources.cinder.get_default_boot_volume_type", |
| 119 | + return_value=default_volume_type.name, |
| 120 | + ) |
| 121 | + mocker.patch( |
| 122 | + "magnum_cluster_api.resources.generate_machine_deployments_for_cluster", |
| 123 | + return_value=[], |
| 124 | + ) |
| 125 | + mocker.patch( |
| 126 | + "magnum_cluster_api.resources.neutron.get_external_network_id", |
| 127 | + return_value="external-network", |
| 128 | + ) |
| 129 | + mocker.patch( |
| 130 | + "magnum_cluster_api.resources.neutron.get_fixed_subnet_id", |
| 131 | + return_value=None, |
| 132 | + ) |
| 133 | + mocker.patch( |
| 134 | + "magnum_cluster_api.resources.utils.ensure_controlplane_server_group", |
| 135 | + return_value="server-group", |
| 136 | + ) |
| 137 | + mocker.patch( |
| 138 | + "magnum_cluster_api.resources.utils.generate_api_cert_san_list", |
| 139 | + return_value="", |
| 140 | + ) |
| 141 | + mocker.patch( |
| 142 | + "magnum_cluster_api.resources.utils.generate_apt_proxy_config", |
| 143 | + return_value="", |
| 144 | + ) |
| 145 | + mocker.patch( |
| 146 | + "magnum_cluster_api.resources.utils.generate_containerd_config", |
| 147 | + return_value="", |
| 148 | + ) |
| 149 | + mocker.patch( |
| 150 | + "magnum_cluster_api.resources.utils.generate_systemd_proxy_config", |
| 151 | + return_value="", |
| 152 | + ) |
| 153 | + mocker.patch( |
| 154 | + "magnum_cluster_api.resources.utils.get_cluster_container_infra_prefix", |
| 155 | + return_value="", |
| 156 | + ) |
| 157 | + mocker.patch( |
| 158 | + "magnum_cluster_api.resources.utils.get_fixed_network_id", |
| 159 | + return_value=None, |
| 160 | + ) |
| 161 | + mocker.patch( |
| 162 | + "magnum_cluster_api.resources.utils.get_kube_tag", |
| 163 | + return_value="v1.34.3", |
| 164 | + ) |
| 165 | + mocker.patch( |
| 166 | + "magnum_cluster_api.resources.utils.get_operating_system", |
| 167 | + return_value="ubuntu", |
| 168 | + ) |
| 169 | + mocker.patch( |
| 170 | + "magnum_cluster_api.resources.utils.is_controlplane_different_failure_domain", |
| 171 | + return_value=False, |
| 172 | + ) |
| 173 | + mocker.patch( |
| 174 | + "magnum_cluster_api.resources.utils.lookup_flavor", |
| 175 | + side_effect=lambda _osc, flavor_id: SimpleNamespace(name=flavor_id), |
| 176 | + ) |
| 177 | + mocker.patch( |
| 178 | + "magnum_cluster_api.resources.utils.lookup_image", |
| 179 | + return_value={"id": "image"}, |
| 180 | + ) |
| 181 | + |
| 182 | + rust_driver = mocker.Mock() |
| 183 | + rust_driver.resolve_immutable_fields.return_value = { |
| 184 | + "apiServerLoadBalancer": {"enabled": True} |
| 185 | + } |
| 186 | + |
| 187 | + resource = resources.Cluster( |
| 188 | + context, |
| 189 | + mocker.Mock(), |
| 190 | + mocker.Mock(), |
| 191 | + cluster, |
| 192 | + rust_driver, |
| 193 | + ).get_object() |
| 194 | + |
| 195 | + variables = { |
| 196 | + variable["name"]: variable["value"] |
| 197 | + for variable in resource["spec"]["topology"]["variables"] |
| 198 | + } |
| 199 | + assert variables["disableManagedSecurityGroups"] is False |
| 200 | + |
| 201 | + cluster.cluster_template.server_type = "bm" |
| 202 | + resource = resources.Cluster( |
| 203 | + context, |
| 204 | + mocker.Mock(), |
| 205 | + mocker.Mock(), |
| 206 | + cluster, |
| 207 | + rust_driver, |
| 208 | + ).get_object() |
| 209 | + variables = { |
| 210 | + variable["name"]: variable["value"] |
| 211 | + for variable in resource["spec"]["topology"]["variables"] |
| 212 | + } |
| 213 | + assert variables["disableManagedSecurityGroups"] is True |
| 214 | + |
| 215 | + |
85 | 216 | @pytest.mark.parametrize( |
86 | 217 | "auto_scaling_enabled", |
87 | 218 | [True, False, None], |
|
0 commit comments