Merge "Create script for SBOM and Vulnerabilities analysis of docker images."
diff --git a/solution/README-O-RU-Controller.md b/solution/README-O-RU-Controller.md
index e5f6bd3..50f0760 100644
--- a/solution/README-O-RU-Controller.md
+++ b/solution/README-O-RU-Controller.md
@@ -5,24 +5,58 @@
 
 ## Prerequisites
 
+### Operating (HOST) System
+
 ```
 $ cat /etc/os-release | grep PRETTY_NAME
-PRETTY_NAME="Ubuntu 22.04.1 LTS"
+PRETTY_NAME="Ubuntu 22.04.2 LTS"
+```
 
-$ docker --version
-Docker version 20.10.12, build 20.10.12-0ubuntu4
-
-$ docker-compose version
-docker-compose version 1.29.2, build unknown
-docker-py version: <module 'docker.version' from '/usr/local/lib/python3.10/dist-packages/docker/version.py'>
-CPython version: 3.10.6
-OpenSSL version: OpenSSL 3.0.2 15 Mar 2022
-
-
-$ git --version
-git version 2.34.1
+### Docker
 
 ```
+$ docker --version
+Docker version 23.0.1, build a5ee5b1
+```
+Please follow the required docker daemon configuration as documented in the following README.md:
+- [./smo/common/docker/README.md](./smo/common/docker/README.md)
+
+### Docker Compose
+
+```
+$ docker-compose version
+Docker Compose version v2.16.0
+```
+
+### GIT
+
+```
+$ git --version
+git version 2.34.1
+```
+
+### Python
+
+```
+$ python3 --version
+Python 3.10.6
+
+```
+sudo apt install python3-pip
+pip install jproperties
+```
+
+```
+It is beneficial (but not mandatory) adding the following line add the
+end of your ~/.bashrc file. I will suppress warnings when python script
+do not verify self signed certificates for HTTPS communication.
+
+```
+export PYTHONWARNINGS="ignore:Unverified HTTPS request"
+```
+
+### ETC Host (DNS function)
+
 Please modify the /etc/hosts of your system.
 
 * \<your-system>: is the hostname of the system, where the browser is started
@@ -46,6 +80,7 @@
 <deployment-system-ipv4>    controller.oam.smo.o-ran-sc.org
 
 ```
+
 ## Bring Up Solution
 
 The following commands should be invoked. More detailed can be found in the
@@ -59,7 +94,6 @@
 python network/config.py
 ```
 
-
 ## Verification Solution
 
 ### Login into O-RU-Controller UI
diff --git a/solution/README.md b/solution/README.md
index 1bd4e4b..90d7ff7 100644
--- a/solution/README.md
+++ b/solution/README.md
@@ -24,8 +24,7 @@
   * **Controller** single node instance
 
     ... representing the NETCONF consumer on the Service Management and
-    Orchestration framework (SMO) for the O1 interface based on
-    ODL.
+    Orchestration framework (SMO) for O-RAN O1 interface and/or O-RAN OpenFronthaul Management Plane and/or other NETCONF/YANG schemas implemented by the OpenDaylight project.
 
   * **VES collector**
 
@@ -36,24 +35,59 @@
 
 ## Prerequisites
 
+### Operating (HOST) System
+
 ```
 $ cat /etc/os-release | grep PRETTY_NAME
-PRETTY_NAME="Ubuntu 22.04.1 LTS"
+PRETTY_NAME="Ubuntu 22.04.2 LTS"
+```
 
