Пример #1
0
def _change_dhcp_config(interface, enable_dhcp=True, filename=INTERFACES_CONFIG):
    '''
    Enable or disable dhcp for an interface which isn't a service (in a config file)

    :param interface: interface label
    :param enable_dhcp: True to enable dhcp and False to disable dhcp. Default is True
    :param filename: Config file name. Default is INTERFACES_CONFIG.
    '''
    parser = configparser.ConfigParser()
    parser.optionxform = str
    if os.path.exists(filename):
        try:
            with salt.utils.files.fopen(filename, 'r') as config_file:
                parser.readfp(config_file)
        except configparser.MissingSectionHeaderError:
            pass
    interface = pyiface.Interface(name=interface)
    hwaddr = interface.hwaddr[:-1]
    hwaddr_section_number = ''.join(hwaddr.split(':'))
    if parser.has_section('service_{0}'.format(hwaddr_section_number)):
        parser.remove_section('service_{0}'.format(hwaddr_section_number))
    parser.add_section('service_{0}'.format(hwaddr_section_number))
    parser.set('service_{0}'.format(hwaddr_section_number), 'MAC', hwaddr)
    parser.set('service_{0}'.format(hwaddr_section_number), 'Name', 'ethernet_cable_{0}'.format(hwaddr_section_number))
    parser.set('service_{0}'.format(hwaddr_section_number), 'Type', 'ethernet')
    if enable_dhcp:
        parser.set('service_{0}'.format(hwaddr_section_number), 'IPv4.Method', 'dhcp')
        parser.set('service_{0}'.format(hwaddr_section_number), 'AutoConnect', 'true')
        parser.set('service_{0}'.format(hwaddr_section_number), 'Nameservers', '\'\'')
    else:
        parser.set('service_{0}'.format(hwaddr_section_number), 'IPv4', 'off')
    with salt.utils.files.fopen(filename, 'w') as config_file:
        parser.write(config_file)
    return True
Пример #2
0
def net_info():
    '''
    Gives basic networking info like local IP
    '''
    net = Munch()
    net.interfaces = dict()
    net.def_if = interfaces()[1]
    try:
        net.def_if = gateways()['default'][AF_INET][1]
    except KeyError:
        pass

    net.ip = ifaddresses(net.def_if)[AF_INET][0]['addr']
    net.def_mac = ifaddresses(net.def_if)[AF_PACKET][0]['addr']
    for i in interfaces():
        ifd = Munch()
        flags = pyiface.Interface(name=i).flags
        ifd.flags = "U" if flags & IFF_UP > 0 else ""
        ifd.flags += "R" if flags & IFF_RUNNING > 0 else ""
        try:
            ifd.addr = ifaddresses(i)[AF_INET][0]['addr']
        except KeyError:
            pass
        net.interfaces[i] = dict(ifd)
    return dict(net)
Пример #3
0
def _enable_dhcp(interface):
    '''
    Enable dhcp for an interface which isn't a service

    :param interface: interface label
    '''
    parser = configparser.ConfigParser()
    parser.optionxform = str
    if os.path.exists(INTERFACES_CONFIG):
        try:
            with salt.utils.files.fopen(INTERFACES_CONFIG, 'r') as config_file:
                parser.readfp(config_file)
        except configparser.MissingSectionHeaderError:
            pass
    interface = pyiface.Interface(name=interface)
    hwaddr = interface.hwaddr[:-1]
    hwaddr_section_number = ''.join(hwaddr.split(':'))
    if parser.has_section('service_{0}'.format(hwaddr_section_number)):
        parser.remove_section('service_{0}'.format(hwaddr_section_number))
    parser.add_section('service_{0}'.format(hwaddr_section_number))
    parser.set('service_{0}'.format(hwaddr_section_number), 'MAC', hwaddr)
    parser.set('service_{0}'.format(hwaddr_section_number), 'Name',
               'ethernet_cable_{0}'.format(hwaddr_section_number))
    parser.set('service_{0}'.format(hwaddr_section_number), 'IPv4.method',
               'dhcp')
    parser.set('service_{0}'.format(hwaddr_section_number), 'AutoConnect',
               'true')
    with salt.utils.files.fopen(INTERFACES_CONFIG, 'w') as config_file:
        parser.write(config_file)
    return True
