1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-28 11:18:11 +00:00

If the compute node is remote do not send project path

This commit is contained in:
Julien Duponchelle 2016-05-16 18:17:24 +02:00
parent d97325b113
commit a9b95eb242
No known key found for this signature in database
GPG Key ID: CE8B29639E07F5E8
2 changed files with 53 additions and 3 deletions

View File

@ -119,7 +119,21 @@ class Project:
if node_id not in self._nodes: if node_id not in self._nodes:
node = Node(self, compute, node_id=node_id, **kwargs) node = Node(self, compute, node_id=node_id, **kwargs)
if compute not in self._project_created_on_compute: if compute not in self._project_created_on_compute:
yield from compute.post("/projects", self) # For a local server we send the project path
if compute.id == "local":
yield from compute.post("/projects", {
"name": self._name,
"project_id": self._id,
"temporary": self._temporary,
"path": self._path
})
else:
yield from compute.post("/projects", {
"name": self._name,
"project_id": self._id,
"temporary": self._temporary
})
self._project_created_on_compute.add(compute) self._project_created_on_compute.add(compute)
yield from node.create() yield from node.create()
self._nodes[node.id] = node self._nodes[node.id] = node

View File

@ -68,6 +68,7 @@ def test_captures_directory(tmpdir):
assert p.captures_directory == str(tmpdir / "project-files" / "captures") assert p.captures_directory == str(tmpdir / "project-files" / "captures")
assert os.path.exists(p.captures_directory) assert os.path.exists(p.captures_directory)
def test_add_compute(async_run): def test_add_compute(async_run):
compute = MagicMock() compute = MagicMock()
project = Project() project = Project()
@ -75,8 +76,12 @@ def test_add_compute(async_run):
assert compute in project._computes assert compute in project._computes
def test_add_node(async_run): def test_add_node_local(async_run):
"""
For a local server we send the project path
"""
compute = MagicMock() compute = MagicMock()
compute.id = "local"
project = Project() project = Project()
response = MagicMock() response = MagicMock()
@ -85,9 +90,40 @@ def test_add_node(async_run):
node = async_run(project.add_node(compute, None, name="test", node_type="vpcs", properties={"startup_config": "test.cfg"})) node = async_run(project.add_node(compute, None, name="test", node_type="vpcs", properties={"startup_config": "test.cfg"}))
compute.post.assert_any_call('/projects', {
"name": project._name,
"project_id": project._id,
"temporary": project._temporary,
"path": project._path
})
compute.post.assert_any_call('/projects/{}/vpcs/nodes'.format(project.id),
data={'node_id': node.id,
'startup_config': 'test.cfg',
'name': 'test'})
assert compute in project._project_created_on_compute
def test_add_node_non_local(async_run):
"""
For a non local server we do not send the project path
"""
compute = MagicMock()
compute.id = "remote"
project = Project()
response = MagicMock()
response.json = {"console": 2048}
compute.post = AsyncioMagicMock(return_value=response)
node = async_run(project.add_node(compute, None, name="test", node_type="vpcs", properties={"startup_config": "test.cfg"}))
compute.post.assert_any_call('/projects', {
"name": project._name,
"project_id": project._id,
"temporary": project._temporary
})
compute.post.assert_any_call('/projects/{}/vpcs/nodes'.format(project.id), compute.post.assert_any_call('/projects/{}/vpcs/nodes'.format(project.id),
data={'node_id': node.id, data={'node_id': node.id,
'console_type': 'telnet',
'startup_config': 'test.cfg', 'startup_config': 'test.cfg',
'name': 'test'}) 'name': 'test'})
assert compute in project._project_created_on_compute assert compute in project._project_created_on_compute