def _GET(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() target = param[1] if target is None: return web.notfound() dev = param[2] if dev is None: return web.notfound() if not validates_report(self): self.logger.debug("Get report failed. Did not validate.") return web.badrequest(self.view.alert) today = datetime.datetime.today() if is_param(self.input, 'report_start_day') and not is_empty(self.input.report_start_day): start_day = str2datetime(self.input.report_start_day, DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0]) else: start_day = today - datetime.timedelta(1) if is_param(self.input, 'report_start_time') and not is_empty(self.input.report_start_time): (start_hour, start_minute) = self.input.report_start_time.split(':',2) start_hour = int(start_hour) start_minute = int(start_minute) else: start_hour = today.hour start_minute = today.minute if is_param(self.input, 'report_end_day') and not is_empty(self.input.report_end_day): end_day = str2datetime(self.input.report_end_day, DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0]) else: end_day = today if is_param(self.input, 'report_end_time') and not is_empty(self.input.report_end_time): (end_hour, end_minute) = self.input.report_end_time.split(':', 2) end_hour = int(end_hour) end_minute = int(end_minute) else: end_hour = today.hour end_minute = today.minute start_time = create_epochsec(start_day.year, start_day.month, start_day.day, start_hour, start_minute, ) end_time = create_epochsec(end_day.year, end_day.month, end_day.day, end_hour, end_minute, ) if int(start_time) > int(end_time): self.logger.error("Getting reports failed. Start time > end time.") return web.badrequest(_('Getting reports failed. Start time > end time.')) if is_param(self.input, 'type') and not is_empty(self.input.type): type = self.input.type else: type = "default" if is_param(self.input, 'host') and not is_empty(self.input.host): host = self.input.host else: host = None if is_param(self.input, 'libvirt_target') and not is_empty(self.input.libvirt_target): libvirt_target = self.input.libvirt_target else: libvirt_target = None rrd = RRD(self._, self.me.languages) if host is not None: if rrd.set_rrd_dir_host(host) is False: self.logger.debug("Get report failed. Target host not found.") return web.notfound() filepath = rrd.create_graph(target, dev, type, start_time, end_time, libvirt_target) if filepath != "": self.download.type = OUTPUT_TYPE_FILE self.download.file = filepath self.download.once = True return True
def _GET(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() self.view.host_id = host_id target = param[1] if target is None: return web.notfound() self.view.target = target group_display = False dev_list = [] graph_type = [] rrd = RRD() if target == "cpu": for dev in range(0, len(get_proc_cpuinfo())): if rrd.check_rrd_file_exist("cpu", dev): dev_list.append(dev) graph_type = ['default'] elif target == "memory": dev_list = ['default'] graph_type = ['default'] elif target == "df": df_list = get_fs_info() for fs in df_list: if COLLECTD_DF_RRPORT_BY_DEVICE is True: dev = fs['Filesystem'] dev = re.sub(r'^/dev/', '', dev) dev = re.sub(r'/', '_', dev) else: dev = fs['Mounted'] if dev == "/": dev = "root" else: dev = re.sub(r'^/', '', dev) dev = re.sub(r'/', '_', dev) if rrd.check_rrd_file_exist("df", dev): dev_list.append(dev) graph_type = ['default'] elif target == "disk": group_display = True disk_list = get_hdd_list() for disk in disk_list: dev = disk dev = re.sub(r'^/dev/', '', dev) if rrd.check_rrd_file_exist("disk", dev): dev_list.append(dev) graph_type = ['merged', 'octets', 'ops', 'time'] elif target == "interface": group_display = True if_list = get_ifconfig_info().keys() for dev in if_list: if rrd.check_rrd_file_exist("interface", dev): dev_list.append(dev) graph_type = ['packets', 'octets', 'errors'] elif target == "load": dev_list = ['default'] graph_type = ['default'] elif target == "uptime": dev_list = ['default'] graph_type = ['default'] elif target == "users": dev_list = ['default'] graph_type = ['default'] elif target == "libvirt": virt_cpu_type = ['default'] virt_disk_type = ['octets', 'ops'] virt_interface_type = ['packets', 'octets', 'errors', 'dropped'] virt_list = {} virt_file_exist = {} try: kvc = KaresansuiVirtConnection() for domname in get_dom_list(): virt_list[domname] = {} if rrd.set_rrd_dir_host(domname) is False: virt_file_exist[domname] = False continue try: virt = kvc.search_kvg_guests(domname)[0] except: virt_file_exist[domname] = False continue virt_list[domname]['vcpu'] = {} if rrd.check_rrd_file_exist("libvirt", "total", "vcpu"): virt_list[domname]['vcpu']['total'] = virt_cpu_type for i in range(virt.get_vcpus_info()['max_vcpus']): if rrd.check_rrd_file_exist("libvirt", i, "vcpu"): virt_list[domname]['vcpu'][i] = virt_cpu_type virt_list[domname]['disk'] = {} for disk in virt.get_disk_info(): if rrd.check_rrd_file_exist("libvirt", disk['target']['dev'], "disk"): virt_list[domname]['disk'][disk['target']['dev']] = virt_disk_type virt_list[domname]['interface'] = {} for net_dev in virt.get_interface_info(): if rrd.check_rrd_file_exist("libvirt", net_dev['target']['dev'], "interface"): virt_list[domname]['interface'][net_dev['target']['dev']] = virt_interface_type if virt_list[domname]['vcpu'] == {} and \ virt_list[domname]['disk'] == {} and \ virt_list[domname]['interface'] == {}: virt_list[domname] = {} virt_file_exist[domname] = False else: virt_file_exist[domname] = True finally: kvc.close() self.view.virt_list = virt_list self.view.virt_file_exist = virt_file_exist self.view.group_display = group_display dev_list.sort() self.view.dev_list = dev_list self.view.graph_type = graph_type return True
def _GET(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() self.view.host_id = host_id target = param[1] if target is None: return web.notfound() self.view.target = target group_display = False dev_list = [] graph_type = [] rrd = RRD() if target == "cpu": for dev in range(0, len(get_proc_cpuinfo())): if rrd.check_rrd_file_exist("cpu", dev): dev_list.append(dev) graph_type = ['default'] elif target == "memory": dev_list = ['default'] graph_type = ['default'] elif target == "df": df_list = get_fs_info() for fs in df_list: if COLLECTD_DF_RRPORT_BY_DEVICE is True: dev = fs['Filesystem'] dev = re.sub(r'^/dev/', '', dev) dev = re.sub(r'/', '_', dev) else: dev = fs['Mounted'] if dev == "/": dev = "root" else: dev = re.sub(r'^/', '', dev) dev = re.sub(r'/', '_', dev) if rrd.check_rrd_file_exist("df", dev): dev_list.append(dev) graph_type = ['default'] elif target == "disk": group_display = True disk_list = get_hdd_list() for disk in disk_list: dev = disk dev = re.sub(r'^/dev/', '', dev) if rrd.check_rrd_file_exist("disk", dev): dev_list.append(dev) graph_type = ['merged', 'octets', 'ops', 'time'] elif target == "interface": group_display = True if_list = get_ifconfig_info().keys() for dev in if_list: if rrd.check_rrd_file_exist("interface", dev): dev_list.append(dev) graph_type = ['packets', 'octets', 'errors'] elif target == "load": dev_list = ['default'] graph_type = ['default'] elif target == "uptime": dev_list = ['default'] graph_type = ['default'] elif target == "users": dev_list = ['default'] graph_type = ['default'] elif target == "libvirt": virt_cpu_type = ['default'] virt_disk_type = ['octets', 'ops'] virt_interface_type = ['packets', 'octets', 'errors', 'dropped'] virt_list = {} virt_file_exist = {} try: kvc = KaresansuiVirtConnection() for domname in get_dom_list(): virt_list[domname] = {} if rrd.set_rrd_dir_host(domname) is False: virt_file_exist[domname] = False continue try: virt = kvc.search_kvg_guests(domname)[0] except: virt_file_exist[domname] = False continue virt_list[domname]['vcpu'] = {} if rrd.check_rrd_file_exist("libvirt", "total", "vcpu"): virt_list[domname]['vcpu']['total'] = virt_cpu_type for i in range(virt.get_vcpus_info()['max_vcpus']): if rrd.check_rrd_file_exist("libvirt", i, "vcpu"): virt_list[domname]['vcpu'][i] = virt_cpu_type virt_list[domname]['disk'] = {} for disk in virt.get_disk_info(): if rrd.check_rrd_file_exist("libvirt", disk['target']['dev'], "disk"): virt_list[domname]['disk'][ disk['target']['dev']] = virt_disk_type virt_list[domname]['interface'] = {} for net_dev in virt.get_interface_info(): if rrd.check_rrd_file_exist("libvirt", net_dev['target']['dev'], "interface"): virt_list[domname]['interface'][ net_dev['target']['dev']] = virt_interface_type if virt_list[domname]['vcpu'] == {} and \ virt_list[domname]['disk'] == {} and \ virt_list[domname]['interface'] == {}: virt_list[domname] = {} virt_file_exist[domname] = False else: virt_file_exist[domname] = True finally: kvc.close() self.view.virt_list = virt_list self.view.virt_file_exist = virt_file_exist self.view.group_display = group_display dev_list.sort() self.view.dev_list = dev_list self.view.graph_type = graph_type return True
def _GET(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() target = param[1] if target is None: return web.notfound() dev = param[2] if dev is None: return web.notfound() if not validates_report(self): self.logger.debug("Get report failed. Did not validate.") return web.badrequest(self.view.alert) today = datetime.datetime.today() if is_param(self.input, 'report_start_day') and not is_empty( self.input.report_start_day): start_day = str2datetime( self.input.report_start_day, DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0]) else: start_day = today - datetime.timedelta(1) if is_param(self.input, 'report_start_time') and not is_empty( self.input.report_start_time): (start_hour, start_minute) = self.input.report_start_time.split(':', 2) start_hour = int(start_hour) start_minute = int(start_minute) else: start_hour = today.hour start_minute = today.minute if is_param( self.input, 'report_end_day') and not is_empty(self.input.report_end_day): end_day = str2datetime( self.input.report_end_day, DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0]) else: end_day = today if is_param(self.input, 'report_end_time') and not is_empty( self.input.report_end_time): (end_hour, end_minute) = self.input.report_end_time.split(':', 2) end_hour = int(end_hour) end_minute = int(end_minute) else: end_hour = today.hour end_minute = today.minute start_time = create_epochsec( start_day.year, start_day.month, start_day.day, start_hour, start_minute, ) end_time = create_epochsec( end_day.year, end_day.month, end_day.day, end_hour, end_minute, ) if int(start_time) > int(end_time): self.logger.error("Getting reports failed. Start time > end time.") return web.badrequest( _('Getting reports failed. Start time > end time.')) if is_param(self.input, 'type') and not is_empty(self.input.type): type = self.input.type else: type = "default" if is_param(self.input, 'host') and not is_empty(self.input.host): host = self.input.host else: host = None if is_param( self.input, 'libvirt_target') and not is_empty(self.input.libvirt_target): libvirt_target = self.input.libvirt_target else: libvirt_target = None rrd = RRD(self._, self.me.languages) if host is not None: if rrd.set_rrd_dir_host(host) is False: self.logger.debug("Get report failed. Target host not found.") return web.notfound() filepath = rrd.create_graph(target, dev, type, start_time, end_time, libvirt_target) if filepath != "": self.download.type = OUTPUT_TYPE_FILE self.download.file = filepath self.download.once = True return True