"description": description_schema,
"vim": name_schema,
"datacenter": name_schema,
- "vim_type": {"enum": ["openstack", "openvim", "vmware", "opennebula", "aws", "azure"]},
+ "vim_type": {"enum": ["openstack", "openvim", "vmware", "opennebula", "aws", "azure", "fos"]},
"vim_url": description_schema,
# "vim_url_admin": description_schema,
# "vim_tenant": name_schema,
}
# USERS
-project_role_mapping = {
- "title": "",
+project_role_mappings = {
+ "title": "list pf projects/roles",
"$schema": "http://json-schema.org/draft-04/schema#",
- "type": "object",
- "properties": {
- "project": shortname_schema,
- "role": shortname_schema
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "project": shortname_schema,
+ "role": shortname_schema
+ },
+ "required": ["project", "role"],
+ "additionalProperties": False
},
- "required": ["project", "role"],
- "additionalProperties": False
+ "minItems": 1
+}
+project_role_mappings_optional = {
+ "title": "list of projects/roles or projects only",
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "project": shortname_schema,
+ "role": shortname_schema
+ },
+ "required": ["project"],
+ "additionalProperties": False
+ },
+ "minItems": 1
}
user_new_schema = {
"$schema": "http://json-schema.org/draft-04/schema#",
"username": shortname_schema,
"password": passwd_schema,
"projects": nameshort_list_schema,
- "project_role_mappings": {
- "type": "array",
- "items": project_role_mapping,
- "minItems": 1
- },
+ "project_role_mappings": project_role_mappings,
},
"required": ["username", "password"],
"additionalProperties": False
array_edition_schema
]
},
- "project_role_mappings": {
- "type": "array",
- "items": project_role_mapping,
- "minItems": 1
- },
+ "project_role_mappings": project_role_mappings,
+ "add_project_role_mappings": project_role_mappings,
+ "remove_project_role_mappings": project_role_mappings_optional,
},
"minProperties": 1,
"additionalProperties": False
}
# PROJECTS
+topics_with_quota = ["vnfds", "nsds", "nsts", "pdus", "nsrs", "nsis", "vim_accounts", "wim_accounts", "sdns"]
project_new_schema = {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "New project schema for administrators",
"properties": {
"name": shortname_schema,
"admin": bool_schema,
+ "quotas": {
+ "type": "object",
+ "properties": {topic: integer0_schema for topic in topics_with_quota},
+ "additionalProperties": False
+ },
},
"required": ["name"],
"additionalProperties": False
"properties": {
"admin": bool_schema,
"name": shortname_schema, # To allow Project Name modification
+ "quotas": {
+ "type": "object",
+ "properties": {topic: {"oneOf": [integer0_schema, null_schema]} for topic in topics_with_quota},
+ "additionalProperties": False
+ },
},
"additionalProperties": False,
"minProperties": 1
"type": "object",
"properties": {
"name": shortname_schema,
- "definition": object_schema,
+ "permissions": {
+ "type": "object",
+ "patternProperties": {
+ ".": bool_schema,
+ },
+ # "minProperties": 1,
+ }
},
"required": ["name"],
"additionalProperties": False
"title": "Roles edit schema for administrators",
"type": "object",
"properties": {
- "_id": id_schema,
"name": shortname_schema,
- "definition": object_schema,
+ "permissions": {
+ "type": "object",
+ "patternProperties": {
+ ".": {
+ "oneOf": [bool_schema, null_schema]
+ }
+ },
+ # "minProperties": 1,
+ }
},
- "required": ["_id", "name", "definition"],
"additionalProperties": False,
"minProperties": 1
}
"type": "object",
"properties": {
"lcmOperationType": string_schema,
- "nsiInstanceId": id_schema,
+ "netsliceInstanceId": id_schema,
"nsiName": name_schema,
"nsiDescription": {"oneOf": [description_schema, null_schema]},
"nstId": string_schema,
try:
if UUID(x):
return True
- except (TypeError, ValueError):
+ except (TypeError, ValueError, AttributeError):
return False