Skip to content

Commit

Permalink
updated tests for ansible_configurator
Browse files Browse the repository at this point in the history
  • Loading branch information
XaverStiensmeier committed Nov 29, 2024
1 parent c4fdca2 commit 040e118
Showing 1 changed file with 207 additions and 0 deletions.
207 changes: 207 additions & 0 deletions tests/unit_tests/test_ansible_configurator.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,213 @@ def test_configure_ansible_yaml(self, mock_cidrs, mock_yaml, mock_site, mock_hos
call(aRP.SITE_CONFIG_FILE, mock_site(), startup.LOG, False)]
self.assertEqual(expected, mock_yaml.call_args_list)

@patch("bibigrid.core.utility.ansible_configurator.write_yaml")
@patch("bibigrid.core.utility.ansible_configurator.create.WORKER_IDENTIFIER")
def test_write_worker_host_vars(self, mock_worker_identifier, mock_write_yaml):
pass # Todo

@patch("bibigrid.core.utility.ansible_configurator.write_yaml")
def test_write_worker_host_vars_on_demand_false(self, mock_write_yaml):
"""
This tests that no host_vars is written if on_demand is false.
Currently, that would result in an empty host vars that is not needed.
@param mock_write_yaml:
@return:
"""
cluster_id = "foo"
worker_count = 0
log = MagicMock()

worker = {"count": 2, "volumes": [{"name": "volume1", "exists": True}]}
worker_dict = {"on_demand": False}

# Call the function
ansible_configurator.write_worker_host_vars(
cluster_id=cluster_id,
worker=worker,
worker_dict=worker_dict,
worker_count=worker_count,
log=log,
)

# Assert no write_yaml calls were made
mock_write_yaml.assert_not_called()
# START
@patch("bibigrid.core.utility.ansible_configurator.write_worker_host_vars")
@patch("bibigrid.core.utility.ansible_configurator.write_yaml")
def test_write_worker_vars(self, mock_write_yaml, mock_write_worker_host_vars):
provider = MagicMock()
provider.create_flavor_dict.return_value = {"flavor_key": "flavor_value"}

configuration = {
"network": "net1",
"private_v4": "10.1.1.1",
"cloud_identifier": "cloud1",
"features": ["feature1"],
}

worker = {
"type": "worker-type",
"image": "worker-image",
"onDemand": True,
"bootVolume": {"size": 10},
"features": ["feature1"],
"count": 2
}

cluster_id = "foo"
worker_count = 0
log = MagicMock()

expected_group_vars = {
"name": "bibigrid-worker-foo-[0-1]",
"regexp": "bibigrid-worker-foo-\\d+",
"image": "worker-image",
"network": "net1",
"flavor": {"flavor_key": "flavor_value"},
"gateway_ip": "10.1.1.1",
"cloud_identifier": "cloud1",
"on_demand": True,
"state": "CLOUD",
"partitions": ["all", "cloud1"],
"boot_volume": {"size": 10},
"features": {"feature1"},
}

ansible_configurator.write_worker_vars(
provider=provider,
configuration=configuration,
cluster_id=cluster_id,
worker=worker,
worker_count=worker_count,
log=log
)
print(mock_write_yaml.mock_calls)
# Assert group_vars were written correctly
mock_write_yaml.assert_any_call(
"/home/xaver/Documents/Repos/bibigrid/resources/playbook/group_vars/bibigrid_worker_foo_0_1.yaml",
expected_group_vars,
log
)

# Ensure write_worker_host_vars was called
mock_write_worker_host_vars.assert_called_once_with(
cluster_id=cluster_id,
worker=worker,
worker_dict=expected_group_vars,
worker_count=worker_count,
log=log
)

@patch("bibigrid.core.utility.ansible_configurator.write_yaml")
def test_write_vpn_var(self, mock_write_yaml):
provider = MagicMock()
provider.create_flavor_dict.return_value = {"flavor_key": "flavor_value"}

configuration = {
"network": "net1",
"subnet_cidrs": ["10.0.0.0/16"],
"floating_ip": "10.1.1.2",
"private_v4": "10.1.1.1",
"cloud_identifier": "cloud1",
"wireguard_peer": "peer-ip",
}

vpngtw = {
"type": "vpn-type",
"image": "vpn-image",
}

cluster_id = "foo"
vpn_count = 0
log = MagicMock()

expected_host_vars = {
"name": "bibigrid-vpngtw-foo-0",
"regexp": "bibigrid-worker-foo-\\d+", # TODO this is a bug
"image": "vpn-image",
"network": "net1",
"network_cidrs": ["10.0.0.0/16"],
"floating_ip": "10.1.1.2",
"private_v4": "10.1.1.1",
"flavor": {"flavor_key": "flavor_value"},
"wireguard_ip": "10.0.0.2",
"cloud_identifier": "cloud1",
"fallback_on_other_image": False,
"on_demand": False,
"wireguard": {"ip": "10.0.0.2", "peer": "peer-ip"},
}

ansible_configurator.write_vpn_var(
provider=provider,
configuration=configuration,
cluster_id=cluster_id,
vpngtw=vpngtw,
vpn_count=vpn_count,
log=log,
)

mock_write_yaml.assert_called_once_with(
"/home/xaver/Documents/Repos/bibigrid/resources/playbook/host_vars/bibigrid-vpngtw-foo-0.yaml",
expected_host_vars,
log
)

@patch("bibigrid.core.utility.ansible_configurator.write_yaml")
def test_write_master_var(self, mock_write_yaml):
provider = MagicMock()
provider.create_flavor_dict.return_value = {"flavor_key": "flavor_value"}

configuration = {
"network": "net1",
"subnet_cidrs": ["10.0.0.0/24"],
"floating_ip": True,
"private_v4": "10.1.1.11",
"cloud_identifier": "cloud1",
"fallbackOnOtherImage": False,
"useMasterAsCompute": True,
"masterInstance": {
"type": "master-type",
"image": "master-image",
"partitions": ["control"],
},
}

cluster_id = "foo"
log = MagicMock()

expected_master_vars = {
"name": "bibigrid-master-foo",
"image": "master-image",
"network": "net1",
"network_cidrs": ["10.0.0.0/24"],
"floating_ip": True,
"flavor": {"flavor_key": "flavor_value"},
"private_v4": "10.1.1.1",
"cloud_identifier": "cloud1",
"fallback_on_other_image": False,
"state": "UNKNOWN", # Based on useMasterAsCompute = True
"on_demand": False,
"partitions": ["control", "all", "cloud1"],
}

# Call the function
ansible_configurator.write_master_var(
provider=provider,
configuration=configuration,
cluster_id=cluster_id,
log=log,
)

# Validate the output
mock_write_yaml.assert_called_once_with(
"/home/xaver/Documents/Repos/bibigrid/resources/playbook/group_vars/master.yaml",
expected_master_vars,
log,
)

# STOP


@patch('bibigrid.core.utility.ansible_configurator.write_yaml')
@patch('bibigrid.core.utility.ansible_configurator.aRP.GROUP_VARS_FOLDER', '/mocked/path/group_vars')
Expand Down

0 comments on commit 040e118

Please sign in to comment.