summaryrefslogtreecommitdiffstats
path: root/docs/refspec/open-o/sdn-nsd
diff options
context:
space:
mode:
Diffstat (limited to 'docs/refspec/open-o/sdn-nsd')
-rw-r--r--docs/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_template.yaml181
-rw-r--r--docs/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_type_definition.yaml756
-rw-r--r--docs/refspec/open-o/sdn-nsd/enterprise2DC_template.yaml252
-rw-r--r--docs/refspec/open-o/sdn-nsd/enterprise2DC_type_definition.yaml1226
-rwxr-xr-xdocs/refspec/open-o/sdn-nsd/sdn-nsd-dm-sample.rst18
-rwxr-xr-xdocs/refspec/open-o/sdn-nsd/sdn-nsd-im-sample.rst18
-rw-r--r--docs/refspec/open-o/sdn-nsd/sdno_type_definition.yaml540
7 files changed, 2991 insertions, 0 deletions
diff --git a/docs/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_template.yaml b/docs/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_template.yaml
new file mode 100644
index 0000000..a7d5e42
--- /dev/null
+++ b/docs/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/docs/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_type_definition.yaml b/docs/refspec/open-o/sdn-nsd/VoLTE_underlayVPN_type_definition.yaml
new file mode 100644
index 0000000..e0ce37d
--- /dev/null
+++ b/docs/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/docs/refspec/open-o/sdn-nsd/enterprise2DC_template.yaml b/docs/refspec/open-o/sdn-nsd/enterprise2DC_template.yaml
new file mode 100644
index 0000000..c5d8714
--- /dev/null
+++ b/docs/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/docs/refspec/open-o/sdn-nsd/enterprise2DC_type_definition.yaml b/docs/refspec/open-o/sdn-nsd/enterprise2DC_type_definition.yaml
new file mode 100644
index 0000000..84a8b39
--- /dev/null
+++ b/docs/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/docs/refspec/open-o/sdn-nsd/sdn-nsd-dm-sample.rst b/docs/refspec/open-o/sdn-nsd/sdn-nsd-dm-sample.rst
new file mode 100755
index 0000000..0efaf2b
--- /dev/null
+++ b/docs/refspec/open-o/sdn-nsd/sdn-nsd-dm-sample.rst
@@ -0,0 +1,18 @@
+.. ========================================================================
+.. 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.
+.. =========================================================================
+
+sdn nfv dm sample
+=================
diff --git a/docs/refspec/open-o/sdn-nsd/sdn-nsd-im-sample.rst b/docs/refspec/open-o/sdn-nsd/sdn-nsd-im-sample.rst
new file mode 100755
index 0000000..07ecbda
--- /dev/null
+++ b/docs/refspec/open-o/sdn-nsd/sdn-nsd-im-sample.rst
@@ -0,0 +1,18 @@
+.. ========================================================================
+.. 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.
+.. =========================================================================
+
+sdn nfv im sample
+=================
diff --git a/docs/refspec/open-o/sdn-nsd/sdno_type_definition.yaml b/docs/refspec/open-o/sdn-nsd/sdno_type_definition.yaml
new file mode 100644
index 0000000..5b63750
--- /dev/null
+++ b/docs/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