示例#1
0
    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)
示例#2
0
 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)
示例#3
0
文件: api.py 项目: masom/Puck
    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
示例#4
0
    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")
示例#5
0
文件: api.py 项目: masom/Puck
    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.'}
示例#6
0
文件: api.py 项目: masom/Puck
    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.'}
示例#7
0
文件: api.py 项目: masom/Puck
    def GET(self, id):
        vm = VirtualMachines.first(id=id)
        if not vm:
            raise cherrypy.HTTPError(status=404)

        return vm.to_dict()
示例#8
0
文件: api.py 项目: masom/Puck
 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()
示例#9
0
 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