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