summaryrefslogtreecommitdiffstats
path: root/refspec/open-o
diff options
context:
space:
mode:
authorlishitao <lishitao@huawei.com>2017-08-29 09:31:20 +0800
committerlishitao <lishitao@huawei.com>2017-08-29 09:31:20 +0800
commit2227cc7c562f2a3ca613a0296caff724cd3bc0b3 (patch)
treee3ab8cf90d80094536f556711ac7b7fe577f7bdd /refspec/open-o
parentf49fce4276ecb7507aa5136e118b3a2a0da58c82 (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')
-rwxr-xr-xrefspec/open-o/e2e-service/e2e-service-dm.yaml132
-rwxr-xr-xrefspec/open-o/e2e-service/e2e-service-im.docxbin0 -> 32238 bytes
-rwxr-xr-xrefspec/open-o/e2e-service/e2e-service-im.pdfbin0 -> 563693 bytes
-rwxr-xr-xrefspec/open-o/nfv-nsd/README.md28
-rwxr-xr-xrefspec/open-o/nfv-nsd/TOSCA_definition_nfv_ns_1_0.yaml176
-rw-r--r--refspec/open-o/nfv-nsd/TOSCA_definition_ns_ext_1_0.yaml232
-rwxr-xr-xrefspec/open-o/nfv-nsd/nfv-nsd-dm-sample.rst15
-rwxr-xr-xrefspec/open-o/nfv-nsd/nfv-nsd-im-sample.rst15
-rw-r--r--refspec/open-o/sdn-nsd/VoLTE_underlayVPN_template.yaml181
-rw-r--r--refspec/open-o/sdn-nsd/VoLTE_underlayVPN_type_definition.yaml756
-rw-r--r--refspec/open-o/sdn-nsd/enterprise2DC_template.yaml252
-rw-r--r--refspec/open-o/sdn-nsd/enterprise2DC_type_definition.yaml1226
-rwxr-xr-xrefspec/open-o/sdn-nsd/sdn-nsd-dm-sample.rst15
-rwxr-xr-xrefspec/open-o/sdn-nsd/sdn-nsd-im-sample.rst15
-rw-r--r--refspec/open-o/sdn-nsd/sdno_type_definition.yaml540
-rw-r--r--refspec/open-o/vnf-package/NS&VNF Package Specification-v0.4.pdfbin0 -> 646545 bytes
-rwxr-xr-xrefspec/open-o/vnf-package/vnf-package-sample.rst15
-rwxr-xr-xrefspec/open-o/vnfd/README.md27
-rw-r--r--refspec/open-o/vnfd/tosca-simple-nfv-1.1.yaml429
-rw-r--r--refspec/open-o/vnfd/tosca_definition_1.0.yaml892
-rw-r--r--refspec/open-o/vnfd/vNAT.yaml140
-rwxr-xr-xrefspec/open-o/vnfd/vnf-dm-sample.rst15
-rwxr-xr-xrefspec/open-o/vnfd/vnf-im-sample.rst15
23 files changed, 5116 insertions, 0 deletions
diff --git a/refspec/open-o/e2e-service/e2e-service-dm.yaml b/refspec/open-o/e2e-service/e2e-service-dm.yaml
new file mode 100755
index 0000000..013991f
--- /dev/null
+++ b/refspec/open-o/e2e-service/e2e-service-dm.yaml
@@ -0,0 +1,132 @@
+========================================================================
+Copyright 2017 OPEN-O 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.
+=========================================================================
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+# *****************************************************************************
+# Global Service type definitions
+# *****************************************************************************
+description: Global Service information model type definitions
+
+metadata:
+ version: 0.1
+ vendor: gso
+ template_author: Huawei
+
+# *****************************************************************************
+# macros definitions
+# *****************************************************************************
+dsl_definitions:
+
+# *****************************************************************************
+# data types
+# *****************************************************************************
+data_types:
+ gso.datatypes.service.basicInfo:
+ derived_from: tosca.datatypes.Root
+ properties:
+ createTime:
+ type: string
+ description: The creation time of the service
+ updateTime:
+ type: string
+ description: The update time of the service
+ creatorId:
+ type: string
+ description: The identification of the creator
+ location:
+ type: string
+ description: Location of the single domain
+
+# *****************************************************************************
+# interface_types
+# *****************************************************************************
+interface_types:
+ gso.interfaces.lifecycle.Standard:
+ derived_from: tosca.interfaces.Root
+ create:
+ description: Standard lifecycle create operation.
+ update:
+ description: Standard lifecycle configure and update operation.
+ instantiate:
+ description: Standard lifecycle instantiate operation.
+ terminate:
+ description: Standard lifecycle terminate operation.
+ delete:
+ description: Standard lifecycle delete operation.
+ query:
+ description: Standard lifecycle query operation.
+ scalingIn:
+ description: Standard lifecycle scalingIn operation.
+ scalingOut:
+ description: Standard lifecycle query operation.
+# *****************************************************************************
+# capability types
+# *****************************************************************************
+capability_types:
+ gso.capability.SingleDomainNs:
+ derived_from: tosca.capabilities.Root
+
+# *****************************************************************************
+# relationship types
+# *****************************************************************************
+relationship_types:
+ gso.relationship.DependOn:
+ derived_from: tosca.relationships.Root
+ description:
+ valid_target_types: [gso.capability.SingleDomainNs]
+
+# *****************************************************************************
+# node types
+# *****************************************************************************
+node_types:
+ gso.node.Root:
+ derived_from: tosca.nodes.Root
+ description: gso root type
+ properties:
+ id:
+ type: string
+ name:
+ type: string
+ description:
+ type: string
+ required: false
+ gso.node.NetworkService:
+ derived_from: gso.node.Root
+ description: basic network service
+ properties:
+ baseServiceInfo:
+ type:gso.datatypes.service.basicInfo
+ templateId:
+ type: string
+ serviceDefId:
+ type: string
+ interfaces:
+ standard:
+ type: gso.interfaces.lifecycle.Standard
+
+ gso.node.SingleDomainNetworkService:
+ derived_from: gso.node.NetworkService
+ description: single domain network service
+
+ gso.node.CrossDomainNetworkService:
+ derived_from: gso.node.NetworkService
+ description: cross domain network service
+ requirements:
+ - realizes:
+ node: gso.node.SingleDomainNetworkService
+ capability: gso.capability.SingleDomainNs
+ relationship: gso.relationship.DependOn
+ occurrences: [2, UNBOUNDED] \ No newline at end of file
diff --git a/refspec/open-o/e2e-service/e2e-service-im.docx b/refspec/open-o/e2e-service/e2e-service-im.docx
new file mode 100755
index 0000000..fca61dd
--- /dev/null
+++ b/refspec/open-o/e2e-service/e2e-service-im.docx
Binary files differ
diff --git a/refspec/open-o/e2e-service/e2e-service-im.pdf b/refspec/open-o/e2e-service/e2e-service-im.pdf
new file mode 100755
index 0000000..4e28204
--- /dev/null
+++ b/refspec/open-o/e2e-service/e2e-service-im.pdf
Binary files differ
diff --git a/refspec/open-o/nfv-nsd/README.md b/refspec/open-o/nfv-nsd/README.md
new file mode 100755
index 0000000..1eda1fe
--- /dev/null
+++ b/refspec/open-o/nfv-nsd/README.md
@@ -0,0 +1,28 @@
+#
+# Copyright 2017 ZTE 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.
+#
+
+1.nfv-nsd type definiton include three layer profile definitions.
+
+ A.simple tosca profle : tosca_definition_1.0.yaml
+ refer:http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.0/os/TOSCA-Simple-Profile-YAML-v1.0-os.docx
+
+ B.tosca nfv profile : TOSCA_definition_nfv_ns_1_0.yaml
+ refer:http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.doc
+
+ C.openo extension profile: TOSCA_definition_ns_ext_1_0.yaml
+ refer:Open-O definition
+
+2.nfv-nsd service template should import the profiles above. \ No newline at end of file
diff --git a/refspec/open-o/nfv-nsd/TOSCA_definition_nfv_ns_1_0.yaml b/refspec/open-o/nfv-nsd/TOSCA_definition_nfv_ns_1_0.yaml
new file mode 100755
index 0000000..23f2f93
--- /dev/null
+++ b/refspec/open-o/nfv-nsd/TOSCA_definition_nfv_ns_1_0.yaml
@@ -0,0 +1,176 @@
+#
+# Copyright 2017 ZTE 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.
+#
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Definitions file for all type of tosca-nfv specification.
+
+node_types:
+ tosca.nodes.nfv.VNF:
+ derived_from: tosca.nodes.Root
+ properties:
+ id:
+ type: string
+ description: ID of this VNF
+ required: true
+ constraints:
+ - min_length: 1
+ vendor:
+ type: string
+ description: name of the vendor who generate this VNF
+ required: true
+ version:
+ type: version
+ description: version of the software for this VNF
+ required: true
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ node: tosca.nodes.nfv.VL
+ relationship: tosca.relationships.nfv.VirtualLinksTo
+
+ tosca.nodes.nfv.CP:
+ derived_from: tosca.nodes.network.Port
+ properties:
+ type:
+ type: string
+ description: >
+ This may be, for example, a virtual port, a virtual NIC address, a physical port,
+ a physical NIC address or the endpoint of an IP VPN enabling network connectivity.
+ required: false
+ anti_spoof_protection:
+ type: boolean
+ description: >
+ Indicates of whether anti-spoofing rule need to be enabled for this vNIC. This is applicable only
+ when CP type is virtual NIC (vPort).
+ required: false
+ attributes:
+ address:
+ type: string
+ description: The actual virtual NIC address that is been assigned when instantiating the connection point.
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ node: tosca.nodes.nfv.VL
+ relationship: tosca.relationships.nfv.VirtualLinksTo
+ - virtualbinding:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ node: tosca.nodes.nfv.VDU
+ relationship: tosca.relationships.nfv.VirtualBindsTo
+
+ tosca.nodes.nfv.VL:
+ derived_from: tosca.nodes.network.Network
+ properties:
+ vendor:
+ type: string
+ description: name of the vendor who generate this VL
+ required: false
+ capabilities:
+ virtual_linkable:
+ type: tosca.capabilities.nfv.VirtualLinkable
+
+ tosca.nodes.nfv.VL.ELine:
+ derived_from: tosca.nodes.nfv.VL
+ #capabilities:
+ # virtual_linkable:
+ # type: tosca.capabilities.nfv.VirtualLinkable
+ # occurrences: [ 2, 2 ]
+
+ tosca.nodes.nfv.VL.ELAN:
+ derived_from: tosca.nodes.nfv.VL
+
+ tosca.nodes.nfv.VL.ETree:
+ derived_from: tosca.nodes.nfv.VL
+
+ tosca.nodes.nfv.FP:
+ derived_from: tosca.nodes.Root
+ properties:
+ policy:
+ type: string
+ required: false
+ description: A policy or rule to apply to the NFP
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ node: tosca.nodes.nfv.CP
+ relationship: tosca.relationships.nfv.ForwardsTo
+
+capability_types:
+
+ tosca.capabilities.nfv.VirtualLinkable:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.VirtualBindable:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.Metric:
+ derived_from: tosca.capabilities.Endpoint
+
+ tosca.capabilities.nfv.Forwarder:
+ derived_from: tosca.capabilities.Root
+
+relationship_types:
+ tosca.relationships.nfv.VirtualBindsTo:
+ derived_from: tosca.relationships.DependsOn
+ valid_target_types: [ tosca.capabilities.nfv.VirtualBindable ]
+
+ tosca.relationships.nfv.VirtualLinksTo:
+ derived_from: tosca.relationships.DependsOn
+ valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ]
+
+ tosca.relationships.nfv.Monitor:
+ derived_from: tosca.relationships.ConnectsTo
+ valid_target_types: [ tosca.capabilities.nfv.Metric ]
+
+ tosca.relationships.nfv.ForwardsTo:
+ derived_from: tosca.relationships.Root
+ valid_target_types: [ tosca.capabilities.nfv.Forwarder ]
+
+group_types:
+ tosca.groups.nfv.VNFFG:
+ derived_from: tosca.groups.Root
+ properties:
+ vendor:
+ type: string
+ required: true
+ description: name of the vendor who generate this VNFFG
+ version:
+ type: string
+ required: true
+ description: version of this VNFFG
+ number_of_endpoints:
+ type: integer
+ required: true
+ description: count of the external endpoints included in this VNFFG
+ dependent_virtual_link:
+ type: list
+ entry_schema:
+ type: string
+ required: true
+ description: Reference to a VLD used in this Forwarding Graph
+ connection_point:
+ type: list
+ entry_schema:
+ type: string
+ required: true
+ description: Reference to Connection Points forming the VNFFG
+ constituent_vnfs:
+ type: list
+ entry_schema:
+ type: string
+ required: true
+ description: Reference to a list of VNFD used in this VNF Forwarding Graph
+ members: [ tosca.nodes.nfv.FP ]
diff --git a/refspec/open-o/nfv-nsd/TOSCA_definition_ns_ext_1_0.yaml b/refspec/open-o/nfv-nsd/TOSCA_definition_ns_ext_1_0.yaml
new file mode 100644
index 0000000..4028b87
--- /dev/null
+++ b/refspec/open-o/nfv-nsd/TOSCA_definition_ns_ext_1_0.yaml
@@ -0,0 +1,232 @@
+#
+# Copyright 2017 ZTE 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.
+#
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Extend types definitions file for tosca-nfv.
+
+data_types:
+ tosca.datatypes.nfv.ext.FPPolicyCriteria:
+ derived_from: tosca.datatypes.Root
+ properties:
+ dest_port_range:
+ type: range
+ required: false
+ constraints:
+ - in_range: [ 1, 65535 ]
+ source_port_range:
+ type: range
+ required: false
+ constraints:
+ - in_range: [ 1, 65535 ]
+ ip_protocol:
+ type: string
+ required: false
+ default: tcp
+ constraints:
+ - valid_values: [ udp, tcp ]
+ dest_ip_range:
+ type: list
+ required: false
+ description: The format is startip1-endip1,startip2-endip2
+ entry_schema:
+ type: string
+ source_ip_range:
+ type: list
+ required: false
+ description: The format is startip1-endip1,startip2-endip2
+ entry_schema:
+ type: string
+ dscp:
+ type: integer
+ required: false
+
+ tosca.datatypes.nfv.ext.FPPolicy:
+ derived_from: tosca.datatypes.Root
+ properties:
+ type:
+ type: string
+ required: false
+ default: ACL
+ constraints:
+ - valid_values: [ ACL ]
+ criteria:
+ type: tosca.datatypes.nfv.ext.FPPolicyCriteria
+ required: true
+
+
+node_types:
+ tosca.nodes.nfv.ext.VNF:
+ derived_from: tosca.nodes.nfv.VNF
+ properties:
+ vnf_type:
+ type: string
+ required: false
+ description: Type of this VNF. For example MME,USPP,xGW etc.
+ request_reclassification:
+ type: boolean
+ required: false
+ default: false
+ description: Determines whether VNF can request reclassification by the VNF forwarder
+ nsh_aware:
+ type: boolean
+ required: false
+ default: true
+ description: Whether this VNF can process NSH headers
+ vnfm_type:
+ type: string
+ required: true
+ description: Type of this VNFM, Such as ZTE,HW,JUJU,...
+ requirements:
+ - virtual_link:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ relationship: tosca.relationships.nfv.VirtualLinksTo
+ occurrences: [0, UNBOUNDED]
+
+ tosca.nodes.nfv.ext.CP:
+ derived_from: tosca.nodes.nfv.CP
+ properties:
+ sfc_encapsulation:
+ type: string
+ required: false
+ description: The encapsulateion used to carry NSH packages
+ constraints:
+ - valid_values: [ mac, vxlan-gpe, gre, mpls ]
+ direction:
+ type: string
+ required: false
+ constraints:
+ - valid_values: [ input, output, bidirectional ]
+ interface_name:
+ type: string
+ required: false
+ description: Physical interface name of CP for PNF.
+ requirements:
+ - link:
+ capability: tosca.capabilities.network.Linkable
+ relationship: tosca.relationships.network.LinksTo
+ occurrences: [ 0, 1 ]
+ - binding:
+ capability: tosca.capabilities.network.Bindable
+ relationship: tosca.relationships.network.BindsTo
+ occurrences: [ 0, 1 ]
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ relationship: tosca.relationships.nfv.VirtualLinksTo
+ occurrences: [ 0, 1 ]
+ - virtualbinding:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ relationship: tosca.relationships.nfv.VirtualBindsTo
+ occurrences: [ 0, 1 ]
+ capabilities:
+ forwarder:
+ type: tosca.capabilities.nfv.Forwarder
+
+ tosca.nodes.nfv.ext.NS:
+ derived_from: tosca.nodes.Root
+ properties:
+ id:
+ type: string
+ description: ID of this NSD
+ required: true
+ constraints:
+ - min_length: 1
+ designer:
+ type: string
+ description: Designer of this NSD
+ required: true
+ version:
+ type: version
+ description: version of this NSD
+ required: true
+ name:
+ type: string
+ description: name of this NSD
+ required: true
+ type:
+ type: string
+ description: Type of this NSD,include:SSAR,NSAR,GSAR
+ required: true
+ requirements:
+ - virtualLink:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ node: tosca.nodes.nfv.VL
+ relationship: tosca.relationships.nfv.VirtualLinksTo
+
+ tosca.nodes.nfv.ext.PNF:
+ derived_from: tosca.nodes.Root
+ properties:
+ id:
+ type: string
+ description: ID of this PNF
+ required: true
+ constraints:
+ - min_length: 1
+ vendor:
+ type: string
+ description: name of the vendor who provide this PNF
+ required: true
+ version:
+ type: version
+ description: version of the software for this PNF
+ required: true
+ pnf_type:
+ type: string
+ description: type of PNF
+ required: false
+ request_reclassification:
+ type: boolean
+ required: false
+ default: false
+ description: Determines whether VNF can request reclassification by the VNF forwarder
+ nsh_aware:
+ type: boolean
+ required: false
+ default: true
+ description: Whether this VNF can process NSH headers
+ management_address:
+ type: string
+ description: Management port address of this PNF.
+ required: true
+ capabilities:
+ virtualBinding:
+ type: tosca.capabilities.nfv.VirtualBindable
+
+ tosca.nodes.nfv.ext.FP:
+ derived_from: tosca.nodes.Root
+ properties:
+ policy:
+ type: tosca.datatypes.nfv.ext.FPPolicy
+ required: false
+ symmetric:
+ type: boolean
+ required: false
+ description: If the chain is symmetric, SDN Controller will create two service paths, one ingress and another egress.
+ requirements:
+ - forwarder:
+ capability: tosca.capabilities.nfv.Forwarder
+ occurrences: [0, UNBOUNDED]
+
+group_types:
+ tosca.groups.nfv.ext.VNFFG:
+ derived_from: tosca.groups.nfv.VNFFG
+ properties:
+ constituent_pnfs:
+ type: list
+ entry_schema:
+ type: string
+ required: false
+ description: Reference to a list of PNF'ID used in this VNF Forwarding Graph
diff --git a/refspec/open-o/nfv-nsd/nfv-nsd-dm-sample.rst b/refspec/open-o/nfv-nsd/nfv-nsd-dm-sample.rst
new file mode 100755
index 0000000..3a8488e
--- /dev/null
+++ b/refspec/open-o/nfv-nsd/nfv-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/nfv-nsd/nfv-nsd-im-sample.rst b/refspec/open-o/nfv-nsd/nfv-nsd-im-sample.rst
new file mode 100755
index 0000000..3a8488e
--- /dev/null
+++ b/refspec/open-o/nfv-nsd/nfv-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/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
diff --git a/refspec/open-o/vnf-package/NS&VNF Package Specification-v0.4.pdf b/refspec/open-o/vnf-package/NS&VNF Package Specification-v0.4.pdf
new file mode 100644
index 0000000..97dad9a
--- /dev/null
+++ b/refspec/open-o/vnf-package/NS&VNF Package Specification-v0.4.pdf
Binary files differ
diff --git a/refspec/open-o/vnf-package/vnf-package-sample.rst b/refspec/open-o/vnf-package/vnf-package-sample.rst
new file mode 100755
index 0000000..3a8488e
--- /dev/null
+++ b/refspec/open-o/vnf-package/vnf-package-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/vnfd/README.md b/refspec/open-o/vnfd/README.md
new file mode 100755
index 0000000..c3b60c8
--- /dev/null
+++ b/refspec/open-o/vnfd/README.md
@@ -0,0 +1,27 @@
+#
+# Copyright 2017 ZTE 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.
+#
+
+1.nfv vnfd type definiton include three layer profile definitions.
+
+ A.simple tosca profle : tosca_definition_1.0.yaml
+ refer:http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.0/os/TOSCA-Simple-Profile-YAML-v1.0-os.docx
+
+ B.tosca nfv profile : tosca-simple-nfv-1.1.yaml
+ refer: draft-tosca-nfv-v1.0-wd04-rev06.doc
+
+ C.openo extension profile: In the future
+
+2.nfv vnfd service template should import the profiles above. \ No newline at end of file
diff --git a/refspec/open-o/vnfd/tosca-simple-nfv-1.1.yaml b/refspec/open-o/vnfd/tosca-simple-nfv-1.1.yaml
new file mode 100644
index 0000000..679b917
--- /dev/null
+++ b/refspec/open-o/vnfd/tosca-simple-nfv-1.1.yaml
@@ -0,0 +1,429 @@
+#
+# Copyright (c) 2017 ZTE All rights reserved.
+#
+# 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.
+#
+
+data_types:
+
+ tosca.datatypes.nfv.L3AddressData:
+ derived_from: tosca.datatypes.Root
+ properties:
+ ip_address_assignment:
+ type: boolean
+ required: true
+ floating_ip_activated:
+ type: boolean
+ required: true
+ ip_address_type:
+ type: string
+ required: false
+ constraints:
+ - valid_values: [ipv4, ipv6]
+ number_of_ip_address:
+ type: integer
+ required: false
+
+ tosca.datatypes.nfv.AddressData:
+ derived_from: tosca.datatypes.Root
+ properties:
+ address_type:
+ type: string
+ required: true
+ constraints:
+ - valid_values: [mac_address, ip_address]
+ #l2_address_data:
+ # type: tosca.datatypes.nfv.L2AddressData # empty in "GS NFV IFA011 V0.7.3"
+ # required: false
+ l3_address_data:
+ type: tosca.datatypes.nfv.L3AddressData
+ required: false
+
+ tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements:
+ derived_from: tosca.datatypes.Root
+ properties:
+ name:
+ type: string
+ required: false
+ description:
+ type: string
+ required: false
+ support_mandatory:
+ type: boolean
+ required: true
+ requirement:
+ type: map # not specified
+ required: true
+ entry_schema:
+ type: string
+
+ tosca.datatypes.nfv.ConnectivityType:
+ derived_from: tosca.datatypes.Root
+ properties:
+ layer_protocol:
+ type: string
+ required: yes
+ constraints:
+ - valid_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ]
+ flow_pattern:
+ type: string
+ required: false
+ #line tree mesh
+
+ tosca.datatypes.nfv.RequestedAdditionalCapability:
+ derived_from: tosca.datatypes.Root
+ properties:
+ #name:
+ # key of containing map
+ support_mandatory:
+ type: boolean
+ required: true
+ min_requested_additional_capability_version:
+ type: string
+ required: false
+ preferred_requested_additional_capability_version:
+ type: string
+ required: false
+ requested_additional_capability_name:
+ type: string
+ required: true
+ target_performance_parameters:
+ type: map
+ entry_schema:
+ type: string
+ required: true
+
+ tosca.datatypes.nfv.VirtualMemory:
+ derived_from: tosca.datatypes.Root
+ properties:
+ virtual_mem_size:
+ type: scalar-unit.size # Number
+ required: true
+ virtual_mem_oversubscription_policy:
+ type: string
+ required: false
+ numa_enabled:
+ type: boolean
+ required: false
+
+ tosca.datatypes.nfv.VirtualCpu:
+ derived_from: tosca.datatypes.Root
+ properties:
+ cpu_architecture:
+ type: string
+ required: false
+ num_virtual_cpu:
+ type: integer
+ required: true
+ virtual_cpu_clock:
+ type: scalar-unit.frequency
+ required: false
+ virtual_cpu_oversubscription_policy:
+ type: string
+ required: false
+ virtual_cpu_pinning:
+ type: tosca.datatypes.nfv.VirtualCpuPinning
+ required: false
+
+ tosca.datatypes.nfv.VirtualCpuPinning:
+ derived_from: tosca.datatypes.Root
+ properties:
+ cpu_pinning_policy:
+ type: string # CpuPinningPolicy
+ constraints:
+ - valid_values: [ static, dynamic ]
+ required: false
+ cpu_pinning_map:
+ type: map
+ entry_schema:
+ type: string
+ required: false
+
+ tosca.datatypes.nfv.VnfcConfigurableProperties:
+ derived_from: tosca.datatypes.Root
+ properties:
+ additional_vnfc_configurable_properties:
+ type: map
+ entry_schema:
+ type: string
+ required: false
+
+node_types:
+ tosca.nodes.nfv.VDU.Compute:
+ derived_from: tosca.nodes.Compute
+ properties:
+ name:
+ type: string
+ required: true
+ description:
+ type: string
+ required: true
+ boot_order:
+ type: list # explicit index (boot index) not necessary, contrary to IFA011
+ entry_schema:
+ type: string
+ required: false
+ nfvi_constraints:
+ type: list
+ entry_schema:
+ type: string
+ required: false
+ configurable_properties:
+ type: map
+ entry_schema:
+ type: tosca.datatypes.nfv.VnfcConfigurableProperties
+ required: true
+ #attributes:
+ # private_address:
+ # status: deprecated
+ # public_address:
+ # status: deprecated
+ # networks:
+ # status: deprecated
+ # ports:
+ # status: deprecated
+ capabilities:
+ virtual_compute:
+ type: tosca.capabilities.nfv.VirtualCompute
+ virtual_binding:
+ type: tosca.capabilities.nfv.VirtualBindable
+ #monitoring_parameter:
+ # modeled as ad hoc (named) capabilities in VDU node template
+ # for example:
+ #capabilities:
+ # cpu_load: tosca.capabilities.nfv.Metric
+ # memory_usage: tosca.capabilities.nfv.Metric
+ #host: #Editor note: FFS. How this capabilities should be used in NFV Profile
+ # type: tosca.capabilities.Container
+ # valid_source_types: [tosca.nodes.SoftwareComponent]
+ # occurrences: [0,UNBOUNDED] #note: [0,0]
+ #endpoint:
+ # occurrences: [0,0]
+ #os:
+ # occurrences: [0,0]
+ scalable: #Editor note: FFS. How this capabilities should be used in NFV Profile
+ type: tosca.capabilities.Scalable
+ #binding:
+ # occurrences: [0,UNBOUND]
+ requirements:
+ - virtual_storage:
+ capability: tosca.capabilities.nfv.VirtualStorage
+ relationship: tosca.relationships.nfv.VDU.AttachedTo
+ node: tosca.nodes.nfv.VDU.VirtualStorage
+ #occurences: [ 0, UNBOUNDED ]
+ # - local_storage: #For NFV Profile, this requirement is deprecated.
+ # occurrences: [0,0]
+ #artifacts:
+ # - sw_image:
+ #file:
+ # type: tosca.artifacts.nfv.SwImage
+
+ tosca.nodes.nfv.VDU.VirtualStorage:
+ derived_from: tosca.nodes.Root
+ properties:
+ #id:
+ # node name
+ type_of_storage:
+ type: string
+ required: true
+ size_of_storage:
+ type: scalar-unit.size
+ required: true
+ rdma_enabled:
+ type: boolean
+ required: false
+ capabilities:
+ virtual_storage:
+ type: tosca.capabilities.nfv.VirtualStorage
+ #artifacts:
+ # - sw_image:
+ # file:
+ # type: tosca.artifacts.Deployment.Image
+
+ tosca.nodes.nfv.Cpd:
+ derived_from: tosca.nodes.Root
+ properties:
+ layer_protocol:
+ type: string
+ constraints:
+ - valid_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ]
+ required: true
+ role: #Name in ETSI NFV IFA011 v0.7.3 cpRole
+ type: string
+ constraints:
+ - valid_values: [ root, leaf ]
+ required: false
+ description:
+ type: string
+ required: false
+ address_data:
+ type: list
+ entry_schema:
+ type: tosca.datatypes.nfv.AddressData
+ required: false
+
+ tosca.nodes.nfv.VduCpd:
+ derived_from: tosca.nodes.nfv.Cpd
+ properties:
+ bitrate_requirement:
+ type: integer
+ required: false
+ virtual_network_interface_requirements:
+ type: list
+ entry_schema:
+ type: tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements
+ required: false
+ requirements:
+ - virtual_link:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ relationship: tosca.relationships.nfv.VirtualLinksTo
+ node: tosca.nodes.nfv.VnfVirtualLinkDesc
+ - virtual_binding:
+ capability: tosca.capabilities.nfv.VirtualBindable
+ relationship: tosca.relationships.nfv.VirtualBindsTo
+ node: tosca.nodes.nfv.VDU.Compute #tosca.nodes.nfv.VDU
+
+ tosca.nodes.nfv.VnfVirtualLinkDesc:
+ derived_from: tosca.nodes.Root
+ properties:
+ connectivity_type:
+ type: tosca.datatypes.nfv.ConnectivityType
+ required: true
+ description:
+ type: string
+ required: false
+ test_access:
+ type: list
+ entry_schema:
+ type: string
+ required: false
+ vl_flavours:
+ type: map
+ entry_schema:
+ type: string #tosca.datatypes.nfv.VlFlavour
+ required: true
+ capabilities:
+ #monitoring_parameters:
+ # modeled as ad hoc (named) capabilities in node template
+ virtual_linkable:
+ type: tosca.capabilities.nfv.VirtualLinkable
+
+ tosca.nodes.nfv.VNF:
+ description: >-
+ The NFV VNF Node Type represents a Virtual Network Function as defined by [ETSI GS NFV-MAN 001 v1.1.1]. It is the default
+ type that all other VNF Node Types derive from. This allows for all VNF nodes to have a consistent set of features for
+ modeling and management (e.g., consistent definitions for requirements, capabilities and lifecycle interfaces).
+ derived_from: tosca.nodes.Root
+ properties:
+ id:
+ description: >-
+ ID of this VNF.
+ type: string
+ vendor:
+ description: >-
+ Name of the vendor who generate this VNF.
+ type: string
+ version:
+ description: >-
+ Version of the software for this VNF.
+ type: string
+ requirements:
+ - virtual_link:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ relationship: tosca.relationships.nfv.VirtualLinksTo
+
+capability_types:
+
+ tosca.capabilities.nfv.Metric:
+ derived_from: tosca.capabilities.Endpoint
+
+ tosca.capabilities.nfv.VirtualStorage: #new
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.nfv.VirtualBindable: #new
+ derived_from: tosca.capabilities.Node
+
+ tosca.capabilities.nfv.VirtualLinkable: #new
+ derived_from: tosca.capabilities.Node
+
+
+ tosca.capabilities.nfv.VirtualCompute:
+ derived_from: tosca.capabilities.Root
+ properties:
+ requested_additional_capabilities:
+ type: map
+ entry_schema:
+ type: tosca.datatypes.nfv.RequestedAdditionalCapability
+ required: false
+ virtual_memory:
+ type: tosca.datatypes.nfv.VirtualMemory
+ required: true
+ virtual_cpu:
+ type: tosca.datatypes.nfv.VirtualCpu
+ required: true
+
+artifact_types:
+
+ tosca.artifacts.nfv.SwImage:
+ derived_from: tosca.artifacts.Deployment.Image
+ properties: # or metadata
+ #id:
+ # node name
+ name:
+ type: string
+ required: true
+ version:
+ type: string
+ required: true
+ checksum:
+ type: string
+ required: true
+ container_format:
+ type: string
+ required: true
+ disk_format:
+ type: string
+ required: true
+ min_disk:
+ type: scalar-unit.size # Number
+ required: true
+ min_ram:
+ type: scalar-unit.size # Number
+ required: false
+ size:
+ type: scalar-unit.size # Number
+ required: true
+ sw_image:
+ type: string
+ required: true
+ operating_system:
+ type: string
+ required: false
+ supported_virtualisation_environments:
+ type: list
+ entry_schema:
+ type: string
+ required: false
+
+relationship_types:
+
+ tosca.relationships.nfv.VirtualBindsTo:
+ derived_from: tosca.relationships.DependsOn
+ valid_target_types: [ tosca.capabilities.nfv.VirtualBindable]
+
+ tosca.relationships.nfv.VDU.AttachedTo:
+ derived_from: tosca.relationships.AttachesTo
+
+ tosca.relationships.nfv.VirtualLinksTo:
+ derived_from: tosca.relationships.DependsOn
+ valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ]
diff --git a/refspec/open-o/vnfd/tosca_definition_1.0.yaml b/refspec/open-o/vnfd/tosca_definition_1.0.yaml
new file mode 100644
index 0000000..2b87bc4
--- /dev/null
+++ b/refspec/open-o/vnfd/tosca_definition_1.0.yaml
@@ -0,0 +1,892 @@
+#
+# Copyright 2017 ZTE 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.
+#
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+node_types:
+ tosca.nodes.Root:
+ description: >
+ The TOSCA root node all other TOSCA base node types derive from.
+ attributes:
+ tosca_id:
+ type: string
+ tosca_name:
+ type: string
+ state:
+ type: string
+ capabilities:
+ feature:
+ type: tosca.capabilities.Node
+ requirements:
+ - dependency:
+ capability: tosca.capabilities.Node
+ node: tosca.nodes.Root
+ relationship: tosca.relationships.DependsOn
+ occurrences: [ 0, UNBOUNDED ]
+ interfaces:
+ Standard:
+ type: tosca.interfaces.node.lifecycle.Standard
+
+ tosca.nodes.Compute:
+ derived_from: tosca.nodes.Root
+ attributes:
+ private_address:
+ type: string
+ public_address:
+ type: string
+ networks:
+ type: map
+ entry_schema:
+ type: tosca.datatypes.network.NetworkInfo
+ ports:
+ type: map
+ entry_schema:
+ type: tosca.datatypes.network.PortInfo
+ capabilities:
+ host:
+ type: tosca.capabilities.Container
+ binding:
+ type: tosca.capabilities.network.Bindable
+ os:
+ type: tosca.capabilities.OperatingSystem
+ scalable:
+ type: tosca.capabilities.Scalable
+ requirements:
+ - local_storage:
+ capability: tosca.capabilities.Attachment
+ node: tosca.nodes.BlockStorage
+ relationship: tosca.relationships.AttachesTo
+ occurrences: [0, UNBOUNDED]
+
+ tosca.nodes.SoftwareComponent:
+ derived_from: tosca.nodes.Root
+ properties:
+ # domain-specific software component version
+ component_version:
+ type: version
+ required: false
+ description: >
+ Software component version.
+ admin_credential:
+ type: tosca.datatypes.Credential
+ required: false
+ requirements:
+ - host:
+ capability: tosca.capabilities.Container
+ node: tosca.nodes.Compute
+ relationship: tosca.relationships.HostedOn
+
+ tosca.nodes.DBMS:
+ derived_from: tosca.nodes.SoftwareComponent
+ properties:
+ port:
+ required: false
+ type: integer
+ description: >
+ The port the DBMS service will listen to for data and requests.
+ root_password:
+ required: false
+ type: string
+ description: >
+ The root password for the DBMS service.
+ capabilities:
+ host:
+ type: tosca.capabilities.Container
+ valid_source_types: [tosca.nodes.Database]
+
+ tosca.nodes.Database:
+ derived_from: tosca.nodes.Root
+ properties:
+ user:
+ required: false
+ type: string
+ description: >
+ User account name for DB administration
+ port:
+ required: false
+ type: integer
+ description: >
+ The port the database service will use to listen for incoming data and requests.
+ name:
+ required: false
+ type: string
+ description: >
+ The name of the database.
+ password:
+ required: false
+ type: string
+ description: >
+ The password for the DB user account
+ requirements:
+ - host:
+ capability: tosca.capabilities.Container
+ node: tosca.nodes.DBMS
+ relationship: tosca.relationships.HostedOn
+ capabilities:
+ database_endpoint:
+ type: tosca.capabilities.Endpoint.Database
+
+ tosca.nodes.WebServer:
+ derived_from: tosca.nodes.SoftwareComponent
+ capabilities:
+ data_endpoint:
+ type: tosca.capabilities.Endpoint
+ admin_endpoint:
+ type: tosca.capabilities.Endpoint.Admin
+ host:
+ type: tosca.capabilities.Container
+ valid_source_types: [tosca.nodes.WebApplication]
+
+ tosca.nodes.WebApplication:
+ derived_from: tosca.nodes.Root
+ properties:
+ context_root:
+ type: string
+ required: false
+ requirements:
+ - host:
+ capability: tosca.capabilities.Container
+ node: tosca.nodes.WebServer
+ relationship: tosca.relationships.HostedOn
+ capabilities:
+ app_endpoint:
+ type: tosca.capabilities.Endpoint
+
+ tosca.nodes.BlockStorage:
+ derived_from: tosca.nodes.Root
+ properties:
+ size:
+ type: scalar-unit.size
+ constraints:
+ - greater_or_equal: 1 MB
+ volume_id:
+ type: string
+ required: false
+ snapshot_id:
+ type: string
+ required: false
+ attributes:
+ volume_id:
+ type: string
+ capabilities:
+ attachment:
+ type: tosca.capabilities.Attachment
+
+ tosca.nodes.network.Network:
+ derived_from: tosca.nodes.Root
+ description: >
+ The TOSCA Network node represents a simple, logical network service.
+ properties:
+ ip_version:
+ type: integer
+ required: false
+ default: 4
+ constraints:
+ - valid_values: [ 4, 6 ]
+ description: >
+ The IP version of the requested network. Valid values are 4 for ipv4
+ or 6 for ipv6.
+ cidr:
+ type: string
+ required: false
+ description: >
+ The cidr block of the requested network.
+ start_ip:
+ type: string
+ required: false
+ description: >
+ The IP address to be used as the start of a pool of addresses within
+ the full IP range derived from the cidr block.
+ end_ip:
+ type: string
+ required: false
+ description: >
+ The IP address to be used as the end of a pool of addresses within
+ the full IP range derived from the cidr block.
+ gateway_ip:
+ type: string
+ required: false
+ description: >
+ The gateway IP address.
+ network_name:
+ type: string
+ required: false
+ description: >
+ An identifier that represents an existing Network instance in the
+ underlying cloud infrastructure or can be used as the name of the
+ newly created network. If network_name is provided and no other
+ properties are provided (with exception of network_id), then an
+ existing network instance will be used. If network_name is provided
+ alongside with more properties then a new network with this name will
+ be created.
+ network_id:
+ type: string
+ required: false
+ description: >
+ An identifier that represents an existing Network instance in the
+ underlying cloud infrastructure. This property is mutually exclusive
+ with all other properties except network_name. This can be used alone
+ or together with network_name to identify an existing network.
+ segmentation_id:
+ type: string
+ required: false
+ description: >
+ A segmentation identifier in the underlying cloud infrastructure.
+ E.g. VLAN ID, GRE tunnel ID, etc..
+ network_type:
+ type: string
+ required: false
+ description: >
+ It specifies the nature of the physical network in the underlying
+ cloud infrastructure. Examples are flat, vlan, gre or vxlan.
+ For flat and vlan types, physical_network should be provided too.
+ physical_network:
+ type: string
+ required: false
+ description: >
+ It identifies the physical network on top of which the network is
+ implemented, e.g. physnet1. This property is required if network_type
+ is flat or vlan.
+ dhcp_enabled:
+ type: boolean
+ required: false
+ default: true
+ description: >
+ Indicates should DHCP service be enabled on the network or not.
+ capabilities:
+ link:
+ type: tosca.capabilities.network.Linkable
+
+ tosca.nodes.network.Port:
+ derived_from: tosca.nodes.Root
+ description: >
+ The TOSCA Port node represents a logical entity that associates between
+ Compute and Network normative types. The Port node type effectively
+ represents a single virtual NIC on the Compute node instance.
+ properties:
+ ip_address:
+ type: string
+ required: false
+ description: >
+ Allow the user to set a static IP.
+ order:
+ type: integer
+ required: false
+ default: 0
+ constraints:
+ - greater_or_equal: 0
+ description: >
+ The order of the NIC on the compute instance (e.g. eth2).
+ is_default:
+ type: boolean
+ required: false
+ default: false
+ description: >
+ If is_default=true this port will be used for the default gateway
+ route. Only one port that is associated to single compute node can
+ set as is_default=true.
+ ip_range_start:
+ type: string
+ required: false
+ description: >
+ Defines the starting IP of a range to be allocated for the compute
+ instances that are associated with this Port.
+ ip_range_end:
+ type: string
+ required: false
+ description: >
+ Defines the ending IP of a range to be allocated for the compute
+ instances that are associated with this Port.
+ attributes:
+ ip_address:
+ type: string
+ requirements:
+ - binding:
+ description: >
+ Binding requirement expresses the relationship between Port and
+ Compute nodes. Effectively it indicates that the Port will be
+ attached to specific Compute node instance
+ capability: tosca.capabilities.network.Bindable
+ relationship: tosca.relationships.network.BindsTo
+ node: tosca.nodes.Compute
+ - link:
+ description: >
+ Link requirement expresses the relationship between Port and Network
+ nodes. It indicates which network this port will connect to.
+ capability: tosca.capabilities.network.Linkable
+ relationship: tosca.relationships.network.LinksTo
+ node: tosca.nodes.network.Network
+
+ tosca.nodes.ObjectStorage:
+ derived_from: tosca.nodes.Root
+ description: >
+ The TOSCA ObjectStorage node represents storage that provides the ability
+ to store data as objects (or BLOBs of data) without consideration for the
+ underlying filesystem or devices
+ properties:
+ name:
+ type: string
+ required: true
+ description: >
+ The logical name of the object store (or container).
+ size:
+ type: scalar-unit.size
+ required: false
+ constraints:
+ - greater_or_equal: 0 GB
+ description: >
+ The requested initial storage size.
+ maxsize:
+ type: scalar-unit.size
+ required: false
+ constraints:
+ - greater_or_equal: 0 GB
+ description: >
+ The requested maximum storage size.
+ capabilities:
+ storage_endpoint:
+ type: tosca.capabilities.Endpoint
+
+ tosca.nodes.LoadBalancer:
+ derived_from: tosca.nodes.Root
+ properties:
+ algorithm:
+ type: string
+ required: false
+ status: experimental
+ capabilities:
+ client:
+ type: tosca.capabilities.Endpoint.Public
+ occurrences: [0, UNBOUNDED]
+ description: the Floating (IP) client’s on the public network can connect to
+ requirements:
+ - application:
+ capability: tosca.capabilities.Endpoint
+ relationship: tosca.relationships.RoutesTo
+ occurrences: [0, UNBOUNDED]
+ description: Connection to one or more load balanced applications
+
+ tosca.nodes.Container.Application:
+ derived_from: tosca.nodes.Root
+ requirements:
+ - host:
+ capability: tosca.capabilities.Container
+ node: tosca.nodes.Container.Runtime
+ relationship: tosca.relationships.HostedOn
+
+ tosca.nodes.Container.Runtime:
+ derived_from: tosca.nodes.SoftwareComponent
+ capabilities:
+ host:
+ type: tosca.capabilities.Container
+ scalable:
+ type: tosca.capabilities.Scalable
+
+ tosca.nodes.Container.Application.Docker:
+ derived_from: tosca.nodes.Container.Application
+ requirements:
+ - host:
+ capability: tosca.capabilities.Container.Docker
+
+relationship_types:
+ tosca.relationships.Root:
+ description: >
+ The TOSCA root Relationship Type all other TOSCA base Relationship Types
+ derive from.
+ attributes:
+ tosca_id:
+ type: string
+ tosca_name:
+ type: string
+ interfaces:
+ Configure:
+ type: tosca.interfaces.relationship.Configure
+
+ tosca.relationships.DependsOn:
+ derived_from: tosca.relationships.Root
+
+ tosca.relationships.HostedOn:
+ derived_from: tosca.relationships.Root
+ valid_target_types: [ tosca.capabilities.Container ]
+
+ tosca.relationships.ConnectsTo:
+ derived_from: tosca.relationships.Root
+ valid_target_types: [ tosca.capabilities.Endpoint ]
+ credential:
+ type: tosca.datatypes.Credential
+ required: false
+
+ tosca.relationships.AttachesTo:
+ derived_from: tosca.relationships.Root
+ valid_target_types: [ tosca.capabilities.Attachment ]
+ properties:
+ location:
+ required: true
+ type: string
+ constraints:
+ - min_length: 1
+ device:
+ required: false
+ type: string
+
+ tosca.relationships.RoutesTo:
+ derived_from: tosca.relationships.ConnectsTo
+ valid_target_types: [ tosca.capabilities.Endpoint ]
+
+ tosca.relationships.network.LinksTo:
+ derived_from: tosca.relationships.DependsOn
+ valid_target_types: [ tosca.capabilities.network.Linkable ]
+
+ tosca.relationships.network.BindsTo:
+ derived_from: tosca.relationships.DependsOn
+ valid_target_types: [ tosca.capabilities.network.Bindable ]
+
+capability_types:
+ tosca.capabilities.Root:
+ description: >
+ The TOSCA root Capability Type all other TOSCA base Capability Types
+ derive from.
+
+ tosca.capabilities.Node:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.Container:
+ derived_from: tosca.capabilities.Root
+ properties:
+ num_cpus:
+ required: false
+ type: integer
+ constraints:
+ - greater_or_equal: 1
+ cpu_frequency:
+ required: false
+ type: scalar-unit.frequency
+ constraints:
+ - greater_or_equal: 0.1 GHz
+ disk_size:
+ required: false
+ type: scalar-unit.size
+ constraints:
+ - greater_or_equal: 0 MB
+ mem_size:
+ required: false
+ type: scalar-unit.size
+ constraints:
+ - greater_or_equal: 0 MB
+
+ tosca.capabilities.Endpoint:
+ derived_from: tosca.capabilities.Root
+ properties:
+ protocol:
+ type: string
+ required: true
+ default: tcp
+ port:
+ type: tosca.datatypes.network.PortDef
+ required: false
+ secure:
+ type: boolean
+ required: false
+ default: false
+ url_path:
+ type: string
+ required: false
+ port_name:
+ type: string
+ required: false
+ network_name:
+ type: string
+ required: false
+ initiator:
+ type: string
+ required: false
+ default: source
+ constraints:
+ - valid_values: [source, target, peer]
+ ports:
+ type: map
+ required: false
+ constraints:
+ - min_length: 1
+ entry_schema:
+ type: tosca.datatypes.network.PortSpec
+ attributes:
+ ip_address:
+ type: string
+
+ tosca.capabilities.Endpoint.Admin:
+ derived_from: tosca.capabilities.Endpoint
+ properties:
+ secure:
+ type: boolean
+ default: true
+ constraints:
+ - equal: true
+
+ tosca.capabilities.Endpoint.Public:
+ derived_from: tosca.capabilities.Endpoint
+ properties:
+ network_name:
+ type: string
+ default: PUBLIC
+ constraints:
+ - equal: PUBLIC
+ floating:
+ description: >
+ Indicates that the public address should be allocated from a pool of
+ floating IPs that are associated with the network.
+ type: boolean
+ default: false
+ status: experimental
+ dns_name:
+ description: The optional name to register with DNS
+ type: string
+ required: false
+ status: experimental
+
+ tosca.capabilities.Scalable:
+ derived_from: tosca.capabilities.Root
+ properties:
+ min_instances:
+ type: integer
+ required: true
+ default: 1
+ description: >
+ This property is used to indicate the minimum number of instances
+ that should be created for the associated TOSCA Node Template by
+ a TOSCA orchestrator.
+ max_instances:
+ type: integer
+ required: true
+ default: 1
+ description: >
+ This property is used to indicate the maximum number of instances
+ that should be created for the associated TOSCA Node Template by
+ a TOSCA orchestrator.
+ default_instances:
+ type: integer
+ required: false
+ description: >
+ An optional property that indicates the requested default number
+ of instances that should be the starting number of instances a
+ TOSCA orchestrator should attempt to allocate.
+ The value for this property MUST be in the range between the values
+ set for min_instances and max_instances properties.
+
+ tosca.capabilities.Endpoint.Database:
+ derived_from: tosca.capabilities.Endpoint
+
+ tosca.capabilities.Attachment:
+ derived_from: tosca.capabilities.Root
+
+ tosca.capabilities.network.Linkable:
+ derived_from: tosca.capabilities.Root
+ description: >
+ A node type that includes the Linkable capability indicates that it can
+ be pointed by tosca.relationships.network.LinksTo relationship type, which
+ represents an association relationship between Port and Network node types.
+
+ tosca.capabilities.network.Bindable:
+ derived_from: tosca.capabilities.Root
+ description: >
+ A node type that includes the Bindable capability indicates that it can
+ be pointed by tosca.relationships.network.BindsTo relationship type, which
+ represents a network association relationship between Port and Compute node
+ types.
+
+ tosca.capabilities.OperatingSystem:
+ derived_from: tosca.capabilities.Root
+ properties:
+ architecture:
+ required: false
+ type: string
+ description: >
+ The host Operating System (OS) architecture.
+ type:
+ required: false
+ type: string
+ description: >
+ The host Operating System (OS) type.
+ distribution:
+ required: false
+ type: string
+ description: >
+ The host Operating System (OS) distribution. Examples of valid values
+ for an “type” of “Linux” would include:
+ debian, fedora, rhel and ubuntu.
+ version:
+ required: false
+ type: version
+ description: >
+ The host Operating System version.
+
+ tosca.capabilities.Container.Docker:
+ derived_from: tosca.capabilities.Container
+ properties:
+ version:
+ type: list
+ required: false
+ entry_schema:
+ type: version
+ description: >
+ The Docker version capability.
+ publish_all:
+ type: boolean
+ default: false
+ required: false
+ description: >
+ Indicates that all ports (ranges) listed in the dockerfile
+ using the EXPOSE keyword be published.
+ publish_ports:
+ type: list
+ entry_schema:
+ type: PortSpec
+ required: false
+ description: >
+ List of ports mappings from source (Docker container)
+ to target (host) ports to publish.
+ expose_ports:
+ type: list
+ entry_schema:
+ type: PortSpec
+ required: false
+ description: >
+ List of ports mappings from source (Docker container) to expose
+ to other Docker containers (not accessible outside host).
+ volumes:
+ type: list
+ entry_schema:
+ type: string
+ required: false
+ description: >
+ The dockerfile VOLUME command which is used to enable access
+ from the Docker container to a directory on the host machine.
+ host_id:
+ type: string
+ required: false
+ description: >
+ The optional identifier of an existing host resource
+ that should be used to run this container on.
+ volume_id:
+ type: string
+ required: false
+ description: >
+ The optional identifier of an existing storage volume (resource)
+ that should be used to create the container's mount point(s) on.
+
+interface_types:
+ tosca.interfaces.node.lifecycle.Standard:
+ create:
+ description: Standard lifecycle create operation.
+ configure:
+ description: Standard lifecycle configure operation.
+ start:
+ description: Standard lifecycle start operation.
+ stop:
+ description: Standard lifecycle stop operation.
+ delete:
+ description: Standard lifecycle delete operation.
+
+ tosca.interfaces.relationship.Configure:
+ pre_configure_source:
+ description: Operation to pre-configure the source endpoint.
+ pre_configure_target:
+ description: Operation to pre-configure the target endpoint.
+ post_configure_source:
+ description: Operation to post-configure the source endpoint.
+ post_configure_target:
+ description: Operation to post-configure the target endpoint.
+ add_target:
+ description: Operation to add a target node.
+ remove_target:
+ description: Operation to remove a target node.
+ add_source:
+ description: Operation to notify the target node of a source node which
+ is now available via a relationship.
+ target_changed:
+ description: Operation to notify source some property or attribute of the
+ target changed
+
+data_types:
+ tosca.datatypes.Root:
+ description: >
+ The TOSCA root Data Type all other TOSCA base Data Types derive from
+
+ tosca.datatypes.network.NetworkInfo:
+ derived_from: tosca.datatypes.Root
+ properties:
+ network_name:
+ type: string
+ network_id:
+ type: string
+ addresses:
+ type: list
+ entry_schema:
+ type: string
+
+ tosca.datatypes.network.PortInfo:
+ derived_from: tosca.datatypes.Root
+ properties:
+ port_name:
+ type: string
+ port_id:
+ type: string
+ network_id:
+ type: string
+ mac_address:
+ type: string
+ addresses:
+ type: list
+ entry_schema:
+ type: string
+
+ tosca.datatypes.network.PortDef:
+ derived_from: tosca.datatypes.Root
+ type: integer
+ constraints:
+ - in_range: [ 1, 65535 ]
+
+ tosca.datatypes.network.PortSpec:
+ derived_from: tosca.datatypes.Root
+ properties:
+ protocol:
+ type: string
+ required: true
+ default: tcp
+ constraints:
+ - valid_values: [ udp, tcp, igmp ]
+ target:
+ type: PortDef
+ required: false
+ target_range:
+ type: range
+ required: false
+ constraints:
+ - in_range: [ 1, 65535 ]
+ source:
+ type: PortDef
+ required: false
+ source_range:
+ type: range
+ required: false
+ constraints:
+ - in_range: [ 1, 65535 ]
+
+ tosca.datatypes.Credential:
+ derived_from: tosca.datatypes.Root
+ properties:
+ protocol:
+ type: string
+ required: false
+ token_type:
+ type: string
+ default: password
+ required: true
+ token:
+ type: string
+ required: true
+ keys:
+ type: map
+ entry_schema:
+ type: string
+ required: false
+ user:
+ type: string
+ required: false
+
+artifact_types:
+ tosca.artifacts.Root:
+ description: >
+ The TOSCA Artifact Type all other TOSCA Artifact Types derive from
+ properties:
+ version: version
+
+ tosca.artifacts.File:
+ derived_from: tosca.artifacts.Root
+
+ tosca.artifacts.Deployment:
+ derived_from: tosca.artifacts.Root
+ description: TOSCA base type for deployment artifacts
+
+ tosca.artifacts.Deployment.Image:
+ derived_from: tosca.artifacts.Deployment
+
+ tosca.artifacts.Deployment.Image.VM:
+ derived_from: tosca.artifacts.Deployment.Image
+
+ tosca.artifacts.Implementation:
+ derived_from: tosca.artifacts.Root
+ description: TOSCA base type for implementation artifacts
+
+ tosca.artifacts.Implementation.Bash:
+ derived_from: tosca.artifacts.Implementation
+ description: Script artifact for the Unix Bash shell
+ mime_type: application/x-sh
+ file_ext: [ sh ]
+
+ tosca.artifacts.Implementation.Python:
+ derived_from: tosca.artifacts.Implementation
+ description: Artifact for the interpreted Python language
+ mime_type: application/x-python
+ file_ext: [ py ]
+
+ tosca.artifacts.Deployment.Image.Container.Docker:
+ derived_from: tosca.artifacts.Deployment.Image
+ description: Docker container image
+
+ tosca.artifacts.Deployment.Image.VM.ISO:
+ derived_from: tosca.artifacts.Deployment.Image
+ description: Virtual Machine (VM) image in ISO disk format
+ mime_type: application/octet-stream
+ file_ext: [ iso ]
+
+ tosca.artifacts.Deployment.Image.VM.QCOW2:
+ derived_from: tosca.artifacts.Deployment.Image
+ description: Virtual Machine (VM) image in QCOW v2 standard disk format
+ mime_type: application/octet-stream
+ file_ext: [ qcow2 ]
+
+policy_types:
+ tosca.policies.Root:
+ description: The TOSCA Policy Type all other TOSCA Policy Types derive from.
+
+ tosca.policies.Placement:
+ derived_from: tosca.policies.Root
+ description: The TOSCA Policy Type definition that is used to govern
+ placement of TOSCA nodes or groups of nodes.
+
+ tosca.policies.Scaling:
+ derived_from: tosca.policies.Root
+ description: The TOSCA Policy Type definition that is used to govern
+ scaling of TOSCA nodes or groups of nodes.
+
+ tosca.policies.Update:
+ derived_from: tosca.policies.Root
+ description: The TOSCA Policy Type definition that is used to govern
+ update of TOSCA nodes or groups of nodes.
+
+ tosca.policies.Performance:
+ derived_from: tosca.policies.Root
+ description: The TOSCA Policy Type definition that is used to declare
+ performance requirements for TOSCA nodes or groups of nodes.
+
+group_types:
+ tosca.groups.Root:
+ description: The TOSCA Group Type all other TOSCA Group Types derive from
+ interfaces:
+ Standard:
+ type: tosca.interfaces.node.lifecycle.Standard
+
diff --git a/refspec/open-o/vnfd/vNAT.yaml b/refspec/open-o/vnfd/vNAT.yaml
new file mode 100644
index 0000000..afb717c
--- /dev/null
+++ b/refspec/open-o/vnfd/vNAT.yaml
@@ -0,0 +1,140 @@
+#
+# Copyright 2017 ZTE 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.
+#
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+metadata:
+ vnfProvider: intel
+ vnfProductName: openNAT
+ vnfSoftwareVersion: 1.0.0
+ vnfdVersion: 1.0.0
+ vnfProductInfoName: openNAT
+ vnfProductInfoDescription: openNAT
+ localizationLanguage: [english, chinese]
+ defaultLocalizationLanguage: english
+ vnfdId: openNAT-1.0
+ vnfmInfo: GVNFM
+
+imports:
+ - defintions/tosca-simple-nfv-1.1.yaml
+ - defintions/tosca-simple-1.0.yaml
+
+node_types:
+ tosca.nodes.nfv.VNF.vOpenNAT:
+ derived_from: tosca.nodes.nfv.VNF
+ requirements:
+ - sriov_plane:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ node: tosca.nodes.nfv.VnfVirtualLinkDesc
+ relationship: tosca.relationships.nfv.VirtualLinksTo
+
+topology_template:
+
+ substitution_mappings:
+ node_type: tosca.nodes.nfv.VNF.vOpenNAT
+ requirements:
+ sriov_plane: [SRIOV_Port, virtual_link]
+
+ node_templates:
+ vdu_vNat:
+ type: tosca.nodes.nfv.VDU.Compute
+ properties:
+ name: vNat
+ description: the virtual machine of vNat
+ boot_order:
+ - vNAT_Storage
+ configurable_properties:
+ test:
+ additional_vnfc_configurable_properties:
+ aaa: "1"
+
+ capabilities:
+ virtual_compute:
+ properties:
+ virtual_cpu:
+ cpu_architecture: X86
+ num_virtual_cpu: 6
+ virtual_memory:
+ virtual_mem_size: 2 GB
+ numa_enabled: true
+ requested_additional_capabilities:
+ numa:
+ support_mandatory: true
+ requested_additional_capability_name: numa
+ target_performance_parameters:
+ hw:numa_nodes: "2"
+ hw:numa_cpus.0: "0,1"
+ hw:numa_mem.0: "1024"
+ hw:numa_cpus.1: "2,3,4,5"
+ hw:numa_mem.1: "1024"
+
+ # hyper_threading:
+ # support_mandatory: true
+ # requested_additional_capability_name: hyper_threading
+ # target_performance_parameters:
+ # hw:cpu_sockets : "2"
+ # hw:cpu_threads : "2"
+ # hw:cpu_cores : "2"
+ # hw:cpu_threads_policy: "isolate"
+
+ ovs_dpdk:
+ support_mandatory: true
+ requested_additional_capability_name: ovs_dpdk
+ target_performance_parameters:
+ sw:ovs_dpdk: "true"
+ requirements:
+ - virtual_storage:
+ node: vNAT_Storage
+ relationship:
+ properties:
+ location: /mnt/volume_0
+
+ artifacts:
+ vNatVNFImage:
+ file: /swimages/xenial-snat.qcow2
+ type: tosca.artifacts.nfv.SwImage
+ properties:
+ name: vNatVNFImage
+ version: "1.0"
+ checksum: "5000"
+ container_format: bare
+ disk_format: qcow2
+ min_disk: 10 GB
+ min_ram: 1 GB
+ size: 10 GB
+ sw_image: /swimages/xenial-snat.qcow2
+ operating_system: ubuntu
+
+ vNAT_Storage:
+ type: tosca.nodes.nfv.VDU.VirtualStorage
+ properties:
+ type_of_storage: volume
+ size_of_storage: 10 GB
+ rdma_enabled: false
+
+ SRIOV_Port:
+ type: tosca.nodes.nfv.VduCpd
+ properties:
+ virtual_network_interface_requirements:
+ - name: sriov
+ description: sriov
+ support_mandatory: false
+ requirement:
+ SRIOV: "true"
+ layer_protocol: ipv4
+ description: sriov port
+ requirements:
+ - virtual_binding: vdu_vNat
diff --git a/refspec/open-o/vnfd/vnf-dm-sample.rst b/refspec/open-o/vnfd/vnf-dm-sample.rst
new file mode 100755
index 0000000..3a8488e
--- /dev/null
+++ b/refspec/open-o/vnfd/vnf-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/vnfd/vnf-im-sample.rst b/refspec/open-o/vnfd/vnf-im-sample.rst
new file mode 100755
index 0000000..3a8488e
--- /dev/null
+++ b/refspec/open-o/vnfd/vnf-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