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