-$ docker --version
-Docker version 20.10.12, build 20.10.12-0ubuntu4
-
-$ docker-compose version
-docker-compose version 1.29.2, build unknown
-docker-py version: <module 'docker.version' from '/usr/local/lib/python3.10/dist-packages/docker/version.py'>
-CPython version: 3.10.6
-OpenSSL version: OpenSSL 3.0.2 15 Mar 2022
-
-
-$ git --version
-git version 2.34.1
+### Docker
 
 ```
+$ docker --version
+Docker version 23.0.1, build a5ee5b1
+```
+Please follow the required docker daemon configuration as documented in the following README.md:
+- [./smo/common/docker/README.md](./smo/common/docker/README.md)
+
+### Docker Compose
+
+```
+$ docker-compose version
+Docker Compose version v2.16.0
+```
+
+### GIT
+
+```
+$ git --version
+git version 2.34.1
+```
+
+### Python
+
+```
+$ python3 --version
+Python 3.10.6
+```
+
+A python parser package is required.
+```
+sudo apt install python3-pip
+pip install jproperties
+```
+
+It is beneficial (but not mandatory) adding the following line add the
+end of your ~/.bashrc file. I will suppress warnings when python script
+do not verify self signed certificates for HTTPS communication.
+
+```
+export PYTHONWARNINGS="ignore:Unverified HTTPS request"
+```
+
+### ETC Host (DNS function)
+
 Please modify the /etc/hosts of your system.
 
 * \<your-system>: is the hostname of the system, where the browser is started
@@ -78,20 +112,14 @@
 
 ```
 
-It is beneficial (but not mandatory) adding the following line add the
-end of your ~/.bashrc file. I will suppress warnings when python script
-do not verify self signed certificates for HTTPS communication.
-
-```
-export PYTHONWARNINGS="ignore:Unverified HTTPS request"
-```
+### VES Schemas
 
 Please ensure that you download and copy the required 3GPP OpenAPIs for VES-stndDefined
-message validation into the folder './solution/operation-and-maintenance/smo/oam/ves-collector/externalRepo'.
+message validation into the folder [./smo/oam/ves-collector/externalRepo](./smo/oam/ves-collector/externalRepo).
 
-Please follow the instructions in ./solution/operation-and-maintenance/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/blob/Rel16/OpenAPI/README.md.
+Please follow the instructions in [./smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-18/OpenAPI/README.md](./smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-18/OpenAPI/README.md).
 
-The following tree shows the successfully tested folder structure. It combines different versions of the schemas ('Rel16' and 'SA88-Rel16') using 3GPP branch names.
+The following tree shows the successfully tested folder structure. It combines different versions of the schemas ('Rel16' ) using 3GPP branch names.
 
 ```
 $ tree solution/operation-and-maintenance/smo/oam/ves-collector/externalRepo/
@@ -100,43 +128,26 @@
 │   └── rep
 │       └── sa5
 │           └── MnS
