aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config/objects.py
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2015-07-01 17:18:49 -0400
committerDan Prince <dprince@redhat.com>2015-07-01 17:18:49 -0400
commitcb578ed9b94ff9a34b41d91ada94e3375436b60c (patch)
tree528009ce2c83c07e6b5f75511e9a90d10249e75f /os_net_config/objects.py
parent9355a535e71407911332c228a382ee592452f5e7 (diff)
Add support for dhclient_args
This patch adds an optional flag that can be used to pass in args for dhclient when using DHCP. This use case for this is to be able to control which DHCP options dhclient listens for and we can thus disable specific options (like routing) for some network configurations. Change-Id: Ic21de0615ea0ef304843c55cc5abe43cb1771169
Diffstat (limited to 'os_net_config/objects.py')
-rw-r--r--os_net_config/objects.py39
1 files changed, 24 insertions, 15 deletions
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)