def view_nic(request): return_dict = {} try: template = 'logged_in_error.html' if 'name' not in request.REQUEST: raise Exception("Error loading network interface information : No interface name specified.") name = request.REQUEST['name'] interfaces, err = networking.get_interfaces() if err: raise Exception(err) elif name not in interfaces: raise Exception("Specified interface not found") return_dict['nic'] = interfaces[name] return_dict['name'] = name template = "view_nic.html" return django.shortcuts.render_to_response(template, return_dict, context_instance = django.template.context.RequestContext(request)) except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'View network interface details' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error loading interface details' 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_interfaces(request): return_dict = {} try: template = 'logged_in_error.html' nics, err = networking.get_interfaces() if err: raise Exception(err) bonds, err = networking.get_bonding_info_all() if err: raise Exception(err) if "action" in request.GET: if request.GET["action"] == "saved": conf = "Network interface information successfully updated" if request.GET["action"] == "removed_bond": conf = "Network bond successfully removed" if request.GET["action"] == "state_down": conf = "Network interface successfully disabled. The state change may take a couple of seconds to reflect on this page so please refresh it to check the updated status." if request.GET["action"] == "state_up": conf = "Network interface successfully enabled. The state change may take a couple of seconds to reflect on this page so please refresh it to check the updated status." if request.GET["action"] == "created_bond": conf = "Network bond successfully created. Please edit the address information for the bond in order to use it." return_dict["conf"] = conf return_dict["nics"] = nics return_dict["bonds"] = bonds template = "view_interfaces.html" return django.shortcuts.render_to_response(template, return_dict, context_instance = django.template.context.RequestContext(request)) except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'View network interfaces' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error loading interfaces' 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_nic(request): return_dict = {} try: template = 'logged_in_error.html' if 'name' not in request.REQUEST: raise Exception( "Error loading network interface information : No interface name specified." ) name = request.REQUEST['name'] interfaces, err = networking.get_interfaces() if err: raise Exception(err) elif name not in interfaces: raise Exception("Specified interface not found") if interfaces[name]['vlan']: if '.' not in name: raise Exception('Invalid VLAN name : %s' % name) comps = name.split('.') if len(comps) != 2: raise Exception('Invalid VLAN name : %s' % name) return_dict['parent_nic'] = comps[0] return_dict['nic'] = interfaces[name] if interfaces[name]['vlan_ids']: return_dict['vlans'] = [] for vlan_id in interfaces[name]['vlan_ids']: if '%s.%d' % (name, vlan_id) in interfaces: return_dict['vlans'].append({ 'name': '%s.%d' % (name, vlan_id), 'vlan_id': vlan_id, 'info': interfaces['%s.%d' % (name, vlan_id)] }) return_dict['interfaces'] = interfaces return_dict['name'] = name template = "view_nic.html" return django.shortcuts.render_to_response( template, return_dict, context_instance=django.template.context.RequestContext(request)) except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'View network interface details' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error loading interface details' 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 __init__(self,*args,**kwargs): super(CreateRouteForm, self).__init__(*args, **kwargs) ch = [] interfaces, err = networking.get_interfaces() for key,value in interfaces.iteritems(): #print value['addresses']['AF_INET'] # check if the interface has an ip address assigned to it ? if (value['up_status'] == 'up') and ('AF_INET' in value['addresses']): # Just make sure the ip addr is not the localhost address. Just in case. if value['addresses']['AF_INET'][0]['addr'] != "127.0.0.1": ch.append((key,key)) self.fields["interface"] = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), choices=ch)
def create_bond(request): return_dict = {} try: interfaces, err = networking.get_interfaces() if err: raise Exception(err) if not interfaces: raise Exception("Error loading network interface information : No interfaces found") bonds, err = networking.get_bonding_info_all() if err: raise Exception(err) return_dict['interfaces'] = interfaces if_list = [] existing_bonds = [] for if_name, iface in interfaces.items(): if 'bonding_master' in iface and iface['bonding_master']: existing_bonds.append(if_name) continue if 'slave_to' in iface and iface['slave_to']: continue if 'eth' not in if_name: continue if_list.append(if_name) if request.method == "GET": form = networking_forms.CreateBondForm(interfaces = if_list, existing_bonds = existing_bonds) return_dict['form'] = form return django.shortcuts.render_to_response("create_bond.html", return_dict, context_instance = django.template.context.RequestContext(request)) else: form = networking_forms.CreateBondForm(request.POST, interfaces = if_list, existing_bonds = existing_bonds) return_dict['form'] = form if not form.is_valid(): return django.shortcuts.render_to_response("create_bond.html", return_dict, context_instance = django.template.context.RequestContext(request)) cd = form.cleaned_data result, err = networking.create_bond(cd['name'], cd['slaves'], int(cd['mode'])) if not err: raise Exception(err) audit_str = "Created a network bond named %s with slaves %s"%(cd['name'], ','.join(cd['slaves'])) audit.audit("create_bond", audit_str, request.META["REMOTE_ADDR"]) return django.http.HttpResponseRedirect('/view_interfaces?action=created_bond') except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'Create a network interface bond' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error creating a network interface bond' 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_interfaces(request): return_dict = {} try: template = 'logged_in_error.html' nics, err = networking.get_interfaces() if err: raise Exception(err) bonds, err = networking.get_bonding_info_all() if err: raise Exception(err) if "ack" in request.GET: if request.GET["ack"] == "saved": return_dict[ 'ack_message'] = "Network interface information successfully updated" if request.GET["ack"] == "removed_bond": return_dict[ 'ack_message'] = "Network bond successfully removed" if request.GET["ack"] == "removed_vlan": return_dict['ack_message'] = "VLAN successfully removed" if request.GET["ack"] == "created_vlan": return_dict['ack_message'] = "VLAN successfully created" if request.GET["ack"] == "state_down": return_dict[ 'ack_message'] = "Network interface successfully disabled. The state change may take a couple of seconds to reflect on this page so please refresh it to check the updated status." if request.GET["ack"] == "state_up": return_dict[ 'ack_message'] = "Network interface successfully enabled. The state change may take a couple of seconds to reflect on this page so please refresh it to check the updated status." if request.GET["ack"] == "created_bond": return_dict[ 'ack_message'] = "Network bond successfully created. Please edit the address information for the bond in order to use it." return_dict["nics"] = nics return_dict["bonds"] = bonds template = "view_interfaces.html" return django.shortcuts.render_to_response( template, return_dict, context_instance=django.template.context.RequestContext(request)) except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'View network interfaces' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error loading interfaces' 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_config(): try : hostname = socket.gethostname() if hostname : print "Hostname : %s"%hostname else: print "Hostname : Not set" print interfaces, err = networking.get_interfaces() if interfaces: for name, interface in interfaces.items(): if name.startswith('lo'): continue print 'Interface : %s. '%name if 'AF_INET' in interface['addresses']: print 'IP Address : %s, Netmask %s. '%(interface['addresses']['AF_INET'][0]['addr'], interface['addresses']['AF_INET'][0]['netmask']) , else: print 'No address assigned. ', if 'slave_to' in interface: print 'NIC bonded slave to %s.'%interface['slave_to'], if 'bonding_master' in interface: print 'NIC bonded master. ', bonding_type, err = networking.get_bonding_type(name) if bonding_type: print 'Bonding type %d. '%bonding_type print 'Carrier status : %s. '%interface['carrier_status'], print 'NIC status : %s. '%interface['up_status'] print else: if err: print 'Error retrieving interface information : %s'%err dns_list,err = networking.get_name_servers() if dns_list : print "DNS lookup servers :", print ', '.join(dns_list) print except Exception, e: print "Error displaying system configuration : %s"%e return -1
def view_bond(request): return_dict = {} try: template = 'logged_in_error.html' if 'name' not in request.REQUEST: raise Exception("No bond name specified.") name = request.REQUEST['name'] interfaces, err = networking.get_interfaces() if err: raise Exception(err) elif name not in interfaces: raise Exception("Specified interface not found") bond, err = networking.get_bonding_info(name) if err: raise Exception(err) if not bond: raise Exception("Specified bond not found") return_dict['nic'] = interfaces[name] return_dict['bond'] = bond return_dict['name'] = name template = "view_bond.html" return django.shortcuts.render_to_response( template, return_dict, context_instance=django.template.context.RequestContext(request)) except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'View network bond details' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error loading network bond details' 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 interface_status(): d = {} try: ifaces, err = networking.get_interfaces() if err: raise Exception(err) #print ifaces if ifaces: for iface_name, iface in ifaces.items(): td = {} td['hwaddr'] = iface['addresses']['AF_LINK'][0]['addr'] td['up'] = iface['up_status'] if 'AF_INET' in iface['addresses'] and iface['addresses'][ 'AF_INET'] and iface['addresses']['AF_INET'][0]: inet_list = [] for inet in iface['addresses']['AF_INET']: inet_dict = {} if 'addr' in inet: inet_dict['address'] = inet['addr'] if 'netmask' in inet: inet_dict['netmask'] = inet['netmask'] if 'broadcast' in inet: inet_dict['broadcast'] = inet['broadcast'] inet_dict['label'] = iface_name inet_list.append(inet_dict) td['inet'] = inet_list if 'bonding_master' in iface: td['bonding_master'] = True if 'slave_to' in iface: td['slave_to'] = iface['slave_to'] if 'carrier_status' in iface: td['carrier_status'] = iface['carrier_status'] if 'bootproto' in iface: td['boot_proto'] = iface['bootproto'] d[iface_name] = td except Exception, e: return None, 'Error retrieving interface status : %s' % str(e)
def edit_interface_address(request): return_dict = {} try: if 'name' not in request.REQUEST: raise Exception("Interface name not specified. Please use the menus.") name = request.REQUEST["name"] interfaces, err = networking.get_interfaces() if err: raise Exception(err) elif not interfaces or name not in interfaces: raise Exception("Specified interface not found") return_dict['nic'] = interfaces[name] if request.method == "GET": initial = {} initial['name'] = name if 'bootproto' in interfaces[name] and interfaces[name]['bootproto'] == 'dhcp': initial['addr_type'] = 'dhcp' else: initial['addr_type'] = 'static' if 'addresses' in interfaces[name] and 'AF_INET' in interfaces[name]['addresses'] and interfaces[name]['addresses']['AF_INET']: initial['ip'] = interfaces[name]['addresses']['AF_INET'][0]['addr'] initial['netmask'] = interfaces[name]['addresses']['AF_INET'][0]['netmask'] #print interfaces[name] if 'gateways' in interfaces[name] and interfaces[name]['gateways']: if interfaces[name]['gateways'][0][2]: initial['default_gateway'] = interfaces[name]['gateways'][0][0] #print initial form = networking_forms.NICForm(initial=initial) return_dict['form'] = form return django.shortcuts.render_to_response("edit_interface_address.html", return_dict, context_instance = django.template.context.RequestContext(request)) else: form = networking_forms.NICForm(request.POST) return_dict['form'] = form if not form.is_valid(): return django.shortcuts.render_to_response("edit_interface_address.html", return_dict, context_instance = django.template.context.RequestContext(request)) cd = form.cleaned_data result_str = "" audit_str = "Changed the following dataset properties for dataset %s : "%name success = False result, err = networking.set_interface_ip_info(cd['name'], cd) if err: raise Exception(err) result, err = networking.restart_networking() if err: raise Exception(err) audit_str = 'Changed the address of %s. New values are IP : %s, netmask: %s'%(cd['name'], cd['ip'], cd['netmask']) if 'default_gateway' in cd: audit_str += ', default gateway : %s'%cd['default_gateway'] audit.audit("edit_interface_address", audit_str, request.META["REMOTE_ADDR"]) return django.http.HttpResponseRedirect('/view_nic?name=%s&result=addr_changed'%(name)) except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'Modify network interface addressing' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error modifying network interface addressing' 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 create_bond(request): return_dict = {} try: interfaces, err = networking.get_interfaces() if err: raise Exception(err) if not interfaces: raise Exception( "Error loading network interface information : No interfaces found" ) bm, err = networking.get_bonding_masters() if err: raise Exception(err) bid, err = networking.get_bonding_info_all() if err: raise Exception(err) return_dict['interfaces'] = interfaces if_list = [] existing_bonds = [] for if_name, iface in interfaces.items(): ret, err = networking.get_ip_info(if_name) if ret: continue if if_name.startswith('lo') or if_name in bid['by_slave']: continue if if_name in bm: existing_bonds.append(if_name) continue if_list.append(if_name) if request.method == "GET": form = networking_forms.CreateBondForm( interfaces=if_list, existing_bonds=existing_bonds) return_dict['form'] = form return django.shortcuts.render_to_response( "create_bond.html", return_dict, context_instance=django.template.context.RequestContext( request)) else: form = networking_forms.CreateBondForm( request.POST, interfaces=if_list, existing_bonds=existing_bonds) return_dict['form'] = form if not form.is_valid(): return django.shortcuts.render_to_response( "create_bond.html", return_dict, context_instance=django.template.context.RequestContext( request)) cd = form.cleaned_data print cd result, err = networking.create_bond(cd['name'], cd['slaves'], int(cd['mode'])) if not result: if err: raise Exception(err) else: raise Exception('Bond creation failed!') python_scripts_path, err = common.get_python_scripts_path() if err: raise Exception(err) common_python_scripts_path, err = common.get_common_python_scripts_path( ) if err: raise Exception(err) status_path, err = common.get_system_status_path() if err: raise Exception(err) ret, err = command.get_command_output( "python %s/generate_manifest.py %s" % (common_python_scripts_path, status_path)) if err: raise Exception(err) ret, err = command.get_command_output( "python %s/generate_status.py %s" % (common_python_scripts_path, status_path)) if err: raise Exception(err) audit_str = "Created a network bond named %s with slaves %s" % ( cd['name'], ','.join(cd['slaves'])) audit.audit("create_bond", audit_str, request.META) return django.http.HttpResponseRedirect( '/view_interfaces?ack=created_bond') except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'Create a network interface bond' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error creating a network interface bond' 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 create_vlan(request): return_dict = {} try: if 'nic' not in request.REQUEST: raise Exception( 'No base network interface specified. Please use the menus.') interfaces, err = networking.get_interfaces() if err: raise Exception(err) if not interfaces: raise Exception( "Error loading network interface information : No interfaces found" ) return_dict['interfaces'] = interfaces if_list = [] existing_vlans = [] for if_name, iface in interfaces.items(): if '.' in if_name: comps = if_name.split('.') if len(comps) != 2: raise Exception('Invalid VLAN specification found : %s' % if_name) if int(comps[1]) not in existing_vlans: existing_vlans.append(int(comps[1])) if request.method == "GET": form = networking_forms.CreateVLANForm( existing_vlans=existing_vlans, initial={'base_interface': request.REQUEST['nic']}) return_dict['form'] = form return django.shortcuts.render_to_response( "create_vlan.html", return_dict, context_instance=django.template.context.RequestContext( request)) else: form = networking_forms.CreateVLANForm( request.POST, existing_vlans=existing_vlans) return_dict['form'] = form if not form.is_valid(): return django.shortcuts.render_to_response( "create_vlan.html", return_dict, context_instance=django.template.context.RequestContext( request)) cd = form.cleaned_data #print cd result, err = networking.create_vlan(cd['base_interface'], cd['vlan_id']) if not result: if err: raise Exception(err) else: raise Exception('VLAN creation failed!') result, err = networking.restart_networking() if err: raise Exception(err) audit_str = "Created a network VLAN with id %d on the base interface %s" % ( cd['vlan_id'], cd['base_interface']) audit.audit("create_vlan", audit_str, request.META) return django.http.HttpResponseRedirect( '/view_interfaces?ack=created_vlan') except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'Create a network VLAN' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error creating a network VLAN' 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 edit_interface_address(request): return_dict = {} try: if 'name' not in request.REQUEST: raise Exception( "Interface name not specified. Please use the menus.") name = request.REQUEST["name"] interfaces, err = networking.get_interfaces() if err: raise Exception(err) elif not interfaces or name not in interfaces: raise Exception("Specified interface not found") return_dict['nic'] = interfaces[name] if request.method == "GET": initial = {} initial['name'] = name initial['mtu'] = name if 'mtu' in interfaces[name] and interfaces[name]['mtu']: initial['mtu'] = interfaces[name]['mtu'] if 'bootproto' in interfaces[name] and interfaces[name][ 'bootproto'] == 'dhcp': initial['addr_type'] = 'dhcp' else: initial['addr_type'] = 'static' if 'addresses' in interfaces[name] and 'AF_INET' in interfaces[ name]['addresses'] and interfaces[name]['addresses'][ 'AF_INET']: initial['ip'] = interfaces[name]['addresses']['AF_INET'][ 0]['addr'] initial['netmask'] = interfaces[name]['addresses'][ 'AF_INET'][0]['netmask'] #print interfaces[name] if 'gateways' in interfaces[name] and interfaces[name]['gateways']: if interfaces[name]['gateways'][0][2]: initial['default_gateway'] = interfaces[name]['gateways'][ 0][0] #print initial form = networking_forms.NICForm(initial=initial) return_dict['form'] = form return django.shortcuts.render_to_response( "edit_interface_address.html", return_dict, context_instance=django.template.context.RequestContext( request)) else: form = networking_forms.NICForm(request.POST) return_dict['form'] = form if not form.is_valid(): return django.shortcuts.render_to_response( "edit_interface_address.html", return_dict, context_instance=django.template.context.RequestContext( request)) cd = form.cleaned_data result_str = "" success = False result, err = networking.set_interface_ip_info(cd['name'], cd) if err: raise Exception(err) result, err = networking.restart_networking() if err: raise Exception(err) ip, err = networking.get_ip_info( common.convert_unicode_to_string(cd['name'])) if err: raise Exception(err) audit_str = 'Changed the address of %s. New values are IP : %s, netmask: %s' % ( cd['name'], ip['ipaddr'], ip['netmask']) if 'default_gateway' in ip: audit_str += ', default gateway : %s' % ip['default_gateway'] audit.audit("edit_interface_address", audit_str, request.META) return django.http.HttpResponseRedirect( '/view_nic?name=%s&result=addr_changed' % (name)) except Exception, e: return_dict['base_template'] = "networking_base.html" return_dict["page_title"] = 'Modify network interface addressing' return_dict['tab'] = 'view_interfaces_tab' return_dict["error"] = 'Error modifying network interface addressing' 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 create_bond(): try: os.system('clear') interfaces, err = networking.get_interfaces() if err: raise Exception('Error retrieving interface information : %s' % err) if not interfaces: raise Exception('No interfaces detected') print '\n\nIntegralstor Unicell NIC Bonding' print '---------------------------------\n\n' print 'Available interfaces: \n' bm, err = networking.get_bonding_masters() if err: raise Exception(err) bid, err = networking.get_bonding_info_all() if err: raise Exception(err) avail_if = [] for if_name, iface in interfaces.items(): ret, err = networking.get_ip_info(if_name) if ret: continue if if_name.startswith( 'lo') or if_name in bm or if_name in bid['by_slave']: continue print '\t- %s' % if_name avail_if.append(if_name) print "\n" bond_name = None is_name = False while is_name is False: bond_name = raw_input('Provide bond name: ') if bond_name in interfaces or bond_name.startswith('lo'): print "\t- Can't assign %s, it's been taken already. Please provide another one.\n" % bond_name else: is_name = True print "\n" slaves = [] is_ok = False while is_ok is False: s = raw_input( "\nEnter slaves from the shown interface list, separated by comma. - " ).split(",") slaves = [inner.strip() for inner in s] for slave in slaves: if slave not in avail_if: break else: is_ok = True print("\nSelecetd slaves: %s") % slaves confirm = raw_input("\t- Confirm selected slaves (y/n)? ") if confirm.lower() in ["n"]: is_ok = False print "\n" is_ok = False while is_ok is False: mode = raw_input( "Available modes [4]802.3ad, [6]balance-alb] - 4 or 6?: ") if mode in ["4", "6"]: is_ok = True ret, err = networking.create_bond(bond_name, slaves, int(mode)) if not ret: if err: raise Exception('Error creating bond: %s' % err) else: raise Exception("Couldn't create bond") if ret: print "\nBond created!\n" except Exception, e: print "Error: %s" % e return -1
def configure_interface(): try: os.system('clear') interfaces, err = networking.get_interfaces() if err: raise Exception('Error retrieving interface information : %s' % err) if not interfaces: raise Exception('No interfaces detected') print print print 'Integralstor Unicell interface configuration' print '--------------------------------------------' print print print 'Current network interfaces : ' print for if_name, iface in interfaces.items(): if if_name.startswith('lo'): continue print '- %s' % if_name print valid_input = False while not valid_input: ifname = raw_input( 'Enter the name of the interface that you wish to configure : ' ) if ifname not in interfaces or ifname.startswith('lo'): print 'Invalid interface name' else: valid_input = True print ip_info, err = networking.get_ip_info(ifname) ''' if err: raise Exception('Error retrieving interface information : %s'%err) ''' if ip_info: ip = ip_info["ipaddr"] netmask = ip_info["netmask"] if "default_gateway" in ip_info: gateway = ip_info["default_gateway"] else: gateway = None else: ip = None netmask = None gateway = None old_boot_proto, err = networking.get_interface_bootproto(ifname) if err: raise Exception('Error retrieving interface information : %s' % err) time.sleep(5) config_changed = False str_to_print = "Configure for DHCP or static addressing (dhcp/static)? : " valid_input = False while not valid_input: input = raw_input(str_to_print) if input: if input.lower() in ['static', 'dhcp']: valid_input = True boot_proto = input.lower() if boot_proto != old_boot_proto: config_changed = True if not valid_input: print "Invalid value. Please try again." print if boot_proto == 'static': if ip: str_to_print = "Enter IP address (currently %s, press enter to retain current value) : " % ip else: str_to_print = "Enter IP address (currently not set) : " valid_input = False while not valid_input: input = raw_input(str_to_print) if input: ok, err = networking.validate_ip(input) if err: raise Exception('Error validating IP : %s' % err) if ok: valid_input = True ip = input config_changed = True elif ip: valid_input = True if not valid_input: print "Invalid value. Please try again." print if netmask: str_to_print = "Enter netmask (currently %s, press enter to retain current value) : " % netmask else: str_to_print = "Enter netmask (currently not set) : " valid_input = False while not valid_input: input = raw_input(str_to_print) if input: ok, err = networking.validate_netmask(input) if err: raise Exception('Error validating netmask : %s' % err) if ok: valid_input = True netmask = input config_changed = True elif netmask: valid_input = True if not valid_input: print "Invalid value. Please try again." print if gateway: str_to_print = "Enter gateway (currently %s, press enter to retain current value) : " % gateway else: str_to_print = "Enter gateway (currently not set) : " valid_input = False while not valid_input: input = raw_input(str_to_print) if input: ok, err = networking.validate_ip(input) if err: raise Exception('Error validating gateway : %s' % err) if ok: valid_input = True gateway = input config_changed = True elif gateway: valid_input = True if not valid_input: print "Invalid value. Please try again." print if config_changed: d = {} d['addr_type'] = boot_proto if boot_proto == 'static': d['ip'] = ip d['netmask'] = netmask d['default_gateway'] = gateway ret, err = networking.set_interface_ip_info(ifname, d) if not ret: if err: raise Exception('Error changing interface address : %s' % err) else: raise Exception('Error changing interface address') restart = False print print valid_input = False while not valid_input: str_to_print = 'Restart network services now (y/n) :' print input = raw_input(str_to_print) if input: if input.lower() in ['y', 'n']: valid_input = True if input.lower() == 'y': restart = True if not valid_input: print "Invalid value. Please try again." print if restart: ret, err = networking.restart_networking() if not ret: if err: raise Exception(err) else: raise Exception("Couldn't restart.") use_salt, err = common.use_salt() if err: raise Exception(err) if use_salt: (r, rc), err = command.execute_with_rc( 'service salt-minion restart') if err: raise Exception(err) if rc == 0: print "Salt minion service restarted succesfully." else: print "Error restarting salt minion services." raw_input('Press enter to return to the main menu') return -1 else: print print raw_input( 'No changes have been made to the configurations. Press enter to return to the main menu.' ) return 0 except Exception, e: print "Error configuring network settings : %s" % e return -1
def configure_interface(): try : os.system('clear') interfaces, err = networking.get_interfaces() if err: raise Exception('Error retrieving interface information : %s'%err) if not interfaces: raise Exception('No interfaces detected') print print print 'Integralstor Unicell interface configuration' print '--------------------------------------------' print print print 'Current network interfaces : ' print for if_name, iface in interfaces.items(): if if_name.startswith('lo'): continue print '- %s'%if_name print valid_input = False while not valid_input: ifname = raw_input('Enter the name of the interface that you wish to configure : ') if ifname not in interfaces or ifname.startswith('lo'): print 'Invalid interface name' else: valid_input = True print ip_info, err = networking.get_ip_info(ifname) ''' if err: raise Exception('Error retrieving interface information : %s'%err) ''' if ip_info: ip = ip_info["ipaddr"] netmask = ip_info["netmask"] else: ip = None netmask = None #print ip_info old_boot_proto, err = networking.get_interface_bootproto(ifname) if err: raise Exception('Error retrieving interface information : %s'%err) config_changed = False str_to_print = "Configure for DHCP or static addressing (dhcp/static)? : " valid_input = False while not valid_input : input = raw_input(str_to_print) if input: if input.lower() in ['static', 'dhcp']: valid_input = True boot_proto = input.lower() if boot_proto != old_boot_proto: config_changed = True if not valid_input: print "Invalid value. Please try again." print if boot_proto == 'static': if ip: str_to_print = "Enter IP address (currently %s, press enter to retain current value) : "%ip else: str_to_print = "Enter IP address (currently not set) : " valid_input = False while not valid_input : input = raw_input(str_to_print) if input: ok, err = networking.validate_ip(input) if err: raise Exception('Error validating IP : %s'%err) if ok: valid_input = True ip = input config_changed = True elif ip: valid_input = True if not valid_input: print "Invalid value. Please try again." print if netmask: str_to_print = "Enter netmask (currently %s, press enter to retain current value) : "%netmask else: str_to_print = "Enter netmask (currently not set) : " valid_input = False while not valid_input: input = raw_input(str_to_print) if input: ok, err = networking.validate_netmask(input) if err: raise Exception('Error validating netmask : %s'%err) if ok: valid_input = True netmask = input config_changed = True elif netmask: valid_input = True if not valid_input: print "Invalid value. Please try again." print if config_changed: d = {} d['addr_type'] = boot_proto if boot_proto == 'static': d['ip'] = ip d['netmask'] = netmask ret, err = networking.set_interface_ip_info(ifname, d) if not ret: if err: raise Exception('Error changing interface address : %s'%err) else: raise Exception('Error changing interface address') restart = False print print valid_input = False while not valid_input: str_to_print = 'Restart network services now (y/n) :' print input = raw_input(str_to_print) if input: if input.lower() in ['y', 'n']: valid_input = True if input.lower() == 'y': restart = True if not valid_input: print "Invalid value. Please try again." print if restart: (r, rc), err = command.execute_with_rc('service network restart') if err: raise Exception(err) if rc == 0: print "Network service restarted succesfully." else: print "Error restarting network services." raw_input('Press enter to return to the main menu') return -1 use_salt, err = common.use_salt() if err: raise Exception(err) if use_salt: (r, rc), err = command.execute_with_rc('service salt-minion restart') if err: raise Exception(err) if rc == 0: print "Salt minion service restarted succesfully." else: print "Error restarting salt minion services." raw_input('Press enter to return to the main menu') return -1 else: print print raw_input('No changes have been made to the configurations. Press enter to return to the main menu.') return 0 except Exception, e: print "Error configuring network settings : %s"%e return -1