-│               └── blob
-│                   ├── Rel16
-│                   │   └── OpenAPI
-│                   │       ├── README.md
-│                   │       ├── TS28532_FaultMnS.yaml
-│                   │       ├── TS28532_FileDataReportingMnS.yaml
-│                   │       ├── TS28532_HeartbeatNtf.yaml
-│                   │       ├── TS28532_PerfMnS.yaml
-│                   │       ├── TS28532_ProvMnS.yaml
-│                   │       ├── TS28532_StreamingDataMnS.yaml
-│                   │       ├── TS28536_CoslaNrm.yaml
-│                   │       ├── TS28541_5GcNrm.yaml
-│                   │       ├── TS28541_NrNrm.yaml
-│                   │       ├── TS28541_SliceNrm.yaml
-│                   │       ├── TS28550_PerfMeasJobCtrlMnS.yaml
-│                   │       ├── TS28623_ComDefs.yaml
-│                   │       ├── TS28623_GenericNrm.yaml
-│                   │       ├── TS29512_Npcf_SMPolicyControl.yaml
-│                   │       ├── TS29514_Npcf_PolicyAuthorization.yaml
-│                   │       └── TS29571_CommonData.yaml
-│                   └── SA88-Rel16
-│                       └── OpenAPI
-│                           ├── 5gcNrm.yaml
-│                           ├── PerDataFileReportMnS.yaml
-│                           ├── PerMeasJobCtlMnS.yaml
-│                           ├── PerThresMonMnS.yaml
-│                           ├── PerfDataStreamingMnS.yaml
-│                           ├── README.md
-│                           ├── comDefs.yaml
-│                           ├── coslaNrm.yaml
-│                           ├── faultMnS.yaml
-│                           ├── genericNrm.yaml
-│                           ├── heartbeatNtf.yaml
-│                           ├── nrNrm.yaml
-│                           ├── provMnS.yaml
-│                           ├── sliceNrm.yaml
-│                           └── streamingDataMnS.yaml
+│               └── raw
+│                   └── Rel-16
+│                       └── OpenAPI
+│                           ├── README.md
+│                           ├── TS28532_FaultMnS.yaml
+│                           ├── TS28532_FileDataReportingMnS.yaml
+│                           ├── TS28532_HeartbeatNtf.yaml
+│                           ├── TS28532_PerfMnS.yaml
+│                           ├── TS28532_ProvMnS.yaml
+│                           ├── TS28532_StreamingDataMnS.yaml
+│                           ├── TS28536_CoslaNrm.yaml
+│                           ├── TS28541_5GcNrm.yaml
+│                           ├── TS28541_NrNrm.yaml
+│                           ├── TS28541_SliceNrm.yaml
+│                           ├── TS28550_PerfMeasJobCtrlMnS.yaml
+│                           ├── TS28623_ComDefs.yaml
+│                           ├── TS28623_GenericNrm.yaml
+│                           ├── TS29512_Npcf_SMPolicyControl.yaml
+│                           ├── TS29514_Npcf_PolicyAuthorization.yaml
+│                           └── TS29571_CommonData.yaml
 ```
 
 ## Expected Folder Structure
@@ -153,13 +164,18 @@
 │   ├── ntsim-ng-o-du
 │   └── ntsim-ng-o-ru
 └── smo
+    ├── apps
+    │   ├── .env
+    │   ├── docker-compose.yml
+    │   └── flows
     ├── common
     │   ├── .env
     │   ├── docker-compose.yml
     │   │
-    │   ├── messages
     │   ├── docker
+    │   ├── gateway
     │   ├── identity
+    │   ├── messages
     │   ├── kafka
     │   └── zookeeper
     └── oam
diff --git a/solution/network/.env b/solution/network/.env
index 6888fa6..03600dd 100644
--- a/solution/network/.env
+++ b/solution/network/.env
@@ -32,7 +32,7 @@
 # NTS NG settings
 NEXUS3_DOCKER_REPO=nexus3.o-ran-sc.org:10004/o-ran-sc/
 NTS_MANAGER_PORT=8300
-NTS_BUILD_VERSION=1.5.2
+NTS_BUILD_VERSION=1.6.1
 
 IPv6_ENABLED=true
 SSH_CONNECTIONS=1
@@ -56,3 +56,5 @@
 VES_ENDPOINT_AUTH_METHOD=basic-auth
 VES_ENDPOINT_USERNAME=sample1
 VES_ENDPOINT_PASSWORD=sample1
+
+HOST_IP=AA.BB.CC.DD
diff --git a/solution/network/docker-compose.yml b/solution/network/docker-compose.yml
index 7ad9a40..6a29fa3 100755
--- a/solution/network/docker-compose.yml
+++ b/solution/network/docker-compose.yml
@@ -56,6 +56,10 @@
 
 x-nf: &common_nf
     stop_grace_period: 5m
+    extra_hosts:
+      - "identity.smo.o-ran-sc.org:${HOST_IP}"
+      - "controller.oam.smo.o-ran-sc.org:${HOST_IP}"
+      - "ves-collector.oam.smo.o-ran-sc.org:${HOST_IP}"
     cap_add:
     - SYS_ADMIN
     - SYS_PTRACE
diff --git a/solution/smo/common/docker/README.md b/solution/smo/common/docker/README.md
index 814084d..d6110b2 100644
--- a/solution/smo/common/docker/README.md
+++ b/solution/smo/common/docker/README.md
@@ -10,7 +10,6 @@
 
 ```
 {
-  "dns": ["1.1.1.1"],
   "registry-mirrors": [
       "https://nexus3.o-ran-sc.org:10002", 
       "https://nexus3.onap.org:10001"
diff --git a/solution/smo/common/docker/daemon.json b/solution/smo/common/docker/daemon.json
index bed1ae3..3b5ac62 100644
--- a/solution/smo/common/docker/daemon.json
+++ b/solution/smo/common/docker/daemon.json
@@ -1,5 +1,4 @@
 {
-  "dns": ["1.1.1.1"],
   "registry-mirrors": [
     "https://nexus3.o-ran-sc.org:10002",
     "https://nexus3.onap.org:10001"
diff --git a/solution/smo/oam/.env b/solution/smo/oam/.env
index c410a2a..9ad6728 100644
--- a/solution/smo/oam/.env
+++ b/solution/smo/oam/.env
@@ -52,4 +52,6 @@
 VES_ENDPOINT_PORT=8080
 VES_ENDPOINT_AUTH_METHOD=basic-auth
 VES_ENDPOINT_USERNAME=sample1
-VES_ENDPOINT_PASSWORD=sample1
\ No newline at end of file
+VES_ENDPOINT_PASSWORD=sample1
+
+HOST_IP=AA.BB.CC.DD
diff --git a/solution/smo/oam/docker-compose.yml b/solution/smo/oam/docker-compose.yml
index 9d2c5b5..a052e95 100755
--- a/solution/smo/oam/docker-compose.yml
+++ b/solution/smo/oam/docker-compose.yml
@@ -28,6 +28,8 @@
     image: ${SDNC_IMAGE}
     container_name: controller
     hostname: controller
+    extra_hosts:
+      - "identity.smo.o-ran-sc.org:${HOST_IP}"
     healthcheck:
       test: wget -U ${ADMIN_USERNAME}:${ADMIN_PASSWORD} --no-verbose --tries=1 --spider http://localhost:${SDNC_REST_PORT}/ready || exit 1
       start_period: 60s
@@ -111,4 +113,4 @@
       driver: default
       config:
       - subnet:  "${NETWORK_SUBNET_OAM_IPv6}"
-        gateway: "${NETWORK_GATEWAY_OAM_IPv6}"
\ No newline at end of file
+        gateway: "${NETWORK_GATEWAY_OAM_IPv6}"
diff --git a/solution/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-16/OpenAPI/README.md b/solution/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-16/OpenAPI/README.md
index 4241b37..e786083 100644
--- a/solution/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-16/OpenAPI/README.md
+++ b/solution/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-16/OpenAPI/README.md
@@ -1,4 +1,4 @@
-# 3gpp Release 16
+# 3GPP Release 16
 
 This folder should contain the 3GPP YAML files. Such files are used be the VES
 Collector to valid VES messages for domain 'stndDefined'.
@@ -8,7 +8,7 @@
 https://forge.3gpp.org/rep/sa5/MnS/tree/Rel-16/OpenAPI
 ```
 
-For G-Release only the following schemas ...
+The following schemas ...
 
  * TS28623_ComDefs.yaml
  * TS28532_FaultMnS.yaml
diff --git a/solution/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-18/OpenAPI/README.md b/solution/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-18/OpenAPI/README.md
index d366c2f..0e792ce 100644
--- a/solution/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-18/OpenAPI/README.md
+++ b/solution/smo/oam/ves-collector/externalRepo/3gpp/rep/sa5/MnS/raw/Rel-18/OpenAPI/README.md
@@ -1,4 +1,4 @@
-# 3gpp Release 18
+# 3GPP Release 18
 
 This folder should contain the 3GPP YAML files. Such files are used be the VES
 Collector to valid VES messages for domain 'stndDefined'.
@@ -8,7 +8,7 @@
 https://forge.3gpp.org/rep/sa5/MnS/tree/Rel-18/OpenAPI
 ```
 
-For H-Release only the following schemas ...
+The following schemas ...
 
  * TS28623_ComDefs.yaml
  * TS28532_FaultMnS.yaml