"""The VM create page rendered on libvirt's test driver, for the tests of that page.""" from unittest.mock import patch import libvirt from computes.models import Compute from django.contrib.auth import get_user_model from django.urls import reverse def render_create_page(testcase, data=None): """GET the create page, or POST data (a create submission) to it, as a superuser on a test-driver compute; returns (compute, response).""" conn = libvirt.open("test:///default") testcase.addCleanup(conn.close) compute, _ = Compute.objects.get_or_create(name="testdrv", hostname="localhost", login="", password="", type=4) user = get_user_model().objects.filter(username="page").first() or \ get_user_model().objects.create_superuser("page", "page@example.com", "pw") testcase.client.force_login(user) url = reverse("instances:create_instance", args=[compute.id, "i686", "pc"]) with patch("vrtManager.connection.connection_manager.get_connection", return_value=conn), \ patch("vrtManager.connection.wvmConnect.get_machine_types", return_value=["pc"]), \ patch("vrtManager.connection.wvmConnect.get_nwfilters", return_value=[]), \ patch("vrtManager.connection.wvmConnect.get_cpu_modes", return_value=["host-model"]): # the test driver has none if data is None: response = testcase.client.get(url) else: response = testcase.client.post(url, {"create": "", **data}) return compute, response # an API create request (CreateInstanceSerializer) that the job takes BODY = {"name": "api-vm", "vcpu": 1, "vcpu_mode": "host-model", "memory": 512, "networks": "default", "mac": "", "nwfilter": "", "storage": "default", "hdd_size": 1, "cache_mode": "none", "meta_prealloc": False, "virtio": True, "qemu_ga": True, "video": "vga", "listener_addr": "0.0.0.0", "submission_key": "key-api00001"}