mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-12 19:38:57 +00:00
IOURC is a text box instead of a file path
Fix https://github.com/GNS3/gns3-gui/issues/1662
This commit is contained in:
parent
9be293909e
commit
a853e87fa5
@ -224,6 +224,10 @@ class IOUVM(BaseNode):
|
||||
|
||||
iourc_path = self._config().get("iourc_path")
|
||||
if not iourc_path:
|
||||
# look for the iourc file in the temporary dir.
|
||||
path = os.path.join(self.temporary_directory, "iourc")
|
||||
if os.path.exists(path):
|
||||
return path
|
||||
# look for the iourc file in the user home dir.
|
||||
path = os.path.join(os.path.expanduser("~/"), ".iourc")
|
||||
if os.path.exists(path):
|
||||
@ -232,10 +236,6 @@ class IOUVM(BaseNode):
|
||||
path = os.path.join(self.working_dir, "iourc")
|
||||
if os.path.exists(path):
|
||||
return path
|
||||
# look for the iourc file in the temporary dir.
|
||||
path = os.path.join(self.temporary_directory, "iourc")
|
||||
if os.path.exists(path):
|
||||
return path
|
||||
return iourc_path
|
||||
|
||||
@property
|
||||
|
@ -387,7 +387,15 @@ class Node:
|
||||
Start a node
|
||||
"""
|
||||
try:
|
||||
yield from self.post("/start", timeout=240)
|
||||
# For IOU we need to send the licence everytime
|
||||
if self.node_type == "iou":
|
||||
try:
|
||||
licence = self._project.controller.settings["IOU"]["iourc_content"]
|
||||
except KeyError:
|
||||
raise aiohttp.web.HTTPConflict(text="IOU licence is not configured")
|
||||
yield from self.post("/start", timeout=240, data={"iourc_content": licence})
|
||||
else:
|
||||
yield from self.post("/start", timeout=240)
|
||||
except asyncio.TimeoutError:
|
||||
raise aiohttp.web.HTTPRequestTimeout(text="Timeout when starting {}".format(self._name))
|
||||
|
||||
|
@ -346,6 +346,21 @@ def test_start(node, compute, project, async_run):
|
||||
compute.post.assert_called_with("/projects/{}/vpcs/nodes/{}/start".format(node.project.id, node.id), timeout=240)
|
||||
|
||||
|
||||
def test_start_iou(compute, project, async_run, controller):
|
||||
node = Node(project, compute, "demo",
|
||||
node_id=str(uuid.uuid4()),
|
||||
node_type="iou")
|
||||
compute.post = AsyncioMagicMock()
|
||||
|
||||
# Without licence configured it should raise an error
|
||||
with pytest.raises(aiohttp.web.HTTPConflict):
|
||||
async_run(node.start())
|
||||
|
||||
controller.settings["IOU"] = {"iourc_content": "aa"}
|
||||
async_run(node.start())
|
||||
compute.post.assert_called_with("/projects/{}/iou/nodes/{}/start".format(node.project.id, node.id), timeout=240, data={"iourc_content": "aa"})
|
||||
|
||||
|
||||
def test_stop(node, compute, project, async_run):
|
||||
|
||||
compute.post = AsyncioMagicMock()
|
||||
|
Loading…
Reference in New Issue
Block a user