Allow user to set console port

This commit is contained in:
Julien Duponchelle committed 2015-01-20 20:54:46 +01:00
1 parent 57c3463edc
commit 649d4e5143
8 files changed
+27 -14

No files matched your search

+1
View File
@@ -44,6 +44,7 @@ class VPCSHandler:
vm = yield from vpcs.create_vm(request.json["name"],
request.json["project_uuid"],
uuid=request.json.get("uuid"),
console=request.json.get("console"),
script_file=request.json.get("script_file"))
response.json(vm)
+2
View File
@@ -157,6 +157,7 @@ class PortManager:
Get an available TCP console port and reserve it
"""
print("FREE")
port = self.find_unused_port(self._console_port_range[0],
self._console_port_range[1],
host=self._console_host,
@@ -176,6 +177,7 @@ class PortManager:
if port in self._used_tcp_ports:
raise HTTPConflict(reason="TCP port already {} in use on host".format(port, self._console_host))
self._used_tcp_ports.add(port)
return port
def release_console_port(self, port):
"""
+7 -10
View File
@@ -72,13 +72,10 @@ class VPCSVM(BaseVM):
self._script_file = script_file
self._ethernet_adapter = EthernetAdapter() # one adapter with 1 Ethernet interface
try:
if not self._console:
self._console = self._manager.port_manager.get_free_console_port()
else:
self._console = self._manager.port_manager.reserve_console_port(self._console)
except Exception as e:
raise VPCSError(e)
if self._console is not None:
self._console = self._manager.port_manager.reserve_console_port(self._console)
else:
self._console = self._manager.port_manager.get_free_console_port()
self._check_requirements()
@@ -106,9 +103,9 @@ class VPCSVM(BaseVM):
def __json__(self):
return {"name": self.name,
"uuid": self.uuid,
"console": self.console,
return {"name": self._name,
"uuid": self._uuid,
"console": self._console,
"project_uuid": self.project.uuid,
"script_file": self.script_file}
+1 -1
View File
@@ -48,7 +48,7 @@ VPCS_CREATE_SCHEMA = {
"description": "console TCP port",
"minimum": 1,
"maximum": 65535,
"type": "integer"
"type": ["integer", "null"]
},
"script_file": {
"description": "VPCS startup script",
+3 -1
View File
@@ -49,6 +49,8 @@ class Response(aiohttp.web.Response):
try:
jsonschema.validate(answer, self._output_schema)
except jsonschema.ValidationError as e:
log.error("Invalid output schema")
log.error("Invalid output schema {} '{}' in schema: {}".format(e.validator,
e.validator_value,
json.dumps(e.schema)))
raise aiohttp.web.HTTPBadRequest(text="{}".format(e))
self.body = json.dumps(answer, indent=4, sort_keys=True).encode('utf-8')
+3 -1
View File
@@ -40,7 +40,9 @@ def parse_request(request, input_schema):
try:
jsonschema.validate(request.json, input_schema)
except jsonschema.ValidationError as e:
log.error("Invalid input schema")
log.error("Invalid input schema {} '{}' in schema: {}".format(e.validator,
e.validator_value,
json.dumps(e.schema)))
raise aiohttp.web.HTTPBadRequest(text="Request is not {} '{}' in schema: {}".format(
e.validator,
e.validator_value,