mirror of
https://github.com/GNS3/gns3-server
synced 2024-12-25 16:28:11 +00:00
Fix project path
This commit is contained in:
parent
ba91cbaac0
commit
df31b2ad5a
@ -20,5 +20,5 @@ X-ROUTE: /vpcs
|
|||||||
"name": "PC TEST 1",
|
"name": "PC TEST 1",
|
||||||
"project_uuid": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
|
"project_uuid": "a1e920ca-338a-4e9f-b363-aa607b09dd80",
|
||||||
"script_file": null,
|
"script_file": null,
|
||||||
"uuid": "934f0745-0824-451e-8ad6-db0877dbf387"
|
"uuid": "21e9a130-450e-41e4-8864-e5c83ba7aa80"
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ import struct
|
|||||||
import socket
|
import socket
|
||||||
import stat
|
import stat
|
||||||
import time
|
import time
|
||||||
|
import aiohttp
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
@ -87,7 +87,7 @@ class BaseVM:
|
|||||||
Return VM working directory
|
Return VM working directory
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self._project.vm_working_directory(self._uuid)
|
return self._project.vm_working_directory(self.module_name, self._uuid)
|
||||||
|
|
||||||
def create(self):
|
def create(self):
|
||||||
"""
|
"""
|
||||||
|
@ -148,9 +148,9 @@ class PortManager:
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
raise HTTPConflict(text="Could not find a free port between {} and {} on host {}, last exception: {}".format(start_port,
|
raise HTTPConflict(text="Could not find a free port between {} and {} on host {}, last exception: {}".format(start_port,
|
||||||
end_port,
|
end_port,
|
||||||
host,
|
host,
|
||||||
last_exception))
|
last_exception))
|
||||||
|
|
||||||
def get_free_console_port(self):
|
def get_free_console_port(self):
|
||||||
"""
|
"""
|
||||||
|
@ -45,11 +45,9 @@ class Project:
|
|||||||
if location is None:
|
if location is None:
|
||||||
self._location = tempfile.mkdtemp()
|
self._location = tempfile.mkdtemp()
|
||||||
|
|
||||||
self._path = os.path.join(self._location, self._uuid, "vms")
|
self._path = os.path.join(self._location, self._uuid)
|
||||||
try:
|
try:
|
||||||
os.makedirs(self._path)
|
os.makedirs(os.path.join(self._path, 'vms'), exist_ok=True)
|
||||||
except FileExistsError:
|
|
||||||
pass
|
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
raise aiohttp.web.HTTPInternalServerError(text="Could not create project directory: {}".format(e))
|
raise aiohttp.web.HTTPInternalServerError(text="Could not create project directory: {}".format(e))
|
||||||
|
|
||||||
@ -68,22 +66,23 @@ class Project:
|
|||||||
|
|
||||||
return self._path
|
return self._path
|
||||||
|
|
||||||
def vm_working_directory(self, vm_uuid):
|
def vm_working_directory(self, module, vm_uuid):
|
||||||
"""
|
"""
|
||||||
Return a working directory for a specific VM.
|
Return a working directory for a specific VM.
|
||||||
If the directory doesn't exist, the directory is created.
|
If the directory doesn't exist, the directory is created.
|
||||||
|
|
||||||
|
:param module: The module name (vpcs, dynamips...)
|
||||||
:param vm_uuid: VM UUID
|
:param vm_uuid: VM UUID
|
||||||
"""
|
"""
|
||||||
|
|
||||||
path = os.path.join(self._path, "vms", vm_uuid)
|
p = os.path.join(self._path, "vms", module, vm_uuid)
|
||||||
try:
|
try:
|
||||||
os.makedirs(self._path)
|
os.makedirs(p, exist_ok=True)
|
||||||
except FileExistsError:
|
except FileExistsError:
|
||||||
pass
|
pass
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
raise aiohttp.web.HTTPInternalServerError(text="Could not create VM working directory: {}".format(e))
|
raise aiohttp.web.HTTPInternalServerError(text="Could not create VM working directory: {}".format(e))
|
||||||
return path
|
return p
|
||||||
|
|
||||||
def __json__(self):
|
def __json__(self):
|
||||||
|
|
||||||
|
@ -33,7 +33,6 @@ import shutil
|
|||||||
|
|
||||||
from .virtualbox_error import VirtualBoxError
|
from .virtualbox_error import VirtualBoxError
|
||||||
from ..adapters.ethernet_adapter import EthernetAdapter
|
from ..adapters.ethernet_adapter import EthernetAdapter
|
||||||
from ..attic import find_unused_port
|
|
||||||
from .telnet_server import TelnetServer
|
from .telnet_server import TelnetServer
|
||||||
from ..base_vm import BaseVM
|
from ..base_vm import BaseVM
|
||||||
|
|
||||||
@ -105,7 +104,6 @@ class VirtualBoxVM(BaseVM):
|
|||||||
# create the device own working directory
|
# create the device own working directory
|
||||||
self.working_dir = working_dir_path
|
self.working_dir = working_dir_path
|
||||||
|
|
||||||
|
|
||||||
if linked_clone:
|
if linked_clone:
|
||||||
if vbox_id and os.path.isdir(os.path.join(self.working_dir, self._vmname)):
|
if vbox_id and os.path.isdir(os.path.join(self.working_dir, self._vmname)):
|
||||||
vbox_file = os.path.join(self.working_dir, self._vmname, self._vmname + ".vbox")
|
vbox_file = os.path.join(self.working_dir, self._vmname, self._vmname + ".vbox")
|
||||||
|
@ -43,6 +43,7 @@ log = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class VPCSVM(BaseVM):
|
class VPCSVM(BaseVM):
|
||||||
|
module_name = 'vpcs'
|
||||||
|
|
||||||
"""
|
"""
|
||||||
VPCS vm implementation.
|
VPCS vm implementation.
|
||||||
|
@ -151,11 +151,12 @@ def server(request, loop):
|
|||||||
port = _get_unused_port()
|
port = _get_unused_port()
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
|
port_manager = PortManager("127.0.0.1", False)
|
||||||
for method, route, handler in Route.get_routes():
|
for method, route, handler in Route.get_routes():
|
||||||
app.router.add_route(method, route, handler)
|
app.router.add_route(method, route, handler)
|
||||||
for module in MODULES:
|
for module in MODULES:
|
||||||
instance = module.instance()
|
instance = module.instance()
|
||||||
instance.port_manager = PortManager("127.0.0.1", False)
|
instance.port_manager = port_manager
|
||||||
srv = loop.create_server(app.make_handler(), host, port)
|
srv = loop.create_server(app.make_handler(), host, port)
|
||||||
srv = loop.run_until_complete(srv)
|
srv = loop.run_until_complete(srv)
|
||||||
|
|
||||||
|
@ -47,5 +47,5 @@ def test_json(tmpdir):
|
|||||||
|
|
||||||
def test_vm_working_directory(tmpdir):
|
def test_vm_working_directory(tmpdir):
|
||||||
p = Project(location=str(tmpdir))
|
p = Project(location=str(tmpdir))
|
||||||
assert os.path.exists(p.vm_working_directory('00010203-0405-0607-0809-0a0b0c0d0e0f'))
|
assert os.path.exists(p.vm_working_directory('vpcs', '00010203-0405-0607-0809-0a0b0c0d0e0f'))
|
||||||
assert os.path.exists(os.path.join(str(tmpdir), p.uuid, 'vms', '00010203-0405-0607-0809-0a0b0c0d0e0f'))
|
assert os.path.exists(os.path.join(str(tmpdir), p.uuid, 'vms', 'vpcs', '00010203-0405-0607-0809-0a0b0c0d0e0f'))
|
||||||
|
Loading…
Reference in New Issue
Block a user