mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-11-03 05:51:15 +02:00
Working dedicated appliance management API. Ref https://github.com/GNS3/gns3-server/issues/1427
This commit is contained in:
1 parent
f0fe9d39fa
commit
089fdff4f1
5 files changed
+55
-35
No files matched your search
@@ -20,6 +20,9 @@ from gns3server.controller import Controller
|
||||
from gns3server.schemas.node import NODE_OBJECT_SCHEMA
|
||||
from gns3server.schemas.appliance import APPLIANCE_USAGE_SCHEMA
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
|
||||
from gns3server.schemas.appliance import (
|
||||
APPLIANCE_OBJECT_SCHEMA,
|
||||
APPLIANCE_UPDATE_SCHEMA,
|
||||
@@ -74,10 +77,17 @@ class ApplianceHandler:
|
||||
output=APPLIANCE_OBJECT_SCHEMA)
|
||||
def get(request, response):
|
||||
|
||||
request_etag = request.headers.get("If-None-Match", "")
|
||||
controller = Controller.instance()
|
||||
appliance = controller.get_appliance(request.match_info["appliance_id"])
|
||||
response.set_status(200)
|
||||
response.json(appliance)
|
||||
data = json.dumps(appliance.__json__())
|
||||
appliance_etag = '"' + hashlib.md5(data.encode()).hexdigest() + '"'
|
||||
if appliance_etag == request_etag:
|
||||
response.set_status(304)
|
||||
else:
|
||||
response.headers["ETag"] = appliance_etag
|
||||
response.set_status(200)
|
||||
response.json(appliance)
|
||||
|
||||
@Route.put(
|
||||
r"/appliances/{appliance_id}",
|
||||
@@ -93,8 +103,7 @@ class ApplianceHandler:
|
||||
|
||||
controller = Controller.instance()
|
||||
appliance = controller.get_appliance(request.match_info["appliance_id"])
|
||||
#TODO: update appliance!
|
||||
#appliance.settings = request.json
|
||||
appliance.update(**request.json)
|
||||
response.set_status(200)
|
||||
response.json(appliance)
|
||||
|
||||
@@ -123,8 +132,6 @@ class ApplianceHandler:
|
||||
})
|
||||
def list(request, response):
|
||||
|
||||
#old_etag = request.headers.get('If-None-Match', '')
|
||||
#print("ETAG => ", old_etag)
|
||||
controller = Controller.instance()
|
||||
response.json([c for c in controller.appliances.values()])
|
||||
|
||||
|
||||
Reference in new issue
Block a user