X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_ro%2Fopenmano_schemas.py;h=fe595720af0aafd8e3317c5a2cf5a3c0c17b7645;hb=1df468d2c3f6c32f2bb703e4732180a8596c48ad;hp=1ea64f637a0cafd186dae8c64e897e47ef2ab0d8;hpb=2c290ca4088492a3c32bb6ab218d0004da68f6ea;p=osm%2FRO.git diff --git a/osm_ro/openmano_schemas.py b/osm_ro/openmano_schemas.py index 1ea64f63..fe595720 100644 --- a/osm_ro/openmano_schemas.py +++ b/osm_ro/openmano_schemas.py @@ -37,6 +37,8 @@ description_schema={"type" : ["string","null"], "maxLength":255, "pattern" : "^[ id_schema_fake = {"type" : "string", "minLength":2, "maxLength":36 } #"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$" id_schema = {"type" : "string", "pattern": "^[a-fA-F0-9]{8}(-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}$"} pci_schema={"type":"string", "pattern":"^[0-9a-fA-F]{4}(:[0-9a-fA-F]{2}){2}\.[0-9a-fA-F]$"} +pci_extended_schema = {"type": "string", "pattern": "^[0-9a-fA-F.:-\[\]]$"} + http_schema={"type":"string", "pattern":"^https?://[^'\"=]+$"} bandwidth_schema={"type":"string", "pattern" : "^[0-9]+ *([MG]bps)?$"} memory_schema={"type":"string", "pattern" : "^[0-9]+ *([MG]i?[Bb])?$"} @@ -86,6 +88,10 @@ config_schema = { "db_user": nameshort_schema, "db_passwd": {"type":"string"}, "db_name": nameshort_schema, + "db_ovim_host": nameshort_schema, + "db_ovim_user": nameshort_schema, + "db_ovim_passwd": {"type":"string"}, + "db_ovim_name": nameshort_schema, # Next fields will disappear once the MANO API includes appropriate primitives "vim_url": http_schema, "vim_url_admin": http_schema, @@ -97,9 +103,9 @@ config_schema = { "http_console_host": nameshort_schema, "http_console_ports": { "type": "array", - "items": {"OneOf" : [ + "items": {"OneOf": [ port_schema, - {"type":"object", "properties":{"from": port_schema, "to": port_schema}, "required": ["from","to"]} + {"type": "object", "properties": {"from": port_schema, "to": port_schema}, "required": ["from", "to"]} ]} }, "log_level": log_level_schema, @@ -109,16 +115,18 @@ config_schema = { "log_level_nfvo": log_level_schema, "log_level_http": log_level_schema, "log_level_console": log_level_schema, + "log_level_ovim": log_level_schema, "log_file_db": path_schema, "log_file_vim": path_schema, "log_file_nfvo": path_schema, "log_file_http": path_schema, "log_file_console": path_schema, + "log_file_ovim": path_schema, "log_socket_host": nameshort_schema, "log_socket_port": port_schema, "log_file": path_schema, }, - "required": ['db_host', 'db_user', 'db_passwd', 'db_name'], + "required": ['db_user', 'db_passwd', 'db_name'], "additionalProperties": False } @@ -294,26 +302,27 @@ datacenter_associate_schema={ } dhcp_schema = { - "title":"DHCP schema", + "title": "DHCP schema", "$schema": "http://json-schema.org/draft-04/schema#", - "type":"object", + "type": "object", "properties":{ "enabled": {"type": "boolean"}, - "start-address": ip_schema, - "count": integer1_schema + "start-address": {"OneOf": [{"type": "null"}, ip_schema]}, + "count": integer0_schema }, - "required": ["enabled", "start-address", "count"], + # "required": ["start-address", "count"], } ip_profile_schema = { - "title":"IP profile schema", + "title": "IP profile schema", "$schema": "http://json-schema.org/draft-04/schema#", - "type":"object", - "properties":{ - "ip-version": {"type":"string", "enum":["IPv4","IPv6"]}, + "type": "object", + "properties": { + "ip-version": {"type": "string", "enum": ["IPv4", "IPv6"]}, "subnet-address": ip_prefix_schema, "gateway-address": ip_schema, - "dns-address": ip_schema, + "dns-address": {"oneOf": [ip_schema, # for backward compatibility + {"type": "array", "items": ip_schema}]}, "dhcp": dhcp_schema }, } @@ -379,7 +388,7 @@ internal_connection_schema = { "name": name_schema, "description":description_schema, "type":{"type":"string", "enum":["bridge","data","ptp"]}, - "elements": {"type" : "array", "items": internal_connection_element_schema, "minItems":2} + "elements": {"type" : "array", "items": internal_connection_element_schema, "minItems":1} }, "required": ["name", "type", "elements"], "additionalProperties": False @@ -393,7 +402,7 @@ internal_connection_schema_v02 = { "type": {"type": "string", "enum":["e-line", "e-lan"]}, "implementation": {"type": "string", "enum":["overlay", "underlay"]}, "ip-profile": ip_profile_schema, - "elements": {"type" : "array", "items": internal_connection_element_schema_v02, "minItems":2} + "elements": {"type" : "array", "items": internal_connection_element_schema_v02, "minItems":1} }, "required": ["name", "type", "implementation", "elements"], "additionalProperties": False @@ -475,6 +484,7 @@ devices_schema={ "size": size_schema, "vpci":pci_schema, "xml":xml_text_schema, + "name": name_schema, }, "additionalProperties": False, "required": ["type"] @@ -534,10 +544,12 @@ vnfc_schema = { "properties":{ "name": name_schema, "description": description_schema, - "VNFC image": {"oneOf": [path_schema, http_schema]}, + "count": integer1_schema, "image name": name_schema, + "availability_zone": name_schema, + "VNFC image": {"oneOf": [path_schema, http_schema]}, "image checksum": checksum_schema, - "image metadata": metadata_schema, + "image metadata": metadata_schema, #"cloud-config": cloud_config_schema, #common for all vnfs in the scenario "processor": { "type":"object", @@ -585,9 +597,11 @@ vnfd_schema_v01 = { "properties":{ "name": name_schema, "description": description_schema, + "class": nameshort_schema, "public": {"type" : "boolean"}, "physical": {"type" : "boolean"}, + "default_user": name_schema, "tenant_id": id_schema, #only valid for admin "external-connections": {"type" : "array", "items": external_connection_schema, "minItems":1}, "internal-connections": {"type" : "array", "items": internal_connection_schema, "minItems":1}, @@ -601,7 +615,7 @@ vnfd_schema_v01 = { "additionalProperties": False } -#VNFD schema for OSM R1 +#VNFD schema for OSM R1 vnfd_schema_v02 = { "title":"vnfd information schema v0.2", "$schema": "http://json-schema.org/draft-04/schema#", @@ -801,7 +815,7 @@ nsd_schema_v03 = { "properties":{ "VNFC": name_schema, "local_iface_name": name_schema, - "ip_address": ip_schema + "ip_address": ip_schema, }, "required": ["VNFC", "local_iface_name"], } @@ -973,41 +987,48 @@ instance_scenario_create_schema_v01 = { #"metadata": {"type": "object"}, #"user_data": {"type": "string"} #"cloud-config": cloud_config_schema, #particular for a vnf - "external-connections": { + "vdus": { "type": "object", "patternProperties": { ".": { "type": "object", "properties": { - "vim-network-name": name_schema, - "ip_address": ip_schema - } + "name": name_schema, # overrides vdu name schema + "devices": { + "type": "object", + "patternProperties": { + ".": { + "vim_id": name_schema, + } + } + }, + "interfaces": { + "type": "object", + "patternProperties": { + ".": { + "ip_address": ip_schema, + "mac_address": mac_schema, + "floating-ip": {"type": "boolean"}, + } + } + } + } } } }, - "internal-connections": { + "networks": { "type": "object", "patternProperties": { ".": { "type": "object", "properties": { + "vim-network-name": name_schema, "ip-profile": ip_profile_schema, - "elements": { - "type" : "array", - "items":{ - "type":"object", - "properties":{ - "VNFC": name_schema, - "local_iface_name": name_schema, - "ip_address": ip_schema - }, - "required": ["VNFC", "local_iface_name"], - } - } - } + "name": name_schema, + } } } - } + }, } } }, @@ -1073,25 +1094,126 @@ instance_scenario_create_schema_v01 = { } instance_scenario_action_schema = { - "title":"instance scenario action information schema", + "title": "instance scenario action information schema", "$schema": "http://json-schema.org/draft-04/schema#", - "type":"object", - "properties":{ - "start":{"type": "null"}, - "pause":{"type": "null"}, - "resume":{"type": "null"}, - "shutoff":{"type": "null"}, - "shutdown":{"type": "null"}, - "forceOff":{"type": "null"}, - "rebuild":{"type": "null"}, - "reboot":{ - "type": ["object","null"], + "type": "object", + "properties": { + "start": {"type": "null"}, + "pause": {"type": "null"}, + "resume": {"type": "null"}, + "shutoff": {"type": "null"}, + "shutdown": {"type": "null"}, + "forceOff": {"type": "null"}, + "rebuild": {"type": "null"}, + "reboot": { + "type": ["object", "null"], }, + "add_public_key": description_schema, "console": {"type": ["string", "null"], "enum": ["novnc", "xvpvnc", "rdp-html5", "spice-html5", None]}, - "vnfs":{"type": "array", "items":{"type":"string"}}, - "vms":{"type": "array", "items":{"type":"string"}} + "vdu-scaling": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu-id": id_schema, + "osm_vdu_id": name_schema, + "member-vnf-index": name_schema, + "count": integer1_schema, + "type": {"enum": ["create", "delete"]} + }, + "additionalProperties": False, + "minProperties": 1, + "required": ["type"] + } + }, + "vnfs": {"type": "array", "items": {"type": "string"}}, + "vms": {"type": "array", "items": {"type": "string"}} }, "minProperties": 1, #"maxProperties": 1, "additionalProperties": False } + +sdn_controller_properties={ + "name": name_schema, + "dpid": {"type":"string", "pattern":"^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}$"}, + "ip": ip_schema, + "port": port_schema, + "type": {"type": "string", "enum": ["opendaylight","floodlight","onos"]}, + "version": {"type" : "string", "minLength":1, "maxLength":12}, + "user": nameshort_schema, + "password": passwd_schema +} +sdn_controller_schema = { + "title":"sdn controller information schema", + "$schema": "http://json-schema.org/draft-04/schema#", + "type":"object", + "properties":{ + "sdn_controller":{ + "type":"object", + "properties":sdn_controller_properties, + "required": ["name", "port", 'ip', 'dpid', 'type'], + "additionalProperties": False + } + }, + "required": ["sdn_controller"], + "additionalProperties": False +} + +sdn_controller_edit_schema = { + "title":"sdn controller update information schema", + "$schema": "http://json-schema.org/draft-04/schema#", + "type":"object", + "properties":{ + "sdn_controller":{ + "type":"object", + "properties":sdn_controller_properties, + "additionalProperties": False + } + }, + "required": ["sdn_controller"], + "additionalProperties": False +} + +sdn_port_mapping_schema = { + "$schema": "http://json-schema.org/draft-04/schema#", + "title":"sdn port mapping information schema", + "type": "object", + "properties": { + "sdn_port_mapping": { + "type": "array", + "items": { + "type": "object", + "properties": { + "compute_node": nameshort_schema, + "ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pci": pci_extended_schema, # pci_schema, + "switch_port": nameshort_schema, + "switch_mac": mac_schema + }, + "required": ["pci"] + } + } + }, + "required": ["compute_node", "ports"] + } + } + }, + "required": ["sdn_port_mapping"] +} + +sdn_external_port_schema = { + "$schema": "http://json-schema.org/draft-04/schema#", + "title":"External port ingformation", + "type": "object", + "properties": { + "port": {"type" : "string", "minLength":1, "maxLength":60}, + "vlan": vlan_schema, + "mac": mac_schema + }, + "required": ["port"] +} \ No newline at end of file