Merge "VNFRQTS - Fixing embedded images"
[vnfrqts/requirements.git] / docs / Chapter5 / Tosca.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. Copyright 2017 AT&T Intellectual Property.  All rights reserved.
4
5 TOSCA YAML
6 ----------
7
8
9 Introduction
10 ^^^^^^^^^^^^
11
12 This reference document is the VNF TOSCA Template Requirements for
13 ONAP, which provides recommendations and standards for building VNF
14 TOSCA templates compatible with ONAP initial implementations of
15 Network Cloud. It has the following features:
16
17 1. VNF TOSCA template designer supports GUI and CLI.
18
19 2. VNF TOSCA template is aligned to the newest TOSCA protocol, “Working
20    Draft 04-Revision 06”.
21
22 3. VNF TOSCA template supports HPA features, such as NUMA, Hyper
23    Threading, SRIOV, etc.
24
25 Intended Audience
26 ^^^^^^^^^^^^^^^^^^
27
28 This document is intended for persons developing VNF TOSCA templates
29 that will be orchestrated by ONAP.
30
31 Scope
32 ^^^^^^^^^^^^^^^^
33
34 ONAP implementations of Network Cloud supports TOSCA Templates, also
35 referred to as TOSCA in this document.
36
37 ONAP requires the TOSCA Templates to follow a specific format. This
38 document provides the mandatory, recommended, and optional requirements
39 associated with this format.
40
41 Overview
42 ^^^^^^^^^^^^^^^^
43
44 The document includes three charters to help the VNF providers to use the
45 VNF model design tools and understand the VNF package structure and VNF
46 TOSCA templates.
47
48 In the ONAP, VNF Package and VNFD template can be designed by manually
49 or via model designer tools. VNF model designer tools can provide the
50 GUI and CLI tools for the VNF provider to develop the VNF Package and VNFD
51 template.
52
53 The VNF package structure is align to the NFV TOSCA protocol, and
54 supports CSAR
55
56 The VNFD and VNF package are all align to the NFV TOSCA protocol, which
57 supports multiple TOSCA template yaml files, and also supports
58 self-defined node or other extensions.
59
60 NFV TOSCA Template
61 ^^^^^^^^^^^^^^^^^^^^
62
63 TOSCA templates supported by ONAP must follow the requirements
64 enumerated in this section.
65
66 TOSCA Introduction
67 ^^^^^^^^^^^^^^^^^^^
68
69 TOSCA defines a Meta model for defining IT services. This Meta model
70 defines both the structure of a service as well as how to manage it. A
71 Topology Template (also referred to as the topology model of a service)
72 defines the structure of a service. Plans define the process models that
73 are used to create and terminate a service as well as to manage a
74 service during its whole lifetime.
75
76 A Topology Template consists of a set of Node Templates and Relationship
77 Templates that together define the topology model of a service as a (not
78 necessarily connected) directed graph. A node in this graph is
79 represented by a *Node Template*. A Node Template specifies the
80 occurrence of a Node Type as a component of a service. A *Node Type*
81 defines the properties of such a component (via *Node Type Properties*)
82 and the operations (via *Interfaces*) available to manipulate the
83 component. Node Types are defined separately for reuse purposes and a
84 Node Template references a Node Type and adds usage constraints, such as
85 how many times the component can occur.
86
87 |image1|
88
89 Figure 1: Structural Elements of Service Template and their Relations
90
91 TOSCA Modeling Principles & Data Model
92 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
93
94 This section describing TOSCA modeling principles and data model for
95 NFV, which shall be based on [TOSCA-1.0] and [TOSCA-Simple-Profile-YAML
96 V1.0], or new type based on ETSI NFV requirements, etc.
97
98 VNF Descriptor Template
99 ^^^^^^^^^^^^^^^^^^^^^^^^^
100
101 The VNF Descriptor (VNFD) describes the topology of the VNF by means of
102 ETSI NFV IFA011 [IFA011] terms such as VDUs, Connection Points, Virtual
103 Links, External Connection Points, Scaling Aspects, Instantiation Levels
104 and Deployment Flavours.
105
106 The VNFD (VNF Descriptor) is read by both the NFVO and the VNFM. It
107 represents the contract & interface of a VNF and ensures the
108 interoperability across the NFV functional blocks.
109
110 The main parts of the VNFD are the following:
111
112 -  VNF topology: it is modeled in a cloud agnostic way using virtualized
113    containers and their connectivity. Virtual Deployment Units (VDU)
114    describe the capabilities of the virtualized containers, such as
115    virtual CPU, RAM, disks; their connectivity is modeled with VDU
116    Connection Point Descriptors (VduCpd), Virtual Link Descriptors (Vld)
117    and VNF External Connection Point Descriptors (VnfExternalCpd);
118
119 -  VNF deployment aspects: they are described in one or more deployment
120    flavours, including instantiation levels, supported LCM operations,
121    VNF LCM operation configuration parameters, placement constraints
122    (affinity / antiaffinity), minimum and maximum VDU instance numbers,
123    and scaling aspect for horizontal scaling.
124
125 The following table defines the TOSCA Type “derived from” values that
126 SHALL be used when using the TOSCA Simple Profile for NFV version 1.0
127 specification [TOSCA-Simple-Profile-NFV-v1.0] for NFV VNFD with aggreed
128 changes from ETSI SOL001 draft.
129
130 +---------------------+------------------------------------+-----------------+
131 | **ETSI NFV Element**| **TOSCA VNFD**                     | **Derived from**|
132 |                     |                                    |                 |
133 | **[IFA011]**        | **[TOSCA-Simple-Profile-NFV-v1.0]**|                 |
134 +=====================+====================================+=================+
135 | VNF                 | tosca.nodes.nfv.VNF                | tosca.nodes.Root|
136 +---------------------+------------------------------------+-----------------+
137 | Cpd (Connection     | tosca.nodes.nfv.Cp                 | tosca.nodes.Root|
138 | Point)              | tosca.nodes.nfv.Cp                 | tosca.nodes.Root|
139 +---------------------+------------------------------------+-----------------+
140 | VduCpd (internal    | tosca.nodes.nfv.VduCp              | tosca.nodes.\   |
141 | connection point)   |                                    | nfv.Cp          |
142 +---------------------+------------------------------------+-----------------+
143 | VnfVirtualLinkDesc  | tosca.nodes.nfv.VnfVirtualLink     | tosca.nodes.Root|
144 | (Virtual Link)      |                                    |                 |
145 +---------------------+------------------------------------+-----------------+
146 | VDU Virtual Storage | tosca.nodes.nfv.VDU.VirtualStorage | tosca.nodes.Root|
147 +---------------------+------------------------------------+-----------------+
148 | VDU Virtual Compute | tosca.nodes.nfv.VDU.Compute        | tosca.nodes.Root|
149 +---------------------+------------------------------------+-----------------+
150 | Software Image      |                                    |                 |
151 +---------------------+------------------------------------+-----------------+
152 | Deployment Flavour  |                                    |                 |
153 +---------------------+------------------------------------+-----------------+
154 | Scaling Aspect      |                                    |                 |
155 +---------------------+------------------------------------+-----------------+
156 | Element Group       |                                    |                 |
157 +---------------------+------------------------------------+-----------------+
158 | Instantiation       |                                    |                 |
159 | Level               |                                    |                 |
160 +---------------------+------------------------------------+-----------------+
161
162
163 +--------------------------------------------------------------------+
164 | +--------------------------------------------------------------+   |
165 | | tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0       |   |
166 | |                                                              |   |
167 | | description: VNFD TOSCA file demo                            |   |
168 | |                                                              |   |
169 | | imports:                                                     |   |
170 | |                                                              |   |
171 | | - TOSCA\_definition\_nfv\_1\_0.yaml                          |   |
172 | |                                                              |   |
173 | | - TOSCA\_definition\_nfv\_ext\_1\_0.yaml                     |   |
174 | |                                                              |   |
175 | | | **node\_types:                                             |   |
176 | |   tosca.nodes.nfv.VNF.vOpenNAT:                              |   |
177 | |   derived\_from:** tosca.nodes.nfv.VNF                       |   |
178 | | | **requirements:                                            |   |
179 | |   **- **sriov\_plane:                                        |   |
180 | |   capability:** tosca.capabilities.nfv.VirtualLinkable       |   |
181 | | | **node:** tosca.nodes.nfv.VnfVirtualLinkDesc               |   |
182 | | | **relationship:** tosca.relationships.nfv.VirtualLinksTo   |   |
183 | +--------------------------------------------------------------+   |
184 +====================================================================+
185 +--------------------------------------------------------------------+
186
187 HPA Requirements
188 ^^^^^^^^^^^^^^^^^^
189
190 1. SR-IOV Passthrought
191
192 Definitions of SRIOV\_Port are necessary if VDU supports SR-IOV. Here is
193 an example.
194
195 +------------------------------------------------+
196 | node\_templates:                               |
197 |                                                |
198 | vdu\_vNat:                                     |
199 |                                                |
200 | SRIOV\_Port:                                   |
201 |                                                |
202 | attributes:                                    |
203 |                                                |
204 | tosca\_name: SRIOV\_Port                       |
205 |                                                |
206 | properties:                                    |
207 |                                                |
208 | virtual\_network\_interface\_requirements:     |
209 |                                                |
210 | - name: sriov                                  |
211 |                                                |
212 | support\_mandatory: false                      |
213 |                                                |
214 | description: sriov                             |
215 |                                                |
216 | requirement:                                   |
217 |                                                |
218 | SRIOV: true                                    |
219 |                                                |
220 | role: root                                     |
221 |                                                |
222 | description: sriov port                        |
223 |                                                |
224 | layer\_protocol: ipv4                          |
225 |                                                |
226 | requirements:                                  |
227 |                                                |
228 | - virtual\_binding:                            |
229 |                                                |
230 | capability: virtual\_binding                   |
231 |                                                |
232 | node: vdu\_vNat                                |
233 |                                                |
234 | relationship:                                  |
235 |                                                |
236 | type: tosca.relationships.nfv.VirtualBindsTo   |
237 |                                                |
238 | - virtual\_link:                               |
239 |                                                |
240 | node: tosca.nodes.Root                         |
241 |                                                |
242 | type: tosca.nodes.nfv.VduCpd                   |
243 |                                                |
244 | substitution\_mappings:                        |
245 |                                                |
246 | requirements:                                  |
247 |                                                |
248 | sriov\_plane:                                  |
249 |                                                |
250 | - SRIOV\_Port                                  |
251 |                                                |
252 | - virtual\_link                                |
253 |                                                |
254 | node\_type: tosca.nodes.nfv.VNF.vOpenNAT       |
255 +------------------------------------------------+
256
257 2. Hugepages
258
259 Definitions of mem\_page\_size as one property shall be added to
260 Properties and set the value to large if one VDU node supports
261 huagepages. Here is an example.
262
263 +----------------------------------+
264 | node\_templates:                 |
265 |                                  |
266 | vdu\_vNat:                       |
267 |                                  |
268 | Hugepages:                       |
269 |                                  |
270 | attributes:                      |
271 |                                  |
272 | tosca\_name: Huge\_pages\_demo   |
273 |                                  |
274 | properties:                      |
275 |                                  |
276 | mem\_page\_size:large            |
277 +==================================+
278 +----------------------------------+
279
280 3. NUMA (CPU/Mem)
281
282 Likewise, we shall add definitions of numa to
283 requested\_additional\_capabilities if we wand VUD nodes to support
284 NUMA. Here is an example.
285
286 +-------------------------------------------------+
287 | topology\_template:                             |
288 |                                                 |
289 | node\_templates:                                |
290 |                                                 |
291 | vdu\_vNat:                                      |
292 |                                                 |
293 | capabilities:                                   |
294 |                                                 |
295 | virtual\_compute:                               |
296 |                                                 |
297 | properties:                                     |
298 |                                                 |
299 | virtual\_memory:                                |
300 |                                                 |
301 | numa\_enabled: true                             |
302 |                                                 |
303 | virtual\_mem\_size: 2 GB                        |
304 |                                                 |
305 | requested\_additional\_capabilities:            |
306 |                                                 |
307 | numa:                                           |
308 |                                                 |
309 | support\_mandatory: true                        |
310 |                                                 |
311 | requested\_additional\_capability\_name: numa   |
312 |                                                 |
313 | target\_performance\_parameters:                |
314 |                                                 |
315 | hw:numa\_nodes: "2"                             |
316 |                                                 |
317 | hw:numa\_cpus.0: "0,1"                          |
318 |                                                 |
319 | hw:numa\_mem.0: "1024"                          |
320 |                                                 |
321 | hw:numa\_cpus.1: "2,3,4,5"                      |
322 |                                                 |
323 | hw:numa\_mem.1: "1024"                          |
324 +-------------------------------------------------+
325
326 4. Hyper-Theading
327
328 Definitions of Hyper-Theading are necessary as one of
329 requested\_additional\_capabilities of one VUD node if that node
330 supports Hyper-Theading. Here is an example.
331
332 +-------------------------------------------------------------+
333 | topology\_template:                                         |
334 |                                                             |
335 | node\_templates:                                            |
336 |                                                             |
337 | vdu\_vNat:                                                  |
338 |                                                             |
339 | capabilities:                                               |
340 |                                                             |
341 | virtual\_compute:                                           |
342 |                                                             |
343 | properties:                                                 |
344 |                                                             |
345 | virtual\_memory:                                            |
346 |                                                             |
347 | numa\_enabled: true                                         |
348 |                                                             |
349 | virtual\_mem\_size: 2 GB                                    |
350 |                                                             |
351 | requested\_additional\_capabilities:                        |
352 |                                                             |
353 | hyper\_threading:                                           |
354 |                                                             |
355 | support\_mandatory: true                                    |
356 |                                                             |
357 | requested\_additional\_capability\_name: hyper\_threading   |
358 |                                                             |
359 | target\_performance\_parameters:                            |
360 |                                                             |
361 | hw:cpu\_sockets : "2"                                       |
362 |                                                             |
363 | hw:cpu\_threads : "2"                                       |
364 |                                                             |
365 | hw:cpu\_cores : "2"                                         |
366 |                                                             |
367 | hw:cpu\_threads\_policy: "isolate"                          |
368 +-------------------------------------------------------------+
369
370 5. OVS+DPDK
371
372 Definitions of ovs\_dpdk are necessary as one of
373 requested\_additional\_capabilities of one VUD node if that node
374 supports dpdk. Here is an example.
375
376 +------------------------------------------------------+
377 | topology\_template:                                  |
378 |                                                      |
379 | node\_templates:                                     |
380 |                                                      |
381 | vdu\_vNat:                                           |
382 |                                                      |
383 | capabilities:                                        |
384 |                                                      |
385 | virtual\_compute:                                    |
386 |                                                      |
387 | properties:                                          |
388 |                                                      |
389 | virtual\_memory:                                     |
390 |                                                      |
391 | numa\_enabled: true                                  |
392 |                                                      |
393 | virtual\_mem\_size: 2 GB                             |
394 |                                                      |
395 | requested\_additional\_capabilities:                 |
396 |                                                      |
397 | ovs\_dpdk:                                           |
398 |                                                      |
399 | support\_mandatory: true                             |
400 |                                                      |
401 | requested\_additional\_capability\_name: ovs\_dpdk   |
402 |                                                      |
403 | target\_performance\_parameters:                     |
404 |                                                      |
405 | sw:ovs\_dpdk: "true"                                 |
406 +------------------------------------------------------+
407
408 NFV TOSCA Type Definition
409 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
410
411 tosca.capabilites.nfv.VirtualCompute
412 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
413
414 This capability is used with the properties specified in ETSI SOL001 draft.
415
416 tosca.nodes.nfv.VDU.Compute
417 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
418
419 The NFV Virtualization Deployment Unit (VDU) compute node type
420 represents a VDU entity which it describes the deployment and
421 operational behavior of a VNF component (VNFC), as defined by **[ETSI
422 NFV IFA011].**
423
424 +-----------------------+-------------------------------+
425 | Shorthand Name        | VDU.Compute                   |
426 +=======================+===============================+
427 | Type Qualified Name   | tosca:VDU.Compute             |
428 +-----------------------+-------------------------------+
429 | Type URI              | tosca.nodes.nfv.VDU.Compute   |
430 +-----------------------+-------------------------------+
431 | derived\_from         | tosca.nodes.Compute           |
432 +-----------------------+-------------------------------+
433
434
435
436 Attributes
437 ++++++++++++
438
439 None
440
441
442 Capabilities
443 ++++++++++++++
444
445 +------------+--------------------+------------+------------------------------+
446 | Name       | Type               | Constraints| Description                  |
447 +============+====================+============+==============================+
448 | virtual\   | tosca.\            |            | Describes virtual compute    |
449 | _compute   | capabilities.nfv.\ |            | resources capabilities.      |
450 |            | VirtualCompute     |            |                              |
451 +------------+--------------------+------------+------------------------------+
452 | monitoring\| tosca.\            | None       | Monitoring parameter, which  |
453 | _parameter | capabilities.nfv.\ |            | can be tracked for a VNFC    |
454 |            | Metric             |            | based on this VDU            |
455 |            |                    |            |                              |
456 |            |                    |            | Examples include:            |
457 |            |                    |            | memory-consumption,          |
458 |            |                    |            | CPU-utilisation,             |
459 |            |                    |            | bandwidth-consumption, VNFC  |
460 |            |                    |            | downtime, etc.               |
461 +------------+--------------------+------------+------------------------------+
462 | Virtual\   | tosca.\            |            | Defines ability of           |
463 | _binding   | capabilities.nfv.\ |            | VirtualBindable              |
464 |            | VirtualBindable    |            |                              |
465 |            |                    |            |                              |
466 |            | editor note: need  |            |                              |
467 |            | to create a        |            |                              |
468 |            | capability type    |            |                              |
469 +------------+--------------------+------------+------------------------------+
470
471 Definition
472 ++++++++++++
473
474 +-----------------------------------------------------------------------------+
475 | tosca.nodes.nfv.VDU.Compute:                                                |
476 |                                                                             |
477 | derived\_from: tosca.nodes.Compute                                          |
478 |                                                                             |
479 | properties:                                                                 |
480 |                                                                             |
481 | name:                                                                       |
482 |                                                                             |
483 | type: string                                                                |
484 |                                                                             |
485 | required: true                                                              |
486 |                                                                             |
487 | description:                                                                |
488 |                                                                             |
489 | type: string                                                                |
490 |                                                                             |
491 | required: true                                                              |
492 |                                                                             |
493 | boot\_order:                                                                |
494 |                                                                             |
495 | type: list # explicit index (boot index) not necessary, contrary to IFA011  |
496 |                                                                             |
497 | entry\_schema:                                                              |
498 |                                                                             |
499 | type: string                                                                |
500 |                                                                             |
501 | required: false                                                             |
502 |                                                                             |
503 | nfvi\_constraints:                                                          |
504 |                                                                             |
505 | type: list                                                                  |
506 |                                                                             |
507 | entry\_schema:                                                              |
508 |                                                                             |
509 | type: string                                                                |
510 |                                                                             |
511 | required: false                                                             |
512 |                                                                             |
513 | configurable\_properties:                                                   |
514 |                                                                             |
515 | type: map                                                                   |
516 |                                                                             |
517 | entry\_schema:                                                              |
518 |                                                                             |
519 | type: tosca.datatypes.nfv.VnfcConfigurableProperties                        |
520 |                                                                             |
521 | required: true                                                              |
522 |                                                                             |
523 | attributes:                                                                 |
524 |                                                                             |
525 | private\_address:                                                           |
526 |                                                                             |
527 | status: deprecated                                                          |
528 |                                                                             |
529 | public\_address:                                                            |
530 |                                                                             |
531 | status: deprecated                                                          |
532 |                                                                             |
533 | networks:                                                                   |
534 |                                                                             |
535 | status: deprecated                                                          |
536 |                                                                             |
537 | ports:                                                                      |
538 |                                                                             |
539 | status: deprecated                                                          |
540 |                                                                             |
541 | capabilities:                                                               |
542 |                                                                             |
543 | virtual\_compute:                                                           |
544 |                                                                             |
545 | type: tosca.capabilities.nfv.VirtualCompute                                 |
546 |                                                                             |
547 | virtual\_binding:                                                           |
548 |                                                                             |
549 | type: tosca.capabilities.nfv.VirtualBindable                                |
550 |                                                                             |
551 | #monitoring\_parameter:                                                     |
552 |                                                                             |
553 | # modeled as ad hoc (named) capabilities in VDU node template               |
554 |                                                                             |
555 | # for example:                                                              |
556 |                                                                             |
557 | #capabilities:                                                              |
558 |                                                                             |
559 | # cpu\_load: tosca.capabilities.nfv.Metric                                  |
560 |                                                                             |
561 | # memory\_usage: tosca.capabilities.nfv.Metric                              |
562 |                                                                             |
563 | host: #Editor note: FFS. How this capabilities should be used in NFV Profile|
564 |                                                                             |
565 | type: `*tosca.capabilities.Container* <#DEFN_TYPE_CAPABILITIES_CONTAINER>`__|
566 |                                                                             |
567 | valid\_source\_types:                                                       |
568 | [`*tosca.nodes.SoftwareComponent* <#DEFN_TYPE_NODES_SOFTWARE_COMPONENT>`__] |
569 |                                                                             |
570 | occurrences: [0,UNBOUNDED]                                                  |
571 |                                                                             |
572 | endpoint:                                                                   |
573 |                                                                             |
574 | occurrences: [0,0]                                                          |
575 |                                                                             |
576 | os:                                                                         |
577 |                                                                             |
578 | occurrences: [0,0]                                                          |
579 |                                                                             |
580 | scalable:                                                                   |
581 | #Editor note: FFS. How this capabilities should be used in NFV Profile      |
582 |                                                                             |
583 | type: `*tosca.capabilities.Scalable* <#DEFN_TYPE_CAPABILITIES_SCALABLE>`__  |
584 |                                                                             |
585 | binding:                                                                    |
586 |                                                                             |
587 | occurrences: [0,UNBOUND]                                                    |
588 |                                                                             |
589 | requirements:                                                               |
590 |                                                                             |
591 | - virtual\_storage:                                                         |
592 |                                                                             |
593 | capability: tosca.capabilities.nfv.VirtualStorage                           |
594 |                                                                             |
595 | relationship: tosca.relationships.nfv.VDU.AttachedTo                        |
596 |                                                                             |
597 | node: tosca.nodes.nfv.VDU.VirtualStorage                                    |
598 |                                                                             |
599 | occurences: [ 0, UNBOUNDED ]                                                |
600 |                                                                             |
601 | - local\_storage: #For NFV Profile, this requirement is deprecated.         |
602 |                                                                             |
603 | occurrences: [0,0]                                                          |
604 |                                                                             |
605 | artifacts:                                                                  |
606 |                                                                             |
607 | - sw\_image:                                                                |
608 |                                                                             |
609 | file:                                                                       |
610 |                                                                             |
611 | type: tosca.artifacts.nfv.SwImage                                           |
612 +-----------------------------------------------------------------------------+
613
614 Artifact
615 ++++++++++
616
617 Note: currently not supported.
618
619 +--------+---------+----------------+------------+------------------------+
620 | Name   | Required| Type           | Constraints| Description            |
621 +========+=========+================+============+========================+
622 | SwImage| Yes     | tosca.\        |            | Describes the software |
623 |        |         | artifacts.nfv.\|            | image which is directly|
624 |        |         | SwImage        |            | realizing this virtual |
625 |        |         |                |            | storage                |
626 +--------+---------+----------------+------------+------------------------+
627
628
629 |image2|
630
631
632
633 tosca.nodes.nfv.VDU.VirtualStorage
634 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
635
636 The NFV VirtualStorage node type represents a virtual storage entity
637 which it describes the deployment and operational behavior of a virtual
638 storage resources, as defined by **[ETSI NFV IFA011].**
639
640 **[editor note]** open issue: should NFV profile use the current storage
641 model as described in YAML 1.1. Pending on Shitao proposal (see
642 NFVIFA(17)000110 discussion paper)
643
644 **[editor note]** new relationship type as suggested in Matt
645 presentation. Slide 8. With specific rules of “valid\_target\_type”
646
647 +---------------------------+--------------------------------------+
648 | **Shorthand Name**        | VirtualStorage                       |
649 +===========================+======================================+
650 | **Type Qualified Name**   | tosca: VirtualStorage                |
651 +---------------------------+--------------------------------------+
652 | **Type URI**              | tosca.nodes.nfv.VDU.VirtualStorage   |
653 +---------------------------+--------------------------------------+
654 | **derived\_from**         | tosca.nodes.Root                     |
655 +---------------------------+--------------------------------------+
656
657 tosca.artifacts.nfv.SwImage
658 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
659
660 +---------------------------+------------------------------------+
661 | **Shorthand Name**        | SwImage                            |
662 +===========================+====================================+
663 | **Type Qualified Name**   | tosca:SwImage                      |
664 +---------------------------+------------------------------------+
665 | **Type URI**              | tosca.artifacts.nfv.SwImage        |
666 +---------------------------+------------------------------------+
667 | **derived\_from**         | tosca.artifacts.Deployment.Image   |
668 +---------------------------+------------------------------------+
669
670 Properties
671 ++++++++++++
672
673 +-----------------+---------+----------+------------+-------------------------+
674 | Name            | Required| Type     | Constraints| Description             |
675 +=================+=========+==========+============+=========================+
676 | name            | yes     | string   |            | Name of this software   |
677 |                 |         |          |            | image                   |
678 +-----------------+---------+----------+------------+-------------------------+
679 | version         | yes     | string   |            | Version of this software|
680 |                 |         |          |            | image                   |
681 +-----------------+---------+----------+------------+-------------------------+
682 | checksum        | yes     | string   |            | Checksum of the software|
683 |                 |         |          |            | image file              |
684 +-----------------+---------+----------+------------+-------------------------+
685 | container\      | yes     | string   |            | The container format    |
686 | _format         |         |          |            | describes the container |
687 |                 |         |          |            | file format in which    |
688 |                 |         |          |            | software image is       |
689 |                 |         |          |            | provided.               |
690 +-----------------+---------+----------+------------+-------------------------+
691 | disk\_format    | yes     | string   |            | The disk format of a    |
692 |                 |         |          |            | software image is the   |
693 |                 |         |          |            | format of the underlying|
694 |                 |         |          |            | disk image              |
695 +-----------------+---------+----------+------------+-------------------------+
696 | min\_disk       | yes     | scalar-\ |            | The minimal disk size   |
697 |                 |         | unit.size|            | requirement for this    |
698 |                 |         |          |            | software image.         |
699 +-----------------+---------+----------+------------+-------------------------+
700 | min\_ram        | no      | scalar-\ |            | The minimal RAM         |
701 |                 |         | unit.size|            | requirement for this    |
702 |                 |         |          |            | software image.         |
703 +-----------------+---------+----------+------------+-------------------------+
704 | Size            | yes     | scalar-\ |            | The size of this        |
705 |                 |         | unit.size|            | software image          |
706 +-----------------+---------+----------+------------+-------------------------+
707 | sw\_image       | yes     | string   |            | A reference to the      |
708 |                 |         |          |            | actual software image   |
709 |                 |         |          |            | within VNF Package, or  |
710 |                 |         |          |            | url.                    |
711 +-----------------+---------+----------+------------+-------------------------+
712 | operating\      | no      | string   |            | Identifies the operating|
713 | _system         |         |          |            | system used in the      |
714 |                 |         |          |            | software image.         |
715 +-----------------+---------+----------+------------+-------------------------+
716 | supported\      | no      | list     |            | Identifies the          |
717 | _virtualization\|         |          |            | virtualization          |
718 | _enviroment     |         |          |            | environments (e.g.      |
719 |                 |         |          |            | hypervisor) compatible  |
720 |                 |         |          |            | with this software image|
721 +-----------------+---------+----------+------------+-------------------------+
722
723 Definition
724 +++++++++++
725
726 +-----------------------------------------------------+
727 | tosca.artifacts.nfv.SwImage:                        |
728 |                                                     |
729 |   derived\_from: tosca.artifacts.Deployment.Image   |
730 |                                                     |
731 |   properties or metadata:                           |
732 |                                                     |
733 |     #id:                                            |
734 |                                                     |
735 |       # node name                                   |
736 |                                                     |
737 |     name:                                           |
738 |                                                     |
739 |       type: string                                  |
740 |                                                     |
741 | required: true                                      |
742 |                                                     |
743 |     version:                                        |
744 |                                                     |
745 |       type: string                                  |
746 |                                                     |
747 | required: true                                      |
748 |                                                     |
749 |     checksum:                                       |
750 |                                                     |
751 |       type: string                                  |
752 |                                                     |
753 | required: true                                      |
754 |                                                     |
755 |     container\_format:                              |
756 |                                                     |
757 |       type: string                                  |
758 |                                                     |
759 | required: true                                      |
760 |                                                     |
761 |     disk\_format:                                   |
762 |                                                     |
763 |       type: string                                  |
764 |                                                     |
765 | required: true                                      |
766 |                                                     |
767 |     min\_disk:                                      |
768 |                                                     |
769 |       type: scalar-unit.size # Number               |
770 |                                                     |
771 | required: true                                      |
772 |                                                     |
773 |     min\_ram:                                       |
774 |                                                     |
775 |       type: scalar-unit.size # Number               |
776 |                                                     |
777 | required: false                                     |
778 |                                                     |
779 |     size:                                           |
780 |                                                     |
781 |       type: scalar-unit.size # Number               |
782 |                                                     |
783 | required: true                                      |
784 |                                                     |
785 |     sw\_image:                                      |
786 |                                                     |
787 |       type: string                                  |
788 |                                                     |
789 | required: true                                      |
790 |                                                     |
791 |     operating\_system:                              |
792 |                                                     |
793 |       type: string                                  |
794 |                                                     |
795 | required: false                                     |
796 |                                                     |
797 |     supported\_virtualisation\_environments:        |
798 |                                                     |
799 |       type: list                                    |
800 |                                                     |
801 |       entry\_schema:                                |
802 |                                                     |
803 |         type: string                                |
804 |                                                     |
805 | required: false                                     |
806 +-----------------------------------------------------+
807
808 .. |image1| image:: ../Image1.png
809    :width: 5.76806in
810    :height: 4.67161in
811 .. |image2| image:: ../Image2.png
812    :width: 5.40486in
813    :height: 2.46042in