Misc improvements & cleanup
This commit is contained in:
parent
8fa022ba98
commit
79bf279f4a
|
@ -15,5 +15,6 @@
|
||||||
"path": "/media/realm/tmp/qemu-testin/banto/",
|
"path": "/media/realm/tmp/qemu-testin/banto/",
|
||||||
"init": true
|
"init": true
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"apiport": 3000
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ class ZApi(object):
|
||||||
# self.app_root = BSApiRoot(self).mount('/api')
|
# self.app_root = BSApiRoot(self).mount('/api')
|
||||||
# self.ui = Mountable(conf={'/': {
|
# self.ui = Mountable(conf={'/': {
|
||||||
# 'tools.staticdir.on': True,
|
# 'tools.staticdir.on': True,
|
||||||
# 'tools.staticdir.dir': os.getcwd() + '/ui/build', # TODO don't hardcode
|
# 'tools.staticdir.dir': os.getcwd() + '/ui/build',
|
||||||
# 'tools.staticdir.index': 'index.html'}}).mount('/ui')
|
# 'tools.staticdir.index': 'index.html'}}).mount('/ui')
|
||||||
|
|
||||||
cherrypy.config.update({
|
cherrypy.config.update({
|
||||||
|
@ -43,7 +43,7 @@ class ZApi(object):
|
||||||
'tools.sessions.locking': 'explicit',
|
'tools.sessions.locking': 'explicit',
|
||||||
'tools.sessions.timeout': 525600,
|
'tools.sessions.timeout': 525600,
|
||||||
'request.show_tracebacks': True,
|
'request.show_tracebacks': True,
|
||||||
'server.socket_port': 3000, # TODO configurable port
|
'server.socket_port': self.master.config.get("apiport", 3000),
|
||||||
'server.thread_pool': 25,
|
'server.thread_pool': 25,
|
||||||
'server.socket_host': '0.0.0.0',
|
'server.socket_host': '0.0.0.0',
|
||||||
'server.show_tracebacks': True,
|
'server.show_tracebacks': True,
|
||||||
|
@ -70,7 +70,7 @@ class ZApiV1(Mountable):
|
||||||
super().__init__(conf={
|
super().__init__(conf={
|
||||||
"/machine": {'request.dispatch': cherrypy.dispatch.MethodDispatcher()},
|
"/machine": {'request.dispatch': cherrypy.dispatch.MethodDispatcher()},
|
||||||
"/disk": {'request.dispatch': cherrypy.dispatch.MethodDispatcher()},
|
"/disk": {'request.dispatch': cherrypy.dispatch.MethodDispatcher()},
|
||||||
# "/task": {'request.dispatch': cherrypy.dispatch.MethodDispatcher()}, # @TODO this conf belongs in the child
|
# "/task": {'request.dispatch': cherrypy.dispatch.MethodDispatcher()},
|
||||||
# "/logs": {
|
# "/logs": {
|
||||||
# 'tools.staticdir.on': True,
|
# 'tools.staticdir.on': True,
|
||||||
# 'tools.staticdir.dir': root.master.log_path,
|
# 'tools.staticdir.dir': root.master.log_path,
|
||||||
|
@ -142,7 +142,6 @@ class ZApiMachineRestart(object):
|
||||||
def GET(self, machine_id=None):
|
def GET(self, machine_id=None):
|
||||||
"""
|
"""
|
||||||
Start the machine
|
Start the machine
|
||||||
TODO can we not repeat this from Stop/Start?
|
|
||||||
"""
|
"""
|
||||||
assert machine_id in self.root.master.machines
|
assert machine_id in self.root.master.machines
|
||||||
self.root.master.forceful_stop(machine_id)
|
self.root.master.forceful_stop(machine_id)
|
||||||
|
@ -271,12 +270,6 @@ class ZApiDisks():
|
||||||
:param disk_id: id of disk to create or modify
|
:param disk_id: id of disk to create or modify
|
||||||
'param disk_spec: json dictionary describing the disk. see the 'spec' key of example/ubuntu-root.json
|
'param disk_spec: json dictionary describing the disk. see the 'spec' key of example/ubuntu-root.json
|
||||||
"""
|
"""
|
||||||
|
|
||||||
assert disk_id not in self.root.master.disks or \
|
|
||||||
self.root.master.disks[disk_id].get_status() == "idle", \
|
|
||||||
"Disk must not be attached to modify" # TODO to a running machine?
|
|
||||||
# TODO move asserts out of the API
|
|
||||||
|
|
||||||
disk_spec = json.loads(disk_spec)
|
disk_spec = json.loads(disk_spec)
|
||||||
self.root.master.add_disk(disk_id, disk_spec, write=True)
|
self.root.master.add_disk(disk_id, disk_spec, write=True)
|
||||||
return disk_id
|
return disk_id
|
||||||
|
@ -286,11 +279,5 @@ class ZApiDisks():
|
||||||
Delete a disk. Raises 404 if no such disk exists. Raises error if disk is not idle (detached)
|
Delete a disk. Raises 404 if no such disk exists. Raises error if disk is not idle (detached)
|
||||||
:param disk_id: ID of disk to remove
|
:param disk_id: ID of disk to remove
|
||||||
"""
|
"""
|
||||||
try:
|
|
||||||
assert self.root.master.disks[disk_id].get_status() == "idle", \
|
|
||||||
"Disk must be detached to delete"
|
|
||||||
except KeyError:
|
|
||||||
raise cherrypy.HTTPError(status=404)
|
|
||||||
|
|
||||||
self.root.master.remove_disk(disk_id)
|
self.root.master.remove_disk(disk_id)
|
||||||
return disk_id
|
return disk_id
|
||||||
|
|
|
@ -100,7 +100,7 @@ class ZHypervisorDaemon(object):
|
||||||
"""
|
"""
|
||||||
Create a disk
|
Create a disk
|
||||||
"""
|
"""
|
||||||
assert disk_id not in self.disks, "Cannot update disks"
|
assert disk_id not in self.disks, "Cannot update disks, only create supported"
|
||||||
disk_type = disk_spec["options"]["type"]
|
disk_type = disk_spec["options"]["type"]
|
||||||
disk_datastore = disk_spec["options"]["datastore"]
|
disk_datastore = disk_spec["options"]["datastore"]
|
||||||
datastore = self.datastores[disk_datastore]
|
datastore = self.datastores[disk_datastore]
|
||||||
|
@ -122,7 +122,6 @@ class ZHypervisorDaemon(object):
|
||||||
"""
|
"""
|
||||||
Remove a disk from the system
|
Remove a disk from the system
|
||||||
"""
|
"""
|
||||||
assert self.disks[disk_id].get_status() == "idle", "Disk must be idle to delete"
|
|
||||||
self.disks[disk_id].delete()
|
self.disks[disk_id].delete()
|
||||||
del self.disks[disk_id]
|
del self.disks[disk_id]
|
||||||
self.state.remove_disk(disk_id)
|
self.state.remove_disk(disk_id)
|
||||||
|
|
|
@ -91,8 +91,5 @@ class ZDisk(object):
|
||||||
return {"options": self.options,
|
return {"options": self.options,
|
||||||
"properties": self.properties}
|
"properties": self.properties}
|
||||||
|
|
||||||
def get_status(self):
|
|
||||||
return "idle" # TODO
|
|
||||||
|
|
||||||
def delete(self):
|
def delete(self):
|
||||||
raise NotImplemented()
|
raise NotImplemented()
|
||||||
|
|
Loading…
Reference in New Issue