nova-net: Remove remaining nova-network quotas

The 'security_group_rules' [1], 'floating_ips' [2], 'fixed_ips' [3] and
'security_groups' [4] quotas are all nova-network only and can be
removed or, more specifically, set to unlimited and ignored until we
eventually bump our minimum API microversion.

[1] https://review.opendev.org/477700
[2] https://review.opendev.org/457862
[3] https://review.opendev.org/457861
[4] https://review.opendev.org/457860

Change-Id: I9a5362fdf29e3680c59f620c585f3d730e4f6adb
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
Stephen Finucane 2019-12-02 17:39:23 +00:00
parent 110a683486
commit e10c6125f8
29 changed files with 194 additions and 351 deletions

View File

@ -4,11 +4,11 @@
"maxImageMeta": 128, "maxImageMeta": 128,
"maxPersonality": 5, "maxPersonality": 5,
"maxPersonalitySize": 10240, "maxPersonalitySize": 10240,
"maxSecurityGroupRules": 20, "maxSecurityGroupRules": -1,
"maxSecurityGroups": 10, "maxSecurityGroups": -1,
"maxServerMeta": 128, "maxServerMeta": 128,
"maxTotalCores": 20, "maxTotalCores": 20,
"maxTotalFloatingIps": 10, "maxTotalFloatingIps": -1,
"maxTotalInstances": 10, "maxTotalInstances": 10,
"maxTotalKeypairs": 100, "maxTotalKeypairs": 100,
"maxTotalRAMSize": 51200, "maxTotalRAMSize": 51200,

View File

@ -2,7 +2,7 @@
"quota_class_set": { "quota_class_set": {
"cores": 20, "cores": 20,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": 10, "floating_ips": -1,
"id": "test_class", "id": "test_class",
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
@ -11,7 +11,7 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10 "security_groups": -1
} }
} }

View File

@ -3,14 +3,14 @@
"instances": 50, "instances": 50,
"cores": 50, "cores": 50,
"ram": 51200, "ram": 51200,
"floating_ips": 10, "floating_ips": -1,
"fixed_ips": -1, "fixed_ips": -1,
"metadata_items": 128, "metadata_items": 128,
"injected_files": 5, "injected_files": 5,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
"security_groups": 10, "security_groups": -1,
"security_group_rules": 20, "security_group_rules": -1,
"key_pairs": 100 "key_pairs": 100
} }
} }

View File

@ -2,7 +2,7 @@
"quota_class_set": { "quota_class_set": {
"cores": 50, "cores": 50,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": 10, "floating_ips": -1,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
"injected_files": 5, "injected_files": 5,
@ -10,7 +10,7 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10 "security_groups": -1
} }
} }

View File

