--- /dev/null
+# -*- coding: utf8 -*-
+# org.onap.vnfrqts/requirements
+# ============LICENSE_START====================================================
+# Copyright © 2018 AT&T Intellectual Property. All rights reserved.
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the "License");
+# you may not use this software except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#             http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#             https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# ============LICENSE_END============================================
+
+"""
+This script should be run before every commit to ensure proper
+standards are being followed within the project.  The script
+will also automatically fix certain issues when they are encountered, and
+warn about other issues it cannot automatically resolve.
+
+Warnings:
+- Requirement missing required attributes
+- Invalid values for attributes
+- Invalid section header usage in any file
+- :keyword: and requirement mismatch
+
+Auto Updates:
+- Assigning :id: on new requirements where an ID missing
+- Adding :introduced: attribute on new requirements
+- Adding/correcting :updated: attribute on changed requirements
+"""
+
+import os
+import random
+import re
+import sys
+from abc import ABC, abstractmethod
+from collections import OrderedDict, deque
+from pathlib import Path
+from typing import Deque, List, Mapping, Callable, Set
+
+import requests
+
+THIS_DIR = Path(__file__).parent
+CONF_PATH = THIS_DIR / "docs/conf.py"
+
+NEEDS_JSON_URL = (
+    "https://nexus.onap.org/service/local/repositories/raw/content"
+    "/org.onap.vnfrqts.requirements/master/needs.json"
+)
+
+HEADING_LEVELS = ("-", "^", "~", "+", "*", '"')
+
+SPACES = re.compile(r"\s+")
+REQ_DIRECTIVE_PATTERN = re.compile(r"\.\.\s+req::.*")
+ATTRIBUTE_PATTERN = re.compile(r"^\s+(:\w+:)\s+(.*)$")
+VERSION_PATTERN = re.compile(r"version\s+=\s+'(.*?)'")
+
+VALID_KEYWORDS = ("MUST", "MUST NOT", "SHOULD", "SHOULD NOT", "MAY", "MAY NOT")
+VALID_VERSIONS = (
+    "amsterdam",
+    "beijing",
+    "casablanca",
+    "dublin",
+    "el alto",
+    "frankfurt",
+    "guilin",
+)
+REQUIRED_ATTRIBUTES = (":keyword:", ":target:", ":id:")
+VALID_TARGETS = (
+    "VNF",
+    "PNF",
+    "VNF or PNF",
+    "VNF DOCUMENTATION PACKAGE",
+    "PNF DOCUMENTATION PACKAGE",
+    "VNF or PNF DOCUMENTATION PACKAGE",
+    "VNF PROVIDER",
+    "PNF PROVIDER",
+    "VNF or PNF PROVIDER",
+    "VNF CSAR PACKAGE",
+    "PNF CSAR PACKAGE",
+    "VNF or PNF CSAR PACKAGE",
+    "VNF HEAT PACKAGE",
+)
+VALID_VALIDATION_MODES = ("static", "none", "in_service")
+
+
+def check(predicate: bool, msg: str):
+    """
+    Raises RuntimeError with given msg if predicate is False
+    """
+    if not predicate:
+        raise RuntimeError(msg)
+
+
+def get_version() -> str:
+    """
+    Returns the version value from conf.py
+    """
+    with open(CONF_PATH) as f:
+        for line in f:
+            m = VERSION_PATTERN.match(line)
+            if m:
+                version = m.groups()[0]
+                if version not in VALID_VERSIONS:
+                    print(
+                        f"ERROR: {version} in conf.py is not defined in "
+                        f"VALID_VERSIONS. Update the script to continue"
+                    )
+                    sys.exit(1)
+                return version
+
+
+VERSION = get_version()
+
+
+def normalize(text: str):
+    """
+    Strips out formatting, line breaks, and repeated spaces to normalize
+    the string for comparison.  This ensures minor formatting changes
+    are not tagged as meaningful changes
+    """
+    s = text.lower()
+    s = s.replace("\n", " ")
+    s = re.sub(r'[`*\'"]', "", s)
+    s = re.sub(r"\s+", " ", s)
+    return s
+
+
+def warn(path: str, msg: str, req: "RequirementDirective" = None):
+    """
+    Log a warning
+    """
+    req_id = req.requirement_id or "UNKNOWN" if req else "UNKNOWN"
+    print(f"WARNING: {path} | {req_id} | {msg}")
+
+
+class RequirementRepository:
+    """
+    Pulls needs.json and provides various options to interact with the data.
+    """
+
+    def __init__(self, data=None):
+        self.data = data or requests.get(NEEDS_JSON_URL).json()
+        self.all_ids = {
+            r["id"]
+            for version in self.data["versions"].values()
+            for r in version["needs"].values()
+        }
+
+    @property
+    def current_requirements(self) -> Mapping:
+        """
+        Returns the requirements specified by current_version in needs.json.
+        """
+        version = self.data["current_version"]
+        return self.data["versions"][version]["needs"]
+
+    @property
+    def unique_targets(self) -> Set[str]:
+        return {r["target"] for r in self.current_requirements.values()}
+
+    @property
+    def unique_validation_modes(self) -> Set[str]:
+        return {r["validation_mode"] for r in self.current_requirements.values()}
+
+    def create_id(self) -> str:
+        """
+        Generates a requirements ID that has not been used in any version
+        of the requirements.
+        """
+        while True:
+            new_id = "R-{:0>5d}".format(random.randint(0, 99999))
+            if new_id in self.all_ids:
+                continue  # skip this one and generate another one
+            self.all_ids.add(new_id)
+            return new_id
+
+    def is_new_requirement(self, req: "RequirementDirective") -> bool:
+        return req.requirement_id not in self.current_requirements
+
+    def has_changed(self, req: "RequirementDirective") -> bool:
+        """
+        Returns True if the requirement already exists and the contents has
+        meaningfully changed. Small changes in spaces or formatting are not considered.
+        """
+        current_req = self.current_requirements.get(req.requirement_id)
+        if not current_req:
+            return False
+        return normalize(current_req["description"]) == normalize("".join(req.content))
+
+
+class RequirementDirective:
+    """
+    Data structure to hold a .. req:: directive
+    """
+
+    ATTRIBUTE_ORDER = (
+        ":id:",
+        ":target:",
+        ":keyword:",
+        ":introduced:",
+        ":updated:",
+        ":validation_mode:",
+        ":impacts:",
+    )
+
+    def __init__(self, path: str):
+        self.path = path
+        self.attributes = OrderedDict()
+        self.content = []
+        self.indent = None
+
+    @property
+    def requirement_id(self) -> str:
+        return self.attributes.get(":id:", "")
+
+    @requirement_id.setter
+    def requirement_id(self, r_id: str):
+        self._update(":id:", r_id)
+
+    @property
+    def keyword(self) -> str:
+        return self.attributes.get(":keyword:", "")
+
+    @keyword.setter
+    def keyword(self, k: str):
+        self._update(":keyword:", k)
+
+    @property
+    def target(self) -> str:
+        return self.attributes.get(":target:", "")
+
+    @target.setter
+    def target(self, value: str):
+        self._update(":target", value)
+
+    @property
+    def introduced(self) -> str:
+        return self.attributes.get(":introduced:", "")
+
+    @introduced.setter
+    def introduced(self, version: str):
+        self._update(":introduced:", version)
+
+    @property
+    def updated(self) -> str:
+        return self.attributes.get(":updated:", "")
+
+    @updated.setter
+    def updated(self, version: str):
+        self._update(":updated:", version)
+
+    @property
+    def validation_mode(self) -> str:
+        return self.attributes.get(":validation_mode:", "")
+
+    @validation_mode.setter
+    def validation_mode(self, value: str):
+        self._update(":validation_mode:", value)
+
+    def parse(self, lines: Deque[str]):
+        """
+        Parses a ..req:: directive and populates the data structre
+        """
+        parsing_attrs = True
+        while lines:
+            line = lines.popleft()
+            match = ATTRIBUTE_PATTERN.match(line) if parsing_attrs else None
+            if match:
+                self.indent = self.indent or self.calc_indent(line)
+                attr, value = match.groups()
+                self.attributes[attr] = value
+            else:
+                parsing_attrs = False  # passed attributes, capture content
+                if line.strip() and self.calc_indent(line) < self.indent:
+                    # past end of the directive so we'll put this line back
+                    lines.appendleft(line)
+                    break
+                else:
+                    self.content.append(line)
+
+    def format_attributes(self) -> List[str]:
+        """
+        Converts a dict back to properly indented lines using ATTRIBUTE_ORDER
+        """
+        spaces = " " * self.indent
+        attr_lines = []
+        for key in self.ATTRIBUTE_ORDER:
+            value = self.attributes.get(key)
+            if value:
+                attr_lines.append(f"{spaces}{key} {value}\n")
+        return attr_lines
+
+    @staticmethod
+    def calc_indent(line: str) -> int:
+        """
+        Number of leading spaces of the line
+        """
+        return len(line) - len(line.lstrip())
+
+    def __str__(self):
+        return "".join(self.format_attributes() + self.content)
+
+    def _notify(self, field, value):
+        req_id = self.requirement_id or "UNKNOWN"
+        print(f"UPDATE: {self.path} | {req_id} | Setting {field} to {value}")
+
+    def _update(self, attr, value):
+        self.attributes[attr] = value
+        self._notify(attr, value)
+
+
+class RequirementVisitor:
+    """
+    Walks a directory for reStructuredText files and and passes contents to
+    visitors when the content is encountered.
+
+    Types of visitors supported:
+
+    - Requirement:    Take the path and a RequirementDirective which may be modified
+                      If modified, the file will be updated using the modified directive
+    - Post Processor: Take the path and all lines for processing; returning a
+                      potentially changed set of lines
+    """
+
+    def __init__(
+        self,
+        req_visitors: List[Callable[[str, RequirementDirective], None]],
+        post_processors: List[Callable[[str, List[str]], List[str]]],
+    ):
+        self.req_visitors = req_visitors or []
+        self.post_processors = post_processors or []
+
+    def process(self, root_dir: Path):
+        """
+        Walks the `root_dir` looking for rst to files to parse
+        """
+        for dir_path, sub_dirs, filenames in os.walk(root_dir.as_posix()):
+            for filename in filenames:
+                if filename.lower().endswith(".rst"):
+                    self.handle_rst_file(os.path.join(dir_path, filename))
+
+    @staticmethod
+    def read(path):
+        """Read file at `path` and return lines as list"""
+        with open(path, "r") as f:
+            return list(f)
+
+    @staticmethod
+    def write(path, content):
+        """Write a content to the given path"""
+        with open(path, "w") as f:
+            for line in content:
+                f.write(line)
+
+    def handle_rst_file(self, path):
+        """
+        Parse the RST file notifying the registered visitors
+        """
+        lines = deque(self.read(path))
+        new_contents = []
+        while lines:
+            line = lines.popleft()
+            if self.is_req_directive(line):
+                req = RequirementDirective(path)
+                req.parse(lines)
+                for func in self.req_visitors:
+                    func(path, req)
+                # Put the lines back for processing by the line visitor
+                lines.extendleft(reversed(req.format_attributes() + req.content))
+            new_contents.append(line)
+        for processor in self.post_processors:
+            new_contents = processor(path, new_contents) or new_contents
+        self.write(path, new_contents)
+
+    @staticmethod
+    def is_req_directive(line):
+        """Returns True if the line denotes the start of a needs directive"""
+        return bool(REQ_DIRECTIVE_PATTERN.match(line))
+
+
+class AbstractRequirementVisitor(ABC):
+    @abstractmethod
+    def __call__(self, path: str, req: RequirementDirective):
+        raise NotImplementedError()
+
+
+class MetadataFixer(AbstractRequirementVisitor):
+    """
+    Updates metadata based on the status of the requirement and contents of
+    the metadata
+    """
+
+    def __init__(self, repos: RequirementRepository):
+        self.repos = repos
+
+    def __call__(self, path: str, req: RequirementDirective):
+        if not req.requirement_id:
+            req.requirement_id = self.repos.create_id()
+        if self.repos.is_new_requirement(req) and req.introduced != VERSION:
+            req.introduced = VERSION
+        if self.repos.has_changed(req) and req.updated != VERSION:
+            req.updated = VERSION
+
+
+class MetadataValidator(AbstractRequirementVisitor):
+    def __init__(self, repos: RequirementRepository):
+        self.repos = repos
+
+    def __call__(self, path: str, req: RequirementDirective):
+        for attr in REQUIRED_ATTRIBUTES:
+            if attr not in req.attributes:
+                warn(path, f"Missing required attribute {attr}", req)
+        if req.keyword and req.keyword not in VALID_KEYWORDS:
+            warn(path, f"Invalid :keyword: value ({req.keyword})", req)
+        if repository.is_new_requirement(req) and req.introduced != VERSION:
+            warn(path, f":introduced: is not {VERSION} on new requirement", req)
+        if req.introduced and req.introduced not in VALID_VERSIONS:
+            warn(path, f"Invalid :introduced: value ({req.introduced})", req)
+        if req.updated and req.updated not in VALID_VERSIONS:
+            warn(path, f"Invalid :updated: value ({req.updated})", req)
+        if req.target and req.target not in VALID_TARGETS:
+            warn(path, f"Invalid :target: value ({req.target})", req)
+        if req.validation_mode and req.validation_mode not in VALID_VALIDATION_MODES:
+            warn(path, f"Invalid :validation_mode: value ({req.validation_mode})", req)
+
+
+def check_section_headers(path: str, lines: List[str]) -> List[str]:
+    """
+    Ensure hierarchy of section headers follows the expected progression as defined
+    by `HEADING_LEVELS`, and that section heading marks match the length of the
+    section title.
+    """
+    current_heading_level = 0
+    for i, line in enumerate(lines):
+        if any(line.startswith(char * 3) for char in HEADING_LEVELS):
+            # heading level should go down, stay the same, or be next level
+            expected = HEADING_LEVELS[0 : current_heading_level + 2]
+            if line[0] not in expected:
+                warn(
+                    path,
+                    f"Unexpected heading char ({line[0]}) on line {i+1}. "
+                    f"Expected one of {' '.join(expected)}",
+                )
+            if len(line.strip()) != len(lines[i - 1].strip()):
+                lines[i] = (line[0] * len(lines[i - 1].strip())) + "\n"
+                print(
+                    f"UPDATE: {path} | Matching section mark to title length "
+                    f"on line {i+1}"
+                )
+            current_heading_level = HEADING_LEVELS.index(line[0])
+    return lines
+
+
+def check_keyword_text_alignment(path: str, req: RequirementDirective):
+    if not req.keyword:
+        return req
+    keyword = f"**{req.keyword}**"
+    if not any(keyword in line for line in req.content):
+        warn(path, f"Keyword is {req.keyword}, but {keyword} not in requirement", req)
+
+
+if __name__ == "__main__":
+    print("Valid Versions")
+    print("-----------------------")
+    print("\n".join(VALID_VERSIONS))
+    print()
+    print("Valid Keywords")
+    print("-----------------------")
+    print("\n".join(VALID_KEYWORDS))
+    print()
+    print("Valid Targets")
+    print("-----------------------")
+    print("\n".join(VALID_TARGETS))
+    print()
+    print("Valid Validation Modes")
+    print("-----------------------")
+    print("\n".join(VALID_VALIDATION_MODES))
+    print()
+    print("Check-up Report")
+    print("-" * 100)
+    repository = RequirementRepository()
+    visitor = RequirementVisitor(
+        req_visitors=[
+            MetadataFixer(repository),
+            MetadataValidator(repository),
+            check_keyword_text_alignment,
+        ],
+        post_processors=[check_section_headers],
+    )
+    visitor.process(THIS_DIR / "docs")
 
 
 
 VNF Devops
----------------------
+----------
 
 This section includes guidelines for VNF providers to ensure that a Network
 Cloud Service Provider’s operations personnel have a common and
 
 that will be introduced.
 
 ONAP VNF Modularity
-^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^
 
 ONAP supports a modular Heat Orchestration Template design pattern,
 referred to as *VNF Modularity.* With this approach, a single VNF may be
 template.
 
 Suggested Patterns for Modular VNFs
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 There are numerous variations of VNF modularity. Below are two suggested
 usage patterns.
 options.
 
 Modularity Rules
-^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^
 
 There are some rules to follow when building modular VNF templates:
 
 
 
 
 VNF Resiliency
--------------------------
+--------------
 
 The VNF is responsible for meeting its resiliency goals and must factor
 in expected availability of the targeted virtualization environment.
 Below are more detailed resiliency requirements for VNFs.
 
 All Layer Redundancy
-^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^
 
 Design the VNF to be resilient to the failures of the underlying
 virtualized infrastructure (Network Cloud). VNF design considerations
     and evacuate for rollback or back out mechanism.
 
 Minimize Cross Data-Center Traffic
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Avoid performance-sapping data center-to-data center replication delay
 by applying techniques such as caching and persistent transaction paths
     across multiple data centers to avoid cross data center traffic.
 
 Application Resilient Error Handling
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Ensure an application communicating with a downstream peer is equipped
 to intelligently handle all error conditions. Make sure code can handle
     location can take over traffic and process service requests.
 
 System Resource Optimization
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Ensure an application is using appropriate system resources for the task
 at hand; for example, do not use network or IO operations inside
     to not prevent use of these assets by other entities.
 
 Application Configuration Management
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Leverage configuration management audit capability to drive conformity
 to develop gold configurations for technologies like Java, Python, etc.
     to be bounced so that the VNF availability is not effected.
 
 Intelligent Transaction Distribution & Management
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Leverage Intelligent Load Balancing and redundant components (hardware
 and modules) for all transactions, such that at any point in the
     is able to control its load against the VNF.
 
 Deployment Optimization
-^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^
 
 Reduce opportunity for failure, by human or by machine, through smarter
 deployment practices and automation. This can include rolling code
     not met.
 
 Monitoring & Dashboard
-^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^
 
 Promote dashboarding as a tool to monitor and support the general
 operational health of a system. It is critical to the support of the
     development of the VNF.
 
 Virtual Function - Container Recovery Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 As part of life cycle management, for Cloud environment, VNFs need to
 support a set of basic recovery capabilities to maintain the health
 
 
 
 VNF Security
-----------------------
+------------
 
 The objective of this section is to provide the key security
 requirements that need to be met by VNFs. The security requirements are
    requirements associated with data protection.
 
 VNF General Security Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 This section provides details on the VNF general security requirements
 on various security areas such as user access control, network security,
    are secure. All non-compliances with the benchmarks MUST be documented.
 
 VNF Identity and Access Management Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 The following security requirements for logging, identity, and access
 management need to be met by the solution in a virtual environment:
 
 
 VNF API Security Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 This section covers API security requirements when these are used by the
 VNFs. Key security areas covered in API security are Access Control,
     should be tested for spoofed MIME types.
 
 VNF Security Analytics Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 This section covers VNF security analytics requirements that are mostly
 applicable to security monitoring. The VNF Security Analytics cover the
    elevated privileges.
 
 VNF Data Protection Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 This section covers VNF data protection requirements that are mostly
 applicable to security monitoring.
 
 
 VNF Cryptography Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 This section covers VNF cryptography requirements that are mostly
 applicable to encryption or protocol meethods.
 
 .. _General Guidelines for Heat:
 
 General Guidelines for Heat
-----------------------------
+---------------------------
 
 This section contains general Heat Orchestration Template guidelines
 and requirements.
 
 Heat Template Compliance
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^
 
 The Heat Orchestration Template requirements with RFC 2119
 keywords **MUST** and **MUST NOT** can be validated against a set of Heat
 
 
 YAML Format
