diff --git a/gns3server/modules/iou/iou_vm.py b/gns3server/modules/iou/iou_vm.py index e80c99a3..f93ccc7d 100644 --- a/gns3server/modules/iou/iou_vm.py +++ b/gns3server/modules/iou/iou_vm.py @@ -205,7 +205,8 @@ class IOUVM(BaseVM): "ram": self._ram, "nvram": self._nvram, "l1_keepalives": self._l1_keepalives, - "initial_config": self.relative_initial_config_file + "initial_config": self.relative_initial_config_file, + "use_default_iou_values": self._use_default_iou_values } @property diff --git a/gns3server/schemas/iou.py b/gns3server/schemas/iou.py index 9a19c229..df04039a 100644 --- a/gns3server/schemas/iou.py +++ b/gns3server/schemas/iou.py @@ -66,6 +66,10 @@ IOU_CREATE_SCHEMA = { "description": "Always up ethernet interface", "type": ["boolean", "null"] }, + "use_default_iou_values": { + "description": "Use default IOU values", + "type": ["boolean", "null"] + }, "initial_config_content": { "description": "Initial configuration of the IOU", "type": ["string", "null"] @@ -118,6 +122,10 @@ IOU_UPDATE_SCHEMA = { "initial_config_content": { "description": "Initial configuration of the IOU", "type": ["string", "null"] + }, + "use_default_iou_values": { + "description": "Use default IOU values", + "type": ["boolean", "null"] } }, "additionalProperties": False, @@ -180,10 +188,14 @@ IOU_OBJECT_SCHEMA = { "initial_config": { "description": "Path of the initial config content relative to project directory", "type": ["string", "null"] + }, + "use_default_iou_values": { + "description": "Use default IOU values", + "type": ["boolean", "null"] } }, "additionalProperties": False, - "required": ["name", "vm_id", "console", "project_id", "path", "serial_adapters", "ethernet_adapters", "ram", "nvram", "l1_keepalives", "initial_config"] + "required": ["name", "vm_id", "console", "project_id", "path", "serial_adapters", "ethernet_adapters", "ram", "nvram", "l1_keepalives", "initial_config", "use_default_iou_values"] } IOU_NIO_SCHEMA = { diff --git a/tests/handlers/api/test_iou.py b/tests/handlers/api/test_iou.py index 8aa059f5..ecf07f78 100644 --- a/tests/handlers/api/test_iou.py +++ b/tests/handlers/api/test_iou.py @@ -74,6 +74,7 @@ def test_iou_create_with_params(server, project, base_params): params["ethernet_adapters"] = 0 params["l1_keepalives"] = True params["initial_config_content"] = "hostname test" + params["use_default_iou_values"] = True response = server.post("/projects/{project_id}/iou/vms".format(project_id=project.id), params, example=True) assert response.status == 201 @@ -85,6 +86,8 @@ def test_iou_create_with_params(server, project, base_params): assert response.json["ram"] == 1024 assert response.json["nvram"] == 512 assert response.json["l1_keepalives"] is True + assert response.json["use_default_iou_values"] is True + assert "initial-config.cfg" in response.json["initial_config"] with open(initial_config_file(project, response.json)) as f: assert f.read() == params["initial_config_content"] @@ -140,7 +143,8 @@ def test_iou_update(server, vm, tmpdir, free_console_port, project): "ethernet_adapters": 4, "serial_adapters": 0, "l1_keepalives": True, - "initial_config_content": "hostname test" + "initial_config_content": "hostname test", + "use_default_iou_values": True } response = server.put("/projects/{project_id}/iou/vms/{vm_id}".format(project_id=vm["project_id"], vm_id=vm["vm_id"]), params, example=True) assert response.status == 200 @@ -151,6 +155,7 @@ def test_iou_update(server, vm, tmpdir, free_console_port, project): assert response.json["ram"] == 512 assert response.json["nvram"] == 2048 assert response.json["l1_keepalives"] is True + assert response.json["use_default_iou_values"] is True assert "initial-config.cfg" in response.json["initial_config"] with open(initial_config_file(project, response.json)) as f: assert f.read() == "hostname test" diff --git a/tests/handlers/test_upload.py b/tests/handlers/test_upload.py index cec27948..4e3cebc5 100644 --- a/tests/handlers/test_upload.py +++ b/tests/handlers/test_upload.py @@ -36,12 +36,13 @@ def test_upload(server, tmpdir): with open(str(tmpdir / "test"), "w+") as f: f.write("TEST") body = aiohttp.FormData() + body.add_field("type", "QEMU") body.add_field("file", open(str(tmpdir / "test"), "rb"), content_type="application/iou", filename="test2") with patch("gns3server.config.Config.get_section_config", return_value={"images_path": str(tmpdir)}): response = server.post('/upload', api_version=None, body=body, raw=True) - with open(str(tmpdir / "test2")) as f: + with open(str(tmpdir / "QEMU" / "test2")) as f: assert f.read() == "TEST" assert "test2" in response.body.decode("utf-8")