mirror of
https://github.com/GNS3/gns3-server
synced 2024-12-26 00:38:10 +00:00
Fix not all Docker resources are copied to a writable location
This commit is contained in:
parent
0a08031d85
commit
84db3b9996
@ -297,12 +297,12 @@ class Controller:
|
|||||||
else:
|
else:
|
||||||
for entry in importlib_resources.files('gns3server').joinpath(resource_name).iterdir():
|
for entry in importlib_resources.files('gns3server').joinpath(resource_name).iterdir():
|
||||||
full_path = os.path.join(dst_path, entry.name)
|
full_path = os.path.join(dst_path, entry.name)
|
||||||
if not os.path.exists(full_path):
|
if entry.is_file() and not os.path.exists(full_path):
|
||||||
if entry.is_file():
|
|
||||||
log.debug(f'Installing {resource_name} resource file "{entry.name}" to "{full_path}"')
|
log.debug(f'Installing {resource_name} resource file "{entry.name}" to "{full_path}"')
|
||||||
shutil.copy(str(entry), os.path.join(dst_path, entry.name))
|
shutil.copy(str(entry), os.path.join(dst_path, entry.name))
|
||||||
elif entry.is_dir():
|
elif entry.is_dir():
|
||||||
os.makedirs(full_path, exist_ok=True)
|
os.makedirs(full_path, exist_ok=True)
|
||||||
|
Controller.install_resource_files(full_path, os.path.join(resource_name, entry.name))
|
||||||
|
|
||||||
def _install_base_configs(self):
|
def _install_base_configs(self):
|
||||||
"""
|
"""
|
||||||
|
@ -852,7 +852,7 @@ async def test_unpause(vm):
|
|||||||
mock.assert_called_with("POST", "containers/e90e34656842/unpause")
|
mock.assert_called_with("POST", "containers/e90e34656842/unpause")
|
||||||
|
|
||||||
|
|
||||||
async def test_start(vm, manager, free_console_port):
|
async def test_start(vm, manager, free_console_port, tmpdir):
|
||||||
|
|
||||||
assert vm.status != "started"
|
assert vm.status != "started"
|
||||||
vm.adapters = 1
|
vm.adapters = 1
|
||||||
@ -880,6 +880,30 @@ async def test_start(vm, manager, free_console_port):
|
|||||||
assert vm.status == "started"
|
assert vm.status == "started"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_resources_installed(vm, manager, tmpdir):
|
||||||
|
|
||||||
|
assert vm.status != "started"
|
||||||
|
vm.adapters = 1
|
||||||
|
|
||||||
|
docker_resources_path = os.path.join(tmpdir, "docker", "resources")
|
||||||
|
os.makedirs(docker_resources_path, exist_ok=True)
|
||||||
|
manager.resources_path = MagicMock(return_value=docker_resources_path)
|
||||||
|
|
||||||
|
with asyncio_patch("gns3server.compute.docker.DockerVM._get_container_state", return_value="stopped"):
|
||||||
|
with asyncio_patch("gns3server.compute.docker.Docker.query"):
|
||||||
|
with asyncio_patch("gns3server.compute.docker.DockerVM._start_ubridge"):
|
||||||
|
with asyncio_patch("gns3server.compute.docker.DockerVM._get_namespace", return_value=42):
|
||||||
|
with asyncio_patch("gns3server.compute.docker.DockerVM._add_ubridge_connection"):
|
||||||
|
with asyncio_patch("gns3server.compute.docker.DockerVM._start_console"):
|
||||||
|
await vm.start()
|
||||||
|
|
||||||
|
assert vm.status == "started"
|
||||||
|
assert os.path.exists(os.path.join(docker_resources_path, "init.sh"))
|
||||||
|
assert os.path.exists(os.path.join(docker_resources_path, "run-cmd.sh"))
|
||||||
|
assert os.path.exists(os.path.join(docker_resources_path, "bin", "udhcpc"))
|
||||||
|
assert os.path.exists(os.path.join(docker_resources_path, "etc", "udhcpc", "default.script"))
|
||||||
|
|
||||||
|
|
||||||
async def test_start_namespace_failed(vm, manager, free_console_port):
|
async def test_start_namespace_failed(vm, manager, free_console_port):
|
||||||
|
|
||||||
assert vm.status != "started"
|
assert vm.status != "started"
|
||||||
|
Loading…
Reference in New Issue
Block a user