1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-12-23 23:38:21 +00:00

Merge branch 'master' into 2.2

This commit is contained in:
grossmj 2020-04-28 13:14:53 +09:30
commit 4ddd45f788
5 changed files with 21 additions and 9 deletions

View File

@ -13,7 +13,7 @@ Parameters
Response status codes
**********************
- **201**: Snasphot created
- **201**: Snapshot created
- **404**: The project doesn't exist
Input
@ -54,7 +54,7 @@ Parameters
Response status codes
**********************
- **200**: Snasphot list returned
- **200**: Snapshot list returned
- **404**: The project doesn't exist
Sample session

View File

@ -10,7 +10,7 @@ Delete a snapshot from disk
Parameters
**********
- **project_id**: Project UUID
- **snapshot_id**: Snasphot UUID
- **snapshot_id**: Snapshot UUID
Response status codes
**********************

View File

@ -10,7 +10,7 @@ Restore a snapshot from disk
Parameters
**********
- **project_id**: Project UUID
- **snapshot_id**: Snasphot UUID
- **snapshot_id**: Snapshot UUID
Response status codes
**********************

View File

@ -86,6 +86,7 @@ class DockerVM(BaseNode):
self._telnet_servers = []
self._xvfb_process = None
self._vnc_process = None
self._vncconfig_process = None
self._console_resolution = console_resolution
self._console_http_path = console_http_path
self._console_http_port = console_http_port
@ -615,6 +616,11 @@ class DockerVM(BaseNode):
x11_socket = os.path.join("/tmp/.X11-unix/", "X{}".format(self._display))
await wait_for_file_creation(x11_socket)
# Start vncconfig for tigervnc clipboard support, connection available only after socket creation.
tigervncconfig_path = shutil.which("vncconfig")
if tigervnc_path and tigervncconfig_path:
self._vncconfig_process = await asyncio.create_subprocess_exec(tigervncconfig_path, "-display", ":{}".format(self._display), "-nowin")
# sometimes the VNC process can crash
monitor_process(self._vnc_process, self._vnc_callback)
@ -825,6 +831,12 @@ class DockerVM(BaseNode):
await self.stop()
if self.console_type == "vnc":
if self._vncconfig_process:
try:
self._vncconfig_process.terminate()
await self._vncconfig_process.wait()
except ProcessLookupError:
pass
if self._vnc_process:
try:
self._vnc_process.terminate()

View File

@ -40,7 +40,7 @@ class SnapshotHandler:
input=SNAPSHOT_CREATE_SCHEMA,
output=SNAPSHOT_OBJECT_SCHEMA,
status_codes={
201: "Snasphot created",
201: "Snapshot created",
404: "The project doesn't exist"
})
async def create(request, response):
@ -57,21 +57,21 @@ class SnapshotHandler:
"project_id": "Project UUID",
},
status_codes={
200: "Snasphot list returned",
200: "Snapshot list returned",
404: "The project doesn't exist"
})
def list(request, response):
controller = Controller.instance()
project = controller.get_project(request.match_info["project_id"])
snapshots = [s for s in project.snapshots.values()]
response.json(sorted(snapshots, key=lambda s: s.created_at))
response.json(sorted(snapshots, key=lambda s: (s.created_at, s.name)))
@Route.delete(
r"/projects/{project_id}/snapshots/{snapshot_id}",
description="Delete a snapshot from disk",
parameters={
"project_id": "Project UUID",
"snapshot_id": "Snasphot UUID"
"snapshot_id": "Snapshot UUID"
},
status_codes={
204: "Changes have been written on disk",
@ -89,7 +89,7 @@ class SnapshotHandler:
description="Restore a snapshot from disk",
parameters={
"project_id": "Project UUID",
"snapshot_id": "Snasphot UUID"
"snapshot_id": "Snapshot UUID"
},
output=PROJECT_OBJECT_SCHEMA,
status_codes={