mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-10-03 09:10:11 +03:00
Merge pull request #2572 from GNS3/feature/name-of-container-in-docker
Set name of container in Docker
This commit is contained in:
commit
4dc321454e
@ -153,6 +153,14 @@ class DockerVM(BaseNode):
|
|||||||
def ethernet_adapters(self):
|
def ethernet_adapters(self):
|
||||||
return self._ethernet_adapters
|
return self._ethernet_adapters
|
||||||
|
|
||||||
|
@property
|
||||||
|
def docker_name(self):
|
||||||
|
"""
|
||||||
|
Container name in Docker
|
||||||
|
"""
|
||||||
|
|
||||||
|
return "GNS3.{}.{}".format(self.name, self._project.id)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def mac_address(self):
|
def mac_address(self):
|
||||||
"""
|
"""
|
||||||
@ -451,7 +459,8 @@ class DockerVM(BaseNode):
|
|||||||
if extra_hosts:
|
if extra_hosts:
|
||||||
params["Env"].append("GNS3_EXTRA_HOSTS={}".format(extra_hosts))
|
params["Env"].append("GNS3_EXTRA_HOSTS={}".format(extra_hosts))
|
||||||
|
|
||||||
result = await self.manager.query("POST", "containers/create", data=params)
|
# Support name in Doker: [a-zA-Z0-9][a-zA-Z0-9_.-]
|
||||||
|
result = await self.manager.query("POST", "containers/create?name={}".format(self.docker_name), data=params)
|
||||||
self._cid = result['Id']
|
self._cid = result['Id']
|
||||||
log.info("Docker container '{name}' [{id}] created".format(name=self._name, id=self._id))
|
log.info("Docker container '{name}' [{id}] created".format(name=self._name, id=self._id))
|
||||||
return True
|
return True
|
||||||
|
|||||||
@ -96,7 +96,7 @@ async def test_create(compute_project, manager):
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest")
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest")
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -135,7 +135,7 @@ async def test_create_with_tag(compute_project, manager):
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:16.04")
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:16.04")
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -177,7 +177,7 @@ async def test_create_vnc(compute_project, manager):
|
|||||||
vm._start_vnc = MagicMock()
|
vm._start_vnc = MagicMock()
|
||||||
vm._display = 42
|
vm._display = 42
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -308,7 +308,7 @@ async def test_create_start_cmd(compute_project, manager):
|
|||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest")
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest")
|
||||||
vm._start_command = "/bin/ls"
|
vm._start_command = "/bin/ls"
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -407,7 +407,7 @@ async def test_create_image_not_available(compute_project, manager):
|
|||||||
with asyncio_patch("gns3server.compute.docker.DockerVM.pull_image", return_value=True) as mock_pull:
|
with asyncio_patch("gns3server.compute.docker.DockerVM.pull_image", return_value=True) as mock_pull:
|
||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -450,7 +450,7 @@ async def test_create_with_user(compute_project, manager):
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest")
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest")
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -534,7 +534,7 @@ async def test_create_with_extra_volumes_duplicate_1_image(compute_project, mana
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol/1"])
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol/1"])
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -574,7 +574,7 @@ async def test_create_with_extra_volumes_duplicate_2_user(compute_project, manag
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol/1", "/vol/1"])
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol/1", "/vol/1"])
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -614,7 +614,7 @@ async def test_create_with_extra_volumes_duplicate_3_subdir(compute_project, man
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol/1/", "/vol"])
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol/1/", "/vol"])
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -654,7 +654,7 @@ async def test_create_with_extra_volumes_duplicate_4_backslash(compute_project,
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol//", "/vol"])
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol//", "/vol"])
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -694,7 +694,7 @@ async def test_create_with_extra_volumes_duplicate_5_subdir_issue_1595(compute_p
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/etc"])
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/etc"])
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -733,7 +733,7 @@ async def test_create_with_extra_volumes_duplicate_6_subdir_issue_1595(compute_p
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/etc/test", "/etc"])
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/etc/test", "/etc"])
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -778,7 +778,7 @@ async def test_create_with_extra_volumes(compute_project, manager):
|
|||||||
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
with asyncio_patch("gns3server.compute.docker.Docker.query", return_value=response) as mock:
|
||||||
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol/2"])
|
vm = DockerVM("test", str(uuid.uuid4()), compute_project, manager, "ubuntu:latest", extra_volumes=["/vol/2"])
|
||||||
await vm.create()
|
await vm.create()
|
||||||
mock.assert_called_with("POST", "containers/create", data={
|
mock.assert_called_with("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -1029,7 +1029,7 @@ async def test_update(vm):
|
|||||||
await vm.update()
|
await vm.update()
|
||||||
|
|
||||||
mock_query.assert_any_call("DELETE", "containers/e90e34656842", params={"force": 1, "v": 1})
|
mock_query.assert_any_call("DELETE", "containers/e90e34656842", params={"force": 1, "v": 1})
|
||||||
mock_query.assert_any_call("POST", "containers/create", data={
|
mock_query.assert_any_call("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
@ -1098,7 +1098,7 @@ async def test_update_running(vm):
|
|||||||
await vm.update()
|
await vm.update()
|
||||||
|
|
||||||
mock_query.assert_any_call("DELETE", "containers/e90e34656842", params={"force": 1, "v": 1})
|
mock_query.assert_any_call("DELETE", "containers/e90e34656842", params={"force": 1, "v": 1})
|
||||||
mock_query.assert_any_call("POST", "containers/create", data={
|
mock_query.assert_any_call("POST", "containers/create?name={}".format(vm.docker_name), data={
|
||||||
"Tty": True,
|
"Tty": True,
|
||||||
"OpenStdin": True,
|
"OpenStdin": True,
|
||||||
"StdinOnce": False,
|
"StdinOnce": False,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user