summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
d774958)
add osmrepos to quotas
Change-Id: I8cf11677b8aa5612f78ff10492d432849b33cd08
Signed-off-by: tierno <alfonso.tiernosepulveda@telefonica.com>
class SdnTopic(CommonVimWimSdn):
topic = "sdns"
topic_msg = "sdn"
class SdnTopic(CommonVimWimSdn):
topic = "sdns"
topic_msg = "sdn"
+ quota_name = "sdn_controllers"
schema_new = sdn_new_schema
schema_edit = sdn_edit_schema
multiproject = True
schema_new = sdn_new_schema
schema_edit = sdn_edit_schema
multiproject = True
# static variables for all instance classes
topic = None # to_override
topic_msg = None # to_override
# static variables for all instance classes
topic = None # to_override
topic_msg = None # to_override
+ quota_name = None # to_override. If not provided topic will be used for quota_name
schema_new = None # to_override
schema_edit = None # to_override
multiproject = True # True if this Topic can be shared by several projects. Then it contains _admin.projects_read
schema_new = None # to_override
schema_edit = None # to_override
multiproject = True # True if this Topic can be shared by several projects. Then it contains _admin.projects_read
"""
Check whether topic quota is exceeded by the given project
Used by relevant topics' 'new' function to decide whether or not creation of the new item should be allowed
"""
Check whether topic quota is exceeded by the given project
Used by relevant topics' 'new' function to decide whether or not creation of the new item should be allowed
- :param projects: projects (tuple) for which quota should be checked
- :param override: boolean. If true, don't raise ValidationError even though quota be exceeded
+ :param session[project_id]: projects (tuple) for which quota should be checked
+ :param session[force]: boolean. If true, skip quota checking
:return: None
:raise:
DbException if project not found
:return: None
:raise:
DbException if project not found
- ValidationError if quota exceeded and not overridden
+ ValidationError if quota exceeded in one of the projects
"""
if session["force"]:
return
"""
if session["force"]:
return
for project in projects:
proj = self.auth.get_project(project)
pid = proj["_id"]
for project in projects:
proj = self.auth.get_project(project)
pid = proj["_id"]
- quota = proj.get("quotas", {}).get(self.topic, self.default_quota)
+ quota_name = self.quota_name or self.topic
+ quota = proj.get("quotas", {}).get(quota_name, self.default_quota)
count = self.db.count(self.topic, {"_admin.projects_read": pid})
if count >= quota:
name = proj["name"]
count = self.db.count(self.topic, {"_admin.projects_read": pid})
if count >= quota:
name = proj["name"]
- raise ValidationError("quota ({}={}) exceeded for project {} ({})".format(self.topic, quota, name, pid),
+ raise ValidationError("quota ({}={}) exceeded for project {} ({})".format(quota_name, quota, name, pid),
http_code=HTTPStatus.UNAUTHORIZED)
def _validate_input_new(self, input, force=False):
http_code=HTTPStatus.UNAUTHORIZED)
def _validate_input_new(self, input, force=False):
class NstTopic(DescriptorTopic):
topic = "nsts"
topic_msg = "nst"
class NstTopic(DescriptorTopic):
topic = "nsts"
topic_msg = "nst"
+ quota_name = "slice_templates"
def __init__(self, db, fs, msg, auth):
DescriptorTopic.__init__(self, db, fs, msg, auth)
def __init__(self, db, fs, msg, auth):
DescriptorTopic.__init__(self, db, fs, msg, auth)
class PduTopic(BaseTopic):
topic = "pdus"
topic_msg = "pdu"
class PduTopic(BaseTopic):
topic = "pdus"
topic_msg = "pdu"
schema_new = pdu_new_schema
schema_edit = pdu_edit_schema
schema_new = pdu_new_schema
schema_edit = pdu_edit_schema
class NsrTopic(BaseTopic):
topic = "nsrs"
topic_msg = "ns"
class NsrTopic(BaseTopic):
topic = "nsrs"
topic_msg = "ns"
+ quota_name = "ns_instances"
schema_new = ns_instantiate
def __init__(self, db, fs, msg, auth):
schema_new = ns_instantiate
def __init__(self, db, fs, msg, auth):
class NsiTopic(BaseTopic):
topic = "nsis"
topic_msg = "nsi"
class NsiTopic(BaseTopic):
topic = "nsis"
topic_msg = "nsi"
+ quota_name = "slice_instances"
def __init__(self, db, fs, msg, auth):
BaseTopic.__init__(self, db, fs, msg, auth)
def __init__(self, db, fs, msg, auth):
BaseTopic.__init__(self, db, fs, msg, auth)
-topics_with_quota = ["vnfds", "nsds", "nsts", "pdus", "nsrs", "nsis", "vim_accounts", "wim_accounts", "sdns",
- "k8sclusters", "k8srepos"]
+topics_with_quota = ["vnfds", "nsds", "slice_templates", "pduds", "ns_instances", "slice_instances", "vim_accounts",
+ "wim_accounts", "sdn_controllers", "k8sclusters", "k8srepos", "osmrepos"]
project_new_schema = {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "New project schema for administrators",
project_new_schema = {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "New project schema for administrators",