Add DHCP Config build and T1 Adv Rule Update

- Expose Building DHCP Config V4 and V6 in NsxPolicyTier1SegmentApi
- Update update_advertisement_rules to allow batch removal of existings
  rules via prefix matching even if no new rules are to be added

Change-Id: I215630fb2af41d71431774d88129c08c4aeac904
(cherry picked from commit a8732a94af)
This commit is contained in:
Shawn Wang 2020-10-07 17:05:49 -07:00
parent c9ded037b6
commit 0e2412176c
2 changed files with 75 additions and 7 deletions

View File

@ -3414,6 +3414,30 @@ class TestPolicyTier1(NsxPolicyLibTestCase):
tenant=TEST_TENANT)
self.assert_called_with_def(api_call, expected_def)
def test_update_advertisement_rules_remove(self):
tier1_id = '111'
old_rule1 = 'old1'
old_rule2 = 'old2'
get_retval = {
'id': tier1_id,
'route_advertisement_rules': [
{'name': old_rule1},
{'name': old_rule2}]}
with mock.patch.object(self.policy_api,
"get",
return_value=get_retval),\
mock.patch.object(self.policy_api,
'create_or_update') as api_call:
self.resourceApi.update_advertisement_rules(
tier1_id, None, name_prefix='old1', tenant=TEST_TENANT)
expected_def = core_defs.Tier1Def(
tier1_id=tier1_id,
route_advertisement_rules=[
{'name': old_rule2}],
tenant=TEST_TENANT)
self.assert_called_with_def(api_call, expected_def)
def test_create_with_unsupported_attr(self):
name = 'test'
description = 'test_version_support'
@ -4084,6 +4108,26 @@ class TestPolicyTier1Segment(NsxPolicyLibTestCase):
self.assertEqual(gateway_address, subnet.gateway_address)
self.assertEqual(dhcp_ranges, subnet.dhcp_ranges)
def test_build_dhcp_config_v4(self):
server_address = "10.0.0.2/24"
dns_servers = ["10.0.0.3/24"]
lease_time = 36600
dhcp_config_v4 = self.resourceApi.build_dhcp_config_v4(
server_address, dns_servers=dns_servers, lease_time=lease_time)
self.assertEqual(server_address, dhcp_config_v4.server_address)
self.assertEqual(dns_servers, dhcp_config_v4.dns_servers)
self.assertEqual(lease_time, dhcp_config_v4.lease_time)
def test_build_dhcp_config_v6(self):
server_address = "2000::01ab/64"
dns_servers = ["2000::01ac/64"]
lease_time = 36600
dhcp_config_v6 = self.resourceApi.build_dhcp_config_v6(
server_address, dns_servers=dns_servers, lease_time=lease_time)
self.assertEqual(server_address, dhcp_config_v6.server_address)
self.assertEqual(dns_servers, dhcp_config_v6.dns_servers)
self.assertEqual(lease_time, dhcp_config_v6.lease_time)
class TestPolicySegment(NsxPolicyLibTestCase):

View File

@ -1124,7 +1124,8 @@ class NsxPolicyTier1Api(NsxPolicyResourceBase):
route_advertisement_types=route_advertisement_types,
subnets=subnets)
def update_advertisement_rules(self, tier1_id, rules, name_prefix=None,
def update_advertisement_rules(self, tier1_id, rules=None,
name_prefix=None,
tenant=constants.POLICY_INFRA_TENANT):
"""Update the router advertisement rules
@ -1142,8 +1143,9 @@ class NsxPolicyTier1Api(NsxPolicyResourceBase):
if (not rule.get('name') or
not rule['name'].startswith(name_prefix)):
new_rules.append(rule)
# add new rules
new_rules.extend(rules)
# add new rules if provided
if rules:
new_rules.extend(rules)
else:
new_rules = rules
@ -1851,8 +1853,19 @@ class NsxPolicyTier1SegmentApi(NsxPolicyResourceBase):
def entry_def(self):
return core_defs.Tier1SegmentDef
def build_subnet(self, gateway_address, dhcp_ranges=None):
return core_defs.Subnet(gateway_address, dhcp_ranges)
def build_subnet(self, gateway_address, dhcp_ranges=None,
dhcp_config=None):
return core_defs.Subnet(gateway_address, dhcp_ranges, dhcp_config)
def build_dhcp_config_v4(self, server_address, dns_servers=None,
lease_time=None, options=None):
return core_defs.SegmentDhcpConfigV4(server_address, dns_servers,
lease_time, options)
def build_dhcp_config_v6(self, server_address, dns_servers=None,
lease_time=None, domain_names=None):
return core_defs.SegmentDhcpConfigV6(server_address, dns_servers,
lease_time, domain_names)
def create_or_overwrite(self, name, tier1_id,
segment_id=None,
@ -1930,8 +1943,19 @@ class NsxPolicySegmentApi(NsxPolicyResourceBase):
def entry_def(self):
return core_defs.SegmentDef
def build_subnet(self, gateway_address, dhcp_ranges=None):
return core_defs.Subnet(gateway_address, dhcp_ranges)
def build_subnet(self, gateway_address, dhcp_ranges=None,
dhcp_config=None):
return core_defs.Subnet(gateway_address, dhcp_ranges, dhcp_config)
def build_dhcp_config_v4(self, server_address, dns_servers=None,
lease_time=None, options=None):
return core_defs.SegmentDhcpConfigV4(server_address, dns_servers,
lease_time, options)
def build_dhcp_config_v6(self, server_address, dns_servers=None,
lease_time=None, domain_names=None):
return core_defs.SegmentDhcpConfigV6(server_address, dns_servers,
lease_time, domain_names)
def create_or_overwrite(self, name,
segment_id=None,