def test_nova_quotas(self, mock_quotas, mock_osclients): ctx = copy.deepcopy(self.context) ctx["config"]["quotas"] = { "nova": { "instances": self.unlimited, "cores": self.unlimited, "ram": self.unlimited, "floating-ips": self.unlimited, "fixed-ips": self.unlimited, "metadata_items": self.unlimited, "injected_files": self.unlimited, "injected_file_content_bytes": self.unlimited, "injected_file_path_bytes": self.unlimited, "key_pairs": self.unlimited, "security_groups": self.unlimited, "security_group_rules": self.unlimited, } } tenants = ctx["tenants"] nova_quotas = ctx["config"]["quotas"]["nova"] with quotas.Quotas(ctx) as quotas_ctx: quotas_ctx.setup() expected_setup_calls = [] for tenant in tenants: expected_setup_calls.append(mock.call().update( tenant["id"], **nova_quotas)) mock_quotas.assert_has_calls(expected_setup_calls, any_order=True) mock_quotas.reset_mock() expected_cleanup_calls = [] for tenant in tenants: expected_cleanup_calls.append(mock.call().delete(tenant["id"])) mock_quotas.assert_has_calls(expected_cleanup_calls, any_order=True)
def test_neutron_quotas(self, mock_quotas, mock_osclients): ctx = copy.deepcopy(self.context) ctx["config"]["quotas"] = { "neutron": { "network": self.unlimited, "subnet": self.unlimited, "port": self.unlimited, "router": self.unlimited, "floatingip": self.unlimited, "security_group": self.unlimited, "security_group_rule": self.unlimited } } tenants = ctx["tenants"] neutron_quotas = ctx["config"]["quotas"]["neutron"] with quotas.Quotas(ctx) as quotas_ctx: quotas_ctx.setup() expected_setup_calls = [] for tenant in tenants: expected_setup_calls.append(mock.call().update( tenant["id"], **neutron_quotas)) mock_quotas.assert_has_calls(expected_setup_calls, any_order=True) mock_quotas.reset_mock() expected_cleanup_calls = [] for tenant in tenants: expected_cleanup_calls.append(mock.call().delete(tenant["id"])) mock_quotas.assert_has_calls(expected_cleanup_calls, any_order=True)
def test_cinder_quotas(self, mock_quotas, mock_osclients): ctx = copy.deepcopy(self.context) ctx["config"]["quotas"] = { "cinder": { "volumes": self.unlimited, "snapshots": self.unlimited, "gigabytes": self.unlimited } } tenants = ctx["tenants"] cinder_quotas = ctx["config"]["quotas"]["cinder"] with quotas.Quotas(ctx) as quotas_ctx: quotas_ctx.setup() expected_setup_calls = [] for tenant in tenants: expected_setup_calls.append(mock.call().update( tenant["id"], **cinder_quotas)) mock_quotas.assert_has_calls(expected_setup_calls, any_order=True) mock_quotas.reset_mock() expected_cleanup_calls = [] for tenant in tenants: expected_cleanup_calls.append(mock.call().delete(tenant["id"])) mock_quotas.assert_has_calls(expected_cleanup_calls, any_order=True)
def test_exception_during_cleanup(self, mock_nova_quotas): mock_nova_quotas.delete.side_effect = Exception("boom") ctx = copy.deepcopy(self.context) ctx["config"]["quotas"] = {"nova": {"cpu": 1}} # NOTE(boris-42): ensure that cleanup didn't raise exceptions. quotas.Quotas(ctx).cleanup() self.assertEqual(mock_nova_quotas().delete.call_count, len(self.context["tenants"]))
def test_no_quotas(self, mock_neutron_quotas, mock_cinder_quotas, mock_nova_quotas, mock_osclients): ctx = copy.deepcopy(self.context) if "quotas" in ctx["config"]: del ctx["config"]["quotas"] with quotas.Quotas(ctx) as quotas_ctx: quotas_ctx.setup() self.assertFalse(mock_cinder_quotas.update.called) self.assertFalse(mock_nova_quotas.update.called) self.assertFalse(mock_neutron_quotas.update.called) self.assertFalse(mock_cinder_quotas.delete.called) self.assertFalse(mock_nova_quotas.delete.called) self.assertFalse(mock_neutron_quotas.delete.called)