54
54
cfg.IntOpt('quota_max_injected_file_path_bytes',
56
56
help='number of bytes allowed per injected file path'),
57
cfg.IntOpt('quota_security_groups',
59
help='number of security groups per project'),
60
cfg.IntOpt('quota_security_group_rules',
62
help='number of security rules per security group'),
59
65
FLAGS = flags.FLAGS
72
78
'injected_files': FLAGS.quota_max_injected_files,
73
79
'injected_file_content_bytes':
74
80
FLAGS.quota_max_injected_file_content_bytes,
81
'security_groups': FLAGS.quota_security_groups,
82
'security_group_rules': FLAGS.quota_security_group_rules,
76
84
# -1 in the quota flags means unlimited
77
85
for key in defaults.keys():
152
160
return min(requested_floating_ips, allowed_floating_ips)
163
def allowed_security_groups(context, requested_security_groups):
164
"""Check quota and return min(requested, allowed) security groups."""
165
project_id = context.project_id
166
context = context.elevated()
167
used_sec_groups = db.security_group_count_by_project(context, project_id)
168
quota = get_project_quotas(context, project_id)
169
allowed_sec_groups = _get_request_allotment(requested_security_groups,
171
quota['security_groups'])
172
return min(requested_security_groups, allowed_sec_groups)
175
def allowed_security_group_rules(context, security_group_id,
177
"""Check quota and return min(requested, allowed) sec group rules."""
178
project_id = context.project_id
179
context = context.elevated()
180
used_rules = db.security_group_rule_count_by_group(context,
182
quota = get_project_quotas(context, project_id)
183
allowed_rules = _get_request_allotment(requested_rules,
185
quota['security_group_rules'])
186
return min(requested_rules, allowed_rules)
155
189
def _calculate_simple_quota(context, resource, requested):
156
190
"""Check quota for resource; return min(requested, allowed)."""
157
191
quota = get_project_quotas(context, context.project_id)