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 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 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 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