-^^^^^^^^^^^^^^
+^^^^^^^^^^^
 
 .. req::
     :id: R-95303
 
 .. _ONAP Heat Cinder Volumes:
 
 ONAP Heat Cinder Volumes
-----------------------------
+------------------------
 
 Cinder Volumes are created with the heat resource OS::Cinder::Volume.
 
     :id: R-270358
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Cinder Volume Template **MUST**
     contain either
       an ``OS::Cinder::Volume`` resource
 
 Optional Property availability_zone
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. req::
     :id: R-25190
 ``availability_zone_{index}``).
 
 Optional Property volume_type
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 OpenStack supports multiple volume types. If the ``OS::Cinder::Volume``
 optional property ``volume_type`` is not specified, the OpenStack default
 are no requirements on the parameter naming convention.
 
 Cinder Volume Examples
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^
 
 *Examples: Volume Template*
 
 
 .. _ONAP Heat High Availability:
 
 ONAP Heat High Availability
-------------------------------
+---------------------------
 
 VNF/VM parameters may include availability zone IDs for VNFs that
 require high availability.
 
 .. _ONAP Heat Networking:
 
 ONAP Heat Networking
------------------------
+--------------------
 
 ONAP defines two types of networks: External Networks and Internal Networks.
 
 External Networks
-^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^
 
 An ONAP external network is created by using VID or by invoking SO directly
 to instantiate the network.
     :id: R-16968
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Templates **MUST NOT** include heat
     resources to create an ONAP external network.
     :id: R-57424
     :target: VNF
     :keyword: MAY
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     A VNF's port connected to an ONAP external network **MAY**
     use the port for the purpose of
     :id: R-99794
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     An ONAP external network **MUST** have one subnet. An external network
     **MAY** have more than one subnet.
 provides additional details.
 
 Internal Networks
-^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^
 
 An ONAP internal network is created by the VNF's Heat Orchestration Template.
 That is, the VNF's Heat Orchestration Template contains the heat resources to
     :id: R-35666
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     If a VNF has an ONAP internal network, the VNF's Heat Orchestration
     Template **MUST** include the heat resources to create the
     :id: R-52425
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     A VNF's port connected to an ONAP internal network **MUST**
     use the port for the purpose of reaching VMs in the same VNF.
 
