Update Guilin release notes
[vnfrqts/requirements.git] / docs / changes-by-section-guilin.rst
1 .. Modifications Copyright © 2017-2018 AT&T Intellectual Property.
2
3 .. Licensed under the Creative Commons License, Attribution 4.0 Intl.
4    (the "License"); you may not use this documentation except in compliance
5    with the License. You may obtain a copy of the License at
6
7 .. https://creativecommons.org/licenses/by/4.0/
8
9 .. Unless required by applicable law or agreed to in writing, software
10    distributed under the License is distributed on an "AS IS" BASIS,
11    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12    See the License for the specific language governing permissions and
13    limitations under the License.
14
15
16 Requirement Changes Introduced in Guilin
17 ----------------------------------------
18
19 This document summarizes the requirement changes by section that were
20 introduced between the Frankfurt release and
21 Guilin release. Click on the requirement number to
22 navigate to the
23
24 .. contents::
25     :depth: 2
26
27 Summary of Changes
28 ^^^^^^^^^^^^^^^^^^
29
30 * **Requirements Added:** 30
31 * **Requirements Changed:** 51
32 * **Requirements Removed:** 37
33
34
35 Configuration Management > Ansible Standards and Capabilities > VNF or PNF Configuration via Ansible Requirements > Ansible Client Requirements
36 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
37
38
39 Requirements Changed
40 ~~~~~~~~~~~~~~~~~~~~
41     
42
43 .. container:: note
44
45     :need:`R-67124`
46
47     The VNF or PNF Provider's Ansible playbooks **MUST** be designed to run
48     using an inventory hosts file in a supported format; with group names
49     matching VNFC 3-character string adding "vip" for groups with virtual IP
50     addresses shared by multiple VMs as seen in examples provided in Appendix.
51     
52
53 .. container:: note
54
55     :need:`R-94567`
56
57     The VNF or PNF Provider's Ansible playbooks **MUST** be designed to run
58     using an inventory hosts file in a supported format with only IP addresses
59     or IP addresses and VM/VNF or PNF names.
60     
61
62 .. container:: note
63
64     :need:`R-24482`
65
66     The VNF or PNF Provider's Ansible playbooks **MUST** be designed to run
67     using an inventory hosts file in a supported format; with site group that
68     shall be used to add site specific configurations to the target VNF or PNF
69     VM(s) as needed.
70     
71
72 .. container:: note
73
74     :need:`R-82018`
75
76     The VNF or PNF **MUST** load the Ansible Server SSH public key onto VNF or
77     PNF VM(s) /root/.ssh/authorized_keys as part of instantiation. Alternative,
78     is for Ansible Server SSH public key to be loaded onto VNF or PNF
79     under /home/<Mechanized user ID>/.ssh/authorized_keys as part of
80     instantiation, when a Mechanized user ID is created during instantiation,
81     and Configure and all playbooks are designed to use a mechanized user ID
82     only for authentication (never using root authentication during Configure
83     playbook run). This will allow the Ansible Server to authenticate to
84     perform post-instantiation configuration without manual intervention and
85     without requiring specific VNF or PNF login IDs and passwords.
86
87     *CAUTION*: For VNFs or PNFs configured using Ansible, to eliminate the need
88     for manual steps, post-instantiation and pre-configuration, to
89     upload of SSH public keys, SSH public keys loaded during (heat)
90     instantiation shall be preserved and not removed by (heat) embedded
91     (userdata) scripts.
92     
93
94 .. container:: note
95
96     :need:`R-92866`
97
98     The VNF or PNF Provider **MUST** include as part of post-instantiation
99     configuration done by Ansible Playbooks the removal/update of the SSH
100     public key from ``/root/.ssh/authorized_keys``, and update of SSH keys
101     loaded through instantiation to support Ansible. This may include creating
102     Mechanized user ID(s) used by the Ansible Server(s) on VNF VM(s) and
103     uploading and installing new SSH keys used by the mechanized use ID(s).
104     
105
106 Configuration Management > Ansible Standards and Capabilities > VNF or PNF Configuration via Ansible Requirements > Ansible Playbook Requirements
107 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
108
109
110 Requirements Added
111 ~~~~~~~~~~~~~~~~~~
112     
113
114 .. container:: note
115
116     :need:`R-195620`
117
118     The VNF or PNF Provider's Ansible playbooks **SHOULD** compare the version(s)
119     of Ansible that the VNF Provider developed and tested against to the
120     ``ansible_version.full`` value during playbook execution, and issue a
121     ``WARNING`` message if the operator version is not one of the tested
122     versions.
123     
124
125 .. container:: note
126
127     :need:`R-444446`
128
129     The VNF or PNF Provider's Ansible playbooks **SHOULD** issue log messages
130     in the same format as Ansible's default messages:
131     ``[<Log Level>]: <message>``
132
133     Example:
134
135        ``[WARNING]: Ansible version 2.9.3 does not match a known,
136        tested version: 2.8.1, 2.8.2``
137     
138
139 .. container:: note
140
141     :need:`R-918136`
142
143     The VNF or PNF Provider's Ansible playbooks **MUST NOT** fail due to
144     a mismatched version check as specified in R-918136. The warning message
145     should be issued, and the playbook execution should continue as normal.
146     
147
148 Requirements Changed
149 ~~~~~~~~~~~~~~~~~~~~
150     
151
152 .. container:: note
153
154     :need:`R-49911`
155
156     The VNF or PNF Provider **MUST** assign a new point release to the updated
157     Ansible playbook set. The functionality of a new playbook set must be
158     tested before it is deployed to the production.
159     
160
161 .. container:: note
162
163     :need:`R-24189`
164
165     The VNF or PNF Provider **MUST** deliver a new set of Ansible playbooks that
166     includes all updated and unchanged playbooks for any new revision to an
167     existing set of playbooks.
168     
169
170 .. container:: note
171
172     :need:`R-53245`
173
174     The VNF or PNF Provider's Ansible playbooks **MUST NOT** require
175     passwords or secrets to be passed in clear text in the command line or
176     Rest API request to run the playbook.
177     
178
179 .. container:: note
180
181     :need:`R-51442`
182
183     The VNF or PNF Provider's Ansible playbooks **SHOULD** be designed to
184     automatically 'rollback' to the original state in case of any errors
185     for actions that change state of the VNF or PNF (e.g., configure).
186
187     **Note**: In case rollback at the playbook level is not supported or
188     possible, the VNF or PNF provider shall provide alternative rollback
189     mechanism (e.g., for a small VNF or PNF the rollback mechanism may rely
190     on workflow to terminate and re-instantiate VNF VMs and then re-run
191     playbook(s)). Backing up updated files is also recommended to support
192     rollback when soft rollback is feasible.
193     
194
195 .. container:: note
196
197     :need:`R-49396`
198
199     The VNF or PNF Provider's Ansible playbooks **MUST** support each APPC/SDN-C
200     VNF or PNF action by invocation of **one** playbook [#7.3.4]_. The playbook
201     will be responsible for executing all necessary tasks (as well as calling
202     other playbooks) to complete the request.
203     
204
205 .. container:: note
206
207     :need:`R-50252`
208
209     The VNF or PNF Provider's Ansible playbooks **MUST** write to a response
210     file in JSON format that will be retrieved and made available by the
211     Ansible Server if, as part of a VNF or PNF action (e.g., audit), a playbook
212     is required to return any VNF or PNF information/response. The text files
213     must be written in the main playbook home directory, in JSON format. The
214     JSON file must be created for the VNF or PNF with the name '<VNF or PNF name>_results.txt'. All playbook
215     output results, for all VNF VMS or PNF Server/Blades, to be provided as a
216     response to the request, must be written to this response file.
217     
218
219 .. container:: note
220
221     :need:`R-58301`
222
223     The VNF or PNF Provider's Ansible playbooks **SHOULD NOT** make requests to
224     Cloud resources e.g. Openstack (nova, neutron, glance, heat, etc.);
225     therefore, there is no use for Cloud specific variables like Openstack
226     UUIDs in Ansible Playbook related artifacts.
227
228     **Rationale**: Flows that require interactions with Cloud services e.g.
229     Openstack shall rely on workflows run by an Orchestrator
230     (Change Management) or other capability (such as a control loop or
231     Operations GUI) outside Ansible Server which can be executed by a
232     APPC/SDN-C. There are policies, as part of Control Loop
233     models, that send remediation action requests to an APPC/SDN-C; these
234     are triggered as a response to an event or correlated events published
235     to Event Bus.
236     
237
238 .. container:: note
239
240     :need:`R-09209`
241
242     The VNF or PNF Provider's Ansible playbooks **MUST** store any playbook
243     configuration data that requires encryption (passwords, secrets, etc.) in
244     a JSON (.json), YAML (.yaml|.yml) or INI (.ini) file, which will be placed
245     in ``<VNF type>/<Version>/ansible/vars`` directory.
246     
247
248 .. container:: note
249
250     :need:`R-46823`
251
252     The VNF or PNF Provider's Ansible playbooks **MUST** store passwords and
253     other attributes that must remain secret in JSON, YAML or INI with
254     differentiated names when passwords and secrets vary from environment to
255     environment. Example, name must include <Mechanized user ID>_...json or
256     <Mechanized user ID>_...xml when labs and production use different passwords
257     and/or secrets. The <Mechanized user ID> is discovered from the environment
258     ``/etc/ansible/ansible.cfg`` where the playbook runs.
259     
260
261 .. container:: note
262
263     :need:`R-48698`
264
265     The VNF or PNF Provider's Ansible playbooks **MUST** utilize information
266     from key value pairs that will be provided by the Ansible Server as
267     ``extra-vars`` during invocation to execute the desired VNF or PNF action.
268     The "extra-vars" attribute-value pairs are passed to the Ansible Server by
269     an APPC/SDN-C as part of the Rest API request. If the playbook requires
270     files, they must also be supplied using the methodology detailed in the
271     Ansible Server API, unless they are bundled with playbooks, example,
272     generic templates. Any files containing instance specific info
273     (attribute-value pairs), not obtainable
274     from any ONAP inventory databases or other sources, referenced and used as
275     input by playbooks, shall be provisioned (and distributed) in advance of
276     use, e.g., VNF or PNF instantiation. Recommendation is to avoid these
277     instance specific, manually created in advance of instantiation, files.
278     
279
280 .. container:: note
281
282     :need:`R-83092`
283
284     The VNF or PNF Provider's Ansible playbooks **MUST** load passwords
285     and other attributes that must remain secret from JSON, YAML or INI files
286     that can be encrypted/decrypted using Ansible Vault capabilities.
287     
288
289 .. container:: note
290
291     :need:`R-39003`
292
293     The VNF or PNF Provider's Ansible playbooks **MUST** store passwords and
294     other attributes that must remain secret in JSON, YAML or INI files that
295     can be encrypted/decrypted using Ansible Vault capabilities.
296     
297
298 .. container:: note
299
300     :need:`R-43253`
301
302     The VNF or PNF Provider's Ansible playbooks **MUST** be designed to allow
303     Ansible Server to infer failure or success based on the "PLAY_RECAP"
304     capability.
305
306     **Note**: There are cases where playbooks need to interpret results
307     of a task and then determine success or failure and return result
308     accordingly (failure for failed tasks).
309     
310
311 .. container:: note
312
313     :need:`R-78640`
314
315     The VNF or PNF Provider's Ansible playbooks **SHOULD** provide a single
316     YAML or JSON file with all the passwords and secrets to reduce the number
317     of files to be decrypted/encrypted before on-boarding into the central
318     repository.
319     
320
321 .. container:: note
322
323     :need:`R-20988`
324
325     The VNF or PNF Provider's Ansible playbooks **MUST** not log or
326     display passwords and other attributes that must remain secret when
327     running playbook in debug mode.
328
329     NOTE: Use ``no_log: True``
330     
331
332 .. container:: note
333
334     :need:`R-42333`
335
336     The VNF or PNF Provider's Ansible playbooks that target a subset of VMs (or
337     servers/blades) part of a VNF (or PNF) instance **MUST** be designed to use
338     the VNF or PNF inventory host file and to use a parameter named
339     ``target_vm_list`` to provide the subset of VMs in the VNF instance
340     specifically targeted by the playbook.
341
342     NOTE: Example of such playbooks would be playbooks used to configure VMs
343     added to a VNF instance as part of a scale-out/up or scale-in/down
344     operation. Such playbook is expected to also need to perform
345     configuration/reconfiguration tasks part of the base VNF instance build.
346     
347
348 .. container:: note
349
350     :need:`R-43353`
351
352     The VNF or PNF Provider's Ansible playbooks **MUST** return control only
353     after all tasks performed by playbook are fully complete, signaling that the
354     playbook completed all tasks. When starting services, return control
355     only after all services are up. This is critical for workflows where
356     the next steps are dependent on prior tasks being fully completed.
357     
358
359 .. container:: note
360
361     :need:`R-88786`
362
363     The VNF or PNF Provider's Ansible playbooks **SHOULD** place the passwords
364     and secrets to be edited at the top of the single YAML or JSON file with
365     all the secrets, and the (default) ones that are to remain unchanged '
366     towards the bottom, with commentary separating them.
367     
368
369 .. container:: note
370
371     :need:`R-33280`
372
373     The VNF or PNF Provider's Ansible playbooks **MUST NOT** contain instance
374     specific values that can not be provided by a parameter to the playbook.
375     
376
377 .. container:: note
378
379     :need:`R-56988`
380
381     The VNF or PNF Provider's Ansible playbooks **MUST** load any configuration
382     data that requires encryption (passwords, secrets, etc.) in a JSON (.json),
383     YAML (.yaml|.yml) or INI (.ini) file, from the
384     ``<VNF type>/<Version>/ansible/vars`` directory.
385     
386
387 .. container:: note
388
389     :need:`R-02651`
390
391     The VNF or PNF Provider's Ansible playbooks **SHOULD** use available backup
392     capabilities to save a copy of configuration files before implementing
393     changes to support operations such as backing out of software upgrades,
394     configuration changes or other work as this will help backing out of
395     configuration changes when needed.
396     
397
398 Requirements Removed
399 ~~~~~~~~~~~~~~~~~~~~
400     
401
402 .. container:: note
403
404     R-40293
405
406     The VNF or PNF **MUST** make available playbooks that conform
407     to the ONAP requirement.
408     
409
410 .. container:: note
411
412     R-49751
413
414     The VNF or PNF **MUST** support Ansible playbooks that are compatible with
415     Ansible version 2.6 or later.
416     
417
418 Monitoring & Management > Bulk Performance Measurement
419 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
420
421
422 Requirements Changed
423 ~~~~~~~~~~~~~~~~~~~~
424     
425
426 .. container:: note
427
428     :need:`R-75943`
429
430     The VNF or PNF **SHOULD** support the data schema defined in 3GPP TS 32.435 or 3GPP TS 28.532, when
431     supporting the event-driven bulk transfer of monitoring data.
432     
433
434 Monitoring & Management > Monitoring & Management Requirements > Addressing and Delivery Protocol
435 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
436
437
438 Requirements Removed
439 ~~~~~~~~~~~~~~~~~~~~
440     
441
442 .. container:: note
443
444     R-01033
445
446     The VNF or PNF **MAY** use another option which is expected to include SFTP
447     for asynchronous bulk files, such as bulk files that contain large volumes
448     of data collected over a long time interval or data collected across many
449     VNFs or PNFs. (Preferred is to reorganize the data into more frequent or more focused
450     data sets, and deliver these by REST or TCP as appropriate.)
451     
452
453 .. container:: note
454
455     R-03070
456
457     The VNF or PNF **MUST**, by ONAP Policy, provide the ONAP addresses
458     as data destinations for each VNF or PNF, and may be changed by Policy while
459     the VNF or PNF is in operation. We expect the VNF or PNF to be capable of redirecting
460     traffic to changed destinations with no loss of data, for example from
461     one REST URL to another, or from one TCP host and port to another.
462     
463
464 .. container:: note
465
466     R-08312
467
468     The VNF or PNF **MAY** use another option which is expected to include REST
469     delivery of binary encoded data sets.
470     
471
472 .. container:: note
473
474     R-63229
475
476     The VNF or PNF **MAY** use another option which is expected to include REST
477     for synchronous data, using RESTCONF (e.g., for VNF or PNF state polling).
478     
479
480 .. container:: note
481
482     R-79412
483
484     The VNF or PNF **MAY** use another option which is expected to include TCP
485     for high volume streaming asynchronous data sets and for other high volume
486     data sets. TCP delivery can be used for either JSON or binary encoded data
487     sets.
488     
489
490 .. container:: note
491
492     R-81777
493
494     The VNF or PNF **MUST** be configured with initial address(es) to use
495     at deployment time. Subsequently, address(es) may be changed through
496     ONAP-defined policies delivered from ONAP to the VNF or PNF using PUTs to a
497     RESTful API, in the same manner that other controls over data reporting
498     will be controlled by policy.
499     
500
501 .. container:: note
502
503     R-84879
504
505     The VNF or PNF **MUST** have the capability of maintaining a primary
506     and backup DNS name (URL) for connecting to ONAP collectors, with the
507     ability to switch between addresses based on conditions defined by policy
508     such as time-outs, and buffering to store messages until they can be
509     delivered. At its discretion, the service provider may choose to populate
510     only one collector address for a VNF or PNF. In this case, the network will
511     promptly resolve connectivity problems caused by a collector or network
512     failure transparently to the VNF or PNF.
513     
514
515 .. container:: note
516
517     R-88482
518
519     The VNF or PNF **SHOULD** use REST using HTTPS delivery of plain
520     text JSON for moderate sized asynchronous data sets, and for high
521     volume data sets when feasible.
522     
523
524 Monitoring & Management > Monitoring & Management Requirements > Asynchronous and Synchronous Data Delivery
525 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
526
527
528 Requirements Removed
529 ~~~~~~~~~~~~~~~~~~~~
530     
531
532 .. container:: note
533
534     R-11240
535
536     The VNF or PNF **MUST** respond with content encoded in JSON, as
537     described in the RESTCONF specification. This way the encoding of a
538     synchronous communication will be consistent with Avro.
539     
540
541 .. container:: note
542
543     R-34660
544
545     The VNF or PNF **MUST** use the RESTCONF/NETCONF framework used by
546     the ONAP configuration subsystem for synchronous communication.
547     
548
549 .. container:: note
550
551     R-42140
552
553     The VNF or PNF **MUST** respond to data requests from ONAP as soon
554     as those requests are received, as a synchronous response.
555     
556
557 .. container:: note
558
559     R-43327
560
561     The VNF or PNF **SHOULD** use `Modeling JSON text with YANG
562     <https://tools.ietf.org/html/rfc7951>`_, If YANG models need to be
563     translated to and from JSON{RFC7951]. YANG configuration and content can
564     be represented via JSON, consistent with Avro, as described in "Encoding
565     and Serialization" section.
566     
567
568 .. container:: note
569
570     R-46290
571
572     The VNF or PNF **MUST** respond to an ONAP request to deliver granular
573     data on device or subsystem status or performance, referencing the YANG
574     configuration model for the VNF or PNF by returning the requested data elements.
575     
576
577 .. container:: note
578
579     R-70266
580
581     The VNF or PNF **MUST** respond to an ONAP request to deliver the
582     current data for any of the record types defined in
583     `Event Records - Data Structure Description`_ by returning the requested
584     record, populated with the current field values. (Currently the defined
585     record types include fault fields, mobile flow fields, measurements for
586     VNF or PNF scaling fields, and syslog fields. Other record types will be added
587     in the future as they become standardized and are made available.)
588     
589
590 .. container:: note
591
592     R-73285
593
594     The VNF or PNF **MUST** must encode, address and deliver the data
595     as described in the previous paragraphs.
596     
597
598 .. container:: note
599
600     R-86586
601
602     The VNF or PNF **MUST** use the YANG configuration models and RESTCONF
603     [RFC8040] (https://tools.ietf.org/html/rfc8040).
604     
605
606 Monitoring & Management > Monitoring & Management Requirements > Google Protocol Buffers (GPB)
607 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
608
609
610 Requirements Removed
611 ~~~~~~~~~~~~~~~~~~~~
612     
613
614 .. container:: note
615
616     R-257367
617
618     The VNF or PNF, when leveraging Google Protocol Buffers for events, **MUST**
619     serialize the events using native Google Protocol Buffers (GPB) according
620     to the following guidelines:
621
622        * The keys are represented as integers pointing to the system resources
623          for the VNF or PNF being monitored
624        * The values correspond to integers or strings that identify the
625          operational state of the VNF resource, such a statistics counters and
626          the state of an VNF or PNF resource.
627        * The required Google Protocol Buffers (GPB) metadata is provided in the
628          form of .proto files.
629     
630
631 .. container:: note
632
633     R-978752
634
635     The VNF or PNF providers **MUST** provide the Service Provider the following
636     artifacts to support the delivery of high-volume VNF or PNF telemetry to
637     DCAE via GPB over TLS/TCP:
638
639        * A valid VES Event .proto definition file, to be used validate and
640          decode an event
641        * A valid high volume measurement .proto definition file, to be used for
642          processing high volume events
643        * A supporting PM content metadata file to be used by analytics
644          applications to process high volume measurement events
645     
646
647 Monitoring & Management > Monitoring & Management Requirements > JSON
648 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
649
650
651 Requirements Removed
652 ~~~~~~~~~~~~~~~~~~~~
653     
654
655 .. container:: note
656
657     R-19624
658
659     The VNF or PNF, when leveraging JSON for events, **MUST** encode and serialize
660     content delivered to ONAP using JSON (RFC 7159) plain text format.
661     High-volume data is to be encoded and serialized using
662     `Avro <http://avro.apache.org/>`_, where the Avro data
663     format are described using JSON.
664     
665
666 Monitoring & Management > Monitoring & Management Requirements > Reporting Frequency
667 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
668
669
670 Requirements Removed
671 ~~~~~~~~~~~~~~~~~~~~
672     
673
674 .. container:: note
675
676     R-146931
677
678     The VNF or PNF **MUST** report exactly one Measurement event per period
679     per source name.
680     
681
682 .. container:: note
683
684     R-98191
685
686     The VNF or PNF **MUST** vary the frequency that asynchronous data
687     is delivered based on the content and how data may be aggregated or
688     grouped together.
689
690         Note:
691
692         - For example, alarms and alerts are expected to be delivered as
693           soon as they appear. In contrast, other content, such as performance
694           measurements, KPIs or reported network signaling may have various
695           ways of packaging and delivering content. Some content should be
696           streamed immediately; or content may be monitored over a time
697           interval, then packaged as collection of records and delivered
698           as block; or data may be collected until a package of a certain
699           size has been collected; or content may be summarized statistically
700           over a time interval, or computed as a KPI, with the summary or KPI
701           being delivered.
702         - We expect the reporting frequency to be configurable depending on
703           the virtual network functions needs for management. For example,
704           Service Provider may choose to vary the frequency of collection
705           between normal and trouble-shooting scenarios.
706         - Decisions about the frequency of data reporting will affect
707           the size of delivered data sets, recommended delivery method,
708           and how the data will be interpreted by ONAP. These considerations
709           should not affect deserialization and decoding of the data, which
710           will be guided by the accompanying JSON schema or GPB definition
711           files.
712     
713
714 Monitoring & Management > Monitoring & Management Requirements > Security
715 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
716
717
718 Requirements Removed
719 ~~~~~~~~~~~~~~~~~~~~
720     
721
722 .. container:: note
723
724     R-01427
725
726     If the VNF or PNF is using Basic Authentication, then the VNF or
727     PNF **MUST** support the provisioning of security and authentication
728     parameters (HTTP username and password) in order to be able to
729     authenticate with DCAE VES Event Listener.
730
731     Note: The configuration management and provisioning software
732     are specific to a vendor architecture.
733     
734
735 .. container:: note
736
737     R-42366
738
739     The VNF or PNF **MUST** support secure connections and transports such as
740     Transport Layer Security (TLS) protocol
741     [`RFC5246 <https://tools.ietf.org/html/rfc5246>`_] and should adhere to
742     the best current practices outlined in
743     `RFC7525 <https://tools.ietf.org/html/rfc7525>`_.
744     
745
746 .. container:: note
747
748     R-43387
749
750     If the VNF or PNF is using Certificate Authentication, the
751     VNF or PNF **MUST** support mutual TLS authentication and the Subject
752     Name in the end-entity certificate MUST be used according to
753     `RFC5280 <https://tools.ietf.org/html/rfc5280>`_.
754
755     Note: In mutual TLS authentication, the client (VNF or PNF) must
756     authenticate the server (DCAE) certificate and must provide its own
757     X.509v3 end-entity certificate to the server for authentication.
758     
759
760 .. container:: note
761
762     R-44290
763
764     The VNF or PNF **MUST** control access to ONAP and to VNFs or PNFs, and creation
765     of connections, through secure credentials, log-on and exchange mechanisms.
766     
767
768 .. container:: note
769
770     R-47597
771
772     The VNF or PNF **MUST** carry data in motion only over secure connections.
773     
774
775 .. container:: note
776
777     R-55634
778
779     If VNF or PNF is using Basic Authentication, then the VNF or PNF
780     **MUST** be in compliance with
781     `RFC7617 <https://tools.ietf.org/html/rfc7617>`_ for authenticating HTTPS
782     connections to the DCAE VES Event Listener.
783     
784
785 .. container:: note
786
787     R-894004
788
789     If the VNF or PNF is using Basic Authentication, then when the VNF
790     or PNF sets up a HTTPS connection to the DCAE VES Event Listener,
791     the VNF or PNF **MUST** provide a username and password to the
792     DCAE VES Event Listener in the Authorization header and the VNF
793     or PNF MUST support one-way TLS authentication.
794
795     Note: In one-way TLS authentication, the client (VNF or PNF)
796     must authentication the server (DCAE) certificate.
797     
798
799 Monitoring & Management > Monitoring & Management Requirements > VNF telemetry via standardized interface
800 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
801
802
803 Requirements Removed
804 ~~~~~~~~~~~~~~~~~~~~
805     
806
807 .. container:: note
808
809     R-821473
810
811     The VNF or PNF MUST produce heartbeat indicators consisting of events containing
812     the common event header only per the VES Listener Specification.
813     
814
815 Monitoring & Management > Monitoring and Fault Protocol Selection
816 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
817
818
819 Requirements Added
820 ~~~~~~~~~~~~~~~~~~
821     
822
823 .. container:: note
824
825     :need:`R-209104`
826
827     The VNF or PNF producing VES syslog events **SHOULD** restrict these
828     events to those that convey significant errors or warnings needed to support
829     the operation or troubleshooting of the VNF or PNF. It is expected the
830     volume of such events would be lower (e.g. less than 2000 per day) than
831     more detailed events produced in the course of normal operations.
832     
833
834 .. container:: note
835
836     :need:`R-554966`
837
838     The VNF or PNF **MUST** report performance metrics using
839     :ref:`Virtual Function Event Streaming (VES) <ves_monitoring_requirements>`
840     or :ref:`bulk_performance_measurement`.
841     
842
843 .. container:: note
844
845     :need:`R-63105`
846
847     The VNF or PNF **MAY** produce telemetry data using the
848     :doc:`RESTConf Collector <dcae:sections/services/restconf/index>`, but this
849     requires additional coordination with the operator to appropriately
850     map the data internally to a VES-like structure used within ONAP. If this
851     option is needed, then the VNF or PNF Provider must coordinate with with the
852     Operator for the data to be successfully collected and processed by DCAE.
853     
854
855 .. container:: note
856
857     :need:`R-69111`
858
859     The VNF or PNF **MUST** report application logs using either
860     :ref:`Virtual Function Event Streaming (VES) <ves_monitoring_requirements>`
861     or Syslog in compliance with
862     `RFC 5424 <https://tools.ietf.org/html/rfc5424>`__ .
863     
864
865 .. container:: note
866
867     :need:`R-82909`
868
869     The VNF or PNF **MUST** report faults and alarms using either
870     :ref:`Virtual Function Event Streaming (VES) <ves_monitoring_requirements>`
871     or :ref:`SNMP <snmp_monitoring_requirements>`. (NOTE: See relevant sections
872     for more detailed requirements)
873     
874
875 .. container:: note
876
877     :need:`R-857511`
878
879     VNF or PNF Provider **MUST** have agreement with the Service Provider before
880     utilizing the :doc:`HV-VES option <dcae:sections/services/ves-hv/index>`
881     for monitoring as this option does not fully integrate with the ONAP's DCAE
882     event processing capabilities.
883     
884
885 .. container:: note
886
887     :need:`R-935717`
888
889     The VNF or PNF **MUST** report heartbeats using
890     :ref:`Virtual Function Event Streaming (VES) <ves_monitoring_requirements>`.
891     
892
893 Requirements Changed
894 ~~~~~~~~~~~~~~~~~~~~
895     
896
897 .. container:: note
898
899     :need:`R-697654`
900
901     The VNF or PNF **MAY** leverage ONAP's High Volume VNF Event Streaming
902     (HV-VES) when there is a need to deliver large volumes of real-time
903     performance management metrics. See
904     :doc:`HV-VES collector <dcae:sections/services/ves-hv/index>`
905     service details for more information.
906     
907
908 .. container:: note
909
910     :need:`R-332680`
911
912     The VNF or PNF producing VES events **SHOULD** deliver syslog messages
913     that meet the criteria in R-209104 to the VES Event Listener using the
914     ``syslog`` VES domain.
915     
916
917 .. container:: note
918
919     :need:`R-908291`
920
921     The VNF or PNF **MAY** leverage a bulk VNF or PNF telemetry transmission
922     mechanism in instances where other transmission
923     methods are not practical or advisable.
924
925     NOTE: For additional information and use cases for the Bulk Telemetry
926     Transmission Mechanism, please refer to
927     the :ref:`bulk_performance_measurement` requirements and the
928     `5G - Bulk PM ONAP Development <https://wiki.onap.org/display/DW/5G+-+Bulk+PM>`__
929     Wiki page.
930     
931
932 Monitoring & Management > SNMP Monitoring Requirements
933 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
934
935
936 Requirements Added
937 ~~~~~~~~~~~~~~~~~~
938     
939
940 .. container:: note
941
942     :need:`R-233922`
943
944     If the VNF or PNF is using SNMP, then the VNF or PNF Provider **SHOULD**
945     provide examples of all SNMP alarms.
946     
947
948 .. container:: note
949
950     :need:`R-261501`
951
952     If the VNF or PNF is using SNMP, then the VNF or PNF Provider **MUST**
953     provide a Management Information Base (MIB) file that uniquely identifies
954     and describes all SNMP events exposed by the network function.
955     
956
957 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces
958 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
959
960
961 Requirements Removed
962 ~~~~~~~~~~~~~~~~~~~~
963     
964
965 .. container:: note
966
967     R-798933
968
969     The VNF or PNF **SHOULD** deliver event records that fall into the event domains
970     supported by VES.
971     
972
973 .. container:: note
974
975     R-821839
976
977     The VNF or PNF **MUST** deliver event records to ONAP using the common
978     transport mechanisms and protocols defined in this specification.
979     
980
981 .. container:: note
982
983     R-932071
984
985     The VNF or PNF provider **MUST** reach agreement with the Service Provider on
986     the selected methods for encoding, serialization and data delivery
987     prior to the on-boarding of the VNF or PNF into ONAP SDC Design Studio.
988     
989
990 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > VNF or PNF Telemetry using VES/JSON Model
991 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
992
993
994 Requirements Removed
995 ~~~~~~~~~~~~~~~~~~~~
996     
997
998 .. container:: note
999
1000     R-659655
1001
1002     The VNF or PNF **SHOULD** leverage the JSON-driven model, as depicted in Figure 2,
1003     for data delivery unless there are specific performance or operational
1004     concerns agreed upon by the Service Provider that would warrant using an
1005     alternate model.
1006     
1007
1008 Monitoring & Management > Virtual Function Event Streaming (VES) Client Requirements > Buffering and Redelivery
1009 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1010
1011
1012 Requirements Added
1013 ~~~~~~~~~~~~~~~~~~
1014     
1015
1016 .. container:: note
1017
1018     :need:`R-103464`
1019
1020     A VNF or PNF producing VES events that is buffering events due to an
1021     unavailable VES Event Listener **MAY** leverage to ``publishEventBatch``
1022     operation to redeliver buffered events. Please note this can only be
1023     used when all buffered events belong to the same domain due to the
1024     restrictions in place for the operation.
1025     
1026
1027 .. container:: note
1028
1029     :need:`R-346137`
1030
1031     A VNF or PNF producing VES events that is buffering events per R-658596
1032     **MUST** store in-scope events even when the maximum capacity of the
1033     buffer (defined in R-636251) has been reached. To make room for new events
1034     in this situation, hte oldest event in the buffer shall be removed
1035     as necessary. (i.e. First In First Out)
1036     
1037
1038 .. container:: note
1039
1040     :need:`R-379523`
1041
1042     A VNF or PNF producing VES events that is buffering events due to an
1043     unavailable VES Event Listener **MUST** redeliver all buffered events
1044     according to the following rules when the VNF or PNF detects the VES Event
1045     Listener has become available:
1046
1047     * Deliver all previously buffered events before sending new events
1048     * Deliver buffered events in the order they were received
1049     
1050
1051 .. container:: note
1052
1053     :need:`R-498679`
1054
1055     A VNF or PNF producing VES events **MAY** discard buffered events older
1056     than a maximum retention period, not less than 1 hour, even if the event
1057     was never successfully delivered to the event listener. While discarding
1058     based on this retention period is supported for backwards compatibility, it
1059     is recommended to retain events until the maximum buffer size is reached per
1060     R-346137 as that will maximize the number of events delivered.
1061     
1062
1063 .. container:: note
1064
1065     :need:`R-636251`
1066
1067     A VNF or PNF producing VES events **MUST** size the event buffer
1068     referenced in R-658596 such that it can buffer a minimum of 1 hours of
1069     events under nominal load.
1070     
1071
1072 .. container:: note
1073
1074     :need:`R-658596`
1075
1076     A VNF or PNF producing VES events **MUST** buffer events that meet the
1077     following criteria if the VES Event Listener is unreachable or the request
1078     encounters a timeout.
1079
1080     * Faults with eventSeverity of ``MINOR``, ``MAJOR``, ``NORMAL``, or
1081       ``CRITICAL``
1082     * Syslog with syslogSev of ``Emergency``, ``Alert``, ``Critical``,
1083       ``Error``, or ``Warning``
1084     * All measurement events
1085     
1086
1087 .. container:: note
1088
1089     :need:`R-818859`
1090
1091     The VNF or PNF producing VES events **MUST** not allow an unavailable or
1092     timing out VES Event Listener to impact the performance, stability, or
1093     correct execution of network function.
1094     
1095
1096 Monitoring & Management > Virtual Function Event Streaming (VES) Client Requirements > Configuration Requirements
1097 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1098
1099
1100 Requirements Added
1101 ~~~~~~~~~~~~~~~~~~
1102     
1103
1104 .. container:: note
1105
1106     :need:`R-460012`
1107
1108     The VNF or PNF producing VES events **MUST** allow the configuration of
1109     the attributes defined in Table 1 and utilize the provided default value
1110     (where applicable) when the configuration value is not provided by the
1111     Service Provider.
1112     
1113
1114 .. container:: note
1115
1116     :need:`R-940591`
1117
1118     A VNF or PNF producing VES events **SHOULD** use the recommended parameter
1119     name for the configurable value from Table 1.
1120     
1121
1122 Monitoring & Management > Virtual Function Event Streaming (VES) Client Requirements > Configuration Requirements > VES Listener Endpoint and DNS Resolution
1123 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1124
1125
1126 Requirements Added
1127 ~~~~~~~~~~~~~~~~~~
1128     
1129
1130 .. container:: note
1131
1132     :need:`R-130645`
1133
1134     The VNF or PNF **MUST** respect the Time To Live provided by the DNS for
1135     the VES Event Listener FQDN.
1136     
1137
1138 .. container:: note
1139
1140     :need:`R-70492`
1141
1142     The VNF or PNF **MUST** support DNS resolution of the VES Listener Endpoint
1143     if a Fully Qualified Domain Name (FQDN) is provided.
1144     
1145
1146 Monitoring & Management > Virtual Function Event Streaming (VES) Client Requirements > Event Definition and Registration
1147 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1148
1149
1150 Requirements Changed
1151 ~~~~~~~~~~~~~~~~~~~~
1152     
1153
1154 .. container:: note
1155
1156     :need:`R-120182`
1157
1158     A VNF or PNF Provider utilizing VES **MUST** indicate specific conditions
1159     that may arise, and recommend actions that may be taken at specific
1160     thresholds, or if specific conditions repeat within a specified time
1161     interval, using the semantics and syntax described by the
1162     :ref:`VES Event Registration specification <ves_event_registration_3_2>`.
1163
1164     **NOTE:** The Service Provider may override VNF or PNF provider Event
1165     Registrations using the ONAP SDC Design Studio to finalizes Service
1166     Provider engineering rules for the processing of the VNF or PNF events.
1167     These changes may modify any of the following:
1168
1169     * Threshold levels
1170     * Specified actions related to conditions
1171     
1172
1173 .. container:: note
1174
1175     :need:`R-520802`
1176
1177     If the VNF or PNF is using VES, then the VNF or PNF Provider **MUST** provide
1178     a YAML file formatted in adherence with the
1179     :ref:`VES Event Registration specification <ves_event_registration_3_2>`
1180     that defines the following information for each event produced by the VNF:
1181
1182     * ``eventName``
1183     * Required fields
1184     * Optional fields
1185     * Any special handling to be performed for that event
1186     
1187
1188 Monitoring & Management > Virtual Function Event Streaming (VES) Client Requirements > Event Delivery Requirements
1189 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1190
1191
1192 Requirements Added
1193 ~~~~~~~~~~~~~~~~~~
1194     
1195
1196 .. container:: note
1197
1198     :need:`R-176945`
1199
1200     The VNF or PNF producing VES events **SHOULD NOT** send syslog events to the
1201     VES Event Listener during debug mode, but rather store syslog events locally
1202     for access or possible file transfer.
1203     
1204
1205 .. container:: note
1206
1207     :need:`R-655209`
1208
1209     The VNF or PNF producing VES events **MUST** respect the configured
1210     VES Timeout Value when delivering VES events, and abort any call where
1211     the VES Event Listener does not successfully acknowledge the delivery of
1212     event(s) within the Timeout Value. These failed transactions should be
1213     buffered and retried in accordance with the
1214     :ref:`ves_buffering_requirements` Requirements.
1215     
1216
1217 Requirements Changed
1218 ~~~~~~~~~~~~~~~~~~~~
1219     
1220
1221 .. container:: note
1222
1223     :need:`R-06924`
1224
1225     The VNF or PNF producing VES events **MUST** deliver VES events as it
1226     becomes available or according to the configured measurement interval.
1227     
1228
1229 Monitoring & Management > Virtual Function Event Streaming (VES) Client Requirements > Event Formatting and Usage
1230 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1231
1232
1233 Requirements Added
1234 ~~~~~~~~~~~~~~~~~~
1235     
1236
1237 .. container:: note
1238
1239     :need:`R-408814`
1240
1241     The VNF or a PNF producing VES stndDefined domain events to report
1242     standards-organization defined events to ONAP, **MUST** set the
1243     event.stndDefinedNamespace property. By default, ONAP ships with support
1244     for the following:
1245
1246     * 3GPP-Provisioning
1247     * 3GPP-Heartbeat
1248     * 3GPP-FaultSupervision
1249     * 3GPP-PerformanceAssurance
1250
1251     Another namespace, outside of the list provided, needs to registered in ONAP in coordination
1252     with the operator before it can be used.
1253     
1254
1255 .. container:: note
1256
1257     :need:`R-408815`
1258
1259     If the VNF or PNF producing VES stndDefined domain events provides
1260     the event.stndDefinedFields.schemaReference then it **MUST** set its value
1261     to the publicUrl value in DCAE's VES Collector `etc/externalRepo/schema-map.json <https://github.com/onap/dcaegen2-collectors-ves/blob/guilin/etc/externalRepo/schema-map.json/>`_
1262     that describes the data being sent in event.stndDefinedFields.data.
1263     
1264
1265 .. container:: note
1266
1267     :need:`R-408816`
1268
1269     If the VNF or PNF producing VES stndDefined domain events provides
1270     the event.stndDefinedFields.schemaReference then it **MUST** only pass events
1271     that conform to schema references previously registered with DCAE otherwise
1272     the event will be rejected. By default, ONAP ships with support for schemas
1273     found in DCAE's VES Collector `etc/externalRepo/schema-map.json <https://github.com/onap/dcaegen2-collectors-ves/blob/guilin/etc/externalRepo/schema-map.json/>`_.
1274     
1275
1276 .. container:: note
1277
1278     :need:`R-408817`
1279
1280     The VNF or PNF Provider producing stndDefined events **MUST** coordinate with
1281     the operator, willing to validate stndDefined events, to configure DCAE to
1282     accept any new event schema prior to sending those events or the events
1283     will be rejected.
1284     
1285
1286 .. container:: note
1287
1288     :need:`R-408818`
1289
1290     If the VNF or PNF producing VES stndDefined domain events provides
1291     the event.stndDefinedFields.schemaReference then it **MUST** set the
1292     event.stndDefined.schemaReference property to an exact structure,
1293     from supported schemaReference, describing the notification within
1294     an openAPI specification, using JSON Pointer as URI fragment  e.g.
1295     “https://forge.3gpp.org/.../faultMnS.yaml#/components/schemas/notifyNewAlarm"
1296     
1297
1298 Requirements Changed
1299 ~~~~~~~~~~~~~~~~~~~~
1300     
1301
1302 .. container:: note
1303
1304     :need:`R-408813`
1305
1306     A VNF or PNF producing VES events **MUST** pass all information it is
1307     able to collect even if the information field is identified as optional.
1308     However, if the data cannot be collected, then optional fields can be
1309     omitted.
1310     
1311
1312 .. container:: note
1313
1314     :need:`R-570134`
1315
1316     The VES events produced by the VNF or PNF **MUST** be compliant with the
1317     common event formats defined in one of the following specifications:
1318
1319     * :ref:`VES Event Listener 5.4.1<ves_event_listener_5_4_1>`
1320     * :ref:`VES Event Listener 7.1.1<ves_event_listener_7_1>`
1321     * :ref:`VES Event Listener 7.2<ves_event_listener_7_2>`
1322
1323     The latest version (7.2) should be preferred. Earlier versions are
1324     provided for backwards compatibility.
1325     
1326
1327 .. container:: note
1328
1329     :need:`R-283988`
1330
1331     A VNF or PNF producing VES events **MUST NOT** send information through
1332     extensible structures if the event specification has explicitly defined
1333     fields for that information.
1334     
1335
1336 .. container:: note
1337
1338     :need:`R-528866`
1339
1340     The VES events produced by the VNF or PNF **MUST** conform to the schema and
1341     other formatting requirements specified in the relevant VES Event Listener
1342     specification.
1343     
1344
1345 .. container:: note
1346
1347     :need:`R-470963`
1348
1349     A VNF or PNF producing VES events **SHOULD** leverage camel case to
1350     separate words and acronyms used as keys that will be sent through extensible
1351     fields. When an acronym is used as the key, then only the first letter shall
1352     be capitalized.
1353     
1354
1355 Monitoring & Management > Virtual Function Event Streaming (VES) Client Requirements > Security
1356 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1357
1358
1359 Requirements Changed
1360 ~~~~~~~~~~~~~~~~~~~~
1361     
1362
1363 .. container:: note
1364
1365     :need:`R-33878`
1366
1367     The VNF or PNF **MUST** utilize one of the authentication methods
1368     prescribed by the relevant VES Event Listener specification.
1369     
1370
1371 ONAP Heat VNF Modularity
1372 ^^^^^^^^^^^^^^^^^^^^^^^^
1373
1374
1375 Requirements Changed
1376 ~~~~~~~~~~~~~~~~~~~~
1377     
1378
1379 .. container:: note
1380
1381     :need:`R-610030`
1382
1383     A VNF's Heat Orchestration Template's Incremental Module **MUST**
1384     declare
1385
1386     - one or more ``OS::Nova::Server`` resources OR
1387     - one or more ``OS::Cinder::Volume`` resources.
1388
1389     An ``OS::Nova::Server``
1390     **MAY** be created in the incremental module or a nested yaml file invoked
1391     by the incremental module.
1392
1393     An ``OS::Cinder::Volume``
1394     **MAY** be created in the incremental module or a nested yaml file invoked
1395     by the incremental module.
1396     
1397
1398 PNF Plug and Play > PNF Plug and Play
1399 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1400
1401
1402 Requirements Changed
1403 ~~~~~~~~~~~~~~~~~~~~
1404     
1405
1406 .. container:: note
1407
1408     :need:`R-106240`
1409
1410     A PNF MUST support the pnfRegistration VES event which is required to integrate with ONAP’s PNF Plug and Play capabilities.
1411     
1412
1413 TOSCA PNF Descriptor > Capability Types
1414 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1415
1416
1417 Requirements Changed
1418 ~~~~~~~~~~~~~~~~~~~~
1419     
1420
1421 .. container:: note
1422
1423     :need:`R-177937`
1424
1425     The PNFD provided by a PNF vendor **MUST** comply with the following
1426     Capabilities Types as specified in ETSI NFV-SOL001 standard:
1427
1428       - tosca.capabilities.nfv.VirtualLinkable
1429     
1430
1431 TOSCA PNF Descriptor > Policy Types
1432 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1433
1434
1435 Requirements Changed
1436 ~~~~~~~~~~~~~~~~~~~~
1437     
1438
1439 .. container:: note
1440
1441     :need:`R-596064`
1442
1443     The PNFD provided by a PNF vendor **MUST** comply with the following Policy
1444     Types as specified in ETSI NFV-SOL001 standard:
1445
1446       - tosca.policies.nfv.SecurityGroupRule
1447     
1448
1449 TOSCA PNF Descriptor > Relationship Types
1450 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1451
1452
1453 Requirements Changed
1454 ~~~~~~~~~~~~~~~~~~~~
1455     
1456
1457 .. container:: note
1458
1459     :need:`R-64064`
1460
1461     The PNFD provided by a PNF vendor **MUST** comply with the following
1462     Relationship Types as specified in ETSI NFV-SOL001 standard:
1463
1464       - tosca.relations.nfv.VirtualLinksTo
1465     
1466
1467 VNF and PNF On-boarding and package management > Licensing Requirements
1468 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1469
1470
1471 Requirements Changed
1472 ~~~~~~~~~~~~~~~~~~~~
1473     
1474
1475 .. container:: note
1476
1477     :need:`R-85991`
1478
1479     If the VNF or PNF requires a license then the VNF or PNF provider **MUST** provide a universal license key
1480     per VNF or PNF to be used as needed by services (i.e., not tied to a VM
1481     instance) as the recommended solution. The VNF or PNF provider may provide
1482     pools of Unique VNF or PNF License Keys, where there is a unique key for
1483     each VNF or PNF instance as an alternate solution. In all cases, licensing issues should
1484     be resolved without interrupting in-service VNFs or PNFs.
1485     
1486
1487 .. container:: note
1488
1489     :need:`R-44569`
1490
1491     If ONAP licensing management solution is used, then the VNF or PNF provider **MUST NOT** require additional
1492     infrastructure such as a VNF or PNF provider license server for VNF or PNF provider
1493     functions and metrics.
1494     
1495
1496 .. container:: note
1497
1498     :need:`R-13613`
1499
1500     The VNF **MUST** provide clear measurements for licensing
1501     purposes if needed to allow automated scale up/down by the management system.
1502     
1503
1504 .. container:: note
1505
1506     :need:`R-47849`
1507
1508     If ONAP licensing management solution is used, then the VNF or PNF provider
1509     **MUST** support the metadata about licenses (and their applicable
1510     entitlements) as defined in the
1511     `ONAP License Management Information Model <https://docs.onap.org/projects/onap-modeling-modelspec/en/latest/ONAP%20Model%20Spec/im/License/LicenseModel.html>`__,
1512     and any license keys required to authorize use of the VNF or PNF software.
1513     This metadata will be used to facilitate onboarding the VNF or PNF into the
1514     ONAP environment and automating processes for putting the licenses into use
1515     and managing the full lifecycle of the licenses.
1516     
1517
1518 .. container:: note
1519
1520     :need:`R-85653`
1521
1522     If ONAP licensing management solution is used, then the VNF or PNF **MUST** provide metrics (e.g., number of sessions,
1523     number of subscribers, number of seats, etc.) to ONAP for tracking
1524     every license.
1525     
1526
1527 Requirements Removed
1528 ~~~~~~~~~~~~~~~~~~~~
1529     
1530
1531 .. container:: note
1532
1533     R-44125
1534
1535     The VNF or PNF provider **MUST** agree to the process that can
1536     be met by Service Provider reporting infrastructure. The Contract
1537     shall define the reporting process and the available reporting tools.
1538     
1539
1540 .. container:: note
1541
1542     R-97293
1543
1544     The VNF or PNF provider **MUST NOT** require audits
1545     of Service Provider's business.
1546     
1547
1548 VNF and PNF On-boarding and package management > Resource Description
1549 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1550
1551
1552 Requirements Changed
1553 ~~~~~~~~~~~~~~~~~~~~
1554     
1555
1556 .. container:: note
1557
1558     :need:`R-22346`
1559
1560     The VNF or PNF Provider **MUST** provide :ref:`VES Event Registration <ves_event_registration_3_2>`
1561     for all VES events provided by that VNF or PNF.
1562     
1563
1564 VNF or PNF CSAR Package > VNF or PNF Package Contents
1565 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1566
1567
1568 Requirements Changed
1569 ~~~~~~~~~~~~~~~~~~~~
1570     
1571
1572 .. container:: note
1573
1574     :need:`R-40820`
1575
1576     The VNF CSAR PACKAGE **MUST** enumerate all of the open source
1577     licenses their VNF(s) incorporate. CSAR License directory as per ETSI
1578     SOL004.
1579
1580     for example ROOT\\Licenses\\ **License_term.txt**
1581