示例#1
0
    def _PUT(self, *param, **params):
        (host_id, guest_id) = self.chk_guestby1(param)
        if guest_id is None: return web.notfound()

        snapshot_id = param[2]
        if not validates_param_id(self, snapshot_id):
            return web.notfound(self.view.alert)

        if not validates_snapshot(self):
            return web.badrequest(self.view.alert)

        guest = m_findbyguest1(self.orm, guest_id)
        if not guest:
            return web.notfound()

        snapshot = s_findbyname_guestby1(self.orm, snapshot_id, guest_id)
        if not snapshot:
            notebook = new_notebook(self.input.title, self.input.value)
            snapshot = new_snapshot(guest, int(snapshot_id), self.me, self.me, notebook)
            save_snapshot(self.orm, snapshot)
        else:
            snapshot.notebook.title = self.input.title
            snapshot.notebook.value = self.input.value

        return web.seeother(web.ctx.path)
示例#2
0
    def _PUT(self, *param, **params):
        (host_id, guest_id) = self.chk_guestby1(param)
        if guest_id is None: return web.notfound()

        snapshot_id = param[2]
        if not validates_param_id(self, snapshot_id):
            return web.notfound(self.view.alert)

        if not validates_snapshot(self):
            return web.badrequest(self.view.alert)

        guest = m_findbyguest1(self.orm, guest_id)
        if not guest:
            return web.notfound()

        snapshot = s_findbyname_guestby1(self.orm, snapshot_id, guest_id)
        if not snapshot:
            notebook = new_notebook(self.input.title, self.input.value)
            snapshot = new_snapshot(guest, int(snapshot_id), self.me, self.me,
                                    notebook)
            save_snapshot(self.orm, snapshot)
        else:
            snapshot.notebook.title = self.input.title
            snapshot.notebook.value = self.input.value

        return web.seeother(web.ctx.path)
示例#3
0
    def _GET(self, *param, **params):
        (host_id, guest_id) = self.chk_guestby1(param)
        if guest_id is None: return web.notfound()
        
        snapshot_id = param[2]
        if not validates_param_id(self, snapshot_id):
            return web.notfound(self.view.alert)

        guest = m_findbyguest1(self.orm, guest_id)
        if not guest:
            return web.notfound()

        kvs = KaresansuiVirtSnapshot(readonly=False)
        snapshot_list = []
        try:
            domname = kvs.kvc.uuid_to_domname(guest.uniq_key)
            if not domname: return web.notfound()
            self.view.is_creatable = kvs.isSupportedDomain(domname)
            try:
                snapshot_list = kvs.listNames(domname)[domname]
            except:
                pass

            parent_name  = kvs.getParentName(snapshot_id,domain=domname)
            if parent_name is None:
                parent_name = _('None')
            children_names = kvs.getChildrenNames(snapshot_id,domain=domname)
            if len(children_names) == 0:
                children_name = _('None')
            else:
                children_name = ",".join(children_names)

            model = s_findbyname_guestby1(self.orm, snapshot_id, guest_id)
            if model is None:
                name           = snapshot_id
                notebook_title = ""
                notebook_value = ""
                created_user   = _("N/A")
                created        = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(snapshot_id)))
                modified_user  = _("N/A")
                modified       = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(int(snapshot_id)))
            else:
                name           = model.name
                notebook_title = model.notebook.title
                notebook_value = model.notebook.value
                created_user   = model.created_user.nickname
                created        = model.created
                modified_user  = model.modified_user.nickname
                modified       = model.modified

            current_snapshot = kvs.getCurrentSnapshotName(domname)

            current = False
            if snapshot_id == current_snapshot:
                current = True

        finally:
            kvs.finish()

        if not snapshot_id in snapshot_list:
            self.logger.error(_("The specified snapshot does not exist. - %s") % snapshot_id)
            return web.notfound()

        if self.__template__["media"] == 'json':
            self.view.snapshot = json_dumps((
                                  snapshot_id,
                                  notebook_title,
                                  notebook_value,
                                  domname,
                                  created_user,
                                  created,
                                  modified_user,
                                  modified,
                                  current,
                                  parent_name,
                                  children_name,
                                 ))
        else:
            self.view.snapshot = (snapshot_id,
                                  notebook_title,
                                  notebook_value,
                                  domname,
                                  created_user,
                                  created,
                                  modified_user,
                                  modified,
                                  current,
                                  parent_name,
                                  children_name,
                                  )
        return True
示例#4
0
    def _DELETE(self, *param, **params):
        (host_id, guest_id) = self.chk_guestby1(param)
        if guest_id is None: return web.notfound()

        snapshot_id = param[2]
        if not validates_param_id(self, snapshot_id):
            return web.notfound(self.view.alert)

        guest = m_findbyguest1(self.orm, guest_id)
        if not guest:
            return web.notfound()

        kvs = KaresansuiVirtSnapshot(readonly=False)
        snapshot_list = []
        try:
            domname = kvs.kvc.uuid_to_domname(guest.uniq_key)
            if not domname: return web.notfound()
            self.view.is_creatable = kvs.isSupportedDomain(domname)
            try:
                snapshot_list = kvs.listNames(domname)[domname]
            except:
                pass

            current_snapshot = kvs.getCurrentSnapshotName(domname)

        finally:
            kvs.finish()

        if not snapshot_id in snapshot_list:
            self.logger.error(_("The specified snapshot does not exist. - %s") % snapshot_id)
            return web.notfound()

        # delete
        action_cmd = dict2command(
            "%s/%s" % (karesansui.config['application.bin.dir'],
                       VIRT_COMMAND_DELETE_SNAPSHOT),
            {"name" : domname, "id" : snapshot_id})

        cmdname = 'Delete Snapshot'
        _jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey'])
        _job = Job('%s command' % cmdname, 0, action_cmd)
        _jobgroup.jobs.append(_job)
        
        _machine2jobgroup = m2j_new(machine=guest,
                                    jobgroup_id=-1,
                                    uniq_key=karesansui.sheconf['env.uniqkey'],
                                    created_user=self.me,
                                    modified_user=self.me,
                                    )
        
        save_job_collaboration(self.orm,
                               self.pysilhouette.orm,
                               _machine2jobgroup,
                               _jobgroup,
                               )        

        snapshot = s_findbyname_guestby1(self.orm, snapshot_id, guest_id)
        if snapshot:
            logical_delete(self.orm, snapshot)

        return web.accepted()
