mirror of
https://github.com/GNS3/gns3-server.git
synced 2025-01-17 23:13:49 +02:00
Return compute port information via API. Ref #1420.
This commit is contained in:
parent
eb97ebf311
commit
22f7ca0243
@ -67,6 +67,13 @@ class PortManager:
|
|||||||
cls._instance = cls()
|
cls._instance = cls()
|
||||||
return cls._instance
|
return cls._instance
|
||||||
|
|
||||||
|
def __json__(self):
|
||||||
|
|
||||||
|
return {"console_port_range": self._console_port_range,
|
||||||
|
"console_ports": list(self._used_tcp_ports),
|
||||||
|
"udp_port_range": self._udp_port_range,
|
||||||
|
"udp_ports": list(self._used_udp_ports)}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def console_host(self):
|
def console_host(self):
|
||||||
|
|
||||||
|
@ -769,3 +769,15 @@ class Controller:
|
|||||||
yield from project.delete()
|
yield from project.delete()
|
||||||
self.remove_project(project)
|
self.remove_project(project)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
@asyncio.coroutine
|
||||||
|
def compute_ports(self, compute_id):
|
||||||
|
"""
|
||||||
|
Get the ports used by a compute.
|
||||||
|
|
||||||
|
:param compute_id: ID of the compute
|
||||||
|
"""
|
||||||
|
|
||||||
|
compute = self.get_compute(compute_id)
|
||||||
|
response = yield from compute.get("/network/ports")
|
||||||
|
return response.json
|
||||||
|
@ -49,3 +49,11 @@ class NetworkHandler:
|
|||||||
|
|
||||||
network_interfaces = interfaces()
|
network_interfaces = interfaces()
|
||||||
response.json(network_interfaces)
|
response.json(network_interfaces)
|
||||||
|
|
||||||
|
@Route.get(
|
||||||
|
r"/network/ports",
|
||||||
|
description="List all the ports used by the server")
|
||||||
|
def network_ports(request, response):
|
||||||
|
|
||||||
|
m = PortManager.instance()
|
||||||
|
response.json(m)
|
||||||
|
@ -22,7 +22,8 @@ from gns3server.schemas.compute import (
|
|||||||
COMPUTE_CREATE_SCHEMA,
|
COMPUTE_CREATE_SCHEMA,
|
||||||
COMPUTE_OBJECT_SCHEMA,
|
COMPUTE_OBJECT_SCHEMA,
|
||||||
COMPUTE_UPDATE_SCHEMA,
|
COMPUTE_UPDATE_SCHEMA,
|
||||||
COMPUTE_ENDPOINT_OUTPUT_OBJECT_SCHEMA
|
COMPUTE_ENDPOINT_OUTPUT_OBJECT_SCHEMA,
|
||||||
|
COMPUTE_PORTS_OBJECT_SCHEMA
|
||||||
)
|
)
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
@ -214,4 +215,19 @@ class ComputeHandler:
|
|||||||
controller = Controller.instance()
|
controller = Controller.instance()
|
||||||
res = yield from controller.autoidlepc(request.match_info["compute_id"], request.json["platform"], request.json["image"], request.json["ram"])
|
res = yield from controller.autoidlepc(request.match_info["compute_id"], request.json["platform"], request.json["image"], request.json["ram"])
|
||||||
response.json(res)
|
response.json(res)
|
||||||
response.set_status(200)
|
|
||||||
|
@Route.get(
|
||||||
|
r"/computes/{compute_id}/ports",
|
||||||
|
parameters={
|
||||||
|
"compute_id": "Compute UUID"
|
||||||
|
},
|
||||||
|
status_codes={
|
||||||
|
200: "Ports information returned",
|
||||||
|
},
|
||||||
|
description="Get ports used by a compute",
|
||||||
|
output=COMPUTE_PORTS_OBJECT_SCHEMA)
|
||||||
|
def ports(request, response):
|
||||||
|
controller = Controller.instance()
|
||||||
|
res = yield from controller.compute_ports(request.match_info["compute_id"])
|
||||||
|
response.json(res)
|
||||||
|
|
||||||
|
@ -127,3 +127,56 @@ COMPUTE_ENDPOINT_OUTPUT_OBJECT_SCHEMA = {
|
|||||||
"additionalProperties": False,
|
"additionalProperties": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
COMPUTE_PORTS_OBJECT_SCHEMA = {
|
||||||
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||||
|
"description": "Output schema for open ports on a compute",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"console_port_range": {
|
||||||
|
"description": "Console port range",
|
||||||
|
"type": "array",
|
||||||
|
"uniqueItems": True,
|
||||||
|
"minItems": 2,
|
||||||
|
"maxItems": 2,
|
||||||
|
"items": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 1,
|
||||||
|
"maximum": 65535
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"console_ports": {
|
||||||
|
"description": "Console ports used by the compute",
|
||||||
|
"type": "array",
|
||||||
|
"uniqueItems": True,
|
||||||
|
"items": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 1,
|
||||||
|
"maximum": 65535
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"udp_port_range": {
|
||||||
|
"description": "UDP port range",
|
||||||
|
"type": "array",
|
||||||
|
"uniqueItems": True,
|
||||||
|
"minItems": 2,
|
||||||
|
"maxItems": 2,
|
||||||
|
"items": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 1,
|
||||||
|
"maximum": 65535
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"udp_ports": {
|
||||||
|
"description": "UDP ports used by the compute",
|
||||||
|
"type": "array",
|
||||||
|
"uniqueItems": True,
|
||||||
|
"items": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 1,
|
||||||
|
"maximum": 65535
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"additionalProperties": False,
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user