Enable setting domain parameter for interfaces

This enables the setting of a static domain that will be used to aid DNS
queries.

Change-Id: I284691444b2f10cc831d4b3148d41100f6c7796d
This commit is contained in:
Juan Antonio Osorio Robles
2019-02-12 14:34:11 +02:00
committed by Harald Jensås
parent d18d35223f
commit fc9fbd4461
7 changed files with 211 additions and 79 deletions

View File

@@ -605,6 +605,8 @@ class IfcfgNetConfig(os_net_config.NetConfig):
data += "DNS2=%s\n" % base_opt.dns_servers[1]
if len(base_opt.dns_servers) > 2:
logger.warning('ifcfg format supports max 2 resolvers.')
if base_opt.domain:
data += "DOMAIN=%s\n" % base_opt.domain
return data
def _add_routes(self, interface_name, routes=[]):

View File

@@ -322,7 +322,7 @@ class _BaseOpts(object):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True):
onboot=True, domain=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -360,6 +360,7 @@ class _BaseOpts(object):
self.defroute = defroute
self.dhclient_args = dhclient_args
self.dns_servers = dns_servers
self.domain = domain
self.nm_controlled = nm_controlled
self.onboot = onboot
self.bridge_name = None # internal
@@ -397,6 +398,7 @@ class _BaseOpts(object):
mtu = json.get('mtu', None)
dhclient_args = json.get('dhclient_args')
dns_servers = json.get('dns_servers')
domain = json.get('domain')
nm_controlled = strutils.bool_from_string(str(json.get('nm_controlled',
False)))
onboot = strutils.bool_from_string(str(json.get('onboot',
@@ -442,11 +444,11 @@ class _BaseOpts(object):
if include_primary:
return (use_dhcp, use_dhcpv6, addresses, routes, rules, mtu,
primary, nic_mapping, persist_mapping, defroute,
dhclient_args, dns_servers, nm_controlled, onboot)
dhclient_args, dns_servers, nm_controlled, onboot, domain)
else:
return (use_dhcp, use_dhcpv6, addresses, routes, rules, mtu,
nic_mapping, persist_mapping, defroute, dhclient_args,
dns_servers, nm_controlled, onboot)
dns_servers, nm_controlled, onboot, domain)
class Interface(_BaseOpts):
@@ -456,7 +458,7 @@ class Interface(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, ethtool_opts=None, hotplug=False):
onboot=True, domain=None, ethtool_opts=None, hotplug=False):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -465,7 +467,7 @@ class Interface(_BaseOpts):
routes, rules, mtu, primary,
nic_mapping, persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.ethtool_opts = ethtool_opts
self.hotplug = hotplug
@@ -490,7 +492,7 @@ class Vlan(_BaseOpts):
addresses=None, routes=None, rules=None, mtu=None,
primary=False, nic_mapping=None, persist_mapping=False,
defroute=True, dhclient_args=None, dns_servers=None,
nm_controlled=False, onboot=True):
nm_controlled=False, onboot=True, domain=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -499,7 +501,7 @@ class Vlan(_BaseOpts):
super(Vlan, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
routes, rules, mtu, primary, nic_mapping,
persist_mapping, defroute, dhclient_args,
dns_servers, nm_controlled, onboot)
dns_servers, nm_controlled, onboot, domain)
self.vlan_id = int(vlan_id)
mapped_nic_names = mapped_nics(nic_mapping)
if device in mapped_nic_names:
@@ -523,7 +525,7 @@ class IvsInterface(_BaseOpts):
addresses=None, routes=None, rules=None, mtu=1500,
primary=False, nic_mapping=None, persist_mapping=False,
defroute=True, dhclient_args=None, dns_servers=None,
nm_controlled=False, onboot=True):
nm_controlled=False, onboot=True, domain=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -534,7 +536,7 @@ class IvsInterface(_BaseOpts):
primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.vlan_id = int(vlan_id)
@staticmethod
@@ -552,7 +554,8 @@ class NfvswitchInternal(_BaseOpts):
use_dhcpv6=False, addresses=None, routes=None, rules=None,
mtu=1500, primary=False, nic_mapping=None,
persist_mapping=False, defroute=True, dhclient_args=None,
dns_servers=None, nm_controlled=False, onboot=True):
dns_servers=None, nm_controlled=False, onboot=True,
domain=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -564,7 +567,7 @@ class NfvswitchInternal(_BaseOpts):
nic_mapping, persist_mapping,
defroute, dhclient_args,
dns_servers, nm_controlled,
onboot)
onboot, domain)
self.vlan_id = int(vlan_id)
@staticmethod
@@ -583,7 +586,7 @@ class OvsBridge(_BaseOpts):
ovs_options=None, ovs_extra=None, nic_mapping=None,
persist_mapping=False, defroute=True, dhclient_args=None,
dns_servers=None, nm_controlled=False, onboot=True,
fail_mode=None):
domain=None, fail_mode=None):
check_ovs_installed(self.__class__.__name__)
@@ -596,7 +599,7 @@ class OvsBridge(_BaseOpts):
routes, rules, mtu, False, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.members = members
self.ovs_options = ovs_options
ovs_extra = ovs_extra or []
@@ -643,7 +646,7 @@ class OvsBridge(_BaseOpts):
name = _get_required_field(json, 'name', 'OvsBridge')
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args, dns_servers,
nm_controlled, onboot) = _BaseOpts.base_opts_from_json(
nm_controlled, onboot, domain) = _BaseOpts.base_opts_from_json(
json, include_primary=False)
ovs_options = json.get('ovs_options')
ovs_extra = json.get('ovs_extra', [])
@@ -660,7 +663,7 @@ class OvsBridge(_BaseOpts):
persist_mapping=persist_mapping, defroute=defroute,
dhclient_args=dhclient_args, dns_servers=dns_servers,
nm_controlled=nm_controlled, onboot=onboot,
fail_mode=fail_mode)
domain=domain, fail_mode=fail_mode)
class OvsUserBridge(_BaseOpts):
@@ -671,7 +674,7 @@ class OvsUserBridge(_BaseOpts):
ovs_options=None, ovs_extra=None, nic_mapping=None,
persist_mapping=False, defroute=True, dhclient_args=None,
dns_servers=None, nm_controlled=False, onboot=True,
fail_mode=None):
domain=None, fail_mode=None):
check_ovs_installed(self.__class__.__name__)
@@ -680,7 +683,7 @@ class OvsUserBridge(_BaseOpts):
False, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.members = members or []
self.ovs_options = ovs_options
ovs_extra = ovs_extra or []
@@ -707,7 +710,7 @@ class OvsUserBridge(_BaseOpts):
name = _get_required_field(json, 'name', 'OvsUserBridge')
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args, dns_servers,
nm_controlled, onboot) = _BaseOpts.base_opts_from_json(
nm_controlled, onboot, domain) = _BaseOpts.base_opts_from_json(
json, include_primary=False)
ovs_options = json.get('ovs_options')
ovs_extra = json.get('ovs_extra', [])
@@ -725,7 +728,7 @@ class OvsUserBridge(_BaseOpts):
defroute=defroute, dhclient_args=dhclient_args,
dns_servers=dns_servers,
nm_controlled=nm_controlled, onboot=onboot,
fail_mode=fail_mode)
domain=domain, fail_mode=fail_mode)
class LinuxBridge(_BaseOpts):
@@ -735,7 +738,7 @@ class LinuxBridge(_BaseOpts):
routes=None, rules=None, mtu=None, members=None,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True):
onboot=True, domain=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -745,7 +748,7 @@ class LinuxBridge(_BaseOpts):
addresses, routes, rules, mtu, False,
nic_mapping, persist_mapping,
defroute, dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.members = members
for member in self.members:
member.linux_bridge_name = name
@@ -764,7 +767,8 @@ class LinuxBridge(_BaseOpts):
name = _get_required_field(json, 'name', 'LinuxBridge')
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args, dns_servers, nm_controlled,
onboot) = _BaseOpts.base_opts_from_json(json, include_primary=False)
onboot, domain) = _BaseOpts.base_opts_from_json(json,
include_primary=False)
members = _update_members(json, nic_mapping, persist_mapping)
@@ -774,7 +778,8 @@ class LinuxBridge(_BaseOpts):
persist_mapping=persist_mapping, defroute=defroute,
dhclient_args=dhclient_args,
dns_servers=dns_servers,
nm_controlled=nm_controlled, onboot=onboot)
nm_controlled=nm_controlled, onboot=onboot,
domain=domain)
class IvsBridge(_BaseOpts):
@@ -794,7 +799,8 @@ class IvsBridge(_BaseOpts):
addresses=None, rules=None, routes=None,
mtu=1500, members=None, nic_mapping=None,
persist_mapping=False, defroute=True, dhclient_args=None,
dns_servers=None, nm_controlled=False, onboot=True):
dns_servers=None, nm_controlled=False, onboot=True,
domain=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -804,7 +810,7 @@ class IvsBridge(_BaseOpts):
addresses, routes, rules, mtu, False,
nic_mapping, persist_mapping,
defroute, dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.members = members
for member in self.members:
if isinstance(member, OvsBond) or isinstance(member, LinuxBond):
@@ -819,7 +825,8 @@ class IvsBridge(_BaseOpts):
name = 'ivs'
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args, dns_servers, nm_controlled,
onboot) = _BaseOpts.base_opts_from_json(json, include_primary=False)
onboot, domain) = _BaseOpts.base_opts_from_json(json,
include_primary=False)
members = _update_members(json, nic_mapping, persist_mapping)
@@ -829,7 +836,7 @@ class IvsBridge(_BaseOpts):
persist_mapping=persist_mapping, defroute=defroute,
dhclient_args=dhclient_args,
dns_servers=dns_servers, nm_controlled=nm_controlled,
onboot=onboot)
onboot=onboot, domain=domain)
class NfvswitchBridge(_BaseOpts):
@@ -844,7 +851,7 @@ class NfvswitchBridge(_BaseOpts):
addresses=None, routes=None, rules=None, mtu=1500,
members=None, nic_mapping=None, persist_mapping=False,
defroute=True, dhclient_args=None, dns_servers=None,
nm_controlled=False, onboot=True, options=""):
nm_controlled=False, onboot=True, domain=None, options=""):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -855,7 +862,7 @@ class NfvswitchBridge(_BaseOpts):
False, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.options = options
self.members = members
for member in self.members:
@@ -871,7 +878,8 @@ class NfvswitchBridge(_BaseOpts):
name = 'nfvswitch'
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args, dns_servers, nm_controlled,
onboot) = _BaseOpts.base_opts_from_json(json, include_primary=False)
onboot, domain) = _BaseOpts.base_opts_from_json(json,
include_primary=False)
members = _update_members(json, nic_mapping, persist_mapping)
@@ -888,7 +896,7 @@ class NfvswitchBridge(_BaseOpts):
defroute=defroute, dhclient_args=dhclient_args,
dns_servers=dns_servers,
nm_controlled=nm_controlled, onboot=onboot,
options=options)
domain=domain, options=options)
class LinuxTeam(_BaseOpts):
@@ -898,7 +906,8 @@ class LinuxTeam(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
members=None, bonding_options=None, nic_mapping=None,
persist_mapping=False, defroute=True, dhclient_args=None,
dns_servers=None, nm_controlled=False, onboot=True):
dns_servers=None, nm_controlled=False, onboot=True,
domain=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -908,7 +917,7 @@ class LinuxTeam(_BaseOpts):
routes, rules, mtu, primary,
nic_mapping, persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.members = members
self.bonding_options = bonding_options
for member in self.members:
@@ -927,7 +936,8 @@ class LinuxTeam(_BaseOpts):
name = _get_required_field(json, 'name', 'LinuxTeam')
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args, dns_servers, nm_controlled,
onboot) = _BaseOpts.base_opts_from_json(json, include_primary=False)
onboot, domain) = _BaseOpts.base_opts_from_json(json,
include_primary=False)
bonding_options = json.get('bonding_options')
members = _update_members(json, nic_mapping, persist_mapping)
@@ -939,7 +949,8 @@ class LinuxTeam(_BaseOpts):
nic_mapping=nic_mapping,
persist_mapping=persist_mapping, defroute=defroute,
dhclient_args=dhclient_args, dns_servers=dns_servers,
nm_controlled=nm_controlled, onboot=onboot)
nm_controlled=nm_controlled, onboot=onboot,
domain=domain)
class LinuxBond(_BaseOpts):
@@ -949,7 +960,8 @@ class LinuxBond(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
members=None, bonding_options=None, nic_mapping=None,
persist_mapping=False, defroute=True, dhclient_args=None,
dns_servers=None, nm_controlled=False, onboot=True):
dns_servers=None, nm_controlled=False, onboot=True,
domain=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -959,7 +971,7 @@ class LinuxBond(_BaseOpts):
routes, rules, mtu, primary,
nic_mapping, persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.members = members
self.bonding_options = bonding_options
for member in self.members:
@@ -999,8 +1011,8 @@ class LinuxBond(_BaseOpts):
def from_json(json):
name = _get_required_field(json, 'name', 'LinuxBond')
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args,
dns_servers, nm_controlled, onboot) = _BaseOpts.base_opts_from_json(
persist_mapping, defroute, dhclient_args, dns_servers, nm_controlled,
onboot, domain) = _BaseOpts.base_opts_from_json(
json, include_primary=False)
bonding_options = json.get('bonding_options')
@@ -1013,7 +1025,8 @@ class LinuxBond(_BaseOpts):
nic_mapping=nic_mapping,
persist_mapping=persist_mapping, defroute=defroute,
dhclient_args=dhclient_args, dns_servers=dns_servers,
nm_controlled=nm_controlled, onboot=onboot)
nm_controlled=nm_controlled, onboot=onboot,
domain=domain)
class OvsBond(_BaseOpts):
@@ -1024,7 +1037,7 @@ class OvsBond(_BaseOpts):
members=None, ovs_options=None, ovs_extra=None,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True):
onboot=True, domain=None):
check_ovs_installed(self.__class__.__name__)
@@ -1036,7 +1049,8 @@ class OvsBond(_BaseOpts):
super(OvsBond, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
routes, rules, mtu, primary, nic_mapping,
persist_mapping, defroute, dhclient_args,
dns_servers, nm_controlled, onboot)
dns_servers, nm_controlled, onboot,
domain)
self.members = members
self.ovs_options = ovs_options
self.ovs_extra = format_ovs_extra(self, ovs_extra)
@@ -1080,8 +1094,8 @@ class OvsBond(_BaseOpts):
def from_json(json):
name = _get_required_field(json, 'name', 'OvsBond')
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args,
dns_servers, nm_controlled, onboot) = _BaseOpts.base_opts_from_json(
persist_mapping, defroute, dhclient_args, dns_servers, nm_controlled,
onboot, domain) = _BaseOpts.base_opts_from_json(
json, include_primary=False)
ovs_options = json.get('ovs_options')
ovs_extra = json.get('ovs_extra', [])
@@ -1096,7 +1110,8 @@ class OvsBond(_BaseOpts):
ovs_extra=ovs_extra, nic_mapping=nic_mapping,
persist_mapping=persist_mapping, defroute=defroute,
dhclient_args=dhclient_args, dns_servers=dns_servers,
nm_controlled=nm_controlled, onboot=onboot)
nm_controlled=nm_controlled, onboot=onboot,
domain=domain)
class OvsTunnel(_BaseOpts):
@@ -1106,7 +1121,7 @@ class OvsTunnel(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, tunnel_type=None, ovs_options=None,
onboot=True, domain=None, tunnel_type=None, ovs_options=None,
ovs_extra=None):
check_ovs_installed(self.__class__.__name__)
@@ -1119,7 +1134,7 @@ class OvsTunnel(_BaseOpts):
routes, rules, mtu, primary,
nic_mapping, persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.tunnel_type = tunnel_type
self.ovs_options = ovs_options or []
self.ovs_extra = format_ovs_extra(self, ovs_extra)
@@ -1145,8 +1160,8 @@ class OvsPatchPort(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, bridge_name=None, peer=None, ovs_options=None,
ovs_extra=None):
onboot=True, domain=None, bridge_name=None, peer=None,
ovs_options=None, ovs_extra=None):
check_ovs_installed(self.__class__.__name__)
@@ -1159,7 +1174,7 @@ class OvsPatchPort(_BaseOpts):
primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.bridge_name = bridge_name
self.peer = peer
self.ovs_options = ovs_options or []
@@ -1187,7 +1202,7 @@ class IbInterface(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, ethtool_opts=None):
onboot=True, domain=None, ethtool_opts=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -1197,7 +1212,7 @@ class IbInterface(_BaseOpts):
primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.ethtool_opts = ethtool_opts
@staticmethod
@@ -1215,7 +1230,7 @@ class OvsDpdkPort(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, members=None, driver='vfio-pci',
onboot=True, domain=None, members=None, driver='vfio-pci',
ovs_options=None, ovs_extra=None, rx_queue=None):
check_ovs_installed(self.__class__.__name__)
@@ -1225,7 +1240,7 @@ class OvsDpdkPort(_BaseOpts):
primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.members = members or []
self.ovs_options = ovs_options or []
self.ovs_extra = format_ovs_extra(self, ovs_extra)
@@ -1258,7 +1273,7 @@ class OvsDpdkPort(_BaseOpts):
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, primary,
nic_mapping, persist_mapping, defroute, dhclient_args,
dns_servers, nm_controlled,
onboot) = _BaseOpts.base_opts_from_json(json)
onboot, domain) = _BaseOpts.base_opts_from_json(json)
driver = json.get('driver')
if not driver:
@@ -1309,7 +1324,7 @@ class OvsDpdkPort(_BaseOpts):
dhclient_args=dhclient_args,
dns_servers=dns_servers,
nm_controlled=nm_controlled, onboot=onboot,
members=members, driver=driver,
domain=domain, members=members, driver=driver,
ovs_options=ovs_options,
ovs_extra=ovs_extra, rx_queue=rx_queue)
@@ -1321,8 +1336,8 @@ class SriovVF(_BaseOpts):
addresses=None, routes=None, rules=None, mtu=None,
primary=False, nic_mapping=None, persist_mapping=False,
defroute=True, dhclient_args=None, dns_servers=None,
nm_controlled=False, onboot=True, vlan_id=0, qos=0,
spoofcheck=None, trust=None, state=None, macaddr=None,
nm_controlled=False, onboot=True, domain=None, vlan_id=0,
qos=0, spoofcheck=None, trust=None, state=None, macaddr=None,
promisc=None):
addresses = addresses or []
routes = routes or []
@@ -1339,7 +1354,7 @@ class SriovVF(_BaseOpts):
routes, rules, mtu, primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.vfid = int(vfid)
self.device = device
self.vlan_id = int(vlan_id)
@@ -1399,7 +1414,8 @@ class SriovPF(_BaseOpts):
addresses=None, routes=None, rules=None, mtu=None,
primary=False, nic_mapping=None, persist_mapping=False,
defroute=True, dhclient_args=None, dns_servers=None,
nm_controlled=False, onboot=True, members=None, promisc=None):
nm_controlled=False, onboot=True, domain=None, members=None,
promisc=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -1408,7 +1424,7 @@ class SriovPF(_BaseOpts):
routes, rules, mtu, primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.numvfs = int(numvfs)
mapped_nic_names = mapped_nics(nic_mapping)
if name in mapped_nic_names:
@@ -1445,7 +1461,7 @@ class OvsDpdkBond(_BaseOpts):
members=None, ovs_options=None, ovs_extra=None,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, rx_queue=None):
onboot=True, domain=None, rx_queue=None):
check_ovs_installed(self.__class__.__name__)
@@ -1454,7 +1470,7 @@ class OvsDpdkBond(_BaseOpts):
primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.members = members or []
self.ovs_options = ovs_options
self.ovs_extra = format_ovs_extra(self, ovs_extra)
@@ -1478,8 +1494,8 @@ class OvsDpdkBond(_BaseOpts):
def from_json(json):
name = _get_required_field(json, 'name', 'OvsDpdkBond')
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args,
dns_servers, nm_controlled, onboot) = _BaseOpts.base_opts_from_json(
persist_mapping, defroute, dhclient_args, dns_servers, nm_controlled,
onboot, domain) = _BaseOpts.base_opts_from_json(
json, include_primary=False)
rx_queue = json.get('rx_queue', None)
ovs_options = json.get('ovs_options')
@@ -1514,7 +1530,7 @@ class OvsDpdkBond(_BaseOpts):
defroute=defroute, dhclient_args=dhclient_args,
dns_servers=dns_servers,
nm_controlled=nm_controlled, onboot=onboot,
rx_queue=rx_queue)
domain=domain, rx_queue=rx_queue)
class VppInterface(_BaseOpts):
@@ -1545,7 +1561,8 @@ class VppInterface(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, uio_driver='vfio-pci', options=None):
onboot=True, domain=None, uio_driver='vfio-pci',
options=None):
addresses = addresses or []
routes = routes or []
rules = rules or []
@@ -1555,7 +1572,7 @@ class VppInterface(_BaseOpts):
primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.uio_driver = uio_driver
self.options = options
# pci_dev contains pci address for the interface, it will be populated
@@ -1580,7 +1597,7 @@ class VppBond(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, members=None, bonding_options=None):
onboot=True, domain=None, members=None, bonding_options=None):
addresses = addresses or []
members = members or []
routes = routes or []
@@ -1590,7 +1607,8 @@ class VppBond(_BaseOpts):
addresses, routes, rules, mtu, primary,
nic_mapping, persist_mapping,
defroute, dhclient_args,
dns_servers, nm_controlled, onboot)
dns_servers, nm_controlled, onboot,
domain)
self.members = members
self.bonding_options = bonding_options
@@ -1601,7 +1619,8 @@ class VppBond(_BaseOpts):
(use_dhcp, use_dhcpv6, addresses, routes, rules, mtu, nic_mapping,
persist_mapping, defroute, dhclient_args, dns_servers, nm_controlled,
onboot) = _BaseOpts.base_opts_from_json(json, include_primary=False)
onboot, domain) = _BaseOpts.base_opts_from_json(json,
include_primary=False)
members = []
members_json = json.get('members', None)
@@ -1627,7 +1646,8 @@ class VppBond(_BaseOpts):
persist_mapping=persist_mapping,
defroute=defroute, dhclient_args=dhclient_args,
dns_servers=dns_servers, nm_controlled=nm_controlled,
onboot=onboot, bonding_options=bonding_options)
onboot=onboot, domain=domain,
bonding_options=bonding_options)
class ContrailVrouter(_BaseOpts):
@@ -1643,7 +1663,7 @@ class ContrailVrouter(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, members=None):
onboot=True, domain=None, members=None):
addresses = addresses or []
super(ContrailVrouter, self).__init__(name, use_dhcp, use_dhcpv6,
@@ -1651,7 +1671,7 @@ class ContrailVrouter(_BaseOpts):
primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot, domain)
self.members = members or []
@staticmethod
@@ -1660,7 +1680,8 @@ class ContrailVrouter(_BaseOpts):
(_use_dhcp, _use_dhcpv6, _addresses, _routes, _rules, _mtu, _primary,
nic_mapping, persist_mapping, _defroute, _dhclient_args, _dns_servers,
_nm_controlled, _onboot) = opts = _BaseOpts.base_opts_from_json(json)
_nm_controlled, _onboot,
_domain) = opts = _BaseOpts.base_opts_from_json(json)
members = _update_members(json, nic_mapping, persist_mapping)
return ContrailVrouter(name, *opts, members=members)
@@ -1683,8 +1704,8 @@ class ContrailVrouterDpdk(_BaseOpts):
routes=None, rules=None, mtu=None, primary=False,
nic_mapping=None, persist_mapping=False, defroute=True,
dhclient_args=None, dns_servers=None, nm_controlled=False,
onboot=True, members=None, bond_mode=None, bond_policy=None,
driver=None, cpu_list='0-31', vlan_id=None):
onboot=True, domain=None, members=None, bond_mode=None,
bond_policy=None, driver=None, cpu_list='0-31', vlan_id=None):
addresses = addresses or []
super(ContrailVrouterDpdk, self).__init__(name, use_dhcp, use_dhcpv6,
@@ -1692,7 +1713,8 @@ class ContrailVrouterDpdk(_BaseOpts):
mtu, primary, nic_mapping,
persist_mapping, defroute,
dhclient_args, dns_servers,
nm_controlled, onboot)
nm_controlled, onboot,
domain)
self.members = members or []
self.bond_mode = bond_mode
@@ -1712,7 +1734,8 @@ class ContrailVrouterDpdk(_BaseOpts):
(_use_dhcp, _use_dhcpv6, _addresses, _routes, _rules, _mtu, _primary,
nic_mapping, persist_mapping, _defroute, _dhclient_args, _dns_servers,
_nm_controlled, _onboot) = opts = _BaseOpts.base_opts_from_json(json)
_nm_controlled, _onboot,
_domain) = opts = _BaseOpts.base_opts_from_json(json)
members = _update_members(json, nic_mapping, persist_mapping)
return ContrailVrouterDpdk(name, *opts, members=members,

View File

@@ -107,6 +107,10 @@ definitions:
required:
- list_join
additionalProperties: False
domain_name_string:
type: string
pattern: >-
^(?=^.{1,255}$)(?!.*\.\..*)(.{1,63}\.)+(.{0,63}\.?)|(?!\.)(?!.*\.\..*)(^.{1,63}$)|(^\.$)$
# os-net-config derived types
address:
@@ -272,6 +276,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -336,6 +342,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -396,6 +404,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- device
@@ -440,6 +450,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- vlan_id
@@ -496,6 +508,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -553,6 +567,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -605,6 +621,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -655,6 +673,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -704,6 +724,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -754,6 +776,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -812,6 +836,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -856,6 +882,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -899,6 +927,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
members:
type: array
items:
@@ -1058,6 +1088,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -1107,6 +1139,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -1155,6 +1189,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name
@@ -1199,6 +1235,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- members
@@ -1242,6 +1280,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- vlan_id
@@ -1288,6 +1328,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- options
@@ -1332,6 +1374,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- vlan_id
@@ -1375,6 +1419,8 @@ definitions:
$ref: "#/definitions/bool_or_param"
onboot:
$ref: "#/definitions/bool_or_param"
domain:
$ref: "#/definitions/domain_name_string"
required:
- type
- name

View File

@@ -1220,6 +1220,21 @@ NM_CONTROLLED=no
BOOTPROTO=none
DNS1=1.2.3.4
DNS2=5.6.7.8
"""
self.assertEqual(em1_config, self.get_interface_config('em1'))
def test_interface_domain(self):
interface1 = objects.Interface('em1', dns_servers=['1.2.3.4'],
domain='openstack.local')
self.provider.add_interface(interface1)
em1_config = """# This file is autogenerated by os-net-config
DEVICE=em1
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
BOOTPROTO=none
DNS1=1.2.3.4
DOMAIN=openstack.local
"""
self.assertEqual(em1_config, self.get_interface_config('em1'))

View File

@@ -306,6 +306,17 @@ class TestInterface(base.TestCase):
interface1 = objects.object_from_json(json.loads(data))
self.assertEqual(["1.2.3.4"], interface1.dns_servers)
def test_from_json_domain(self):
data = """{
"type": "interface",
"name": "em1",
"use_dhcp": true,
"domain": "openstack.local"
}
"""
interface1 = objects.object_from_json(json.loads(data))
self.assertEqual("openstack.local", interface1.domain)
def test_from_json_dhcp_nic1(self):
def dummy_mapped_nics(nic_mapping=None):
return {"nic1": "em3"}

View File

@@ -144,6 +144,35 @@ class TestBaseTypes(base.TestCase):
self.assertTrue(v.is_valid("fe80::1/64"))
self.assertFalse(v.is_valid("193.168.0.1"))
def test_domain_name_string(self):
schema = validator.get_schema_for_defined_type("domain_name_string")
v = jsonschema.Draft4Validator(schema)
self.assertTrue(v.is_valid('localdomain'))
self.assertTrue(v.is_valid('openstack.local'))
self.assertTrue(v.is_valid('999.local'))
self.assertTrue(v.is_valid('_foo.bar'))
self.assertTrue(v.is_valid('_foo.bar.domain'))
self.assertTrue(v.is_valid('trailing.dot.domain.'))
self.assertTrue(v.is_valid('.'))
self.assertFalse(v.is_valid('.com'))
self.assertFalse(v.is_valid('..'))
self.assertFalse(v.is_valid('foo..bar'))
# Label too long
domain = ('123456789-123456789-123456789-123456789-123456789-'
'123456789-1234.com')
self.assertFalse(v.is_valid(domain))
domain = ('123456789-123456789-123456789-123456789-123456789-'
'123456789-12345678')
self.assertFalse(v.is_valid(domain))
domain = ('123456789.123456789.123456789.123456789.123456789.'
'123456789.123456789.123456789.123456789.123456789.'
'123456789.123456789.123456789.123456789.123456789.'
'123456789.123456789.123456789.123456789.123456789.'
'123456789.123456789.123456789.123456789.123456789.'
'aa.com')
self.assertEqual(len(domain), 256)
self.assertFalse(v.is_valid(domain))
class TestDerivedTypes(base.TestCase):
@@ -238,6 +267,7 @@ class TestDeviceTypes(base.TestCase):
"defroute": False,
"dhclient_args": "--foobar",
"dns_servers": ["1.2.3.4"],
"domain": "openstack.local",
"mtu": 1501,
"ethtool_opts": "speed 1000 duplex full",
"hotplug": True,

View File

@@ -0,0 +1,5 @@
---
features:
- |
A key called "domain" is now available for interfaces. This allows the
setting of a domain for an ifcfg configuration, which will aide DNS search.