示例#5
0
    def _DELETE(self, *param, **params):
        (host_id, guest_id) = self.chk_guestby1(param)
        if guest_id is None: return web.notfound()

        snapshot_id = param[2]
        if not validates_param_id(self, snapshot_id):
            return web.notfound(self.view.alert)

        guest = m_findbyguest1(self.orm, guest_id)
        if not guest:
            return web.notfound()

        kvs = KaresansuiVirtSnapshot(readonly=False)
        snapshot_list = []
        try:
            domname = kvs.kvc.uuid_to_domname(guest.uniq_key)
            if not domname: return web.notfound()
            self.view.is_creatable = kvs.isSupportedDomain(domname)
            try:
                snapshot_list = kvs.listNames(domname)[domname]
            except:
                pass

            current_snapshot = kvs.getCurrentSnapshotName(domname)

        finally:
            kvs.finish()

        if not snapshot_id in snapshot_list:
            self.logger.error(
                _("The specified snapshot does not exist. - %s") % snapshot_id)
            return web.notfound()

        # delete
        action_cmd = dict2command(
            "%s/%s" % (karesansui.config['application.bin.dir'],
                       VIRT_COMMAND_DELETE_SNAPSHOT), {
                           "name": domname,
                           "id": snapshot_id
                       })

        cmdname = "Delete Snapshot"
        _jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey'])
        _job = Job('%s command' % cmdname, 0, action_cmd)
        _jobgroup.jobs.append(_job)

        _machine2jobgroup = m2j_new(
            machine=guest,
            jobgroup_id=-1,
            uniq_key=karesansui.sheconf['env.uniqkey'],
            created_user=self.me,
            modified_user=self.me,
        )

        save_job_collaboration(
            self.orm,
            self.pysilhouette.orm,
            _machine2jobgroup,
            _jobgroup,
        )

        snapshot = s_findbyname_guestby1(self.orm, snapshot_id, guest_id)
        if snapshot:
            logical_delete(self.orm, snapshot)

        return web.accepted()
示例#6
0
    def _GET(self, *param, **params):
        (host_id, guest_id) = self.chk_guestby1(param)
        if guest_id is None: return web.notfound()

        snapshot_id = param[2]
        if not validates_param_id(self, snapshot_id):
            return web.notfound(self.view.alert)

        guest = m_findbyguest1(self.orm, guest_id)
        if not guest:
            return web.notfound()

        kvs = KaresansuiVirtSnapshot(readonly=False)
        snapshot_list = []
        try:
            domname = kvs.kvc.uuid_to_domname(guest.uniq_key)
            if not domname: return web.notfound()
            self.view.is_creatable = kvs.isSupportedDomain(domname)
            try:
                snapshot_list = kvs.listNames(domname)[domname]
            except:
                pass

            parent_name = kvs.getParentName(snapshot_id, domain=domname)
            if parent_name is None:
                parent_name = _('None')
            children_names = kvs.getChildrenNames(snapshot_id, domain=domname)
            if len(children_names) == 0:
                children_name = _('None')
            else:
                children_name = ",".join(children_names)

            model = s_findbyname_guestby1(self.orm, snapshot_id, guest_id)
            if model is None:
                name = snapshot_id
                notebook_title = ""
                notebook_value = ""
                created_user = _("N/A")
                created = time.strftime("%Y-%m-%d %H:%M:%S",
                                        time.localtime(int(snapshot_id)))
                modified_user = _("N/A")
                modified = time.strftime("%Y-%m-%d %H:%M:%S",
                                         time.localtime(int(snapshot_id)))
            else:
                name = model.name
                notebook_title = model.notebook.title
                notebook_value = model.notebook.value
                created_user = model.created_user.nickname
                created = model.created
                modified_user = model.modified_user.nickname
                modified = model.modified

            current_snapshot = kvs.getCurrentSnapshotName(domname)

            current = False
            if snapshot_id == current_snapshot:
                current = True

        finally:
            kvs.finish()

        if not snapshot_id in snapshot_list:
            self.logger.error(
                _("The specified snapshot does not exist. - %s") % snapshot_id)
            return web.notfound()

        if self.__template__["media"] == 'json':
            self.view.snapshot = json_dumps((
                snapshot_id,
                notebook_title,
                notebook_value,
                domname,
                created_user,
                created,
                modified_user,
                modified,
                current,
                parent_name,
                children_name,
            ))
        else:
            self.view.snapshot = (
                snapshot_id,
                notebook_title,
                notebook_value,
                domname,
                created_user,
                created,
                modified_user,
                modified,
                current,
                parent_name,
                children_name,
            )
        return True