Merge "Delete network quotas"

This commit is contained in:
Zuul 2020-03-16 02:15:54 +00:00 committed by Gerrit Code Review
commit c34a0599fd
2 changed files with 150 additions and 0 deletions

@ -362,6 +362,25 @@ class NovaQuotaService(BaseService):
self.data['compute_quotas'] = quotas['absolute']
class NetworkQuotaService(BaseService):
def __init__(self, manager, **kwargs):
super(NetworkQuotaService, self).__init__(kwargs)
self.client = manager.network_quotas_client
def delete(self):
client = self.client
try:
client.reset_quotas(self.project_id)
except Exception:
LOG.exception("Delete Network Quotas exception for 'project %s'.",
self.project_id)
def dry_run(self):
resp = [quota for quota in self.client.list_quotas()['quotas']
if quota['project_id'] == self.project_id]
self.data['network_quotas'] = resp
# Begin network service classes
class BaseNetworkService(BaseService):
def __init__(self, manager, **kwargs):
@ -1048,6 +1067,7 @@ def get_resource_cleanup_services():
resource_cleanup_services.append(NetworkService)
resource_cleanup_services.append(NetworkSecGroupService)
resource_cleanup_services.append(NetworkSubnetPoolsService)
resource_cleanup_services.append(NetworkQuotaService)
if IS_CINDER:
resource_cleanup_services.append(SnapshotService)
resource_cleanup_services.append(VolumeService)

@ -196,6 +196,7 @@ class BaseCmdServiceTests(MockFunctionsBase):
is_save_state=is_save_state,
is_preserve=is_preserve,
is_dry_run=is_dry_run,
project_id='b8e3ece07bb049138d224436756e3b57',
data={},
saved_state_json=self.saved_state
)
@ -533,6 +534,135 @@ class TestVolumeService(BaseCmdServiceTests):
self._test_saved_state_true([(self.get_method, self.response, 200)])
class TestVolumeQuotaService(BaseCmdServiceTests):
service_class = 'VolumeQuotaService'
service_name = 'volume_quota_service'
response = {
"quota_set": {
"groups":
{"reserved": 0, "limit": 10, "in_use": 0},
"per_volume_gigabytes":
{"reserved": 0, "limit": -1, "in_use": 0},
"volumes":
{"reserved": 0, "limit": 10, "in_use": 0},
"gigabytes":
{"reserved": 0, "limit": 1000, "in_use": 0},
"backup_gigabytes":
{"reserved": 0, "limit": 1000, "in_use": 0},
"snapshots":
{"reserved": 0, "limit": 10, "in_use": 0},
"volumes_iscsi":
{"reserved": 0, "limit": -1, "in_use": 0},
"snapshots_iscsi":
{"reserved": 0, "limit": -1, "in_use": 0},
"backups":
{"reserved": 0, "limit": 10, "in_use": 0},
"gigabytes_iscsi":
{"reserved": 0, "limit": -1, "in_use": 0},
"id": "b8e3ece07bb049138d224436756e3b57"
}
}
def test_delete_fail(self):
delete_mock = [(self.delete_method, 'error', None),
(self.log_method, 'exception', None)]
self._test_delete(delete_mock, fail=True)
def test_delete_pass(self):
delete_mock = [(self.delete_method, None, 200),
(self.log_method, 'exception', None)]
self._test_delete(delete_mock)
def test_dry_run(self):
dry_mock = [(self.get_method, self.response, 200),
(self.delete_method, "delete", None)]
self._test_dry_run_true(dry_mock)
class TestNovaQuotaService(BaseCmdServiceTests):
service_class = 'NovaQuotaService'
service_name = 'nova_quota_service'
response = {
"limits": {
"rate": [],
"absolute": {
"maxServerMeta": 128,
"maxPersonality": 5,
"totalServerGroupsUsed": 0,
"maxImageMeta": 128,
"maxPersonalitySize": 10240,
"maxTotalKeypairs": 100,
"maxSecurityGroupRules": 20,
"maxServerGroups": 10,
"totalCoresUsed": 0,
"totalRAMUsed": 0,
"totalInstancesUsed": 0,
"maxSecurityGroups": 10,
"totalFloatingIpsUsed": 0,
"maxTotalCores": 20,
"maxServerGroupMembers": 10,
"maxTotalFloatingIps": 10,
"totalSecurityGroupsUsed": 0,
"maxTotalInstances": 10,
"maxTotalRAMSize": 51200
}
}
}
def test_delete_fail(self):
delete_mock = [(self.delete_method, 'error', None),
(self.log_method, 'exception', None)]
self._test_delete(delete_mock, fail=True)
def test_delete_pass(self):
delete_mock = [(self.delete_method, None, 202),
(self.log_method, 'exception', None)]
self._test_delete(delete_mock)
def test_dry_run(self):
dry_mock = [(self.get_method, self.response, 200),
(self.delete_method, "delete", None)]
self._test_dry_run_true(dry_mock)
class TestNetworkQuotaService(BaseCmdServiceTests):
service_class = 'NetworkQuotaService'
service_name = 'network_quota_service'
response = {
"quotas": [{
"subnet": 110,
"network": 100,
"floatingip": 50,
"tenant_id": "81e8490db559474dacb2212fca9cca2d",
"subnetpool": -1,
"security_group_rule": 100,
"trunk": -1,
"security_group": 10,
"router": 10,
"rbac_policy": 10, "project_id":
"81e8490db559474dacb2212fca9cca2d", "port": 500
}]
}
def test_delete_fail(self):
delete_mock = [(self.delete_method, 'error', None),
(self.log_method, 'exception', None)]
self._test_delete(delete_mock, fail=True)
def test_delete_pass(self):
delete_mock = [(self.delete_method, None, 204),
(self.log_method, 'exception', None)]
self._test_delete(delete_mock)
def test_dry_run(self):
dry_mock = [(self.get_method, self.response, 200),
(self.delete_method, "delete", None)]
self._test_dry_run_true(dry_mock)
# Begin network service classes
class TestNetworkService(BaseCmdServiceTests):