+.. req::
+    :id: R-41542
+    :target: VNF
+    :keyword: MUST
+    :introduced: guilin
+    :validation_mode: none
+
+    A VNF's port connected to fdfsafd ONAP internal network **MUST**
+    use the port for the purpose of reaching VMs in the same VNF.
+
 .. req::
     :id: R-46461
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     A VNF's port connected to an ONAP internal network **MUST NOT**
     use the port
     :id: R-16241
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's ONAP internal network **MUST** have one subnet.
     A VNF's ONAP internal network **MAY** have more than one subnet.
     :id: R-22688
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When a VNF's Heat Orchestration Template creates an ONAP internal network
     (per the ONAP definition, see Requirements R-52425 and R-46461
 
 .. _ONAP Heat Orchestration Template Format:
 
 ONAP Heat Orchestration Template Format
-------------------------------------------------
+---------------------------------------
 As stated above, Heat Orchestration templates must be defined in YAML.
 
 .. req::
     :id: R-92635
+    :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: casablanca
-    :target: VNF
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template **MUST** be compliant with the
     OpenStack Template Guide.
 https://docs.openstack.org/heat/latest/template_guide/index.html#top.
 
 Heat Orchestration Template Structure
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Heat Orchestration template structure follows the following format, as
 defined by OpenStack at
 
 
 heat_template_version
-~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~
 
 
 .. req::
     :id: R-27078
-    :keyword: MUST
     :target: VNF
+    :keyword: MUST
     :validation_mode: static
 
     A VNF's Heat Orchestration template **MUST** contain the
 is supported by the OpenStack environment.
 
 description
-~~~~~~~~~~~~
+~~~~~~~~~~~
 
 
 .. req::
     :id: R-39402
+    :target: VNF
     :keyword: MUST
     :validation_mode: static
-    :target: VNF
 
     A VNF's Heat Orchestration Template **MUST** contain the
     section ``description:``.
 
 parameter_groups
-~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~
 
 A VNF Heat Orchestration template may
 contain the section "parameter_groups:".
 
 parameters
-~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~
 
 .. req::
     :id: R-35414
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF Heat Orchestration's template
     **MUST** contain the section ``parameters:`` with at least one
     :id: R-90279
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF Heat Orchestration's template's parameter **MUST** be used
 
 maybe declared but not used in a resource.
 
 <param name>
-+++++++++++++
+++++++++++++
 
 The name of the parameter.
 
     :id: R-11441
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's parameter type **MUST** be one of
     the following values:
     * ``boolean``
 
 label
-++++++
++++++
 
 
 .. req::
     contain the attribute ``label:``.
 
 description
-+++++++++++++
++++++++++++
 
 
 .. req::
 ONAP implementation requires this attribute.
 
 default
-++++++++
++++++++
 
 
 .. req::
     :id: R-90526
     :target: VNF
-    :keyword: MUST
+    :keyword: MUST NOT
     :validation_mode: static
 
     A VNF Heat Orchestration Template parameter declaration **MUST NOT**
     :id: R-26124
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     If a VNF Heat Orchestration Template parameter has a default value,
     it **MUST** be enumerated in the environment file.
 ONAP implementation prohibits the use of this attribute.
 
 hidden
-+++++++
+++++++
 
 
 .. req::
 This attribute can be used to hide passwords specified as parameters.
 
 constraints
-++++++++++++
++++++++++++
 
 The parameter attribute ``constraints:`` is an OpenStack optional attribute
 that defines a list of constraints to apply to the parameter.
     :id: R-88863
     :target: VNF
     :keyword: MAY
-    :validation_mode: none
     :updated: dublin
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's parameter defined
     in a non-nested YAML file as type
     :id: R-00011
     :target: VNF
     :keyword: SHOULD NOT
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's parameter defined
     in a nested YAML file
       - ...
 
 immutable
-++++++++++++
++++++++++
 
 
 .. req::
 value is changed.  This attribute ``immutable`` defaults to ``false``.
 
 tags
-++++++++++++
+++++
 
 .. req::
     :id: R-225891
-    :keyword: MAY
     :target: VNF
+    :keyword: MAY
     :introduced: el alto
 
     A VNF's Heat Orchestration Template parameter declaration
 .. _resources:
 
 resources
-~~~~~~~~~~~~
+~~~~~~~~~
 
 .. req::
     :id: R-23663
     :id: R-23664
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration template's incremental
     module and volume module **MUST**
 
 
 resource ID
-+++++++++++++
++++++++++++
 
 .. req::
     :id: R-75141
 Orchestration Templates the compose the VNF.
 
 type
-+++++
+++++
 
 The resource attribute ``type`` is an OpenStack required attribute that
 defines the resource type, such as ``OS::Nova::Server`` or
     **MUST NOT** reference a HTTP-based Nested YAML file.
 
 properties
-+++++++++++++
+++++++++++
 
 The resource attribute ``properties`` is an OpenStack optional attribute that
 provides a list of resource-specific properties. The property value can
     :id: R-10834
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: el alto
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template resource attribute ``property:``
     **MUST NOT** use more than two levels of nested ``get_param`` intrinsic
 
 
 metadata
-++++++++++
+++++++++
 
 The resource attribute ``metadata`` is an OpenStack optional attribute.
 
     :id: R-67386
     :target: VNF
     :keyword: MAY
-    :validation_mode: static
     :introduced: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource **MAY** declare the
     attribute ``metadata``.
 
 depends_on
-+++++++++++
+++++++++++
 
 The resource attribute ``depends_on`` is an OpenStack optional attribute.
 See `Section <https://docs.openstack.org/developer/heat/template_guide/hot_spec.html#hot-spec-resources-dependencies>`__ 9.7 for additional details.
     attribute ``depends_on:``.
 
 update_policy
-++++++++++++++
++++++++++++++
 
 
 .. req::
     attribute ``update_policy:``.
 
 deletion_policy
-+++++++++++++++++++
++++++++++++++++
 
 
 .. req::
 deleting a resource from the stack.
 
 external_id
-++++++++++++
++++++++++++
 
 
 .. req::
 
 
 condition
-+++++++++++
++++++++++
 
 The resource attribute ``condition`` is an OpenStack optional attribute.
 
 outputs
-~~~~~~~~~
+~~~~~~~
 
 
 .. req::
 :ref:`ONAP Output Parameter Names` for additional details.
 
 Environment File Format
-^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^
 
 A VNF's Heat Orchestration Template's environment file is a yaml text file.
 (https://docs.openstack.org/developer/heat/template_guide/environment.html)
     :id: R-86285
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration template **MUST** have a
     corresponding environment file.
     :id: R-03324
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration template's Environment File **MUST**
     contain the ``parameters:`` section.
 
 .. _ONAP Heat Orchestration Templates Overview:
 
 ONAP Heat Orchestration Templates Overview
------------------------------------------------
+------------------------------------------
 
 ONAP supports a modular Heat Orchestration Template design pattern,
 referred to as *VNF Modularity.*
 .. _heat_onap_vnf_modularity_overview:
 
 ONAP VNF Modularity Overview
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 .. req::
     :id: R-11200
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Cinder Volume Module, when it exists, **MUST** be 1:1
     with a Base module or Incremental module.
     :id: R-38474
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Base Module **MUST** have a corresponding Environment File.
 
     :id: R-81725
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Incremental Module **MUST** have a corresponding Environment File
 
     :id: R-53433
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Cinder Volume Module **MUST** have a corresponding environment file
 
 that will be introduced.
 
 Nested Heat Orchestration Templates Overview
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 ONAP supports nested Heat Orchestration Templates per OpenStack
 specifications.
 See :ref:`Nested Heat Templates` for additional details.
 
 ONAP Heat Orchestration Template Filenames
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 In order to enable ONAP to understand the relationship between Heat
 files, the following Heat file naming convention must be utilized.
     :id: R-81339
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: el alto
+    :validation_mode: static
 
     A VNF Heat Orchestration Template's Base Module file name **MUST** include
     case insensitive 'base' in the filename and
     :id: R-87247
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: el alto
+    :validation_mode: static
 
     VNF Heat Orchestration Template's Incremental Module file name
     **MUST** contain only alphanumeric characters and underscores
     :id: R-82732
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF Heat Orchestration Template's Cinder Volume Module **MUST**
     be named identical to the base or incremental module it is supporting with
 
 .. req::
     :id: R-589037
+    :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: dublin
     :updated: el alto
+    :validation_mode: static
 
     A VNF Heat Orchestration Template's Cinder Volume Module ``resources:``
     section
     :id: R-31141
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     VNF Heat Orchestration Template's Cinder Volume Module's Environment File
     **MUST** be named identical to the VNF Heat Orchestration Template's
     :id: R-76057
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: el alto
+    :validation_mode: static
 
     VNF Heat Orchestration Template's Nested YAML file name **MUST** contain
     only alphanumeric characters and underscores '_' and
 .. _Output Parameters:
 
 Output Parameters
-^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^
 
 The output parameters are parameters defined in the output section of a
 Heat Orchestration Template. The ONAP output parameters are subdivided
 3. ONAP Predefined Output Parameters.
 
 ONAP Base Module Output Parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 ONAP Base Module Output Parameters are declared in the ``outputs:`` section
 of the VNF's Heat Orchestration Template's Base Module. A Base Module Output
     :id: R-52753
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: dublin
+    :validation_mode: none
 
     VNF's Heat Orchestration Template's Base Module's output parameter's
     name and type **MUST** match the VNF's Heat Orchestration Template's
     :id: R-22608
     :target: VNF
     :keyword: SHOULD NOT
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     When a VNF's Heat Orchestration Template's Base Module's output
     parameter is declared as an input parameter in an Incremental Module,
     :id: R-89913
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Cinder Volume Module Output
     Parameter(s)
     :id: R-07443
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     A VNF's Heat Orchestration Templates' Cinder Volume Module Output
     Parameter's name and type **MUST** match the input parameter name and type
     :id: R-20547
     :target: VNF
     :keyword: SHOULD NOT
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     When an ONAP Volume Module Output Parameter is declared as an input
     parameter in a base or an incremental module Heat Orchestration
 :ref:`ONAP Output Parameter Names` and :ref:`ONAP Heat Cinder Volumes`.
 
 ONAP Predefined Output Parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 ONAP will look for a small set of pre-defined Heat output parameters to
 capture resource attributes for inventory in ONAP. These output parameters
 :ref:`OAM Management IP Addresses`.
 
 Support of heat stack update
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 ONAP does not support the use of heat stack-update command for scaling
 (growth/de-growth).
 image upgrades.
 
 Scope of a Heat Orchestration Template
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 .. req::
 
 .. req::
     :id: R-511776
+    :target: VNF
     :keyword: MUST
     :introduced: dublin
     :validation_mode: static
 
 .. req::
     :id: R-348813
-    :keyword: MUST
-    :validation_mode: static
+    :target: VNF HEAT PACKAGE
+    :keyword: MUST NOT
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's ZIP file **MUST NOT** include
     a binary image file.
 
 .. _ONAP Heat Post Orchestration & VNF Configuration:
 
 ONAP Heat Post Orchestration & VNF Configuration
---------------------------------------------------
+------------------------------------------------
 
 Heat templates should contain a minimum amount of post-orchestration
 configuration data. For instance, *do not* embed complex user-data
 
     :id: R-02164
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When a VNF's Heat Orchestration Template's Contrail resource
     ``OS::ContrailV2::InstanceIp`` and/or
     :id: R-92193
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Contrail resource
     ``OS::ContrailV2::InstanceIp`` and/or
     :id: R-28222
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     If a VNF's Heat Orchestration Template
     ``OS::ContrailV2::InterfaceRouteTable`` resource
     :id: R-19756
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     If a VNF's Heat Orchestration Template
     ``OS::ContrailV2::InterfaceRouteTable`` resource
     :id: R-76682
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     If a VNF's Heat Orchestration Template
     ``OS::ContrailV2::InterfaceRouteTable`` resource
 
 .. req::
     :id: R-100000
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's
     resource ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 .. req::
     :id: R-100010
+    :target: VNF
     :keyword: MUST
     :introduced: dublin
-    :validation_mode: static
-    :target: VNF
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 .. req::
     :id: R-100020
-    :keyword: MUST NOT
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST NOT
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 .. req::
     :id: R-100030
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 .. req::
     :id: R-100040
-    :keyword: MUST NOT
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST NOT
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 .. req::
     :id: R-100050
+    :target: VNF
     :keyword: MUST
     :introduced: dublin
-    :validation_mode: static
-    :target: VNF
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 .. req::
     :id: R-100060
+    :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :introduced: dublin
-    :target: VNF
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 .. req::
     :id: R-100070
+    :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: dublin
-    :target: VNF
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 .. req::
     :id: R-100080
+    :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :introduced: dublin
-    :target: VNF
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 .. req::
     :id: R-100090
+    :target: VNF
     :keyword: MUST
     :introduced: dublin
-    :validation_mode: static
-    :target: VNF
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 .. req::
     :id: R-100100
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 .. req::
     :id: R-100110
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 .. req::
     :id: R-100120
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 .. req::
     :id: R-100130
+    :target: VNF
     :keyword: MUST
     :introduced: dublin
-    :validation_mode: static
-    :target: VNF
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
 
 .. req::
     :id: R-100140
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 .. req::
     :id: R-100150
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
 
 .. req::
     :id: R-100160
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
 
 .. req::
     :id: R-100170
-    :keyword: MUST NOT
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST NOT
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp``
 
 .. req::
     :id: R-100180
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp``
 
 .. req::
     :id: R-100190
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's
     resource ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 .. req::
     :id: R-100200
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's
     resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 .. req::
     :id: R-100210
-    :keyword: MUST NOT
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST NOT
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 .. req::
     :id: R-100220
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's
     resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
 
 .. req::
     :id: R-100230
-    :keyword: MUST NOT
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST NOT
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 .. req::
     :id: R-100240
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When
 
 
 .. req::
     :id: R-100250
-    :keyword: MUST NOT
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST NOT
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 .. req::
     :id: R-100260
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When
 
 
 .. req::
     :id: R-100270
-    :keyword: MUST NOT
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST NOT
     :introduced: dublin
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
 
 .. req::
     :id: R-100280
-    :keyword: MUST NOT
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST NOT
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     If a VNF's Heat Orchestration Template's resource
     ``OS::ContrailV2::VirtualMachineInterface``
     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
-    
+
     parameter
     **MUST NOT** be enumerated in the
     VNF's Heat Orchestration Template's Environment File.
 
 .. req::
     :id: R-100310
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's resource
     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an ONAP external
     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
-    
+
     parameter name **MUST** follow the naming convention
 
     * ``{vm-type}_{network-role}_floating_ip``
 
 .. req::
     :id: R-100330
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's resource
     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an ONAP
     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
 
     ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
-   
+
     parameter name **MUST** follow the naming convention
 
     * ``{vm-type}_{network-role}_floating_v6_ip``
 
 .. req::
     :id: R-100350
-    :keyword: MUST NOT
-    :introduced: dublin
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
+    :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's resource
     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
 
 .. req::
     :id: R-100360
+    :target: VNF
     :keyword: MUST
     :introduced: dublin
-    :validation_mode: static
-    :target: VNF
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
 
 .. req::
     :id: R-100370
+    :target: VNF
     :keyword: MUST
     :introduced: dublin
-    :validation_mode: static
-    :target: VNF
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
 
 (See https://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Neutron::Port)
 
 Introduction
-^^^^^^^^^^^^^
+^^^^^^^^^^^^
 
 Four properties of the resource ``OS::Neutron::Port`` must follow the ONAP
 naming convention. The four properties are:
     :id: R-45602
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     If a VNF's Port is attached to a network (internal or external)
     and the port's IP addresses are cloud assigned by OpenStack's DHCP
     :id: R-48880
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     If a VNF's Port is attached to an ONAP external network (per the ONAP
     definition, see Requirement R-57424 and R-16968) and the port's
     :id: R-70964
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     If a VNF's Port is attached to an ONAP internal network
     (per the ONAP definition, see Requirements R-52425 and R-46461 and R-35666)
     :id: R-681859
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: dublin
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Neutron::Port`` resource's
 
     :id: R-18008
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
     property ``network`` parameter **MUST** be declared as type: ``string``.
     :id: R-62983
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP external network (per the
     :id: R-86182
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port``
     :id: R-29872
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
     property ``network``
     :id: R-34037
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's
     resource ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-40971
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP external network (per the
     :id: R-39841
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-04697
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP external network (per the
     :id: R-98905
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-71577
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP external network (per the
     :id: R-87123
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-23503
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP external network (per the
     :id: R-93030
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-78380
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP internal network (per the
     :id: R-28795
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-85235
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP internal network (per the
     :id: R-90206
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-27818
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP internal network (per the
     :id: R-97201
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-29765
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP internal network (per the
     :id: R-98569
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-62590
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
     property ``fixed_ips``
     :id: R-93496
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
     property ``fixed_ips``
     :id: R-38236
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's
     resource ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-62802
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's
     resource ``OS::Neutron::Port`` is attaching
     :id: R-83677
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
 
     The VNF's Heat Orchestration Template's Resource
     :id: R-15287
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's
     resource ``OS::Neutron::Port`` is attaching
     :id: R-80829
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-84123
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When
 
     :id: R-69634
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-76160
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When
 
     :id: R-22288
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` property ``fixed_ips``
     :id: R-83412
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     If a VNF's Heat Orchestration Template's resource
     ``OS::Neutron::Port`` is attaching to an ONAP external network (per the
     :id: R-41492
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's resource
     ``OS::Neutron::Port`` is attaching to an ONAP external network
     :id: R-35735
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's resource
     ``OS::Neutron::Port`` is attaching to an ONAP external network
     :id: R-41493
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: dublin
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's resource
     ``OS::Neutron::Port`` is attaching to an ONAP external network
     :id: R-05257
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's **MUST NOT**
     contain the Resource ``OS::Neutron::FloatingIP``.
     :id: R-76449
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's **MUST NOT**
     contain the Resource ``OS::Neutron::FloatingIPAssociation``.
 
 .. req::
     :id: R-717227
+    :target: VNF
     :keyword: MUST
     :introduced: dublin
-    :validation_mode: static
-    :target: VNF
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP internal network (per the
 
 .. req::
     :id: R-805572
+    :target: VNF
     :keyword: MUST
     :introduced: dublin
-    :validation_mode: static
-    :target: VNF
     :updated: frankfurt
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource
     ``OS::Neutron::Port`` is attaching to an ONAP internal network (per the
 
 .. _Nova Server - Metadata Parameters:
 
 Resource: OS::Nova::Server Metadata Parameters
---------------------------------------------------------------------------------
+----------------------------------------------
 
 The ``OS::Nova::Server`` resource property ``metadata`` is an optional
 OpenStack property.
    OS::Nova::Server, metadata, environment_context, string, **MUST**, ONAP
 
 vnf_id
-^^^^^^^^^
+^^^^^^
 
 The ``OS::Nova::Server`` resource property ``metadata`` key/value pair
 ``vnf_id`` is an ONAP generated UUID that identifies the VNF.  The value
     :id: R-37437
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
     resource property ``metadata`` **MUST**
     :id: R-07507
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
     resource property
     :id: R-55218
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
     resource property
     :id: R-20856
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
     resource property
       description: Unique ID for this VNF instance
 
 vf_module_id
-^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^
 
 The OS::Nova::Server Resource ``metadata`` map value parameter ``vf_module_id``
 is an ONAP generated UUID that identifies the VF Module (e.g., Heat
     :id: R-71493
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` **MUST**
     :id: R-82134
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
     ``metadata`` key/value pair ``vf_module_id`` parameter **MUST**
     :id: R-98374
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
     ``metadata`` key/value pair ``vf_module_id`` parameter ``vf_module_id``
     :id: R-72871
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
     ``metadata`` key/value pair ``vf_module_id`` parameter ``vf_module_id``
 
 
 vnf_name
-^^^^^^^^^
+^^^^^^^^
 
 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter ``vnf_name``
 is the ONAP (SDN-C) generated alphanumeric name of the deployed VNF instance.
     :id: R-72483
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource property
     ``metadata`` **MUST** contain the key/value pair ``vnf_name`` and the
     :id: R-62428
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``vnf_name`` parameter **MUST**
     :id: R-44318
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``vnf_name``
     :id: R-36542
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``vnf_name`` parameter
       description: Unique name for this VNF instance
 
 vf_module_name
-^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^
 
 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter
 ``vf_module_name``
 
 .. req::
     :id: R-100400
+    :target: VNF
     :keyword: SHOULD
     :introduced: dublin
-    :target: VNF
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property metadata **SHOULD** contain the key/value pair ``vf_module_name``.
 
 .. req::
     :id: R-68023
-    :keyword: MUST
-    :validation_mode: static
     :target: VNF
+    :keyword: MUST
     :updated: dublin
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``vf_module_name``
     :id: R-39067
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property
     :id: R-15480
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property
     :id: R-80374
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
       description: Unique name for this VNF Module instance
 
 vm_role
-^^^^^^^^^
+^^^^^^^
 
 The ``OS::Nova::Server`` Resource ``metadata`` map value parameter ``vm_role``
 is a ``metadata`` tag that describes the role of the Virtual Machine.
     :id: R-95430
     :target: VNF
     :keyword: MAY
-    :validation_mode: none
     :updated: dublin
+    :validation_mode: none
 
     If a VNF's Heat Orchestration Template's ``OS::Nova::Server``
     resource property
     :id: R-67597
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``vm_role`` parameter ``vm_role``
     :id: R-86476
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``vm_role`` value **MUST**
           vm_role: { get_param: vm_role }
 
 Example vnf_id, vf_module_id, vnf_name, vf_module_name, vm_role
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 The example below depicts part of a Heat Orchestration Template that
 uses the five of the ``OS::Nova::Server`` resource
           vm_role: lb
 
 vf_module_index
-^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^
 
 
 .. req::
     :id: R-100410
+    :target: VNF
     :keyword: MAY
     :introduced: dublin
-    :target: VNF
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
     resource  property ``metadata`` **MAY**
 
 .. req::
     :id: R-50816
-    :keyword: MUST
     :target: VNF
-    :validation_mode: static
+    :keyword: MUST
     :updated: dublin
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server``
     resource  property ``metadata``
     :id: R-54340
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property
     :id: R-09811
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     :id: R-37039
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property
     :id: R-55306
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``vf_module_index`` **MUST NOT**
     :id: R-55307
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :introduced: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's parameter ``vf_module_index``
     **MUST NOT** be used for indexing an:
         fixed_ips: [ { "ip_address": {get_param: [ oam_vm_int_ctrl_ips, { get_param: vf_module_index} ]}}]
 
 workload_context
-^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^
 
 .. req::
     :id: R-47061
     :id: R-74978
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``workload_context``
     :id: R-34055
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``workload_context``
     :id: R-02691
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
           workload_context: {get_param: workload_context}
 
 environment_context
-^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^
 
 .. req::
     :id: R-88536
     :id: R-20308
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata`` key/value pair ``environment_context``
     :id: R-56183
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property ``metadata``key/value pair ``environment_context``
     :id: R-13194
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
     property
 
 
 
 Resource: OS::Nova::Server - Parameters
------------------------------------------------------------------------
+---------------------------------------
 
 The OS::Nova::Server resource manages the running virtual machine (VM)
 instance within an OpenStack cloud. (See
     :id: R-304011
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: casablanca
     :updated: el alto
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource's
 
     :id: R-901331
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property ``image`` value **MUST** be be obtained via a ``get_param``.
     :id: R-71152
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property
     :id: R-58670
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property
     :id: R-91125
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property
     :id: R-57282
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     Each VNF's Heat Orchestration Template's ``{vm-type}`` **MUST**
     have a unique parameter name for the ``OS::Nova::Server`` property
 .. _Property flavor:
 
 Property: flavor
-^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^
 
 
 .. req::
     :id: R-481670
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property ``flavor`` value **MUST** be be obtained via a ``get_param``.
     :id: R-50436
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property
     :id: R-45188
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource 'OS::Nova::Server' property
     ``flavor`` parameter name **MUST** follow the naming convention
     :id: R-69431
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property
     :id: R-40499
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     Each VNF's Heat Orchestration Template's ``{vm-type}`` **MUST**
     have a unique parameter name for the ``OS::Nova::Server`` property
          description: {vm-type} flavor
 
 Property: Name
-^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^
 
 
 .. req::
     :id: R-663631
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property ``name`` value **MUST** be be obtained via a ``get_param``.
     :id: R-51430
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property
     :id: R-54171
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property ``name`` parameter is defined as a ``string``,
     :id: R-87817
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property ``name`` parameter is defined as a ``comma_delimited_list``,
     :id: R-22838
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property
         ...
 
 Contrail Issue with Values for OS::Nova::Server Property Name
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
 .. req::
     :id: R-98450
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: el alto
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's base module or incremental module
     resource ``OS::Nova::Server``
     :id: R-23311
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: el alto
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's base module or incremental module
     resource ``OS::Nova::Server`` property
     :id: R-59568
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property
     :id: R-256790
     :target: VNF
     :keyword: MAY
-    :validation_mode: none
     :introduced: el alto
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     property ``availability_zone`` parameter name **MAY** change when
     resources in the Heat Orchestration Template.
 
 Example
-^^^^^^^^^^^
+^^^^^^^
 
 The example below depicts part of a Heat Orchestration Template that
 uses the four ``OS::Nova::Server`` properties discussed in this section.
   . . .
 
 Boot Options
-^^^^^^^^^^^^^^^
+^^^^^^^^^^^^
 
 
 .. req::
     :id: R-83706
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     When a VNF's Heat Orchestration Template's Virtual Machine
     (i.e., ``OS::Nova::Server`` resource) boots from an image, the
     :id: R-69588
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     When a VNF's Heat Orchestration Template's Virtual Machine
     (i.e., ``OS::Nova::Server`` Resource) boots from Cinder Volume, the
 
 .. _ONAP Output Parameter Names:
 
 ONAP Output Parameter Names
--------------------------------------------------------------
+---------------------------
 
 ONAP defines three types of Output Parameters as detailed in
 :ref:`Output Parameters`.
 
 ONAP Base Module Output Parameters:
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 ONAP Base Module Output Parameters do not have an explicit naming
 convention.
     :id: R-97726
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Base Module Output Parameter names
     **MUST** contain ``{vm-type}`` and/or ``{network-role}`` when appropriate.
 
 ONAP Volume Template Output Parameters:
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. req::
     :id: R-88524
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Volume Template
     Output Parameter names
     **MUST** contain ``{vm-type}`` when appropriate.
 
 Predefined Output Parameters
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 ONAP currently defines one predefined output parameter the OAM
 Management IP Addresses.
 .. _OAM Management IP Addresses:
 
 OAM Management IP Addresses
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 A VNF may have a management interface for application controllers to
 interact with and configure the VNF. Typically, this will be via a
     :id: R-18683
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     If a VNF has one IPv4 OAM Management IP Address and the
     IP Address needs to be inventoried in ONAP's A&AI
     :id: R-94669
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     If a VNF has one IPv6 OAM Management IP Address and the
     IP Address needs to be inventoried in ONAP's A&AI
     :id: R-56287
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     If the VNF's OAM Management IP Address is assigned by ONAP SDN-C and
     assigned in the VNF's Heat Orchestration Template's via a heat resource
     :id: R-48987
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     If the VNF's OAM Management IP Address is cloud assigned and
     and the OAM IP Address is required to be inventoried in ONAP A&AI,
 
     :id: R-54517
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     When a VNF's Heat Orchestration Template's resource is associated with
     a single ``{vm-type}``, the Resource ID **MUST** contain the
     :id: R-96482
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     When a VNF's Heat Orchestration Template's resource is associated
     with a single ONAP external network, the Resource ID **MUST** contain the
     :id: R-98138
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     When a VNF's Heat Orchestration Template's resource is associated with a
     single ONAP internal network (per the ONAP definition, see
     :id: R-82115
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     When a VNF's Heat Orchestration Template's resource is associated with a
     single ``{vm-type}``
     :id: R-82551
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     When a VNF's Heat Orchestration Template's resource is associated with a
     single ``{vm-type}`` and a single ONAP internal network (per the ONAP
     :id: R-67793
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     When a VNF's Heat Orchestration Template's resource is associated
     with more than one ``{vm-type}`` and/or more than one ONAP internal network
     :id: R-11690
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     When a VNF's Heat Orchestration Template's Resource ID contains an
     ``{index}``, the ``{index}`` is a numeric value that **MUST** start at
 in the following sections.
 
 OS::Cinder::Volume
-~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-87004
     * ``{index}`` starts at zero and increments by one (as described in R-11690)
 
 OS::Cinder::VolumeAttachment
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-86497
     * ``{index}`` starts at zero and increments by one (as described in R-11690)
 
 OS::Heat::CloudConfig
-~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-04747
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource ``OS::Heat::CloudConfig``
     Resource ID **MUST** contain the ``{vm-type}``.
     :id: R-30804
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::Heat::MultipartMime``
     * ``RMM`` signifies that it is the Resource Multipart Mime
 
 OS::Heat::ResourceGroup
-~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~
 
 There is no mandatory naming convention for
 the resource 'OS::Heat::ResourceGroup'.
     :id: R-08975
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource ``OS::Heat::SoftwareConfig``
     Resource ID **MUST** contain the ``{vm-type}``.
     :id: R-25720
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Net``
     Resource ID **MUST** use the naming convention
     Heat Orchestration Template.
 
 OS::Neutron::Port
-~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~
 
 
 .. req::
     :id: R-20453
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
     that is attaching to an ONAP external network (per the ONAP definition,
     :id: R-26351
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
     that is attaching to an ONAP internal network
     :id: R-27469
     :target: VNF
     :keyword: SHOULD
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
     that is creating a *Reserve Port* with an IPv4 address, the
     :id: R-68520
     :target: VNF
     :keyword: SHOULD
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
     that is creating a *Reserve Port* with an IPv6 address, the
     :id: R-29751
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
     Resource ID
     * ``{vm-type}_servergroup``
 
 Contrail Heat Resources Resource ID Naming Convention
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Some Contrail Heat Resources Resource IDs
 have mandatory or suggested naming conventions. They are provided
 
 
 OS::ContrailV2::InstanceIp
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-53310
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
 
     A VNF's Heat Orchestration Template's Resource
     :id: R-46128
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` Resource ID
     :id: R-62187
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` Resource ID
     :id: R-87563
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InstanceIp`` Resource ID
     :id: R-81214
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::InterfaceRouteTable``
     * ``RIRT`` signifies that it is the Resource Interface Route Table
 
 OS::ContrailV2::NetworkIpam
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-30753
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::NetworkIpam``
     :id: R-20065
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::PortTuple``
     * ``RPT`` signifies that it is the Resource Port Tuple
 
 OS::ContrailV2::ServiceHealthCheck
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-76014
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::ServiceHealthCheck``
     * ``RIGHT`` is used if the Service Health Check is on the right interface
 
 OS::ContrailV2::ServiceTemplate
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-16437
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::ServiceTemplate``
       (as described in R-11690).
 
 OS::ContrailV2::VirtualMachineInterface
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-96253
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::VirtualMachineInterface`` Resource ID
     :id: R-50468
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::VirtualMachineInterface`` Resource ID
 
 
 OS::ContrailV2::VirtualNetwork
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-99110
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: frankfurt
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Resource
     ``OS::ContrailV2::VirtualNetwork`` Resource ID **MUST** use the naming
 
 .. Copyright 2017 AT&T Intellectual Property.  All rights reserved.
 
 Resource Property "name"
-----------------------------
+------------------------
 
 The parameter naming convention of the property ``name`` for the resource
 ``OS::Nova::Server`` has been defined in
     :id: R-85734
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     If a VNF's Heat Orchestration Template contains the property ``name``
     for a non ``OS::Nova::Server`` resource, the intrinsic function
     :id: R-99812
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A value for VNF's Heat Orchestration Template's property ``name``
     for a non ``OS::Nova::Server`` resource **MUST NOT** be declared
   . . . .
 
 Contrail Issue with Values for the Property Name
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 .. req::
 
 .. Copyright 2017 AT&T Intellectual Property.  All rights reserved.
 
 Suggested Naming Convention for Common Parameters
-----------------------------------------------------------------------------------------------------------
+-------------------------------------------------
 
 Many VNFs use the parameters in the table below are used in user_data.
 The table below provides a suggested naming convention for these common
 parameters.
 
 Netmask
-^^^^^^^^^^^^^^^^^^
+^^^^^^^
 
 .. csv-table:: **Table 8: Suggested Naming Convention for Common Parameters:  Netmask**
    :header: Parameter Name,Parameter Type,Notes
    int_{network-role}_v6_subnet_<index>_netmask, string,
 
 CIDR
-^^^^^^^^^^^^^^^^^^
+^^^^
 
 .. csv-table:: **Table 9: Suggested Naming Convention for Common Parameters:  CIDR**
    :header: Parameter Name,Parameter Type,Notes
    int_<network-role>_v6_subnet_<index>_cidr, string,
 
 Default Gateway
-^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^
 
 .. csv-table:: **Table 10: Suggested Naming Convention for Common Parameters:  Default Gateway**
    :header: Parameter Name,Parameter Type,Notes
    {network-role}_v6_subnet_<index>_default_gateway, string,
 
 DCAE Collector IP Address
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. csv-table:: **Table 11: Suggested Naming Convention for Common Parameters:  DCAE Collector Address**
    :header: Parameter Name,Parameter Type,Notes
    dcae_collector_v6_ip_<index>, string,
 
 NTP Server IP Address
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^
 
 .. csv-table:: **Table 12: Suggested Naming Convention for Common Parameters:  NTP Server IP Address**
    :header: Parameter Name,Parameter Type,Notes
    ntp_v6_ip_<index>, string,
 
 DNS
-^^^^^^^^^^^^^^^^^^
+^^^
 
 .. csv-table:: **Table 13: Suggested Naming Convention for Common Parameters:  DCAE Collector Address**
    :header: Parameter Name,Parameter Type,Notes
    dns_{network-role}_v6_ip_<index>, string,
 
 Security Group
-^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^
 
 .. csv-table:: **Table 14: Suggested Naming Convention for Common Parameters:  Security Group**
    :header: Parameter Name,Parameter Type,Notes
 
 .. Copyright 2017 AT&T Intellectual Property.  All rights reserved.
 
 {network-role}
------------------------------
+--------------
 
 .. req::
     :id: R-69014
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     When a VNF's port connects to an ONAP internal network or ONAP
     external network,
     :id: R-05201
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: dublin
+    :validation_mode: none
 
     When a VNF connects to two or more unique networks, each
     network **MUST** be assigned a unique ``{network-role}``
     :id: R-21330
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Resource property parameter that is
     associated with an ONAP
     :id: R-11168
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Resource ID that is associated with
     an ONAP external network **MUST** include the ``{network-role}`` as part
     :id: R-84322
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Resource property parameter that
     is associated with an ONAP internal network (per the ONAP definition, see
     :id: R-96983
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: frankfurt
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Resource ID that is associated
     with an ONAP internal network (per the ONAP definition, see Requirements
     :id: R-26506
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``{network-role}`` **MUST** contain
     only alphanumeric characters and/or underscores '_' and
     :id: R-00977
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``{network-role}``
     **MUST NOT** be a substring of ``{vm-type}``.
     :id: R-58424
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's use of ``{network-role}``
     in all Resource property parameter names **MUST** be the same case.
     :id: R-21511
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: casablanca
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's use of ``{network-role}``
     in all Resource IDs **MUST** be the same case.
 
 
 
 {vm-type}
------------------
+---------
 
 
 .. req::
     :id: R-01455
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: dublin
+    :validation_mode: static
 
     When a VNF's Heat Orchestration Template creates a Virtual Machine
     (i.e., ``OS::Nova::Server``),
     :id: R-98407
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``{vm-type}`` **MUST** contain only
     alphanumeric characters and/or underscores '_' and **MUST NOT**
     :id: R-48067
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``{vm-type}`` **MUST NOT** be a
     substring
     :id: R-32394
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's use of ``{vm-type}`` in all Resource
     property parameter names **MUST** be the same case.
     :id: R-46839
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's use of ``{vm-type}``
     in all Resource IDs **MUST** be the same case.
 
 .. _ONAP Heat Support of Environment Files:
 
 ONAP Heat Support of Environment Files
------------------------------------------
+--------------------------------------
 
 
 .. req::
     :id: R-599443
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: dublin
+    :validation_mode: static
 
     A parameter enumerated in a
     VNF's Heat Orchestration Template's environment file **MUST** be declared
 
 .. _ONAP Heat Heat Template Constructs:
 
 ONAP Heat Heat Template Constructs
---------------------------------------
+----------------------------------
 
 .. _Nested Heat Templates:
 
 
 .. req::
     :id: R-60011
+    :target: VNF
     :keyword: MUST
     :updated: casablanca
     :validation_mode: static
 
 .. req::
     :id: R-17528
-    :keyword: MUST
+    :target: VNF
+    :keyword: MUST NOT
     :updated: frankfurt
     :validation_mode: static
 
 
 .. req::
     :id: R-708564
+    :target: VNF
     :keyword: MUST NOT
     :introduced: dublin
     :validation_mode: static
 
 .. req::
     :id: R-11041
+    :target: VNF
     :keyword: MUST
     :updated: casablanca
     :validation_mode: static
 
 .. req::
     :id: R-90022
+    :target: VNF
     :keyword: MAY
     :updated: casablanca
 
 
 .. req::
     :id: R-04344
+    :target: VNF
     :keyword: MAY
     :updated: casablanca
 
     :id: R-50011
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's ``OS::Heat::ResourceGroup``
     property ``count`` **MUST** be enumerated in the VNF's
     :id: R-76718
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     If a VNF's Heat Orchestration Template uses the intrinsic function
     ``get_file``, the ``get_file`` target **MUST** be referenced in
     :id: R-41888
     :target: VNF
     :keyword: MUST NOT
-    :validation_mode: static
     :updated: casablanca
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template intrinsic function
     ``get_file`` **MUST NOT** utilize URL-based file retrieval.
 
 .. req::
     :id: R-100380
+    :target: VNF
     :keyword: SHOULD
     :introduced: dublin
     :validation_mode: none
-    :target: VNF
 
     If a VNF requires the use of an SSH key created by OpenStack, the VNF
     Heat Orchestration Template **SHOULD** create the ``OS::Nova::Keypair``
 
 .. _ONAP Heat VNF Modularity:
 
 ONAP Heat VNF Modularity
----------------------------
+------------------------
 
 ONAP supports a modular Heat Orchestration Template design pattern,
 referred to as *VNF Modularity.* With this approach, a single VNF **MAY** be
     :id: R-610010
     :target: VNF
     :keyword: MAY
-    :validation_mode: none
     :introduced: el alto
+    :validation_mode: none
 
     A VNF's Heat Orchestration Template's Base Module **MAY** declare zero, one,
     or more than one ``OS::Nova::Server`` resource.  A ``OS::Nova::Server``
     :id: R-610020
     :target: VNF
     :keyword: MAY
-    :validation_mode: none
     :introduced: el alto
+    :validation_mode: none
 
     If a VNF's Heat Orchestration Template's Base Module contains two or more
     ``OS::Nova::Server`` resources (created in the base module itself and/or
     :id: R-610030
     :target: VNF
     :keyword: MUST
-    :validation_mode: static
     :introduced: el alto
+    :validation_mode: static
 
     A VNF's Heat Orchestration Template's Incremental Module **MUST**
     declare one or more ``OS::Nova::Server`` resources.  A ``OS::Nova::Server``
     :id: R-610040
     :target: VNF
     :keyword: MAY
-    :validation_mode: none
     :introduced: el alto
+    :validation_mode: none
 
     If a VNF's Heat Orchestration Template's Incremental Module contains two or
     more ``OS::Nova::Server`` resources, the ``OS::Nova::Server`` resources
     :id: R-610050
     :target: VNF
     :keyword: MAY
-    :validation_mode: none
     :introduced: el alto
+    :validation_mode: none
 
     The same ``{vm-type}`` for a VNF's Heat Orchestration Template's
     ``OS::Nova::Server`` resource (as defined in R-01455) **MAY** exist in
     :id: R-61001
     :target: VNF
     :keyword: MUST
-    :validation_mode: none
     :updated: dublin
+    :validation_mode: none
 
     A shared Heat Orchestration Template resource is a resource that **MUST**
     be defined in the base module and will be referenced by one or
 template.
 
 Suggested Patterns for Modular VNFs
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 There are numerous variations of VNF modularity. Below are two suggested
 usage patterns.
 options.
 
 Modularity Rules
-^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^
 
 There are some rules to follow when building modular VNF templates:
 
       name in the add-on module
 
 VNF Modularity Examples
-^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^
 
 *Example: Base Module creates SecurityGroup*
 
 
 
 
 HPA Requirements
------------------
+----------------
 
 1. SR-IOV Passthrought
 
 
 
 
 Artifact
-~~~~~~~~~~
+~~~~~~~~
 
 Note: currently not supported.
 
 
 supports self-defined node or other extensions.
 
 TOSCA Introduction
-^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^
 
 TOSCA defines a Meta model for defining IT services. This Meta model
 defines both the structure of a service as well as how to manage it. A
 
 
 
 Data Types
-^^^^^^^^^^^^^^
+^^^^^^^^^^
 
 .. req::
     :id: R-484843
 
 
 Capability Types
-^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^
 
 .. req::
     :id: R-177937
 
 
 Requirements Types
-^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^
 
 
 Relationship Types
-^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^
 
 .. req::
     :id: R-64064
 
 
 Interface Types
-^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^
 
 No interface type is currently supported in ONAP.
 
 
 Node Types
-^^^^^^^^^^^^^^
+^^^^^^^^^^
 
 .. req::
     :id: R-535009
 
 
 Group Types
-^^^^^^^^^^^^^^
+^^^^^^^^^^^
 
 No group type is currently supported in ONAP.
 
 
 Policy Types
-^^^^^^^^^^^^^^
+^^^^^^^^^^^^
 
 .. req::
     :id: R-596064
 
 
 
 VNF or PNF CSAR Package
-------------------------
+-----------------------
 
 CSAR Overview
 ^^^^^^^^^^^^^
 
 
 VNF or PNF Package Authenticity and Integrity
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 VNF or PNF CSAR package shall support a method for authenticity and integrity
 assurance. According to ETSI SOL004 the onboarding package shall be secured.
 
     :keyword: MUST
     :introduced: frankfurt
 
-    The VNF or PNF MUST support configuration management including
+    The VNF or PNF **MUST** support configuration management including
     life cycle management (LCM) using at least one of the following
     protocols a)NETCONF/YANG, b)Ansible and c)Chef.
 
 The requirements for supporting of SDN-C/APPC LCM API for LCM operations are documented in section 7.3.1.
 
 Controller Interactions With VNF or PNF
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 This section is not applicable to LCM operations using CDS self-service API.
 
 APPC/SDN-C expose a northbound API to clients (such as SO) in order for
 Chef, or REST).
 
 Configuration Commands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~
 
 ``Configure``: The APPC/SDN-C client is requesting that a post-instantiation
 configuration be applied to the target VNF or PNF. After the Configure
     The VNF or PNF **MUST** support APPC ``Audit`` command.
 
 Lifecycle Management Related Commands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 **The following commands are needed to support various lifecycle management
 flows where the VNF may need to be removed for service.**
 
 
 HealthCheck and Failure Related Commands
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 ``HealthCheck`` The APPC/SDN-C client is requesting a health check over the
 entire scope of the VNF or PNF. The VNF or PNF must be 100% healthy, ready to
     The VNF or PNF **MUST** support APPC/SDN-C ``HealthCheck`` command.
 
 Notes On Command Support Using APPC/SDN-C Southbound Protocols
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 APPC/SDN-C are designed to support a standard set of protocols in
 order to communicate with the VNF or PNF instance. The supported protocols are
 the `ONAP SDNC project <https://onap.readthedocs.io/en/latest/submodules/sdnc/oam.git/docs/index.html>`_.
 
 NETCONF Standards and Capabilities
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 APPC/SDN-C and their Adapters utilize device YANG model and
 NETCONF APIs to make the required changes in the VNF or PNF state and
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Configuration Management
-+++++++++++++++++++++++++++
+++++++++++++++++++++++++
 
 
 .. req::
     by supplied YANG models for the embedded NETCONF server.
 
 NETCONF Server Requirements
-++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 
 .. req::
 
 
 LCM Operations via NETCONF
-++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++
 
 .. req::
     :id: R-246519
     :keyword: MAY
     :introduced: frankfurt
 
-    As alternative to Ansible, Chef or REST, a VNF or PNF MAY support YANG models
+    As alternative to Ansible, Chef or REST, a VNF or PNF **MAY** support YANG models
     allowing execution of standard controller LCM operations including HealthCheck.
     Note: To support vendor YANG models for LCM operations, the controller is responsible
     for performing VNF/PNF specific translation of north-bound API requests into one or more
 
 
 Chef Standards and Capabilities
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. container:: note
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Chef Client Requirements
-+++++++++++++++++++++++++
+++++++++++++++++++++++++
 
 
 .. req::
     push jobs client >= 2.0.
 
 Chef Roles/Requirements
-++++++++++++++++++++++++++
++++++++++++++++++++++++
 
 .. req::
     :id: R-27310
 .. _ansible_playbook_requirements:
 
 Ansible Standards and Capabilities
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 ONAP will support configuration of VNFs or PNFs via Ansible subject to the
 requirements and guidelines defined in this section.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Ansible Client Requirements
-+++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 
 .. req::
 
 .. req::
     :id: R-92866
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :updated: dublin
 
 
 .. req::
     :id: R-94567
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: casablanca
     :updated: guilin
 
 .. req::
     :id: R-67124
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: casablanca
     :updated: guilin
 
 .. req::
     :id: R-24482
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: casablanca
     :updated: guilin
     VM(s) as needed.
 
 Ansible Playbook Requirements
-+++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++
 
 An Ansible playbook is a collection of tasks that is executed on the
 Ansible server (local host) and/or the target VM (s) in order to
 
 .. req::
     :id: R-49396
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :updated: guilin
 
 
 .. req::
     :id: R-33280
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST NOT
     :updated: guilin
 
 
 .. req::
    :id: R-195620
+   :target: VNF or PNF PROVIDER
    :keyword: SHOULD
-   :target: VNF or PNF Provider
    :introduced: guilin
 
    The VNF or PNF Provider's Ansible playbooks **SHOULD** compare the version(s)
 
 .. req::
    :id: R-918136
+   :target: VNF or PNF PROVIDER
    :keyword: MUST NOT
-   :target: VNF or PNF Provider
    :introduced: guilin
 
    The VNF or PNF Provider's Ansible playbooks **MUST NOT** fail due to
 
 .. req::
    :id: R-444446
+   :target: VNF or PNF PROVIDER
    :keyword: SHOULD
-   :target: VNF or PNF Provider
    :introduced: guilin
 
    The VNF or PNF Provider's Ansible playbooks **SHOULD** issue log messages
 
 .. req::
     :id: R-48698
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :updated: guilin
 
 
 .. req::
     :id: R-43253
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :updated: guilin
 
 
 .. req::
     :id: R-50252
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :updated: guilin
 
 
 .. req::
     :id: R-51442
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: SHOULD
     :updated: guilin
 
 
 .. req::
     :id: R-58301
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: SHOULD NOT
     :updated: dublin
 
 
 .. req::
     :id: R-02651
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: SHOULD
     :updated: guilin
 
 
 .. req::
     :id: R-43353
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :updated: guilin
 
 
 .. req::
     :id: R-24189
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: casablanca
     :updated: guilin
 
 .. req::
     :id: R-49911
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
-    :updated: guilin
     :introduced: casablanca
+    :updated: guilin
 
     The VNF or PNF Provider **MUST** assign a new point release to the updated
     Ansible playbook set. The functionality of a new playbook set must be
 
 .. req::
     :id: R-42333
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: frankfurt
     :updated: guilin
 
 .. req::
     :id: R-39003
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: frankfurt
     :updated: guilin
 
 .. req::
     :id: R-46823
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: frankfurt
 
 
 .. req::
     :id: R-83092
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: frankfurt
     :updated: guilin
 
 .. req::
     :id: R-09209
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: frankfurt
     :updated: guilin
 
 .. req::
     :id: R-56988
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: frankfurt
 
 
 .. req::
     :id: R-20988
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: frankfurt
     :updated: guilin
 
 .. req::
     :id: R-53245
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST NOT
     :introduced: frankfurt
     :updated: guilin
 
-    The VNF or PNF Provider's Ansible playbooks **MUST** require
+    The VNF or PNF Provider's Ansible playbooks **MUST NOT** require
     passwords or secrets to be passed in clear text in the command line or
     Rest API request to run the playbook.
 
 .. req::
     :id: R-78640
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: SHOULD
     :introduced: frankfurt
     :updated: guilin
 
 .. req::
     :id: R-88786
-    :target: VNF or PNF Provider
-    :keyword: MUST
+    :target: VNF or PNF PROVIDER
+    :keyword: SHOULD
     :introduced: frankfurt
     :updated: guilin
 
 
 .. req::
     :id: R-88002
-    :target: VNF or PNF Provider
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: frankfurt
 
     into the central repository for distribution.
 
 Ansible API Usage
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~
 
 This section outlines the workflow that APPC/SDN-C invokes when
 it receives an action request against an Ansible managed VNF or PNF.
 
 
 Support of APPC/SDN-C Commands And Southbound Protocols
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 The following table summarizes the commands and possible protocols selected.
 Note that the HealthCheck can also be supported via REST.
 
    :id: R-332680
    :target: VNF or PNF
    :keyword: SHOULD
-   :impacts: dcae
-   :validation_mode: in_service
    :introduced: casablanca
    :updated: guilin
+   :validation_mode: in_service
+   :impacts: dcae
 
    The VNF or PNF producing VES events **SHOULD** deliver syslog messages
    that meet the criteria in R-209104 to the VES Event Listener using the
    :keyword: MAY
    :introduced: casablanca
    :updated: guilin
-   :impacts: DCAE
    :validation_mode: in_service
+   :impacts: DCAE
 
    The VNF or PNF **MAY** leverage ONAP's High Volume VNF Event Streaming
    (HV-VES) when there is a need to deliver large volumes of real-time
    :target: VNF or PNF PROVIDER
    :keyword: MUST
    :introduced: guilin
-   :impacts: DCAE
    :validation_mode: none
+   :impacts: DCAE
 
    VNF or PNF Provider **MUST** have agreement with the Service Provider before
    utilizing the HV-VES option for monitoring as this option does not fully
    :target: VNF or PNF
    :keyword: MAY
    :introduced: casablanca
-   :impacts: dcae, dmaap
-   :validation_mode: in_service
    :updated: guilin
+   :validation_mode: in_service
+   :impacts: dcae, dmaap
 
    The VNF or PNF **MAY** leverage a bulk VNF or PNF telemetry transmission
    mechanism in instances where other transmission
    :target: VNF or PNF PROVIDER
    :keyword: MUST
    :introduced: casablanca
+   :updated: guilin
    :validation_mode: static
    :impacts: dcae
-   :updated: guilin
 
    If the VNF or PNF is using VES, then the VNF or PNF Provider **MUST** provide
    a YAML file formatted in adherence with the
 .. req::
    :id: R-123044
    :target: VNF or PNF PROVIDER
-   :keyword: MUST
+   :keyword: MAY
    :introduced: casablanca
+   :updated: dublin
    :validation_mode: in_service
    :impacts: dcae
-   :updated: dublin
 
    The VNF or PNF Provider **MAY** require that specific events, identified by
    their ``eventName``, require that certain fields, which are optional in the
 .. req::
    :id: R-528866
    :target: VNF or PNF
+   :keyword: MUST
    :introduced: casablanca
+   :updated: guilin
    :validation_mode: in_service
    :impacts: dcae
-   :keyword: MUST
-   :updated: guilin
 
    The VES events produced by the VNF or PNF **MUST** conform to the schema and
    other formatting requirements specified in the relevant VES Event Listener
 .. req::
    :id: R-283988
    :target: VNF or PNF
+   :keyword: MUST NOT
    :introduced: casablanca
    :updated: guilin
    :validation_mode: in_service
    :impacts: dcae
-   :keyword: MUST NOT
 
    A VNF or PNF producing VES events **MUST NOT** send information through
    extensible structures if the event specification has explicitly defined
 .. req::
    :id: R-470963
    :target: VNF or PNF
+   :keyword: SHOULD
    :introduced: casablanca
    :updated: guilin
    :validation_mode: in_service
    :impacts: dcae
-   :keyword: SHOULD
 
    A VNF or PNF producing VES events **SHOULD** leverage camel case to
    separate words and acronyms used as keys that will be sent through extensible
    restrictions in place for the operation.
 
 Security
-~~~~~~~~~~
+~~~~~~~~
 
 .. req::
     :id: R-68165
     :target: VNF or PNF
     :keyword: SHOULD
     :introduced: casablanca
-    :impacts: dcae, dmaap
     :updated: dublin
+    :impacts: dcae, dmaap
 
     The VNF or PNF **SHOULD** support FileReady VES event for event-driven bulk transfer
     of monitoring data.
     :target: VNF or PNF
     :keyword: SHOULD
     :introduced: casablanca
-    :impacts: dcae, dmaap
     :updated: dublin
+    :impacts: dcae, dmaap
 
     The VNF or PNF **SHOULD** support File transferring protocol, such as FTPES or SFTP,
     when supporting the event-driven bulk transfer of monitoring data.
     :target: VNF or PNF
     :keyword: SHOULD
     :introduced: casablanca
+    :updated: guilin
     :impacts: dcae, dmaap
-    :updated: guilin 
 
     The VNF or PNF **SHOULD** support the data schema defined in 3GPP TS 32.435 or 3GPP TS 28.532, when
     supporting the event-driven bulk transfer of monitoring data.
 
 
 
 PNF Plug and Play
-------------------------
+-----------------
 
 PNF Plug and Play
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^
 
 The following are the requirements related to PNF Plug and Play.
 
     :target: PNF
     :keyword: SHOULD
     :introduced: casablanca
-    :updated: El Alto
+    :updated: el alto
 
     The following VES Events **SHOULD** be supported by the PNF: pnfRegistration
     VES Event, HVol VES Event, and Fault VES Event. These are onboarded via
 .. req::
     :id: R-284934
     :target: PNF
-    :keyword: MUST
+    :keyword: MAY
     :introduced: casablanca
 
     If the PNF encounters an error authenticating, reaching the ONAP DCAE VES
 
 ----------------------------------------------
 
 Design Definition
-^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^
 
 The ONAP Design Time Framework provides the ability to design NFV
 resources including VNFs, Services, and products. The VNF provider must
 (NFV), Management and Orchestration, VNF Packaging Specification.
 
 Resource Description
-^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^
 
 .. req::
     :id: R-66070
-    :target: VNF Package
+    :target: VNF HEAT PACKAGE
     :keyword: MUST
     :updated: dublin
 
 
 .. req::
     :id: R-22346
-    :target: VNF or PNF PACKAGE
+    :target: VNF or PNF PROVIDER
     :keyword: MUST
     :introduced: casablanca
-    :updated: el alto
+    :updated: guilin
     :validation_mode: static
 
-    The VNF or PNF package **MUST** provide :ref:`VES Event Registration <ves_event_registration_3_2>`
+    The VNF or PNF Provider **MUST** provide :ref:`VES Event Registration <ves_event_registration_3_2>`
     for all VES events provided by that VNF or PNF.
 
 .. req::
    :target: VNF or PNF PROVIDER
    :keyword: MUST
    :updated: frankfurt
-   :impacts: DCAE,Documentation,Integration,SDC
    :validation_mode: static
+   :impacts: DCAE,Documentation,Integration,SDC
 
    The VNF or PNF PROVIDER **MUST** provide :ref:`FM_meta_data` to support the
    analysis of fault events delivered to DCAE. The metadata must be
    supported by that VNF or PNF at onboarding time. The metadata must follow
    the VES Event Listener Specifications for Fault domain and VES Event
    Registration Specifications for YAML registration file format.
-   
+
 
 .. req::
    :id: R-816745
    :keyword: MUST
    :introduced: dublin
    :updated: frankfurt
-   :impacts: DCAE,Documentation,Integration,SDC
    :validation_mode: static
+   :impacts: DCAE,Documentation,Integration,SDC
 
    THe VNF or PNF PROVIDER **MUST** provide PM Meta Data (:ref:`PM_Dictionary`)
    to support the analysis of PM data delivered to DCAE.
    which contain the format and content required.
 
 Resource Configuration
-^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^
 
 
 .. req::
 
 
 Configuration Management via NETCONF/YANG
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 .. req::
     :id: R-30278
     as a foundation for creating the YANG model for configuration.
 
 Configuration Management via Chef
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
 .. req::
     (e.g., customer provisioning data).
 
 Resource Control Loop
-^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^
 
 
 .. req::
 
 
 Compute, Network, and Storage Requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 .. req::
 
 
 Testing
-^^^^^^^^^^
+^^^^^^^
 
 .. req::
     :id: R-43958
     necessary simulators.
 
 Licensing Requirements
-^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^
 ONAP can support external licensing management solution (e.g. vendor specific)
 in addition to its own licensing management solution.  If licensing management
 solution is provided by ONAP, then ONAP operators build the VNF License using SDC during onboarding.
 
 
 
 Ansible JSON Key Value Description
--------------------------------------------------------------
+----------------------------------
 
 The following provides the key value pairs that must be contained in the
 JSON file supporting APPC/SDN-C Ansible action.
 
 Table B1. Ansible JSON File key value description
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. csv-table:: **TOSCA Definition**
    :file: Ansible JSON File Key Value Description.csv
 
 
 
 Ansible Playbook Examples
------------------------------------------------
+-------------------------
 
 The following sections contain examples of Ansible playbooks
 which follow the guidelines.
 
 
 Guidelines for Playbooks to properly integrate with APPC/SDN-C
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 **NOTE**: To support concurrent requests to multiple playbooks, targeting VNF
 instances of same or different type, VNF files dynamically created by playbooks
 playbook take precedence over any defaults stored in Ansible Server.
 
 Ansible Playbooks – Notes On Artifacts Required to Run Playbooks
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Inventory hosts file: should be VNF instance specific.
 
 
 
 Ansible Inventory Hosts File – Supported Formats
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Supported inventory hosts file examples, built from this NodeList model,
 extracted from A&AI by APPC/SDN-C and passed to the Ansible
 
 
 Ansible Server – On-boarding Ansible Playbooks
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Once playbooks are developed following these guidelines, playbooks need to be
 on-boarded onto Development Ansible Server(s), and placed under (git) code
 
 
 
 Chef JSON Key Value Description
--------------------------------------
+-------------------------------
 
 The following provides the key value pairs that must be contained in the
 JSON file supporting Chef action.
 
 Table A1. Chef JSON File key value description
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +----------------+--------------------------+---------+----------------------+
 | **Field Name** | **Description**          | **Type**| **Comment**          |
 The following table describes the JSON dictionary to post in Callback.
 
 Table A2. JSON Dictionary to Post in Callback
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +--------------+----------------------------+---------+-----------------------+
 | **Key**      | **Description**            | **Type**| **Comment**           |
 
 -----------
 
 Table D1. ONAP Resource DM TOSCA/YAML constructs
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Standard TOSCA/YAML definitions agreed by VNF SDK Modeling team to be used by
 VNF vendors to create a standard VNF descriptor.
 
 
 Table D2. TOSCA CSAR structure
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 This section defines the requirements around the CSAR structure.
 
 
 across a Service Provider's infrastructure.
 
 Relation to the Common Event Format
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 The Common Event Format described in the VES Event Listener service
 specification defines the structure of VES events including optional
 allowed by the Common Event Format (e.g., ``MINOR`` or ``NORMAL``).
 
 Relation to Service Design and Creation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Event registration for a VNF (or other event source) is provided to the
 Service Provider's Service Creation and Design Environment (e.g., SDC)
 
 
 HeartbeatAction
-++++++++++++++++
++++++++++++++++
 
 The ``heartbeatAction`` keyword is provided on the ``event`` objectName for
 heartbeat events only. It provides design time guidance to the service
     }
 
 Presence
-+++++++++
+++++++++
 
 The ``presence`` keyword may be defined as 'required' or 'optional'. If
 not provided, the element is assumed to be 'optional'.
     # by omitting a presence definition, the element is assumed to be optional
 
 Range
-+++++++
++++++
 
 The ``range`` keyword applies to fields (i.e., simpleTypes); indicates the
 value of the field is a number within a specified range of values from
     fieldname: { range: [ 0, 3.14 ] }
 
 Structure
-++++++++++
++++++++++
 
 The ``structure`` keyword indicates that the element is a complexType
 (i.e., an object) and is followed by curly braces containing that
     }
 
 Units
-+++++++
++++++
 
 The ``units`` qualifier may be applied to values provided in VES Common
 Event Format extensible field structures. The 'units' qualifier
     }
 
 Value
-+++++++
++++++
 
 The ``value`` keyword applies to fields (i.e., simpleTypes); indicates a
 single value or an enumeration of possible values. If not provided, it
     ...
 
 Rules Syntax and Semantics
-++++++++++++++++++++++++++++
+++++++++++++++++++++++++++
 
 The YAML ``rules`` document begins with the keyword ``rules`` followed by a
 colon and square brackets. Each rule is then defined within the square
   microservices and alerts may be specified.
 
 Simple Triggers
-++++++++++++++++
++++++++++++++++
 
 The trigger is based on the named ``conditions`` asserted in the action
 qualifiers within the event definitions earlier in the YAML file. The
 clarity.
 
 Time Based Qualifiers
-+++++++++++++++++++++++
++++++++++++++++++++++
 
 Time based rules may be established by following any named condition
 with a colon and curly braces. The time based rule is placed in the
 .. _PM_Dictionary:
 
 PM Dictionary
-~~~~~~~~~~~~~~
+~~~~~~~~~~~~~
 
 The Performance Management (PM) Dictionary is used by analytics
 applications to interpret and process perf3gpp measurement information
 .. _FM_meta_data:
 
 FM Meta Data
-~~~~~~~~~~~~~
+~~~~~~~~~~~~
 
 FM Meta Data enables vendors to provide meta information about FM events
 using a set of standard keywords. FM Meta Data is conveyed in the YAML
 make machine processing of FM Meta Data Keywords easier to perform.
 
 Alarm Meta Data Keywords
-++++++++++++++++++++++++++++
+++++++++++++++++++++++++
 
 The following is a list of standard Alarm Meta Data Keywords. Note: the
 keywords are in CAPS so they can be easily found within the YAML
 +------------+---------+-----------------------------------------------------+
 
 Fault Meta Data Keywords
-+++++++++++++++++++++++++
+++++++++++++++++++++++++
 
 The following is a list of standard Fault Meta Data Keywords. Note: the
 keywords are in CAPS so they can be easily found within the YAML
 +------------------------+---------+------------------------------------------+
 
 FM Meta Data Example
-+++++++++++++++++++++
+++++++++++++++++++++
 
 The following is a snippet of a fault event registration showing use of
 the FM Meta Data keywords. Note: it is recommended the information be
 easier to rapidly find examples of different types of events.
 
 Fault
-~~~~~~
+~~~~~
 
 .. code-block:: yaml
 
     }
 
 Heartbeat
-~~~~~~~~~~
+~~~~~~~~~
 
 .. code-block:: yaml
 
 
 
 Measurements
-~~~~~~~~~~~~~
+~~~~~~~~~~~~
 
 .. code-block:: yaml
 
 
 
 Sip Signaling
-~~~~~~~~~~~~~~
+~~~~~~~~~~~~~
 
 .. code-block:: yaml
 
 
 
 Voice Quality
-~~~~~~~~~~~~~~
+~~~~~~~~~~~~~
 
 .. code-block:: yaml
 
 
 
 Rules
-~~~~~~
+~~~~~
 
 .. code-block:: yaml
 
 
 
 Appendix: Historical Change Log
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 For the latest changes, see the Change Block just before the Table of
 Contents.
 
 following fields:
 
 Table C2. Required Fields for Entitlements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +---------------+-----------------------------------+-------------+-----------+
 | **Field Name**| **Description**                   |**Data Type**| **Type**  |
 be defined; each one consists of the following fields:
 
 Table C3. Required Fields for License Keys
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +---------------+-----------------------------------+--------------+----------+
 | **Field Name**| **Description**                   | **Data Type**| **Type** |
 -  use is allowed in Canada
 
 Table C4. Required Fields for Location
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +------------------+--------------------------------+--------------+----------+
 | **Field Name**   | **Description**                | **Data Type**| **Type** |
 -  entitlement valid from 15 May 2018 thru 30 June 2020
 
 Table C5. Required Fields for Time
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +------------------+-------------------------------+--------------+-----------+
 | **Field Name**   | **Description**               | **Data Type**| **Type**  |
 -  use is limited by software release
 
 Table C6. Required Fields for Usage
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +------------------+-------------------------------+---------------+----------+
 | **Field Name**   | **Description**               | **Data Type** | **Type** |
 -  allowed to be used only for government entities
 
 Table C7. Required Fields for Entity
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +------------------+--------------------------------+--------------+----------+
 | **Field Name**   | **Description**                |**Data Type** | **Type** |
 interval (day, month, quarter, year, etc.).
 
 Table C8. Required Fields for Amount
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 +------------------+---------------------------------+-------------+----------+
 | **Field Name**   | **Description**                 |**Data Type**| **Type** |
 
 that should be performed on those eventNames.
 
 Naming Standards for eventName
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 To prevent naming collisions, eventNames sent as part of the
 commonEventHeader, should conform to the following naming convention
 and isHomogeneous keywords.
 
 Syslogs
-~~~~~~~~
+~~~~~~~
 
 Syslog’s can be classified as either Control or Session/Traffic. They
 differ by message content and expected volume:
 
 
 Versioning
-~~~~~~~~~~~
+~~~~~~~~~~
 
 Three types of version numbers supported by this specification:
 
   to the field descriptions) will increment only the minor number.
 
 Field Block Versions
-+++++++++++++++++++++
+++++++++++++++++++++
 
 A summary of the latest field block version enums as of this version of
 the API spec is provided below:
 than HTTP) should be used.  HTTPS will also encrypt and protect event contents.
 
 Sample Request and Response
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Sample Request
 ++++++++++++++
 
 
 Sample Success Response
-++++++++++++++++++++++++
++++++++++++++++++++++++
 
 .. code-block:: http
 
 
 
 Mutual TLS Certificate Authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 When using Certificate Authentication, the event source must initialize the
 HTTPS connection with TLS 1.2 or higher and execute mutual authentication
 The {Port} above is typically 8443.
 
 Common Event Format
-^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^
 
 A JSON schema describing the Common Event Format is provided below and
 is reproduced in the tables that follow.
    capitalized.
 
 Common Event Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: arrayOfJsonObject
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 The arrayOfJsonObject datatype provides an array of json objects, each
 of which is describ ed by name, schema and other meta-information. It
 +---------------------+------------------+----------+----------------------+
 
 Datatype: arrayOfNamedHashMap
-++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++
 
 The arrayOfNamedHashMap datatype provides an array of hashMaps, each of
 which is associated with a descriptive name. It consists of the
 +---------------------+------------------+-----------+-----------------------+
 
 Datatype: event
-++++++++++++++++
++++++++++++++++
 
 The event datatype consists of the following fields which constitute the
 ‘root level’ of the common event format:
 +--------------+--------------+-----------+-----------------------------------+
 
 Datatype: eventList
-++++++++++++++++++++
++++++++++++++++++++
 
 The eventList datatype consists of the following fields:
 
 +-------------+-------------+----------+-------------------+
 
 Datatype: hashMap
-+++++++++++++++++++
++++++++++++++++++
 
 The hashMap datatype is an ‘associative array’, which is an unordered
 collection of key-value pairs of the form "key": "value", where each key
 +--------------+--------------+-----------+----------------------------------+
 
 Datatype: jsonObjectInstance
-+++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++
 
 The jsonObjectInstance datatype provides meta-information about an
 instance of a jsonObject along with the actual object instance:
 +----------------+------------+----------+-----------------------------------+
 
 Datatype: key
-+++++++++++++++
++++++++++++++
 
 The key datatype is a tuple which provides the name of a key along with
 its value and relative order; it consists of the following fields:
 +----------+---------+-----------+-------------------------------------------+
 
 Datatype: namedHashMap
-++++++++++++++++++++++++
+++++++++++++++++++++++
 
 The namedHashMap datatype is a hashMap which is associated with and
 described by a name; it consists of the following fields:
 +---------+---------+-----------+--------------------------------------------+
 
 Datatype: requestError
-+++++++++++++++++++++++
+++++++++++++++++++++++
 
 The requestError datatype defines the standard request error data
 structure:
 +-----------+--------+-----------+-------------------------------------------+
 
 Datatype: vendorNfNameFields
-+++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++
 
 The vendorNfNameFields provides vendor, nf and nfModule identifying
 information:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: commonEventHeader
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 The commonEventHeader datatype consists of the following fields common
 to all events:
 Listener.
 
 Technology Independent Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 ‘Fault’ Domain Datatypes
-+++++++++++++++++++++++++
+++++++++++++++++++++++++
 
 Datatype: faultFields
 *********************
 +-----------------+---------+-----------+-------------------------------------+
 
 Heartbeat’ Domain Datatypes
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 Datatype: heartbeatFields
 *************************
 +---------------+---------+-----------+---------------------------------------+
 
 ‘Measurements’ Domain Datatypes
-++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++
 
 Note: NFs are required to report exactly one Measurement event per
 period per sourceName.
 +------------------+-----------+----------+--------------------------------+
 
 Datatype: cpuUsage
-*******************
+******************
 
 The cpuUsage datatype defines the usage of an identifier CPU and
 consists of the following fields:
 +------------+--------+-----------+-------------------------------------------+
 
 Datatype: diskUsage
-********************
+*******************
 
 The diskUsage datatype defines the usage of a disk and consists of the
 following fields:
 +-------------+-------+----------+--------------------------------------------+
 
 Datatype: filesystemUsage
-***************************
+*************************
 
 The filesystemUsage datatype consists of the following fields:
 
 +-------------+--------+-----------+------------------------------------------+
 
 Datatype: hugePages
-********************
+*******************
 
 The hugePages datatype provides metrics on system hugePages; it consists
 of the following fields:
 +--------------------+--------+----------+------------------------------------+
 
 Datatype: ipmi (Intelligent Platform Management Interface)
-***********************************************************
+**********************************************************
 
 The ipmi datatype provides intelligent platform management interface
 metrics; it consists of the following fields:
 +-------------+---------------------+-----------+-----------------------------+
 
 Datatype: ipmiBaseboardTemperature
-************************************
+**********************************
 
 The ipmiBaseboardTemperature datatype consists of the following fields
 which describe ipmi baseboard temperature metrics:
 +-------------+--------+-----------+------------------------------------------+
 
 Datatype: ipmiBaseboardVoltageRegulator
-*****************************************
+***************************************
 
 The ipmiBaseboardVoltageRegulator datatype consists of the following
 fields which describe ipmi baseboard voltage regulator metrics:
 +--------------------+-------+----------+-------------------------------------+
 
 Datatype: ipmiBattery
-**********************
+*********************
 
 The ipmiBattery datatype consists of the following fields which describe
 ipmi battery metrics:
 +---------------------+--------+----------+------------------------------+
 
 Datatype: ipmiFan
-********************
+*****************
 
 The ipmiFan datatype consists of the following fields which describe
 ipmi fan metrics:
 +--------------+-------+----------+-------------------------------------------+
 
 Datatype: ipmiGlobalAggregateTemperatureMargin
-***********************************************
+**********************************************
 
 The ipmiGlobalAggregateTemperatureMargin datatype consists of the
 following fields:
 +-------------+-------+----------+--------------------------------------------+
 
 Datatype: ipmiHsbp
-*******************
+******************
 
 The ipmiHsbp datatype provides ipmi hot swap backplane power metrics; it
 consists of the following fields:
 +------------+-------+----------+---------------------------------------------+
 
 Datatype: ipmiNic
-******************
+*****************
 
 The ipmiNic datatype provides network interface control care metrics; it
 consists of the following fields:
 +------------+-------+----------+---------------------------------------------+
 
 Datatype: ipmiPowerSupply
-**************************
+*************************
 
 The ipmiPowerSupply datatype provides ipmi power supply metrics; it
 consists of the following fields:
 +-----------+-------+----------+----------------------------------------------+
 
 Datatype: ipmiProcessor
-************************
+***********************
 
 The ipmiProcessor datatype provides ipmi processor metrics; it consists
 of the following fields:
 +------------+------------------+-----------+---------------------------------+
 
 Datatype: latencyBucketMeasure
-*******************************
+******************************
 
 The latencyBucketMeasure datatype consists of the following fields which
 describe the number of counts falling within a defined latency bucket:
 +-----------+-------+----------+----------------------------------------------+
 
 Datatype: load
-****************
+**************
 
 The load datatype provides metrics on system cpu and io utilization
 obtained using /proc/loadavg; it consists of the following fields:
 +----------+-------+----------+-----------------------------------------------+
 
 Datatype: machineCheckException
-********************************
+*******************************
 
 The machineCheckException datatype describes machine check exceptions;
 it consists of the following fields:
 +-------------+-------+----------+--------------------------------------------+
 
 Datatype: measurementFields
-****************************
+***************************
 
 The measurementFields datatype consists of the following fields:
 
 +-------------+--------------+----------+-------------------------------------+
 
 Datatype: memoryUsage
-**********************
+*********************
 
 The memoryUsage datatype defines the memory usage of a virtual machine
 and consists of the following fields:
 +-----------+-------+----------+----------------------------------------------+
 
 Datatype: nicPerformance
-*************************
+************************
 
 The nicPerformance datatype consists of the following fields which
 describe the performance and errors of an of an identified virtual
 +----------------+-------+----------+-----------------------------------------+
 
 Datatype: processorDimmAggregateThermalMargin
-**********************************************
+*********************************************
 
 The processorDimmAggregateThermalMargin datatype provides intelligent
 platform management interface (ipmi) processor dual inline memory module
 +-----------------+-------+----------+----------------------------------------+
 
 Datatype: processStats
-***********************
+**********************
 
 The processStats datatype provides metrics on system processes; it
 consists of the following fields:
 +-----------+-------+----------+----------------------------------------------+
 
 ‘Notification’ Domain Datatypes
-++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++
 
 Datatype: notificationFields
-******************************
+****************************
 
 The notificationFields datatype consists of the following fields:
 
 Other notificationFields are not used for fileReady.
 
 ‘Other’ Domain Datatypes
-+++++++++++++++++++++++++
+++++++++++++++++++++++++
 
 Datatype: otherFields
-**********************
+*********************
 
 The otherFields datatype defines fields for events belonging to the
 'other' domain of the commonEventHeader domain enumeration; it consists
 +-------------+-------------+----------+--------------------------------------+
 
 ‘perf3gpp’ Domain Datatypes
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 Datatype: measDataCollection
-*****************************
+****************************
 
 The measDataCollection datatype defines a 3GPP measurement collection
 structure aligned with the 3GPP PM format; it consists of the following
 +----------------+---------+----------+---------------------------------------+
 
 Datatype: measInfo
-********************
+******************
 
 The measInfo datatype provides measurement information; it consists of
 the following fields:
 +-------+--------------------------+----------+-------------------------------+
 
 Datatype: measInfoIdInteger
-****************************
+***************************
 
 The measInfoIdInteger datatype provides an integer measurement group
 identifier; it consists of the following fields:
 +---------------+---------+----------+--------------------------------------+
 
 Datatype: measInfoIdString
-***************************
+**************************
 
 The measInfoIdString datatype provides a string measurement group
 identifier; it consists of the following fields:
 +---------------+-----------+----------+--------------------------------------+
 
 Datatype: measResultInteger
-****************************
+***************************
 
 The measResultInteger datatype provides an integer 3GPP PM measurement
 result; it consists of the following fields:
 +----------+-----------+-------------+------------------------------------+
 
 Datatype: measResultNull
-*************************
+************************
 
 The measResultNull datatype provides a null 3GPP PM measurement result;
 it consists of the following fields:
 +----------+-----------+-------------+------------------------------------+
 
 Datatype: measResultNumber
-***************************
+**************************
 
 The measResultNumber datatype provides a number 3GPP PM measurement
 result; it consists of the following fields:
 +----------+-----------+-------------+------------------------------------+
 
 Datatype: measResultString
-***************************
+**************************
 
 The measResultString datatype provides a string 3GPP PM measurement
 result; it consists of the following fields:
 +----------+-----------+-------------+------------------------------------+
 
 Datatype: measTypesInteger
-***************************
+**************************
 
 The measTypesInteger datatype provides an array of integer measurement
 identifiers associated with the measurement results; it consists of the
 +----------+--------+----------+----------------------------------------------+
 
 Datatype: measTypesString
-**************************
+*************************
 
 The measTypesString datatype provides an array of string measurement
 identifiers associated with the measurement results; it consists of the
 +----------+-------+----------+-----------------------------------------------+
 
 Datatype: measValues
-*********************
+********************
 
 The measValues datatype provides 3GPP measurement values; it consists of
 the following fields:
 +---------+----------------------------------+----------+---------------------+
 
 Datatype: perf3gppFields
-*************************
+************************
 
 The perf3gppFields datatype defines fields for 3GPP PM format events,
 based on 3GPP TS 28.550, belonging to the 'perf3gpp' domain of the
 +--------------+-----------+----------+---------------------------------------+
 
 ‘pnfRegistration’ Domain Datatypes
-++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
 
 Datatype: pnfRegistrationFields
-********************************
+*******************************
 
 The pnfRegistrationFields datatype defines fields for events belonging
 to the 'pnfRegistration' domain of the commonEventHeader domain
 +-----------------+--------+----------+---------------------------------------+
 
 ‘State Change’ Domain Datatypes
-++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++
 
 Datatype: stateChangeFields
-*****************************
+***************************
 
 The stateChangeFields datatype consists of the following fields:
 
 +--------------+--------+----------+------------------------------------------+
 
 ‘Syslog’ Domain Datatypes
-++++++++++++++++++++++++++
++++++++++++++++++++++++++
 
 Datatype: syslogFields
-***********************
+**********************
 
 The syslogFields datatype consists of the following fields:
 
     https://www.iana.org/assignments/syslog-parameters/syslog-parameters.xhtml
 
 ‘Threshold Crossing Alert’ Domain Datatypes
-++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++
 
 Datatype: counter
-******************
+*****************
 
 The counter datatype consists of the following fields:
 
 +------------+--------+----------+--------------------------------------------+
 
 Datatype: thresholdCrossingAlertFields
-****************************************
+**************************************
 
 The thresholdCrossingAlertFields datatype consists of the following
 fields:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Mobile Flow’ Domain Datatypes
-++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++
 
 Datatype: gtpPerFlowMetrics
-****************************
+***************************
 
 The gtpPerFlowMetrics datatype consists of the following fields:
 
 +---------------+--------+----------+-----------------------------------------+
 
 Datatype: mobileFlowFields
-***************************
+**************************
 
 The mobileFlowFields datatype consists of the following fields:
 
 +++++++++++++++++++++++++++++++
 
 Datatype: sipSignalingFields
-*****************************
+****************************
 
 The sipSignalingFields datatype communicates information about sip
 signaling messages, parameters and signaling state; it consists of the
 +--------------+-----------+----------+---------------------------------------+
 
 ‘Voice Quality’ Domain Datatypes
-+++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++
 
 Datatype: endOfCallVqmSummaries
-*********************************
+*******************************
 
 The endOfCallVqmSummaries datatype provides end of call voice quality
 metrics; it consists of the following fields:
 +--------------+-------+----------+-------------------------------------------+
 
 Datatype: voiceQualityFields
-*****************************
+****************************
 
 The voiceQualityFields datatype provides statistics related to customer
 facing voice products; consists of the following fields:
 +--------------+-------------+----------+-------------------------------------+
 
 Exceptions
-^^^^^^^^^^^
+^^^^^^^^^^
 
 RESTful Web Services Exceptions
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 RESTful services generate and send exceptions to clients in response to
 invocation errors. Exceptions send HTTP status codes (specified later in
 +-----------+---------------+-------------+-----------------------------------+
 
 Service Exceptions
-~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~
 
    When a service is not able to process a request, and retrying the
    request with the same information will also result in a failure, and
     Table - Service Exceptions
 
 Policy Exceptions
-~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~
 
    When a service is not able to complete because the request fails to
    meet a policy criteria, then the service will issue a fault using the
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 REST Operation Overview
-~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~
 
 REST Operation Summary
-+++++++++++++++++++++++
+++++++++++++++++++++++
 
 +---------------------+---------+------------------------------------------+
 | **Operation Action**| **HTTP**| Resource URL relative to {ServerRoot}\   |
 a mandatory requirement.
 
 Operation: publishAnyEvent
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Functional Behavior
-+++++++++++++++++++++
++++++++++++++++++++
 
 Allows authorized clients to publish any single event to the VES event
 listener.
    messages
 
 Call Flow
-++++++++++
++++++++++
 
 .. seqdiag::
     :caption: ``publishAnyEvent`` Call Flow
     }
 
 Input Parameters
-+++++++++++++++++
+++++++++++++++++
 
 Header Fields (note: all parameter names shall be treated as
 case-insensitive):
 +--------------+--------------+--------------+-------------------------------+
 
 Output Parameters
-++++++++++++++++++
++++++++++++++++++
 
 Header fields:
 
 +--------------+--------------+----------------+------------------------------+
 
 HTTP Status Codes
-++++++++++++++++++
++++++++++++++++++
 
 +-----+--------------+--------------------------------------------------------+
 | Code| Reason Phrase| Description                                            |
 +-----+--------------+--------------------------------------------------------+
 
 Sample Request and Response
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 Sample Request
-***************
+**************
 
 .. code-block:: http
 
 
 
 Sample Success Response
-************************
+***********************
 
 .. code-block:: http
 
     X-LatestVersion: 7.1.1
 
 Sample Error Responses
-************************
+**********************
 
 Sample Policy Exception
-""""""""""""""""""""""""
+"""""""""""""""""""""""
 
 .. code-block:: http
 
 
 
 Sample Service Exception
-"""""""""""""""""""""""""
+""""""""""""""""""""""""
 
 .. code-block:: http
 
     }
 
 Operation: publishEventBatch
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Functional Behavior
 +++++++++++++++++++
   messages
 
 Call Flow
-+++++++++++
++++++++++
 
 .. seqdiag::
     :caption: ``publishEventBatch`` Call Flow
     }
 
 Input Parameters
-+++++++++++++++++
+++++++++++++++++
 
 Header Fields (note: all parameter names shall be treated as
 case-insensitive):
 +--------------+--------------+--------------+-------------------------------+
 
 Output Parameters
-+++++++++++++++++++
++++++++++++++++++
 
 Header fields:
 
 +-----+--------------+--------------------------------------------------------+
 
 Sample Request and Response
-+++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 Sample Request
-****************
+**************
 
 .. code-block:: http
 
     }
 
 Sample Success Response
-*************************
+***********************
 
 .. code-block:: http
 
     X-LatestVersion: 7.1.1
 
 Sample Error Responses
-************************
+**********************
 
 Sample Policy Exception
-""""""""""""""""""""""""
+"""""""""""""""""""""""
 
 .. code-block:: http
 
 
 
 Sample Service Exception
-"""""""""""""""""""""""""
+""""""""""""""""""""""""
 
 .. code-block:: http
 
 
 
 Terminology
-^^^^^^^^^^^^
+^^^^^^^^^^^
 
 Terminology used in this document is summarized below:
 
 re-usable, and responsible for a single capability.
 
 Appendix: Historical Change Log
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 For the latest changes, see the Change Block just before the Table of
 Contents.
 
 
 .. _ves_event_listener_5_4_1:
 
-===================================
 Service: *VES Event Listener 5.4.1*
-===================================
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. contents:: Table of Contents
 
 Introduction
-============
+^^^^^^^^^^^^
 
 This document describes the RESTful interface for the VES (Virtual function
 Event Streaming) Event Listener. The VES Event Listener is capable of receiving
 make use of persistent TCP connections for high volumes of streaming events.
 
 Event Registration
-------------------
+^^^^^^^^^^^^^^^^^^
 
 All events must be compliant with the common event format, but specific events
 identified by their eventNames, may require that certain fields, which are
 performed on those eventNames.
 
 Naming Standards for eventName
-------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 To prevent naming collisions, eventNames sent as part of the
 commonEventHeader, should conform to the following naming convention designed
 environment (i.e., SDC).
 
 Support for Protocols Other Than HTTPS
---------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 This API specification describes an HTTPS RESTful interface using the JSON
 content-type.
 provided in this document.
 
 Versioning
-----------
+^^^^^^^^^^
 
 Three types of version numbers supported by this specification:
 
    minor number.
 
 Security
---------
+^^^^^^^^
 
 Event sources must identify themselves to the VES Event Listener.
 
 reproduced in the tables that follow.
 
 Common Event Datatypes
-----------------------
+^^^^^^^^^^^^^^^^^^^^^^
 
 Common Event Datatypes
 ~~~~~~~~~~~~~~~~~~~~~~
 +----------------+----------+-------------+---------------------------------------------------------------+
 
 'Common Event Header'Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: commonEventHeader
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 received by the VES Event Listener:
 
 Technology Independent Datatypes
---------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 'Fault'Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: faultFields
 ^^^^^^^^^^^^^^^^^^^^^
 +-------------------------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 'Heartbeat'Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: heartbeatFields
 ^^^^^^^^^^^^^^^^^^^^^^^^^
 +------------------------------------------+----------+-------------+-----------------------------------------------------------------------------------------------------------------------------------------------+
 
 'Other'Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: otherFields
 ^^^^^^^^^^^^^^^^^^^^^
 +-----------------------------+--------------------------+-------------+------------------------------------------------------------------------------+
 
 'State Change'Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: stateChangeFields
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 +----------------------------+-------------+-------------+----------------------------------------------------------------------------+
 
 'Syslog'Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: syslogFields
 ^^^^^^^^^^^^^^^^^^^^^^
     ; except '=', SP, ']', %d34 (")
 
 'Threshold Crossing Alert'Domain Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: counter
 ^^^^^^^^^^^^^^^^^
 +-----------------------------------+---------------+-------------+-----------------------------------------------------------------------------------------------------------------------------+
 
 Technology Specific Datatypes
------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 'Mobile Flow' Domain Datatypes
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ==========
 
 RESTful Web Services Exceptions
--------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 RESTful services generate and send exceptions to clients in response to
 invocation errors. Exceptions send HTTP status codes (specified later in
 +------------------+----------------------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 Service Exceptions
-------------------
+^^^^^^^^^^^^^^^^^^
 
 When a service is not able to process a request, and retrying the
 request with the same information will also result in a failure, and the
     Table - Service Exceptions
 
 Policy Exceptions
------------------
+^^^^^^^^^^^^^^^^^
 
 When a service is not able to complete because the request fails to meet
 a policy criteria, then the service will issue a fault using the policy
 ===============================
 
 REST Operation Overview
------------------------
+^^^^^^^^^^^^^^^^^^^^^^^
 
 REST Operation Summary
-~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~
 
 +--------------------------------+------------+----------------------------------------------------------------------------+
 | **Operation Action**           | **HTTP**   | **Resource URL relative to {ServerRoot}, which is defined in section 3**   |
 use v2 without error).
 
 Buffering of Events
-~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~
 
 {ServerRoot} is defined in section 3 of this document, which defines the
 REST resource URL. One or more FQDNs may be provisioned in an event
 oldest events first).
 
 Operation: publishAnyEvent
---------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Functional Behavior
 ~~~~~~~~~~~~~~~~~~~
         }
 
 Operation: publishEventBatch
-----------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Functional Behavior
 ~~~~~~~~~~~~~~~~~~~
 
 .. _ves_common_event_format_7_2:
 
 Common Event Format
-^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^
 
 A JSON schema describing the Common Event Format is provided below and
 is reproduced in the tables that follow.
    capitalized.
 
 Common Event Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~
 
 Datatype: arrayOfJsonObject
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 The arrayOfJsonObject datatype provides an array of json objects, each
 of which is describ ed by name, schema and other meta-information. It
 +---------------------+------------------+----------+----------------------+
 
 Datatype: arrayOfNamedHashMap
-++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++
 
 The arrayOfNamedHashMap datatype provides an array of hashMaps, each of
 which is associated with a descriptive name. It consists of the
 +---------------------+------------------+-----------+-----------------------+
 
 Datatype: event
-++++++++++++++++
++++++++++++++++
 
 The event datatype consists of the following fields which constitute the
 ‘root level’ of the common event format:
 +--------------+--------------+-----------+-----------------------------------+
 
 Datatype: eventList
-++++++++++++++++++++
++++++++++++++++++++
 
 The eventList datatype consists of the following fields:
 
 +-------------+-------------+----------+-------------------+
 
 Datatype: hashMap
-+++++++++++++++++++
++++++++++++++++++
 
 The hashMap datatype is an ‘associative array’, which is an unordered
 collection of key-value pairs of the form "key": "value", where each key
 +--------------+--------------+-----------+----------------------------------+
 
 Datatype: jsonObjectInstance
-+++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++
 
 The jsonObjectInstance datatype provides meta-information about an
 instance of a jsonObject along with the actual object instance:
 +----------------+------------+----------+-----------------------------------+
 
 Datatype: key
-+++++++++++++++
++++++++++++++
 
 The key datatype is a tuple which provides the name of a key along with
 its value and relative order; it consists of the following fields:
 +----------+---------+-----------+-------------------------------------------+
 
 Datatype: namedHashMap
-++++++++++++++++++++++++
+++++++++++++++++++++++
 
 The namedHashMap datatype is a hashMap which is associated with and
 described by a name; it consists of the following fields:
 +---------+---------+-----------+--------------------------------------------+
 
 Datatype: requestError
-+++++++++++++++++++++++
+++++++++++++++++++++++
 
 The requestError datatype defines the standard request error data
 structure:
 +-----------+--------+-----------+-------------------------------------------+
 
 Datatype: vendorNfNameFields
-+++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++
 
 The vendorNfNameFields provides vendor, nf and nfModule identifying
 information:
 .. _ves_common_event_header_7_2:
 
 Datatype: commonEventHeader
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 The commonEventHeader datatype consists of the following fields common
 to all events:
 
 
 Technology Independent Datatypes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 ‘Fault’ Domain Datatypes
-+++++++++++++++++++++++++
+++++++++++++++++++++++++
 
 Datatype: faultFields
 *********************
 +-----------------+---------+-----------+-------------------------------------+
 
 Heartbeat’ Domain Datatypes
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 Datatype: heartbeatFields
 *************************
 +---------------+---------+-----------+---------------------------------------+
 
 ‘Measurements’ Domain Datatypes
-++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++
 
 Note: NFs are required to report exactly one Measurement event per
 period per sourceName.
 +------------------+-----------+----------+--------------------------------+
 
 Datatype: cpuUsage
-*******************
+******************
 
 The cpuUsage datatype defines the usage of an identifier CPU and
 consists of the following fields:
 +------------+--------+-----------+-------------------------------------------+
 
 Datatype: diskUsage
-********************
+*******************
 
 The diskUsage datatype defines the usage of a disk and consists of the
 following fields:
 +-------------+-------+----------+--------------------------------------------+
 
 Datatype: filesystemUsage
-***************************
+*************************
 
 The filesystemUsage datatype consists of the following fields:
 
 +-------------+--------+-----------+------------------------------------------+
 
 Datatype: hugePages
-********************
+*******************
 
 The hugePages datatype provides metrics on system hugePages; it consists
 of the following fields:
 +--------------------+--------+----------+------------------------------------+
 
 Datatype: ipmi (Intelligent Platform Management Interface)
-***********************************************************
+**********************************************************
 
 The ipmi datatype provides intelligent platform management interface
 metrics; it consists of the following fields:
 +-------------+---------------------+-----------+-----------------------------+
 
 Datatype: ipmiBaseboardTemperature
-************************************
+**********************************
 
 The ipmiBaseboardTemperature datatype consists of the following fields
 which describe ipmi baseboard temperature metrics:
 +-------------+--------+-----------+------------------------------------------+
 
 Datatype: ipmiBaseboardVoltageRegulator
-*****************************************
+***************************************
 
 The ipmiBaseboardVoltageRegulator datatype consists of the following
 fields which describe ipmi baseboard voltage regulator metrics:
 +--------------------+-------+----------+-------------------------------------+
 
 Datatype: ipmiBattery
-**********************
+*********************
 
 The ipmiBattery datatype consists of the following fields which describe
 ipmi battery metrics:
 +---------------------+--------+----------+------------------------------+
 
 Datatype: ipmiFan
-********************
+*****************
 
 The ipmiFan datatype consists of the following fields which describe
 ipmi fan metrics:
 +--------------+-------+----------+-------------------------------------------+
 
 Datatype: ipmiGlobalAggregateTemperatureMargin
-***********************************************
+**********************************************
 
 The ipmiGlobalAggregateTemperatureMargin datatype consists of the
 following fields:
 +-------------+-------+----------+--------------------------------------------+
 
 Datatype: ipmiHsbp
-*******************
+******************
 
 The ipmiHsbp datatype provides ipmi hot swap backplane power metrics; it
 consists of the following fields:
 +------------+-------+----------+---------------------------------------------+
 
 Datatype: ipmiNic
-******************
+*****************
 
 The ipmiNic datatype provides network interface control care metrics; it
 consists of the following fields:
 +------------+-------+----------+---------------------------------------------+
 
 Datatype: ipmiPowerSupply
-**************************
+*************************
 
 The ipmiPowerSupply datatype provides ipmi power supply metrics; it
 consists of the following fields:
 +-----------+-------+----------+----------------------------------------------+
 
 Datatype: ipmiProcessor
-************************
+***********************
 
 The ipmiProcessor datatype provides ipmi processor metrics; it consists
 of the following fields:
 +------------+------------------+-----------+---------------------------------+
 
 Datatype: latencyBucketMeasure
-*******************************
+******************************
 
 The latencyBucketMeasure datatype consists of the following fields which
 describe the number of counts falling within a defined latency bucket:
 +-----------+-------+----------+----------------------------------------------+
 
 Datatype: load
-****************
+**************
 
 The load datatype provides metrics on system cpu and io utilization
 obtained using /proc/loadavg; it consists of the following fields:
 +----------+-------+----------+-----------------------------------------------+
 
 Datatype: machineCheckException
-********************************
+*******************************
 
 The machineCheckException datatype describes machine check exceptions;
 it consists of the following fields:
 +-------------+-------+----------+--------------------------------------------+
 
 Datatype: measurementFields
-****************************
+***************************
 
 The ``measurementFields`` datatype consists of the following fields:
 
 particular the ``aggregationRole``, ``castTo``, and ``isHomogeneous`` keywords.
 
 Datatype: memoryUsage
-**********************
+*********************
 
 The memoryUsage datatype defines the memory usage of a virtual machine
 and consists of the following fields:
 +-----------+-------+----------+----------------------------------------------+
 
 Datatype: nicPerformance
-*************************
+************************
 
 The nicPerformance datatype consists of the following fields which
 describe the performance and errors of an of an identified virtual
 +----------------+-------+----------+-----------------------------------------+
 
 Datatype: processorDimmAggregateThermalMargin
-**********************************************
+*********************************************
 
 The processorDimmAggregateThermalMargin datatype provides intelligent
 platform management interface (ipmi) processor dual inline memory module
 +-----------------+-------+----------+----------------------------------------+
 
 Datatype: processStats
-***********************
+**********************
 
 The processStats datatype provides metrics on system processes; it
 consists of the following fields:
 +-----------+-------+----------+----------------------------------------------+
 
 ‘Notification’ Domain Datatypes
-++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++
 
 Datatype: notificationFields
-******************************
+****************************
 
 The notificationFields datatype consists of the following fields:
 
 Other notificationFields are not used for fileReady.
 
 ‘Other’ Domain Datatypes
-+++++++++++++++++++++++++
+++++++++++++++++++++++++
 
 Datatype: otherFields
-**********************
+*********************
 
 The otherFields datatype defines fields for events belonging to the
 'other' domain of the commonEventHeader domain enumeration; it consists
 +-------------+-------------+----------+--------------------------------------+
 
 ‘perf3gpp’ Domain Datatypes
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 Datatype: measDataCollection
-*****************************
+****************************
 
 The measDataCollection datatype defines a 3GPP measurement collection
 structure aligned with the 3GPP PM format; it consists of the following
 +----------------+---------+----------+---------------------------------------+
 
 Datatype: measInfo
-********************
+******************
 
 The measInfo datatype provides measurement information; it consists of
 the following fields:
 +-------+--------------------------+----------+-------------------------------+
 
 Datatype: measInfoIdInteger
-****************************
+***************************
 
 The measInfoIdInteger datatype provides an integer measurement group
 identifier; it consists of the following fields:
 +---------------+---------+----------+--------------------------------------+
 
 Datatype: measInfoIdString
-***************************
+**************************
 
 The measInfoIdString datatype provides a string measurement group
 identifier; it consists of the following fields:
 +---------------+-----------+----------+--------------------------------------+
 
 Datatype: measResultInteger
-****************************
+***************************
 
 The measResultInteger datatype provides an integer 3GPP PM measurement
 result; it consists of the following fields:
 +----------+-----------+-------------+------------------------------------+
 
 Datatype: measResultNull
-*************************
+************************
 
 The measResultNull datatype provides a null 3GPP PM measurement result;
 it consists of the following fields:
 +----------+-----------+-------------+------------------------------------+
 
 Datatype: measResultNumber
-***************************
+**************************
 
 The measResultNumber datatype provides a number 3GPP PM measurement
 result; it consists of the following fields:
 +----------+-----------+-------------+------------------------------------+
 
 Datatype: measResultString
-***************************
+**************************
 
 The measResultString datatype provides a string 3GPP PM measurement
 result; it consists of the following fields:
 +----------+-----------+-------------+------------------------------------+
 
 Datatype: measTypesInteger
-***************************
+**************************
 
 The measTypesInteger datatype provides an array of integer measurement
 identifiers associated with the measurement results; it consists of the
 +----------+--------+----------+----------------------------------------------+
 
 Datatype: measTypesString
-**************************
+*************************
 
 The measTypesString datatype provides an array of string measurement
 identifiers associated with the measurement results; it consists of the
 +----------+-------+----------+-----------------------------------------------+
 
 Datatype: measValues
-*********************
+********************
 
 The measValues datatype provides 3GPP measurement values; it consists of
 the following fields:
 +---------+----------------------------------+----------+---------------------+
 
 Datatype: perf3gppFields
-*************************
+************************
 
 The perf3gppFields datatype defines fields for 3GPP PM format events,
 based on 3GPP TS 28.550, belonging to the 'perf3gpp' domain of the
 +--------------+-----------+----------+---------------------------------------+
 
 ‘pnfRegistration’ Domain Datatypes
-++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
 
 Datatype: pnfRegistrationFields
-********************************
+*******************************
 
 The pnfRegistrationFields datatype defines fields for events belonging
 to the 'pnfRegistration' domain of the commonEventHeader domain
 +-----------------+--------+----------+---------------------------------------+
 
 ‘State Change’ Domain Datatypes
-++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++
 
 Datatype: stateChangeFields
-*****************************
+***************************
 
 The stateChangeFields datatype consists of the following fields:
 
 +--------------+--------+----------+------------------------------------------+
 
 ‘StndDefined’ Domain Datatypes
-++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++
 
 Datatype: stndDefinedFields
-*****************************
+***************************
 
 The stndDefinedFields datatype consists of the following fields:
 
 +--------------+--------+----------+------------------------------------------+
 
 Additional rules, when using stndDefined domain
-************************************************
+***********************************************
 
 Following rules shall be followed, when using the StndDefined domain:
 
 VES.commonEventHeader.stndDefinedNamespace set.
 
 ‘Syslog’ Domain Datatypes
-++++++++++++++++++++++++++
++++++++++++++++++++++++++
 
 Datatype: syslogFields
-***********************
+**********************
 
 The syslogFields datatype consists of the following fields:
 
     https://www.iana.org/assignments/syslog-parameters/syslog-parameters.xhtml
 
 ‘Threshold Crossing Alert’ Domain Datatypes
-++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++
 
 Datatype: counter
-******************
+*****************
 
 The counter datatype consists of the following fields:
 
 +------------+--------+----------+--------------------------------------------+
 
 Datatype: thresholdCrossingAlertFields
-****************************************
+**************************************
 
 The thresholdCrossingAlertFields datatype consists of the following
 fields:
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Mobile Flow’ Domain Datatypes
-++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++
 
 Datatype: gtpPerFlowMetrics
-****************************
+***************************
 
 The gtpPerFlowMetrics datatype consists of the following fields:
 
 +---------------+--------+----------+-----------------------------------------+
 
 Datatype: mobileFlowFields
-***************************
+**************************
 
 The mobileFlowFields datatype consists of the following fields:
 
 +++++++++++++++++++++++++++++++
 
 Datatype: sipSignalingFields
-*****************************
+****************************
 
 The sipSignalingFields datatype communicates information about sip
 signaling messages, parameters and signaling state; it consists of the
 +--------------+-----------+----------+---------------------------------------+
 
 ‘Voice Quality’ Domain Datatypes
-+++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++
 
 Datatype: endOfCallVqmSummaries
-*********************************
+*******************************
 
 The endOfCallVqmSummaries datatype provides end of call voice quality
 metrics; it consists of the following fields:
 +--------------+-------+----------+-------------------------------------------+
 
 Datatype: voiceQualityFields
-*****************************
+****************************
 
 The voiceQualityFields datatype provides statistics related to customer
 facing voice products; consists of the following fields:
 Table - Policy Exceptions
 
 REST Operation Overview
-~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~
 
 REST Operation Summary
-+++++++++++++++++++++++
+++++++++++++++++++++++
 
 +---------------------+---------+------------------------------------------+
 | **Operation Action**| **HTTP**| Resource URL relative to {ServerRoot}\   |
 a mandatory requirement.
 
 Operation: publishAnyEvent
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Functional Behavior
-+++++++++++++++++++++
++++++++++++++++++++
 
 Allows authorized clients to publish any single event to the VES event
 listener.
    messages
 
 Call Flow
-++++++++++
++++++++++
 
 .. seqdiag::
     :caption: ``publishAnyEvent`` Call Flow
     }
 
 Input Parameters
-+++++++++++++++++
+++++++++++++++++
 
 Header Fields (note: all parameter names shall be treated as
 case-insensitive):
 +--------------+--------------+--------------+-------------------------------+
 
 Output Parameters
-++++++++++++++++++
++++++++++++++++++
 
 Header fields:
 
 +--------------+--------------+----------------+------------------------------+
 
 HTTP Status Codes
-++++++++++++++++++
++++++++++++++++++
 
 +-----+--------------+--------------------------------------------------------+
 | Code| Reason Phrase| Description                                            |
 +-----+--------------+--------------------------------------------------------+
 
 Sample Request and Response
-++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 Sample Request
-***************
+**************
 
 .. code-block:: http
 
 
 
 Sample Success Response
-************************
+***********************
 
 .. code-block:: http
 
     X-LatestVersion: 7.2
 
 Sample Error Responses
-************************
+**********************
 
 Sample Policy Exception
-""""""""""""""""""""""""
+"""""""""""""""""""""""
 
 .. code-block:: http
 
 
 
 Sample Service Exception
-"""""""""""""""""""""""""
+""""""""""""""""""""""""
 
 .. code-block:: http
 
     }
 
 Operation: publishEventBatch
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Functional Behavior
 +++++++++++++++++++
 not individual events within the ``publishEventBatch``.
 
 Call Flow
-+++++++++++
++++++++++
 
 .. seqdiag::
     :caption: ``publishEventBatch`` Call Flow
     }
 
 Input Parameters
-+++++++++++++++++
+++++++++++++++++
 
 Header Fields (note: all parameter names shall be treated as
 case-insensitive):
 +--------------+--------------+--------------+-------------------------------+
 
 Output Parameters
-+++++++++++++++++++
++++++++++++++++++
 
 Header fields:
 
 +-----+--------------+--------------------------------------------------------+
 
 Sample Request and Response
-+++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
 
 Sample Request
-****************
+**************
 
 .. code-block:: http
 
     }
 
 Sample Success Response
-*************************
+***********************
 
 .. code-block:: http
 
     X-LatestVersion: 7.2
 
 Sample Error Responses
-************************
+**********************
 
 Sample Policy Exception
-""""""""""""""""""""""""
+"""""""""""""""""""""""
 
 .. code-block:: http
 
 
 
 Sample Service Exception
-"""""""""""""""""""""""""
+""""""""""""""""""""""""
 
 .. code-block:: http
 
 
 
 Terminology
-^^^^^^^^^^^^
+^^^^^^^^^^^
 
 Terminology used in this document is summarized below:
 
 re-usable, and responsible for a single capability.
 
 Appendix: Historical Change Log
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 For the latest changes, see the Change Block just before the Table of
 Contents.
 
 
 
 Requirement Changes Introduced in Casablanca
-========================================================
+--------------------------------------------
 
 This document summarizes the requirement changes by section that were
 introduced between the Beijing release and
     :depth: 2
 
 Summary of Changes
-------------------
+^^^^^^^^^^^^^^^^^^
 
 * **Requirements Added:** 102
 * **Requirements Changed:** 232
 
 
 Configuration Management > Ansible Standards and Capabilities > xNF Configuration via Ansible Requirements > Ansible Client Requirements
-----------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Configuration Management > Ansible Standards and Capabilities > xNF Configuration via Ansible Requirements > Ansible Playbook Requirements
-------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Configuration Management > Chef Standards and Capabilities > xNF Configuration via Chef Requirements > Chef Roles/Requirements
-------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > Controller Interactions With xNF > Configuration Commands
-------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > Controller Interactions With xNF > HealthCheck and Failure Related Commands
-------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > Controller Interactions With xNF > Lifecycle Management Related Commands
----------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Configuration Management > NETCONF Standards and Capabilities > xNF Configuration via NETCONF Requirements > NETCONF Server Requirements
-----------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Contrail Resource Parameters > Contrail Network Parameters > External Networks
-------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Heat > Cinder Volumes
----------------------
+^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Heat > Heat Orchestration Template Format > Heat Orchestration Template Structure > resources > metadata
---------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Heat > Heat Template Constructs > Heat Files Support (get_file)
----------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Heat > Heat Template Constructs > Nested Heat Template Requirements
--------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Heat > Networking > External Networks
--------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Heat > Networking > Internal Networks
--------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Heat > ONAP Resource ID and Parameter Naming Convention > Contrail Resource Parameters > Contrail Network Parameters > External Networks
-----------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Heat > ONAP Resource ID and Parameter Naming Convention > Resource: OS::Nova::Server – Metadata Parameters > vm_role
---------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Heat > ONAP Support of Environment Files
-----------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Monitoring & Management > Data Structure Specification of the Event Record
---------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Event Records - Data Structure Description > Common Event Header
-------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Event Records - Data Structure Description > Miscellaneous
-------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Monitoring & Management Requirements > Asynchronous and Synchronous Data Delivery
------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Monitoring & Management Requirements > Bulk Performance Measurement
----------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Monitoring & Management Requirements > Google Protocol Buffers (GPB)
-----------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Monitoring & Management Requirements > JSON
----------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Monitoring & Management Requirements > Reporting Frequency
-------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Monitoring & Management Requirements > VNF telemetry via standardized interface
----------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces
----------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > Bulk Telemetry Transmission
----------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > xNF Telemetry using Google Protocol Buffers
--------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > xNF Telemetry using VES/JSON Model
-----------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP Heat Cinder Volumes
-------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP Heat Heat Template Constructs > Heat Files Support (get_file)
-------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Heat Template Constructs > Nested Heat Templates > Nested Heat Template Requirements
-----------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP Heat Networking > External Networks
-----------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Networking > Internal Networks
-----------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format
----------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP Heat Orchestration Template Format > Environment File Format
------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > parameters
---------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > parameters > constraints
-----------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > parameters > default
-------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > parameters > type
----------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > resources
--------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > resources > deletion_policy
--------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > resources > external_id
----------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > resources > metadata
-------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > resources > properties
---------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Base Modules
-------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Cinder Volume Modules
----------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Incremental Modules
--------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Nested Heat file
-----------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP VNF Modularity Overview
--------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > Output Parameters > ONAP Volume Module Output Parameters
------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat VNF Modularity
-------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Output Parameter Names > Predefined Output Parameters > OAM Management IP Addresses
-----------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP TOSCA VNFD Requirements > TOSCA VNF Descriptor > Capability Types
-----------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD Requirements > TOSCA VNF Descriptor > Data Types
-----------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD Requirements > TOSCA VNF Descriptor > General
--------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD Requirements > TOSCA VNF Descriptor > Interface Types
----------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD Requirements > TOSCA VNF Descriptor > Relationship Types
-------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD Requirements > VNF CSAR Package > VNF Package Contents
-----------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD Requirements > VNF CSAR Package > VNF Package Structure and Format
-----------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 PNF Plug and Play > PNF Plug and Play
--------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Resource IDs
-------------
+^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::VirtualNetwork
------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Neutron::Net
-----------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Introduction > Items to Note
------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address > VIP Assignment, External Networks, Supported by Automation
------------------------------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: fixed_ips, Map Property: ip_address
-----------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: fixed_ips, Map Property: subnet
-------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: network
-------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server - Parameters
----------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Resource: OS::Nova::Server - Parameters > Property: Name
---------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Resource: OS::Nova::Server - Parameters > Property: Name > Contrail Issue with Values for OS::Nova::Server Property Name
-------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server - Parameters > Property: availability_zone
----------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server - Parameters > Property: flavor
-----------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Resource: OS::Nova::Server - Parameters > Property: image
----------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Resource: OS::Nova::Server Metadata Parameters > environment_context
---------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vf_module_id
--------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vf_module_index
-----------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vf_module_name
----------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vm_role
---------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vnf_id
--------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vnf_name
----------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > workload_context
------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF On-boarding and package management > Resource Description
--------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 VNF On-boarding and package management > Testing
-------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF Resiliency > Virtual Function - Container Recovery Requirements
--------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 VNF Security > VNF API Security Requirements
---------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF Security > VNF Cryptography Requirements
---------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF Security > VNF Data Protection Requirements
------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF Security > VNF General Security Requirements
-------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 VNF Security > VNF Identity and Access Management Requirements
---------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 VNF Security > VNF Security Analytics Requirements
---------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 {network-role}
---------------
+^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 {vm-type}
----------
+^^^^^^^^^
 
 
 Requirements Changed
 
 
 
 Requirement Changes Introduced in Dublin
-========================================================
+----------------------------------------
 
 This document summarizes the requirement changes by section that were
 introduced between the Casablanca release and
     :depth: 2
 
 Summary of Changes
-------------------
+^^^^^^^^^^^^^^^^^^
 
 * **Requirements Added:** 64
 * **Requirements Changed:** 275
 
 
 Configuration Management > Ansible Standards and Capabilities > VNF or PNF Configuration via Ansible Requirements > Ansible Client Requirements
------------------------------------------------------------------------------------------------------------------------------------------------
-
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Requirements Changed
 ~~~~~~~~~~~~~~~~~~~~
 
 
 Configuration Management > Ansible Standards and Capabilities > VNF or PNF Configuration via Ansible Requirements > Ansible Playbook Requirements
--------------------------------------------------------------------------------------------------------------------------------------------------
-
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Requirements Changed
 ~~~~~~~~~~~~~~~~~~~~
 
 
 Configuration Management > Chef Standards and Capabilities > VNF or PNF Configuration via Chef Requirements > Chef Client Requirements
---------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > Chef Standards and Capabilities > VNF or PNF Configuration via Chef Requirements > Chef Roles/Requirements
--------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > Controller Interactions With VNF or PNF > Configuration Commands
--------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > Controller Interactions With VNF or PNF > HealthCheck and Failure Related Commands
--------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > Controller Interactions With VNF or PNF > Lifecycle Management Related Commands
-----------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > NETCONF Standards and Capabilities > VNF or PNF Configuration via NETCONF Requirements > Configuration Management
---------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > NETCONF Standards and Capabilities > VNF or PNF Configuration via NETCONF Requirements > NETCONF Server Requirements
------------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Configuration Management > NETCONF Standards and Capabilities > xNF Configuration via NETCONF Requirements > NETCONF Server Requirements
-----------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 Configuration Management > VNF or PNF REST APIs > REST APIs
------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Contrail Resource Parameters > OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs > External Networks
----------------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Contrail Resource Parameters > OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs > Internal Networks
----------------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Contrail Resource Parameters > Resource OS::ContrailV2::InstanceIp > Resource OS::ContrailV2::InstanceIp Property instance_ip_address
--------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Contrail Resource Parameters > Resource OS::ContrailV2::InstanceIp > Resource OS::ContrailV2::InstanceIp Property subnet_uuid
------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Data Structure Specification of the Event Record
---------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Event Records - Data Structure Description > Common Event Header
-------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Monitoring & Management Requirements > Addressing and Delivery Protocol
--------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Monitoring & Management Requirements > Asynchronous and Synchronous Data Delivery
------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Monitoring & Management Requirements > Bulk Performance Measurement
----------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Monitoring & Management > Monitoring & Management Requirements > Google Protocol Buffers (GPB)
-----------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Monitoring & Management Requirements > JSON
----------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Monitoring & Management Requirements > Reporting Frequency
-------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Monitoring & Management Requirements > Security
--------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Monitoring & Management Requirements > VNF telemetry via standardized interface
----------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces
----------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > Bulk Telemetry Transmission
----------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > VNF or PNF Telemetry using Google Protocol Buffers
---------------------------------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > VNF or PNF Telemetry using VES/JSON Model
------------------------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Heat Template Constructs > Heat Files Support (get_file)
-------------------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 ONAP Heat Heat Template Constructs > Key Pairs
-----------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP Heat Heat Template Constructs > Nested Heat Templates > Nested Heat Template Requirements
-----------------------------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP Heat Networking > External Networks
-----------------------------------------
+
 
 
 Requirements Removed
 
 
 ONAP Heat Networking > Internal Networks
-----------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > parameters > constraints
-----------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > resources > properties
---------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Base Modules
-------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Cinder Volume Modules
----------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Incremental Modules
--------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Nested Heat file
-----------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP VNF Modularity Overview
--------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP VNF On-Boarding
------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP Heat Orchestration Templates Overview > Output Parameters > ONAP Base Module Output Parameters
----------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > Output Parameters > ONAP Volume Module Output Parameters
------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP Heat Support of Environment Files
---------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP Heat VNF Modularity
-------------------------
+
 
 
 Requirements Changed
 
 
 ONAP TOSCA VNFD Requirements > VNF CSAR Package > VNF Package Contents
-----------------------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Capability Types
-------------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Data Types
-------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > General
----------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Node Types
-------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Policy Types
---------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Relationship Types
---------------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD or PNFD Requirements > TOSCA VNF Descriptor > General
----------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 ONAP TOSCA VNFD or PNFD Requirements > VNF or PNF CSAR Package > VNF Package Contents
--------------------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD or PNFD Requirements > VNF or PNF CSAR Package > VNF Package Structure and Format
--------------------------------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 ONAP TOSCA VNFD or PNFD Requirements > VNF or PNF CSAR Package > VNF or PNF Package Authenticity and Integrity
---------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 PNF Plug and Play > PNF Plug and Play
--------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs
-------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::InstanceIp
--------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::ServiceTemplate
-------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::VirtualMachineInterface
---------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::VirtualNetwork
------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Cinder::Volume
-------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Cinder::VolumeAttachment
-----------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Heat::ResourceGroup
------------------------------------------------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Neutron::Port
------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Neutron::Subnet
--------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Nova::Keypair
------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Nova::Server
-----------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource Property “name”
-------------------------
+
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Introduction > Items to Note
------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address
-----------------------------------------------------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address > VIP Assignment, External Networks
-----------------------------------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address > VIP Assignment, External Networks, Supported by Automation
------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address > VIP Assignment, Internal Networks
-----------------------------------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 Resource: OS::Neutron::Port - Parameters > Property: fixed_ips, Map Property: ip_address
-----------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: network
-------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server - Parameters
----------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server - Parameters > Property: Name
---------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server - Parameters > Property: availability_zone
----------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > environment_context
---------------------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vf_module_id
--------------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vf_module_index
-----------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 Resource: OS::Nova::Server Metadata Parameters > vf_module_name
----------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 Resource: OS::Nova::Server Metadata Parameters > vm_role
---------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vnf_id
--------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vnf_name
----------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 Resource: OS::Nova::Server Metadata Parameters > workload_context
------------------------------------------------------------------
+
 
 
 Requirements Removed
 
 
 VNF On-boarding and package management > Compute, Network, and Storage Requirements
------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 VNF On-boarding and package management > Licensing Requirements
----------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 VNF On-boarding and package management > Resource Configuration
----------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 VNF On-boarding and package management > Resource Configuration > Configuration Management via Ansible
-------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 VNF On-boarding and package management > Resource Configuration > Configuration Management via Chef
----------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 VNF On-boarding and package management > Resource Configuration > Configuration Management via NETCONF/YANG
------------------------------------------------------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 VNF On-boarding and package management > Resource Control Loop
---------------------------------------------------------------
+
 
 
 Requirements Changed
 
 
 VNF On-boarding and package management > Resource Description
--------------------------------------------------------------
+
 
 
 Requirements Added
 
 
 VNF On-boarding and package management > Testing
-------------------------------------------------
+
 
 
 Requirements Changed
 
 
 VNF Resiliency > Monitoring & Dashboard
----------------------------------------
+
 
 
 Requirements Changed
 
 
 {network-role}
---------------
+
 
 
 Requirements Changed
 
 
 {vm-type}
----------
+
 
 
 Requirements Changed
 
 
 
 Requirement Changes Introduced in El Alto
-========================================================
+-----------------------------------------
 
 This document summarizes the requirement changes by section that were
 introduced between the Dublin release and
     :depth: 2
 
 Summary of Changes
-------------------
+^^^^^^^^^^^^^^^^^^
 
 * **Requirements Added:** 9
 * **Requirements Changed:** 21
 
 
 Monitoring & Management > Data Structure Specification of the Event Record
---------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Monitoring & Management Requirements > Security
--------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > resources > properties
---------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Base Modules
-------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Cinder Volume Modules
----------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Incremental Modules
--------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Nested Heat file
-----------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat VNF Modularity
-------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 PNF Plug and Play > PNF Plug and Play
--------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server - Parameters
----------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server - Parameters > Property: availability_zone
----------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 VNF On-boarding and package management > Resource Control Loop
---------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF On-boarding and package management > Resource Description
--------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF Security > VNF Cryptography Requirements
---------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF Security > VNF General Security Requirements
-------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF Security > VNF Identity and Access Management Requirements
---------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 VNF Security > VNF Security Analytics Requirements
---------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Removed
 
 
 VNF or PNF CSAR Package > VNF Package Contents
-----------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF or PNF CSAR Package > VNF or PNF Package Authenticity and Integrity
------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 
 Requirement Changes Introduced in Frankfurt
-========================================================
+-------------------------------------------
 
 This document summarizes the requirement changes by section that were
 introduced between the El Alto release and
     :depth: 2
 
 Summary of Changes
-------------------
+^^^^^^^^^^^^^^^^^^
 
 * **Requirements Added:** 22
 * **Requirements Changed:** 129
 
 
 Configuration Management
-------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Configuration Management > Ansible Standards and Capabilities > VNF or PNF Configuration via Ansible Requirements > Ansible Client Requirements
------------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Configuration Management > Ansible Standards and Capabilities > VNF or PNF Configuration via Ansible Requirements > Ansible Playbook Requirements
--------------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Configuration Management > NETCONF Standards and Capabilities > VNF or PNF Configuration via NETCONF Requirements > LCM Operations via NETCONF
-----------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Configuration Management > NETCONF Standards and Capabilities > VNF or PNF Configuration via NETCONF Requirements > NETCONF Server Requirements
------------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Contrail Resource Parameters > Contrail Network Parameters > ONAP External Networks
------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Contrail Resource Parameters > OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs > ONAP External Networks
---------------------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Contrail Resource Parameters > OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs > ONAP Internal Networks
---------------------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Contrail Resource Parameters > Resource OS::ContrailV2::InstanceIp > Resource OS::ContrailV2::InstanceIp Property instance_ip_address
--------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Contrail Resource Parameters > Resource OS::ContrailV2::InstanceIp > Resource OS::ContrailV2::InstanceIp Property subnet_uuid
------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Monitoring & Management > Data Structure Specification of the Event Record
---------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Heat Template Constructs > Nested Heat Templates > Nested Heat Template Requirements
-----------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Networking > External Networks
-----------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Networking > Internal Networks
-----------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > parameters
---------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > resources
--------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 Resource IDs
-------------
+^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::InstanceIp
--------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::NetworkIpam
---------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::VirtualMachineInterface
---------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::VirtualNetwork
------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Neutron::Net
-----------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Neutron::Port
------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Neutron::SecurityGroup
---------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Neutron::Subnet
--------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Nova::Keypair
------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Introduction > Items to Note
------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address > VIP Assignment, ONAP External Networks
----------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address > VIP Assignment, ONAP Internal Networks
----------------------------------------------------------------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: fixed_ips, Map Property: ip_address
-----------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: fixed_ips, Map Property: subnet
-------------------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Neutron::Port - Parameters > Property: network
-------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 Resource: OS::Nova::Server Metadata Parameters > vf_module_index
-----------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 VNF Security > VNF General Security Requirements
-------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 VNF Security > VNF Identity and Access Management Requirements
---------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 VNF and PNF On-boarding and package management > Resource Configuration
------------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 VNF or PNF CSAR Package > VNF or PNF Package Contents
------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Added
 
 
 VNF or PNF CSAR Package > VNF or PNF Package Structure and Format
------------------------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
 
 {network-role}
---------------
+^^^^^^^^^^^^^^
 
 
 Requirements Changed
 
     "updated": directives.unchanged,
     "impacts": directives.unchanged,
     "validation_mode": directives.unchanged,
-    "validated_by": directives.unchanged,
-    "test": directives.unchanged,
-    "test_case": directives.unchanged,
-    "test_file": directives.unchanged,
-    "notes": directives.unchanged,
 }
 
 needs_id_regex = "^[A-Z0-9]+-[A-Z0-9]+"
 
+++ /dev/null
-# -*- coding: utf8 -*-
-# org.onap.vnfrqts/requirements
-# ============LICENSE_START====================================================
-# Copyright © 2018 AT&T Intellectual Property. All rights reserved.
-#
-# Unless otherwise specified, all software contained herein is licensed
-# under the Apache License, Version 2.0 (the "License");
-# you may not use this software except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# Unless otherwise specified, all documentation contained herein is licensed
-# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
-# you may not use this documentation except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#             https://creativecommons.org/licenses/by/4.0/
-#
-# Unless required by applicable law or agreed to in writing, documentation
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# ============LICENSE_END============================================
-
-"""
-This script will consume the `invalid_metadata.csv` file produced by
-`gen_requirement_changes.py`, then add/update any `:introduced:` or `:updated:`
-attributes that may be missing from req directives.
-"""
-import csv
-import os
-import re
-from collections import OrderedDict
-
-import pytest
-
-INPUT_FILE = "invalid_metadata.csv"
-
-
-def load_invalid_reqs(fileobj):
-    """Load the invalid requirements from the input file into a dict"""
-    reader = csv.reader(fileobj)
-    next(reader)  # skip header
-    return {row[0]: (row[1].strip(), row[2].strip()) for row in reader}
-
-
-def check(predicate, msg):
-    """Raises a RuntimeError with the given msg if the predicate is false"""
-    if not predicate:
-        raise RuntimeError(msg)
-
-
-class MetadataFixer:
-    """Takes a dict of requirement ID to expected metadata value.  The
-    NeedsVisitor will pass the requirement attributes as a a dict
-    to `__call__`.  If the requirement is one that needs to be fixed, then
-    it will add or update the attributes as needed and return it to the
-    visitor, otherwise it will return the attributes unchanged."""
-
-    def __init__(self, reqs_to_fix):
-        """Initialize the fixer with a dict of requirement ID to tuple of
-        (attr name, attr value)."""
-        self.reqs_to_fix = reqs_to_fix
-
-    def __call__(self, metadata):
-        """If metadata is for a requirement that needs to be fixed, then
-        adds or updates the attribute as needed and returns it, otherwise
-        it returns metadata unchanged."""
-        r_id = metadata[":id:"]
-        if r_id in self.reqs_to_fix:
-            attr, value = self.reqs_to_fix[r_id]
-            metadata[attr] = value
-        return metadata
-
-
-class NeedsVisitor:
-    """Walks a directory for reStructuredText files and detects needs
-    directives as defined by sphinxcontrib-needs.  When a directive is
-    found, then attributes are passed to a callback for processing if the
-    callback returns a dict of attributes, then the revised dict is used
-    instead of the attributes that were passed"""
-
-    def __init__(self, func):
-        self.directives = re.compile("\.\.\s+req::.*")
-        self.func = func
-
-    def process(self, root_dir):
-        """Walks the `root_dir` looking for rst to files to parse"""
-        for dir_path, sub_dirs, filenames in os.walk(root_dir):
-            for filename in filenames:
-                if filename.lower().endswith(".rst"):
-                    self.handle_rst_file(os.path.join(dir_path, filename))
-
-    @staticmethod
-    def read(path):
-        """Read file at `path` and return lines as list"""
-        with open(path, "r") as f:
-            print("path=", path)
-            return list(f)
-
-    @staticmethod
-    def write(path, content):
-        """Write a content to the given path"""
-        with open(path, "w") as f:
-            for line in content:
-                f.write(line)
-
-    def handle_rst_file(self, path):
-        lines = (line for line in self.read(path))
-        new_contents = []
-        for line in lines:
-            if self.is_needs_directive(line):
-                metadata_lines = self.handle_need(lines)
-                new_contents.append(line)
-                new_contents.extend(metadata_lines)
-            else:
-                new_contents.append(line)
-        self.write(path, new_contents)
-
-    def is_needs_directive(self, line):
-        """Returns True if the line denotes the start of a needs directive"""
-        return bool(self.directives.match(line))
-
-    def handle_need(self, lines):
-        """Called when a needs directive is encountered.  The lines
-        will be positioned on the line after the directive.  The attributes
-        will be read, and then passed to the visitor for processing"""
-        attributes = OrderedDict()
-        indent = 4
-        for line in lines:
-            if line.strip().startswith(":"):
-                indent = self.calc_indent(line)
-                attr, value = self.parse_attribute(line)
-                attributes[attr] = value
-            else:
-                if attributes:
-                    new_attributes = self.func(attributes)
-                    attr_lines = self.format_attributes(new_attributes, indent)
-                    return attr_lines + [line]
-                else:
-                    return [line]
-
-    @staticmethod
-    def format_attributes(attrs, indent):
-        """Converts a dict back to properly indented lines"""
-        spaces = " " * indent
-        return ["{}{} {}\n".format(spaces, k, v) for k, v in attrs.items()]
-
-    @staticmethod
-    def parse_attribute(line):
-        return re.split("\s+", line.strip(), maxsplit=1)
-
-    @staticmethod
-    def calc_indent(line):
-        return len(line) - len(line.lstrip())
-
-
-if __name__ == '__main__':
-    with open(INPUT_FILE, "r") as f:
-        invalid_reqs = load_invalid_reqs(f)
-    metadata_fixer = MetadataFixer(invalid_reqs)
-    visitor = NeedsVisitor(metadata_fixer)
-    visitor.process("docs")
-
-
-# Tests
-@pytest.fixture
-def metadata_fixer():
-    fixes = {
-        "R-1234": (":introduced:", "casablanca"),
-        "R-5678": (":updated:", "casablanca"),
-    }
-    return MetadataFixer(fixes)
-
-
-def test_check_raises_when_false():
-    with pytest.raises(RuntimeError):
-        check(False, "error")
-
-
-def test_check_does_not_raise_when_true():
-    check(True, "error")
-
-
-def test_load_invalid_req():
-    contents = [
-        "reqt_id, attribute, value",
-        "R-1234,:introduced:, casablanca",
-        "R-5678,:updated:, casablanca",
-    ]
-    result = load_invalid_reqs(contents)
-    assert len(result) == 2
-    assert result["R-1234"][0] == ":introduced:"
-    assert result["R-1234"][1] == "casablanca"
-
-
-def test_metadata_fixer_adds_when_missing(metadata_fixer):
-    attributes = {":id:": "R-5678", ":introduced:": "beijing"}
-    result = metadata_fixer(attributes)
-    assert ":updated:" in result
-    assert result[":updated:"] == "casablanca"
-
-
-def test_metadata_fixer_updates_when_incorrect(metadata_fixer):
-    attributes = {":id:": "R-5678", ":updated:": "beijing"}
-    result = metadata_fixer(attributes)
-    assert ":updated:" in result
-    assert result[":updated:"] == "casablanca"
-    assert ":introduced:" not in result
-
-
-def test_needs_visitor_process(monkeypatch):
-    v = NeedsVisitor(lambda x: x)
-    paths = []
-
-    def mock_handle_rst(path):
-        paths.append(path)
-
-    monkeypatch.setattr(v, "handle_rst_file", mock_handle_rst)
-    v.process("docs")
-
-    assert len(paths) > 1
-    assert all(path.endswith(".rst") for path in paths)
-
-
-def test_needs_visitor_is_needs_directive():
-    v = NeedsVisitor(lambda x: x)
-    assert v.is_needs_directive(".. req::")
-    assert not v.is_needs_directive("test")
-    assert not v.is_needs_directive(".. code::")
-
-
-def test_needs_visitor_format_attributes():
-    v = NeedsVisitor(lambda x: x)
-    attr = OrderedDict()
-    attr[":id:"] = "R-12345"
-    attr[":updated:"] = "casablanca"
-    lines = v.format_attributes(attr, 4)
-    assert len(lines) == 2
-    assert lines[0] == "    :id: R-12345"
-    assert lines[1] == "    :updated: casablanca"
-
-
-def test_needs_visitor_parse_attributes():
-    v = NeedsVisitor(lambda x: x)
-    assert v.parse_attribute("   :id: R-12345") == [":id:", "R-12345"]
-    assert v.parse_attribute("   :key: one two") == [":key:", "one two"]
-
-
-def test_needs_visitor_calc_indent():
-    v = NeedsVisitor(lambda x: x)
-    assert v.calc_indent("    test") == 4
-    assert v.calc_indent("   test") == 3
-    assert v.calc_indent("test") == 0
-
-
-def test_needs_visitor_no_change(monkeypatch):
-    v = NeedsVisitor(lambda x: x)
-    lines = """.. req::
-        :id: R-12345
-        :updated: casablanca
-        
-        Here's my requirement"""
-    monkeypatch.setattr(v, "read", lambda path: lines.split("\n"))
-    result = []
-    monkeypatch.setattr(v, "write", lambda _, content: result.extend(content))
-
-    v.handle_rst_file("dummy_path")
-    assert len(result) == 5
-    assert "\n".join(result) == lines
-
-
-def test_needs_visitor_with_fix(monkeypatch):
-    fixer = MetadataFixer({"R-12345": (":introduced:", "casablanca")})
-    v = NeedsVisitor(fixer)
-    lines = """.. req::
-        :id: R-12345
-
-        Here's my requirement"""
-    monkeypatch.setattr(v, "read", lambda path: lines.split("\n"))
-    result = []
-    monkeypatch.setattr(v, "write", lambda _, content: result.extend(content))
-
-    v.handle_rst_file("dummy_path")
-    assert len(result) == 5
-    assert ":introduced: casablanca" in "\n".join(result)
-
-
-def test_load_invalid_reqs():
-    input_file = [
-        "r_id,attr,value",
-        "R-12345,:updated:,casablanca"
-    ]
-    result = load_invalid_reqs(input_file)
-    assert "R-12345" in result
-    assert result["R-12345"][0] == ":updated:"
-    assert result["R-12345"][1] == "casablanca"
 
 
 
 Requirement Changes Introduced in {{ current_version|title }}
-========================================================
+-------------------------------------------------------
 
 This document summarizes the requirement changes by section that were
 introduced between the {{ prior_version|title }} release and
     :depth: 2
 
 Summary of Changes
-------------------
+^^^^^^^^^^^^^^^^^^
 
 * **Requirements Added:** {{ num_added }}
 * **Requirements Changed:** {{ num_changed }}
 
 commands =
     sphinx-build -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html
     echo "Generated docs available in {toxinidir}/_build/html"
+    python check.py
 whitelist_externals =
     echo
     git
     sh
+    python
 
 [testenv:needs]
 basepython = python3