blob: 101bcb1d6596e988827d64401719a1750d5c27d4 [file] [log] [blame]
# -*- coding: utf-8 -*-
##
# Copyright 2018 University of Bristol - High Performance Networks Research
# Group
# All Rights Reserved.
#
# Contributors: Anderson Bravalheri, Dimitrios Gkounis, Abubakar Siddique
# Muqaddas, Navdeep Uniyal, Reza Nejabati and Dimitra Simeonidou
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact with: <highperformance-networks@bristol.ac.uk>
#
# Neither the name of the University of Bristol nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# This work has been performed in the context of DCMS UK 5G Testbeds
# & Trials Programme and in the framework of the Metro-Haul project -
# funded by the European Commission under Grant number 761727 through the
# Horizon 2020 and 5G-PPP programmes.
##
from ..openmano_schemas import (
description_schema,
name_schema,
nameshort_schema
)
# WIM -------------------------------------------------------------------------
wim_types = ["tapi", "onos", "odl", "dynpac", "fake"]
dpid_type = {
"type": "string",
"pattern":
"^[0-9a-zA-Z]+(:[0-9a-zA-Z]+)*$"
}
port_type = {
"oneOf": [
{"type": "string",
"minLength": 1,
"maxLength": 5},
{"type": "integer",
"minimum": 1,
"maximum": 65534}
]
}
wim_port_mapping_desc = {
"type": "array",
"items": {
"type": "object",
"properties": {
"datacenter_name": nameshort_schema,
"pop_wan_mappings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"pop_switch_dpid": dpid_type,
"pop_switch_port": port_type,
"wan_service_endpoint_id": name_schema,
"wan_service_mapping_info": {
"type": "object",
"properties": {
"mapping_type": name_schema,
"wan_switch_dpid": dpid_type,
"wan_switch_port": port_type
},
"additionalProperties": True,
"required": ["mapping_type"]
}
},
"anyOf": [
{
"required": [
"pop_switch_dpid",
"pop_switch_port",
"wan_service_endpoint_id"
]
},
{
"required": [
"pop_switch_dpid",
"pop_switch_port",
"wan_service_mapping_info"
]
}
]
}
}
},
"required": ["datacenter_name", "pop_wan_mappings"]
}
}
wim_schema_properties = {
"name": name_schema,
"description": description_schema,
"type": {
"type": "string",
"enum": ["tapi", "onos", "odl", "dynpac", "fake"]
},
"wim_url": description_schema,
"config": {
"type": "object",
"properties": {
"wim_port_mapping": wim_port_mapping_desc
}
}
}
wim_schema = {
"title": "wim information schema",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"wim": {
"type": "object",
"properties": wim_schema_properties,
"required": ["name", "type", "wim_url"],
}
},
"required": ["wim"],
}
wim_edit_schema = {
"title": "wim edit information schema",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"wim": {
"type": "object",
"properties": wim_schema_properties,
}
},
"required": ["wim"],
}
wim_account_schema = {
"title": "wim account information schema",
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"wim_account": {
"type": "object",
"properties": {
"name": name_schema,
"user": nameshort_schema,
"password": nameshort_schema,
"config": {"type": "object"}
},
}
},
"required": ["wim_account"],
}
wim_port_mapping_schema = {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "wim mapping information schema",
"type": "object",
"properties": {
"wim_port_mapping": wim_port_mapping_desc
},
"required": ["wim_port_mapping"]
}