a3492ac551e7dc07da81957a67734cc2c0e18e8a
[vnfrqts/requirements.git] /
1 .. 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 .. _Nova Server - Metadata Parameters:
6
7 Resource: OS::Nova::Server - Metadata Parameters
8 --------------------------------------------------------------------------------
9
10 The ``OS::Nova::Server`` resource property ``metadata`` is an optional OpenStack
11 property.
12 Table 2 summarizes the mandatory and optional ``metadata`` supported by ONAP.
13 The sections that follow provides the requirements associated with each
14 ``metadata`` parameter.
15
16
17 .. csv-table:: **Table 2 OS::Nova::Server Mandatory and Optional Metadata**
18    :header: Resource, Property, Parameter Name, Parameter Type, Required, Parameter Value Provided to Heat
19    :align: center
20    :widths: auto
21
22    OS::Nova::Server, metadata, vnf_id, string, **MUST**, ONAP
23    OS::Nova::Server, metadata, vf_module_id, string, **MUST**, ONAP
24    OS::Nova::Server, metadata, vnf_name, string, **MUST**, ONAP
25    OS::Nova::Server, metadata, vf_module_name, string, **SHOULD**, ONAP
26    OS::Nova::Server, metadata, vm_role, string, **MAY**, YAML or Environment File
27    OS::Nova::Server, metadata, vf_module_index, number, **MAY**, ONAP
28    OS::Nova::Server, metadata, workload_context, string, **MUST**, ONAP
29    OS::Nova::Server, metadata, environment_context, string, **MUST**, ONAP
30
31 vnf_id
32 ^^^^^^^^^
33
34 The ``OS::Nova::Server`` resource property ``metadata`` key/value pair
35 ``vnf_id`` is an ONAP generated UUID that identifies the VNF.  The value
36 is provided by ONAP to the VNF's Heat Orchestration
37 Template at orchestration time.
38
39 .. req::
40     :id: R-37437
41     :target: VNF
42     :keyword: MUST
43     :validation_mode: static
44     :updated: casablanca
45
46     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
47     resource property ``metadata`` **MUST**
48     contain the  key/value pair ``vnf_id``.
49
50 .. req::
51     :id: R-07507
52     :target: VNF
53     :keyword: MUST
54     :validation_mode: static
55     :updated: casablanca
56
57     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
58     resource property
59     ``metadata`` key/value pair ``vnf_id`` parameter ``vnf_id`` **MUST**
60     be declared as type: ``string``.
61
62 .. req::
63     :id: R-55218
64     :target: VNF
65     :keyword: MUST NOT
66     :validation_mode: static
67     :updated: casablanca
68
69     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
70     resource property
71     ``metadata`` key/value pair ``vnf_id`` parameter ``vnf_id`` **MUST NOT**
72     have parameter constraints defined.
73
74 .. req::
75     :id: R-20856
76     :target: VNF
77     :keyword: MUST NOT
78     :validation_mode: static
79     :updated: casablanca
80
81     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
82     resource property
83     ``metadata`` key/value pair ``vnf_id`` parameter ``vnf_id`` **MUST NOT**
84     be enumerated in the Heat Orchestration Template's environment file.
85
86 .. req::
87     :id: R-44491
88     :target: VNF
89     :keyword: MUST NOT
90     :validation_mode: static
91     :updated: casablanca
92
93     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
94     property 
95     ``metadata`` key/value pair ``vnf_id`` is passed into a Nested YAML
96     file, the key/value pair name ``vnf_id`` **MUST NOT** change.
97
98 *Example 'vnf_id' Parameter Definition*
99
100 .. code-block:: yaml
101
102   parameters:
103
104     vnf_id:
105       type: string
106       description: Unique ID for this VNF instance
107
108 vf_module_id
109 ^^^^^^^^^^^^^^^^^^^^
110
111 The OS::Nova::Server Resource ``metadata`` map value parameter ``vf_module_id``
112 is an ONAP generated UUID that identifies the VF Module (e.g., Heat
113 Orchestration Template).  The value
114 is provided by ONAP to the VNF's Heat Orchestration
115 Template at orchestration time.
116
117 .. req::
118     :id: R-71493
119     :target: VNF
120     :keyword: MUST
121     :validation_mode: static
122     :updated: casablanca
123
124     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource **MUST**
125     contain the ``metadata`` map value parameter ``vf_module_id``.
126
127 .. req::
128     :id: R-82134
129     :target: VNF
130     :keyword: MUST
131     :validation_mode: static
132     :updated: casablanca
133
134     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
135     ``metadata`` key/value pair ``vf_module_id`` parameter **MUST**
136     be declared as ``vf_module_id`` and the parameter **MUST**
137     be defined as type: ``string``.
138
139 .. req::
140     :id: R-98374
141     :target: VNF
142     :keyword: MUST NOT
143     :validation_mode: static
144     :updated: casablanca
145
146     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
147     ``metadata`` map value parameter ``vf_module_id`` **MUST NOT**
148     have parameter constraints defined.
149
150 .. req::
151     :id: R-72871
152     :target: VNF
153     :keyword: MUST NOT
154     :validation_mode: static
155     :updated: casablanca
156
157     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
158     ``metadata`` map value parameter ``vf_module_id`` **MUST NOT**
159     be enumerated in the Heat Orchestration Template's environment file.
160
161 .. req::
162     :id: R-86237
163     :target: VNF
164     :keyword: MUST NOT
165     :validation_mode: static
166     :updated: casablanca
167
168     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
169     property
170     ``metadata`` key/value pair ``vf_module_id`` is passed into a
171     Nested YAML
172     file, the key/value pair name ``vf_module_id`` **MUST NOT** change.
173
174
175 *Example 'vf_module_id' Parameter Definition*
176
177 .. code-block:: yaml
178
179   parameters:
180
181     vnf_module_id:
182       type: string
183       description: Unique ID for this VNF module instance
184
185
186 vnf_name
187 ^^^^^^^^^
188
189 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter ``vnf_name``
190 is the ONAP (SDN-C) generated alphanumeric name of the deployed VNF instance.
191 The value
192 is provided by ONAP to the VNF's Heat Orchestration
193 Template at orchestration time.
194
195 .. req::
196     :id: R-72483
197     :target: VNF
198     :keyword: MUST
199     :validation_mode: static
200     :updated: casablanca
201
202     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource **MUST**
203     contain the ``metadata`` map value parameter ``vnf_name``.
204
205 .. req::
206     :id: R-62428
207     :target: VNF
208     :keyword: MUST
209     :validation_mode: static
210     :updated: casablanca
211
212     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
213     ``metadata`` map value parameter ``vnf_name`` **MUST**
214     be declared as type: ``string``.
215
216 .. req::
217     :id: R-44318
218     :target: VNF
219     :keyword: MUST NOT
220     :validation_mode: static
221     :updated: casablanca
222
223     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
224     property ``metadata`` key/value pair ``vnf_name`` 
225     parameter ``vnf_name`` **MUST NOT**
226     have parameter constraints defined.
227
228 .. req::
229     :id: R-36542
230     :target: VNF
231     :keyword: MUST NOT
232     :validation_mode: static
233     :updated: casablanca
234
235     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
236     property ``metadata`` key/value pair ``vnf_name`` parameter
237     ``vnf_name`` **MUST NOT**
238     be enumerated in the Heat Orchestration Template's environment file.
239
240 .. req::
241     :id: R-16576
242     :target: VNF
243     :keyword: MUST NOT
244     :validation_mode: static
245     :updated: casablanca
246
247     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
248     ``metadata`` map value parameter ``vnf_name`` is passed into a Nested YAML
249     file, the parameter name ``vnf_name`` **MUST NOT** change.
250
251 *Example 'vnf_name' Parameter Definition*
252
253 .. code-block:: yaml
254
255   parameters:
256
257     vnf_name:
258       type: string
259       description: Unique name for this VNF instance
260
261 vf_module_name
262 ^^^^^^^^^^^^^^^^^^
263
264 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter 
265 ``vf_module_name``
266 is the deployment name of the heat stack created (e.g., ``<STACK_NAME>``)
267 from the
268 VNF's Heat Orchestration template
269 in the command ``Heat stack-create``
270 (e.g., ``Heat stack-create [-f <FILE>] [-e <FILE>] <STACK_NAME>``).
271 The ``vf_module_name`` (e.g., ``<STACK_NAME>`` is specified as
272 part of the orchestration process.
273
274 .. req::
275     :id: R-68023
276     :target: VNF
277     :keyword: SHOULD
278     :updated: casablanca
279
280     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource 
281     **SHOULD**
282     contain the ``metadata`` map value parameter ``vf_module_name``.
283
284 .. req::
285     :id: R-39067
286     :target: VNF
287     :keyword: MUST
288     :validation_mode: static
289     :updated: casablanca
290
291     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
292     property 
293     ``metadata`` key/value pair ``vf_module_name`` parameter **MUST** be
294     declared as ``vf_module_name`` and the parameter **MUST**
295     be defined as type: ``string``.
296
297 .. req::
298     :id: R-15480
299     :target: VNF
300     :keyword: MUST NOT
301     :validation_mode: static
302     :updated: casablanca
303
304     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
305     ``metadata`` map value parameter ``vf_module_name`` **MUST NOT**
306     have parameter constraints defined.
307
308 .. req::
309     :id: R-80374
310     :target: VNF
311     :keyword: MUST NOT
312     :validation_mode: static
313     :updated: casablanca
314
315     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
316     ``metadata`` map value parameter ``vf_module_name`` **MUST NOT**
317     be enumerated in the Heat Orchestration Template's environment file.
318
319 .. req::
320     :id: R-49177
321     :target: VNF
322     :keyword: MUST
323     :validation_mode: static
324     :updated: casablanca
325
326     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
327     metadata map value parameter ``vf_module_name`` is passed into a Nested YAML
328     file, the parameter name ``vf_module_name`` **MUST NOT** change.
329
330 *Example 'vf_module_name' Parameter Definition*
331
332 .. code-block:: yaml
333
334   parameters:
335
336     vf_module_name:
337       type: string
338       description: Unique name for this VNF Module instance
339
340 vm_role
341 ^^^^^^^^^
342
343 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter ``vm-role``
344 is a ``metadata`` tag that describes the role of the Virtual Machine.
345 The ``vm_role`` is stored in ONAP’s A&AI module and is
346 available for use by other ONAP components and/or north bound systems.
347
348 .. req::
349     :id: R-85328
350     :target: VNF
351     :keyword: MAY
352     :updated: casablanca
353
354     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
355     ``metadata`` **MAY**
356     contain the key/value pair ``vm_role`` and the value **MUST** be 
357     obtained either via
358
359     - ``get_param``
360     - hard coded in the key/value pair ``vm_role``.
361
362 .. req::
363     :id: R-95430
364     :target: VNF
365     :keyword: MUST
366     :validation_mode: static
367     :updated: casablanca
368
369     A VNF's Heat Orchestration Template's OS::Nova::Server Resource
370     ``metadata`` map value parameter ``vm_role`` **MUST**
371     be declared as type: ``string``.
372
373 .. req::
374     :id: R-67597
375     :target: VNF
376     :keyword: MUST NOT
377     :validation_mode: static
378     :updated: casablanca
379
380     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
381     property ``metadata`` key/value pair ``vm_role`` parameter ``vm_role``
382     **MUST NOT** have parameter constraints defined.
383
384 .. req::
385     :id: R-46823
386     :target: VNF
387     :keyword: MUST
388     :validation_mode: static
389     :updated: casablanca
390
391     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
392     ``metadata`` map value parameter ``vm_role`` **MUST**
393     be either
394
395      * enumerated in the VNF's Heat Orchestration Template's environment
396        file.
397
398      * hard coded in the VNF's
399        Heat Orchestration Template's ``OS::Nova::Server`` Resource
400        ``metadata`` property.
401
402
403 Defining the ``vm_role`` as the ``{vm-type}`` is a recommended convention
404
405
406 .. req::
407     :id: R-86476
408     :target: VNF
409     :keyword: MUST
410     :validation_mode: static
411     :updated: casablanca
412
413     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
414     ``metadata`` map value parameter ``vm_role`` value **MUST**
415     only contain alphanumeric characters and underscores '_'.
416
417 .. req::
418     :id: R-70757
419     :target: VNF
420     :keyword: MUST NOT
421     :validation_mode: static
422     :updated: casablanca
423
424     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
425     ``metadata`` map value parameter ``vm_role`` is passed into a Nested YAML
426     file, the parameter name ``vm_role`` **MUST NOT** change.
427
428 *Example 'vm_role' Parameter Definition*
429
430 .. code-block:: yaml
431
432   parameters:
433
434     vm_role:
435       type: string
436       description: Unique role for this VM
437
438 *Example: 'vm-role' Definition: Hard Coded in
439 OS::Nova::Resource metadata property*
440
441 .. code-block:: yaml
442
443   resources:
444
445     dns_server_0
446       type: OS::Nova::Server
447       properties:
448         . . . .
449         metadata:
450           vm_role: dns
451
452 *Example 'vm-role' Definition: Defined in Environment file
453 and retrieved via 'get_param'*
454
455 .. code-block:: yaml
456
457   resources:
458
459     dns_server_0:
460       type: OS::Nova::Server
461       properties:
462         . . . .
463         metadata:
464           vm_role: { get_param: vm_role }
465
466 Example vnf_id, vf_module_id, vnf_name, vf_module_name, vm_role
467 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
468
469 The example below depicts part of a Heat Orchestration Template that
470 uses the five of the ``OS::Nova::Server`` resource
471 ``metadata`` map value parameters discussed in this
472 section. The ``{vm-type}`` has been defined as ``lb`` for load balancer.
473
474 .. code-block:: yaml
475
476   parameters:
477     lb_name_0
478       type: string
479       description: VM Name for lb VM 0
480     vnf_name:
481       type: string
482       description: Unique name for this VNF instance
483     vnf_id:
484       type: string
485       description: Unique ID for this VNF instance
486     vf_module_name:
487       type: string
488       description: Unique name for this VNF Module instance
489     vf_module_id:
490       type: string
491       description: Unique ID for this VNF Module instance
492     vm_role:
493       type: string
494       description: Unique role for this VM
495   resources:
496     lb_server_0:
497       type: OS::Nova::Server
498       properties:
499         name: { get_param: lb_name_0 }
500         ...
501         metadata:
502           vnf_name: { get_param: vnf_name }
503           vnf_id: { get_param: vnf_id }
504           vf_module_name: { get_param: vf_module_name }
505           vf_module_id: { get_param: vf_module_id }
506           vm_role: lb
507
508 vf_module_index
509 ^^^^^^^^^^^^^^^^^^
510
511
512 .. req::
513     :id: R-50816
514     :target: VNF
515     :keyword: MAY
516     :updated: casablanca
517
518     A VNF's Heat Orchestration Template's ``OS::Nova::Server Resource`` **MAY**
519     contain the metadata map value parameter ``vf_module_index``.
520
521 .. req::
522     :id: R-54340
523     :target: VNF
524     :keyword: MUST
525     :validation_mode: static
526     :updated: casablanca
527
528     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
529     ``metadata`` map value parameter ``vf_module_index`` **MUST**
530     be declared as type: ``number``.
531
532 .. req::
533     :id: R-09811
534     :target: VNF
535     :keyword: MUST NOT
536     :validation_mode: static
537     :updated: casablanca
538
539     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
540     ``metadata`` map value parameter ``vf_module_index`` **MUST NOT**
541     have parameter constraints defined.
542
543 .. req::
544     :id: R-37039
545     :target: VNF
546     :keyword: MUST NOT
547     :validation_mode: static
548     :updated: casablanca
549
550     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
551     ``metadata`` map value parameter ``vf_module_index`` **MUST NOT**
552     be enumerated in the Heat Orchestration Template's environment file.
553
554 .. req::
555     :id: R-22441
556     :target: VNF
557     :keyword: MUST NOT
558     :validation_mode: static
559     :updated: casablanca
560
561     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
562     property ``metadata`` key/value pair ``vf_module_index`` is passed into a
563     Nested YAML file, the key/value pair
564     ``vf_module_index`` **MUST NOT** change.
565
566 .. req::
567     :id: R-55306
568     :target: VNF
569     :keyword: MUST NOT
570     :validation_mode: static
571     :updated: casablanca
572
573     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
574     ``metadata`` map value parameter ``vf_module_index`` **MUST NOT**
575     be used in a
576     VNF's Volume Template; it is not supported.
577
578 The ``vf_module_index`` parameter indicates which instance of the module is
579 being deployed into the VNF.
580 This parameter may be used in cases where multiple instances of the same
581 incremental module may be instantiated for scaling purposes. The index
582 can be used in the Heat Orchestration Template for indexing into a
583 pseudo-constant array parameter when unique values are required for each
584 module instance, e.g., for fixed private IP addresses on VM types.
585
586 The ``vf_module_index`` will start at 0 for the first instance of a module
587 type. Subsequent instances of the same module type will receive the
588 lowest unused index. This means that indexes will be reused if a module
589 is deleted and re-added. As an example, if three copies of a module are
590 deployed with ``vf_module_index`` values of 0, 1, and 2 then subsequently
591 the second one is deleted (index 1), and then re-added, index 1 will be
592 reused.
593
594 *Example*
595
596 In this example, the ``{vm-type}`` has been defined as ``oam_vm`` to represent
597 an OAM VM. An incremental heat module is used to deploy the OAM VM. The
598 OAM VM attaches to an internal control network which has a
599 ``{network-role}`` of ``ctrl``. A maximum of four OAM VMs can be deployed. The
600 environment file contains the four IP addresses that each successive OAM
601 VM will be assigned. The ``vf_module_index`` is used as the index to
602 determine the IP assignment.
603
604 Environment File
605
606 .. code-block:: yaml
607
608   parameters:
609     oam_vm_int_ctrl_ips: 10.10.10.1,10.10.10.2,10.10.10.3,10.10.10.4
610
611 YAML File
612
613 .. code-block:: yaml
614
615   parameters:
616     vf_module_index:
617       type: number
618       description: Unique index for this VNF Module instance
619     oam_vm_name_0:
620       type: string
621       description: VM Name for lb VM 0
622     int_ctrl_net_id:
623       type: string
624       description: Neutron UUID for the internal control network
625     oam_vm_int_ctrl_ips:
626       type: comma_delimited_list
627       description: Fixed IP assignments for oam VMs on the internal control
628                    network
629   resources:
630     oam_vm_server_0:
631       type: OS::Nova::Server
632       properties:
633         name: { get_param: oam_vm_name_0 }
634         networks:
635           - port: { get_resource: oam_vm_0_int_ctrl_port_0 }
636   #     . . .
637         metadata:
638           vf_module_index: { get_param: vf_module_index }
639     oam_vm_0_int_ctrl_port_0:
640       type: OS::Neutron::Port
641       properties:
642         network: { get_param: int_ctrl_net_id }
643         fixed_ips: [ { "ip_address": {get_param: [ oam_vm_int_ctrl_ips, { get_param: vf_module_index} ]}}]
644
645 workload_context
646 ^^^^^^^^^^^^^^^^^^^^^
647
648 .. req::
649     :id: R-47061
650     :target: VNF
651     :keyword: SHOULD
652     :updated: casablanca
653
654     A VNF's Heat Orchestration Template's OS::Nova::Server
655     Resource **SHOULD** contain the metadata map value parameter
656     'workload_context'.
657
658 .. req::
659     :id: R-74978
660     :target: VNF
661     :keyword: MUST
662     :validation_mode: static
663     :updated: casablanca
664
665     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
666     ``metadata`` map value parameter ``workload_context`` **MUST**
667     be declared as type: ``string``.
668
669 .. req::
670     :id: R-34055
671     :target: VNF
672     :keyword: MUST NOT
673     :validation_mode: static
674     :updated: casablanca
675
676     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
677     property ``metadata`` key/value pair ``workload_context`` 
678     parameter ``workload_context`` **MUST NOT**
679     have parameter constraints defined.
680
681 .. req::
682     :id: R-02691
683     :target: VNF
684     :keyword: MUST NOT
685     :validation_mode: static
686     :updated: casablanca
687
688     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
689     ``metadata`` map value parameter ``workload_context`` **MUST NOT**
690     be enumerated in the Heat Orchestration Template's environment file.
691
692 .. req::
693     :id: R-75202
694     :target: VNF
695     :keyword: MUST NOT
696     :validation_mode: static
697     :updated: casablanca
698
699     If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
700     ``metadata`` map value parameter ``workload_context`` is passed into a
701     Nested YAML
702     file, the parameter name ``workload_context`` **MUST NOT** change.
703
704 The 'workload\_context' parameter value will be chosen by the Service Model
705 Distribution context client in VID and will be supplied to the
706 Heat Orchestration Template by ONAP at orchestration time.
707
708 *Example Parameter Definition*
709
710 .. code-block:: yaml
711
712   parameters:
713     workload_context:
714       type: string
715       description: Workload Context for this VNF instance
716
717
718 *Example OS::Nova::Server with metadata*
719
720 .. code-block:: yaml
721
722   resources:
723     . . .
724
725     {vm-type}_server_{index}:
726        type: OS::Nova::Server
727        properties:
728          name:
729          flavor:
730          image:
731         ...
732        metadata:
733           vnf_name: { get_param: vnf_name }
734           vnf_id: { get_param: vnf_id }
735           vf_module_name: { get_param: vf_module_name }
736           vf_module_id: { get_param: vf_module_id }
737           workload_context: {get_param: workload_context}
738
739 environment_context
740 ^^^^^^^^^^^^^^^^^^^^^
741
742 .. req::
743     :id: R-88536
744     :target: VNF
745     :keyword: SHOULD
746     :updated: casablanca
747
748     A VNF's Heat Orchestration Template's OS::Nova::Server
749     Resource **SHOULD** contain the metadata map value parameter
750     'environment_context'.
751
752 .. req::
753     :id: R-20308
754     :target: VNF
755     :keyword: MUST
756     :validation_mode: static
757     :updated: casablanca
758
759     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
760     ``metadata`` map value parameter ``environment_context`` **MUST**
761     be declared as type: ``string``.
762
763 .. req::
764     :id: R-56183
765     :target: VNF
766     :keyword: MUST NOT
767     :validation_mode: static
768     :updated: casablanca
769
770     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
771     ``metadata`` map value parameter ``environment_context`` **MUST NOT**
772     have parameter constraints defined.
773
774 .. req::
775     :id: R-13194
776     :target: VNF
777     :keyword: MUST NOT
778     :validation_mode: static
779     :updated: casablanca
780
781     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` Resource
782     ``metadata`` map value parameter ``environment_context`` **MUST NOT**
783     be enumerated in the Heat Orchestration Template's environment file.
784
785 .. req::
786     :id: R-62954
787     :target: VNF
788     :keyword: MUST NOT
789     :validation_mode: static
790     :updated: casablanca
791
792     If a VNF's Heat Orchestration Template's ``OS::Nova::Server Resource``
793     ``metadata`` map value parameter ``environment_context`` is passed into a
794     Nested YAML
795     file, the parameter name ``environment_context`` **MUST NOT** change.
796
797 The 'environment_context' parameter value will be defined by the
798 service designer as part of the service model during the SDC
799 on-boarding process and will be supplied to the Heat Orchestration
800 Template by ONAP at orchestration time.
801
802
803 *Example Parameter Definition*
804
805 .. code-block:: yaml
806
807   parameters:
808     environment_context:
809       type: string
810       description: Environment Context for this VNF instance
811
812
813 *Example OS::Nova::Server with metadata*
814
815 .. code-block:: yaml
816
817   resources:
818     . . .
819
820     {vm-type}_server_{index}:
821        type: OS::Nova::Server
822        properties:
823          name:
824          flavor:
825          image:
826         ...
827        metadata:
828           vnf_name: { get_param: vnf_name }
829           vnf_id: { get_param: vnf_id }
830           vf_module_name: { get_param: vf_module_name }
831           vf_module_id: { get_param: vf_module_id }
832           workload_context: {get_param: workload_context}
833           environment_context: {get_param: environment_context }