Exemple #1
0
    def update_connection(self, connection):
        """Update NM RemoteConnection from the object.

        :param connection: connection to be updated from the object
        :type connection: NM.RemoteConnection
        """
        # ipv4 settings
        if self.ip == "dhcp":
            method4 = NM.SETTING_IP4_CONFIG_METHOD_AUTO
        elif self.ip:
            method4 = NM.SETTING_IP4_CONFIG_METHOD_MANUAL
        else:
            method4 = NM.SETTING_IP4_CONFIG_METHOD_DISABLED

        connection.remove_setting(NM.SettingIP4Config)
        s_ip4 = NM.SettingIP4Config.new()
        s_ip4.set_property(NM.SETTING_IP_CONFIG_METHOD, method4)
        if method4 == NM.SETTING_IP4_CONFIG_METHOD_MANUAL:
            prefix4 = network.netmask_to_prefix(self.netmask)
            addr4 = NM.IPAddress.new(socket.AF_INET, self.ip, prefix4)
            s_ip4.add_address(addr4)
            if self.gateway:
                s_ip4.props.gateway = self.gateway
        connection.add_setting(s_ip4)

        # ipv6 settings
        if self.ipv6 == "ignore":
            method6 = NM.SETTING_IP6_CONFIG_METHOD_IGNORE
        elif not self.ipv6 or self.ipv6 == "auto":
            method6 = NM.SETTING_IP6_CONFIG_METHOD_AUTO
        elif self.ipv6 == "dhcp":
            method6 = NM.SETTING_IP6_CONFIG_METHOD_DHCP
        else:
            method6 = NM.SETTING_IP6_CONFIG_METHOD_MANUAL

        connection.remove_setting(NM.SettingIP6Config)
        s_ip6 = NM.SettingIP6Config.new()
        s_ip6.set_property(NM.SETTING_IP_CONFIG_METHOD, method6)
        if method6 == NM.SETTING_IP6_CONFIG_METHOD_MANUAL:
            addr6, _slash, prefix6 = self.ipv6.partition("/")
            if prefix6:
                prefix6 = int(prefix6)
            else:
                prefix6 = 64
            addr6 = NM.IPAddress.new(socket.AF_INET6, addr6, prefix6)
            s_ip6.add_address(addr6)
            if self.ipv6gateway:
                s_ip6.props.gateway = self.ipv6gateway
        connection.add_setting(s_ip6)

        # nameservers
        if self.nameserver:
            for ns in [str.strip(i) for i in self.nameserver.split(",")]:
                if NM.utils_ipaddr_valid(socket.AF_INET6, ns):
                    s_ip6.add_dns(ns)
                elif NM.utils_ipaddr_valid(socket.AF_INET, ns):
                    s_ip4.add_dns(ns)
                else:
                    log.error("IP address %s is not valid", ns)
Exemple #2
0
    def update_connection(self, connection):
        """Update NM RemoteConnection from the object.

        :param connection: connection to be updated from the object
        :type connection: NM.RemoteConnection
        """
        # ipv4 settings
        if self.ip == "dhcp":
            method4 = NM.SETTING_IP4_CONFIG_METHOD_AUTO
        elif self.ip:
            method4 = NM.SETTING_IP4_CONFIG_METHOD_MANUAL
        else:
            method4 = NM.SETTING_IP4_CONFIG_METHOD_DISABLED

        connection.remove_setting(NM.SettingIP4Config)
        s_ip4 = NM.SettingIP4Config.new()
        s_ip4.set_property(NM.SETTING_IP_CONFIG_METHOD, method4)
        if method4 == NM.SETTING_IP4_CONFIG_METHOD_MANUAL:
            prefix4 = network.netmask2prefix(self.netmask)
            addr4 = NM.IPAddress.new(socket.AF_INET, self.ip, prefix4)
            s_ip4.add_address(addr4)
            if self.gateway:
                s_ip4.props.gateway = self.gateway
        connection.add_setting(s_ip4)

        # ipv6 settings
        if self.ipv6 == "ignore":
            method6 = NM.SETTING_IP6_CONFIG_METHOD_IGNORE
        elif not self.ipv6 or self.ipv6 == "auto":
            method6 = NM.SETTING_IP6_CONFIG_METHOD_AUTO
        elif self.ipv6 == "dhcp":
            method6 = NM.SETTING_IP6_CONFIG_METHOD_DHCP
        else:
            method6 = NM.SETTING_IP6_CONFIG_METHOD_MANUAL

        connection.remove_setting(NM.SettingIP6Config)
        s_ip6 = NM.SettingIP6Config.new()
        s_ip6.set_property(NM.SETTING_IP_CONFIG_METHOD, method6)
        if method6 == NM.SETTING_IP6_CONFIG_METHOD_MANUAL:
            addr6, _slash, prefix6 = self.ipv6.partition("/")
            if prefix6:
                prefix6 = int(prefix6)
            else:
                prefix6 = 64
            addr6 = NM.IPAddress.new(socket.AF_INET6, addr6, prefix6)
            s_ip6.add_address(addr6)
            if self.ipv6gateway:
                s_ip6.props.gateway = self.ipv6gateway
        connection.add_setting(s_ip6)

        # nameservers
        if self.nameserver:
            for ns in [str.strip(i) for i in self.nameserver.split(",")]:
                if NM.utils_ipaddr_valid(socket.AF_INET6, ns):
                    s_ip6.add_dns(ns)
                elif NM.utils_ipaddr_valid(socket.AF_INET, ns):
                    s_ip4.add_dns(ns)
                else:
                    log.error("IP address %s is not valid", ns)
