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