def view_services(request): return_dict = {} try: template = 'logged_in_error.html' if "ack" in request.GET: if request.GET["ack"] == "start_success": return_dict['ack_message'] = "Service start successful. Please wait for a few seconds for the status below to be updated." elif request.GET["ack"] == "stop_success": return_dict['ack_message'] = "Service stop successful. Please wait for a few seconds for the status below to be updated." elif request.GET["ack"] == "stop_fail": return_dict['ack_message'] = "Service stop failed" elif request.GET["ack"] == "start_fail": return_dict['ack_message'] = "Service start failed" if 'service_change_status' in request.GET: if request.GET['service_change_status'] != 'none': return_dict['ack_message'] = 'Service status change initiated. Output : %s' % urllib.quote( request.GET['service_change_status']) else: return_dict['ack_message'] = 'Service status change initiated' return_dict["services"], err = services_management.get_sysd_services_status() if err: raise Exception(err) return django.shortcuts.render_to_response('view_services.html', return_dict, context_instance=django.template.context.RequestContext(request)) except Exception, e: return_dict['base_template'] = "system_base.html" return_dict["page_title"] = 'System services' return_dict['tab'] = 'view_services_tab' return_dict["error"] = 'Error loading system services status' return_dict["error_details"] = str(e) return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
def display_services_status(): try: os.system('clear') print "IntegralSTOR Services Status" print "-----------------------------" print services_d, err = services_management.get_sysd_services_status() if err: raise Exception(err) for name, service in services_d.items(): print print "\t%s: %s" % ( name, service['info']['status']['status_str'].upper()) print while True: print check = raw_input( "To view detailed status press 'y', otherwise, press any other key to exit: " ) if check.lower() == 'y': os.system('clear') for name, service in services_d.items(): print print "Service: %s" % name print print "\t%s" % service['info']['status']['output_str'] print "--" * 10 else: break except Exception, e: print "Error: %s" % e return -1
def get_services_status(): """The status of various services.""" s = {} try: platform, err = config.get_platform() if err: raise Exception(err) service_dict, err = services_management.get_sysd_services_status() if err: raise Exception(err) for service_name, service_info in service_dict.items(): if service_info['info']['status']['status_str'] in [ 'Failed', 'Unknown State' ]: s[service_name] = [ -1, service_info['info']['status']['output_str'], service_info['info']['status']['status_str'] ] else: s[service_name] = [ 0, service_info['info']['status']['output_str'], service_info['info']['status']['status_str'] ] except Exception, e: return None, 'Error retrieving services status: %s' % str(e)
def get_services_status(): """The status of various services.""" s = {} try: platform, err = config.get_platform() if err: raise Exception(err) service_dict, err = services_management.get_sysd_services_status() if err: raise Exception(err) for service_name, service_info in service_dict.items(): if service_info['info']['status']['status_str'] in ['Failed', 'Unknown State']: s[service_name] = [-1, service_info['info'] ['status']['output_str'], service_info['info']['status']['status_str']] else: s[service_name] = [ 0, service_info['info']['status']['output_str'], service_info['info']['status']['status_str']] except Exception, e: return None, 'Error retrieving services status: %s' % str(e)
def view_services(request): return_dict = {} try: template = 'logged_in_error.html' if "ack" in request.GET: if request.GET["ack"] == "start_success": return_dict[ 'ack_message'] = "Service start successful. Please wait for a few seconds for the status below to be updated." elif request.GET["ack"] == "stop_success": return_dict[ 'ack_message'] = "Service stop successful. Please wait for a few seconds for the status below to be updated." elif request.GET["ack"] == "stop_fail": return_dict['ack_message'] = "Service stop failed" elif request.GET["ack"] == "start_fail": return_dict['ack_message'] = "Service start failed" if 'service_change_status' in request.GET: if request.GET['service_change_status'] != 'none': return_dict[ 'ack_message'] = 'Service status change initiated. Output : %s' % urllib.quote( request.GET['service_change_status']) else: return_dict['ack_message'] = 'Service status change initiated' return_dict[ "services"], err = services_management.get_sysd_services_status() if err: raise Exception(err) return django.shortcuts.render_to_response( 'view_services.html', return_dict, context_instance=django.template.context.RequestContext(request)) except Exception, e: return_dict['base_template'] = "services_base.html" return_dict["page_title"] = 'System services' return_dict['tab'] = 'view_services_tab' return_dict["error"] = 'Error loading system services status' return_dict["error_details"] = str(e) return django.shortcuts.render_to_response( "logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
def view_dashboard(request, page = None): return_dict = {} try: return_dict["page_title"] = 'Overall system health' return_dict['tab'] = 'system_health_tab' return_dict["error"] = 'Error loading system health data' if request.method != 'GET': raise Exception('Invalid access method. Please use the menus') si, err = system_info.load_system_config() if err: raise Exception(err) if not si: raise Exception('Error loading system configuration') #node_name = si.keys()[0] #node = si[node_name] return_dict['node'] = si # print node.keys() # By default show error page template = "logged_in_error.html" # Chart specific declarations # will return 02, instead of 2. end_epoch, err = datetime_utils.get_epoch(when='now') if err: raise Exception(err) start_epoch = end_epoch - 3 * 60 * 60 start, err = datetime_utils.convert_from_epoch( start_epoch, return_format='str', str_format='%H:%M:%S', to='local') if err: raise Exception(err) end, err = datetime_utils.convert_from_epoch( end_epoch, return_format='str', str_format='%H:%M:%S', to='local') if err: raise Exception(err) todays_date = (datetime.date.today()).strftime('%02d') value_list = [] time_list = [] num_bad_disks = 0 num_hw_raid_bad_disks = 0 num_hw_raid_ctrl_disks = 0 num_smart_ctrl_disks = 0 num_disks = len(si['disks']) disks_ok = True for sn, disk in si['disks'].items(): if 'status' in disk: if 'hw_raid' in disk: if not disk['hw_raid']: num_smart_ctrl_disks += 1 if (disk['status'] is not None and disk['status'].upper() not in ['PASSED', 'OK']): num_bad_disks += 1 disks_ok = False else: num_hw_raid_ctrl_disks += 1 if (disk['status'] is not None and disk['status'].upper() != 'OK'): num_hw_raid_bad_disks += 1 disks_ok = False else: # Assume its a non raid disk num_smart_ctrl_disks += 1 if (disk['status'] is not None and disk['status'].upper() not in ['PASSED', 'OK']): num_bad_disks += 1 disks_ok = False return_dict['num_disks'] = num_disks return_dict['num_bad_disks'] = num_bad_disks return_dict['disks_ok'] = disks_ok return_dict['num_hw_raid_bad_disks'] = num_hw_raid_bad_disks return_dict['num_hw_raid_ctrl_disks'] = num_hw_raid_ctrl_disks return_dict['num_smart_ctrl_disks'] = num_smart_ctrl_disks if 'ipmi_status' in si: num_sensors = len(si['ipmi_status']) num_bad_sensors = 0 ipmi_ok = True for sensor in si['ipmi_status']: if sensor['status'] in ['ok', 'nr', 'na']: continue else: num_bad_sensors += 1 ipmi_ok = False return_dict['num_sensors'] = num_sensors return_dict['num_bad_sensors'] = num_bad_sensors return_dict['ipmi_ok'] = ipmi_ok services_dict, err = services_management.get_sysd_services_status() if err: raise Exception(err) num_services = len(services_dict) num_failed_services = 0 num_active_services = 0 num_inactive_services = 0 services_ok = True if services_dict: for service, service_d in services_dict.items(): if service_d["info"]["status"]["status_str"] == "Active": num_active_services += 1 elif service_d["info"]["status"]["status_str"] == "Inactive": num_inactive_services += 1 elif service_d["info"]["status"]["status_str"] == "Failed": num_failed_services += 1 services_ok = False elif service_d["info"]["status"]["status_str"] == "Unknown State": num_failed_services += 1 services_ok = False return_dict['num_services'] = num_services return_dict['num_active_services'] = num_active_services return_dict['num_inactive_services'] = num_inactive_services return_dict['num_failed_services'] = num_failed_services return_dict['services_ok'] = services_ok else: raise Exception('Error retrieving services status') pools, err = zfs.get_pools() if err: raise Exception(err) num_pools = len(pools) num_bad_pools = 0 num_degraded_pools = 0 num_high_usage_pools = 0 for pool in pools: if pool['usage']['used_percent'] > 75: num_high_usage_pools += 1 if pool['config']['pool']['root']['status']['state'] == 'ONLINE': pass elif pool['config']['pool']['root']['status']['state'] == 'DEGRADED': num_degraded_pools += 1 else: num_bad_pools += 1 return_dict['num_pools'] = num_pools return_dict['num_bad_pools'] = num_bad_pools return_dict['num_degraded_pools'] = num_degraded_pools return_dict['num_high_usage_pools'] = num_high_usage_pools load_avg_ok = True if (si["load_avg"]["5_min"] > si["load_avg"]["cpu_cores"]) or (si["load_avg"]["15_min"] > si["load_avg"]["cpu_cores"]): load_avg_ok = False return_dict['load_avg_ok'] = load_avg_ok shares_list, err = cifs.get_shares_list() if err: raise Exception(err) return_dict['num_cifs_shares'] = len(shares_list) exports_list, err = nfs.load_exports_list() if err: raise Exception(err) return_dict['num_nfs_exports'] = len(exports_list) target_list, err = iscsi_stgt.get_targets() if err: raise Exception(err) return_dict['num_iscsi_targets'] = len(target_list) with open('/proc/uptime', 'r') as f: uptime_seconds = float(f.readline().split()[0]) uptime_str = '%s hours' % ( ':'.join(str(datetime.timedelta(seconds=uptime_seconds)).split(':')[:2])) return_dict['uptime_str'] = uptime_str # CPU status if not page: page = "sys_health" if page == "cpu": return_dict["page_title"] = 'CPU statistics' return_dict['tab'] = 'cpu_tab' return_dict["error"] = 'Error loading CPU statistics' cpu, err = stats.get_system_stats(todays_date, start, end, "cpu") if err: raise Exception(err) value_dict = {} if cpu: for key in cpu.keys(): value_list = [] time_list = [] if key == "date": pass else: if cpu[key]: for a in cpu[key]: time_list.append(a[0]) value_list.append(a[1]) value_dict[key] = value_list return_dict["data_dict"] = value_dict queue, err = stats.get_system_stats( todays_date, start, end, "queue") if err: raise Exception(err) value_dict = {} if queue: for key in queue.keys(): value_list = [] time_list = [] if key == "date": pass else: for a in queue[key]: time_list.append(a[0]) value_list.append(a[1]) value_dict[key] = value_list return_dict["data_dict_queue"] = value_dict return_dict['node'] = si d = {} template = "view_cpu_stats.html" elif page == "sys_health": return_dict["page_title"] = 'Overall system health' return_dict['tab'] = 'system_health_tab' return_dict["error"] = 'Error loading system health data' template = "view_dashboard.html" hw_platform, err = config.get_hardware_platform() if hw_platform: return_dict['hw_platform'] = hw_platform if hw_platform == 'dell': from integralstor.platforms import dell idrac_url, err = dell.get_idrac_addr() if idrac_url: return_dict['idrac_url'] = idrac_url # Memory elif page == "memory": return_dict["page_title"] = 'Memory statistics' return_dict['tab'] = 'memory_tab' return_dict["error"] = 'Error loading memory statistics' mem, err = stats.get_system_stats( todays_date, start, end, "memory") if err: raise Exception(err) if mem: for a in mem["memused"]: time_list.append(a[0]) value_list.append((a[1] / (1024 * 1024))) return_dict['memory_status'] = si['memory'] template = "view_memory_stats.html" # Network elif page == "network": return_dict["page_title"] = 'Network statistics' return_dict['tab'] = 'network_tab' return_dict["error"] = 'Error loading Network statistics' network, err = stats.get_system_stats( todays_date, start, end, "network") if err: raise Exception(err) value_dict = {} if network: for key in network.keys(): value_list = [] time_list = [] if key == "date" or key == "lo": pass else: for a in network[key]["ifutil-percent"]: time_list.append(a[0]) value_list.append(a[1]) value_dict[key] = value_list return_dict["data_dict"] = value_dict return_dict["network_status"] = si['interfaces'] template = "view_network_stats.html" return_dict["labels"] = time_list return_dict["data"] = value_list return django.shortcuts.render_to_response(template, return_dict, context_instance=django.template.context.RequestContext(request)) except Exception, e: return_dict['base_template'] = "monitoring_base.html" return_dict["error_details"] = str(e) return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))