mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 14:01:15 +02:00
Return command_line and node_directory via the controller
This commit is contained in:
167 files changed
+5280
-33
No files matched your search
@@ -105,7 +105,7 @@ class DockerVM(BaseNode):
|
||||
"aux": self.aux,
|
||||
"start_command": self.start_command,
|
||||
"environment": self.environment,
|
||||
"vm_directory": self.working_dir
|
||||
"node_directory": self.working_dir
|
||||
}
|
||||
|
||||
def _get_free_display_port(self):
|
||||
|
||||
@@ -112,7 +112,7 @@ class Router(BaseNode):
|
||||
|
||||
router_info = {"name": self.name,
|
||||
"node_id": self.id,
|
||||
"vm_directory": os.path.join(self.project.module_working_directory(self.manager.module_name.lower())),
|
||||
"node_directory": os.path.join(self.project.module_working_directory(self.manager.module_name.lower())),
|
||||
"project_id": self.project.id,
|
||||
"dynamips_id": self._dynamips_id,
|
||||
"platform": self._platform,
|
||||
|
||||
@@ -203,7 +203,7 @@ class IOUVM(BaseNode):
|
||||
|
||||
iou_vm_info = {"name": self.name,
|
||||
"node_id": self.id,
|
||||
"vm_directory": self.working_dir,
|
||||
"node_directory": self.working_dir,
|
||||
"console": self._console,
|
||||
"project_id": self.project.id,
|
||||
"path": self.path,
|
||||
|
||||
@@ -496,9 +496,9 @@ class Project:
|
||||
self._export_project_file(path, z, include_images)
|
||||
else:
|
||||
# We merge the data from all server in the same project-files directory
|
||||
vm_directory = os.path.join(self._path, "servers", "vm")
|
||||
if os.path.commonprefix([root, vm_directory]) == vm_directory:
|
||||
z.write(path, os.path.relpath(path, vm_directory))
|
||||
node_directory = os.path.join(self._path, "servers", "vm")
|
||||
if os.path.commonprefix([root, node_directory]) == node_directory:
|
||||
z.write(path, os.path.relpath(path, node_directory))
|
||||
else:
|
||||
z.write(path, os.path.relpath(path, self._path))
|
||||
return z
|
||||
@@ -590,14 +590,14 @@ class Project:
|
||||
"docker": "DockerVM"
|
||||
}
|
||||
|
||||
vm_directory = os.path.join(self.path, "servers", "vm", "project-files")
|
||||
node_directory = os.path.join(self.path, "servers", "vm", "project-files")
|
||||
vm_server_use = False
|
||||
|
||||
for module, vm_type in modules_to_vm.items():
|
||||
module_directory = os.path.join(self.path, "project-files", module)
|
||||
if os.path.exists(module_directory):
|
||||
os.makedirs(vm_directory, exist_ok=True)
|
||||
shutil.move(module_directory, os.path.join(vm_directory, module))
|
||||
os.makedirs(node_directory, exist_ok=True)
|
||||
shutil.move(module_directory, os.path.join(node_directory, module))
|
||||
|
||||
# Patch node to use the GNS3 VM
|
||||
for node in topology["topology"]["nodes"]:
|
||||
|
||||
@@ -1449,7 +1449,7 @@ class QemuVM(BaseNode):
|
||||
answer = {
|
||||
"project_id": self.project.id,
|
||||
"node_id": self.id,
|
||||
"vm_directory": self.working_dir
|
||||
"node_directory": self.working_dir
|
||||
}
|
||||
# Qemu has a long list of options. The JSON schema is the single source of information
|
||||
for field in QEMU_OBJECT_SCHEMA["required"]:
|
||||
|
||||
@@ -87,9 +87,9 @@ class VirtualBoxVM(BaseNode):
|
||||
"ram": self.ram,
|
||||
"use_any_adapter": self.use_any_adapter}
|
||||
if self._linked_clone:
|
||||
json["vm_directory"] = self.working_dir
|
||||
json["node_directory"] = self.working_dir
|
||||
else:
|
||||
json["vm_directory"] = None
|
||||
json["node_directory"] = None
|
||||
return json
|
||||
|
||||
@asyncio.coroutine
|
||||
|
||||
@@ -91,7 +91,7 @@ class VMwareVM(BaseNode):
|
||||
"adapter_type": self.adapter_type,
|
||||
"use_ubridge": self.use_ubridge,
|
||||
"use_any_adapter": self.use_any_adapter,
|
||||
"vm_directory": self.working_dir}
|
||||
"node_directory": self.working_dir}
|
||||
return json
|
||||
|
||||
@property
|
||||
|
||||
@@ -109,7 +109,7 @@ class VPCSVM(BaseNode):
|
||||
|
||||
return {"name": self.name,
|
||||
"node_id": self.id,
|
||||
"vm_directory": self.working_dir,
|
||||
"node_directory": self.working_dir,
|
||||
"status": self.status,
|
||||
"console": self._console,
|
||||
"console_type": "telnet",
|
||||
|
||||
@@ -47,6 +47,8 @@ class Node:
|
||||
self._console = console
|
||||
self._console_type = console_type
|
||||
self._properties = properties
|
||||
self._command_line = None
|
||||
self._node_directory = None
|
||||
|
||||
@property
|
||||
def id(self):
|
||||
@@ -130,7 +132,11 @@ class Node:
|
||||
for key, value in response.json.items():
|
||||
if key == "console":
|
||||
self._console = value
|
||||
elif key in ["console_type", "name", "node_id", "project_id", "vm_directory", "command_line", "status"]:
|
||||
elif key == "node_directory":
|
||||
self._node_directory = value
|
||||
elif key == "command_line":
|
||||
self._command_line = value
|
||||
elif key in ["console_type", "name", "node_id", "project_id", "status"]:
|
||||
pass
|
||||
else:
|
||||
self._properties[key] = value
|
||||
@@ -225,8 +231,10 @@ class Node:
|
||||
"project_id": self._project.id,
|
||||
"node_id": self._id,
|
||||
"node_type": self._node_type,
|
||||
"node_directory": self._node_directory,
|
||||
"name": self._name,
|
||||
"console": self._console,
|
||||
"console_type": self._console_type,
|
||||
"command_line": self._command_line,
|
||||
"properties": self._properties
|
||||
}
|
||||
@@ -229,13 +229,13 @@ DOCKER_OBJECT_SCHEMA = {
|
||||
"type": ["string", "null"],
|
||||
"minLength": 0,
|
||||
},
|
||||
"vm_directory": {
|
||||
"node_directory": {
|
||||
"decription": "Path to the VM working directory",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"additionalProperties": False,
|
||||
"required": ["node_id", "project_id", "image", "container_id", "adapters", "aux", "console", "console_type", "console_resolution", "start_command", "environment", "vm_directory"]
|
||||
"required": ["node_id", "project_id", "image", "container_id", "adapters", "aux", "console", "console_type", "console_resolution", "start_command", "environment", "node_directory"]
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -516,7 +516,7 @@ VM_OBJECT_SCHEMA = {
|
||||
"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}$"
|
||||
},
|
||||
"vm_directory": {
|
||||
"node_directory": {
|
||||
"decription": "Path to the vm working directory",
|
||||
"type": "string"
|
||||
},
|
||||
|
||||
@@ -194,7 +194,7 @@ IOU_OBJECT_SCHEMA = {
|
||||
"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}$"
|
||||
},
|
||||
"vm_directory": {
|
||||
"node_directory": {
|
||||
"decription": "Path to the VM working directory",
|
||||
"type": "string"
|
||||
},
|
||||
|
||||
@@ -87,6 +87,14 @@ NODE_OBJECT_SCHEMA = {
|
||||
"description": "Type of node",
|
||||
"enum": ["docker", "dynamips", "vpcs", "virtualbox", "vmware", "iou", "qemu"]
|
||||
},
|
||||
"node_directory": {
|
||||
"description": "Working directory of the node. Read only",
|
||||
"type": ["null", "string"]
|
||||
},
|
||||
"command_line": {
|
||||
"description": "Command line use to start the node",
|
||||
"type": ["null", "string"]
|
||||
},
|
||||
"name": {
|
||||
"description": "Node name",
|
||||
"type": "string",
|
||||
|
||||
@@ -470,7 +470,7 @@ QEMU_OBJECT_SCHEMA = {
|
||||
"description": "QEMU boot priority",
|
||||
"enum": ["c", "d", "n", "cn", "cd"]
|
||||
},
|
||||
"vm_directory": {
|
||||
"node_directory": {
|
||||
"decription": "Path to the VM working directory",
|
||||
"type": "string"
|
||||
},
|
||||
@@ -602,7 +602,7 @@ QEMU_OBJECT_SCHEMA = {
|
||||
"cpu_throttling",
|
||||
"process_priority",
|
||||
"options",
|
||||
"vm_directory",
|
||||
"node_directory",
|
||||
"command_line"]
|
||||
}
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@ VBOX_OBJECT_SCHEMA = {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
},
|
||||
"vm_directory": {
|
||||
"node_directory": {
|
||||
"decription": "Path to the VM working directory",
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
@@ -222,5 +222,5 @@ VBOX_OBJECT_SCHEMA = {
|
||||
},
|
||||
},
|
||||
"additionalProperties": False,
|
||||
"required": ["name", "node_id", "project_id", "vm_directory"]
|
||||
"required": ["name", "node_id", "project_id", "node_directory"]
|
||||
}
|
||||
@@ -158,7 +158,7 @@ VMWARE_OBJECT_SCHEMA = {
|
||||
"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}$"
|
||||
},
|
||||
"vm_directory": {
|
||||
"node_directory": {
|
||||
"decription": "Path to the VM working directory",
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
|
||||
@@ -104,7 +104,7 @@ VPCS_OBJECT_SCHEMA = {
|
||||
"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}$"
|
||||
},
|
||||
"vm_directory": {
|
||||
"node_directory": {
|
||||
"decription": "Path to the VM working directory",
|
||||
"type": "string"
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user