Exemple #3
0
def update_connection_ip_settings_from_ksdata(connection, network_data):
    """Update NM connection from kickstart IP configuration in place.

    :param connection: existing NetworkManager connection to be updated
    :type connection: NM.RemoteConnection
    :param network_data: kickstart configuation containing the IP configuration
                            to be applied to the connection
    :type network_data: pykickstart NetworkData
    """
    # ipv4 settings
    if network_data.noipv4:
        method4 = "disabled"
    elif network_data.bootProto == "static":
        method4 = "manual"
    else:
        method4 = "auto"

    connection.remove_setting(NM.SettingIP4Config)
    s_ip4 = NM.SettingIP4Config.new()
    s_ip4.set_property(NM.SETTING_IP_CONFIG_METHOD, method4)
    if method4 == "manual":
        prefix4 = netmask2prefix(network_data.netmask)
        addr4 = NM.IPAddress.new(socket.AF_INET, network_data.ip, prefix4)
        s_ip4.add_address(addr4)
        if network_data.gateway:
            s_ip4.props.gateway = network_data.gateway
    connection.add_setting(s_ip4)

    # ipv6 settings
    if network_data.noipv6:
        method6 = "ignore"
    elif not network_data.ipv6 or network_data.ipv6 == "auto":
        method6 = "auto"
    elif network_data.ipv6 == "dhcp":
        method6 = "dhcp"
    else:
        method6 = "manual"

    connection.remove_setting(NM.SettingIP6Config)
    s_ip6 = NM.SettingIP6Config.new()
    s_ip6.set_property(NM.SETTING_IP_CONFIG_METHOD, method6)
    if method6 == "manual":
        addr6, _slash, prefix6 = network_data.ipv6.partition("/")
        if prefix6:
            prefix6 = int(prefix6)
        else:
            prefix6 = 64
        addr6 = NM.IPAddress.new(socket.AF_INET6, addr6, prefix6)
        s_ip6.add_address(addr6)
        if network_data.ipv6gateway:
            s_ip6.props.gateway = network_data.ipv6gateway
    connection.add_setting(s_ip6)

    # nameservers
    if network_data.nameserver:
        for ns in [str.strip(i) for i in network_data.nameserver.split(",")]:
            if NM.utils_ipaddr_valid(socket.AF_INET6, ns):
                s_ip6.add_dns(ns)
            elif NM.utils_ipaddr_valid(socket.AF_INET, ns):
                s_ip4.add_dns(ns)
            else:
                log.error("IP address %s is not valid", ns)
Exemple #4
0
def update_connection_ip_settings_from_ksdata(connection, network_data):
    """Update NM connection from kickstart IP configuration in place.

    :param connection: existing NetworkManager connection to be updated
    :type connection: NM.RemoteConnection
    :param network_data: kickstart configuation containing the IP configuration
                            to be applied to the connection
    :type network_data: pykickstart NetworkData
    """
    # ipv4 settings
    if network_data.noipv4:
        method4 = "disabled"
    elif network_data.bootProto == "static":
        method4 = "manual"
    else:
        method4 = "auto"

    connection.remove_setting(NM.SettingIP4Config)
    s_ip4 = NM.SettingIP4Config.new()
    s_ip4.set_property(NM.SETTING_IP_CONFIG_METHOD, method4)
    if method4 == "manual":
        prefix4 = netmask2prefix(network_data.netmask)
        addr4 = NM.IPAddress.new(socket.AF_INET, network_data.ip, prefix4)
        s_ip4.add_address(addr4)
        if network_data.gateway:
            s_ip4.props.gateway = network_data.gateway
    connection.add_setting(s_ip4)

    # ipv6 settings
    if network_data.noipv6:
        method6 = "ignore"
    elif not network_data.ipv6 or network_data.ipv6 == "auto":
        method6 = "auto"
    elif network_data.ipv6 == "dhcp":
        method6 = "dhcp"
    else:
        method6 = "manual"

    connection.remove_setting(NM.SettingIP6Config)
    s_ip6 = NM.SettingIP6Config.new()
    s_ip6.set_property(NM.SETTING_IP_CONFIG_METHOD, method6)
    if method6 == "manual":
        addr6, _slash, prefix6 = network_data.ipv6.partition("/")
        if prefix6:
            prefix6 = int(prefix6)
        else:
            prefix6 = 64
        addr6 = NM.IPAddress.new(socket.AF_INET6, addr6, prefix6)
        s_ip6.add_address(addr6)
        if network_data.ipv6gateway:
            s_ip6.props.gateway = network_data.ipv6gateway
    connection.add_setting(s_ip6)

    # nameservers
    if network_data.nameserver:
        for ns in [str.strip(i) for i in network_data.nameserver.split(",")]:
            if NM.utils_ipaddr_valid(socket.AF_INET6, ns):
                s_ip6.add_dns(ns)
            elif NM.utils_ipaddr_valid(socket.AF_INET, ns):
                s_ip4.add_dns(ns)
            else:
                log.error("IP address %s is not valid", ns)