Allow Transaction for Policy IP Pool Deletion

This patch allows IP Pool to be deleted with transaction, so that the IP
pool can be removed with its child resources (i.e. pool subnets, ip
allocations) in one API call.

Change-Id: I873f7b714a313ff5b512a3898aedab9bd805163b
(cherry picked from commit cf25fb0923)
This commit is contained in:
Shawn Wang 2021-03-30 12:15:07 -07:00
parent 9dd75a8a0a
commit 717b297666
2 changed files with 16 additions and 1 deletions

View File

@ -164,6 +164,21 @@ class TestPolicyTransaction(policy_testcase.TestPolicyApi):
self.assert_infra_patch_call(expected_body)
def test_ip_address_pool_delete(self):
pool = {'id': 'pool1',
'resource_type': 'IpAddressPool'}
with trans.NsxPolicyTransaction():
self.policy_lib.ip_pool.delete(ip_pool_id=pool['id'])
expected_body = {'resource_type': 'Infra',
'children': [{'resource_type': 'ChildIpAddressPool',
'IpAddressPool': pool,
'marked_for_delete': True}]}
self.assert_infra_patch_call(expected_body)
def test_groups_only(self):
g1 = {'resource_type': 'Group', 'id': 'group1',

View File

@ -3220,7 +3220,7 @@ class NsxPolicyIpPoolApi(NsxPolicyResourceBase):
def delete(self, ip_pool_id, tenant=constants.POLICY_INFRA_TENANT):
ip_pool_def = self.entry_def(ip_pool_id=ip_pool_id,
tenant=tenant)
self._delete_with_retry(ip_pool_def)
self._delete_or_store(ip_pool_def)
def get(self, ip_pool_id, tenant=constants.POLICY_INFRA_TENANT,
silent=False):