def running(self): creds = cherrypy.session.get('credentials') vms = VirtualMachines.all() images = Images.all() instances = VirtualMachines.get_instances(creds) env = dict( virtual_machines=vms, instances=instances, images=images, ) return self.render("virtual_machines/running.html", self.crumbs,**env)
def index(self): user_id = cherrypy.session.get('user.id') vms = VirtualMachines.find(user_id=user_id) env = dict( virtual_machines=vms, images=Images.all(), instance_types=InstanceTypes.all() ) return self.render("virtual_machines/index.html", self.crumbs, **env)
def GET(self, id): vm = VirtualMachines.first(id=id) if not vm: raise cherrypy.HTTPError(status=404) try: config = json.loads(vm.config) except (ValueError,TypeError): return None return config
def start(self, **post): if post: self._validate_start_post_data(post) creds = cherrypy.session.get('credentials') image = Images.first(id=post['image.id']) instance_type = self._get_instance_type(post) self._validate_start_args(image, instance_type) vm = VirtualMachines.new(status="new") if VirtualMachines.add(vm): if not vm.start_instance(image, instance_type, creds): cherrypy.session['flash'] = 'The virtual machine could not be started.' raise cherrypy.HTTPRedirect("/virtual_machines") else: cherrypy.session['flash'] = 'Missing image id.' raise cherrypy.HTTPRedirect("/virtual_machines")
def PUT(self, id): vm = VirtualMachines.first(id=id) if not vm: raise cherrypy.HTTPError(status=404) data = cherrypy.request.json for k in ['id', 'status']: if not data.has_key(k): raise cherrypy.HTTPError(status=400) if not id == data['id']: raise cherrypy.HTTPError(status=400) if not vm.update(data, ['status']): raise cherrypy.HTTPError(status=500) return {'status': 200, 'message': 'Status updated.'}
def PUT(self, id, **post): vm = VirtualMachines.first(id=id) if not vm: raise cherrypy.HTTPError(status=404) try: config = json.loads(vm.config) except (ValueError,TypeError): config = {} for k in cherrypy.request.json: value = cherrypy.request.json[k] if value is None: del config[k] continue config[k] = value data = {'config': json.dumps(config)} vm.update(data, ['config']) return {'status': 200, 'message': 'Configuration updated.'}
def GET(self, id): vm = VirtualMachines.first(id=id) if not vm: raise cherrypy.HTTPError(status=404) return vm.to_dict()
def POST(self): # TODO Check if the ip already has an assigned VM # We might have to figure a way to generate a unique id on the VM side vm = VirtualMachines.new(ip=cherrypy.request.remote.ip) VirtualMachines.add(vm) return vm.to_dict()
def _get_vm(self, id): vm = VirtualMachines.first(id=id) if not vm: cherrypy.session['flash'] = "Invalid virtual machine." raise cherrypy.HTTPRedirect('/virtual_machines') return vm