コード例 #1
0
    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
コード例 #2
0
ファイル: hostby1reportby1.py プロジェクト: goura/karesansui
    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
コード例 #3
0
    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
コード例 #4
0
    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