Module harvester_e2e_tests.integrations.test_z_terraform

Functions

def clusternetwork_resource(unique_name, tf_resource)
def image_resource(unique_name, image_opensuse, tf_resource)
def ssh_key_resource(ssh_keypair, unique_name, tf_resource)
def test_create_image(api_client, tf_harvester, image_resource)
def test_create_ssh_key(api_client, tf_harvester, ssh_key_resource)
def test_create_volume(api_client, tf_harvester, volume_resource)
def test_create_volume_from_image(api_client, tf_harvester, tf_resource, image_resource)
def test_delete_image(api_client, wait_timeout, tf_harvester, image_resource)
def test_delete_ssh_key(api_client, tf_harvester, ssh_key_resource)
def test_delete_volume(api_client, wait_timeout, tf_harvester, volume_resource)
def vlanconfig_resource(request, unique_name, tf_resource, clusternetwork_resource)
def vmnetwork_resource(request, unique_name, tf_resource, clusternetwork_resource)
def volume_resource(unique_name, tf_resource)

Classes

class TestNetworking
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}"
            )

Class variables

var pytestmark

Methods

def test_create_clusternetwork(self, api_client, tf_harvester, clusternetwork_resource)
def test_create_vlanconfig(self, api_client, tf_harvester, vlanconfig_resource)
def test_create_vm_network(self, api_client, tf_harvester, vmnetwork_resource)
def test_delete_clusternetwork(self, api_client, wait_timeout, tf_harvester, clusternetwork_resource)
def test_delete_vlanconfig(self, api_client, wait_timeout, tf_harvester, vlanconfig_resource)
def test_delete_vm_network(self, api_client, tf_harvester, vmnetwork_resource)