aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config
diff options
context:
space:
mode:
Diffstat (limited to 'os_net_config')
-rw-r--r--os_net_config/impl_ifcfg.py2
-rw-r--r--os_net_config/objects.py39
-rw-r--r--os_net_config/tests/test_impl_ifcfg.py13
-rw-r--r--os_net_config/tests/test_objects.py11
4 files changed, 50 insertions, 15 deletions
diff --git a/os_net_config/impl_ifcfg.py b/os_net_config/impl_ifcfg.py
index daadd52..0fe8cc5 100644
--- a/os_net_config/impl_ifcfg.py
+++ b/os_net_config/impl_ifcfg.py
@@ -155,6 +155,8 @@ class IfcfgNetConfig(os_net_config.NetConfig):
data += "OVS_EXTRA=\"%s\"\n" % " -- ".join(ovs_extra)
if not base_opt.defroute:
data += "DEFROUTE=no\n"
+ if base_opt.dhclient_args:
+ data += "DHCLIENTARGS=%s\n" % base_opt.dhclient_args
return data
def _add_routes(self, interface_name, routes=[]):
diff --git a/os_net_config/objects.py b/os_net_config/objects.py
index ea9c11c..8899164 100644
--- a/os_net_config/objects.py
+++ b/os_net_config/objects.py
@@ -130,7 +130,7 @@ class _BaseOpts(object):
def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=[],
routes=[], mtu=1500, primary=False, nic_mapping=None,
- persist_mapping=False, defroute=True):
+ persist_mapping=False, defroute=True, dhclient_args=None):
numbered_nic_names = _numbered_nics(nic_mapping)
self.hwaddr = None
self.hwname = None
@@ -153,6 +153,7 @@ class _BaseOpts(object):
self.routes = routes
self.primary = primary
self.defroute = defroute
+ self.dhclient_args = dhclient_args
self.bridge_name = None # internal
self.ovs_port = False # internal
self.primary_interface_name = None # internal
@@ -181,6 +182,7 @@ class _BaseOpts(object):
defroute = strutils.bool_from_string(str(json.get('defroute',
True)))
mtu = json.get('mtu', 1500)
+ dhclient_args = json.get('dhclient_args')
primary = strutils.bool_from_string(str(json.get('primary', False)))
addresses = []
routes = []
@@ -210,10 +212,10 @@ class _BaseOpts(object):
if include_primary:
return (use_dhcp, use_dhcpv6, addresses, routes, mtu, primary,
- nic_mapping, persist_mapping, defroute)
+ nic_mapping, persist_mapping, defroute, dhclient_args)
else:
return (use_dhcp, use_dhcpv6, addresses, routes, mtu,
- nic_mapping, persist_mapping, defroute)
+ nic_mapping, persist_mapping, defroute, dhclient_args)
class Interface(_BaseOpts):
@@ -221,10 +223,11 @@ class Interface(_BaseOpts):
def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=[],
routes=[], mtu=1500, primary=False, nic_mapping=None,
- persist_mapping=False, defroute=True):
+ persist_mapping=False, defroute=True, dhclient_args=None):
super(Interface, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
routes, mtu, primary, nic_mapping,
- persist_mapping, defroute)
+ persist_mapping, defroute,
+ dhclient_args)
@staticmethod
def from_json(json):
@@ -242,11 +245,12 @@ class Vlan(_BaseOpts):
def __init__(self, device, vlan_id, use_dhcp=False, use_dhcpv6=False,
addresses=[], routes=[], mtu=1500, primary=False,
- nic_mapping=None, persist_mapping=False, defroute=True):
+ nic_mapping=None, persist_mapping=False, defroute=True,
+ dhclient_args=None):
name = 'vlan%i' % vlan_id
super(Vlan, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
routes, mtu, primary, nic_mapping,
- persist_mapping, defroute)
+ persist_mapping, defroute, dhclient_args)
self.vlan_id = int(vlan_id)
numbered_nic_names = _numbered_nics(nic_mapping)
@@ -270,10 +274,11 @@ class OvsBridge(_BaseOpts):
def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=[],
routes=[], mtu=1500, members=[], ovs_options=None,
ovs_extra=[], nic_mapping=None, persist_mapping=False,
- defroute=True):
+ defroute=True, dhclient_args=None):
super(OvsBridge, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
routes, mtu, False, nic_mapping,
- persist_mapping, defroute)
+ persist_mapping, defroute,
+ dhclient_args)
self.members = members
self.ovs_options = ovs_options
self.ovs_extra = ovs_extra
@@ -293,7 +298,8 @@ class OvsBridge(_BaseOpts):
def from_json(json):
name = _get_required_field(json, 'name', 'OvsBridge')
(use_dhcp, use_dhcpv6, addresses, routes, mtu, nic_mapping,
- persist_mapping, defroute) = _BaseOpts.base_opts_from_json(
+ persist_mapping, defroute,
+ dhclient_args) = _BaseOpts.base_opts_from_json(
json, include_primary=False)
ovs_options = json.get('ovs_options')
ovs_extra = json.get('ovs_extra', [])
@@ -313,7 +319,8 @@ class OvsBridge(_BaseOpts):
addresses=addresses, routes=routes, mtu=mtu,
members=members, ovs_options=ovs_options,
ovs_extra=ovs_extra, nic_mapping=nic_mapping,
- persist_mapping=persist_mapping, defroute=defroute)
+ persist_mapping=persist_mapping, defroute=defroute,
+ dhclient_args=dhclient_args)
class OvsBond(_BaseOpts):
@@ -322,10 +329,10 @@ class OvsBond(_BaseOpts):
def __init__(self, name, use_dhcp=False, use_dhcpv6=False, addresses=[],
routes=[], mtu=1500, primary=False, members=[],
ovs_options=None, ovs_extra=[], nic_mapping=None,
- persist_mapping=False, defroute=True):
+ persist_mapping=False, defroute=True, dhclient_args=None):
super(OvsBond, self).__init__(name, use_dhcp, use_dhcpv6, addresses,
routes, mtu, primary, nic_mapping,
- persist_mapping, defroute)
+ persist_mapping, defroute, dhclient_args)
self.members = members
self.ovs_options = ovs_options
self.ovs_extra = ovs_extra
@@ -347,7 +354,8 @@ class OvsBond(_BaseOpts):
def from_json(json):
name = _get_required_field(json, 'name', 'OvsBond')
(use_dhcp, use_dhcpv6, addresses, routes, mtu, nic_mapping,
- persist_mapping, defroute) = _BaseOpts.base_opts_from_json(
+ persist_mapping, defroute,
+ dhclient_args) = _BaseOpts.base_opts_from_json(
json, include_primary=False)
ovs_options = json.get('ovs_options')
ovs_extra = json.get('ovs_extra', [])
@@ -367,4 +375,5 @@ class OvsBond(_BaseOpts):
addresses=addresses, routes=routes, mtu=mtu,
members=members, ovs_options=ovs_options,
ovs_extra=ovs_extra, nic_mapping=nic_mapping,
- persist_mapping=persist_mapping, defroute=defroute)
+ persist_mapping=persist_mapping, defroute=defroute,
+ dhclient_args=dhclient_args)
diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py
index 92ce828..e32aff2 100644
--- a/os_net_config/tests/test_impl_ifcfg.py
+++ b/os_net_config/tests/test_impl_ifcfg.py
@@ -318,6 +318,19 @@ DEFROUTE=no
self.assertEqual(em1_config, self.get_interface_config('em1'))
self.assertEqual(em2_config, self.get_interface_config('em2'))
+ def test_interface_dhclient_opts(self):
+ interface1 = objects.Interface('em1', dhclient_args='--foobar')
+ 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
+DHCLIENTARGS=--foobar
+"""
+ self.assertEqual(em1_config, self.get_interface_config('em1'))
+
class TestIfcfgNetConfigApply(base.TestCase):
diff --git a/os_net_config/tests/test_objects.py b/os_net_config/tests/test_objects.py
index 2e545d0..c824ba8 100644
--- a/os_net_config/tests/test_objects.py
+++ b/os_net_config/tests/test_objects.py
@@ -108,6 +108,17 @@ class TestInterface(base.TestCase):
self.assertEqual(True, interface1.defroute)
self.assertEqual(False, interface2.defroute)
+ def test_from_json_dhclient_args(self):
+ data = """{
+"type": "interface",
+"name": "em1",
+"use_dhcp": true,
+"dhclient_args": "--foobar"
+}
+"""
+ interface1 = objects.object_from_json(json.loads(data))
+ self.assertEqual("--foobar", interface1.dhclient_args)
+
def test_from_json_dhcp_nic1(self):
def dummy_numbered_nics(nic_mapping=None):
return {"nic1": "em3"}