mirror of
https://github.com/GNS3/gns3-server.git
synced 2024-12-20 05:17:56 +00:00
Support for nested global variables
This commit is contained in:
parent
0bcc657bf1
commit
83445214be
@ -325,15 +325,20 @@ class DockerVM(BaseNode):
|
|||||||
# Give the information to the container the list of volume path mounted
|
# Give the information to the container the list of volume path mounted
|
||||||
params["Env"].append("GNS3_VOLUMES={}".format(":".join(self._volumes)))
|
params["Env"].append("GNS3_VOLUMES={}".format(":".join(self._volumes)))
|
||||||
|
|
||||||
if self.project.variables:
|
variables = self.project.variables
|
||||||
for var in self.project.variables:
|
if not variables:
|
||||||
params["Env"].append("{}={}".format(var["name"], var.get('value', '')))
|
variables = []
|
||||||
|
|
||||||
|
for var in variables:
|
||||||
|
formatted = self._format_env(variables, var.get('value', ''))
|
||||||
|
params["Env"].append("{}={}".format(var["name"], formatted))
|
||||||
|
|
||||||
if self._environment:
|
if self._environment:
|
||||||
for e in self._environment.strip().split("\n"):
|
for e in self._environment.strip().split("\n"):
|
||||||
e = e.strip()
|
e = e.strip()
|
||||||
if not e.startswith("GNS3_"):
|
if not e.startswith("GNS3_"):
|
||||||
params["Env"].append(e)
|
formatted = self._format_env(variables, e)
|
||||||
|
params["Env"].append(formatted)
|
||||||
|
|
||||||
if self._console_type == "vnc":
|
if self._console_type == "vnc":
|
||||||
yield from self._start_vnc()
|
yield from self._start_vnc()
|
||||||
@ -352,6 +357,11 @@ class DockerVM(BaseNode):
|
|||||||
name=self._name, id=self._id))
|
name=self._name, id=self._id))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def _format_env(self, variables, env):
|
||||||
|
for variable in variables:
|
||||||
|
env = env.replace('${' + variable["name"] + '}', variable.get("value", ""))
|
||||||
|
return env
|
||||||
|
|
||||||
def _format_extra_hosts(self, extra_hosts):
|
def _format_extra_hosts(self, extra_hosts):
|
||||||
lines = [h.strip() for h in self._extra_hosts.split("\n") if h.strip() != ""]
|
lines = [h.strip() for h in self._extra_hosts.split("\n") if h.strip() != ""]
|
||||||
hosts = []
|
hosts = []
|
||||||
|
@ -259,7 +259,8 @@ def test_create_with_project_variables(loop, project, manager):
|
|||||||
|
|
||||||
project.variables = [
|
project.variables = [
|
||||||
{"name": "VAR1"},
|
{"name": "VAR1"},
|
||||||
{"name": "VAR2", "value": "VAL1"}
|
{"name": "VAR2", "value": "VAL1"},
|
||||||
|
{"name": "VAR3", "value": "2x${VAR2}"}
|
||||||
]
|
]
|
||||||
|
|
||||||
with asyncio_patch("gns3server.compute.docker.Docker.list_images", return_value=[{"image": "ubuntu"}]):
|
with asyncio_patch("gns3server.compute.docker.Docker.list_images", return_value=[{"image": "ubuntu"}]):
|
||||||
@ -269,6 +270,7 @@ def test_create_with_project_variables(loop, project, manager):
|
|||||||
called_kwargs = mock.call_args[1]
|
called_kwargs = mock.call_args[1]
|
||||||
assert "VAR1=" in called_kwargs["data"]["Env"]
|
assert "VAR1=" in called_kwargs["data"]["Env"]
|
||||||
assert "VAR2=VAL1" in called_kwargs["data"]["Env"]
|
assert "VAR2=VAL1" in called_kwargs["data"]["Env"]
|
||||||
|
assert "VAR3=2xVAL1" in called_kwargs["data"]["Env"]
|
||||||
project.variables = None
|
project.variables = None
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user