Пример #4
0
def testInterface(interface):
	try:
		iface = pyiface.Interface(name=interface)
		if iface.flags == iface.flags | pyiface.IFF_UP:
			return True
	except IOError as e:
		if e.errno == 19: # No such device
			print "Bad interface. No such device '%s'" % (interface)
	return False
Пример #5
0
 def test_down(self):
     '''
     Test ip.down function
     '''
     interfaces = self.__interfaces()
     for interface in interfaces:
         result = self.run_function('ip.down', [interface.name])
         self.assertTrue(result)
     info = self.run_function('ip.get_interfaces_details', timeout=300)
     for interface in info['interfaces']:
         self.assertEqual(interface['adapter_mode'], 'disabled')
         self.assertFalse(self.__connected(pyiface.Interface(name=interface['connectionid'])))
Пример #6
0
 def test_down(self):
     """
     Test ip.down function
     """
     interfaces = self.__interfaces()
     for interface in interfaces:
         result = self.run_function("ip.down", [interface.name])
         self.assertTrue(result)
     info = self.run_function("ip.get_interfaces_details", timeout=300)
     for interface in info["interfaces"]:
         self.assertEqual(interface["adapter_mode"], "disabled")
         self.assertFalse(
             self.__connected(
                 pyiface.Interface(name=interface["connectionid"])))
Пример #7
0
def _configure_static_interface(interface, **settings):
    """
    Configure an interface that is not detected as a service by Connman (i.e. link is down)

    :param interface: interface label
    :param settings:
            - ip
            - netmask
            - gateway
            - dns
            - name
    :return: True if settings were applied successfully.
    :rtype: bool
    """
    interface = pyiface.Interface(name=interface)
    parser = configparser.ConfigParser()
    parser.optionxform = str
    if os.path.exists(INTERFACES_CONFIG):
        try:
            with salt.utils.files.fopen(INTERFACES_CONFIG, "r") as config_file:
                parser.readfp(config_file)
        except configparser.MissingSectionHeaderError:
            pass
    hwaddr = interface.hwaddr[:-1]
    hwaddr_section_number = "".join(hwaddr.split(":"))
    if parser.has_section("service_{}".format(hwaddr_section_number)):
        parser.remove_section("service_{}".format(hwaddr_section_number))
    parser.add_section("service_{}".format(hwaddr_section_number))
    ip_address = settings.get("ip", "0.0.0.0")
    netmask = settings.get("netmask", "0.0.0.0")
    gateway = settings.get("gateway", "0.0.0.0")
    dns_servers = settings.get("dns", "''")
    name = settings.get("name",
                        "ethernet_cable_{}".format(hwaddr_section_number))
    parser.set(
        "service_{}".format(hwaddr_section_number),
        "IPv4",
        "{}/{}/{}".format(ip_address, netmask, gateway),
    )
    parser.set("service_{}".format(hwaddr_section_number), "Nameservers",
               dns_servers)
    parser.set("service_{}".format(hwaddr_section_number), "Name", name)
    parser.set("service_{}".format(hwaddr_section_number), "MAC", hwaddr)
    parser.set("service_{}".format(hwaddr_section_number), "Type", "ethernet")
    parser.set("service_{}".format(hwaddr_section_number), "IPv4.method",
               "manual")
    with salt.utils.files.fopen(INTERFACES_CONFIG, "w") as config_file:
        parser.write(config_file)
    return True
