Expand source code
@pytest.mark.p0
@pytest.mark.terraform
class TestNetworking:
@pytest.mark.dependency(name="create_clusternetwork")
def test_create_clusternetwork(self, api_client, tf_harvester, clusternetwork_resource):
spec, unique_name = clusternetwork_resource
tf_harvester.save_as(spec.ctx, "clusternetwork")
out, err, code = tf_harvester.apply_resource(spec.type, spec.name)
assert not err and 0 == code
code, data = api_client.clusternetworks.get(unique_name)
assert 200 == code
@pytest.mark.dependency(name="create_vlanconfig", depends=["create_clusternetwork"])
def test_create_vlanconfig(self, api_client, tf_harvester, vlanconfig_resource):
spec, unique_name, cnet_name, nics = vlanconfig_resource
tf_harvester.save_as(spec.ctx, "vlanconfig")
out, err, code = tf_harvester.apply_resource(spec.type, spec.name)
assert not err and 0 == code
code, data = api_client.clusternetworks.get_config(unique_name)
assert 200 == code
assert cnet_name == data['spec']['clusterNetwork']
assert nics == data['spec']['uplink']['nics']
@pytest.mark.dependency(name="create_vm_network", depends=["create_vlanconfig"])
def test_create_vm_network(self, api_client, tf_harvester, vmnetwork_resource):
spec, unique_name, vlan_id, cnet_name = vmnetwork_resource
tf_harvester.save_as(spec.ctx, "vmnetwork")
out, err, code = tf_harvester.apply_resource(spec.type, spec.name)
assert not err and 0 == code
code, data = api_client.networks.get(unique_name)
assert 200 == code
config = json.loads(data['spec'].get('config', ""))
assert vlan_id == config['vlan']
assert cnet_name in config['bridge']
@pytest.mark.dependency(depends=["create_vm_network"])
def test_delete_vm_network(self, api_client, tf_harvester, vmnetwork_resource):
spec, unique_name, *_ = vmnetwork_resource
out, err, code = tf_harvester.destroy_resource(spec.type, spec.name)
assert not err and 0 == code
code, data = api_client.networks.get(unique_name)
assert 404 == code
@pytest.mark.dependency(depends=["create_vlanconfig"])
def test_delete_vlanconfig(self, api_client, wait_timeout, tf_harvester, vlanconfig_resource):
spec, unique_name, *_ = vlanconfig_resource
out, err, rc = tf_harvester.destroy_resource(spec.type, spec.name)
assert not err and 0 == rc
endtime = datetime.now() + timedelta(seconds=wait_timeout)
while endtime > datetime.now():
code, data = api_client.clusternetworks.get_config(unique_name)
if 404 == code:
break
else:
raise AssertionError(
"Terraform destroy vlanconfig fail\n"
f"stdout: {out}\nstderr: {err}, code: {rc}"
)
@pytest.mark.dependency(depends=["create_clusternetwork"])
def test_delete_clusternetwork(
self, api_client, wait_timeout, tf_harvester, clusternetwork_resource
):
spec, unique_name, *_ = clusternetwork_resource
out, err, rc = tf_harvester.destroy_resource(spec.type, spec.name)
assert not err and 0 == rc
endtime = datetime.now() + timedelta(seconds=wait_timeout)
while endtime > datetime.now():
code, data = api_client.clusternetworks.get(unique_name)
if 404 == code:
break
else:
raise AssertionError(
"Terraform destroy clusternetwork fail\n"
f"stdout: {out}\nstderr: {err}, code: {rc}"
)