mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 05:51:15 +02:00
Support script file
This commit is contained in:
1 parent
c30f7ce9a1
commit
fa57485f11
6 files changed
+40
-12
No files matched your search
@@ -41,11 +41,11 @@ class VPCSHandler:
|
||||
def create(request, response):
|
||||
|
||||
vpcs = VPCS.instance()
|
||||
vm = yield from vpcs.create_vm(request.json["name"], request.json["project_uuid"], uuid=request.json.get("uuid"))
|
||||
response.json({"name": vm.name,
|
||||
"uuid": vm.uuid,
|
||||
"console": vm.console,
|
||||
"project_uuid": vm.project.uuid})
|
||||
vm = yield from vpcs.create_vm(request.json["name"],
|
||||
request.json["project_uuid"],
|
||||
uuid=request.json.get("uuid"),
|
||||
script_file=request.json.get("script_file"))
|
||||
response.json(vm)
|
||||
|
||||
@classmethod
|
||||
@Route.post(
|
||||
|
||||
@@ -87,7 +87,7 @@ class BaseManager:
|
||||
return self._vms[uuid]
|
||||
|
||||
@asyncio.coroutine
|
||||
def create_vm(self, name, project_identifier, uuid=None):
|
||||
def create_vm(self, name, project_identifier, uuid=None, **kwargs):
|
||||
"""
|
||||
Create a new VM
|
||||
|
||||
@@ -104,7 +104,7 @@ class BaseManager:
|
||||
if not uuid:
|
||||
uuid = str(uuid4())
|
||||
|
||||
vm = self._VM_CLASS(name, uuid, project, self)
|
||||
vm = self._VM_CLASS(name, uuid, project, self, **kwargs)
|
||||
future = vm.create()
|
||||
if isinstance(future, asyncio.Future):
|
||||
yield from future
|
||||
|
||||
@@ -52,9 +52,10 @@ class VPCSVM(BaseVM):
|
||||
:param project: Project instance
|
||||
:param manager: parent VM Manager
|
||||
:param console: TCP console port
|
||||
:param script_file: A VPCS startup script
|
||||
"""
|
||||
|
||||
def __init__(self, name, uuid, project, manager, console=None):
|
||||
def __init__(self, name, uuid, project, manager, console=None, script_file=None):
|
||||
|
||||
super().__init__(name, uuid, project, manager)
|
||||
|
||||
@@ -68,7 +69,7 @@ class VPCSVM(BaseVM):
|
||||
self._started = False
|
||||
|
||||
# VPCS settings
|
||||
self._script_file = ""
|
||||
self._script_file = script_file
|
||||
self._ethernet_adapter = EthernetAdapter() # one adapter with 1 Ethernet interface
|
||||
|
||||
try:
|
||||
@@ -103,6 +104,14 @@ class VPCSVM(BaseVM):
|
||||
|
||||
self._check_vpcs_version()
|
||||
|
||||
def __json__(self):
|
||||
|
||||
return {"name": self.name,
|
||||
"uuid": self.uuid,
|
||||
"console": self.console,
|
||||
"project_uuid": self.project.uuid,
|
||||
"script_file": self.script_file}
|
||||
|
||||
@property
|
||||
def console(self):
|
||||
"""
|
||||
|
||||
@@ -50,6 +50,10 @@ VPCS_CREATE_SCHEMA = {
|
||||
"maximum": 65535,
|
||||
"type": "integer"
|
||||
},
|
||||
"script_file": {
|
||||
"description": "VPCS startup script",
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
},
|
||||
"additionalProperties": False,
|
||||
"required": ["name", "project_uuid"]
|
||||
@@ -143,7 +147,11 @@ VPCS_OBJECT_SCHEMA = {
|
||||
"minLength": 36,
|
||||
"maxLength": 36,
|
||||
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
|
||||
}
|
||||
},
|
||||
"script_file": {
|
||||
"description": "VPCS startup script",
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
},
|
||||
"additionalProperties": False,
|
||||
"required": ["name", "uuid", "console", "project_uuid"]
|
||||
|
||||
Reference in new issue
Block a user