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)
def _POST(self, *param, **params): (host_id, guest_id) = self.chk_guestby1(param) if guest_id is None: return web.notfound() if not validates_snapshot(self): return web.badrequest(self.view.alert) guest = findbyguest1(self.orm, guest_id) kvs = KaresansuiVirtSnapshot(readonly=False) try: domname = kvs.kvc.uuid_to_domname(guest.uniq_key) if not domname: return web.conflict(web.ctx.path) virt = kvs.kvc.search_kvg_guests(domname)[0] if virt.is_active() is True: return web.badrequest( _("Guest is running. Please stop and try again. name=%s" % domname)) finally: kvs.finish() id = int(time.time()) notebook = new_notebook(self.input.title, self.input.value) snapshot = new_snapshot(guest, id, self.me, self.me, notebook) save_snapshot(self.orm, snapshot) options = {} options['name'] = domname options['id'] = id _cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_TAKE_SNAPSHOT), options) cmdname = 'Take Snapshot' _jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey']) _jobgroup.jobs.append(Job('%s command' % cmdname, 0, _cmd)) _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, ) return web.accepted()
def _POST(self, *param, **params): (host_id, guest_id) = self.chk_guestby1(param) if guest_id is None: return web.notfound() if not validates_snapshot(self): return web.badrequest(self.view.alert) guest = findbyguest1(self.orm, guest_id) kvs = KaresansuiVirtSnapshot(readonly=False) try: domname = kvs.kvc.uuid_to_domname(guest.uniq_key) if not domname: return web.conflict(web.ctx.path) virt = kvs.kvc.search_kvg_guests(domname)[0] if virt.is_active() is True: return web.badrequest(_("Guest is running. Please stop and try again. name=%s" % domname)) finally: kvs.finish() id = int(time.time()) notebook = new_notebook(self.input.title, self.input.value) snapshot = new_snapshot(guest, id, self.me, self.me, notebook) save_snapshot(self.orm, snapshot) options = {} options['name'] = domname options['id'] = id _cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_TAKE_SNAPSHOT), options) cmdname = 'Take Snapshot' _jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey']) _jobgroup.jobs.append(Job('%s command' % cmdname, 0, _cmd)) _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, ) return web.accepted()