VNFRQTS - Updating local build
[vnfrqts/requirements.git] / docs / Chapter5 / Tosca.rst
1 .. Modifications Copyright © 2017-2018 AT&T Intellectual Property.
2
3 .. Licensed under the Creative Commons License, Attribution 4.0 Intl.
4    (the "License"); you may not use this documentation except in compliance
5    with the License. You may obtain a copy of the License at
6
7 .. https://creativecommons.org/licenses/by/4.0/
8
9 .. Unless required by applicable law or agreed to in writing, software
10    distributed under the License is distributed on an "AS IS" BASIS,
11    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12    See the License for the specific language governing permissions and
13    limitations under the License.
14
15
16 ONAP TOSCA VNFD Requirements
17 -----------------------------
18
19
20 Introduction
21 ^^^^^^^^^^^^
22
23 The following sub-clauses describe the numbered requirements
24 for VNF Descriptor (VNFD) or in other words the VNF Service Template
25 based on the most updated draft of ETSI NFV-SOL001 standard for VNF
26 Descriptor. The ETSI standard specifies a NFV specific data model using
27 TOSCA/YAML data model constructs specified in TOSCA Simple Profile in
28 YAML v.1.2.
29
30 The requirements for TOSCA/CSAR based VNF package are described as well
31 and they are based on ETSI NFV-SOL004 standard.
32
33 References
34 ^^^^^^^^^^^^^^^^^^
35
36   1. ETSI GS NFV-SOL001 draft v.0.10.0
37   2. TOSCA SIMPLE Profile in YAML v.1.2
38   3. ETSI GS NFV-SOL004 v.2.5.1
39
40 Intended Audience
41 ^^^^^^^^^^^^^^^^^^
42
43 This document is intended for developers of VNF TOSCA templates that
44 will be orchestrated by ONAP. The document is also applicable for
45 creating RFP’s with the list of required TOSCA/YAML features
46 supported by VNF provider.
47
48 Scope
49 ^^^^^^^^^^^^^^^^
50
51 ONAP implementations of Network Cloud supports TOSCA Templates, also
52 referred to as TOSCA in this document.
53
54 ONAP requires the TOSCA Templates to follow a specific format. This
55 document provides the mandatory, recommended, and optional requirements
56 associated with this format.
57
58 Overview
59 ^^^^^^^^^^^^^^^^
60
61 The document includes three charters to help the VNF providers to use the
62 VNF model design tools and understand the VNF package structure and VNF
63 TOSCA templates.
64
65 In the ONAP, VNF Package and VNFD template can be designed by manually
66 or via model designer tools. VNF model designer tools can provide the
67 GUI and CLI tools for the VNF provider to develop the VNF Package and VNFD
68 template.
69
70 The VNF package structure is align to the NFV TOSCA protocol, and
71 supports CSAR
72
73 The VNFD and VNF package are all align to the NFV TOSCA protocol, which
74 supports multiple TOSCA template yaml files, and also supports
75 self-defined node or other extensions.
76
77 VNF CSAR Package
78 ^^^^^^^^^^^^^^^^^^^^
79
80 CSAR Overview
81 ~~~~~~~~~~~~~~~~
82
83 TOSCA YAML CSAR file is an archive file using the ZIP file format whose
84 structure complies with the TOSCA Simple Profile YAML v1.2 Specification.
85 The CSAR file may have one of the two following structures:
86
87   - CSAR containing a TOSCA-Metadata directory, which includes the TOSCA.meta
88     metadata file providing an entry information for processing a CSAR file.
89
90   - CSAR containing a single yaml (.yml or .yaml) file at the root of the
91     archive. The yaml file is a TOSCA definition template that contains a
92     metadata section with template_name and template_version metadata. This
93     file is the CSAR Entry-Definitions file.
94
95 VNF Package Structure and Format
96 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
97
98 .. req::
99     :id: R-51347
100     :target: VNF
101     :keyword: MUST
102     :introduced: casablanca
103
104     The VNF package **MUST** be arranged as a CSAR archive as specified in
105     TOSCA Simple Profile in YAML 1.2.
106
107
108 .. req::
109     :id: R-87234
110     :target: VNF
111     :keyword: MAY
112     :introduced: casablanca
113
114     The VNF package provided by a VNF vendor **MAY** be either with
115     TOSCA-Metadata directory (CSAR Option 1) or without TOSCA-Metadata
116     directory (CSAR Option 2) as specified in ETSI GS NFV-SOL004. On-boarding
117     entity (ONAP SDC) must support both options.
118
119     **Note:** SDC supports only the CSAR Option 1 in Casablanca. The Option 2
120     will be considered in future ONAP releases,
121
122
123 VNF Package Contents
124 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125
126 .. req::
127     :id: R-10087
128     :target: VNF
129     :keyword: MUST
130     :introduced: casablanca
131
132     The VNF package **MUST** contain all standard artifacts as specified in
133     ETSI GS NFV-SOL004 including Manifest file, VNFD (or Main TOSCA/YAML
134     based Service Template) and other optional artifacts. CSAR Manifest
135     file as per SOL004 - for example ROOT\\ **MainServiceTemplate.mf**
136
137 .. req::
138     :id: R-01123
139     :target: VNF
140     :keyword: MUST
141     :introduced: casablanca
142
143     The VNF package Manifest file **MUST** contain: VNF package meta-data, a
144     list of all artifacts (both internal and external) entry’s including
145     their respected URI’s, an algorithm to calculate a digest and a digest
146     result calculated on the content of each artifacts, as specified in
147     ETSI GS NFV-SOL004. The VNF Package MUST include VNF Identification
148     Data to uniquely identify the resource for a given VNF provider. The
149     identification data must include: an identifier for the VNF, the name
150     of the VNF as was given by the VNF provider, VNF description, VNF
151     provider, and version.
152
153 .. req::
154     :id: R-21322
155     :target: VNF
156     :keyword: MUST
157     :introduced: casablanca
158
159     The VNF provider **MUST** provide their testing scripts to support
160     testing as specified in ETSI NFV-SOL004 - Testing directory in CSAR
161
162 .. req::
163     :id: R-26885
164     :target: VNF
165     :keyword: MUST
166     :introduced: casablanca
167
168     The VNF provider **MUST** provide the binaries and images needed to
169     instantiate the VNF (VNF and VNFC images) either as:
170
171       - Local artifact in CSAR: ROOT\\Artifacts\\ **VNF_Image.bin**
172
173       - externally referred (by URI) artifact in Manifest file (also may be
174         referred by VNF Descriptor)
175
176     Note: Currently, ONAP doesn't have the capability of Image management,
177     we upload the image into VIM/VNFM manually.
178
179 .. req::
180     :id: R-40820
181     :target: VNF
182     :keyword: MUST
183     :introduced: casablanca
184
185     The VNF provider MUST enumerate all of the open source licenses
186     their VNF(s) incorporate. CSAR License directory as per ETSI SOL004.
187
188     for example ROOT\\Licenses\\ **License_term.txt**
189
190
191 VNF Package Authenticity
192 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
193
194 Will be added in future releases.
195
196
197 VNF Package ONAP Extensions
198 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
199
200 1. TOACA data type extension tosca.datatypes.nfv.injectFile is used for vCPE
201    use case.
202 2. ONAP extensions for VNF package that is currently proposed for Dublin
203    release is VES extension described below. 
204
205 TOSCA Introduction
206 ^^^^^^^^^^^^^^^^^^^
207
208 TOSCA defines a Meta model for defining IT services. This Meta model
209 defines both the structure of a service as well as how to manage it. A
210 Topology Template (also referred to as the topology model of a service)
211 defines the structure of a service. Plans define the process models that
212 are used to create and terminate a service as well as to manage a
213 service during its whole lifetime.
214
215 A Topology Template consists of a set of Node Templates and Relationship
216 Templates that together define the topology model of a service as a (not
217 necessarily connected) directed graph. A node in this graph is
218 represented by a *Node Template*. A Node Template specifies the
219 occurrence of a Node Type as a component of a service. A *Node Type*
220 defines the properties of such a component (via *Node Type Properties*)
221 and the operations (via *Interfaces*) available to manipulate the
222 component. Node Types are defined separately for reuse purposes and a
223 Node Template references a Node Type and adds usage constraints, such as
224 how many times the component can occur.
225
226 |image1|
227
228 Figure 1: Structural Elements of Service Template and their Relations
229
230 TOSCA Modeling Principles & Data Model
231 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
232
233 This section describing TOSCA modeling principles and data model for
234 NFV, which shall be based on [TOSCA-1.0] and [TOSCA-Simple-Profile-YAML
235 V1.0], or new type based on ETSI NFV requirements, etc.
236
237 TOSCA VNF Descriptor 
238 ^^^^^^^^^^^^^^^^^^^^^^^^^
239
240 General
241 ~~~~~~~~~~
242
243 .. req::
244     :id: R-35854
245     :target: VNF
246     :keyword: MUST
247     :introduced: casablanca
248
249     The VNF Descriptor (VNFD) provided by VNF vendor **MUST** comply with
250     TOSCA/YAML based Service template for VNF descriptor specified in
251     ETSI NFV-SOL001.
252
253     **Note**: As the ETSI NFV-SOL001 is work in progress the below tables
254     summarizes the TOSCA definitions agreed to be part of current version
255     of NFV profile and that VNFD MUST comply with in ONAP Release 2+
256     Requirements.
257
258
259 .. req::
260     :id: R-65486
261     :target: VNF
262     :keyword: MUST
263     :introduced: casablanca
264
265     The VNFD **MUST** comply with ETSI GS NFV-SOL001 document endorsing
266     the above mentioned NFV Profile and maintaining the gaps with the
267     requirements specified in ETSI GS NFV-IFA011 standard.
268
269
270 .. req::
271     :id: R-17852
272     :target: VNF
273     :keyword: MAY
274     :introduced: casablanca
275
276     The VNFD **MAY** include TOSCA/YAML definitions that are not part of
277     NFV Profile. If provided, these definitions MUST comply with TOSCA
278     Simple Profile in YAML v.1.2.
279
280 .. req::
281     :id: R-46527
282     :target: VNF
283     :keyword: MUST
284     :introduced: casablanca
285
286     A VNFD is a deployment template which describes a VNF in terms of
287     deployment and operational behavior requirements. It contains
288     virtualized resources (nodes) requirements as well as connectivity
289     and interfaces requirements and **MUST** comply with info elements
290     specified in ETSI GS NFV-IFA 011. The main parts of the VNFD are
291     the following:
292
293       - VNF topology: it is modeled in a cloud agnostic way using virtualized
294         containers and their connectivity. Virtual Deployment Units (VDU)
295         describe the capabilities of the virtualized containers, such as
296         virtual CPU, RAM, disks; their connectivity is modeled with VDU
297         Connection Point Descriptors (VduCpd), Virtual Link Descriptors
298         (VnfVld) and VNF External Connection Point Descriptors
299         (VnfExternalCpd);
300     
301       - VNF deployment aspects: they are described in one or more
302         deployment flavours, including configurable parameters, instantiation
303         levels, placement constraints (affinity / antiaffinity), minimum and
304         maximum VDU instance numbers. Horizontal scaling is modeled with
305         scaling aspects and the respective scaling levels in the deployment
306         flavours;
307
308     **Note**: The deployment aspects (deployment flavour etc.) are postponed
309     for future ONAP releases. 
310
311       - VNF lifecycle management (LCM) operations: describes the LCM operations
312         supported per deployment flavour, and their input parameters;
313         Note, thatthe actual LCM implementation resides in a different layer,
314         namely referring to additional template artifacts.
315
316 .. req::
317     :id: R-15837
318     :target: VNF
319     :keyword: MUST
320     :introduced: casablanca
321
322     The following table defines the major TOSCA  Types specified in
323     ETSI NFV-SOL001 standard draft. The VNFD provided by a VNF vendor
324     **MUST** comply with the below definitions:
325
326
327 .. csv-table:: **TOSCA Definition**
328    :file: TOSCA_descriptor.csv
329    :header-rows: 1
330    :align: center
331    :widths: auto
332
333 Data Types
334 ~~~~~~~~~~~~
335
336 .. req::
337     :id: R-54356
338     :target: VNF
339     :keyword: MUST
340     :introduced: casablanca
341
342     The below table includes the data types used by NFV node and is based
343     on TOSCA/YAML constructs specified in draft GS NFV-SOL 001. The node
344     data definitions/attributes used in VNFD **MUST** comply with the below
345     table.
346
347
348 .. csv-table:: **NFV Data Types**
349    :file: NFV_data_type.csv
350    :header-rows: 1
351    :align: center
352    :widths: auto
353
354 .. req::
355     :id: R-54876
356     :target: VNF
357     :keyword: MUST
358     :introduced: casablanca
359
360     The below table describes the data types used for LCM configuration
361     and is based on TOSCA constructs specified in draft GS NFV-SOL 001.
362     The LCM configuration data elements used in VNFD **MUST** comply
363     with the below table.
364
365 .. csv-table:: **LCM Configuration**
366    :file: LCM_config.csv
367    :header-rows: 1
368    :align: center
369    :widths: auto
370
371
372 Artifact Types
373 ~~~~~~~~~~~~~~~~~~~~~~~~
374
375 No artifact type is currently supported in ONAP. 
376
377
378 Capability Types
379 ~~~~~~~~~~~~~~~~~~~~~~~~
380
381 .. req::
382     :id: R-67895
383     :target: VNF
384     :keyword: MUST
385     :introduced: casablanca
386
387     The VNFD provided by VNF vendor may use the below described TOSCA
388     capabilities. An on-boarding entity (ONAP SDC) **MUST** support them.
389
390       **tosca.capabilities.nfv.VirtualBindable**
391
392         A node type that includes the VirtualBindable capability indicates
393         that it can be pointed by **tosca.relationships.nfv.VirtualBindsTo**
394         relationship type.
395
396       **tosca.capabilities.nfv.VirtualLinkable**
397
398         A node type that includes the VirtualLinkable capability indicates
399         that it can be pointed by **tosca.relationships.nfv.VirtualLinksTo**
400         relationship.
401
402       **tosca.capabilities.nfv.ExtVirtualLinkable**
403
404         A node type that includes the ExtVirtualLinkable capability
405         indicates that it can be pointed by
406         **tosca.relationships.nfv.VirtualLinksTo** relationship.
407
408       **Note**: This capability type is used in Casablanca how it does
409       not exist in the last SOL001 draft
410       
411       **tosca.capabilities.nfv.VirtualCompute** and
412       **tosca.capabilities.nfv.VirtualStorage** includes flavours of VDU
413
414
415 Relationship Types
416 ~~~~~~~~~~~~~~~~~~~~~~~~
417
418 .. req::
419     :id: R-95321
420     :target: VNF
421     :keyword: MUST
422     :introduced: casablanca
423
424     The VNFD provided by VNF vendor may use the below described TOSCA
425     relationships. An on-boarding entity (ONAP SDC) **MUST** support them.
426
427       **tosca.relationships.nfv.VirtualBindsTo**
428
429         This relationship type represents an association relationship between
430         VDU and CP node types.
431
432       **tosca.relationships.nfv.VirtualLinksTo**
433
434         This relationship type represents an association relationship between
435         the VduCpd’s and VirtualLinkDesc node types.
436
437
438 Interface Types
439 ~~~~~~~~~~~~~~~~~~~~~~~~
440
441 .. req::
442     :id: R-32155
443     :target: VNF
444     :keyword: MUST
445     :introduced: casablanca
446
447     The VNFD provided by VNF vendor may use the below described TOSCA
448     interface types. An on-boarding entity (ONAP SDC) **MUST** support them.
449
450       **tosca.interfaces.nfv.vnf.lifecycle.Nfv** supports LCM operations
451
452
453 +--------------------------------------------------------------------+
454 | +--------------------------------------------------------------+   |
455 | | tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0       |   |
456 | |                                                              |   |
457 | | description: VNFD TOSCA file demo                            |   |
458 | |                                                              |   |
459 | | imports:                                                     |   |
460 | |                                                              |   |
461 | | - TOSCA\_definition\_nfv\_1\_0.yaml                          |   |
462 | |                                                              |   |
463 | | - TOSCA\_definition\_nfv\_ext\_1\_0.yaml                     |   |
464 | |                                                              |   |
465 | | | **node\_types:                                             |   |
466 | |   tosca.nodes.nfv.VNF.vOpenNAT:                              |   |
467 | |   derived\_from:** tosca.nodes.nfv.VNF                       |   |
468 | | | **requirements:                                            |   |
469 | |   **- **sriov\_plane:                                        |   |
470 | |   capability:** tosca.capabilities.nfv.VirtualLinkable       |   |
471 | | | **node:** tosca.nodes.nfv.VnfVirtualLinkDesc               |   |
472 | | | **relationship:** tosca.relationships.nfv.VirtualLinksTo   |   |
473 | +--------------------------------------------------------------+   |
474 +====================================================================+
475 +--------------------------------------------------------------------+
476
477
478 HPA Requirements
479 ^^^^^^^^^^^^^^^^^^
480
481 1. SR-IOV Passthrought
482
483 Definitions of SRIOV\_Port are necessary if VDU supports SR-IOV. Here is
484 an example.
485
486 .. code-block:: yaml
487
488   node\_templates:
489
490   vdu\_vNat:
491
492   SRIOV\_Port:
493
494   attributes:
495
496   tosca\_name: SRIOV\_Port
497
498   properties:
499
500   virtual\_network\_interface\_requirements:
501
502   - name: sriov
503
504   support\_mandatory: false
505
506   description: sriov
507
508   requirement:
509
510   SRIOV: true
511
512   role: root
513
514   description: sriov port
515
516   layer\_protocol: ipv4
517
518   requirements:
519
520   - virtual\_binding:
521
522   capability: virtual\_binding
523
524   node: vdu\_vNat
525
526   relationship:
527
528   type: tosca.relationships.nfv.VirtualBindsTo
529
530   - virtual\_link:
531
532   node: tosca.nodes.Root
533
534   type: tosca.nodes.nfv.VduCpd
535
536   substitution\_mappings:
537
538   requirements:
539
540   sriov\_plane:
541
542   - SRIOV\_Port
543
544   - virtual\_link
545
546   node\_type: tosca.nodes.nfv.VNF.vOpenNAT
547
548
549 2. Hugepages
550
551 Definitions of mem\_page\_size as one property shall be added to
552 Properties and set the value to large if one VDU node supports
553 huagepages. Here is an example.
554
555 .. code-block:: yaml
556
557   node\_templates:
558
559   vdu\_vNat:
560
561   Hugepages:
562
563   attributes:
564
565   tosca\_name: Huge\_pages\_demo
566
567   properties:
568
569   mem\_page\_size:large
570
571
572 3. NUMA (CPU/Mem)
573
574 Likewise, we shall add definitions of numa to
575 requested\_additional\_capabilities if we wand VUD nodes to support
576 NUMA. Here is an example.
577
578 .. code-block:: yaml
579
580   topology\_template:
581
582   node\_templates:
583
584   vdu\_vNat:
585
586   capabilities:
587
588   virtual\_compute:
589
590   properties:
591
592   virtual\_memory:
593
594   numa\_enabled: true
595
596   virtual\_mem\_size: 2 GB
597
598   requested\_additional\_capabilities:
599
600   numa:
601
602   support\_mandatory: true
603
604   requested\_additional\_capability\_name: numa
605
606   target\_performance\_parameters:
607
608   hw:numa\_nodes: "2"
609
610   hw:numa\_cpus.0: "0,1"
611
612   hw:numa\_mem.0: "1024"
613
614   hw:numa\_cpus.1: "2,3,4,5"
615
616   hw:numa\_mem.1: "1024"
617
618
619 4. Hyper-Theading
620
621 Definitions of Hyper-Theading are necessary as one of
622 requested\_additional\_capabilities of one VUD node if that node
623 supports Hyper-Theading. Here is an example.
624
625 .. code-block:: yaml
626
627   topology\_template:
628
629   node\_templates:
630
631   vdu\_vNat:
632
633   capabilities:
634
635   virtual\_compute:
636
637   properties:
638
639   virtual\_memory:
640
641   numa\_enabled: true
642
643   virtual\_mem\_size: 2 GB
644
645   requested\_additional\_capabilities:
646
647   hyper\_threading:
648
649   support\_mandatory: true
650
651   requested\_additional\_capability\_name: hyper\_threading
652
653   target\_performance\_parameters:
654
655   hw:cpu\_sockets : "2"
656
657   hw:cpu\_threads : "2"
658
659   hw:cpu\_cores : "2"
660
661   hw:cpu\_threads\_policy: "isolate"
662
663
664 5. OVS+DPDK
665
666 Definitions of ovs\_dpdk are necessary as one of
667 requested\_additional\_capabilities of one VUD node if that node
668 supports dpdk. Here is an example.
669
670 .. code-block:: yaml
671
672   topology\_template:
673
674   node\_templates:
675
676   vdu\_vNat:
677
678   capabilities:
679
680   virtual\_compute:
681
682   properties:
683
684   virtual\_memory:
685
686   numa\_enabled: true
687
688   virtual\_mem\_size: 2 GB
689
690   requested\_additional\_capabilities:
691
692   ovs\_dpdk:
693
694   support\_mandatory: true
695
696   requested\_additional\_capability\_name: ovs\_dpdk
697
698   target\_performance\_parameters:
699
700   sw:ovs\_dpdk: "true"
701
702
703 VES Requirements
704 ^^^^^^^^^^^^^^^^^^^^^^^^^
705
706 **Note: ONAP proprietary extensions in ETSI SOL004 standards for VES support
707 in CSAR package need to be manually loaded in R3 (Casablanca) for VNF and
708 PNFs. Platform support will be developed for this in upcoming releases.**
709
710
711 NFV TOSCA Type Definition
712 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
713
714 tosca.capabilites.nfv.VirtualCompute
715 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
716
717 This capability is used with the properties specified in ETSI SOL001 draft.
718
719 tosca.nodes.nfv.VDU.Compute
720 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
721
722 The NFV Virtualization Deployment Unit (VDU) compute node type
723 represents a VDU entity which it describes the deployment and
724 operational behavior of a VNF component (VNFC), as defined by **[ETSI
725 NFV IFA011].**
726
727 +-----------------------+-------------------------------+
728 | Shorthand Name        | VDU.Compute                   |
729 +=======================+===============================+
730 | Type Qualified Name   | tosca:VDU.Compute             |
731 +-----------------------+-------------------------------+
732 | Type URI              | tosca.nodes.nfv.VDU.Compute   |
733 +-----------------------+-------------------------------+
734 | derived\_from         | tosca.nodes.Compute           |
735 +-----------------------+-------------------------------+
736
737
738
739 Attributes
740 ++++++++++++
741
742 None
743
744
745 Capabilities
746 ++++++++++++++
747
748 +------------+--------------------+------------+------------------------------+
749 | Name       | Type               | Constraints| Description                  |
750 +============+====================+============+==============================+
751 | virtual\   | tosca.\            |            | Describes virtual compute    |
752 | _compute   | capabilities.nfv.\ |            | resources capabilities.      |
753 |            | VirtualCompute     |            |                              |
754 +------------+--------------------+------------+------------------------------+
755 | monitoring\| tosca.\            | None       | Monitoring parameter, which  |
756 | _parameter | capabilities.nfv.\ |            | can be tracked for a VNFC    |
757 |            | Metric             |            | based on this VDU            |
758 |            |                    |            |                              |
759 |            |                    |            | Examples include:            |
760 |            |                    |            | memory-consumption,          |
761 |            |                    |            | CPU-utilisation,             |
762 |            |                    |            | bandwidth-consumption, VNFC  |
763 |            |                    |            | downtime, etc.               |
764 +------------+--------------------+------------+------------------------------+
765 | Virtual\   | tosca.\            |            | Defines ability of           |
766 | _binding   | capabilities.nfv.\ |            | VirtualBindable              |
767 |            | VirtualBindable    |            |                              |
768 |            |                    |            |                              |
769 |            | editor note: need  |            |                              |
770 |            | to create a        |            |                              |
771 |            | capability type    |            |                              |
772 +------------+--------------------+------------+------------------------------+
773
774
775
776 Definition
777 ++++++++++++
778
779 .. code-block:: yaml
780
781   tosca.nodes.nfv.VDU.Compute:
782
783   derived\_from: tosca.nodes.Compute
784
785   properties:
786
787   name:
788
789   type: string
790
791   required: true
792
793   description:
794
795   type: string
796
797   required: true
798
799   boot\_order:
800
801   type: list # explicit index (boot index) not necessary, contrary to IFA011
802
803   entry\_schema:
804
805   type: string
806
807   required: false
808
809   nfvi\_constraints:
810
811   type: list
812
813   entry\_schema:
814
815   type: string
816
817   required: false
818
819   configurable\_properties:
820
821   type: map
822
823   entry\_schema:
824
825   type: tosca.datatypes.nfv.VnfcConfigurableProperties
826
827   required: true
828
829   attributes:
830
831   private\_address:
832
833   status: deprecated
834
835   public\_address:
836
837   status: deprecated
838
839   networks:
840
841   status: deprecated
842
843   ports:
844
845   status: deprecated
846
847   capabilities:
848
849   virtual\_compute:
850
851   type: tosca.capabilities.nfv.VirtualCompute
852
853   virtual\_binding:
854
855   type: tosca.capabilities.nfv.VirtualBindable
856
857   #monitoring\_parameter:
858
859   # modeled as ad hoc (named) capabilities in VDU node template
860
861   # for example:
862
863   #capabilities:
864
865   # cpu\_load: tosca.capabilities.nfv.Metric
866
867   # memory\_usage: tosca.capabilities.nfv.Metric
868
869   host: #Editor note: FFS. How this capabilities should be used in NFV Profile|
870
871   type: *tosca.capabilities.Container*
872
873   valid\_source\_types:
874   [*tosca.nodes.SoftwareComponent*]
875
876   occurrences: [0,UNBOUNDED]
877
878   endpoint:
879
880   occurrences: [0,0]
881
882   os:
883
884   occurrences: [0,0]
885
886   scalable:
887   #Editor note: FFS. How this capabilities should be used in NFV Profile
888
889   type: *tosca.capabilities.Scalable*
890
891   binding:
892
893   occurrences: [0,UNBOUND]
894
895   requirements:
896
897   - virtual\_storage:
898
899   capability: tosca.capabilities.nfv.VirtualStorage
900
901   relationship: tosca.relationships.nfv.VDU.AttachedTo
902
903   node: tosca.nodes.nfv.VDU.VirtualStorage
904
905   occurences: [ 0, UNBOUNDED ]
906
907   - local\_storage: #For NFV Profile, this requirement is deprecated.
908
909   occurrences: [0,0]
910
911   artifacts:
912
913   - sw\_image:
914
915   file:
916
917   type: tosca.artifacts.nfv.SwImage
918
919
920 Artifact
921 ++++++++++
922
923 Note: currently not supported.
924
925 +--------+---------+----------------+------------+------------------------+
926 | Name   | Required| Type           | Constraints| Description            |
927 +========+=========+================+============+========================+
928 | SwImage| Yes     | tosca.\        |            | Describes the software |
929 |        |         | artifacts.nfv.\|            | image which is directly|
930 |        |         | SwImage        |            | realizing this virtual |
931 |        |         |                |            | storage                |
932 +--------+---------+----------------+------------+------------------------+
933
934
935 |image2|
936
937
938
939 tosca.nodes.nfv.VDU.VirtualStorage
940 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
941
942 The NFV VirtualStorage node type represents a virtual storage entity
943 which it describes the deployment and operational behavior of a virtual
944 storage resources, as defined by **[ETSI NFV IFA011].**
945
946 **[editor note]** open issue: should NFV profile use the current storage
947 model as described in YAML 1.1. Pending on Shitao proposal (see
948 NFVIFA(17)000110 discussion paper)
949
950 **[editor note]** new relationship type as suggested in Matt
951 presentation. Slide 8. With specific rules of “valid\_target\_type”
952
953 +---------------------------+--------------------------------------+
954 | **Shorthand Name**        | VirtualStorage                       |
955 +===========================+======================================+
956 | **Type Qualified Name**   | tosca: VirtualStorage                |
957 +---------------------------+--------------------------------------+
958 | **Type URI**              | tosca.nodes.nfv.VDU.VirtualStorage   |
959 +---------------------------+--------------------------------------+
960 | **derived\_from**         | tosca.nodes.Root                     |
961 +---------------------------+--------------------------------------+
962
963 tosca.artifacts.nfv.SwImage
964 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
965
966 +---------------------------+------------------------------------+
967 | **Shorthand Name**        | SwImage                            |
968 +===========================+====================================+
969 | **Type Qualified Name**   | tosca:SwImage                      |
970 +---------------------------+------------------------------------+
971 | **Type URI**              | tosca.artifacts.nfv.SwImage        |
972 +---------------------------+------------------------------------+
973 | **derived\_from**         | tosca.artifacts.Deployment.Image   |
974 +---------------------------+------------------------------------+
975
976 Properties
977 ++++++++++++
978
979 +-----------------+---------+----------+------------+-------------------------+
980 | Name            | Required| Type     | Constraints| Description             |
981 +=================+=========+==========+============+=========================+
982 | name            | yes     | string   |            | Name of this software   |
983 |                 |         |          |            | image                   |
984 +-----------------+---------+----------+------------+-------------------------+
985 | version         | yes     | string   |            | Version of this software|
986 |                 |         |          |            | image                   |
987 +-----------------+---------+----------+------------+-------------------------+
988 | checksum        | yes     | string   |            | Checksum of the software|
989 |                 |         |          |            | image file              |
990 +-----------------+---------+----------+------------+-------------------------+
991 | container\      | yes     | string   |            | The container format    |
992 | _format         |         |          |            | describes the container |
993 |                 |         |          |            | file format in which    |
994 |                 |         |          |            | software image is       |
995 |                 |         |          |            | provided.               |
996 +-----------------+---------+----------+------------+-------------------------+
997 | disk\_format    | yes     | string   |            | The disk format of a    |
998 |                 |         |          |            | software image is the   |
999 |                 |         |          |            | format of the underlying|
1000 |                 |         |          |            | disk image              |
1001 +-----------------+---------+----------+------------+-------------------------+
1002 | min\_disk       | yes     | scalar-\ |            | The minimal disk size   |
1003 |                 |         | unit.size|            | requirement for this    |
1004 |                 |         |          |            | software image.         |
1005 +-----------------+---------+----------+------------+-------------------------+
1006 | min\_ram        | no      | scalar-\ |            | The minimal RAM         |
1007 |                 |         | unit.size|            | requirement for this    |
1008 |                 |         |          |            | software image.         |
1009 +-----------------+---------+----------+------------+-------------------------+
1010 | Size            | yes     | scalar-\ |            | The size of this        |
1011 |                 |         | unit.size|            | software image          |
1012 +-----------------+---------+----------+------------+-------------------------+
1013 | sw\_image       | yes     | string   |            | A reference to the      |
1014 |                 |         |          |            | actual software image   |
1015 |                 |         |          |            | within VNF Package, or  |
1016 |                 |         |          |            | url.                    |
1017 +-----------------+---------+----------+------------+-------------------------+
1018 | operating\      | no      | string   |            | Identifies the operating|
1019 | _system         |         |          |            | system used in the      |
1020 |                 |         |          |            | software image.         |
1021 +-----------------+---------+----------+------------+-------------------------+
1022 | supported\      | no      | list     |            | Identifies the          |
1023 | _virtualization\|         |          |            | virtualization          |
1024 | _enviroment     |         |          |            | environments (e.g.      |
1025 |                 |         |          |            | hypervisor) compatible  |
1026 |                 |         |          |            | with this software image|
1027 +-----------------+---------+----------+------------+-------------------------+
1028
1029
1030 Definition
1031 +++++++++++
1032
1033 .. code-block:: yaml
1034
1035   tosca.artifacts.nfv.SwImage:
1036
1037     derived\_from: tosca.artifacts.Deployment.Image
1038
1039     properties or metadata:
1040
1041       #id:
1042
1043         # node name
1044
1045       name:
1046
1047         type: string
1048
1049   required: true
1050
1051       version:
1052
1053         type: string
1054
1055   required: true
1056
1057       checksum:
1058
1059         type: string
1060
1061   required: true
1062
1063       container\_format:
1064
1065         type: string
1066
1067   required: true
1068
1069       disk\_format:
1070
1071         type: string
1072
1073   required: true
1074
1075       min\_disk:
1076
1077         type: scalar-unit.size # Number
1078
1079   required: true
1080
1081       min\_ram:
1082
1083         type: scalar-unit.size # Number
1084
1085   required: false
1086
1087       size:
1088
1089         type: scalar-unit.size # Number
1090
1091   required: true
1092
1093       sw\_image:
1094
1095         type: string
1096
1097   required: true
1098
1099       operating\_system:
1100
1101         type: string
1102
1103   required: false
1104
1105       supported\_virtualisation\_environments:
1106
1107         type: list
1108
1109         entry\_schema:
1110
1111           type: string
1112
1113   required: false
1114
1115
1116 .. |image1| image:: ../Image1.png
1117    :width: 5.76806in
1118    :height: 4.67161in
1119
1120 .. |image2| image:: ../Image2.png
1121    :width: 5.40486in
1122    :height: 2.46042in