Пример #8
0
def _configure_static_interface(interface, **settings):
    '''
    Configure an interface that is not detected as a service by Connman (i.e. link is down)

    :param interface: interface label
    :param settings:
            - ip
            - netmask
            - gateway
            - dns
            - name
    :return: True if settings were applied successfully.
    :rtype: bool
    '''
    interface = pyiface.Interface(name=interface)
    parser = configparser.ConfigParser()
    parser.optionxform = str
    if os.path.exists(INTERFACES_CONFIG):
        try:
            with salt.utils.files.fopen(INTERFACES_CONFIG, 'r') as config_file:
                parser.readfp(config_file)
        except configparser.MissingSectionHeaderError:
            pass
    hwaddr = interface.hwaddr[:-1]
    hwaddr_section_number = ''.join(hwaddr.split(':'))
    if parser.has_section('service_{0}'.format(hwaddr_section_number)):
        parser.remove_section('service_{0}'.format(hwaddr_section_number))
    parser.add_section('service_{0}'.format(hwaddr_section_number))
    ip_address = settings.get('ip', '0.0.0.0')
    netmask = settings.get('netmask', '0.0.0.0')
    gateway = settings.get('gateway', '0.0.0.0')
    dns_servers = settings.get('dns', '\'\'')
    name = settings.get('name',
                        'ethernet_cable_{0}'.format(hwaddr_section_number))
    parser.set('service_{0}'.format(hwaddr_section_number), 'IPv4',
               '{0}/{1}/{2}'.format(ip_address, netmask, gateway))
    parser.set('service_{0}'.format(hwaddr_section_number), 'Nameservers',
               dns_servers)
    parser.set('service_{0}'.format(hwaddr_section_number), 'Name', name)
    parser.set('service_{0}'.format(hwaddr_section_number), 'MAC', hwaddr)
    parser.set('service_{0}'.format(hwaddr_section_number), 'Type', 'ethernet')
    parser.set('service_{0}'.format(hwaddr_section_number), 'IPv4.method',
               'manual')
    with salt.utils.files.fopen(INTERFACES_CONFIG, 'w') as config_file:
        parser.write(config_file)
    return True
Пример #9
0
def _change_dhcp_config(interface,
                        enable_dhcp=True,
                        filename=INTERFACES_CONFIG):
    """
    Enable or disable dhcp for an interface which isn't a service (in a config file)

    :param interface: interface label
    :param enable_dhcp: True to enable dhcp and False to disable dhcp. Default is True
    :param filename: Config file name. Default is INTERFACES_CONFIG.
    """
    parser = configparser.ConfigParser()
    parser.optionxform = str
    if os.path.exists(filename):
        try:
            with salt.utils.files.fopen(filename, "r") as config_file:
                parser.readfp(config_file)
        except configparser.MissingSectionHeaderError:
            pass
    interface = pyiface.Interface(name=interface)
    hwaddr = interface.hwaddr[:-1]
    hwaddr_section_number = "".join(hwaddr.split(":"))
    if parser.has_section("service_{}".format(hwaddr_section_number)):
        parser.remove_section("service_{}".format(hwaddr_section_number))
    parser.add_section("service_{}".format(hwaddr_section_number))
    parser.set("service_{}".format(hwaddr_section_number), "MAC", hwaddr)
    parser.set(
        "service_{}".format(hwaddr_section_number),
        "Name",
        "ethernet_cable_{}".format(hwaddr_section_number),
    )
    parser.set("service_{}".format(hwaddr_section_number), "Type", "ethernet")
    if enable_dhcp:
        parser.set("service_{}".format(hwaddr_section_number), "IPv4.Method",
                   "dhcp")
        parser.set("service_{}".format(hwaddr_section_number), "AutoConnect",
                   "true")
        parser.set("service_{}".format(hwaddr_section_number), "Nameservers",
                   "''")
    else:
        parser.set("service_{}".format(hwaddr_section_number), "IPv4", "off")
    with salt.utils.files.fopen(filename, "w") as config_file:
        parser.write(config_file)
    return True
Пример #10
0
def _remove_interface_section(interface):
    '''
    Remove interface section from connman config file
    '''
    parser = configparser.ConfigParser()
    parser.optionxform = str
    if os.path.exists(INTERFACES_CONFIG):
        try:
            with salt.utils.files.fopen(INTERFACES_CONFIG, 'r') as config_file:
                parser.readfp(config_file)
        except configparser.MissingSectionHeaderError:
            pass
    interface = pyiface.Interface(name=interface)
    hwaddr = interface.hwaddr[:-1]
    hwaddr_section_number = ''.join(hwaddr.split(':'))
    if parser.has_section('service_{0}'.format(hwaddr_section_number)):
        parser.remove_section('service_{0}'.format(hwaddr_section_number))
    with salt.utils.files.fopen(INTERFACES_CONFIG, 'w') as config_file:
        parser.write(config_file)
    return True