@ -2,7 +2,7 @@
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": 10, "floating_ips": -1,
"id": "fake_tenant", "id": "fake_tenant",
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
@ -11,8 +11,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -12,7 +12,7 @@
}, },
"floating_ips": { "floating_ips": {
"in_use": 0, "in_use": 0,
"limit": 10, "limit": -1,
"reserved": 0 "reserved": 0
}, },
"id": "fake_tenant", "id": "fake_tenant",
@ -53,12 +53,12 @@
}, },
"security_group_rules": { "security_group_rules": {
"in_use": 0, "in_use": 0,
"limit": 20, "limit": -1,
"reserved": 0 "reserved": 0
}, },
"security_groups": { "security_groups": {
"in_use": 0, "in_use": 0,
"limit": 10, "limit": -1,
"reserved": 0 "reserved": 0
}, },
"server_group_members": { "server_group_members": {

View File

@ -2,7 +2,7 @@
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": 10, "floating_ips": -1,
"id": "fake_tenant", "id": "fake_tenant",
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
@ -11,8 +11,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -2,7 +2,7 @@
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": 10, "floating_ips": -1,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
"injected_files": 5, "injected_files": 5,
@ -10,8 +10,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -1,5 +1,5 @@
{ {
"quota_set": { "quota_set": {
"security_groups": 45 "cores": 45
} }
} }

View File

@ -1,8 +1,8 @@
{ {
"quota_set": { "quota_set": {
"cores": 20, "cores": 45,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": 10, "floating_ips": -1,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
"injected_files": 5, "injected_files": 5,
@ -10,8 +10,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 45, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -2,7 +2,7 @@
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": 10, "floating_ips": -1,
"id": "fake_tenant", "id": "fake_tenant",
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
@ -11,8 +11,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -2,7 +2,7 @@
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": 10, "floating_ips": -1,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
"injected_files": 5, "injected_files": 5,
@ -10,8 +10,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -61,50 +61,6 @@ The number of megabytes of instance RAM allowed per project.
Possible values: Possible values:
* A positive integer or 0.
* -1 to disable the quota.
"""),
cfg.IntOpt('floating_ips',
min=-1,
default=10,
deprecated_group='DEFAULT',
deprecated_name='quota_floating_ips',
deprecated_for_removal=True,
deprecated_since='15.0.0',
deprecated_reason="""
nova-network is deprecated, as are any related configuration options.
""",
help="""
The number of floating IPs allowed per project.
Floating IPs are not allocated to instances by default. Users need to select
them from the pool configured by the OpenStack administrator to attach to their
instances.
Possible values:
* A positive integer or 0.
* -1 to disable the quota.
"""),
cfg.IntOpt('fixed_ips',
min=-1,
default=-1,
deprecated_group='DEFAULT',
deprecated_name='quota_fixed_ips',
deprecated_for_removal=True,
deprecated_since='15.0.0',
deprecated_reason="""
nova-network is deprecated, as are any related configuration options.
""",
help="""
The number of fixed IPs allowed per project.
Unlike floating IPs, fixed IPs are allocated dynamically by the network
component when instances boot up. This quota value should be at least the
number of instances allowed
Possible values:
* A positive integer or 0. * A positive integer or 0.
* -1 to disable the quota. * -1 to disable the quota.
"""), """),
@ -166,45 +122,6 @@ The maximum allowed injected file path length.
Possible values: Possible values:
* A positive integer or 0.
* -1 to disable the quota.
"""),
cfg.IntOpt('security_groups',
min=-1,
default=10,
deprecated_group='DEFAULT',
deprecated_name='quota_security_groups',
deprecated_for_removal=True,
deprecated_since='15.0.0',
deprecated_reason="""
nova-network is deprecated, as are any related configuration options.
""",
help="""
The number of security groups per project.
Possible values:
* A positive integer or 0.
* -1 to disable the quota.
"""),
cfg.IntOpt('security_group_rules',
min=-1,
default=20,
deprecated_group='DEFAULT',
deprecated_name='quota_security_group_rules',
deprecated_for_removal=True,
deprecated_since='15.0.0',
deprecated_reason="""
nova-network is deprecated, as are any related configuration options.
""",
help="""
The number of security rules per security group.
The associated rules in each security group control the traffic to instances in
the group.
Possible values:
* A positive integer or 0. * A positive integer or 0.
* -1 to disable the quota. * -1 to disable the quota.
"""), """),

View File

@ -160,8 +160,7 @@ class DbQuotaDriver(object):
for example: for example:
{'project_id': 'project-uuid', {'project_id': 'project-uuid',
'user_id': 'user-uuid', 'user_id': 'user-uuid',
'instances': {'in_use': 5}, 'instances': {'in_use': 5}}
'fixed_ips': {'in_use': 5}}
""" """
usages = {} usages = {}
for resource in resources.values(): for resource in resources.values():
@ -176,8 +175,7 @@ class DbQuotaDriver(object):
# of multiple times). So, a count of any one of them contains # of multiple times). So, a count of any one of them contains
# counts for the others and we can avoid re-counting things. # counts for the others and we can avoid re-counting things.
continue continue
if resource.name in ('key_pairs', 'server_group_members', if resource.name in ('key_pairs', 'server_group_members'):
'security_group_rules'):
# These per user resources are special cases whose usages # These per user resources are special cases whose usages
# are not considered when validating limit create/update or # are not considered when validating limit create/update or
# displaying used limits. They are always zero. # displaying used limits. They are always zero.
@ -546,7 +544,7 @@ class DbQuotaDriver(object):
# together. # together.
# per project quota limits (quotas that have no concept of # per project quota limits (quotas that have no concept of
# user-scoping: fixed_ips, floating_ips) # user-scoping: <none>)
project_quotas = objects.Quotas.get_all_by_project(context, project_id) project_quotas = objects.Quotas.get_all_by_project(context, project_id)
# per user quotas, project quota limits (for quotas that have # per user quotas, project quota limits (for quotas that have
# user-scoping, limits for the project) # user-scoping, limits for the project)
@ -586,9 +584,9 @@ class DbQuotaDriver(object):
headroom=headroom) headroom=headroom)
# This is for resources that are counted across a project and # This is for resources that are counted across a project and
# across a user (instances, cores, ram, security_groups, # across a user (instances, cores, ram, server_groups). The
# server_groups). The project_values must pass the quota for the # project_values must pass the quota for the project and the
# project and the user_values must pass the quota for the user. # user_values must pass the quota for the user.
over_user_quota = False over_user_quota = False
overs = [] overs = []
for key in user_values.keys(): for key in user_values.keys():
@ -613,10 +611,8 @@ class DbQuotaDriver(object):
class NoopQuotaDriver(object): class NoopQuotaDriver(object):
"""Driver that turns quotas calls into no-ops and pretends that quotas """Driver that turns quotas calls into no-ops and pretends that quotas
for all resources are unlimited. This can be used if you do not for all resources are unlimited. This can be used if you do not
wish to have any quota checking. For instance, with nova compute wish to have any quota checking.
cells, the parent cell should do quota checking, but the child cell
should not.
""" """
def get_defaults(self, context, resources): def get_defaults(self, context, resources):
@ -808,8 +804,7 @@ class CountableResource(AbsoluteResource):
Countable resources are those resources which directly Countable resources are those resources which directly
correspond to objects in the database, but for which a count correspond to objects in the database, but for which a count
by project ID is inappropriate e.g. security_group_rules, by project ID is inappropriate e.g. keypairs
keypairs, etc.
A CountableResource must be constructed with a counting A CountableResource must be constructed with a counting
function, which will be called to determine the current counts function, which will be called to determine the current counts
of the resource. of the resource.
@ -1102,23 +1097,6 @@ def _keypair_get_count_by_user(context, user_id):
return {'user': {'key_pairs': count}} return {'user': {'key_pairs': count}}
def _security_group_count(context, project_id, user_id=None):
"""Get the counts of security groups in the database.
:param context: The request context for database access
:param project_id: The project_id to count across
:param user_id: The user_id to count across
:returns: A dict containing the project-scoped counts and user-scoped
counts if user_id is specified. For example:
{'project': {'security_groups': <count across project>},
'user': {'security_groups': <count across user>}}
"""
# NOTE(melwitt): This assumes a single cell.
return objects.SecurityGroupList.get_counts(context, project_id,
user_id=user_id)
def _server_group_count_members_by_user_legacy(context, group, user_id): def _server_group_count_members_by_user_legacy(context, group, user_id):
# NOTE(melwitt): This is mostly duplicated from # NOTE(melwitt): This is mostly duplicated from
# InstanceGroup.count_members_by_user() to query across multiple cells. # InstanceGroup.count_members_by_user() to query across multiple cells.
@ -1189,18 +1167,6 @@ def _server_group_count_members_by_user(context, group, user_id):
user_id) user_id)
def _fixed_ip_count(context, project_id):
# NOTE(melwitt): This assumes a single cell.
count = objects.FixedIPList.get_count_by_project(context, project_id)
return {'project': {'fixed_ips': count}}
def _floating_ip_count(context, project_id):
# NOTE(melwitt): This assumes a single cell.
count = objects.FloatingIPList.get_count_by_project(context, project_id)
return {'project': {'floating_ips': count}}
def _instances_cores_ram_count_legacy(context, project_id, user_id=None): def _instances_cores_ram_count_legacy(context, project_id, user_id=None):
"""Get the counts of instances, cores, and ram in cell databases. """Get the counts of instances, cores, and ram in cell databases.
@ -1323,15 +1289,6 @@ def _server_group_count(context, project_id, user_id=None):
user_id=user_id) user_id=user_id)
def _security_group_rule_count_by_group(context, security_group_id):
count = db.security_group_rule_count_by_group(context, security_group_id)
# NOTE(melwitt): Neither 'project' nor 'user' fit perfectly here as
# security group rules are counted per security group, not by user or
# project. But, the quota limits for security_group_rules can be scoped to
# a user, so we'll use 'user' here.
return {'user': {'security_group_rules': count}}
QUOTAS = QuotaEngine( QUOTAS = QuotaEngine(
resources=[ resources=[
CountableResource( CountableResource(
@ -1340,12 +1297,6 @@ QUOTAS = QuotaEngine(
'cores', _instances_cores_ram_count, 'cores'), 'cores', _instances_cores_ram_count, 'cores'),
CountableResource( CountableResource(
'ram', _instances_cores_ram_count, 'ram'), 'ram', _instances_cores_ram_count, 'ram'),
CountableResource(
'security_groups', _security_group_count, 'security_groups'),
CountableResource(
'fixed_ips', _fixed_ip_count, 'fixed_ips'),
CountableResource(
'floating_ips', _floating_ip_count, 'floating_ips'),
AbsoluteResource( AbsoluteResource(
'metadata_items', 'metadata_items'), 'metadata_items', 'metadata_items'),
AbsoluteResource( AbsoluteResource(
@ -1354,9 +1305,6 @@ QUOTAS = QuotaEngine(
'injected_file_content_bytes', 'injected_file_content_bytes'), 'injected_file_content_bytes', 'injected_file_content_bytes'),
AbsoluteResource( AbsoluteResource(
'injected_file_path_bytes', 'injected_file_path_length'), 'injected_file_path_bytes', 'injected_file_path_length'),
CountableResource(
'security_group_rules', _security_group_rule_count_by_group,
'security_group_rules'),
CountableResource( CountableResource(
'key_pairs', _keypair_get_count_by_user, 'key_pairs'), 'key_pairs', _keypair_get_count_by_user, 'key_pairs'),
CountableResource( CountableResource(
@ -1364,6 +1312,12 @@ QUOTAS = QuotaEngine(
CountableResource( CountableResource(
'server_group_members', _server_group_count_members_by_user, 'server_group_members', _server_group_count_members_by_user,
'server_group_members'), 'server_group_members'),
# Deprecated nova-network quotas, retained to avoid changing API
# responses
AbsoluteResource('fixed_ips'),
AbsoluteResource('floating_ips'),
AbsoluteResource('security_groups'),
AbsoluteResource('security_group_rules'),
], ],
) )

View File

@ -6,12 +6,12 @@
"maxPersonalitySize": 10240, "maxPersonalitySize": 10240,
"maxServerMeta": 128, "maxServerMeta": 128,
"maxTotalCores": 20, "maxTotalCores": 20,
"maxTotalFloatingIps": 10, "maxTotalFloatingIps": -1,
"maxTotalInstances": 10, "maxTotalInstances": 10,
"maxTotalKeypairs": 100, "maxTotalKeypairs": 100,
"maxTotalRAMSize": 51200, "maxTotalRAMSize": 51200,
"maxSecurityGroups": 10, "maxSecurityGroups": -1,
"maxSecurityGroupRules": 20, "maxSecurityGroupRules": -1,
"maxServerGroups": 10, "maxServerGroups": 10,
"maxServerGroupMembers": 10, "maxServerGroupMembers": 10,
"totalCoresUsed": 0, "totalCoresUsed": 0,

View File

@ -1,7 +1,7 @@
{ {
"quota_class_set": { "quota_class_set": {
"cores": 20, "cores": 20,
"floating_ips": 10, "floating_ips": -1,
"fixed_ips": -1, "fixed_ips": -1,
"id": "%(set_id)s", "id": "%(set_id)s",
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
@ -11,7 +11,7 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10 "security_groups": -1
} }
} }

View File

@ -3,14 +3,14 @@
"instances": 50, "instances": 50,
"cores": 50, "cores": 50,
"ram": 51200, "ram": 51200,
"floating_ips": 10, "floating_ips": -1,
"fixed_ips": -1, "fixed_ips": -1,
"metadata_items": 128, "metadata_items": 128,
"injected_files": 5, "injected_files": 5,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
"security_groups": 10, "security_groups": -1,
"security_group_rules": 20, "security_group_rules": -1,
"key_pairs": 100 "key_pairs": 100
} }
} }

View File

@ -1,7 +1,7 @@
{ {
"quota_class_set": { "quota_class_set": {
"cores": 50, "cores": 50,
"floating_ips": 10, "floating_ips": -1,
"fixed_ips": -1, "fixed_ips": -1,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
@ -10,7 +10,7 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10 "security_groups": -1
} }
} }

View File

@ -1,7 +1,7 @@
{ {
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"floating_ips": 10, "floating_ips": -1,
"fixed_ips": -1, "fixed_ips": -1,
"id": "fake_tenant", "id": "fake_tenant",
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
@ -11,8 +11,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -12,7 +12,7 @@
}, },
"floating_ips": { "floating_ips": {
"in_use": 0, "in_use": 0,
"limit": 10, "limit": -1,
"reserved": 0 "reserved": 0
}, },
"id": "fake_tenant", "id": "fake_tenant",
@ -53,12 +53,12 @@
}, },
"security_group_rules": { "security_group_rules": {
"in_use": 0, "in_use": 0,
"limit": 20, "limit": -1,
"reserved": 0 "reserved": 0
}, },
"security_groups": { "security_groups": {
"in_use": 0, "in_use": 0,
"limit": 10, "limit": -1,
"reserved": 0 "reserved": 0
}, },
"server_group_members": { "server_group_members": {

View File

@ -1,8 +1,8 @@
{ {
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"floating_ips": 10,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": -1,
"id": "fake_tenant", "id": "fake_tenant",
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
@ -11,8 +11,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -2,7 +2,7 @@
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"fixed_ips": -1, "fixed_ips": -1,
"floating_ips": 10, "floating_ips": -1,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
"injected_files": 5, "injected_files": 5,
@ -10,8 +10,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -1,5 +1,5 @@
{ {
"quota_set": { "quota_set": {
"security_groups": 45 "cores": 45
} }
} }

View File

@ -1,7 +1,7 @@
{ {
"quota_set": { "quota_set": {
"cores": 20, "cores": 45,
"floating_ips": 10, "floating_ips": -1,
"fixed_ips": -1, "fixed_ips": -1,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
@ -10,8 +10,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 45, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -1,7 +1,7 @@
{ {
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"floating_ips": 10, "floating_ips": -1,
"fixed_ips": -1, "fixed_ips": -1,
"id": "fake_tenant", "id": "fake_tenant",
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
@ -11,8 +11,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -1,7 +1,7 @@
{ {
"quota_set": { "quota_set": {
"cores": 20, "cores": 20,
"floating_ips": 10, "floating_ips": -1,
"fixed_ips": -1, "fixed_ips": -1,
"injected_file_content_bytes": 10240, "injected_file_content_bytes": 10240,
"injected_file_path_bytes": 255, "injected_file_path_bytes": 255,
@ -10,8 +10,8 @@
"key_pairs": 100, "key_pairs": 100,
"metadata_items": 128, "metadata_items": 128,
"ram": 51200, "ram": 51200,
"security_group_rules": 20, "security_group_rules": -1,
"security_groups": 10, "security_groups": -1,
"server_groups": 10, "server_groups": 10,
"server_group_members": 10 "server_group_members": 10
} }

View File

@ -26,12 +26,12 @@ class QuotaClassSetsTestV21(test.TestCase):
validation_error = exception.ValidationError validation_error = exception.ValidationError
api_version = '2.1' api_version = '2.1'
quota_resources = {'metadata_items': 128, quota_resources = {'metadata_items': 128,
'ram': 51200, 'floating_ips': 10, 'ram': 51200, 'floating_ips': -1,
'fixed_ips': -1, 'instances': 10, 'fixed_ips': -1, 'instances': 10,
'injected_files': 5, 'cores': 20, 'injected_files': 5, 'cores': 20,
'injected_file_content_bytes': 10240, 'injected_file_content_bytes': 10240,
'security_groups': 10, 'security_groups': -1,
'security_group_rules': 20, 'key_pairs': 100, 'security_group_rules': -1, 'key_pairs': 100,
'injected_file_path_bytes': 255} 'injected_file_path_bytes': 255}
filtered_quotas = None filtered_quotas = None
@ -51,10 +51,10 @@ class QuotaClassSetsTestV21(test.TestCase):
def _check_filtered_extended_quota(self, quota_set): def _check_filtered_extended_quota(self, quota_set):
self.assertNotIn('server_groups', quota_set) self.assertNotIn('server_groups', quota_set)
self.assertNotIn('server_group_members', quota_set) self.assertNotIn('server_group_members', quota_set)
self.assertEqual(10, quota_set['floating_ips']) self.assertEqual(-1, quota_set['floating_ips'])
self.assertEqual(-1, quota_set['fixed_ips']) self.assertEqual(-1, quota_set['fixed_ips'])
self.assertEqual(10, quota_set['security_groups']) self.assertEqual(-1, quota_set['security_groups'])
self.assertEqual(20, quota_set['security_group_rules']) self.assertEqual(-1, quota_set['security_group_rules'])
def test_format_quota_set(self): def test_format_quota_set(self):
quota_set = self.controller._format_quota_set('test_class', quota_set = self.controller._format_quota_set('test_class',

View File

@ -27,10 +27,10 @@ from nova.tests.unit.api.openstack import fakes
def quota_set(id, include_server_group_quotas=True): def quota_set(id, include_server_group_quotas=True):
res = {'quota_set': {'id': id, 'metadata_items': 128, res = {'quota_set': {'id': id, 'metadata_items': 128,
'ram': 51200, 'floating_ips': 10, 'fixed_ips': -1, 'ram': 51200, 'floating_ips': -1, 'fixed_ips': -1,
'instances': 10, 'injected_files': 5, 'cores': 20, 'instances': 10, 'injected_files': 5, 'cores': 20,
'injected_file_content_bytes': 10240, 'injected_file_content_bytes': 10240,
'security_groups': 10, 'security_group_rules': 20, 'security_groups': -1, 'security_group_rules': -1,
'key_pairs': 100, 'injected_file_path_bytes': 255}} 'key_pairs': 100, 'injected_file_path_bytes': 255}}
if include_server_group_quotas: if include_server_group_quotas:
res['quota_set']['server_groups'] = 10 res['quota_set']['server_groups'] = 10
@ -66,14 +66,14 @@ class QuotaSetsTestV21(BaseQuotaSetsTest):
'instances': 10, 'instances': 10,
'cores': 20, 'cores': 20,
'ram': 51200, 'ram': 51200,
'floating_ips': 10, 'floating_ips': -1,
'fixed_ips': -1, 'fixed_ips': -1,
'metadata_items': 128, 'metadata_items': 128,
'injected_files': 5, 'injected_files': 5,
'injected_file_path_bytes': 255, 'injected_file_path_bytes': 255,
'injected_file_content_bytes': 10240, 'injected_file_content_bytes': 10240,
'security_groups': 10, 'security_groups': -1,
'security_group_rules': 20, 'security_group_rules': -1,
'key_pairs': 100, 'key_pairs': 100,
} }
if self.include_server_group_quotas: if self.include_server_group_quotas:
@ -96,14 +96,14 @@ class QuotaSetsTestV21(BaseQuotaSetsTest):
self.assertEqual(qs['instances'], 10) self.assertEqual(qs['instances'], 10)
self.assertEqual(qs['cores'], 20) self.assertEqual(qs['cores'], 20)
self.assertEqual(qs['ram'], 51200) self.assertEqual(qs['ram'], 51200)
self.assertEqual(qs['floating_ips'], 10) self.assertEqual(qs['floating_ips'], -1)
self.assertEqual(qs['fixed_ips'], -1) self.assertEqual(qs['fixed_ips'], -1)
self.assertEqual(qs['metadata_items'], 128) self.assertEqual(qs['metadata_items'], 128)
self.assertEqual(qs['injected_files'], 5) self.assertEqual(qs['injected_files'], 5)
self.assertEqual(qs['injected_file_path_bytes'], 255) self.assertEqual(qs['injected_file_path_bytes'], 255)
self.assertEqual(qs['injected_file_content_bytes'], 10240) self.assertEqual(qs['injected_file_content_bytes'], 10240)
self.assertEqual(qs['security_groups'], 10) self.assertEqual(qs['security_groups'], -1)
self.assertEqual(qs['security_group_rules'], 20) self.assertEqual(qs['security_group_rules'], -1)
self.assertEqual(qs['key_pairs'], 100) self.assertEqual(qs['key_pairs'], 100)
if self.include_server_group_quotas: if self.include_server_group_quotas:
self.assertEqual(qs['server_groups'], 10) self.assertEqual(qs['server_groups'], 10)
@ -212,13 +212,13 @@ class QuotaSetsTestV21(BaseQuotaSetsTest):
def test_quotas_update_zero_value(self): def test_quotas_update_zero_value(self):
body = {'quota_set': {'instances': 0, 'cores': 0, body = {'quota_set': {'instances': 0, 'cores': 0,
'ram': 0, 'floating_ips': 0, 'ram': 0, 'floating_ips': -1,
'metadata_items': 0, 'metadata_items': 0,
'injected_files': 0, 'injected_files': 0,
'injected_file_content_bytes': 0, 'injected_file_content_bytes': 0,
'injected_file_path_bytes': 0, 'injected_file_path_bytes': 0,
'security_groups': 0, 'security_groups': -1,
'security_group_rules': 0, 'security_group_rules': -1,
'key_pairs': 100, 'fixed_ips': -1}} 'key_pairs': 100, 'fixed_ips': -1}}
if self.include_server_group_quotas: if self.include_server_group_quotas:
body['quota_set']['server_groups'] = 10 body['quota_set']['server_groups'] = 10
@ -437,13 +437,13 @@ class UserQuotasTestV21(BaseQuotaSetsTest):
def test_user_quotas_update(self): def test_user_quotas_update(self):
body = {'quota_set': {'instances': 10, 'cores': 20, body = {'quota_set': {'instances': 10, 'cores': 20,
'ram': 51200, 'floating_ips': 10, 'ram': 51200, 'floating_ips': -1,
'fixed_ips': -1, 'metadata_items': 128, 'fixed_ips': -1, 'metadata_items': 128,
'injected_files': 5, 'injected_files': 5,
'injected_file_content_bytes': 10240, 'injected_file_content_bytes': 10240,
'injected_file_path_bytes': 255, 'injected_file_path_bytes': 255,
'security_groups': 10, 'security_groups': -1,
'security_group_rules': 20, 'security_group_rules': -1,
'key_pairs': 100}} 'key_pairs': 100}}
if self.include_server_group_quotas: if self.include_server_group_quotas:
body['quota_set']['server_groups'] = 10 body['quota_set']['server_groups'] = 10
@ -578,7 +578,7 @@ class QuotaSetsTestV236(test.NoDBTestCase):
self.quotas = { self.quotas = {
'cores': {'limit': 20}, 'cores': {'limit': 20},
'fixed_ips': {'limit': -1}, 'fixed_ips': {'limit': -1},
'floating_ips': {'limit': 10}, 'floating_ips': {'limit': -1},
'injected_file_content_bytes': {'limit': 10240}, 'injected_file_content_bytes': {'limit': 10240},
'injected_file_path_bytes': {'limit': 255}, 'injected_file_path_bytes': {'limit': 255},
'injected_files': {'limit': 5}, 'injected_files': {'limit': 5},
@ -586,15 +586,15 @@ class QuotaSetsTestV236(test.NoDBTestCase):
'key_pairs': {'limit': 100}, 'key_pairs': {'limit': 100},
'metadata_items': {'limit': 128}, 'metadata_items': {'limit': 128},
'ram': {'limit': 51200}, 'ram': {'limit': 51200},
'security_group_rules': {'limit': 20}, 'security_group_rules': {'limit': -1},
'security_groups': {'limit': 10}, 'security_groups': {'limit': -1},
'server_group_members': {'limit': 10}, 'server_group_members': {'limit': 10},
'server_groups': {'limit': 10} 'server_groups': {'limit': 10}
} }
self.defaults = { self.defaults = {
'cores': 20, 'cores': 20,
'fixed_ips': -1, 'fixed_ips': -1,
'floating_ips': 10, 'floating_ips': -1,
'injected_file_content_bytes': 10240, 'injected_file_content_bytes': 10240,
'injected_file_path_bytes': 255, 'injected_file_path_bytes': 255,
'injected_files': 5, 'injected_files': 5,
@ -602,8 +602,8 @@ class QuotaSetsTestV236(test.NoDBTestCase):
'key_pairs': 100, 'key_pairs': 100,
'metadata_items': 128, 'metadata_items': 128,
'ram': 51200, 'ram': 51200,
'security_group_rules': 20, 'security_group_rules': -1,
'security_groups': 10, 'security_groups': -1,
'server_group_members': 10, 'server_group_members': 10,
'server_groups': 10 'server_groups': 10
} }

View File

@ -36,10 +36,8 @@ def _get_fake_get_usages(updates=None):
# These values are not realistic (they should all be 0) and are # These values are not realistic (they should all be 0) and are
# only for testing that countable usages get included in the # only for testing that countable usages get included in the
# results. # results.
usages = {'security_group_rules': {'in_use': 1}, usages = {'key_pairs': {'in_use': 2},
'key_pairs': {'in_use': 2},
'server_group_members': {'in_use': 3}, 'server_group_members': {'in_use': 3},
'floating_ips': {'in_use': 2},
'instances': {'in_use': 2}, 'instances': {'in_use': 2},
'cores': {'in_use': 4}, 'cores': {'in_use': 4},
'ram': {'in_use': 10 * 1024}} 'ram': {'in_use': 10 * 1024}}
@ -503,14 +501,10 @@ class DbQuotaDriverTestCase(test.TestCase):
self.flags(instances=10, self.flags(instances=10,
cores=20, cores=20,
ram=50 * 1024, ram=50 * 1024,
floating_ips=10,
fixed_ips=10,
metadata_items=128, metadata_items=128,
injected_files=5, injected_files=5,
injected_file_content_bytes=10 * 1024, injected_file_content_bytes=10 * 1024,
injected_file_path_length=255, injected_file_path_length=255,
security_groups=10,
security_group_rules=20,
server_groups=10, server_groups=10,
server_group_members=10, server_group_members=10,
group='quota' group='quota'
@ -531,17 +525,17 @@ class DbQuotaDriverTestCase(test.TestCase):
instances=5, instances=5,
cores=20, cores=20,
ram=25 * 1024, ram=25 * 1024,
floating_ips=10,
fixed_ips=10,
metadata_items=64, metadata_items=64,
injected_files=5, injected_files=5,
injected_file_content_bytes=5 * 1024, injected_file_content_bytes=5 * 1024,
injected_file_path_bytes=255, injected_file_path_bytes=255,
security_groups=10,
security_group_rules=20,
key_pairs=100, key_pairs=100,
server_groups=10, server_groups=10,
server_group_members=10, server_group_members=10,
security_groups=-1,
security_group_rules=-1,
fixed_ips=-1,
floating_ips=-1,
)) ))
def _stub_quota_class_get_default(self): def _stub_quota_class_get_default(self):
@ -579,17 +573,17 @@ class DbQuotaDriverTestCase(test.TestCase):
instances=5, instances=5,
cores=20, cores=20,
ram=25 * 1024, ram=25 * 1024,
floating_ips=10,
fixed_ips=10,
metadata_items=64, metadata_items=64,
injected_files=5, injected_files=5,
injected_file_content_bytes=5 * 1024, injected_file_content_bytes=5 * 1024,
injected_file_path_bytes=255, injected_file_path_bytes=255,
security_groups=10,
security_group_rules=20,
key_pairs=100, key_pairs=100,
server_groups=10, server_groups=10,
server_group_members=10, server_group_members=10,
floating_ips=-1,
fixed_ips=-1,
security_groups=-1,
security_group_rules=-1,
)) ))
def _stub_get_by_project_and_user(self): def _stub_get_by_project_and_user(self):
@ -624,10 +618,6 @@ class DbQuotaDriverTestCase(test.TestCase):
return {'project': {'instances': 2, 'cores': 4, 'ram': 1024}, return {'project': {'instances': 2, 'cores': 4, 'ram': 1024},
'user': {'instances': 1, 'cores': 2, 'ram': 512}} 'user': {'instances': 1, 'cores': 2, 'ram': 512}}
def fake_security_group_count(*a, **k):
return {'project': {'security_groups': 2},
'user': {'security_groups': 1}}
def fake_server_group_count(*a, **k): def fake_server_group_count(*a, **k):
return {'project': {'server_groups': 5}, return {'project': {'server_groups': 5},
'user': {'server_groups': 3}} 'user': {'server_groups': 3}}
@ -642,23 +632,17 @@ class DbQuotaDriverTestCase(test.TestCase):
'cores', fake_instances_cores_ram_count, 'cores') 'cores', fake_instances_cores_ram_count, 'cores')
resources['ram'] = quota.CountableResource( resources['ram'] = quota.CountableResource(
'ram', fake_instances_cores_ram_count, 'ram') 'ram', fake_instances_cores_ram_count, 'ram')
resources['security_groups'] = quota.CountableResource(
'security_groups', fake_security_group_count, 'security_groups')
resources['floating_ips'] = quota.CountableResource(
'floating_ips', lambda *a, **k: {'project': {'floating_ips': 4}},
'floating_ips')
resources['fixed_ips'] = quota.CountableResource(
'fixed_ips', lambda *a, **k: {'project': {'fixed_ips': 5}},
'fixed_ips')
resources['server_groups'] = quota.CountableResource( resources['server_groups'] = quota.CountableResource(
'server_groups', fake_server_group_count, 'server_groups') 'server_groups', fake_server_group_count, 'server_groups')
resources['server_group_members'] = quota.CountableResource( resources['server_group_members'] = quota.CountableResource(
'server_group_members', 'server_group_members',
lambda *a, **k: {'user': {'server_group_members': 7}}, lambda *a, **k: {'user': {'server_group_members': 7}},
'server_group_members') 'server_group_members')
resources['security_group_rules'] = quota.CountableResource( resources['floating_ips'] = quota.AbsoluteResource('floating_ips')
'security_group_rules', resources['fixed_ips'] = quota.AbsoluteResource('fixed_ips')
lambda *a, **k: {'project': {'security_group_rules': 8}}, resources['security_groups'] = quota.AbsoluteResource(
'security_groups')
resources['security_group_rules'] = quota.AbsoluteResource(
'security_group_rules') 'security_group_rules')
return resources return resources
@ -673,12 +657,8 @@ class DbQuotaDriverTestCase(test.TestCase):
'instances': {'in_use': 2}, 'instances': {'in_use': 2},
'cores': {'in_use': 4}, 'cores': {'in_use': 4},
'ram': {'in_use': 1024}, 'ram': {'in_use': 1024},
'security_groups': {'in_use': 2},
'floating_ips': {'in_use': 4},
'fixed_ips': {'in_use': 5},
'server_groups': {'in_use': 5}, 'server_groups': {'in_use': 5},
'server_group_members': {'in_use': 0}, 'server_group_members': {'in_use': 0}}
'security_group_rules': {'in_use': 0}}
self.assertEqual(expected, actual) self.assertEqual(expected, actual)
def test_get_usages_for_user(self): def test_get_usages_for_user(self):
@ -692,12 +672,8 @@ class DbQuotaDriverTestCase(test.TestCase):
'instances': {'in_use': 1}, 'instances': {'in_use': 1},
'cores': {'in_use': 2}, 'cores': {'in_use': 2},
'ram': {'in_use': 512}, 'ram': {'in_use': 512},
'security_groups': {'in_use': 1},
'floating_ips': {'in_use': 4},
'fixed_ips': {'in_use': 5},
'server_groups': {'in_use': 3}, 'server_groups': {'in_use': 3},
'server_group_members': {'in_use': 0}, 'server_group_members': {'in_use': 0}}
'security_group_rules': {'in_use': 0}}
self.assertEqual(expected, actual) self.assertEqual(expected, actual)
@mock.patch('nova.quota.DbQuotaDriver._get_usages', @mock.patch('nova.quota.DbQuotaDriver._get_usages',
@ -731,11 +707,11 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=10 * 1024, in_use=10 * 1024,
), ),
floating_ips=dict( floating_ips=dict(
limit=10, limit=-1,
in_use=2, in_use=0,
), ),
fixed_ips=dict( fixed_ips=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
metadata_items=dict( metadata_items=dict(
@ -755,12 +731,12 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=0, in_use=0,
), ),
security_groups=dict( security_groups=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
security_group_rules=dict( security_group_rules=dict(
limit=20, limit=-1,
in_use=1, in_use=0,
), ),
key_pairs=dict( key_pairs=dict(
limit=100, limit=100,
@ -841,11 +817,11 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=10 * 1024, in_use=10 * 1024,
), ),
floating_ips=dict( floating_ips=dict(
limit=10, limit=-1,
in_use=2, in_use=0,
), ),
fixed_ips=dict( fixed_ips=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
metadata_items=dict( metadata_items=dict(
@ -865,12 +841,12 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=0, in_use=0,
), ),
security_groups=dict( security_groups=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
security_group_rules=dict( security_group_rules=dict(
limit=20, limit=-1,
in_use=1, in_use=0,
), ),
key_pairs=dict( key_pairs=dict(
limit=100, limit=100,
@ -920,14 +896,14 @@ class DbQuotaDriverTestCase(test.TestCase):
remains=25 * 1024, remains=25 * 1024,
), ),
floating_ips=dict( floating_ips=dict(
limit=10, limit=-1,
in_use=2, in_use=0,
remains=10, remains=-1,
), ),
fixed_ips=dict( fixed_ips=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
remains=10, remains=-1,
), ),
metadata_items=dict( metadata_items=dict(
limit=64, limit=64,
@ -950,14 +926,14 @@ class DbQuotaDriverTestCase(test.TestCase):
remains=127, remains=127,
), ),
security_groups=dict( security_groups=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
remains=10, remains=-1,
), ),
security_group_rules=dict( security_group_rules=dict(
limit=20, limit=-1,
in_use=1, in_use=0,
remains=20, remains=-1,
), ),
key_pairs=dict( key_pairs=dict(
limit=100, limit=100,
@ -1006,11 +982,11 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=10 * 1024, in_use=10 * 1024,
), ),
floating_ips=dict( floating_ips=dict(
limit=10, limit=-1,
in_use=2, in_use=0,
), ),
fixed_ips=dict( fixed_ips=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
metadata_items=dict( metadata_items=dict(
@ -1030,12 +1006,12 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=0, in_use=0,
), ),
security_groups=dict( security_groups=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
security_group_rules=dict( security_group_rules=dict(
limit=20, limit=-1,
in_use=1, in_use=0,
), ),
key_pairs=dict( key_pairs=dict(
limit=100, limit=100,
@ -1080,11 +1056,11 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=10 * 1024, in_use=10 * 1024,
), ),
floating_ips=dict( floating_ips=dict(
limit=10, limit=-1,
in_use=2, in_use=0,
), ),
fixed_ips=dict( fixed_ips=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
metadata_items=dict( metadata_items=dict(
@ -1104,12 +1080,12 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=0, in_use=0,
), ),
security_groups=dict( security_groups=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
security_group_rules=dict( security_group_rules=dict(
limit=20, limit=-1,
in_use=1, in_use=0,
), ),
key_pairs=dict( key_pairs=dict(
limit=100, limit=100,
@ -1157,11 +1133,11 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=10 * 1024, in_use=10 * 1024,
), ),
floating_ips=dict( floating_ips=dict(
limit=10, limit=-1,
in_use=2, in_use=0,
), ),
fixed_ips=dict( fixed_ips=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
metadata_items=dict( metadata_items=dict(
@ -1181,12 +1157,12 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=0, in_use=0,
), ),
security_groups=dict( security_groups=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
security_group_rules=dict( security_group_rules=dict(
limit=20, limit=-1,
in_use=1, in_use=0,
), ),
key_pairs=dict( key_pairs=dict(
limit=100, limit=100,
@ -1233,11 +1209,11 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=10 * 1024, in_use=10 * 1024,
), ),
floating_ips=dict( floating_ips=dict(
limit=10, limit=-1,
in_use=2, in_use=0,
), ),
fixed_ips=dict( fixed_ips=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
metadata_items=dict( metadata_items=dict(
@ -1257,12 +1233,12 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use=0, in_use=0,
), ),
security_groups=dict( security_groups=dict(
limit=10, limit=-1,
in_use=0, in_use=0,
), ),
security_group_rules=dict( security_group_rules=dict(
limit=20, limit=-1,
in_use=1, in_use=0,
), ),
key_pairs=dict( key_pairs=dict(
limit=100, limit=100,
@ -1300,10 +1276,10 @@ class DbQuotaDriverTestCase(test.TestCase):
limit=25 * 1024, limit=25 * 1024,
), ),
floating_ips=dict( floating_ips=dict(
limit=10, limit=-1,
), ),
fixed_ips=dict( fixed_ips=dict(
limit=10, limit=-1,
), ),
metadata_items=dict( metadata_items=dict(
limit=64, limit=64,
@ -1318,10 +1294,10 @@ class DbQuotaDriverTestCase(test.TestCase):
limit=127, limit=127,
), ),
security_groups=dict( security_groups=dict(
limit=10, limit=-1,
), ),
security_group_rules=dict( security_group_rules=dict(
limit=20, limit=-1,
), ),
key_pairs=dict( key_pairs=dict(
limit=100, limit=100,
@ -1356,10 +1332,10 @@ class DbQuotaDriverTestCase(test.TestCase):
limit=25 * 1024, limit=25 * 1024,
), ),
floating_ips=dict( floating_ips=dict(
limit=10, limit=-1,
), ),
fixed_ips=dict( fixed_ips=dict(
limit=10, limit=-1,
), ),
metadata_items=dict( metadata_items=dict(
limit=64, limit=64,
@ -1374,10 +1350,10 @@ class DbQuotaDriverTestCase(test.TestCase):
limit=127, limit=127,
), ),
security_groups=dict( security_groups=dict(
limit=10, limit=-1,
), ),
security_group_rules=dict( security_group_rules=dict(
limit=20, limit=-1,
), ),
key_pairs=dict( key_pairs=dict(
limit=100, limit=100,
@ -1394,7 +1370,7 @@ class DbQuotaDriverTestCase(test.TestCase):
def fake_quota_get_all_by_project(context, project_id): def fake_quota_get_all_by_project(context, project_id):
self.calls.append('quota_get_all_by_project') self.calls.append('quota_get_all_by_project')
return {'floating_ips': 20} return {'floating_ips': -1}
def fake_get_project_quotas(dbdrv, context, resources, project_id, def fake_get_project_quotas(dbdrv, context, resources, project_id,
quota_class=None, quota_class=None,
@ -1412,9 +1388,9 @@ class DbQuotaDriverTestCase(test.TestCase):
in_use = 5 in_use = 5
limit = -1 limit = -1
elif k == 'floating_ips': elif k == 'floating_ips':
remains = 20 remains = -1
in_use = 0 in_use = 0
limit = 20 limit = -1
else: else:
remains = v.default remains = v.default
in_use = 0 in_use = 0
@ -1480,11 +1456,11 @@ class DbQuotaDriverTestCase(test.TestCase):
}, },
'floating_ips': { 'floating_ips': {
'minimum': 0, 'minimum': 0,
'maximum': 20, 'maximum': -1,
}, },
'fixed_ips': { 'fixed_ips': {
'minimum': 0, 'minimum': 0,
'maximum': 10, 'maximum': -1,
}, },
'metadata_items': { 'metadata_items': {
'minimum': 0, 'minimum': 0,
@ -1504,11 +1480,11 @@ class DbQuotaDriverTestCase(test.TestCase):
}, },
'security_groups': { 'security_groups': {
'minimum': 0, 'minimum': 0,
'maximum': 10, 'maximum': -1,
}, },
'security_group_rules': { 'security_group_rules': {
'minimum': 0, 'minimum': 0,
'maximum': 20, 'maximum': -1,
}, },
'key_pairs': { 'key_pairs': {
'minimum': 0, 'minimum': 0,
@ -1620,11 +1596,11 @@ class DbQuotaDriverTestCase(test.TestCase):
}, },
'floating_ips': { 'floating_ips': {
'minimum': 0, 'minimum': 0,
'maximum': 20, 'maximum': -1,
}, },
'fixed_ips': { 'fixed_ips': {
'minimum': 0, 'minimum': 0,
'maximum': 10, 'maximum': -1,
}, },
'metadata_items': { 'metadata_items': {
'minimum': 0, 'minimum': 0,
@ -1644,11 +1620,11 @@ class DbQuotaDriverTestCase(test.TestCase):
}, },
'security_groups': { 'security_groups': {
'minimum': 0, 'minimum': 0,
'maximum': 10, 'maximum': -1,
}, },
'security_group_rules': { 'security_group_rules': {
'minimum': 0, 'minimum': 0,
'maximum': 20, 'maximum': -1,
}, },
'key_pairs': { 'key_pairs': {
'minimum': 0, 'minimum': 0,
@ -1773,7 +1749,7 @@ class DbQuotaDriverTestCase(test.TestCase):
ctxt = FakeContext('test_project', 'test_class') ctxt = FakeContext('test_project', 'test_class')
resources = self._get_fake_countable_resources() resources = self._get_fake_countable_resources()
# Check: only project_values, only user_values, and then both. # Check: only project_values, only user_values, and then both.
kwargs = [{'project_values': {'fixed_ips': 10241}}, kwargs = [{'project_values': {'instances': 512}},
{'user_values': {'key_pairs': 256}}, {'user_values': {'key_pairs': 256}},
{'project_values': {'instances': 512}, {'project_values': {'instances': 512},
'user_values': {'instances': 256}}] 'user_values': {'instances': 256}}]
@ -1783,7 +1759,6 @@ class DbQuotaDriverTestCase(test.TestCase):
ctxt, resources, **kwarg) ctxt, resources, **kwarg)
def test_limit_check_project_and_user_unlimited(self): def test_limit_check_project_and_user_unlimited(self):
self.flags(fixed_ips=-1, group='quota')
self.flags(key_pairs=-1, group='quota') self.flags(key_pairs=-1, group='quota')
self.flags(instances=-1, group='quota') self.flags(instances=-1, group='quota')
self._stub_get_project_quotas() self._stub_get_project_quotas()
@ -1833,13 +1808,10 @@ class NoopQuotaDriverTestCase(test.TestCase):
self.flags(instances=10, self.flags(instances=10,
cores=20, cores=20,
ram=50 * 1024, ram=50 * 1024,
floating_ips=10,
metadata_items=128, metadata_items=128,
injected_files=5, injected_files=5,
injected_file_content_bytes=10 * 1024, injected_file_content_bytes=10 * 1024,
injected_file_path_length=255, injected_file_path_length=255,
security_groups=10,
security_group_rules=20,
group='quota' group='quota'
) )