def show(request, page, info=None): return_dict = {} try: si, err = system_info.load_system_config() if err: raise Exception(err) #assert False return_dict['system_info'] = si #By default show error page template = "logged_in_error.html" if page == "dir_contents": #CHANGE THIS TO SHOW LOCAL DIR LISTINGS!! return django.http.HttpResponse(dir_list, content_type == 'application/json') elif page == "integral_view_log_level": template = "view_integral_view_log_level.html" try: log_level = iv_logging.get_log_level_str() except Exception, e: return_dict["error"] = str(e) else: return_dict["log_level_str"] = log_level if "saved" in request.REQUEST: return_dict["saved"] = request.REQUEST["saved"] ''' elif page == "node_info": return_dict['base_template'] = "system_base.html" return_dict["page_title"] = 'System configuration' return_dict['tab'] = 'node_info_tab' return_dict["error"] = 'Error loading system configuration' template = "view_node_info.html" if "from" in request.GET: frm = request.GET["from"] return_dict['frm'] = frm #return_dict['node'] = si[info] return_dict['node'] = si[si.keys()[0]] ''' return django.shortcuts.render_to_response( template, return_dict, context_instance=django.template.context.RequestContext(request))
def show(request, page, info = None): return_dict = {} try: assert request.method == 'GET' si = system_info.load_system_config() #assert False return_dict['system_info'] = si #By default show error page template = "logged_in_error.html" if page == "dir_contents": #CHANGE THIS TO SHOW LOCAL DIR LISTINGS!! return django.http.HttpResponse(dir_list,mimetype='application/json') elif page == "ntp_settings": template = "view_ntp_settings.html" try: ntp_servers = ntp.get_ntp_servers() except Exception, e: return_dict["error"] = str(e) else: return_dict["ntp_servers"] = ntp_servers if "saved" in request.REQUEST: return_dict["saved"] = request.REQUEST["saved"] elif page == "integral_view_log_level": template = "view_integral_view_log_level.html" try: log_level = iv_logging.get_log_level_str() except Exception, e: return_dict["error"] = str(e)
def show(request, page, info=None): return_dict = {} try: gluster_lck, err = lock.get_lock('gluster_commands') if err: raise Exception(err) if not gluster_lck: raise Exception( 'This action cannot be performed as an underlying storage command is being run. Please retry this operation after a few seconds.' ) assert request.method == 'GET' vil, err = gluster_volumes.get_basic_volume_info_all() if err: raise Exception(err) si, err = system_info.load_system_config() if err: raise Exception(err) if not si: raise Exception('Could not obtain system information') #assert False return_dict['system_info'] = si return_dict['volume_info_list'] = vil # By default show error page if page == "dir_contents": dir_name = None error = False path_base = None vol_name = "" dir_list = [] try: if ("vol_name" in request.GET) and ("dir" in request.GET): vol_name = request.GET.get("vol_name") dir_name = request.GET.get("dir") first = request.GET.get("first") # print first else: raise Exception("No volume or Directory Specified") if first: dirs, err = gluster_gfapi.get_gluster_dir_list( vol_name, "") else: dirs, err = gluster_gfapi.get_gluster_dir_list( vol_name, dir_name) if err: raise Exception(err) dir_list = json.dumps(dirs) except Exception as e: return django.http.HttpResponse("Exception Occured : %s" % str(e)) #iv_logging.debug("Exception while getting dir listing : "%e) return django.http.HttpResponse(dir_list, mimetype='application/json') elif page == "integral_view_log_level": template = "view_integral_view_log_level.html" log_level, err = iv_logging.get_log_level_str() if err: raise Exception(err) return_dict["log_level_str"] = log_level if "saved" in request.REQUEST: return_dict["saved"] = request.REQUEST["saved"] elif page == "batch_start_conf": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View batch job' return_dict['tab'] = 'volume_background_tab' return_dict[ "error"] = 'Error displaying batch job creation confirmation' # Display a confirmation that the batch job has been scheduled. # info contains the filename of the batch job template = "batch_start_conf.html" return_dict["fname"] = info elif page == "batch_status": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View batch jobs' return_dict['tab'] = 'volume_background_tab' return_dict["error"] = 'Error loading batch jobs' # Load the list of entries from all the files in the start and # process directories file_list, err = batch.load_all_files() if err: raise Exception(err) return_dict["file_list"] = file_list template = "view_batch_process_list.html" elif page == "batch_status_details": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View batch job status' return_dict['tab'] = 'volume_background_tab' return_dict["error"] = 'Error loading batch job status' d, err = batch.load_specific_file(info) if err: raise Exception(err) if not d: raise Exception('Unknown batch job specified') else: return_dict["process_info"] = d template = "view_batch_status_details.html" elif page == "volume_info": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View volume information' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading volume information' vol, err = gluster_volumes.get_complete_volume_info(info) if err: raise Exception(err) if not vol: raise Exception("Could not locate information for volume %s" % info) quota_enabled = False if "options" in vol: for o in vol["options"]: if "features.quota" == o["name"] and o["value"] == "on": quota_enabled = True break return_dict['quota_enabled'] = quota_enabled template = "view_volume_info.html" return_dict["vol"] = vol data_locations_list, err = gluster_volumes.get_brick_hostname_list( vol) if err: raise Exception(err) # print data_locations_list return_dict["data_locations_list"] = data_locations_list ivl, err = iscsi.load_iscsi_volumes_list(vil) if err: raise Exception(err) if ivl and vol["name"] in ivl: return_dict["iscsi"] = True # To accomodate django template quirks # if vol["type"] in ["Replicate", "Distributed-Replicate"]: # elif vol["type"] in ["Distribute", "Distributed-Replicate"]: if 'replicate' in vol["type"].lower(): return_dict["replicate"] = True if 'distribute' in vol["type"].lower(): return_dict["distribute"] = True elif page == "volume_status": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View volume status' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading volume status' vol, err = gluster_volumes.get_volume_status(vil, info) if err: raise Exception(err) if not vol: raise Exception("Could not locate information for volume %s" % info) template = "view_volume_status.html" return_dict["vol"] = vol # To accomodate django template quirks if vol["type"] in ["Replicate", "Distributed-Replicate"]: return_dict["replicate"] = True if vol["type"] in ["Distribute", "Distributed-Replicate"]: return_dict["distribute"] = True elif page == "node_info": return_dict['base_template'] = "gridcell_base.html" return_dict["page_title"] = 'View GRIDCell information' return_dict['tab'] = 'gridcell_list_tab' return_dict["error"] = 'Error loading GRIDCell information' template = "view_node_info.html" if "from" in request.GET: frm = request.GET["from"] return_dict['frm'] = frm vol_list, err = gluster_volumes.get_volumes_on_node(info, vil) if err: raise Exception(err) return_dict['node'] = si[info] return_dict['vol_list'] = vol_list elif page == "manifest": # Read a generated manifest file and display the results. if "manifest" not in request.GET: raise Exception('Invalid request. No manifest file specified') manifest = request.GET["manifest"] ss_path, err = config.get_system_status_path() if err: raise Exception(err) with open("%s/%s" % (ss_path, manifest), "r") as f: nodes = json.load(f) return_dict["manifest"] = nodes return_dict["manifest_file"] = manifest return django.shortcuts.render_to_response( 'view_manifest.html', return_dict, context_instance=django.template.context.RequestContext( request)) elif page == "iscsi_auth_access_info": return_dict['base_template'] = "shares_and_targets_base.html" return_dict["page_title"] = 'View ISCSI authorized access info' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading ISCSI authorized access info' if 'id' not in request.GET: raise Exception('Invalid request. No auth access id specified') id = int(request.GET['id']) l, err = iscsi.load_auth_access_users_info(id) if err: raise Exception(err) if not l: raise Exception( 'No auth access information for the id specified') istr = "<b>Authorized access group users : </b>" for i in l: istr += i["user"] istr += ", " # return django.http.HttpResponse("<b>Authorized access details # </b><br>User : %s, Peer user : %s"%(d["user"],d["peer_user"] )) return django.http.HttpResponse("%s" % istr) elif page == "iscsi_initiator_info": return_dict['base_template'] = "shares_and_targets_base.html" return_dict["page_title"] = 'View ISCSI initiator info' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading ISCSI initiator info' if 'id' not in request.GET: raise Exception( 'Invalid request. No initiator access id specified') id = int(request.GET['id']) d, err = iscsi.load_initiator_info(id) if err: raise Exception(err) if not d: raise Exception( 'No initiator information for the id specified') return django.http.HttpResponse( "<b>Initiator details</b><br>Initiators : %s, Auth network : %s, Comment : %s" % (d["initiators"], d["auth_network"], d["comment"])) elif page == "system_config": template = "view_system_config.html" elif page == "system_status": return_dict['base_template'] = "gridcell_base.html" return_dict["page_title"] = 'View system status' return_dict['tab'] = 'gridcell_list_tab' return_dict["error"] = 'Error loading system status' # Disk Status page and system status page has been integrated. # Get the disk status disk_status = {} disk_new = {} if request.GET.get("node_id") is not None: disk_status = si[request.GET.get("node_id")] return_dict["disk_status"] = {} return_dict["disk_status"][request.GET.get( "node_id")] = disk_status template = "view_disk_status_details.html" else: """ Iterate the system information, and get the following data : 1. The status of every disk 2. The status of the pool 3. The name of the pool 4. Calcualte the background_color Format : {'node_id':{'name':'pool_name','background_color':'background_color','disks':{disks_pool}}} """ for key, value in si.iteritems(): # count the failures in case of Offline or degraded disk_failures = 0 # Default background color background_color = "bg-green" if not si[key]["in_cluster"]: disk_new[key] = {} disk_new[key]["disks"] = {} disk_new[key]["in_cluster"] = si[key]["in_cluster"] for disk_key, disk_value in si[key]["disks"].iteritems( ): # print disk_key, disk_value if disk_value["rotational"]: disk_new[key]["disks"][disk_key] = disk_value[ "status"] # print disk_value["status"] if disk_value["status"] != "PASSED": disk_failures += 1 if disk_failures >= 1: background_color = "bg-yellow" if disk_failures >= 4: background_color == "bg-red" if si[key]['node_status_str'] == "Degraded": background_color = "bg-yellow" # print type(si[key]["pools"][0]["state"]) if si[key]["pools"][0]["state"] == unicode("ONLINE"): background_color == "bg-red" disk_new[key]["background_color"] = background_color disk_new[key]["name"] = si[key]["pools"][0][ "pool_name"] sorted_disks = [] for key1, value1 in sorted( si[key]["disks"].iteritems(), key=lambda (k, v): v["position"]): sorted_disks.append(key1) disk_new[key]["disk_pos"] = sorted_disks # print disk_new #disk_new[key]["info"] = pool_status else: disk_status[key] = {} if si[key]["node_status"] != -1: disk_status[key]["disks"] = {} disk_status[key]["in_cluster"] = si[key][ "in_cluster"] for disk_key, disk_value in si[key][ "disks"].iteritems(): # print disk_key, disk_value if disk_value["rotational"]: disk_status[key]["disks"][ disk_key] = disk_value["status"] # print disk_value["status"] if disk_value["status"] != "PASSED": disk_failures += 1 if disk_failures >= 1: background_color = "bg-yellow" if disk_failures >= 4: background_color == "bg-red" if si[key]['node_status_str'] == "Degraded": background_color = "bg-yellow" # print type(si[key]["pools"][0]["state"]) if si[key]["pools"][0]["state"] == unicode( "ONLINE"): background_color == "bg-red" disk_status[key][ "background_color"] = background_color disk_status[key]["name"] = si[key]["pools"][0][ "pool_name"] sorted_disks = [] for key1, value1 in sorted( si[key]["disks"].iteritems(), key=lambda (k, v): v["position"]): sorted_disks.append(key1) disk_status[key]["disk_pos"] = sorted_disks # print disk_status #disk_status[key]["info"] = pool_status else: disk_status[key] = {} disk_status[key]["background_color"] = "bg-red" disk_status[key]["disk_pos"] = {} disk_status[key]["name"] = "Unknown" template = "view_disk_status.html" return_dict["disk_status"] = disk_status return_dict["disk_new"] = disk_new elif page == "pool_status": template = "view_pool_status.html" num_free_nodes = 0 for name, node in si.items(): if node["node_status"] >= 0 and (not node["in_cluster"]): num_free_nodes += 1 return_dict['num_free_nodes'] = num_free_nodes elif page == "alerts": return_dict['base_template'] = "system_log_base.html" return_dict["page_title"] = 'View alerts' return_dict['tab'] = 'system_log_alert_tab' return_dict["error"] = 'Error loading system alerts' template = "view_alerts.html" alerts_list, err = alerts.get_alerts() if err: raise Exception(err) return_dict['alerts_list'] = alerts_list elif page == "volume_info_all": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View volume info' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading volume info' template = "view_volume_info_all.html" return_dict['volume_info_list'] = vil ivl, err = iscsi.load_iscsi_volumes_list(vil) if err: raise Exception(err) return_dict['iscsi_volumes'] = ivl elif page == "volume_status_all": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View volume status' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading volume status' template = "view_volume_status_all.html" return_dict['volume_info_list'] = vil return django.shortcuts.render_to_response( template, return_dict, context_instance=django.template.context.RequestContext(request)) except Exception, e: s = str(e) if "Another transaction is in progress".lower() in s.lower(): return_dict[ "error_details"] = "An underlying storage operation has locked a volume so we are unable to process this request. Please try after a couple of seconds" else: return_dict["error_details"] = s return django.shortcuts.render_to_response( "logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
def show(request, page, info=None): return_dict = {} try: gluster_lck, err = lock.get_lock('gluster_commands') if err: raise Exception(err) if not gluster_lck: raise Exception( 'This action cannot be performed as an underlying storage command is being run. Please retry this operation after a few seconds.') assert request.method == 'GET' vil, err = gluster_volumes.get_basic_volume_info_all() if err: raise Exception(err) si, err = system_info.load_system_config() if err: raise Exception(err) if not si: raise Exception('Could not obtain system information') #assert False return_dict['system_info'] = si return_dict['volume_info_list'] = vil # By default show error page if page == "dir_contents": dir_name = None error = False path_base = None vol_name = "" dir_list = [] try: if ("vol_name" in request.GET) and ("dir" in request.GET): vol_name = request.GET.get("vol_name") dir_name = request.GET.get("dir") first = request.GET.get("first") # print first else: raise Exception("No volume or Directory Specified") if first: dirs, err = gluster_gfapi.get_gluster_dir_list( vol_name, "") else: dirs, err = gluster_gfapi.get_gluster_dir_list( vol_name, dir_name) if err: raise Exception(err) dir_list = json.dumps(dirs) except Exception as e: return django.http.HttpResponse("Exception Occured : %s" % str(e)) #iv_logging.debug("Exception while getting dir listing : "%e) return django.http.HttpResponse(dir_list, mimetype='application/json') elif page == "integral_view_log_level": template = "view_integral_view_log_level.html" log_level, err = iv_logging.get_log_level_str() if err: raise Exception(err) return_dict["log_level_str"] = log_level if "saved" in request.REQUEST: return_dict["saved"] = request.REQUEST["saved"] elif page == "batch_start_conf": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View batch job' return_dict['tab'] = 'volume_background_tab' return_dict["error"] = 'Error displaying batch job creation confirmation' # Display a confirmation that the batch job has been scheduled. # info contains the filename of the batch job template = "batch_start_conf.html" return_dict["fname"] = info elif page == "batch_status": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View batch jobs' return_dict['tab'] = 'volume_background_tab' return_dict["error"] = 'Error loading batch jobs' # Load the list of entries from all the files in the start and # process directories file_list, err = batch.load_all_files() if err: raise Exception(err) return_dict["file_list"] = file_list template = "view_batch_process_list.html" elif page == "batch_status_details": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View batch job status' return_dict['tab'] = 'volume_background_tab' return_dict["error"] = 'Error loading batch job status' d, err = batch.load_specific_file(info) if err: raise Exception(err) if not d: raise Exception('Unknown batch job specified') else: return_dict["process_info"] = d template = "view_batch_status_details.html" elif page == "volume_info": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View volume information' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading volume information' vol, err = gluster_volumes.get_complete_volume_info(info) if err: raise Exception(err) if not vol: raise Exception( "Could not locate information for volume %s" % info) quota_enabled = False if "options" in vol: for o in vol["options"]: if "features.quota" == o["name"] and o["value"] == "on": quota_enabled = True break return_dict['quota_enabled'] = quota_enabled template = "view_volume_info.html" return_dict["vol"] = vol data_locations_list, err = gluster_volumes.get_brick_hostname_list( vol) if err: raise Exception(err) # print data_locations_list return_dict["data_locations_list"] = data_locations_list ivl, err = iscsi.load_iscsi_volumes_list(vil) if err: raise Exception(err) if ivl and vol["name"] in ivl: return_dict["iscsi"] = True # To accomodate django template quirks # if vol["type"] in ["Replicate", "Distributed-Replicate"]: # elif vol["type"] in ["Distribute", "Distributed-Replicate"]: if 'replicate' in vol["type"].lower(): return_dict["replicate"] = True if 'distribute' in vol["type"].lower(): return_dict["distribute"] = True elif page == "volume_status": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View volume status' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading volume status' vol, err = gluster_volumes.get_volume_status(vil, info) if err: raise Exception(err) if not vol: raise Exception( "Could not locate information for volume %s" % info) template = "view_volume_status.html" return_dict["vol"] = vol # To accomodate django template quirks if vol["type"] in ["Replicate", "Distributed-Replicate"]: return_dict["replicate"] = True if vol["type"] in ["Distribute", "Distributed-Replicate"]: return_dict["distribute"] = True elif page == "node_info": return_dict['base_template'] = "gridcell_base.html" return_dict["page_title"] = 'View GRIDCell information' return_dict['tab'] = 'gridcell_list_tab' return_dict["error"] = 'Error loading GRIDCell information' template = "view_node_info.html" if "from" in request.GET: frm = request.GET["from"] return_dict['frm'] = frm vol_list, err = gluster_volumes.get_volumes_on_node(info, vil) if err: raise Exception(err) return_dict['node'] = si[info] return_dict['vol_list'] = vol_list elif page == "manifest": # Read a generated manifest file and display the results. if "manifest" not in request.GET: raise Exception('Invalid request. No manifest file specified') manifest = request.GET["manifest"] ss_path, err = config.get_system_status_path() if err: raise Exception(err) with open("%s/%s" % (ss_path, manifest), "r") as f: nodes = json.load(f) return_dict["manifest"] = nodes return_dict["manifest_file"] = manifest return django.shortcuts.render_to_response('view_manifest.html', return_dict, context_instance=django.template.context.RequestContext(request)) elif page == "iscsi_auth_access_info": return_dict['base_template'] = "shares_and_targets_base.html" return_dict["page_title"] = 'View ISCSI authorized access info' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading ISCSI authorized access info' if 'id' not in request.GET: raise Exception('Invalid request. No auth access id specified') id = int(request.GET['id']) l, err = iscsi.load_auth_access_users_info(id) if err: raise Exception(err) if not l: raise Exception( 'No auth access information for the id specified') istr = "<b>Authorized access group users : </b>" for i in l: istr += i["user"] istr += ", " # return django.http.HttpResponse("<b>Authorized access details # </b><br>User : %s, Peer user : %s"%(d["user"],d["peer_user"] )) return django.http.HttpResponse("%s" % istr) elif page == "iscsi_initiator_info": return_dict['base_template'] = "shares_and_targets_base.html" return_dict["page_title"] = 'View ISCSI initiator info' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading ISCSI initiator info' if 'id' not in request.GET: raise Exception( 'Invalid request. No initiator access id specified') id = int(request.GET['id']) d, err = iscsi.load_initiator_info(id) if err: raise Exception(err) if not d: raise Exception( 'No initiator information for the id specified') return django.http.HttpResponse("<b>Initiator details</b><br>Initiators : %s, Auth network : %s, Comment : %s" % (d["initiators"], d["auth_network"], d["comment"])) elif page == "system_config": template = "view_system_config.html" elif page == "system_status": return_dict['base_template'] = "gridcell_base.html" return_dict["page_title"] = 'View system status' return_dict['tab'] = 'gridcell_list_tab' return_dict["error"] = 'Error loading system status' # Disk Status page and system status page has been integrated. # Get the disk status disk_status = {} disk_new = {} if request.GET.get("node_id") is not None: disk_status = si[request.GET.get("node_id")] return_dict["disk_status"] = {} return_dict["disk_status"][request.GET.get( "node_id")] = disk_status template = "view_disk_status_details.html" else: """ Iterate the system information, and get the following data : 1. The status of every disk 2. The status of the pool 3. The name of the pool 4. Calcualte the background_color Format : {'node_id':{'name':'pool_name','background_color':'background_color','disks':{disks_pool}}} """ for key, value in si.iteritems(): # count the failures in case of Offline or degraded disk_failures = 0 # Default background color background_color = "bg-green" if not si[key]["in_cluster"]: disk_new[key] = {} disk_new[key]["disks"] = {} disk_new[key]["in_cluster"] = si[key]["in_cluster"] for disk_key, disk_value in si[key]["disks"].iteritems(): # print disk_key, disk_value if disk_value["rotational"]: disk_new[key]["disks"][disk_key] = disk_value["status"] # print disk_value["status"] if disk_value["status"] != "PASSED": disk_failures += 1 if disk_failures >= 1: background_color = "bg-yellow" if disk_failures >= 4: background_color == "bg-red" if si[key]['node_status_str'] == "Degraded": background_color = "bg-yellow" # print type(si[key]["pools"][0]["state"]) if si[key]["pools"][0]["state"] == unicode("ONLINE"): background_color == "bg-red" disk_new[key]["background_color"] = background_color disk_new[key]["name"] = si[key]["pools"][0]["pool_name"] sorted_disks = [] for key1, value1 in sorted(si[key]["disks"].iteritems(), key=lambda (k, v): v["position"]): sorted_disks.append(key1) disk_new[key]["disk_pos"] = sorted_disks # print disk_new #disk_new[key]["info"] = pool_status else: disk_status[key] = {} if si[key]["node_status"] != -1: disk_status[key]["disks"] = {} disk_status[key]["in_cluster"] = si[key]["in_cluster"] for disk_key, disk_value in si[key]["disks"].iteritems(): # print disk_key, disk_value if disk_value["rotational"]: disk_status[key]["disks"][disk_key] = disk_value["status"] # print disk_value["status"] if disk_value["status"] != "PASSED": disk_failures += 1 if disk_failures >= 1: background_color = "bg-yellow" if disk_failures >= 4: background_color == "bg-red" if si[key]['node_status_str'] == "Degraded": background_color = "bg-yellow" # print type(si[key]["pools"][0]["state"]) if si[key]["pools"][0]["state"] == unicode("ONLINE"): background_color == "bg-red" disk_status[key]["background_color"] = background_color disk_status[key]["name"] = si[key]["pools"][0]["pool_name"] sorted_disks = [] for key1, value1 in sorted(si[key]["disks"].iteritems(), key=lambda (k, v): v["position"]): sorted_disks.append(key1) disk_status[key]["disk_pos"] = sorted_disks # print disk_status #disk_status[key]["info"] = pool_status else: disk_status[key] = {} disk_status[key]["background_color"] = "bg-red" disk_status[key]["disk_pos"] = {} disk_status[key]["name"] = "Unknown" template = "view_disk_status.html" return_dict["disk_status"] = disk_status return_dict["disk_new"] = disk_new elif page == "pool_status": template = "view_pool_status.html" num_free_nodes = 0 for name, node in si.items(): if node["node_status"] >= 0 and (not node["in_cluster"]): num_free_nodes += 1 return_dict['num_free_nodes'] = num_free_nodes elif page == "alerts": return_dict['base_template'] = "system_log_base.html" return_dict["page_title"] = 'View alerts' return_dict['tab'] = 'system_log_alert_tab' return_dict["error"] = 'Error loading system alerts' template = "view_alerts.html" alerts_list, err = alerts.get_alerts() if err: raise Exception(err) return_dict['alerts_list'] = alerts_list elif page == "volume_info_all": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View volume info' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading volume info' template = "view_volume_info_all.html" return_dict['volume_info_list'] = vil ivl, err = iscsi.load_iscsi_volumes_list(vil) if err: raise Exception(err) return_dict['iscsi_volumes'] = ivl elif page == "volume_status_all": return_dict['base_template'] = "volume_base.html" return_dict["page_title"] = 'View volume status' return_dict['tab'] = 'volume_configuration_tab' return_dict["error"] = 'Error loading volume status' template = "view_volume_status_all.html" return_dict['volume_info_list'] = vil return django.shortcuts.render_to_response(template, return_dict, context_instance=django.template.context.RequestContext(request)) except Exception, e: s = str(e) if "Another transaction is in progress".lower() in s.lower(): return_dict["error_details"] = "An underlying storage operation has locked a volume so we are unable to process this request. Please try after a couple of seconds" else: return_dict["error_details"] = s return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
def show(request, page, info = None): return_dict = {} try: si,err = system_info.load_system_config() if err: raise Exception(err) #assert False return_dict['system_info'] = si #By default show error page template = "logged_in_error.html" if page == "dir_contents": #CHANGE THIS TO SHOW LOCAL DIR LISTINGS!! return django.http.HttpResponse(dir_list,mimetype='application/json') elif page == "ntp_settings": return_dict['base_template'] = "services_base.html" return_dict["page_title"] = 'Network Time Protocol(NTP) settings ' return_dict['tab'] = 'ntp_settings_tab' return_dict["error"] = 'Error loading Network Time Protocol(NTP) settings ' template = "view_ntp_settings.html" ntp_servers, err = ntp.get_ntp_servers() if err: raise Exception(err) return_dict["ntp_servers"] = ntp_servers if "saved" in request.REQUEST: return_dict["saved"] = request.REQUEST["saved"] elif page == "integral_view_log_level": template = "view_integral_view_log_level.html" try: log_level = iv_logging.get_log_level_str() except Exception, e: return_dict["error"] = str(e) else: return_dict["log_level_str"] = log_level if "saved" in request.REQUEST: return_dict["saved"] = request.REQUEST["saved"] elif page == "email_settings": #print "here" return_dict['base_template'] = "system_base.html" return_dict["page_title"] = 'Email notifications settings ' return_dict['tab'] = 'email_tab' return_dict["error"] = 'Error loading email notifications settings ' d, err = mail.load_email_settings() if err: raise Exception(err) if not d: return_dict["email_not_configured"] = True else: if d["tls"]: d["tls"] = True else: d["tls"] = False if d["email_alerts"]: d["email_alerts"] = True else: d["email_alerts"] = False return_dict["email_settings"] = d if "saved" in request.REQUEST: return_dict["saved"] = request.REQUEST["saved"] if "not_saved" in request.REQUEST: return_dict["not_saved"] = request.REQUEST["not_saved"] if "err" in request.REQUEST: return_dict["err"] = request.REQUEST["err"] template = "view_email_settings.html"