def PUT(self, id, setting): if setting not in self.Settings: web.notfound() return None try: configData = json.loads(web.data()) id = int(id) vm = model.getVM(web.ctx.veerezoDB, id) if vm['user'] != web.ctx.username: web.forbidden() return None except (ValueError, KeyError): web.notfound() return None fn = '_put' + self.Settings[setting] f = getattr(self, fn) try: f(id, vm, configData) except ValueError as e: web.badrequest() return {'error': 'ValueError: {0}'.format(e.message)} web.nocontent() return None
def DELETE(self, id): try: id = int(id) sshkey = model.getSSHKey(web.ctx.veerezoDB, id) if sshkey['user'] != web.ctx.username: web.forbidden() return None model.deleteSSHKey(web.ctx.veerezoDB, id) except: web.notfound() return None web.nocontent() return None
def PUT(self, id): '''Update an existing entry in the phonebook. URI must match /<id> of an existing entry''' if not entry_exists(id): raise web.notfound("No matching phonebook entry with id %s" % id) required_attrs = [] optional_attrs = ['firstname','surname','number','address'] all_attrs = required_attrs + optional_attrs data = load_json(web.data()) if not data: # 400 Bad request for empty data raise web.badrequest(response_strings['update_fields']) # Checks all required attributes are present # Checks there are no unrecognized fields # Validates input # Raises 400 Bad request if not valid validate_fields(data, required_attrs, all_attrs) # feed in data dict res = db.update('phonebook', where="id=$id", vars={'id':id}, **data) return web.nocontent()
def DELETE_AUTH(self, capsule_id, channel): try: c = EditorCapsule.selectBy(id=int(capsule_id), channel=channel).getOne() c.destroySelf() except SQLObjectNotFound: raise web.notfound() raise web.nocontent()
def _GET(self, *param, **params): if not validates_query(self): self.logger.debug( "Failed to get tags. The value of query is invalid.") return web.badrequest(self.view.alert) if not validates_page(self): self.logger.debug( "Failed to get tags. The value of page is invalid.") return web.badrequest(self.view.alert) if is_param(self.input, 'q') is True: tags = findbyand(self.orm, self.input.q) if not tags: self.logger.debug( "Failed to get tags. No such tag - query=%s" % self.input.q) return web.nocontent() self.view.search_value = self.input.q else: tags = findbyall(self.orm) self.view.search_value = "" if not tags: self.logger.debug("Failed to get tag. No tags found.") return web.notfound() if is_param(self.input, 'p') is True: start = int(self.input.p) else: start = 0 pager = Pager(tags, start, TAG_LIST_RANGE) if not pager.exist_now_page(): self.logger.debug( "Failed to get tag. Could not find page - page=%s" % self.input.p) return web.nocontent() self.view.pager = pager if self.is_mode_input(): self.view.tag = new('') self.view.input = self.input return True
def DELETE(self, id): try: id = int(id) vm = model.getVM(web.ctx.veerezoDB, id) if vm['user'] != web.ctx.username: web.forbidden() return None except ValueError: web.notfound() return None # we must not delete the DB entry here so that we don't get confused by the async nature of the job queue jobID = web.ctx.postBackendJob('deleteVM', id) addJobIDsHeader([jobID]) web.nocontent() return None
def POST(self): web_data = '{}' if web.data(): web_data = web.data().decode('utf-8') data = json.loads(web_data) if not 'duration' in data or not 'actor' in data: return web.badrequest() turn_on_the_light(data['duration'] or 1, data['actor']) return web.nocontent()
def DELETE(self, id): try: id = int(id) network = model.getNetwork(web.ctx.veerezoDB, id) if network['user'] != web.ctx.username: web.forbidden() return None model.deleteNetwork(web.ctx.veerezoDB, id) except (ValueError, KeyError): web.notfound() return None jobID = web.ctx.postBackendJob('reconfigureNetworks') addJobIDsHeader([jobID]) web.nocontent() return None
def DELETE(self, id): '''Remove an existing entry in the phonebook. URI must match /<id> of an existing entry''' if not entry_exists(id): raise web.notfound("No matching phonebook entry with id %s" % id) db.delete('phonebook', where="id=$id", vars={'id':id}) return web.nocontent()
def _GET(self, *param, **params): if not validates_query(self): self.logger.debug("Failed to get account. the value of query is invalid. - query=%s" % self.input.q) return web.badrequest(self.view.alert) if not validates_page(self): self.logger.debug("Failed to get account. the value of page is invalid. - page=%s" % self.input.p) return web.badrequest(self.view.alert) if is_param(self.input, "q"): users = findbyand(self.orm, self.input.q) if not users: self.logger.debug("Failed to get account. No such account. - query=%s" % self.input.q) return web.nocontent() self.view.search_value = self.input.q else: users = findbyall(self.orm) self.view.search_value = "" if not users: self.logger.debug("Failed to get account. No accounts found.") return web.notfound() if is_param(self.input, "p"): start = int(self.input.p) else: start = 0 pager = Pager(users, start, USER_LIST_RANGE) if not pager.exist_now_page(): self.logger.debug("Failed to get account. Could not find page - page=%s" % self.input.p) return web.nocontent() self.view.pager = pager if self.is_mode_input(): locales = DEFAULT_LANGS.keys() self.view.locales = locales self.view.user = new('', '', '', '', '') self.view.input = self.input return True
def _GET(self, *param, **params): if not validates_query(self): self.logger.debug("Failed to get tags. The value of query is invalid.") return web.badrequest(self.view.alert) if not validates_page(self): self.logger.debug("Failed to get tags. The value of page is invalid.") return web.badrequest(self.view.alert) if is_param(self.input, 'q') is True: tags = findbyand(self.orm, self.input.q) if not tags: self.logger.debug("Failed to get tags. No such tag - query=%s" % self.input.q) return web.nocontent() self.view.search_value = self.input.q else: tags = findbyall(self.orm) self.view.search_value = "" if not tags: self.logger.debug("Failed to get tag. No tags found.") return web.notfound() if is_param(self.input, 'p') is True: start = int(self.input.p) else: start = 0 pager = Pager(tags, start, TAG_LIST_RANGE) if not pager.exist_now_page(): self.logger.debug("Failed to get tag. Could not find page - page=%s" % self.input.p) return web.nocontent() self.view.pager = pager if self.is_mode_input(): self.view.tag = new('') self.view.input = self.input return True
def PATCH_AUTH(self, capsule_id, channel): try: post_data = json.loads(web.data().decode()) except JSONDecodeError: raise web.badrequest() try: c = EditorCapsule.selectBy(id=int(capsule_id), channel=channel).getOne() except SQLObjectNotFound: raise web.notfound() if 'name' in post_data and len(post_data['name']) < 3: raise web.badrequest() if 'validity' in post_data: validity_from, validity_to = post_data['validity'] if not (type(validity_from) == type(validity_to) == int) or validity_to < validity_from: raise web.badrequest() try: validity_from, validity_to = datetime.fromtimestamp( validity_from), datetime.fromtimestamp(validity_to) except (TypeError, ValueError): raise web.badrequest() post_data['validity_from'] = validity_from post_data['validity_to'] = validity_to del post_data['validity'] update_dict = { k: v for k, v in filter( lambda x: x[0] in ['name', 'theme', 'validity_from', 'validity_to'], post_data.items()) } try: c.set(**update_dict) except DuplicateEntryError: raise web.badrequest() raise web.nocontent()
def PUT(self, id, name): """Modify the value of the indicated attribute. The payload of the request must be in JSON format and be either a string or an interger depending on the expected value of the indicated attribute. If the payload is not in JSON format a bad request will be returned. If the attrubte cannot be modified, for example the id attribute, than a forbidden response will be returned. Inability to locate the indicated thermostat or attribute will result in a not found response. In the case of success the response will be not content. """ # TODO add a text/plain API data = web.data() try: value = json.loads(data) service.set_attribute(id, name, value) logger.debug('value set') return web.nocontent() except (ValidationError, ValueError) as e: if isinstance(e, ValidationError): msg = 'got invalid value ({}) for {}; {}' logger.warn(msg.format(value, name, e.message)) else: logger.warn('got invalid JSON payload: {}'.format(data)) return web.badrequest() except ReadonlyError: logger.warn('got request to change readonly value {}'.format(name)) return web.forbidden() except (UnknownAttributeError, UnknownThermostatError) as e: if isinstance(e, UnknownAttributeError): msg = 'request to set value for unkown attribute {}' logger.warn(msg.format(name)) else: msg = 'request to set value for unknown thermostat {}' logger.warn(msg.format(id)) return web.notfound()
def PATCH_AUTH(self, capsule_id, slide_id, channel): try: post_data = json.loads(web.data().decode()) except JSONDecodeError: raise web.badrequest() try: c = EditorCapsule.selectBy(id=int(capsule_id), channel=channel).getOne() s = EditorSlide.selectBy(id=int(slide_id), capsule=c).getOne() except SQLObjectNotFound: raise web.notfound() update_dict = { k: v for k, v in filter( lambda x: x[0] in ['duration', 'template', 'content'], post_data.items()) } s.set(**update_dict) raise web.nocontent()
def _DELETE(self, *param, **params): (host_id, guest_id) = self.chk_guestby1(param) if guest_id is None: return web.notfound() model = findbyguest1(self.orm, guest_id) self.kvc = KaresansuiVirtConnection() try: domname = self.kvc.uuid_to_domname(model.uniq_key) if not domname: self.logger.info("Did not exist in libvirt. - guestid=%s" % model.id) logical_delete(self.orm, model) # TODO ファイルシステムにゴミが残るので、delete_guest.pyを実行する必要がある。 self.orm.commit() return web.nocontent() kvg_guest = self.kvc.search_kvg_guests(domname) if not kvg_guest: return web.badrequest(_("Guest not found. - name=%s") % domname) else: kvg_guest = kvg_guest[0] if kvg_guest.is_active(): return web.badrequest(_("Can not delete a running guest OS. - name=%s") % domname) # jobs order order = 0 jobs = [] os_storage = {} for disk in kvg_guest.get_disk_info(): if disk['type'] == 'file': # type="dir" # delete_storage_volume pool = self.kvc.get_storage_pool_name_byimage(disk['source']['file']) if not pool: return web.badrequest(_("Can not find the storage pool image. - target=%s") % (disk['source']['file'])) else: pool = pool[0] disk_volumes = self.kvc.get_storage_volume_bydomain(domname, 'disk', 'key') volume = None for key in disk_volumes.keys(): if disk['source']['file'] == os.path.realpath(disk_volumes[key]): volume = key # disk image use = DISK_USES['DISK'] if volume is None: # os image os_volume = self.kvc.get_storage_volume_bydomain(domname, 'os', 'key') if not os_volume: return web.badrequest(_("OS storage volume for guest could not be found. domname=%s") % domname) if disk['source']['file'] == os.path.realpath(os_volume.values()[0]): use = DISK_USES['IMAGES'] volume = os_volume.keys()[0] os_storage["pool"] = pool os_storage["volume"] = volume continue # OS delete command to do "VIRT_COMMAND_DELETE_GUEST" image. jobs.append(delete_storage_volume(self, volume, pool, order, use)) order += 1 # delete_disk jobs.append(delete_disk_job(self, domname, disk["target"]["dev"], order)) order += 1 elif disk['type'] == 'block': # type="iscsi" pool = self.kvc.get_storage_pool_name_byimage(disk['source']['dev']) if not pool: return web.badrequest(_("Can not find the storage pool image. - target=%s") % disk['source']['dev']) else: pool = pool[0] os_volume = self.kvc.get_storage_volume_bydomain(domname, 'os', 'key') if not os_volume: return web.badrequest(_("OS storage volume for guest could not be found. domname=%s") % domname) else: volume = os_volume.values()[0] if disk['source']['dev'] == volume: os_storage["pool"] = pool os_storage["volume"] = volume continue # OS delete command to do "VIRT_COMMAND_DELETE_GUEST" image. # delete_disk jobs.append(delete_disk_job(self, domname, disk["target"]["dev"], order)) order += 1 else: return web.internalerror( _("Not expected storage type. type=%") % disk['type']) # DELETE GUEST cmdname = "Delete Guest" _jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey']) _jobgroup.jobs = jobs # Set Disk action_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DELETE_GUEST), {"name" : domname, "pool" : os_storage["pool"], "volume" : os_storage["volume"], } ) _job = Job('%s command' % cmdname, order, action_cmd) _jobgroup.jobs.append(_job) logical_delete(self.orm, model) _machine2jobgroup = m2j_new(machine=model, 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(url = web.ctx.path) finally: #self.kvc.close() GuestBy1#_post pass
def _GET(self, *param, **params): (check, edit) = validates_jobsearch(self) if check is False: return web.badrequest(self.view.alert) if edit is True: # user search users = findbyname_BM(self.orm, self.input.user) users_id = [] for user in users: users_id.append(user.id) machine_name = self.input.name.strip() if is_empty(machine_name): machine_name = None if is_empty(self.input.start): start = None else: start = str2datetime(self.input.start, DEFAULT_LANGS[self.me.languages]["DATE_FORMAT"][0]) if is_empty(self.input.end): end = None else: end = str2datetime(self.input.end, DEFAULT_LANGS[self.me.languages]["DATE_FORMAT"][0], True) # machine search m_m2js = m2mj_findbyall(self.orm, machine_name, start, end, users_id, True) if not m_m2js: self.logger.debug( "Search m_m2js failed. " "Did not exist m_m2js that in accord with these query. " "name %s, user_id %s, start %s, end %s" % (machine_name, users_id, start, end) ) return web.nocontent() self.view.m_m2js = m_m2js self.view.name = self.input.name self.view.user = self.input.user self.view.status = self.input.status self.view.start = self.input.start self.view.end = self.input.end jobgroup_ids = [] for m_m2j in m_m2js: jobgroup_ids.append(m_m2j[1].jobgroup_id) jobgroup_status = self.input.status if is_empty(jobgroup_status): jobgroup_status = None jobgroups = jg_findbyalltype( self.pysilhouette.orm, JOBGROUP_TYPE["SERIAL"], jobgroup_ids, jobgroup_status, desc=True ) if not jobgroups: self.logger.debug( "Search jobgroups failed. " "Did not exist jobgroups that in accord with these query. " "jobgroup_ids %s, jobgroup_status %s" % (jobgroup_ids, jobgroup_status) ) return web.nocontent() else: m_m2js = m2mj_findbyall(self.orm) self.view.m_m2js = m_m2js self.view.name = "" self.view.user = "" self.view.status = "" self.view.start = "" self.view.end = "" self.view.m_m2js = m_m2js jobgroup_ids = [] for m_m2j in m_m2js: jobgroup_ids.append(m_m2j[1].jobgroup_id) jobgroups = jg_findbyalltype(self.pysilhouette.orm, JOBGROUP_TYPE["SERIAL"], jobgroup_ids, desc=True) self.view.JOBGROUP_STATUS = JOBGROUP_STATUS self.view.HYPERVISOR = MACHINE_HYPERVISOR if self.input.has_key("p") is True: start = int(self.input.p) else: start = 0 self.view.date_format = DEFAULT_LANGS[self.me.languages]["DATE_FORMAT"][1] self.view.pager = Pager(jobgroups, start, JOB_LIST_RANGE) return True
def _GET(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() if self.is_mode_input() is True: self.view.plugins = WATCH_PLUGINS self.view.cpu_type_instance = COLLECTD_CPU_TYPE_INSTANCE self.view.memory_type_instance = COLLECTD_MEMORY_TYPE_INSTANCE self.view.df_ds = COLLECTD_DF_DS self.view.interface_type = COLLECTD_INTERFACE_TYPE self.view.interface_ds = COLLECTD_INTERFACE_DS self.view.load_ds = COLLECTD_LOAD_DS cpu_logical_number = len(get_proc_cpuinfo()) self.view.cpu_logical_number = range(1, cpu_logical_number + 1) self.view.memory_size = string.atol( get_proc_meminfo()["MemTotal"][0]) / 1024 self.view.df_list = get_fs_info() self.view.interface_list = get_ifconfig_info().keys() ## guest os list from karesansui.lib.utils import get_dom_list from karesansui.lib.virt.virt import KaresansuiVirtConnection from karesansui.lib.merge import MergeGuest self.view.dom_list = get_dom_list() dom_info = {} for domname in get_dom_list(): kvc = KaresansuiVirtConnection() virt = kvc.search_kvg_guests(domname)[0] dom_info[domname] = {} dom_info[domname]['network'] = [] dom_info[domname]['disk'] = [] dom_info[domname]['disk_size'] = {} for net_dev in virt.get_interface_info(): dom_info[domname]['network'].append( net_dev['target']['dev']) for disk in virt.get_disk_info(): dom_info[domname]['disk'].append(disk['target']['dev']) dom_info[domname]['disk_size'][ disk['target']['dev']] = disk['source']['size'] dom_info[domname]['vcpu'] = virt.get_vcpus_info()['max_vcpus'] kvc.close() self.view.dom_info = dom_info ## disk info self.view.disk_size_info = {} for disk_data in get_fs_info(): self.view.disk_size_info[ disk_data['Filesystem']] = disk_data['1048576-blocks'] self.view.processer_num = len(get_proc_cpuinfo().keys()) self.view.supported_langs = DEFAULT_LANGS.keys() self.view.myaddress = self.me.email self.view.mta = "%s:%s" % ( karesansui.config['application.mail.server'], karesansui.config['application.mail.port']) self.view.alert_trigger_count = DEFAULT_ALERT_TRIGGER_COUNT self.view.slient_period = DEFAULT_SLIENT_PERIOD return True if not validates_query(self): self.logger.debug("Show watch is failed, " "Invalid query value " "- query=%s" % self.input.q) return web.badrequest(self.view.alert) if not validates_page(self): self.logger.debug("Show watch is failed, " "Invalid page value - page=%s" % self.input.p) return web.badrequest(self.view.alert) if is_param(self.input, 'q') is True: watchs = w_findbyname_or_plugin(self.orm, self.input.q) if not watchs: self.logger.debug("Show watch is failed, " "Could not find watch " "- query=%s" % self.input.q) return web.nocontent() self.view.search_value = self.input.q else: watchs = w_findbyall(self.orm) self.view.search_value = "" if is_param(self.input, 'p') is True: start = int(self.input.p) else: start = 0 pager = Pager(watchs, start, WATCH_LIST_RANGE) if not pager.exist_now_page() and is_param(self.input, 'p') is True: self.logger.debug("Show watch is failed, " "Could not find page - page=%s" % self.input.p) return web.nocontent() self.view.pager = pager self.view.input = self.input return True
def _DELETE(self, *param, **params): (host_id, guest_id) = self.chk_guestby1(param) if guest_id is None: return web.notfound() model = findbyguest1(self.orm, guest_id) self.kvc = KaresansuiVirtConnection() try: domname = self.kvc.uuid_to_domname(model.uniq_key) if not domname: self.logger.info("Did not exist in libvirt. - guestid=%s" % model.id) logical_delete(self.orm, model) # TODO ファイルシステムにゴミが残るので、delete_guest.pyを実行する必要がある。 self.orm.commit() return web.nocontent() kvg_guest = self.kvc.search_kvg_guests(domname) if not kvg_guest: return web.badrequest( _("Guest not found. - name=%s") % domname) else: kvg_guest = kvg_guest[0] if kvg_guest.is_active(): return web.badrequest( _("Can not delete a running guest OS. - name=%s") % domname) # jobs order order = 0 jobs = [] os_storage = {} for disk in kvg_guest.get_disk_info(): if disk['type'] == 'file': # type="dir" # delete_storage_volume pool = self.kvc.get_storage_pool_name_byimage( disk['source']['file']) if not pool: return web.badrequest( _("Can not find the storage pool image. - target=%s" ) % (disk['source']['file'])) else: pool = pool[0] disk_volumes = self.kvc.get_storage_volume_bydomain( domname, 'disk', 'key') volume = None for key in disk_volumes.keys(): if disk['source']['file'] == os.path.realpath( disk_volumes[key]): volume = key # disk image use = DISK_USES['DISK'] if volume is None: # os image os_volume = self.kvc.get_storage_volume_bydomain( domname, 'os', 'key') if not os_volume: return web.badrequest( _("OS storage volume for guest could not be found. domname=%s" ) % domname) if disk['source']['file'] == os.path.realpath( os_volume.values()[0]): use = DISK_USES['IMAGES'] volume = os_volume.keys()[0] os_storage["pool"] = pool os_storage["volume"] = volume continue # OS delete command to do "VIRT_COMMAND_DELETE_GUEST" image. jobs.append( delete_storage_volume(self, volume, pool, order, use)) order += 1 # delete_disk jobs.append( delete_disk_job(self, domname, disk["target"]["dev"], order)) order += 1 elif disk['type'] == 'block': # type="iscsi" pool = self.kvc.get_storage_pool_name_byimage( disk['source']['dev']) if not pool: return web.badrequest( _("Can not find the storage pool image. - target=%s" ) % disk['source']['dev']) else: pool = pool[0] os_volume = self.kvc.get_storage_volume_bydomain( domname, 'os', 'key') if not os_volume: return web.badrequest( _("OS storage volume for guest could not be found. domname=%s" ) % domname) else: volume = os_volume.values()[0] if disk['source']['dev'] == volume: os_storage["pool"] = pool os_storage["volume"] = volume continue # OS delete command to do "VIRT_COMMAND_DELETE_GUEST" image. # delete_disk jobs.append( delete_disk_job(self, domname, disk["target"]["dev"], order)) order += 1 else: return web.internalerror( _("Not expected storage type. type=%") % disk['type']) # DELETE GUEST cmdname = "Delete Guest" _jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey']) _jobgroup.jobs = jobs # Set Disk action_cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DELETE_GUEST), { "name": domname, "pool": os_storage["pool"], "volume": os_storage["volume"], }) _job = Job('%s command' % cmdname, order, action_cmd) _jobgroup.jobs.append(_job) logical_delete(self.orm, model) _machine2jobgroup = m2j_new( machine=model, 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(url=web.ctx.path) finally: #self.kvc.close() GuestBy1#_post pass
def _GET(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() if self.is_mode_input() is True: self.view.plugins = WATCH_PLUGINS self.view.cpu_type_instance = COLLECTD_CPU_TYPE_INSTANCE self.view.memory_type_instance = COLLECTD_MEMORY_TYPE_INSTANCE self.view.df_ds = COLLECTD_DF_DS self.view.interface_type = COLLECTD_INTERFACE_TYPE self.view.interface_ds = COLLECTD_INTERFACE_DS self.view.load_ds = COLLECTD_LOAD_DS cpu_logical_number = len(get_proc_cpuinfo()) self.view.cpu_logical_number = range(1, cpu_logical_number+1) self.view.memory_size = string.atol(get_proc_meminfo()["MemTotal"][0]) / 1024 self.view.df_list = get_fs_info() self.view.interface_list = get_ifconfig_info().keys() ## guest os list from karesansui.lib.utils import get_dom_list from karesansui.lib.virt.virt import KaresansuiVirtConnection from karesansui.lib.merge import MergeGuest self.view.dom_list = get_dom_list() dom_info = {} for domname in get_dom_list(): kvc = KaresansuiVirtConnection() virt = kvc.search_kvg_guests(domname)[0] dom_info[domname] = {} dom_info[domname]['network'] = [] dom_info[domname]['disk'] = [] dom_info[domname]['disk_size'] = {} for net_dev in virt.get_interface_info(): dom_info[domname]['network'].append(net_dev['target']['dev']) for disk in virt.get_disk_info(): dom_info[domname]['disk'].append(disk['target']['dev']) dom_info[domname]['disk_size'][disk['target']['dev']] = disk['source']['size'] dom_info[domname]['vcpu'] = virt.get_vcpus_info()['max_vcpus'] kvc.close() self.view.dom_info = dom_info ## disk info self.view.disk_size_info = {} for disk_data in get_fs_info(): self.view.disk_size_info[disk_data['Filesystem']] = disk_data['1048576-blocks'] self.view.processer_num = len(get_proc_cpuinfo().keys()) self.view.supported_langs = DEFAULT_LANGS.keys() self.view.myaddress = self.me.email self.view.mta = "%s:%s" % (karesansui.config['application.mail.server'], karesansui.config['application.mail.port']) self.view.alert_trigger_count = DEFAULT_ALERT_TRIGGER_COUNT; self.view.slient_period = DEFAULT_SLIENT_PERIOD; return True if not validates_query(self): self.logger.debug("Show watch is failed, " "Invalid query value " "- query=%s" % self.input.q) return web.badrequest(self.view.alert) if not validates_page(self): self.logger.debug("Show watch is failed, " "Invalid page value - page=%s" % self.input.p) return web.badrequest(self.view.alert) if is_param(self.input, 'q') is True: watchs = w_findbyname_or_plugin(self.orm, self.input.q) if not watchs: self.logger.debug("Show watch is failed, " "Could not find watch " "- query=%s" % self.input.q) return web.nocontent() self.view.search_value = self.input.q else: watchs = w_findbyall(self.orm) self.view.search_value = "" if is_param(self.input, 'p') is True: start = int(self.input.p) else: start = 0 pager = Pager(watchs, start, WATCH_LIST_RANGE) if not pager.exist_now_page() and is_param(self.input, 'p') is True: self.logger.debug("Show watch is failed, " "Could not find page - page=%s" % self.input.p) return web.nocontent() self.view.pager = pager self.view.input = self.input return True
def _GET(self, *param, **params): (host_id, guest_id) = self.chk_guestby1(param) if guest_id is None: return web.notfound() model = findbyguest1(self.orm, guest_id) # virt self.kvc = KaresansuiVirtConnection() try: domname = self.kvc.uuid_to_domname(model.uniq_key) if not domname: return web.notfound() finally: self.kvc.close() (check, edit) = validates_jobsearch(self) if check is False: return web.badrequest(self.view.alert) if edit is True: # user search users = findbyname_BM(self.orm, self.input.user) users_id = [] for user in users: users_id.append(user.id) if is_empty(self.input.start): start = None else: start = str2datetime(self.input.start, DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0]) if is_empty(self.input.end): end = None else: end = str2datetime(self.input.end, DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0],True) # machine search m_m2js = m2mj_findbyguest(self.orm, guest_id, start, end, users_id, ) if not m_m2js: self.logger.debug("Search m_m2js failed. " "Did not exist m_m2js that in accord with these query. " "guest_id %s, start %s, end %s, users_id %s" % (guest_id, start, end, users_id)) return web.nocontent() self.view.m_m2js = m_m2js self.view.user = self.input.user self.view.status = self.input.status self.view.start = self.input.start self.view.end = self.input.end jobgroup_ids = [] for m_m2j in m_m2js: jobgroup_ids.append(m_m2j[1].jobgroup_id) jobgroup_status = self.input.status if is_empty(jobgroup_status): jobgroup_status = None jobgroups = jg_findbyalltype(self.pysilhouette.orm, JOBGROUP_TYPE["SERIAL"], jobgroup_ids, jobgroup_status, desc=True) if not jobgroups: self.logger.debug("Search jobgroups failed. " "Did not exist jobgroups that in accord with these query." "jobgroup_ids %s, jobgroup_status %s" % (jobgroup_ids, jobgroup_status)) return web.nocontent() else: m_m2js = m2mj_findbyguest(self.orm, guest_id) self.view.m_m2js = m_m2js self.view.user = '' self.view.status = '' self.view.start = '' self.view.end = '' jobgroup_ids = [] for m_m2j in m_m2js: jobgroup_ids.append(m_m2j[1].jobgroup_id) jobgroups = jg_findbyalltype(self.pysilhouette.orm, JOBGROUP_TYPE["SERIAL"], jobgroup_ids, desc=True) self.view.JOBGROUP_STATUS = JOBGROUP_STATUS self.view.HYPERVISOR = MACHINE_HYPERVISOR if self.input.has_key('p') is True: if validates_page(self) is True: start = int(self.input.p) else: return web.badrequest(self.view.alert) else: start = 0 self.view.date_format = DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][1] self.view.pager = Pager(jobgroups, start, JOB_LIST_RANGE) return True
def _GET(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() (check, edit) = validates_jobsearch(self) if check is False: return web.badrequest(self.view.alert) if edit is True: users = findbyname_BM(self.orm, self.input.user) users_id = [] for user in users: users_id.append(user.id) machine_name = self.input.name.strip() if is_empty(machine_name): machine_name = None if is_empty(self.input.start): start = None else: start = str2datetime( self.input.start, DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0]) if is_empty(self.input.end): end = None else: end = str2datetime( self.input.end, DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0], True) m_m2js = m2mj_findbyall(self.orm, machine_name, start, end, users_id, True) if not m_m2js: self.logger.debug( "Search m_m2js failed. " "Did not exist m_m2js that in accord with these query. " "name %s, user_id %s, start %s, end %s" % (machine_name, users_id, start, end)) return web.nocontent() self.view.m_m2js = m_m2js self.view.name = self.input.name self.view.user = self.input.user self.view.status = self.input.status self.view.start = self.input.start self.view.end = self.input.end jobgroup_ids = [] for m_m2j in m_m2js: jobgroup_ids.append(m_m2j[1].jobgroup_id) jobgroup_status = self.input.status if is_empty(jobgroup_status): jobgroup_status = None jobgroups = jg_findbyalltype(self.pysilhouette.orm, JOBGROUP_TYPE["SERIAL"], jobgroup_ids, jobgroup_status, desc=True) if not jobgroups: self.logger.debug( "Search jobgroups failed. " "Did not exist jobgroups that in accord with these query. " "jobgroup_ids %s, jobgroup_status %s" % (jobgroup_ids, jobgroup_status)) return web.nocontent() else: m_m2js = m2mj_findbyhost(self.orm, host_id) self.view.m_m2js = m_m2js self.view.name = '' self.view.user = '' self.view.status = '' self.view.start = '' self.view.end = '' jobgroup_ids = [] for m_m2j in m_m2js: jobgroup_ids.append(m_m2j[1].jobgroup_id) jobgroups = jg_findbyalltype(self.pysilhouette.orm, JOBGROUP_TYPE["SERIAL"], jobgroup_ids, desc=True) self.view.JOBGROUP_STATUS = JOBGROUP_STATUS self.view.HYPERVISOR = MACHINE_HYPERVISOR if self.input.has_key('p') is True: if validates_page(self) is True: start = int(self.input.p) else: return web.badrequest(self.view.alert) else: start = 0 self.view.date_format = DEFAULT_LANGS[ self.me.languages]['DATE_FORMAT'][1] self.view.pager = Pager(jobgroups, start, JOB_LIST_RANGE) return True