diff options
author | lishitao <lishitao@huawei.com> | 2017-08-29 09:31:20 +0800 |
---|---|---|
committer | lishitao <lishitao@huawei.com> | 2017-08-29 09:31:20 +0800 |
commit | 2227cc7c562f2a3ca613a0296caff724cd3bc0b3 (patch) | |
tree | e3ab8cf90d80094536f556711ac7b7fe577f7bdd /refspec/open-o/sdn-nsd | |
parent | f49fce4276ecb7507aa5136e118b3a2a0da58c82 (diff) |
add reference specification from open-o
Issue-ID: MODELING-8
Change-Id: Icecc195bc6961f4fb74cadd5a35720c5e8e4e5f9
Signed-off-by: lishitao <lishitao@huawei.com>
Diffstat (limited to 'refspec/open-o/sdn-nsd')
-rw-r--r-- | refspec/open-o/sdn-nsd/VoLTE_underlayVPN_template.yaml | 181 | ||||
-rw-r--r-- | refspec/open-o/sdn-nsd/VoLTE_underlayVPN_type_definition.yaml | 756 | ||||
-rw-r--r-- | refspec/open-o/sdn-nsd/enterprise2DC_template.yaml | 252 | ||||
-rw-r--r-- | refspec/open-o/sdn-nsd/enterprise2DC_type_definition.yaml | 1226 | ||||
-rwxr-xr-x | refspec/open-o/sdn-nsd/sdn-nsd-dm-sample.rst | 15 | ||||
-rwxr-xr-x | refspec/open-o/sdn-nsd/sdn-nsd-im-sample.rst | 15 | ||||
-rw-r--r-- | refspec/open-o/sdn-nsd/sdno_type_definition.yaml | 540 |
7 files changed, 2985 insertions, 0 deletions
diff --git a/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_template.yaml b/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_template.yaml new file mode 100644 index 0000000..a7d5e42 --- /dev/null +++ b/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_template.yaml @@ -0,0 +1,181 @@ +# Copyright 2017 Huawei Technologies Co., Ltd. +# +# 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. + +############################################################################### +##### L3 VPN Underlay Connection #### +############################################################################### +tosca_definitions_version: tosca_simple_yaml_1_0 +description: creates underlay vpn connection, l3 vpn template +imports: + - Definitions/underlayVPN_type_definition.yaml + +############################################################################### + +metadata: + id: vpnUnderlayL3 + template_name: underlayvpn + version: 0.1 + vendor: sdno + template_author: Huawei + + +####################################### TOPOLOGY ############################## +topology_template: + inputs: + name: + type: string + description: Name of underlayervpn + description: + type: string + description: description of underlayvpn + serviceType: + type: string + description: serviceType of underlayvpn + default: 'l3vpn' + topology: + type: string + description: topology of underlayvpn + default: 'full-mesh' + technology: + type: string + description: technology of underlayvpn + default: 'mpls' + pe1_ip: + type: string + description: mgrip of pe1 + ac1_port: + type: string + description: ac1 port + ac1_svlan: + type: integer + description: ac1 svlan + ac1_ip: + type: string + description: ip of ac1, only for layer3 vpn + ac1_peer_ip: + type: string + description: ip of ac1 peer CE tp, only for layer3 vpn + ac1_route: + type: string + description: route configure of ac1, only for layer3 vpn + pe2_ip: + type: string + description: mgrip of pe2 + ac2_port: + type: string + description: ac2 port + ac2_svlan: + type: integer + description: ac2 svlan + ac2_ip: + type: string + description: ip of ac2, only for layer3 vpn + ac2_peer_ip: + type: string + description: ip of ac2 peer CE tp, only for layer3 vpn + ac2_route: + type: string + description: route configure of ac2, only for layer3 vpn + + +# ***************************************************************************** +# node templates +# ***************************************************************************** + + node_templates: + + # Network Nodes, to be retrieved from the resource inventory + pe1: + type: sdno.node.Node + properties: + ipAddress: {get_input: pe1_ip} + + pe2: + type: sdno.node.Node + properties: + ipAddress: {get_input: pe2_ip} + + + # Connectivity Service and Service Endpoints + + vpnService: + type: sdno.node.ConnectivityService.UnderlayVpn + properties: + name: {get_input: name} + requirements: + - endPoint: ac1 + - endPoint: ac2 + - realizes: vpnConnection + + ac1: + type: sdno.node.ServiceEndPoint.AC + properties: + port: {get_input: ac1_port} + ip: {get_input: ac1_ip} + svlan: {get_input: ac1_svlan} + route: {get_input: ac1_route} + peerIp: {get_input: ac1_peer_ip} + requirements: + - node: pe1 + + ac2: + type: sdno.node.ServiceEndPoint.AC + properties: + port: {get_input: ac2_port} + ip: {get_input: ac2_ip} + svlan: {get_input: ac2_svlan} + route: {get_input: ac2_route} + peerIp: {get_input: ac2_peer_ip} + requirements: + - node: pe2 + + + # Connection and Connection Endpoints + + vpnConnection: + type: sdno.node.Connection.UnderlayVpn + properties: + name: {get_input: name} + description: {get_input: description} + vpnBasicInfo: + serviceType: {get_input: serviceType} + topology: {get_input: topology} + technology: {get_input: technology} + requirements: + - endPoint: tp1 + - endPoint: tp2 + + interfaces: + standard: + create: + #implementation: 'POST /openoapi/sdnol3vpn/v1/l3vpns' + delete: + implementation: 'DELETE /openoapi/sdnol3vpn/v1/l3vpns/{uuid}' + get: + implementation: 'GET /openoapi/sdnol3vpn/v1/l3vpns' + deploy: + implementation: 'POST /openoapi/sdnol3vpn/v1/l3vpns' + undeploy: + implementation: 'DELETE /openoapi/sdnol3vpn/v1/l3vpns/{uuid}' + update: + implementation: 'PUT /openoapi/sdnol3vpn/v1/l3vpns/{uuid}' + + + tp1: + type: sdno.node.ConnectionEndPoint.Tp + + tp2: + type: sdno.node.ConnectionEndPoint.Tp + substitution_mappings: + node_type: tosca.nodes.sdno.NS.underlayvpn
\ No newline at end of file diff --git a/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_type_definition.yaml b/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_type_definition.yaml new file mode 100644 index 0000000..e0ce37d --- /dev/null +++ b/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_type_definition.yaml @@ -0,0 +1,756 @@ +# Copyright 2017 Huawei Technologies Co., Ltd. +# +# 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. + +tosca_definitions_version: tosca_simple_yaml_1_0 +description: undelay vpn type definitions + +# ***************************************************************************** +# underlay vpn type definitions, used for both L3vpn and l2vpn +# ***************************************************************************** + +metadata: + version: 0.1 + vendor: sdno + template_author: Huawei + +imports: + - sdno_type_definition.yaml + +# ***************************************************************************** +# DSL definitions +# ***************************************************************************** +dsl_definitions: + +# ***************************************************************************** +# data types +# ***************************************************************************** +data_types: + + + # Base SDNO Type for Specs - used in Underlay VPN only for now, check reuse and move to common if needed. May need to move iot from type to node + sdno.datatypes.Spec: + derived_from: tosca.datatypes.Root + properties: + uuid: + type: string + description: unique id, format maxLength36 + required: true + default: 'none' + additionalInfo: + type: list + #max size = 1000 + entry_schema: + type: AdditionalInfoRow + required: false + + # PW Schema Type + + PWSchema: + derived_from: sdno.datatypes.Spec + properties: + pwTech: + type: string + description: PW Technology + required: true + default: 'none' + + # Tunnel Schema Type + + TunnelSchema: + derived_from: sdno.datatypes.Spec + properties: + tunnelTech: + type: string + description: Technology used for the tunnel + constraints: + - valid_values: ['NOP','LDP','RSVP-TE','SR-TE','MPLS-TP','TE-ANY','TE','GRE'] + required: true + default: 'RSVP-TE' + pwTech: + type: PWSpec + description: Technology used for the pseudowire + required: true + tunnelLatency: + type: integer + description: this is integer, format int32, minimum 0 and maximum 60000000 + required: true + default: 0 + tunnelSelectMode: + type: string + description: Tunnel selection mode + constraints: + - valid_values: ['AutoCreate','AutoSelect','ManualSelect','NOP'] + required: true + default: 'AutoSelect' + tunnelCreatePolicy: + type: MplsTESpec + description: Policy for creating the tunnel + required: false + tunnelAutoSelectPolicy: + type: SelectTunnelPolicy + description: Policy for selecting the tunnel + required: false + + PWSpec: + derived_from: sdno.datatypes.Spec + properties: + controlWord: + type: boolean + description: enable control + required: true + default: false + pwVlanAction: + type: string + description: VLAN action on the pseudowire + constraints: + - valid_values: ['Raw','tagged'] + required: true + default: 'Raw' + + + MplsTESpec: + derived_from: sdno.datatypes.Spec + properties: + bestEffort: + type: string + description: max length 200 + required: true + default: 'true' + shareMode: + type: string + description: Tunnel sharing mode + constraints: + - valid_values: ['delegate','1:1','N:1'] + required: true + default: 'N:1' + coRoute: + type: boolean + description: max length 200 + required: true + default: false + bfdEnable: + type: boolean + description: max length 200 + required: true + default: true + pathConstraint: + type: TunnelPathConstraint + description: + required: false + tunnelProtectPolicy: + type: ProtectionSchema + description: + required: false + + TunnelPathConstraint: + derived_from: sdno.datatypes.Spec + properties: + setupPriority: + type: integer + description: format int32, min 0 max 7 + required: true + default: 5 + holdupPriority: + type: integer + description: format int32, min 0 max 7 + required: true + default: 5 + + ProtectionSchema: + derived_from: sdno.datatypes.Spec + properties: + layerRate: + type: string + description: Layer Rate + constraints: + - valid_values: ['LR_Ethernet','LR_IP','LR_Vxlan','LR_PW','LR_NOP','LR_MPLS_TE'] + required: true + default: 'LR_IP' + protectType: + type: string + description: type of protection + constraints: + - valid_values: ['nop','1:1','1+1','hot-standby'] + required: true + default: '1:1' + protectDetailType: + type: string + description: more detailed protection info + required: false + reversionMode: + type: string + description: Reversion Mode + constraints: + - valid_values: ['RM_UNKNOWN','RM_NON_REVERTIVE','RM_REVERTIVE'] + required: true + default: 'RM_REVERTIVE' + wtr: + type: integer + description: format int32 minimum 0, maximum 2592000 + required: true + default: 1 + + SelectTunnelPolicy: + derived_from: sdno.datatypes.Spec + properties: + loadBalanceNum: + type: integer + description: format int32, minimum 1 maximum 64 + required: true + default: 1 + selectTunnels: + type: list + entry_schema: + type: SelectTunnel + description: Tunnel Selection Policy + required: true + + SelectTunnel: + derived_from: sdno.datatypes.Spec + properties: + priority: + type: integer + description: Tunnel priority to be selected, format int32, minimum 1 maximum 3 + required: true + default: 1 + tunnelTech: + type: string + description: tunnel technology to be selected + constraints: + - valid_values: ['NOP','LDP','RSVP-TE','SR-TE','MPLS-TP','TE-ANY','TE','GRE'] + required: true + default: RSVP-TE + + # Path Constraints Type + PathConstraints: + derived_from: sdno.datatypes.Spec + properties: + tunnelConstraints: + type: list + entry_schema: + type: TunnelSpecificPathConstraint + pwConstraints: + type: list + entry_schema: + type: PWSpecPathConstraint + + TunnelSpecificPathConstraint: + derived_from: sdno.datatypes.Spec + properties: + pathConnection: + type: PathConnection + tunnelWorkMode: + type: string + constraints: + - valid_values: ['AutoCreate','AutoSelect','ManualSelect','NOP'] + required: true + tunnelTech: + type: string + constraints: + - valid_values: ['NOP','LDP','RSVP-TE','SR-TE','MPLS-TP','TE-ANY','TE','GRE'] + required: true + bodMode: + type: string + constraints: + - valid_values: ['realBod','renewBod'] + required: true + bandwidth: + type: integer + description: bandwidth int64, minimum 0 and max 4000000000 + required: true + latency: + type: integer + description: bandwidth int64, minimum 0 and max 60000000 + required: true + bindingTunnels: + type: list + entry_schema: + type: string + + PathConnection: + derived_from: sdno.datatypes.Spec + properties: + aObject: + type: ObjectIdentifier + required: true + zObject: + type: ObjectIdentifier + required: true + direction: + type: string + constraints: + - valid_values: ['CD_UNI','CD_BI'] + required: true + +# Object Identifier is currently only used in L3 VPN, should be moved to the common and re-used + ObjectIdentifier: + derived_from: tosca.datatypes.Root + properties: + uuid: + type: string + required: true + # format: maxLen36 + objectId: + type: string + required: true + # format: maxLen36 + roleLabel: + type: string + required: true + objectType: + type: string + constraints: + - valid_values: ['Nop','SEG-VPN','TP','TPL','BUSINESSTYPE','COMPOSED-VPN', 'RESOURCE-POOL', 'SUBNETWORK', 'TUNNEL-LSP'] + required: true + + PWSpecPathConstraint: + derived_from: sdno.datatypes.Spec + properties: + role: + type: string + constraints: + - valid_values: ['master','backup'] + required: true + tunnelWorkMode: + type: string + constraints: + - valid_values: ['AutoCreate','AutoSelect','ManualSelect','NOP'] + required: true + tunnelTech: + type: string + constraints: + - valid_values: ['NOP','LDP','RSVP-TE','SR-TE','MPLS-TP','TE-ANY','TE','GRE'] + required: true + + + # VPN TYPES + + DiffService: + derived_from: sdno.datatypes.Spec + properties: + diffServMode: + type: string + description: mode of diffservice + constraints: + - valid_values: ['Uniform','Pipe','ShortPipe'] + required: true + default: 'Uniform' + serviceClass: + type: string + description: class of service + constraints: + - valid_values: ['BE','AF1','AF2','AF3','AF4','EF','CS6','CS7'] + required: true + default: 'BE' + serviceColor: + type: string + description: Service Color + constraints: + - valid_values: ['Green','Yellow','Red'] + required: true + default: 'Green' + + IpVpnSpec: + derived_from: sdno.datatypes.Spec + properties: + labelMode: + type: string + description: label mode type + constraints: + - valid_values: ['PerInstance','PerRoute'] + required: true + default: 'PerInstance' + frrEnable: + type: boolean + description: frr enable + required: true + default: false + diffServ: + type: DiffService + description: diff service type + required: true + + VpnBasicInfo: + derived_from: sdno.datatypes.Spec + properties: + topology: + type: string + description: type of VPN topology + constraints: + - valid_values: ['full-mesh','point_to_multipoint','point_to_point','singlePoint','hubspoke','hubspoke_via_hubce','hubspoke_disjoint','ADD_DROP_Z'] + required: true + default: 'full-mesh' + serviceType: + type: string + description: type of VPN service + constraints: + - valid_values: ['l3vpn','l2vpn','other'] + required: true + default: 'l3vpn' + + technology: + type: string + description: type of VPN technology + constraints: + - valid_values: ['mpls','rosen multivpn','vxlan overlay l3vpn','eth over sdh','vlan'] + required: true + default: 'mpls' + ipMtu: + type: integer + description: IP MTU, format is int32, minimum 46 and maximum 9600 + required: true + default: 9600 + ipVpnSpec: + type: IpVpnSpec + description: IP VPN Spec + required: false + + # VPN TYPES + + TpTypeSpec: + derived_from: sdno.datatypes.Spec + properties: + layerRate: + type: string + description: Layer Rate + constraints: + - valid_values: ['LR_Ethernet','LR_IP','LR_Vxlan','LR_PW','LR_NOP','LR_MPLS_TE'] + required: true + default: 'LR_IP' + ethernetTpSpec: + required: false + type: EthernetTpSpec + ipTpSpec: + required: false + type: IpTpSpec + + + EthernetTpSpec: + derived_from: sdno.datatypes.Spec + properties: + accessType: + type: string + constraints: + - valid_values: ['dot1q','qinq','untag','default'] + required: true + default: 'default' + vlanAction: + type: string + constraints: + - valid_values: ['nop','untag','pass','pvlan','swap','stacking'] + required: true + default: 'pass' + actionValue: + type: string + required: true + default: 'none' + qinqCvlanList: + type: string + required: true + default: 'none' + qinqSvalList: + type: string + required: true + default: 'none' + dot1qVlanList: + type: string + required: true + default: 'none' + + IpTpSpec: + derived_from: sdno.datatypes.Spec + properties: + masterIp: + type: string + required: true + default: '0.0.0.0' + + CeTp: + derived_from: sdno.datatypes.Spec + properties: + todo: + type: string + required: true + default: 'none' + + + RouteProtocolSpec: + derived_from: sdno.datatypes.Spec + properties: + todo: + type: string + required: true + default: 'none' + + +# ***************************************************************************** +# node types +# ***************************************************************************** + +node_types: + + # ***************************************************************************** + # Underlay VPN Service Endpoints + # ***************************************************************************** + sdno.node.ServiceEndPoint.AC: + description: Attach Circuit + derived_from: sdno.node.ServiceEndPoint + properties: + port: + type: string + required: true + default: '0' + ip: + type: string + required: true + default: '0.0.0.0' + svlan: + type: integer + required: true + default: 0 + route: + type: string + required: true + default: 'none' + peerIp: + type: string + required: true + default: '0.0.0.0' + + # ***************************************************************************** + # Underlay VPN Connectivity Service + # ***************************************************************************** + + sdno.node.ConnectivityService.UnderlayVpn: + derived_from: sdno.node.ConnectivityService + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + deploy: + description: "Deploy VPN" + implementation: + # primary: + dependencies: + - sdno.node.Connection.UnderlayVpn/deploy + + requirements: + - endPoint: + node: sdno.node.ServiceEndPoint.AC + capability: sdno.capability.ServiceEndPoint + relationship: sdno.relationship.ServiceEndPoint + occurrences: [2, UNBOUNDED] + - realizes: + node: sdno.node.Connection.UnderlayVpn + capability: sdno.capability.Realizes + relationship: sdno.relationship.RealizedBy + + # ***************************************************************************** + # Underlay VPN Connection Endpoints + # ***************************************************************************** + sdno.node.ConnectionEndPoint.Tp: + description: Attach Circuit + derived_from: sdno.node.ConnectionEndPoint + properties: + neId: + type: string + required: false + edgePointRole: + type: string + description: Role of the edge point + constraints: + - valid_values: [ASBR,nop] + required: false + hubSpoke: + type: string + description: Is the endpoint hub or spoke + constraints: + - valid_values: ['hub','spoke','spokeBridge','other'] + required: true + default: 'spoke' + type: + type: string + description: Type of the TP + constraints: + - valid_values: ['PTP','CTP','TRUNK','LoopBack','NetworkVNode','TPPool','nop'] + required: true + default: 'CTP' + workingLayer: + type: string + description: Working Layer Rate + constraints: + - valid_values: ['LR_Ethernet','LR_IP','LR_Vxlan','LR_PW','LR_NOP','LR_MPLS_TE'] + required: true + default: 'LR_IP' + typeSpecList: + type: list + #max size = 1000 + entry_schema: + type: TpTypeSpec + required: false + peerCpTp: + type: CeTp + required: false + qosProfileId: + type: string + required: false + inboundQosPolicyId: + type: string + required: false + outboundQosPolicyId: + type: string + required: false + inboundQueueProfileId: + type: string + required: false + outboundQueueProfileId: + type: string + required: false + containedMainTP: + type: string + required: false + routeProtocolSpecs: + type: list + #max size = 1000 + entry_schema: + type: RouteProtocolSpec + required: false + direction: + type: string + constraints: + - valid_values: ['IN','OUT','BI_DIRECTION'] + required: true + default: 'BI_DIRECTION' + tpRole: + type: string + constraints: + - valid_values: ['UNI','NNI'] + required: true + default: 'UNI' + + + + # ***************************************************************************** + # VPN Node Types + # ***************************************************************************** + sdno.node.Connection.UnderlayVpn: + derived_from: sdno.node.Connection + properties: + pwSchema: + type: PWSchema + required: false + tunnelSchema: + type: TunnelSchema + required: false + pathConstraints: + type: PathConstraints + required: false + vpnBasicInfo: + type: VpnBasicInfo + required: false + + requirements: + - endPoint: + node: sdno.node.ConnectionEndPoint.Tp + capability: sdno.capability.ConnectionEndPoint + relationship: sdno.relationship.ConnectionEndPoint + occurrences: [2, UNBOUNDED] + + + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnol3vpn/v1/l3vpns' + delete: + implementation: 'DELETE /openoapi/sdnol3vpn/v1/l3vpns/{uuid}' + get: + implementation: 'GET /openoapi/sdnol3vpn/v1/l3vpns/{uuid}' + deploy: + implementation: 'POST /openoapi/sdnol3vpn/v1/l3vpns' + undeploy: + implementation: 'DELETE /openoapi/sdnol3vpn/v1/l3vpns/{uuid}' + update: + #implementation: 'PUT /openoapi/sdnol3vpn/v1/l3vpns/{uuid}' + + # ***************************************************************************** + # Underlayvpn Node Types + # ***************************************************************************** + tosca.nodes.sdno.NS.underlayvpn: + properties: + id: + type: string + required: false + template_name: + type: string + required: false + version: + type: string + required: false + vendor: + type: string + required: false + template_author: + type: string + required: false + name: + type: string + required: false + description: + type: string + required: false + serviceType: + type: string + required: false + topology: + type: string + required: false + technology: + type: string + required: false + pe1_ip: + type: string + required: false + ac1_port: + type: string + required: false + ac1_svlan: + type: integer + required: false + ac1_ip: + type: string + required: false + ac1_peer_ip: + type: string + required: false + ac1_route: + type: string + required: false + pe2_ip: + type: string + required: false + ac2_port: + type: string + required: false + ac2_svlan: + type: integer + required: false + ac2_ip: + type: string + required: false + ac2_peer_ip: + type: string + required: false + ac2_route: + type: string + required: false
\ No newline at end of file diff --git a/refspec/open-o/sdn-nsd/enterprise2DC_template.yaml b/refspec/open-o/sdn-nsd/enterprise2DC_template.yaml new file mode 100644 index 0000000..c5d8714 --- /dev/null +++ b/refspec/open-o/sdn-nsd/enterprise2DC_template.yaml @@ -0,0 +1,252 @@ +# Copyright 2017 Huawei Technologies Co., Ltd. +# +# 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. + +############################################################################### +##### overlay_enterprise to dc #### +############################################################################### +tosca_definitions_version: tosca_simple_yaml_1_0 +description: creates overlay connection from Enterprise to DC +imports: + - Definitions/enterprise2DC_type_definition.yaml + +############################################################################### + +metadata: + id: enterprise2Dc + template_name: enterprise2DC + version: 0.1 + vendor: sdno + template_author: Huawei + + +####################################### TOPOLOGY ############################## +topology_template: + inputs: + vpnName: + type: string + description: Name of Overlayvpn + vpnDescription: + type: string + description: description of Overlayvpn + siteName: + type: string + description: Name of Site + siteCidr: + type: string + description: enterprise site cidr + subnetVlan: + type: integer + description: Vlan value of Subnet + siteVni: + type: integer + description: VxLAN ID connect site to vCPE + vpcName: + type: string + description: in format of domain/project/router, should keep consistent with NFVO + vpcSubnetName: + type: string + description: name of subnet in VPC, should keep consistent with NFVO + vpcSubnetCidr: + type: string + description: vpc cidr + vpcVni: + type: integer + description: vpc subnet vxlanID, should keep consistent with NFVO + vpnType: + type: string + description: vpn connection type between vCPE and vpc. + constraints: + - valid_values: ['IpSec','VxLAN','MPLS_VPN'] + default: IpSec + dcGwIp: + type: string + description: mgrIp of dcGW + dcFwIp: + type: string + description: mgrIp of dc Firewall + dcLbIp: + type: string + description: mgrIp of dc Load Balancer + +# ***************************************************************************** +# node templates +# ***************************************************************************** + + node_templates: + + # Nodes + thinCpe: + type: sdno.node.Node + properties: + siteName: {get_input: siteName} + id: '0' + + vCpe: + type: sdno.node.Node + properties: + siteName: {get_input: siteName} + id: '0' + + dcFw: + type: sdno.node.Node + properties: + ipAddress: {get_input: dcFwIp} + id: '0' + + dcLb: + type: sdno.node.Node + properties: + ipAddress: {get_input: dcLbIp} + id: '0' + + dcGw: + type: sdno.node.Node + properties: + ipAddress: {get_input: dcGwIp} + id: '0' + + # do we need another node for dc endpoint? original template had vpc as node as well + + # Connectivity Service + + enterprise2Dc: + type: sdno.node.ConnectivityService.Enterprise2Dc + requirements: + - endPoint: thinCpeServiceEndpoint + - endPoint: dcServiceEndpoint + - realizes: siteSubnet + - realizes: vpn + - realizes: vpcSubnet + - realizes: sfc + + thinCpeServiceEndpoint: + type: sdno.node.ServiceEndPoint.ThinCpe + requirements: + - node: thinCpe + dcServiceEndpoint: + type: sdno.node.ServiceEndPoint.DcEndpoint + requirements: + #- node: vpc or something else + - node: dcGw + + # ***************************************************************************** + # VPC Node Templates (VpcSubnet and Vpc) + # ***************************************************************************** + + vpcSubnet: + type: sdno.node.Connection.VpcSubnet + properties: + cidr: {get_input: vpcSubnetCidr} + name: {get_input: vpcSubnetName} + vni: {get_input: vpcVni} + requirements: + - realizes: vpc + + vpc: + type: sdno.node.Connection.Vpc + properties: + name: {get_input: vpcName} + + # ***************************************************************************** + # Site Node Templates (Subnet, Vlan, Site with thinCPE and cCPE) + # ***************************************************************************** + + siteSubnet: + type: sdno.node.Connection.SiteSubnet + properties: + vni: {get_input: siteVni} + cidrBlock: {get_input: siteCidr} + name: {concat: ['siteSubnet_' , {get_input: vpcName}]} + requirements: + - realizes: vlan + + vlan: + type: sdno.node.Connection.Vlan + properties: + vlanId: {get_input: subnetVlan} + name: {concat: ['vlan_' , {get_input: vpcName}]} + requirements: + - realizes: site + + thinCpeConnectionEndPoint: + type: sdno.node.ConnectionEndPoint.ThinCpe + requirements: + - realizes: site + - node: thinCpe + + vCpeConnectionEndPoint: + type: sdno.node.ConnectionEndPoint.VCpe + requirements: + - realizes: site + - node: vCpe + + site: + type: sdno.node.Connection.Site + properties: + name: {get_input: siteName} + siteDescriptor: {get_input: vpnType} + requirements: + - endPoint: vCpeConnectionEndPoint + - endPoint: thinCpeConnectionEndPoint + + + # ***************************************************************************** + # VPN Node Templates (Vpn, VpnConnection with siteGW and vpcGW) + # Order of requests: vpn, siteGW, vpcGW, vpnConnection + # ***************************************************************************** + + vpn: + type: sdno.node.Connection.Vpn + properties: + name: {get_input: vpnName} + description: {get_input: vpnDescription} + vpnDescriptor: {get_input: vpnType} + requirements: + - realizes: vpnConnection + + + siteGateway: + type: sdno.node.ConnectionEndPoint.SiteGateway + properties: + name: {concat: ['siteGateway_' , {get_input: vpcName}]} + + vpcGateway: + type: sdno.node.ConnectionEndPoint.VpcGateway + properties: + name: {concat: ['vpcGateway_' , {get_input: vpcName}]} + + vpnConnection: + type: sdno.node.Connection.VpnConnection + properties: + name: {concat: ['vpnConnection_' , {get_input: vpcName}]} + requirements: + - endPoint: siteGateway + - endPoint: vpcGateway + + + # ***************************************************************************** + # SFC Node Template + # ***************************************************************************** + + sfc: + type: sdno.node.Connection.Sfc + properties: + servicePathHops: + - {hopNumber: 1, sfiId: {get_attribute: [dcFw, id] }, sfgId: "", name: 'dcFw'} + - {hopNumber: 2, sfiId: {get_attribute: [dcLb, id] }, sfgId: "", name: 'dcLb'} + scfNeId: {get_attribute: [dcGw, id]} + name: {concat: ['sfc_' , {get_input: vpcName}]} + + substitution_mappings: + node_type: tosca.nodes.sdno.NS.overlayvpn
\ No newline at end of file diff --git a/refspec/open-o/sdn-nsd/enterprise2DC_type_definition.yaml b/refspec/open-o/sdn-nsd/enterprise2DC_type_definition.yaml new file mode 100644 index 0000000..84a8b39 --- /dev/null +++ b/refspec/open-o/sdn-nsd/enterprise2DC_type_definition.yaml @@ -0,0 +1,1226 @@ +# Copyright 2017 Huawei Technologies Co., Ltd. +# +# 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. +tosca_definitions_version: tosca_simple_yaml_1_0 +description: enteprise to DC type definitions + +# ***************************************************************************** +# enteprise to DC type definitions +# ***************************************************************************** + +metadata: + version: 0.1 + vendor: sdno + template_author: Huawei + +imports: + - sdno_type_definition.yaml + +# ***************************************************************************** +# DSL definitions +# ***************************************************************************** +dsl_definitions: + Vlan: &Vlan + siteId: + type: string + description: site id + required: false + vlanId: + type: integer + # format: int32 + description: vlan id + required: false + ports: + type: list + entry_schema: + type: string + description: ports list + required: false + portNames: + type: list + entry_schema: + type: string + description: port name list + required: false + description: + type: string + default: 'Vlan Service' + + SiteSubnet: &SiteSubnet + siteId: + type: string + description: site id + required: false + cidrBlock: + type: string + description: cidr block + required: false + cidrBlockSize: + type: integer + # format: int32 + description: cidr block size 8~32 + required: false + gatewayIp: + type: string + description: gateway ip + required: false + vlanId: + type: string + description: vlan id + required: false + vni: + type: string + description: vni + required: false + ports: + type: list + entry_schema: + type: string + description: ports list + required: false + portNames: + type: list + entry_schema: + type: string + description: port name list + required: false + ipv6Address: + type: string + description: ipv6 address + required: false + prefixLength: + type: string + description: length of prifix + required: false + dhcp6Enable: + type: string + description: whether enable dhcp6 + required: false + dhcp6Mode: + type: string + description: dhcp mode scope ="serverrelay" + required: false + enableDhcp: + type: string + description: whether enable dhcp + required: false + gatewayInterface: + type: string + description: >- + BDIF interface name, when vni is not null and need to read from AC, pass this parameter to lower layer + required: false + description: + type: string + default: 'SiteSubnet Service' + + Gateway: &Gateway + vpnId: + type: string + required: false + siteId: + type: string + required: false + vpcId: + type: string + required: false + deployPosition: + type: string + required: false + upstreamBandwidth: + type: string + required: false + downstreamBandwidth: + type: string + required: false + vlans: + type: string + required: false + ports: + type: list + entry_schema: + type: string + description: ports list + required: false + portNames: + type: list + entry_schema: + type: string + description: port name list + required: false + regionId: + type: string + required: false + description: + type: string + default: 'Vpn Gateway' + +# ***************************************************************************** +# data types +# ***************************************************************************** +data_types: + + VlanType: + derived_from: tosca.datatypes.Root + properties: *Vlan + + SiteSubnetType: + derived_from: tosca.datatypes.Root + properties: *SiteSubnet + + GatewayType: + derived_from: tosca.datatypes.Root + properties: *Gateway + + SubnetAttributes: + derived_from: tosca.datatypes.Root + properties: + id: + type: string + required: false + parentId: + type: string + required: false + networkId: + type: string + required: false + subnetId: + type: string + required: false + + UnderlayResourcesType: + derived_from: tosca.datatypes.Root + properties: + id: + type: string + required: false + parentId: + type: string + required: false + projectId: + type: string + required: false + routerId: + type: string + required: false + + + ReliabilityType: + derived_from: string + constraints: + - valid_values: ['singleFixedNetwork', + 'dualFixedNetwork', + 'fixedAndWirelessNetwork', + 'EthernetNetwork', + 'VDSLNetwork', + 'GSHDSLNetwork', + 'EthernetAndLTENetwork', + 'EthernetAndEthernetNetwork', + 'EthernetAndVDSLNetwork', + 'VDSLAndLTENetwork'] + + NvStringType: + derived_from: tosca.datatypes.Root + properties: + id: + type: string + required: false + name: + type: string + description: name + required: false + value: + type: string + description: value + required: false + firstParentUuid: + type: string + description: uuid + required: false + + ServicePathHopType: + derived_from: tosca.datatypes.Root + properties: + name: + type: string + description: "SFC name" + default: 'none' + hopNumber: + type: integer + description: Hop Number of the SFC. Starting from 1. + sfiId: + type: string + description: The identity of service function instance + sfgId: + type: string + description: Reserved.The identity of service function group instance + + ServiceClassiferType: + derived_from: tosca.datatypes.Root + properties: + interfaceName: + type: string + description: The name of interface. + zone: + type: string + description: trust zone or untrust zone + rules: + type: list + entry_schema: + type: RuleType + + RuleType: + derived_from: tosca.datatypes.Root + properties: + protocol: + type: string + description: The protocol type of the rule. + policy: + type: string + description: The policy name of the rule + srcPort: + type: string + description: The srcPort name + destPort: + type: string + description: The destPort name. + srcIp: + type: string + description: The src IP address + srcMask: + type: string + description: The src IP mask address + destIp: + type: string + description: The dest IP address + destMask: + type: string + description: The dest IP mask address + + RouteEntryInfoType: + derived_from: tosca.datatypes.Root + properties: + siteId: + type: string + description: site id. + subnetId: + type: string + description: subnet id + cidr: + type: string + description: cidr + vpnGatewayId: + type: string + description: vpn gateway id. + internetGatewayId: + type: string + description: internet gateway id + nextHop: + type: string + description: next hop + precendence: + type: string + description: precendence + routeType: + type: string + description: static-routing for now + + NeMoType: + derived_from: tosca.datatypes.Root +# properties: *BaseServiceInfo + properties: + version: + type: string + description: version. + logicId: + type: string + description: logic id of NE. + phyNeId: + type: string + description: physical id of NE. + managementDomainId: + type: list + entry_schema: + type: string + description: management Domain Id. + controllerId: + type: list + entry_schema: + type: string + description: Controller Id list. + siteId: + type: list + entry_schema: + type: string + description: site Id list + productName: + type: string + description: product name + isVirtual: + type: string + description: whether is a virtual ne + ipAddress: + type: string + description: ip Address + source: + type: string + description: (scope=network_me,os,network_ems,user) + owner: + type: string + description: owner + serialNumber: + type: string + description: serial Number + manufacturer: + type: string + description: manufacturer + manufactureDate: + type: string + description: manufacture Date + nativeId: + type: string + description: native id + accessIpVersion: + type: string + description: (scope=ipv4,ipv6,ipv4/ipv6) + neRole: + type: string + description: ne role + + + +# ***************************************************************************** +# node types +# ***************************************************************************** + +node_types: + + # ***************************************************************************** + # Enterprise2Dc Service Endpoints + # ***************************************************************************** + sdno.node.ServiceEndPoint.ThinCpe: + derived_from: sdno.node.ServiceEndPoint + + # define more specific Dc service endpoint (DC VAS or VNF ?) + sdno.node.ServiceEndPoint.DcEndpoint: + derived_from: sdno.node.ServiceEndPoint + + # ***************************************************************************** + # Enterprise2DC + # ***************************************************************************** + + sdno.node.ConnectivityService.Enterprise2Dc: + derived_from: sdno.node.ConnectivityService + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + deploy: + description: "Deploy Enterprise2Dc" + implementation: + # primary: + dependencies: + - sdno.node.Connection.VpcSubnet/deploy + - sdno.node.Connection.SiteSubnet/deploy + - sdno.node.Connection.Vpn/deploy + - sdno.node.Connection.Sfc/deploy + undeploy: + description: "Deploy Enterprise2Dc" + implementation: + # primary: + dependencies: + - sdno.node.Connection.VpcSubnet/undeploy + - sdno.node.Connection.SiteSubnet/undeploy + - sdno.node.Connection.Vpn/undeploy + - sdno.node.Connection.Sfc/undeploy + +# MUST FIND ANOTHER WAY TO RESTRICT THE SPECIFIC NETWORK HIERARCHY FOR THE SERVICE AT THE SERVICE DEFINITION LAYER +# CURRENTLY ENFORCED IN THE TEMPLATE +# +# requirements: +# - endPoint: +# node: sdno.node.ServiceEndPoint.ThinCpe +# capability: sdno.capability.ServiceEndPoint +# relationship: sdno.relationship.ServiceEndPoint +# - endPoint: +# node: sdno.node.ServiceEndPoint.DcEndpoint +# capability: sdno.capability.ServiceEndPoint +# relationship: sdno.relationship.ServiceEndPoint +# - realizes: +# node: sdno.node.Connection.SiteSubnet +# capability: sdno.capability.Realizes +# relationship: sdno.relationship.RealizedBy +# - realizes: +# node: sdno.node.Connection.Vpn +# capability: sdno.capability.Realizes +# relationship: sdno.relationship.RealizedBy +# - realizes: +# node: sdno.node.Connection.VpcSubnet +# capability: sdno.capability.Realizes +# relationship: sdno.relationship.RealizedBy +# - realizes: +# node: sdno.node.Connection.Sfc +# capability: sdno.capability.Realizes +# relationship: sdno.relationship.RealizedBy + + + # ***************************************************************************** + # VPC Node Types (VpcSubnet and Vpc) + # ***************************************************************************** + + sdno.node.Connection.VpcSubnet: + derived_from: sdno.node.Connection + properties: + cidr: + type: string + description: VPC subnet IP network, should be in format CIDR format. + required: false + vni: + type: integer + #format: int32 + description: The Vxlan id + required: false + vpcId: + type: string + description: VPC owns the subnet. + required: false + gatewayIp: + type: string + description: Gateway Ip addressed used for this subnet. ipv4 supported. VPC service set this property when Subnet is created. + required: false + attributes: + type: SubnetAttributes + required: false + description: + type: string + default: "VpcSubnet Service" + requirements: + - realizes: + node: sdno.node.Connection.Vpc + capability: sdno.capability.Realizes + relationship: sdno.relationship.RealizedBy + artifacts: + swagger: + file: swagger/vpc.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/vpc.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnovpc/v1/subnets' + delete: + #implementation: 'DELETE /openoapi/sdnovpc/v1/subnets/{subnetId}' + get: + implementation: 'GET /openoapi/sdnovpc/v1/subnets/{subnetId}' + deploy: + implementation: + primary: 'POST /openoapi/sdnovpc/v1/subnets' + dependencies: + - sdno.node.Connection.Vpc/deploy + - sdno.node.Connection.VpcSubnet/deploy + undeploy: + implementation: + primary: 'DELETE /openoapi/sdnovpc/v1/subnets/{subnetId}' + dependencies: + - sdno.node.Connection.VpcSubnet/undeploy + - sdno.node.Connection.Vpc/undeploy + update: + #implementation: 'PUT /openoapi/sdnovpc/v1/subnet/{subnetId}' + + + + + sdno.node.Connection.Vpc: + derived_from: sdno.node.Connection + properties: + externalIp: + type: string + description: External IP assigned to the VPC. ipv4 supported. Used by SNAT and IPSec VPN Service. VPC service set this property after VPC is created. + required: false + attributes: + type: UnderlayResourcesType + required: false + description: + type: string + default: "Vpc Service" + artifacts: + swagger: + file: swagger/vpc.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/vpc.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnovpc/v1/vpcs' + delete: + #implementation: 'DELETE /openoapi/sdnovpc/v1/vpcs/{vpcId}' + get: + implementation: 'GET /openoapi/sdnovpc/v1/vpcs/{vpcId}' + deploy: + implementation: 'POST /openoapi/sdnovpc/v1/vpcs' + undeploy: + implementation: 'DELETE /openoapi/sdnovpc/v1/vpcs/{vpcId}' + update: + #implementation: 'PUT /openoapi/sdnovpc/v1/vpsc/{vpcId}' + + # ***************************************************************************** + # Site Node Types (Subnet, Vlan, Site with thinCPE and cCPE) + # ***************************************************************************** + + sdno.node.Connection.SiteSubnet: + derived_from: sdno.node.Connection + properties: *SiteSubnet + requirements: + - realizes: + node: sdno.node.Connection.Vlan + capability: sdno.capability.Realizes + relationship: sdno.relationship.RealizedBy + artifacts: + swagger: + file: swagger/site.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/site.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnolocalsite/v1/subnets' + delete: + #implementation: 'DELETE /openoapi/sdnolocalsite/v1/subnets/{uuid}' + get: + implementation: 'GET /openoapi/sdnolocalsite/v1/subnets' + deploy: + implementation: + primary: 'POST /openoapi/sdnolocalsite/v1/subnets' + dependencies: + - sdno.node.Connection.Vlan/deploy + - sdno.node.Connection.SiteSubnet/deploy + undeploy: + implementation: + primary: 'DELETE /openoapi/sdnolocalsite/v1/subnets/{uuid}' + dependencies: + - sdno.node.Connection.SiteSubnet/undeploy + - sdno.node.Connection.Vlan/undeploy + - sdno.node.ConnectionEndPoint.ThinCpe/undeploy + - sdno.node.ConnectionEndPoint.VCpe/undeploy + - sdno.node.ConnectionEndPoint.Site/undeploy + update: + implementation: 'PUT /openoapi/sdnolocalsite/v1/subnets/{uuid}' + + sdno.node.Connection.Vlan: + derived_from: sdno.node.Connection + properties: *Vlan + requirements: + - realizes: + node: sdno.node.Connection.Site + capability: sdno.capability.Realizes + relationship: sdno.relationship.RealizedBy + artifacts: + swagger: + file: swagger/site.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/site.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnolocalsite/v1/vlans' + delete: + #implementation: 'DELETE /openoapi/sdnolocalsite/v1/vlans/{uuid}' + get: + implementation: 'GET /openoapi/sdnolocalsite/v1/vlans' + deploy: + implementation: + primary: 'POST /openoapi/sdnolocalsite/v1/vlans' + dependencies: + - sdno.node.Connection.Site/deploy + - sdno.node.Connection.Vlan/deploy + undeploy: + implementation: 'DELETE /openoapi/sdnolocalsite/v1/vlans/{uuid}' + update: + implementation: 'PUT /openoapi/sdnolocalsite/v1/vlans/{uuid}' + + sdno.node.ConnectionEndPoint.ThinCpe: + derived_from: sdno.node.ConnectionEndPoint + properties: + siteId: + type: string + description: site id + required: false + esn: + type: string + description: esn + required: false + oldEsn: + type: string + description: old esn + required: false + localCpeType: + type: string + description: local cpe type + required: false + description: + type: string + default: 'ThinCpe' + requirements: + - realizes: + node: sdno.node.Connection.Site + capability: sdno.capability.Realizes + relationship: sdno.relationship.RealizedBy + artifacts: + swagger: + file: swagger/site.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/site.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + implementation: 'POST /openoapi/sdnolocalsite/v1/local-cpes' + delete: + #implementation: 'DELETE /openoapi/sdnolocalsite/v1/local-cpes/{uuid}' + get: + implementation: 'GET /openoapi/sdnolocalsite/v1/local-cpes' + deploy: + implementation: 'POST /openoapi/sdnolocalsite/v1/local-cpes' + undeploy: + implementation: 'DELETE /openoapi/sdnolocalsite/v1/local-cpes/{uuid}' + update: + #implementation: 'PUT /openoapi/sdnolocalsite/v1/local-cpes/{uuid}' + + sdno.node.ConnectionEndPoint.VCpe: + derived_from: sdno.node.ConnectionEndPoint + properties: + siteId: + type: string + description: site id + required: false + popId: + type: string + description: pop id + required: false + esn: + type: string + description: esn + required: false + mgrIp: + type: string + description: mgr ip + required: false + mgrMask: + type: string + description: mask of mgr ip + required: false + mgrGateway: + type: string + description: mgr gateway ip + required: false + controllerIp: + type: string + description: controller ip + required: false + controllerMask: + type: string + description: controller mask + required: false + vendor: + type: string + description: vendor + required: false + type: + type: string + description: type + required: false + vnfdVersion: + type: string + description: vnfd Version + required: false + vnfdId: + type: string + description: vnfd id + required: false + callbackUrl: + type: string + description: callback Url + required: false + vnfmId: + type: string + description: vnfm id + required: false + dcLocation: + type: string + description: dc location + required: false + rangeId: + type: string + description: range id + required: false + referenceCount: + type: integer + #format: int32 + description: reference count + required: false + template: + type: string + description: template + required: false + description: + type: string + default: 'vCpe' + requirements: + - realizes: + node: sdno.node.Connection.Site + capability: sdno.capability.Realizes + relationship: sdno.relationship.RealizedBy + artifacts: + swagger: + file: swagger/site.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/site.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnolocalsite/v1/cloud-cpes' + delete: + #implementation: 'DELETE /openoapi/sdnolocalsite/v1/cloud-cpes/{uuid}' + get: + implementation: 'GET /openoapi/sdnolocalsite/v1/cloud-cpes' + deploy: + implementation: 'POST /openoapi/sdnolocalsite/v1/cloud-cpes' + undeploy: + implementation: 'DELETE /openoapi/sdnolocalsite/v1/cloud-cpes/{uuid}' + update: + implementation: 'PUT /openoapi/sdnolocalsite/v1/cloud-cpes/{uuid}' + + + sdno.node.Connection.Site: + derived_from: sdno.node.Connection + properties: + deployCloudCpeByDeafult: + type: string + description: + default: 'true' + required: false + popId: + type: string + description: pop id + required: false + localCpeType: + type: string + description: local cpe type + required: false + siteDescriptor: + type: string + description: site Descriptor + required: false + reliability: + type: ReliabilityType + description: + required: false + isEncrypt: + type: string + description: is encrypt + required: false + vpnUpstreamBandwidth: + type: integer + #format: int64 + description: vpn Upstream Bandwidth default=-2L + required: false + vpnDownstreamBandwidth: + type: integer + # format: int64 + description: vpn Downstream Bandwidth default=-2L + required: false + totalDownstreamBandwidth: + type: string + description: total Downstream Bandwidth + required: false + totalUpstreamBandwidth: + type: string + description: total Upstream Bandwidth + required: false + # localCpes: + # type: list + # entry_schema: + # type: NeMoType + # required: false + # cloudCpes: + # type: list + # entry_schema: + # type: NeMoType + # required: false + # subnets: + # type: list + # entry_schema: + # type: SiteSubnetType + # required: false + # #revisit the type + # vlans: + # type: list + # entry_schema: + # type: VlanType + # required: false + #revisit the type + routes: + type: list + entry_schema: + type: RouteEntryInfoType + required: false + internetGateway: + type: list + entry_schema: + type: GatewayType + required: false + description: + type: string + default: 'Site Service' +# MUST FIND ANOTHER WAY TO RESTRICT THE SPECIFIC NETWORK HIERARCHY FOR THE SERVICE AT THE SERVICE DEFINITION LAYER +# CURRENTLY ENFORCED IN THE TEMPLATE +# + # requirements: + # - endPoint: + # node: sdno.node.ConnectionEndPoint.ThinCpe + # capability: sdno.capability.ConnectionEndPoint + # - endPoint: + # node: sdno.node.ConnectionEndPoint.VCpe + # capability: sdno.capability.ConnectionEndPoint + artifacts: + swagger: + file: swagger/site.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/site.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnolocalsite/v1/sites' + delete: + #implementation: 'DELETE /openoapi/sdnolocalsite/v1/sites/{uuid}' + get: + implementation: 'GET /openoapi/sdnolocalsite/v1/sites' + deploy: + implementation: + primary: 'POST /openoapi/sdnolocalsite/v1/sites' + dependencies: + - sdno.node.Connection.Site/deploy + - sdno.node.ConnectionEndPoint.ThinCpe/deploy + - sdno.node.ConnectionEndPoint.VCpe/deploy + undeploy: + implementation: 'DELETE /openoapi/sdnolocalsite/v1/sites/{uuid}' + update: + implementation: 'PUT /openoapi/sdnolocalsite/v1/sites/{uuid}' + + # ***************************************************************************** + # VPN Node Types (Vpn, VpnConnection with siteGW and vpcGW) + # Order of requests: vpn, siteGW, vpcGW, vpnConnection + # ***************************************************************************** + + sdno.node.Connection.Vpn: + derived_from: sdno.node.Connection + properties: + vpnDescriptor: + type: string + description: vpn template name + required: false + requirements: + - realizes: + node: sdno.node.Connection.VpnConnection + capability: sdno.capability.Realizes + relationship: sdno.relationship.RealizedBy + artifacts: + swagger: + file: swagger/overlay.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/overlay.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + implementation: 'POST /openoapi/sdnooverlay/v1/vpns' + delete: + implementation: 'DELETE /openoapi/sdnooverlay/v1/vpns/{uuid}' + get: + implementation: 'GET /openoapi/sdnooverlay/v1/vpns' + deploy: + implementation: + primary: 'POST /openoapi/sdnooverlay/v1/vpns/action/deploy' + dependencies: + - sdno.node.Connection.Vpn/deploy + - sdno.node.Connection.VpnConnection/deploy + undeploy: + implementation: + primary: 'DELETE /openoapi/sdnooverlay/v1/vpns/action/undeploy' + dependencies: + - sdno.node.Connection.VpnConnection/undeploy + - sdno.node.ConnectionEndPoint.SiteGateway/undeploy + - sdno.node.ConnectionEndPoint.VpcGateway/undeploy + - sdno.node.Connection.Vpn/undeploy + update: + implementation: 'PUT /openoapi/sdnooverlay/v1/vpns/{uuid}' + + sdno.node.ConnectionEndPoint.SiteGateway: + derived_from: sdno.node.ConnectionEndPoint + properties: *Gateway + artifacts: + swagger: + file: swagger/overlay.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/overlay.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnooverlay/v1/vpn-gateways' + delete: + #implementation: 'DELETE /openoapi/sdnooverlay/v1/vpn-gateways' + get: + implementation: 'GET /openoapi/sdnooverlay/v1/vpn-gateways' + deploy: + implementation: 'POST /openoapi/sdnooverlay/v1/vpn-gateways' + undeploy: + implementation: 'DELETE /openoapi/sdnooverlay/v1/vpn-gateways/{uuid}' + update: + implementation: 'PUT /openoapi/sdnooverlay/v1/vpn-gateways/{uuid}' + + sdno.node.ConnectionEndPoint.VpcGateway: + derived_from: sdno.node.ConnectionEndPoint + properties: *Gateway + artifacts: + swagger: + file: swagger/overlay.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/overlay.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnooverlay/v1/vpn-gateways' + delete: + #implementation: 'DELETE /openoapi/sdnooverlay/v1/vpn-gateways' + get: + implementation: 'GET /openoapi/sdnooverlay/v1/vpn-gateways' + deploy: + implementation: 'POST /openoapi/sdnooverlay/v1/vpn-gateways' + undeploy: + implementation: 'DELETE /openoapi/sdnooverlay/v1/vpn-gateways/{uuid}' + update: + implementation: 'PUT /openoapi/sdnooverlay/v1/vpn-gateways/{uuid}' + + sdno.node.Connection.VpnConnection: + derived_from: sdno.node.Connection + properties: + vpnId: + type: string + required: false + aEndVpnGatewayId: + type: string + required: false + zEndVpnGatewayId: + type: string + required: false + vni: + type: string + required: false + description: + type: string + default: 'vpn connection' +# MUST FIND ANOTHER WAY TO RESTRICT THE SPECIFIC NETWORK HIERARCHY FOR THE SERVICE AT THE SERVICE DEFINITION LAYER +# CURRENTLY ENFORCED IN THE TEMPLATE +# +# requirements: +# - endPoint: +# node: sdno.node.ConnectionEndPoint.SiteGateway +# capability: sdno.capability.ConnectionEndPoint +# - endPoint: +# node: sdno.node.ConnectionEndPoint.VpcGateway +# capability: sdno.capability.ConnectionEndPoint + artifacts: + swagger: + file: swagger/overlay.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/overlay.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + implementation: 'POST /openoapi/sdnooverlay/v1/vpn-connections' + delete: + implementation: 'DELETE /openoapi/sdnooverlay/v1/vpn-connections/{uuid}' + get: + implementation: 'GET /openoapi/sdnooverlay/v1/vpn-connections' + deploy: + implementation: + primary: 'POST /openoapi/sdnooverlay/v1/vpn-connections/action/deploy' + dependencies: + - sdno.node.ConnectionEndPoint.SiteGateway/deploy + - sdno.node.ConnectionEndPoint.VpcGateway/deploy + - sdno.node.Connection.VpnConnection/deploy + undeploy: + implementation: 'POST /openoapi/sdnooverlay/v1/vpn-connections/action/undeploy' + update: + implementation: 'PUT /openoapi/sdnooverlay/v1/vpn-connections/{uuid}' + + # ***************************************************************************** + # SFC Node Types + # ***************************************************************************** + + sdno.node.Connection.Sfc: + derived_from: sdno.node.Connection + properties: + sfcName: + type: string + description: The name of service function chain template + required: false + sfcId: + type: string + description: The id of service function chain template + required: false + popId: + type: string + description: The id of pop + required: false + scfNeId: + type: string + description: The id of scf NE + required: false + symmetric: + type: boolean + description: Whetehr symmetric + required: false + transportType: + type: string + description: The type of the transport + required: false + servicePathHops: + type: list + entry_schema: + type: ServicePathHopType + description: Hop Number of the SFC + required: false + classifiers: + type: list + entry_schema: + type: ServiceClassiferType + description: The list of sfc + required: false + description: + type: string + default: 'Service Function Chain Service' + artifacts: + swagger: + file: swagger/sfc.jaml + type: sdno.artifacts.Implementation.Swagger + mapper: + file: mapper/sfc.tsmap + type: sdno.artifacts.Implementation.ToscaSwaggerMapper + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + #implementation: 'POST /openoapi/sdnoservicechain/v1/paths' + delete: + #implementation: 'DELETE /openoapi/sdnoservicechain/v1/paths/{uuid}' + get: + #implementation: 'GET /openoapi/sdnoservicechain/v1/paths' + deploy: + implementation: 'POST /openoapi/sdnoservicechain/v1/paths' + undeploy: + implementation: 'DELETE /openoapi/sdnoservicechain/v1/paths/{uuid}' + update: + #implementation: 'PUT /openoapi/sdnoservicechain/v1/paths/{uuid}' + + # ***************************************************************************** + # Onderlayvpn Node Types + # ***************************************************************************** + tosca.nodes.sdno.NS.overlayvpn: + properties: + id: + type: string + required: false + template_name: + type: string + required: false + version: + type: string + required: false + vendor: + type: string + required: false + template_author: + type: string + required: false + vpnName: + type: string + required: false + vpnDescription: + type: string + required: false + siteName: + type: string + required: false + siteCidr: + type: string + required: false + subnetVlan: + type: integer + required: false + siteVni: + type: integer + required: false + vpcName: + type: string + required: false + vpcSubnetName: + type: string + required: false + vpcSubnetCidr: + type: string + required: false + vpcVni: + type: integer + required: false + vpnType: + type: string + required: false + dcGwIp: + type: string + required: false + dcFwIp: + type: string + required: false + dcLbIp: + type: string + required: false
\ No newline at end of file diff --git a/refspec/open-o/sdn-nsd/sdn-nsd-dm-sample.rst b/refspec/open-o/sdn-nsd/sdn-nsd-dm-sample.rst new file mode 100755 index 0000000..3a8488e --- /dev/null +++ b/refspec/open-o/sdn-nsd/sdn-nsd-dm-sample.rst @@ -0,0 +1,15 @@ +========================================================================
+Copyright 2017 CMCC Corporation.
+
+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.
+=========================================================================
\ No newline at end of file diff --git a/refspec/open-o/sdn-nsd/sdn-nsd-im-sample.rst b/refspec/open-o/sdn-nsd/sdn-nsd-im-sample.rst new file mode 100755 index 0000000..3a8488e --- /dev/null +++ b/refspec/open-o/sdn-nsd/sdn-nsd-im-sample.rst @@ -0,0 +1,15 @@ +========================================================================
+Copyright 2017 CMCC Corporation.
+
+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.
+=========================================================================
\ No newline at end of file diff --git a/refspec/open-o/sdn-nsd/sdno_type_definition.yaml b/refspec/open-o/sdn-nsd/sdno_type_definition.yaml new file mode 100644 index 0000000..5b63750 --- /dev/null +++ b/refspec/open-o/sdn-nsd/sdno_type_definition.yaml @@ -0,0 +1,540 @@ +# Copyright 2017 Huawei Technologies Co., Ltd. +# +# 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. +tosca_definitions_version: tosca_simple_yaml_1_0 +description: sdno basic types + + +metadata: + version: 0.1 + vendor: sdno + template_author: Huawei + +# ***************************************************************************** +# macros +# **************************************************************************** +dsl_definitions: + + BaseServiceInfo: &BaseServiceInfo + adminStatus: + type: AdministrationStateType + description: Used to administratively activate or deactivate already deployed service object + default: 'none' + operStatus: + type: OperationalStateType + description: Used to indicate if the service entity is operational. + default: 'none' + syncStatus: + type: SyncStateType + description: Used to indicate of the service entity is in sync or out of sync with the network + default: 'none' + actionState: + type: ActionStateType + description: Stores the result of the last action on the service object. + default: 'none' + statusReason: + type: string + description: In case of ERROR actionState, it will have the reason for the error. + Otherwise its empty. It is required to make create process to be asynchronous. + default: 'none' + createTime: + type: string + description: create time + default: 'none' + updateTime: + type: string + description: update time + default: 'none' + ownerID: + type: string + description: ID of the owner of the object, can contain controllerID + default: 'sdno' + tenantID: + type: string + description: ID of the tenant + default: 'none' + location: + type: string + description: Location if on single location + default: 'none' + additionalInfo: + type: list + #max size = 1000 + entry_schema: + type: AdditionalInfoRow + required: false + +# ***************************************************************************** +# data types +# ***************************************************************************** +data_types: + + ActionType: + derived_from: string + description: >- + Generic API operations for Connectivity Service lifecycle management. The specific REST requests would be mapped to + these generic ones. + constraints: + - valid_values: ['create','deploy','get','update','undeploy','delete'] + + ActionStateType: + derived_from: string + description: State and/or result of the generic API operations. In the case of the exception, additional information may be present in the statusReason property. + constraints: + - valid_values: ['none', 'normal', 'creating', 'deleting', 'updating', 'create_exception', 'update_exception','delete_exception','deploying', 'deploy_exception', 'undeploying', 'undeploy_exception', 'checking', 'check_exception'] + + LifecycleStateType: + derived_from: string + description: >- + Currently supported lifecycle states for connectivity service. Connectivity Service can either be created + in the inventory or deployed on the network. + constraints: + - valid_values: ['none','created','deployed'] + + AdministrationStateType: + derived_from: string + description: >- + Administrative State that indicates if already deployed connectivity service object or its component is activated or not. + constraints: + - valid_values: ['none', 'active', 'inactive', 'partially_inactive'] + + OperationalStateType: + derived_from: string + description: >- + Operational State that indicates if already deployed and activated connectivity service object or its component is operational or not. + constraints: + - valid_values: ['none','up','down', 'partially_down'] + + + SyncStateType: + derived_from: string + description: >- + Sync State that indicates if already deployed and activated connectivity service object is in sync or out of sync with the network. + constraints: + - valid_values: ['none', 'sync', 'out-sync'] + + DirectionalityType: + derived_from: string + description: Directionality of the connectivity service flow in the endpoint or port. + constraints: + - valid_values: ['input','output','bidirectional'] + + AdditionalInfoRow: + derived_from: tosca.datatypes.Root + description: Row in the additional info list + properties: + id: + type: string + default: 'none' + name: + type: string + default: 'none' + value: + type: string + default: 'none' + firstParentUuid: + type: string + default: 'none' + + StateMachineRow: + derived_from: tosca.datatypes.Root + description: Row in the state transition table + properties: + apiOperation: + type: ActionType + currentState: + type: LifecycleStateType + transitionWorkflow: + type: string + newState: + type: LifecycleStateType + + StateMachineType: + derived_from: tosca.datatypes.Root + description: Connectivity Service State Engine + properties: + rows: + type: list + entry_schema: + type: StateMachineRow + + +# ***************************************************************************** +# capability types +# ***************************************************************************** + +capability_types: + # ConnectionEndPoint can be derived from tosca.capabilities.Endpoint ? + sdno.capability.ConnectionEndPoint: + derived_from: tosca.capabilities.Root + + # ServiceEndPoint can be derived from tosca.capabilities.Endpoint ? + sdno.capability.ServiceEndPoint: + derived_from: tosca.capabilities.Root + + sdno.capability.Realizes: + derived_from: tosca.capabilities.Root + + sdno.capability.Host: + derived_from: tosca.capabilities.Node + + sdno.capability.Bindable: + derived_from: tosca.capabilities.Node + +# ***************************************************************************** +# interface_types +# ***************************************************************************** +interface_types: + + sdno.interfaces.lifecycle.Standard: + create: + description: Standard lifecycle create operation. + update: + description: Standard lifecycle configure and update operation. + deploy: + description: Standard lifecycle deploy operation. + undeploy: + description: Standard lifecycle undeploy operation. + delete: + description: Standard lifecycle delete operation. + get: + description: Standard lifecycle get operation. + + +# ***************************************************************************** +# relationship types +# ***************************************************************************** +relationship_types: + + sdno.relationship.ServiceEndPoint: + description: >- + The relationship specifies which ServiceEndPoints are terminating the ConnectivityService. + The association of the ConnectivityService to ServiceEndPoints is made via the Ports of the ConnectivityService, + where each Port of the ConnectivityService has a role and directionality in the context of the ConnectivityService. + derived_from: tosca.relationships.Root + properties: + # This is initial simple ConnectivityServicePort model, this may be enhanced later via separate Nodes and/or Types + connectivityServicePort: + type: string + required: false + role: + type: string + required: false + directionality: + type: DirectionalityType + required: false + valid_target_types: [sdno.capability.ServiceEndPoint] + + sdno.relationship.ConnectionEndPoint: + description: >- + The relationship specifies which ConnectionEndPonts are terminating the Connection. + The association of the Connection to ConnectionEndPoints is made via the Ports of the Connection, + where each Port of the Connection has a role and directionality in the context of the Connection. + derived_from: tosca.relationships.Root + properties: + # This is initial simple ConnectionPort model, this may be enhanced later via separate Nodes and/or Types + connectionPort: + type: string + required: false + role: + type: string + required: false + directionality: + type: DirectionalityType + required: false + valid_target_types: [sdno.capability.ConnectionEndPoint] + + sdno.relationship.RealizedBy: + description: >- + The relationship specifies what Connenctions are Connectivity Services or Connections realized from. + derived_from: tosca.relationships.Root + valid_target_types: [sdno.capability.Realizes] + + sdno.relationship.HostedOn: + description: >- + The relationship specifies what Node the Endpoint is hosted on. + derived_from: tosca.relationships.Root + valid_target_types: [sdno.capability.Host] + + sdno.relationship.BindsTo: + description: >- + The relationship represents a network association relationship between NodeEdgePoint and Network Node types + derived_from: tosca.relationships.DependsOn + valid_target_types: [sdno.capability.Bindable] + + +# ***************************************************************************** +# artifact types +# ***************************************************************************** +artifact_types: + sdno.artifacts.Implementation.Swagger: + derived_from: tosca.artifacts.Implementation + description: swagger API document + mime_type: application/x-jaml + file_ext: [jaml] + + sdno.artifacts.Implementation.ToscaSwaggerMapper: + derived_from: tosca.artifacts.Implementation + description: mapping between property of TOSCA node instance and data model used by swagger API + mime_type: application/x-tsmap + file_ext: [tsmap] + + +# ***************************************************************************** +# node types +# ***************************************************************************** +node_types: + + sdno.node.Root: + derived_from: tosca.nodes.Root + description: The SDNO Node Type all other SDNO base Node Types derive from + properties: + id: + type: string + required: true + default: 'none' + name: + type: string + required: true + default: 'none' + description: + type: string + required: true + default: 'none' + version: + type: string + required: true + default: '1.0' + + sdno.node.Node: + derived_from: sdno.node.Root + description: >- + It represents a network element which can be managed remotely (through controller or not). Sometimes called managed element. + properties: + ipAddress: + type: string + default: 0.0.0.0 + logicID: + type: string + default: 'none' + phyNeID: + type: string + default: 'none' + nativeID: + type: string + default: 'none' + controllerID: + type: string + default: 'none' + siteName: + type: string + default: 'none' + capabilities: + host: + type: sdno.capability.Host + binding: + type: sdno.capability.Bindable + + sdno.node.NodeEdgePoint: + derived_from: sdno.node.Root + description: >- + It represents the inward network-facing aspects of the edge-port functions that access the forwarding capabilities provided by the Node. + properties: + mgrIP: + type: string + default: 0.0.0.0 + requirements: + - binding: + node: sdno.node.Node + capability: sdno.capability.Bindable + relationship: sdno.relationship.BindsTo + + sdno.node.ServiceEndPoint: + derived_from: sdno.node.Root + description: >- + It represents the outward customer-facing aspects of the edge-port functions that access the forwarding capabilities provided by the Node. + Hence it provides a limited, simplified view of interest to external clients, + that enable the clients to request connectivity without the need to understand the provider network internals. + properties: *BaseServiceInfo + capabilities: + endPoint: + type: sdno.capability.ServiceEndPoint + requirements: + - node: + node: sdno.node.Node + capability: sdno.capability.Host + relationship: sdno.relationship.HostedOn + occurrences: [0, UNBOUNDED] + + sdno.node.ConnectivityService: + derived_from: sdno.node.Root + description: >- + It represents an “intent-like” request for connectivity between two or more ServiceEndPoints. + As such, ConnectivityService is a container for connectivity request details and is distinct + from the Connection that realizes the request + # properties: *BaseServiceInfo + properties: + adminStatus: + type: AdministrationStateType + description: Used to administratively activate or deactivate already deployed service object + default: 'none' + operStatus: + type: OperationalStateType + description: Used to indicate if the service entity is operational. + default: 'none' + syncStatus: + type: SyncStateType + description: Used to indicate of the service entity is in sync or out of sync with the network + default: 'none' + actionState: + type: ActionStateType + description: Stores the result of the last action on the service object. + default: 'none' + statusReason: + type: string + description: In case of ERROR actionState, it will have the reason for the error. + Otherwise its empty. It is required to make create process to be asynchronous. + default: 'none' + createTime: + type: string + description: create time + default: 'none' + updateTime: + type: string + description: update time + default: 'none' + ownerID: + type: string + description: ID of the owner of the object, can contain controllerID + default: 'sdno' + tenantID: + type: string + description: ID of the tenant + default: 'none' + location: + type: string + description: Location if on single location + default: 'none' + additionalInfo: + type: list + #max size = 1000 + entry_schema: + type: AdditionalInfoRow + required: false + templateId: + type: string + default: 'none' + lifecycleState: + type: LifecycleStateType + default: 'none' + state_machine: + type: StateMachineType + default: + rows: + - {apiOperation: create, currentState: none, transitionWorkflow: create, newState: created} + - {apiOperation: create, currentState: created, transitionWorkflow: error, newState: created} + - {apiOperation: create, currentState: deployed, transitionWorkflow: error, newState: deployed} + - {apiOperation: deploy, currentState: none, transitionWorkflow: deploy, newState: deployed} + - {apiOperation: deploy, currentState: created, transitionWorkflow: deployCreated, newState: deployed} + - {apiOperation: deploy, currentState: deployed, transitionWorkflow: ERR, newState: deployed} + - {apiOperation: get, currentState: none, transitionWorkflow: ERR, newState: none} + - {apiOperation: get, currentState: created, transitionWorkflow: get, newState: created} + - {apiOperation: get, currentState: deployed, transitionWorkflow: get, newState: deployed} + - {apiOperation: update, currentState: none, transitionWorkflow: ERR, newState: none} + - {apiOperation: update, currentState: created, transitionWorkflow: updatecreated, newState: created} + - {apiOperation: update, currentState: deployed, transitionWorkflow: updateDeployed, newState: deployed} + - {apiOperation: undeploy, currentState: none, transitionWorkflow: ERR, newState: none} + - {apiOperation: undeploy, currentState: created, transitionWorkflow: ERR, newState: created} + - {apiOperation: undeploy, currentState: deployed, transitionWorkflow: undeploy, newState: created} + - {apiOperation: delete, currentState: none, transitionWorkflow: ERR, newState: none} + - {apiOperation: delete, currentState: created, transitionWorkflow: deleteCreated, newState: none} + - {apiOperation: delete, currentState: deployed, transitionWorkflow: deleteDeployed, newState: none} + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + create: + implementation: + primary: 'POST /openoapi/sdnonslcm/v1/ns' + delete: + implementation: + primary: 'DELETE /openoapi/sdnonslcm/v1/ns/{instanceid}' + get: + implementation: + primary: 'GET /openoapi/sdnonslcm/v1/ns/{instanceid}' + deploy: + implementation: + primary: 'POST /openoapi/sdnonslcm/v1/ns/{instanceid}/instantiate' + undeploy: + implementation: + primary: 'POST /openoapi/sdnonslcm/v1/ns/{instanceid}/terminate' + update: + implementation: + primary: 'PUT /openoapi/sdnonslcm/v1/ns/{instanceid}' + requirements: + - endPoint: + node: sdno.node.ServiceEndPoint + capability: sdno.capability.ServiceEndPoint + relationship: sdno.relationship.ServiceEndPoint + # check aria processing for the min=2 + occurrences: [2, UNBOUNDED] + - realizes: + node: sdno.node.Connection + capability: sdno.capability.Realizes + relationship: sdno.relationship.RealizedBy + occurrences: [1, UNBOUNDED] + + + sdno.node.ConnectionEndPoint: + derived_from: sdno.node.Root + properties: + *BaseServiceInfo + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + description: >- + It represents the ingress/egress port aspects that access the forwarding function provided + by the Connection. + capabilities: + endPoint: + type: sdno.capability.ConnectionEndPoint + requirements: + - node: + node: sdno.node.Node + capability: sdno.capability.Host + relationship: sdno.relationship.HostedOn + occurrences: [0, UNBOUNDED] + + sdno.node.Connection: + derived_from: sdno.node.Root + properties: + *BaseServiceInfo + interfaces: + standard: + type: sdno.interfaces.lifecycle.Standard + description: >- + The Connection represents an enabled potential for forwarding between two or more connectionEndPoints + capabilities: + realizes: + type: sdno.capability.Realizes + requirements: + - endPoint: + node: sdno.node.ConnectionEndPoint + capability: sdno.capability.ConnectionEndPoint + relationship: sdno.relationship.ConnectionEndPoint + # check aria processing for the min=2 + occurrences: [0, UNBOUNDED] + - realizes: + node: sdno.node.Connection + capability: sdno.capability.Realizes + relationship: sdno.relationship.RealizedBy + occurrences: [0, UNBOUNDED]
\ No newline at end of file |