From 0a87ee573c2d6aec9a38190a9cce18026345f2a6 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 8 Jan 2020 08:19:33 +0800 Subject: [PATCH] Accept a node name when creating a node from a template using the API. Fixes #1708 --- gns3server/controller/project.py | 7 ++++--- gns3server/schemas/template.py | 4 ++++ tests/handlers/api/controller/test_template.py | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gns3server/controller/project.py b/gns3server/controller/project.py index 92bf28fc..29f9e405 100644 --- a/gns3server/controller/project.py +++ b/gns3server/controller/project.py @@ -490,7 +490,7 @@ class Project: return new_name @open_required - async def add_node_from_template(self, template_id, x=0, y=0, compute_id=None): + async def add_node_from_template(self, template_id, x=0, y=0, name=None, compute_id=None): """ Create a node from a template. """ @@ -508,9 +508,10 @@ class Project: compute = self.controller.get_compute(compute_id) else: compute = self.controller.get_compute(template.pop("compute_id", compute_id)) - name = template.pop("name") + template_name = template.pop("name") default_name_format = template.pop("default_name_format", "{name}-{0}") - name = default_name_format.replace("{name}", name) + if name is None: + name = default_name_format.replace("{name}", template_name) node_id = str(uuid.uuid4()) node = await self.add_node(compute, name, node_id, node_type=node_type, **template) return node diff --git a/gns3server/schemas/template.py b/gns3server/schemas/template.py index e9d4cc1e..6cfdb30d 100644 --- a/gns3server/schemas/template.py +++ b/gns3server/schemas/template.py @@ -97,6 +97,10 @@ TEMPLATE_USAGE_SCHEMA = { "description": "Y position", "type": "integer" }, + "name": { + "description": "Use this name to create a new node", + "type": ["null", "string"] + }, "compute_id": { "description": "If the template don't have a default compute use this compute", "type": ["null", "string"] diff --git a/tests/handlers/api/controller/test_template.py b/tests/handlers/api/controller/test_template.py index b01419a2..c3c2f47c 100644 --- a/tests/handlers/api/controller/test_template.py +++ b/tests/handlers/api/controller/test_template.py @@ -966,6 +966,6 @@ def test_create_node_from_template(http_controller, controller, project, compute "x": 42, "y": 12 }) - mock.assert_called_with(id, x=42, y=12, compute_id=None) + mock.assert_called_with(id, x=42, y=12, name=None, compute_id=None) assert response.route == "/projects/{project_id}/templates/{template_id}" assert response.status == 201