Merge "rp_filter status get not supported in NSXv 6.1.x"

This commit is contained in:
Jenkins 2015-08-18 21:25:38 +00:00 committed by Gerrit Code Review
commit 3225db15ab
2 changed files with 25 additions and 0 deletions
vmware_nsx/neutron
plugins/vmware/vshield
tests/unit/vmware/vshield

@ -109,9 +109,17 @@ class EdgeManager(object):
self.edge_pool_dicts = parse_backup_edge_pool_opt()
self.nsxv_plugin = nsxv_manager.callbacks.plugin
self.plugin = plugin
self.per_interface_rp_filter = self._get_per_edge_rp_filter_state()
self.worker_pool = eventlet.GreenPool(WORKER_POOL_SIZE)
self._check_backup_edge_pools()
def _get_per_edge_rp_filter_state(self):
version = self.nsxv_manager.vcns.get_version()
# TODO(kobis): should have better mapping of versions here for this
if version[:3] == '6.2':
return True
return False
def _deploy_edge(self, context, lrouter,
lswitch=None, appliance_size=nsxv_constants.LARGE,
edge_type=nsxv_constants.SERVICE_EDGE, async=True):
@ -975,6 +983,14 @@ class EdgeManager(object):
self.plugin.setup_dhcp_edge_fw_rules(
context, self.plugin, resource_id)
if not self.per_interface_rp_filter:
with locking.LockManager.get_lock(
'nsx-edge-pool', lock_file_prefix='edge-bind-',
external=True):
self.nsxv_manager.vcns.set_system_control(
dhcp_edge_id,
[RP_FILTER_PROPERTY_OFF_TEMPLATE % ('all', '0')])
nsxv_db.add_vdr_dhcp_binding(context.session, vdr_router_id,
str(resource_id), dhcp_edge_id)
@ -1002,6 +1018,8 @@ class EdgeManager(object):
return sub_interface['index']
def set_sysctl_rp_filter_for_vdr_dhcp(self, context, edge_id, network_id):
if not self.per_interface_rp_filter:
return
vnic_index = self._get_sub_interface_id(context, edge_id, network_id)
if vnic_index:
@ -1020,6 +1038,9 @@ class EdgeManager(object):
def reset_sysctl_rp_filter_for_vdr_dhcp(self, context, edge_id,
network_id):
if not self.per_interface_rp_filter:
return
vnic_index = self._get_sub_interface_id(context, edge_id, network_id)
if vnic_index:
vnic_id = 'vNic_%d' % vnic_index

@ -48,6 +48,10 @@ class EdgeUtilsTestCaseMixin(testlib_api.SqlTestCase):
task = mock.Mock()
nsxv_manager_p.return_value = task
self.nsxv_manager.callbacks = mock.Mock()
self.nsxv_manager.vcns = mock.Mock()
get_ver = mock.patch.object(self.nsxv_manager.vcns,
'get_version').start()
get_ver.return_value = '6.1.4'
self.ctx = context.get_admin_context()
self.addCleanup(nsxv_manager_p.stop)