From a86df57862bec68eb7a9a01f59ee13501e70b7f8 Mon Sep 17 00:00:00 2001 From: DenisGNoonan Date: Mon, 22 Apr 2024 16:46:57 +0100 Subject: [PATCH 01/15] NONRTRIC-946: Servicemanager - Add Kong data plane and control plane Change-Id: I5ba03381a2ceb40738779e09f92b654a8ed94737 Signed-off-by: DenisGNoonan --- nonrtric/RECIPE_EXAMPLE/example_recipe.yaml | 2 +- nonrtric/helm/servicemanager/values.yaml | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml index 1a676076..d557e535 100644 --- a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml +++ b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml @@ -387,7 +387,7 @@ servicemanager: image: registry: "nexus3.o-ran-sc.org:10004/o-ran-sc" name: nonrtric-plt-servicemanager - tag: 0.1.1 + tag: 0.1.2 rappmanager: rappmanager: diff --git a/nonrtric/helm/servicemanager/values.yaml b/nonrtric/helm/servicemanager/values.yaml index 7a36304f..dbb261c7 100644 --- a/nonrtric/helm/servicemanager/values.yaml +++ b/nonrtric/helm/servicemanager/values.yaml @@ -21,7 +21,7 @@ servicemanager: image: registry: 'nexus3.o-ran-sc.org:10004/o-ran-sc' name: nonrtric-plt-servicemanager - tag: 0.1.1 + tag: 0.1.2 apiVersion: v1 kind: ConfigMap metadataName: servicemanager-configmap @@ -36,13 +36,17 @@ servicemanager: data: .env: | + # The Kong Data plane provides the endpoint that Service Manager gives to the rApp so that the rApp can invoke the CAPIF published API. + # In a Kubernetes environment, we need to use the Kong NodePort IP and nodePort if the rApp needs access from outside the Kong cluster. + # From inside the Kong cluster, we can use the Kubernetes cluster DNS entry, kong-nonrtric-kong-proxy.nonrtric.svc.cluster.local. KONG_DOMAIN: "kong" KONG_PROTOCOL: "http" - KONG_IPV4: "kong-nonrtric-kong-admin.nonrtric.svc.cluster.local" - KONG_DATA_PLANE_PORT: "80" + KONG_CONTROL_PLANE_IPV4: "kong-nonrtric-kong-admin.nonrtric.svc.cluster.local" KONG_CONTROL_PLANE_PORT: "8001" + KONG_DATA_PLANE_IPV4: "kong-nonrtric-kong-proxy.nonrtric.svc.cluster.local" + KONG_DATA_PLANE_PORT: "80" CAPIF_PROTOCOL: "http" CAPIF_IPV4: "capifcore.nonrtric.svc.cluster.local" CAPIF_PORT: "8090" - LOG_LEVEL: "Debug" + LOG_LEVEL: "Info" SERVICE_MANAGER_PORT: "8095" -- 2.16.6 From 99ae44c19362fd7553dce5f1413bd4dbc2d55397 Mon Sep 17 00:00:00 2001 From: DenisGNoonan Date: Thu, 23 May 2024 13:14:19 +0100 Subject: [PATCH 02/15] NONRTRIC-980: Check ServiceManager switches Issue-ID: NONRTRIC-980 Change-Id: Ib2bd52bf5b804da2bd485754873ffa3ce7078090 Signed-off-by: DenisGNoonan --- bin/deploy-nonrtric | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/bin/deploy-nonrtric b/bin/deploy-nonrtric index 2125ef31..651771b7 100755 --- a/bin/deploy-nonrtric +++ b/bin/deploy-nonrtric @@ -50,6 +50,39 @@ if [ -z "$OVERRIDEYAML" ];then exit 1 fi +if ! command -v yq > /dev/null 2>&1; then + echo "yq is not installed. Installing yq..." + sudo snap install yq --channel=v3/stable +fi + +INSTALL_KONG=$(yq read "$OVERRIDEYAML" 'nonrtric.installKong') +if [ $? -ne 0 ] || [ -z "$INSTALL_KONG" ]; then + echo "Error: failed to parse installKong from YAML with yq. Aborting install." + exit 1 +fi + +INSTALL_CAPIF=$(yq read "$OVERRIDEYAML" 'nonrtric.installCapifcore') +if [ $? -ne 0 ] || [ -z "$INSTALL_CAPIF" ]; then + echo "Error: failed to parse installCapifcore from YAML with yq. Aborting install." + exit 1 +fi + +INSTALL_SERVICEMANAGER=$(yq read "$OVERRIDEYAML" 'nonrtric.installServicemanager') +if [ $? -ne 0 ] || [ -z "$INSTALL_SERVICEMANAGER" ]; then + echo "Error: failed to parse installServicemanager from YAML with yq. Aborting install." + exit 1 +fi + +if [ "$INSTALL_SERVICEMANAGER" == "true" ]; then + if [ "$INSTALL_KONG" == "false" ]; then + echo "Error: INSTALL_KONG must be true if INSTALL_SERVICEMANAGER is true. Aborting install." + exit 1 + fi + if [ "$INSTALL_CAPIF" == "false" ]; then + echo "Error: INSTALL_CAPIF must be true if INSTALL_SERVICEMANAGER is true. Aborting install." + exit 1 + fi +fi ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" @@ -168,7 +201,6 @@ COMMON_BLOCK=$(cat $OVERRIDEYAML | awk '/^common:/{getline; while ($0 ~ /^ +.*|^ NAMESPACE_BLOCK=$(cat $OVERRIDEYAML | awk '/^ namespace:/{getline; while ($0 ~ /^ .*|^ *$/) {print $0; if (getline == 0) {break}}}') NONRTRIC_NAMESPACE=$(echo "$NAMESPACE_BLOCK" | awk '/^ *nonrtric:/{print $2}') RELEASE_PREFIX=$(echo "$COMMON_BLOCK" | awk '/^ *releasePrefix:/{print $2}') -INSTALL_KONG=$(cat $OVERRIDEYAML | awk '/^ installKong:/{print $2}') INSTALL_RANPM=$(cat $OVERRIDEYAML | awk '/^ installRanpm:/{print $2}') if ! kubectl get ns ${NONRTRIC_NAMESPACE:-nonrtric}> /dev/null 2>&1; then -- 2.16.6 From 3fdbdbb3159139ed8dbcca663824486eaf2f216d Mon Sep 17 00:00:00 2001 From: DenisGNoonan Date: Thu, 16 May 2024 10:49:21 +0100 Subject: [PATCH 03/15] NONRTRIC-980: Service Manager - SMO deployment Issue-ID: NONRTRIC-980 Change-Id: I7be646a7deef5bafc20c6cb0a2951f82564320b4 Signed-off-by: DenisGNoonan --- .gitignore | 1 + README.md | 5 +- nonrtric/helm/nonrtric/values.yaml | 2 +- .../helm/servicemanager/templates/configmap.yaml | 10 +- ric-aux/helm/mrsub/resources/mrsub.sh | 7 +- .../{servicemanager.tpl => _servicemanager.tpl} | 2 + smo-install/helm-override/cnf/oran-override.yaml | 1 + .../helm-override/default/oran-override.yaml | 1 + .../pythonsdk-tests/oran-override.yaml | 1 + smo-install/oran_oom/kong/.helmignore | 23 ++++ smo-install/oran_oom/kong/Chart.yaml | 26 ++++ .../oran_oom/kong/templates/00-kong-pv.yaml | 33 +++++ .../oran_oom/kong/templates/01-kongpvc.yaml | 29 ++++ smo-install/oran_oom/kong/values.yaml | 149 +++++++++++++++++++++ smo-install/oran_oom/nonrtric/Chart.yaml | 25 +++- smo-install/oran_oom/nonrtric/values.yaml | 1 + smo-install/oran_oom/servicemanager/Chart.yaml | 27 ++++ .../servicemanager/templates/configmap.yaml | 24 ++++ .../servicemanager/templates/deployment.yaml | 39 ++++++ .../oran_oom/servicemanager/templates/service.yaml | 17 +++ smo-install/oran_oom/servicemanager/values.yaml | 75 +++++++++++ .../scripts/sub-scripts/install-nonrtric.sh | 55 ++++++-- .../scripts/sub-scripts/uninstall-nonrtric.sh | 34 ++++- 23 files changed, 562 insertions(+), 25 deletions(-) rename ric-common/Common-Template/helm/nonrtric-common/templates/{servicemanager.tpl => _servicemanager.tpl} (99%) create mode 100644 smo-install/oran_oom/kong/.helmignore create mode 100644 smo-install/oran_oom/kong/Chart.yaml create mode 100644 smo-install/oran_oom/kong/templates/00-kong-pv.yaml create mode 100644 smo-install/oran_oom/kong/templates/01-kongpvc.yaml create mode 100644 smo-install/oran_oom/kong/values.yaml create mode 100644 smo-install/oran_oom/servicemanager/Chart.yaml create mode 100644 smo-install/oran_oom/servicemanager/templates/configmap.yaml create mode 100644 smo-install/oran_oom/servicemanager/templates/deployment.yaml create mode 100644 smo-install/oran_oom/servicemanager/templates/service.yaml create mode 100644 smo-install/oran_oom/servicemanager/values.yaml diff --git a/.gitignore b/.gitignore index a14e5c27..ad464841 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ .tox .DS_Store docs/_build/ +index-cache.yaml \ No newline at end of file diff --git a/README.md b/README.md index bfc28326..b79262ad 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ $ . ./undeploy-ric-aux ``` ### NOTE: To Deploy RANPM -RANPM helm charts are integrated as a submodule in this repository. To deploy RANPM function set installRanpm: true in the RECEPIE_EXAMPLE file as below: +RANPM helm charts are integrated as a submodule in this repository. To deploy RANPM function set installRanpm: true in the RECIPE_EXAMPLE file as below: nonrtric: installPms: true @@ -100,13 +100,14 @@ nonrtric: installRappcatalogueservice: true installRappcatalogueEnhancedservice: true  installNonrtricgateway: true - installKong: false + installKong: true installDmaapadapterservice: true installDmaapmediatorservice: true installHelmmanager: true installOruclosedlooprecovery: true installOdusliceassurance: true installCapifcore: true + installServicemanager: true installRanpm: true   volume1: diff --git a/nonrtric/helm/nonrtric/values.yaml b/nonrtric/helm/nonrtric/values.yaml index 4f067e99..c8edf879 100644 --- a/nonrtric/helm/nonrtric/values.yaml +++ b/nonrtric/helm/nonrtric/values.yaml @@ -30,7 +30,7 @@ nonrtric: installOrufhrecovery: true installRansliceassurance: true installCapifcore: true - installServicemanager: false + installServicemanager: true installRanpm: true installrAppmanager: true installDmeParticipant: true diff --git a/nonrtric/helm/servicemanager/templates/configmap.yaml b/nonrtric/helm/servicemanager/templates/configmap.yaml index 746b0399..280e58f7 100644 --- a/nonrtric/helm/servicemanager/templates/configmap.yaml +++ b/nonrtric/helm/servicemanager/templates/configmap.yaml @@ -13,10 +13,18 @@ # See the License for the specific language governing permissions and # # limitations under the License. # ################################################################################ + + apiVersion: v1 kind: ConfigMap metadata: - name: servicemanager-configmap + name: {{ include "common.name.servicemanager" . }}-configmap + namespace: {{ include "common.namespace.nonrtric" . }} + labels: + app: {{ include "common.namespace.nonrtric" . }}-{{ include "common.name.servicemanager" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} data: {{- range $key, $value := .Values.data }} {{ $key }}: | diff --git a/ric-aux/helm/mrsub/resources/mrsub.sh b/ric-aux/helm/mrsub/resources/mrsub.sh index 27439512..9992193e 100644 --- a/ric-aux/helm/mrsub/resources/mrsub.sh +++ b/ric-aux/helm/mrsub/resources/mrsub.sh @@ -4,7 +4,7 @@ MR_HOSTPORT="$_MR_HOSTPORT" MR_TOPIC="$_MR_TOPIC" LOGSTASH_URL="$_LOGSTASH_URL" -if ! jq --version > /dev/null 2&>1 ; then +if ! jq --version > /dev/null 2>&1 ; then apt-get update apt-get install -y jq curl fi @@ -30,8 +30,8 @@ while true; do DATA=$(echo $DATA |jq -r --arg source "$source" '.[] | $source+","+((.event.measurementsForVfScalingFields.additionalFields[1].value) | tostring)+ ","+ ((.event.measurementsForVfScalingFields.additionalFields[2].value) | tostring)') #EVENTS=$(echo $DATA |jq -r '.event.measurementFields.additionalFields.SgNBRequestRate') #for EVENT in $EVENTS; do - elif [ "$source" == "AC xAPP" ] - then + elif [ "$source" == "AC xAPP" ] + then DATA=$(echo $DATA |jq -r --arg source "$source" '.[] | $source+","+((.event.measurementsForVfScalingFields.additionalFields[0].value) | tostring)') else DATA="No supportive reporting entity provided" @@ -40,4 +40,3 @@ while true; do curl -i -XPUT "${LOGSTASH_URL}" -d "${DATA}" #done done - diff --git a/ric-common/Common-Template/helm/nonrtric-common/templates/servicemanager.tpl b/ric-common/Common-Template/helm/nonrtric-common/templates/_servicemanager.tpl similarity index 99% rename from ric-common/Common-Template/helm/nonrtric-common/templates/servicemanager.tpl rename to ric-common/Common-Template/helm/nonrtric-common/templates/_servicemanager.tpl index ed1ba739..7deaac08 100644 --- a/ric-common/Common-Template/helm/nonrtric-common/templates/servicemanager.tpl +++ b/ric-common/Common-Template/helm/nonrtric-common/templates/_servicemanager.tpl @@ -13,9 +13,11 @@ # See the License for the specific language governing permissions and # # limitations under the License. # ################################################################################ + {{- define "common.name.servicemanager" -}} {{- printf "servicemanager" -}} {{- end -}} + {{- define "common.container.servicemanager" -}} {{- $name := ( include "common.name.servicemanager" . ) -}} {{- printf "container-%s" $name | trunc 63 | trimSuffix "-" -}} diff --git a/smo-install/helm-override/cnf/oran-override.yaml b/smo-install/helm-override/cnf/oran-override.yaml index 52403d25..b159e965 100644 --- a/smo-install/helm-override/cnf/oran-override.yaml +++ b/smo-install/helm-override/cnf/oran-override.yaml @@ -43,6 +43,7 @@ nonrtric: installHelmmanager: true installrAppmanager: true installCapifcore: true + installServicemanager: true # override default mount path root directory # referenced by persistent volumes and log files persistence: diff --git a/smo-install/helm-override/default/oran-override.yaml b/smo-install/helm-override/default/oran-override.yaml index 574ef5d6..40d81733 100644 --- a/smo-install/helm-override/default/oran-override.yaml +++ b/smo-install/helm-override/default/oran-override.yaml @@ -43,6 +43,7 @@ nonrtric: installHelmmanager: true installrAppmanager: true installCapifcore: true + installServicemanager: true # override default mount path root directory # referenced by persistent volumes and log files persistence: diff --git a/smo-install/helm-override/pythonsdk-tests/oran-override.yaml b/smo-install/helm-override/pythonsdk-tests/oran-override.yaml index 9b0c2de5..50634ccf 100644 --- a/smo-install/helm-override/pythonsdk-tests/oran-override.yaml +++ b/smo-install/helm-override/pythonsdk-tests/oran-override.yaml @@ -43,6 +43,7 @@ nonrtric: installHelmmanager: true installrAppmanager: true installCapifcore: true + installServicemanager: true # override default mount path root directory # referenced by persistent volumes and log files persistence: diff --git a/smo-install/oran_oom/kong/.helmignore b/smo-install/oran_oom/kong/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/smo-install/oran_oom/kong/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/smo-install/oran_oom/kong/Chart.yaml b/smo-install/oran_oom/kong/Chart.yaml new file mode 100644 index 00000000..9e2ab91a --- /dev/null +++ b/smo-install/oran_oom/kong/Chart.yaml @@ -0,0 +1,26 @@ +# ============LICENSE_START======================================================== +# Modification Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# ================================================================================= +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file 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. +# ============LICENSE_END========================================================== + +apiVersion: v2 +name: kong +description: A Helm chart for deploying DB-mode Kong with Postgres +version: 1.0.0 +appVersion: "1.0.0" + +dependencies: + - name: kong + version: "2.38.0" + repository: https://nexus3.o-ran-sc.org/repository/helm-konghq/ diff --git a/smo-install/oran_oom/kong/templates/00-kong-pv.yaml b/smo-install/oran_oom/kong/templates/00-kong-pv.yaml new file mode 100644 index 00000000..a12ad6a9 --- /dev/null +++ b/smo-install/oran_oom/kong/templates/00-kong-pv.yaml @@ -0,0 +1,33 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# ======================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file 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. +# ============LICENSE_END================================================= +# + +{{- if .Values.kongpv.enabled }} +apiVersion: v1 +kind: PersistentVolume +metadata: + name: kongpv + labels: + type: local +spec: + capacity: + storage: "{{ .Values.kongpv.persistence.size }}" + accessModes: + - "{{ .Values.kongpv.persistence.accessMode }}" + hostPath: + path: "{{ .Values.kongpv.persistence.path }}" + persistentVolumeReclaimPolicy: "{{ .Values.kongpv.persistence.volumeReclaimPolicy }}" +{{- end }} diff --git a/smo-install/oran_oom/kong/templates/01-kongpvc.yaml b/smo-install/oran_oom/kong/templates/01-kongpvc.yaml new file mode 100644 index 00000000..5f631cf3 --- /dev/null +++ b/smo-install/oran_oom/kong/templates/01-kongpvc.yaml @@ -0,0 +1,29 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# ======================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file 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. +# ============LICENSE_END================================================= +# +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: data-oran-nonrtric-postgresql-0 +spec: + accessModes: + - "{{ .Values.kongpvc.persistence.accessMode }}" + resources: + requests: + storage: "{{ .Values.kongpvc.persistence.size }}" +{{- if .Values.kongpv.enabled }} + volumeName: kongpv +{{- end }} diff --git a/smo-install/oran_oom/kong/values.yaml b/smo-install/oran_oom/kong/values.yaml new file mode 100644 index 00000000..527f0d0a --- /dev/null +++ b/smo-install/oran_oom/kong/values.yaml @@ -0,0 +1,149 @@ + +# ============LICENSE_START=============================================== +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# ======================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file 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. +# ============LICENSE_END================================================= + +# Default values for Kong PV and PVC + +kongpv: + enabled: true # Disabled for Minikube + persistence: + volumeReclaimPolicy: Delete + accessMode: ReadWriteOnce + size: 2Gi + path: "/tmp/kongpv" + +kongpvc: + persistence: + volumeReclaimPolicy: Delete + accessMode: ReadWriteOnce + size: 2Gi + +# +# Default values for Kong's Helm Chart. +# + +kong: + # Sections: + # - Deployment parameters + # - Kong parameters + # - Ingress Controller parameters + # - Postgres sub-chart parameters + # - Miscellaneous parameters + # For a detailed example of values.yaml, please see https://github.com/Kong/charts/blob/main/charts/kong/values.yaml + # ----------------------------------------------------------------------------- + # Deployment parameters + # ----------------------------------------------------------------------------- + deployment: + kong: + enabled: true + serviceAccount: + create: true + automountServiceAccountToken: false + # ----------------------------------------------------------------------------- + # Kong parameters + # ----------------------------------------------------------------------------- + env: + database: "postgres" + # Specify Kong's Docker image and repository details here + image: + repository: kong + tag: "3.4" + pullPolicy: IfNotPresent + # Specify Kong admin API service and listener configuration + admin: + enabled: true + type: NodePort + http: + # Enable plaintext HTTP listen for the admin API + enabled: true + servicePort: 8001 + containerPort: 8001 + nodePort: 32081 + parameters: [] + tls: + # Enable HTTPS listen for the admin API + enabled: false + servicePort: 8444 + containerPort: 8444 + nodePort: 32444 + parameters: + - http2 + ingress: + enabled: false + # Specify Kong proxy service configuration + proxy: + # Enable creating a Kubernetes service for the proxy + enabled: true + type: LoadBalancer + loadBalancerClass: + nameOverride: "" + annotations: {} + labels: + enable-metrics: "true" + http: + # Enable plaintext HTTP listen for the proxy + enabled: true + servicePort: 80 + containerPort: 8000 + # Set a nodePort which is available if service type is NodePort + nodePort: 32080 + parameters: [] + tls: + # Enable HTTPS listen for the proxy + enabled: false + servicePort: 443 + containerPort: 8443 + parameters: + - http2 + # ----------------------------------------------------------------------------- + # Ingress Controller parameters + # ----------------------------------------------------------------------------- + ingressController: + enabled: true + installCRDs: false + image: + repository: kong/kubernetes-ingress-controller + tag: "3.0" + env: + kong_admin_tls_skip_verify: true + # ----------------------------------------------------------------------------- + # Postgres sub-chart parameters + # ----------------------------------------------------------------------------- + postgresql: + enabled: true + auth: + database: kong + username: kong + password: kong + postgresPassword: kong + image: + # use postgres < 14 until is https://github.com/Kong/kong/issues/8533 resolved + tag: 13.11.0-debian-11-r20 + service: + ports: + postgresql: "5432" + volumePermissions: + enabled: true + primary: + persistence: + existingClaim: data-oran-nonrtric-postgresql-0 + # ----------------------------------------------------------------------------- + # Miscellaneous parameters + # ----------------------------------------------------------------------------- + waitImage: + enabled: true + pullPolicy: IfNotPresent + replicaCount: 1 diff --git a/smo-install/oran_oom/nonrtric/Chart.yaml b/smo-install/oran_oom/nonrtric/Chart.yaml index e7dd005f..5462a683 100644 --- a/smo-install/oran_oom/nonrtric/Chart.yaml +++ b/smo-install/oran_oom/nonrtric/Chart.yaml @@ -1,3 +1,19 @@ +# ============LICENSE_START======================================================== +# Modification Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# ================================================================================= +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file 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. +# ============LICENSE_END========================================================== + apiVersion: v2 name: nonrtric version: 1.0.0 @@ -79,8 +95,8 @@ dependencies: condition: nonrtric.installHelmmanager - name: kong - version: ~2.4.0 - repository: https://nexus3.o-ran-sc.org/repository/helm-konghq/ + version: ~1.0.0 + repository: "@local" condition: nonrtric.installKong - name: dmaapadapterservice @@ -97,3 +113,8 @@ dependencies: version: ~1.0.0 repository: "@local" condition: nonrtric.installCapifcore + + - name: servicemanager + version: ~1.0.0 + repository: "@local" + condition: nonrtric.installServicemanager diff --git a/smo-install/oran_oom/nonrtric/values.yaml b/smo-install/oran_oom/nonrtric/values.yaml index f3444418..7b862a7e 100644 --- a/smo-install/oran_oom/nonrtric/values.yaml +++ b/smo-install/oran_oom/nonrtric/values.yaml @@ -44,6 +44,7 @@ nonrtric: installHelmmanager: true installrAppmanager: true installCapifcore: true + installServicemanager: true volume1: size: 1Gi diff --git a/smo-install/oran_oom/servicemanager/Chart.yaml b/smo-install/oran_oom/servicemanager/Chart.yaml new file mode 100644 index 00000000..db6a13ed --- /dev/null +++ b/smo-install/oran_oom/servicemanager/Chart.yaml @@ -0,0 +1,27 @@ +################################################################################ +# Copyright (c) 2024 OpenInfra Foundation Europe. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ + + +apiVersion: v2 +appVersion: "2.0.0" +description: A Helm chart for ServiceManager +name: servicemanager +version: 1.0.0 + +dependencies: + - name: nonrtric-common + version: ^2.0.0 + repository: "@local" diff --git a/smo-install/oran_oom/servicemanager/templates/configmap.yaml b/smo-install/oran_oom/servicemanager/templates/configmap.yaml new file mode 100644 index 00000000..746b0399 --- /dev/null +++ b/smo-install/oran_oom/servicemanager/templates/configmap.yaml @@ -0,0 +1,24 @@ +################################################################################ +# Copyright (c) 2024 OpenInfra Foundation Europe. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ +apiVersion: v1 +kind: ConfigMap +metadata: + name: servicemanager-configmap +data: +{{- range $key, $value := .Values.data }} + {{ $key }}: | +{{ $value | indent 4 }} +{{- end }} diff --git a/smo-install/oran_oom/servicemanager/templates/deployment.yaml b/smo-install/oran_oom/servicemanager/templates/deployment.yaml new file mode 100644 index 00000000..fd768868 --- /dev/null +++ b/smo-install/oran_oom/servicemanager/templates/deployment.yaml @@ -0,0 +1,39 @@ +################################################################################ +# Copyright (c) 2024 OpenInfra Foundation Europe. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ + +kind: Deployment +apiVersion: apps/v1 +metadata: {{- include "common.resourceMetadata" . | nindent 2 }} +spec: + replicas: 1 + selector: {{- include "common.selectors" . | nindent 4 }} + template: + metadata: {{- include "common.templateMetadata" . | nindent 6 }} + spec: + hostname: {{ include "common.name" . }} + containers: + - name: {{ include "common.containername" . }} + image: {{ .Values.image.registry }}/{{ .Values.image.name }}:{{ .Values.image.tag }} + imagePullPolicy: {{ .Values.imagePullPolicy }} + {{- include "common.tcpsocketProbes" . | nindent 8 }} + volumeMounts: + - name: servicemanager-config-volume + mountPath: /app/servicemanager/.env + subPath: .env + volumes: + - name: servicemanager-config-volume + configMap: + name: servicemanager-configmap diff --git a/smo-install/oran_oom/servicemanager/templates/service.yaml b/smo-install/oran_oom/servicemanager/templates/service.yaml new file mode 100644 index 00000000..3a64f6af --- /dev/null +++ b/smo-install/oran_oom/servicemanager/templates/service.yaml @@ -0,0 +1,17 @@ +################################################################################ +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ + +{{ include "common.service" . }} diff --git a/smo-install/oran_oom/servicemanager/values.yaml b/smo-install/oran_oom/servicemanager/values.yaml new file mode 100644 index 00000000..a0a4ffda --- /dev/null +++ b/smo-install/oran_oom/servicemanager/values.yaml @@ -0,0 +1,75 @@ +# ============LICENSE_START=============================================== +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# ======================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file 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. +# ============LICENSE_END================================================= + +# Default values for Servicemanager + +imagePullPolicy: IfNotPresent +image: + registry: 'nexus3.o-ran-sc.org:10004/o-ran-sc' + name: nonrtric-plt-servicemanager + tag: 0.1.2 +service: + httpName: http + ports: + - name: http + internalPort: "8095" + targetPort: "8095" + nodePort: 31575 + type: NodePort +liveness: + initialDelaySeconds: 300 + periodSeconds: 10 +readiness: + initialDelaySeconds: 60 + periodSeconds: 10 +resources: + small: + limits: + cpu: 250m + memory: 256Mi + requests: + cpu: 80m + memory: 128Mi + large: + limits: + cpu: 400m + memory: 8Gi + requests: + cpu: 200m + memory: 2Gi + unlimited: {} +nameOverride: "" + + +allowHttp: true +SERVICE_MANAGER_ENV: "" + +data: + .env: | + # The Kong Data plane provides the endpoint that Service Manager gives to the rApp so that the rApp can invoke the CAPIF published API. + # In a Kubernetes environment, we need to use the Kong NodePort IP and nodePort if the rApp needs access from outside the Kong cluster. + # From inside the Kong cluster, we can use the Kubernetes cluster DNS entry, kong-nonrtric-kong-proxy.nonrtric.svc.cluster.local. + KONG_DOMAIN: "kong" + KONG_PROTOCOL: "http" + KONG_CONTROL_PLANE_IPV4: "oran-nonrtric-kong-admin.nonrtric.svc.cluster.local" + KONG_CONTROL_PLANE_PORT: "8001" + KONG_DATA_PLANE_IPV4: "oran-nonrtric-kong-proxy.nonrtric.svc.cluster.local" + KONG_DATA_PLANE_PORT: "80" + CAPIF_PROTOCOL: "http" + CAPIF_IPV4: "capifcore.nonrtric.svc.cluster.local" + CAPIF_PORT: "8090" + LOG_LEVEL: "Info" + SERVICE_MANAGER_PORT: "8095" diff --git a/smo-install/scripts/sub-scripts/install-nonrtric.sh b/smo-install/scripts/sub-scripts/install-nonrtric.sh index 2926b407..97479d05 100755 --- a/smo-install/scripts/sub-scripts/install-nonrtric.sh +++ b/smo-install/scripts/sub-scripts/install-nonrtric.sh @@ -1,12 +1,12 @@ #!/bin/bash ### -# ============LICENSE_START======================================================= +# ============LICENSE_START======================================================== # ORAN SMO Package -# ================================================================================ -# Copyright (C) 2021 AT&T Intellectual Property. All rights -# reserved. -# ================================================================================ +# ================================================================================= +# Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. +# Modification Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# ================================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -18,11 +18,48 @@ # 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============================================ -# =================================================================== -# +# ============LICENSE_END========================================================== +# ================================================================================= +# ### kubectl create namespace nonrtric echo '### Installing ORAN NONRTRIC part ###' -helm install --debug oran-nonrtric local/nonrtric --namespace nonrtric -f $1 --set nonrtric.persistence.mountPath="/dockerdata-nfs/deployment-$2" + +OVERRIDEYAML=$1 + +if ! command -v yq > /dev/null 2>&1; then + echo "yq is not installed. Installing yq..." + sudo snap install yq --channel=v3/stable +fi + +INSTALL_KONG=$(yq read "$OVERRIDEYAML" 'nonrtric.installKong') +if [ $? -ne 0 ] || [ -z "$INSTALL_KONG" ]; then + echo "Error: failed to parse installKong from YAML with yq. Aborting install." + exit 1 +fi + +INSTALL_CAPIF=$(yq read "$OVERRIDEYAML" 'nonrtric.installCapifcore') +if [ $? -ne 0 ] || [ -z "$INSTALL_CAPIF" ]; then + echo "Error: failed to parse installCapifcore from YAML with yq. Aborting install." + exit 1 +fi + +INSTALL_SERVICEMANAGER=$(yq read "$OVERRIDEYAML" 'nonrtric.installServicemanager') +if [ $? -ne 0 ] || [ -z "$INSTALL_SERVICEMANAGER" ]; then + echo "Error: failed to parse installServicemanager from YAML with yq. Aborting install." + exit 1 +fi + +if [ "$INSTALL_SERVICEMANAGER" == "true" ]; then + if [ "$INSTALL_KONG" == "false" ]; then + echo "Error: INSTALL_KONG must be true if INSTALL_SERVICEMANAGER is true. Aborting install." + exit 1 + fi + if [ "$INSTALL_CAPIF" == "false" ]; then + echo "Error: INSTALL_CAPIF must be true if INSTALL_SERVICEMANAGER is true. Aborting install." + exit 1 + fi +fi + +helm install --debug oran-nonrtric local/nonrtric --namespace nonrtric -f $OVERRIDEYAML --set nonrtric.persistence.mountPath="/dockerdata-nfs/deployment-$2" diff --git a/smo-install/scripts/sub-scripts/uninstall-nonrtric.sh b/smo-install/scripts/sub-scripts/uninstall-nonrtric.sh index 6c528e3f..ee52b7ca 100755 --- a/smo-install/scripts/sub-scripts/uninstall-nonrtric.sh +++ b/smo-install/scripts/sub-scripts/uninstall-nonrtric.sh @@ -1,12 +1,13 @@ #!/bin/bash ### -# ============LICENSE_START======================================================= +# ============LICENSE_START======================================================== # ORAN SMO Package -# ================================================================================ +# ================================================================================= # Copyright (C) 2021 AT&T Intellectual Property. All rights # reserved. -# ================================================================================ +# Modification Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. +# ================================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -18,11 +19,32 @@ # 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============================================ -# =================================================================== -# +# ============LICENSE_END========================================================== +# ================================================================================= +# ### +if ! jq --version > /dev/null 2>&1 ; then + sudo apt-get update + sudo apt-get install -y jq +fi + +INSTALL_KONG=$(helm get values oran-nonrtric -n nonrtric -o json | jq '.nonrtric.installKong') +if [ $? -ne 0 ]; then + echo "Failed to parse helm release value installKong with jq." + exit 1 +fi + +if [ "$INSTALL_KONG" = true ];then + echo "Warning - deleting Kong routes and services for ServiceManager." + SERVICEMANAGER_POD=$(kubectl get pods -o custom-columns=NAME:.metadata.name -l app.kubernetes.io/name=servicemanager --no-headers -n nonrtric) + if [[ -n $SERVICEMANAGER_POD ]]; then + kubectl exec $SERVICEMANAGER_POD -n nonrtric -- ./kongclearup + else + echo "Error - Servicemanager pod not found, didn't delete Kong routes and services for ServiceManager." + fi +fi + kubectl delete namespace nonrtric kubectl delete pv nonrtric-pv2 kubectl delete pv nonrtric-pv1 -- 2.16.6 From 1fd14f960d45794d4b87135ba2e2e72244987f03 Mon Sep 17 00:00:00 2001 From: DenisGNoonan Date: Thu, 6 Jun 2024 16:03:41 +0100 Subject: [PATCH 04/15] NONRTRIC980: fixs for controlpanel kong, 'hunkey dory' and pms ports Issue-ID: NONRTRIC-980 Change-Id: I48f8709e9cef1d6cbd010f50b7981782dbeddba7 Signed-off-by: DenisGNoonan --- bin/deploy-nonrtric | 2 +- bin/undeploy-nonrtric | 2 +- nonrtric/RECIPE_EXAMPLE/example_recipe.yaml | 4 ++-- nonrtric/data/run_in_k8s/populate_policy_data.sh | 2 +- nonrtric/helm/controlpanel/resources-ing/nginx.conf | 4 ++-- nonrtric/helm/controlpanel/values.yaml | 2 +- nonrtric/helm/nonrtricgateway/resources/config/application.yaml | 2 +- nonrtric/helm/policymanagementservice/values.yaml | 4 ++-- nonrtric/helm/servicemanager/values.yaml | 6 +++--- smo-install/oran_oom/controlpanel/resources-ing/nginx.conf | 5 ++++- smo-install/oran_oom/servicemanager/values.yaml | 2 +- smo-install/test/a1-validation/subscripts/health_check.sh | 4 ++-- smo-install/test/a1-validation/subscripts/prepareDmaapMsg.sh | 2 +- smo-install/test/a1-validation/subscripts/preparePmsData.sh | 4 ++-- 14 files changed, 24 insertions(+), 21 deletions(-) diff --git a/bin/deploy-nonrtric b/bin/deploy-nonrtric index 651771b7..e0c33060 100755 --- a/bin/deploy-nonrtric +++ b/bin/deploy-nonrtric @@ -225,7 +225,7 @@ if [ "$INSTALL_KONG" = true ];then echo "Installing Kong" helm repo add kong https://charts.konghq.com --force-update helm repo update - helm install kong-nonrtric kong/kong -n ${NONRTRIC_NAMESPACE:-nonrtric} -f dep/nonrtric/helm/kongstorage/kongvalues.yaml + helm install oran-nonrtric kong/kong -n ${NONRTRIC_NAMESPACE:-nonrtric} -f dep/nonrtric/helm/kongstorage/kongvalues.yaml fi kubectl create configmap -n ${NONRTRIC_NAMESPACE:-nonrtric} nonrtric-recipe --from-file=recipe=$OVERRIDEYAML diff --git a/bin/undeploy-nonrtric b/bin/undeploy-nonrtric index af9a31db..adfe2875 100755 --- a/bin/undeploy-nonrtric +++ b/bin/undeploy-nonrtric @@ -66,7 +66,7 @@ if [ "$INSTALL_KONG" = true ];then echo "Uninstalling kongstorage" helm delete kongstorage -n "${NONRTRIC_NAMESPACE:-nonrtric}" echo "Uninstalling Kong" - helm delete kong-nonrtric -n ${NONRTRIC_NAMESPACE:-nonrtric} + helm delete oran-nonrtric -n ${NONRTRIC_NAMESPACE:-nonrtric} fi ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" diff --git a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml index d557e535..24f168d1 100644 --- a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml +++ b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml @@ -104,10 +104,10 @@ policymanagementservice: service: allowHttp: true httpName: http - internalPort1: 9080 + internalPort1: 8081 targetPort1: 8081 httpsName: https - internalPort2: 9081 + internalPort2: 8433 targetPort2: 8433 liveness: initialDelaySeconds: 20 diff --git a/nonrtric/data/run_in_k8s/populate_policy_data.sh b/nonrtric/data/run_in_k8s/populate_policy_data.sh index 4a3f1b8e..4f15e89d 100755 --- a/nonrtric/data/run_in_k8s/populate_policy_data.sh +++ b/nonrtric/data/run_in_k8s/populate_policy_data.sh @@ -25,7 +25,7 @@ # one policy-type and one policy in a1-sim-STD2_0 policy_agent_host="policymanagementservice" -policy_agent_port="9080" +policy_agent_port="8081" a1_sim_osc_0_host="a1-sim-osc-0.a1-sim" a1_sim_osc_0_port="8085" a1_sim_osc_1_host="a1-sim-osc-1.a1-sim" diff --git a/nonrtric/helm/controlpanel/resources-ing/nginx.conf b/nonrtric/helm/controlpanel/resources-ing/nginx.conf index d72eea73..4e53c543 100644 --- a/nonrtric/helm/controlpanel/resources-ing/nginx.conf +++ b/nonrtric/helm/controlpanel/resources-ing/nginx.conf @@ -4,7 +4,7 @@ http { include /etc/nginx/mime.types; upstream backend { - server kong-proxy.kong:80; + server oran-nonrtric-kong-proxy.nonrtric:80; } server { @@ -25,4 +25,4 @@ http { try_files $uri $uri/ /index.html; } } -} \ No newline at end of file +} diff --git a/nonrtric/helm/controlpanel/values.yaml b/nonrtric/helm/controlpanel/values.yaml index a1519508..e3e41dcc 100644 --- a/nonrtric/helm/controlpanel/values.yaml +++ b/nonrtric/helm/controlpanel/values.yaml @@ -32,7 +32,7 @@ controlpanel: targetPort1: 8080 externalPort1: 30091 httpsName: https - internalPort2: 8081 + internalPort2: 8082 targetPort2: 8082 externalPort2: 30092 liveness: diff --git a/nonrtric/helm/nonrtricgateway/resources/config/application.yaml b/nonrtric/helm/nonrtricgateway/resources/config/application.yaml index 0d96d68d..602252ba 100644 --- a/nonrtric/helm/nonrtricgateway/resources/config/application.yaml +++ b/nonrtric/helm/nonrtricgateway/resources/config/application.yaml @@ -27,7 +27,7 @@ spring: wiretap: true routes: - id: A1-Policy - uri: https://policymanagementservice:9081 + uri: https://policymanagementservice:8433 predicates: - Path=/a1-policy/** - id: A1-EI diff --git a/nonrtric/helm/policymanagementservice/values.yaml b/nonrtric/helm/policymanagementservice/values.yaml index c6a312eb..4e24f8c5 100644 --- a/nonrtric/helm/policymanagementservice/values.yaml +++ b/nonrtric/helm/policymanagementservice/values.yaml @@ -28,10 +28,10 @@ policymanagementservice: service: allowHttp: true httpName: http - internalPort1: 9080 + internalPort1: 8081 targetPort1: 8081 httpsName: https - internalPort2: 9081 + internalPort2: 8433 targetPort2: 8433 liveness: initialDelaySeconds: 20 diff --git a/nonrtric/helm/servicemanager/values.yaml b/nonrtric/helm/servicemanager/values.yaml index dbb261c7..0cfaa055 100644 --- a/nonrtric/helm/servicemanager/values.yaml +++ b/nonrtric/helm/servicemanager/values.yaml @@ -38,12 +38,12 @@ data: .env: | # The Kong Data plane provides the endpoint that Service Manager gives to the rApp so that the rApp can invoke the CAPIF published API. # In a Kubernetes environment, we need to use the Kong NodePort IP and nodePort if the rApp needs access from outside the Kong cluster. - # From inside the Kong cluster, we can use the Kubernetes cluster DNS entry, kong-nonrtric-kong-proxy.nonrtric.svc.cluster.local. + # From inside the Kong cluster, we can use the Kubernetes cluster DNS entry, oran-nonrtric-kong-proxy.nonrtric.svc.cluster.local. KONG_DOMAIN: "kong" KONG_PROTOCOL: "http" - KONG_CONTROL_PLANE_IPV4: "kong-nonrtric-kong-admin.nonrtric.svc.cluster.local" + KONG_CONTROL_PLANE_IPV4: "oran-nonrtric-kong-admin.nonrtric.svc.cluster.local" KONG_CONTROL_PLANE_PORT: "8001" - KONG_DATA_PLANE_IPV4: "kong-nonrtric-kong-proxy.nonrtric.svc.cluster.local" + KONG_DATA_PLANE_IPV4: "oran-nonrtric-kong-proxy.nonrtric.svc.cluster.local" KONG_DATA_PLANE_PORT: "80" CAPIF_PROTOCOL: "http" CAPIF_IPV4: "capifcore.nonrtric.svc.cluster.local" diff --git a/smo-install/oran_oom/controlpanel/resources-ing/nginx.conf b/smo-install/oran_oom/controlpanel/resources-ing/nginx.conf index 374861f1..4e53c543 100644 --- a/smo-install/oran_oom/controlpanel/resources-ing/nginx.conf +++ b/smo-install/oran_oom/controlpanel/resources-ing/nginx.conf @@ -1,9 +1,12 @@ events{} + http { include /etc/nginx/mime.types; + upstream backend { - server kong-proxy.kong:80; + server oran-nonrtric-kong-proxy.nonrtric:80; } + server { listen 8080; server_name localhost; diff --git a/smo-install/oran_oom/servicemanager/values.yaml b/smo-install/oran_oom/servicemanager/values.yaml index a0a4ffda..fb536718 100644 --- a/smo-install/oran_oom/servicemanager/values.yaml +++ b/smo-install/oran_oom/servicemanager/values.yaml @@ -61,7 +61,7 @@ data: .env: | # The Kong Data plane provides the endpoint that Service Manager gives to the rApp so that the rApp can invoke the CAPIF published API. # In a Kubernetes environment, we need to use the Kong NodePort IP and nodePort if the rApp needs access from outside the Kong cluster. - # From inside the Kong cluster, we can use the Kubernetes cluster DNS entry, kong-nonrtric-kong-proxy.nonrtric.svc.cluster.local. + # From inside the Kong cluster, we can use the Kubernetes cluster DNS entry, oran-nonrtric-kong-proxy.nonrtric.svc.cluster.local. KONG_DOMAIN: "kong" KONG_PROTOCOL: "http" KONG_CONTROL_PLANE_IPV4: "oran-nonrtric-kong-admin.nonrtric.svc.cluster.local" diff --git a/smo-install/test/a1-validation/subscripts/health_check.sh b/smo-install/test/a1-validation/subscripts/health_check.sh index 9f675ab9..3857b304 100755 --- a/smo-install/test/a1-validation/subscripts/health_check.sh +++ b/smo-install/test/a1-validation/subscripts/health_check.sh @@ -4,7 +4,7 @@ enrichment_service_url=${1:-localhost:9082} a1_sim_OSC_url=${2:-localhost:8085} a1_sim_STD_url=${3:-localhost:8085} a1_sim_STD_v2_url=${4:-localhost:8085} -policy_agent_url=${5:-localhost:9080} +policy_agent_url=${5:-localhost:8081} a1_controller_url=${6:false} echo -e "NONRTRIC HealthCheck\n" @@ -47,7 +47,7 @@ checkStatus "curl -vskw %{http_code} http://$a1_sim_STD_v2_url/" "OK200" "SIM3" # check PMS status echo "check Policy Agent status:" -checkStatus "curl -vskw %{http_code} http://$policy_agent_url/status" "hunky dory200" "PMS" +checkStatus "curl -vskw %{http_code} http://$policy_agent_url/status" "success200" "PMS" # check ECS status echo "check Enrichment service status:" diff --git a/smo-install/test/a1-validation/subscripts/prepareDmaapMsg.sh b/smo-install/test/a1-validation/subscripts/prepareDmaapMsg.sh index 9a06a864..2d3fd23b 100755 --- a/smo-install/test/a1-validation/subscripts/prepareDmaapMsg.sh +++ b/smo-install/test/a1-validation/subscripts/prepareDmaapMsg.sh @@ -31,7 +31,7 @@ dmaap_mr_url=${1:-localhost:3904} a1_sim_OSC_url=${2:-localhost:8085} a1_sim_STD_url=${3:-localhost:8085} a1_sim_STD_v2_url=${4:-localhost:8085} -policy_agent_url=${5:-localhost:9081} +policy_agent_url=${5:-localhost:8081} httpx=${6:-"http"} echo "using dmaap-mr url: "$dmaap_mr_url diff --git a/smo-install/test/a1-validation/subscripts/preparePmsData.sh b/smo-install/test/a1-validation/subscripts/preparePmsData.sh index 49194817..fc874e0a 100755 --- a/smo-install/test/a1-validation/subscripts/preparePmsData.sh +++ b/smo-install/test/a1-validation/subscripts/preparePmsData.sh @@ -29,7 +29,7 @@ a1_sim_OSC_url=${1:-localhost:8085} a1_sim_STD_v2_url=${2:-localhost:8085} -policy_agent_url=${3:-localhost:9081} +policy_agent_url=${3:-localhost:8081} httpx=${4:-"http"} SHELL_FOLDER=$(cd "$(dirname "$0")";pwd) @@ -52,7 +52,7 @@ echo "policy agent status:" curlString="curl -skw %{http_code} $httpx://$policy_agent_url/status" res=$($curlString) echo "$res" -expect="hunky dory200" +expect="success200" checkRes echo -e "\n" -- 2.16.6 From 68332a494ab572e3b526c799aa7389810451749b Mon Sep 17 00:00:00 2001 From: "aravind.est" Date: Wed, 26 Jun 2024 16:20:45 +0100 Subject: [PATCH 05/15] Fix the yq based validation checks Upgrade yq version Fix the permission issues when reading the file Issue-ID: NONRTRIC-994 Change-Id: I463c71258a775122faf17d9caf28780947b6c546 Signed-off-by: aravind.est --- bin/deploy-nonrtric | 8 ++++---- smo-install/scripts/sub-scripts/install-nonrtric.sh | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bin/deploy-nonrtric b/bin/deploy-nonrtric index e0c33060..2b883639 100755 --- a/bin/deploy-nonrtric +++ b/bin/deploy-nonrtric @@ -52,22 +52,22 @@ fi if ! command -v yq > /dev/null 2>&1; then echo "yq is not installed. Installing yq..." - sudo snap install yq --channel=v3/stable + sudo snap install yq --channel=v4/stable fi -INSTALL_KONG=$(yq read "$OVERRIDEYAML" 'nonrtric.installKong') +INSTALL_KONG=$(cat $OVERRIDEYAML | yq e '.nonrtric.installKong' -) if [ $? -ne 0 ] || [ -z "$INSTALL_KONG" ]; then echo "Error: failed to parse installKong from YAML with yq. Aborting install." exit 1 fi -INSTALL_CAPIF=$(yq read "$OVERRIDEYAML" 'nonrtric.installCapifcore') +INSTALL_CAPIF=$(cat $OVERRIDEYAML | yq e '.nonrtric.installCapifcore' -) if [ $? -ne 0 ] || [ -z "$INSTALL_CAPIF" ]; then echo "Error: failed to parse installCapifcore from YAML with yq. Aborting install." exit 1 fi -INSTALL_SERVICEMANAGER=$(yq read "$OVERRIDEYAML" 'nonrtric.installServicemanager') +INSTALL_SERVICEMANAGER=$(cat $OVERRIDEYAML | yq e '.nonrtric.installServicemanager' -) if [ $? -ne 0 ] || [ -z "$INSTALL_SERVICEMANAGER" ]; then echo "Error: failed to parse installServicemanager from YAML with yq. Aborting install." exit 1 diff --git a/smo-install/scripts/sub-scripts/install-nonrtric.sh b/smo-install/scripts/sub-scripts/install-nonrtric.sh index 97479d05..d91243d7 100755 --- a/smo-install/scripts/sub-scripts/install-nonrtric.sh +++ b/smo-install/scripts/sub-scripts/install-nonrtric.sh @@ -30,22 +30,22 @@ OVERRIDEYAML=$1 if ! command -v yq > /dev/null 2>&1; then echo "yq is not installed. Installing yq..." - sudo snap install yq --channel=v3/stable + sudo snap install yq --channel=v4/stable fi -INSTALL_KONG=$(yq read "$OVERRIDEYAML" 'nonrtric.installKong') +INSTALL_KONG=$(cat $OVERRIDEYAML | yq e '.nonrtric.installKong' -) if [ $? -ne 0 ] || [ -z "$INSTALL_KONG" ]; then echo "Error: failed to parse installKong from YAML with yq. Aborting install." exit 1 fi -INSTALL_CAPIF=$(yq read "$OVERRIDEYAML" 'nonrtric.installCapifcore') +INSTALL_CAPIF=$(cat $OVERRIDEYAML | yq e '.nonrtric.installCapifcore' -) if [ $? -ne 0 ] || [ -z "$INSTALL_CAPIF" ]; then echo "Error: failed to parse installCapifcore from YAML with yq. Aborting install." exit 1 fi -INSTALL_SERVICEMANAGER=$(yq read "$OVERRIDEYAML" 'nonrtric.installServicemanager') +INSTALL_SERVICEMANAGER=$(cat $OVERRIDEYAML | yq e '.nonrtric.installServicemanager' -) if [ $? -ne 0 ] || [ -z "$INSTALL_SERVICEMANAGER" ]; then echo "Error: failed to parse installServicemanager from YAML with yq. Aborting install." exit 1 -- 2.16.6 From 9a6d11a6a02a8bc62e87e166bc29f89e760ca198 Mon Sep 17 00:00:00 2001 From: "aravind.est" Date: Wed, 7 Aug 2024 16:33:01 +0100 Subject: [PATCH 06/15] Add group and user details for a1pms volume mount Volume mount ownership can be passed as User and Group uid. This needs to be in sync with the container build arguments. Issue-ID: NONRTRIC-1025 Change-Id: I32031736d83cc92691e8194b5ff46635efc2f6b4 Signed-off-by: aravind.est --- nonrtric/RECIPE_EXAMPLE/example_recipe.yaml | 4 ++++ nonrtric/helm/policymanagementservice/templates/statefulset.yaml | 1 + nonrtric/helm/policymanagementservice/values.yaml | 6 +++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml index 24f168d1..2ccbb75c 100644 --- a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml +++ b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml @@ -122,6 +122,10 @@ policymanagementservice: storageClassName: pms-storage ingress: enabled: true + #Volumepermissions needs to align with the container build arguments + volumepermissions: + groupid: 120957 + userid: 120957 # A1 Controller may take few more minutes to start. Increase the initialDelaySeconds in liveness to avoid container restart. a1controller: diff --git a/nonrtric/helm/policymanagementservice/templates/statefulset.yaml b/nonrtric/helm/policymanagementservice/templates/statefulset.yaml index a2790674..fd4a34ad 100644 --- a/nonrtric/helm/policymanagementservice/templates/statefulset.yaml +++ b/nonrtric/helm/policymanagementservice/templates/statefulset.yaml @@ -53,6 +53,7 @@ spec: cp /etc/app/policy-management-service/application_configuration_json_initial/application_configuration.json $FILE; fi; chmod 666 $FILE; + chown {{ .Values.policymanagementservice.volumepermissions.groupid }}:{{ .Values.policymanagementservice.volumepermissions.userid }} -R /var/policy-management-service/; volumeMounts: - name: {{ include "common.name.policymanagementservice" . }}-vardata mountPath: "/var/policy-management-service" diff --git a/nonrtric/helm/policymanagementservice/values.yaml b/nonrtric/helm/policymanagementservice/values.yaml index 4e24f8c5..7191f1d7 100644 --- a/nonrtric/helm/policymanagementservice/values.yaml +++ b/nonrtric/helm/policymanagementservice/values.yaml @@ -1,6 +1,6 @@ # ============LICENSE_START=============================================== # Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. -# Copyright (C) 2023 OpenInfra Foundation Europe. All rights reserved. +# Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. # ======================================================================== # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -44,3 +44,7 @@ policymanagementservice: storageClassName: standard ingress: enabled: false + #Volumepermissions needs to align with the container build arguments + volumepermissions: + groupid: 120957 + userid: 120957 \ No newline at end of file -- 2.16.6 From 0b808f6003b8be240a5dd321ca1d6fbb8195dd6c Mon Sep 17 00:00:00 2001 From: "aravind.est" Date: Thu, 15 Aug 2024 12:03:20 +0100 Subject: [PATCH 07/15] Update ranpm subproject to latest RANPM subproject updated with latest commits. Issue-ID: NONRTRIC-1020 Change-Id: I2fbd3c26c0b629f47983aa25ea2273ad3235b8b9 Signed-off-by: aravind.est --- ranpm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ranpm b/ranpm index 696b3a4e..a0cc224e 160000 --- a/ranpm +++ b/ranpm @@ -1 +1 @@ -Subproject commit 696b3a4eb9eecf92b99e62e0081f7140c0294155 +Subproject commit a0cc224eb1784bd9fc7626531d02cd4d9c39cd38 -- 2.16.6 From 0e71435b373a66cf54b8e38e13f040ffab084be8 Mon Sep 17 00:00:00 2001 From: lapentafd Date: Fri, 16 Aug 2024 10:21:16 +0100 Subject: [PATCH 08/15] NONRTRIC Helm charts maintenance Issue-ID: NONRTRIC-992 Change-Id: I5239d0f26e26ed0f2cbbe4b603761abf42050052 Signed-off-by: lapentafd --- nonrtric/RECIPE_EXAMPLE/example_recipe.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml index 2ccbb75c..3b1f5855 100644 --- a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml +++ b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml @@ -38,6 +38,7 @@ nonrtric: installRansliceassurance: true installCapifcore: true installServicemanager: true + # When enabling Ranpm switch to false installControlpanel, installInformationservice, installNonrtricgateway installRanpm: false # rApp Manager functionality relies on ACM for its operation installrAppmanager: true -- 2.16.6 From 9043807dc924abc1f96bab69c1b9cef76e1d5a47 Mon Sep 17 00:00:00 2001 From: DenisGNoonan Date: Wed, 14 Aug 2024 12:38:47 +0100 Subject: [PATCH 09/15] NONRTRIC-1005: ServiceManager preload Issue-ID: NONRTRIC-1005 Change-Id: I03d991ced630a89a05bf4176edcd322ff8f7cd0f Signed-off-by: DenisGNoonan --- .gitignore | 2 +- bin/deploy-nonrtric | 7 + nonrtric/RECIPE_EXAMPLE/example_recipe.yaml | 16 +- nonrtric/helm/a1simulator/values.yaml | 10 +- nonrtric/helm/capifcore/values.yaml | 2 +- nonrtric/helm/dmaapadapterservice/values.yaml | 5 +- nonrtric/helm/dmeparticipant/values.yaml | 10 +- nonrtric/helm/policymanagementservice/values.yaml | 8 +- .../helm/rappcatalogueenhancedservice/values.yaml | 10 +- nonrtric/helm/rappmanager/values.yaml | 8 +- nonrtric/helm/servicemanager/values.yaml | 2 +- servicemanager-preload/README.md | 103 ++++++ servicemanager-preload/config-nonrtric.yaml | 392 +++++++++++++++++++++ servicemanager-preload/config-smo.yaml | 132 +++++++ servicemanager-preload/servicemanager-preload.sh | 382 ++++++++++++++++++++ smo-install/oran_oom/a1simulator/values.yaml | 10 +- smo-install/oran_oom/capifcore/values.yaml | 4 +- .../oran_oom/dmaapadapterservice/values.yaml | 5 +- .../oran_oom/policy-clamp-ac-dme-ppnt/values.yaml | 2 +- .../oran_oom/policymanagementservice/values.yaml | 10 +- smo-install/oran_oom/rappmanager/values.yaml | 2 +- smo-install/oran_oom/servicemanager/values.yaml | 2 +- .../scripts/sub-scripts/install-nonrtric.sh | 8 + 23 files changed, 1079 insertions(+), 53 deletions(-) create mode 100644 servicemanager-preload/README.md create mode 100644 servicemanager-preload/config-nonrtric.yaml create mode 100644 servicemanager-preload/config-smo.yaml create mode 100755 servicemanager-preload/servicemanager-preload.sh diff --git a/.gitignore b/.gitignore index ad464841..6d47f3f1 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ .tox .DS_Store docs/_build/ -index-cache.yaml \ No newline at end of file +index-cache.yaml diff --git a/bin/deploy-nonrtric b/bin/deploy-nonrtric index 2b883639..cb40cd3a 100755 --- a/bin/deploy-nonrtric +++ b/bin/deploy-nonrtric @@ -243,3 +243,10 @@ fi echo "helm install -f $OVERRIDEYAML --namespace ${NONRTRIC_NAMESPACE:-nonrtric} ${HELM_NAME_OPT} ${RELEASE_PREFIX} $ROOT_DIR/../nonrtric/helm/nonrtric" helm install -f $OVERRIDEYAML -n "${NONRTRIC_NAMESPACE:-nonrtric}" ${HELM_NAME_OPT} "${RELEASE_PREFIX}" "$ROOT_DIR/../nonrtric/helm/nonrtric" + +if [ "$INSTALL_SERVICEMANAGER" == "true" ]; then + pushd dep/servicemanager-preload + # Send stderr to null to turn off chatty logging + ./servicemanager-preload.sh config-nonrtric.yaml 2>/dev/null + popd +fi diff --git a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml index 2ccbb75c..46b73206 100644 --- a/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml +++ b/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml @@ -100,7 +100,7 @@ policymanagementservice: image: registry: 'nexus3.o-ran-sc.org:10002/o-ran-sc' name: nonrtric-plt-a1policymanagementservice - tag: 2.7.0 + tag: 2.8.0 service: allowHttp: true httpName: http @@ -158,7 +158,7 @@ a1simulator: image: registry: 'nexus3.o-ran-sc.org:10002/o-ran-sc' name: a1-simulator - tag: 2.6.1 + tag: 2.7.0 service: allowHttp: true httpName: http @@ -238,7 +238,7 @@ rappcatalogueenhancedservice: image: registry: 'nexus3.o-ran-sc.org:10002/o-ran-sc' name: nonrtric-plt-rappcatalogue-enhanced - tag: 1.1.0 + tag: 1.2.0 service: allowHttp: true httpName: http @@ -276,7 +276,7 @@ dmaapadapterservice: image: registry: 'nexus3.o-ran-sc.org:10002/o-ran-sc' name: 'nonrtric-plt-dmaapadapter' - tag: 1.3.0 + tag: 1.4.0 service: allowHttp: true httpName: http @@ -380,7 +380,7 @@ capifcore: image: registry: "nexus3.o-ran-sc.org:10004/o-ran-sc" name: nonrtric-plt-capifcore - tag: 1.3.1 + tag: 1.4.0 env: chart_museum_url: "http://chartmuseum:8080" repo_name: "capifcore" @@ -391,7 +391,7 @@ servicemanager: image: registry: "nexus3.o-ran-sc.org:10004/o-ran-sc" name: nonrtric-plt-servicemanager - tag: 0.1.2 + tag: 0.1.3 rappmanager: rappmanager: @@ -399,7 +399,7 @@ rappmanager: image: registry: "nexus3.o-ran-sc.org:10002/o-ran-sc" name: nonrtric-plt-rappmanager - tag: 0.0.1 + tag: 0.1.0 service: httpName: http internalPort1: 8080 @@ -422,7 +422,7 @@ dmeparticipant: image: registry: "nexus3.o-ran-sc.org:10002/o-ran-sc" name: nonrtric-plt-participant-impl-dme - tag: 0.0.1 + tag: 0.1.0 service: httpName: http internalPort1: 8080 diff --git a/nonrtric/helm/a1simulator/values.yaml b/nonrtric/helm/a1simulator/values.yaml index dc44113b..22e00962 100644 --- a/nonrtric/helm/a1simulator/values.yaml +++ b/nonrtric/helm/a1simulator/values.yaml @@ -1,7 +1,7 @@ -# ============LICENSE_START=============================================== +# ============LICENSE_START================================================ # Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. -# Copyright (C) 2023 OpenInfra Foundation Europe. All rights reserved. -# ======================================================================== +# Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. +# ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -13,7 +13,7 @@ # 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================================================= +# ============LICENSE_END================================================== # Default values for a1-simulator. # This is a YAML-formatted file. @@ -25,7 +25,7 @@ a1simulator: image: registry: 'nexus3.o-ran-sc.org:10002/o-ran-sc' name: a1-simulator - tag: 2.6.1 + tag: 2.7.0 service: allowHttp: true httpName: http diff --git a/nonrtric/helm/capifcore/values.yaml b/nonrtric/helm/capifcore/values.yaml index e7ca92f0..2dd263ad 100644 --- a/nonrtric/helm/capifcore/values.yaml +++ b/nonrtric/helm/capifcore/values.yaml @@ -24,7 +24,7 @@ capifcore: image: registry: 'nexus3.o-ran-sc.org:10004/o-ran-sc' name: nonrtric-plt-capifcore - tag: 1.3.1 + tag: 1.4.0 service: httpName: http allowHttp: true diff --git a/nonrtric/helm/dmaapadapterservice/values.yaml b/nonrtric/helm/dmaapadapterservice/values.yaml index 38e5e0b3..0a53d142 100644 --- a/nonrtric/helm/dmaapadapterservice/values.yaml +++ b/nonrtric/helm/dmaapadapterservice/values.yaml @@ -1,5 +1,6 @@ ################################################################################ -# Copyright (c) 2021 Nordix Foundation. # +# Copyright (c) 2021 Nordix Foundation. All rights reserved. # +# Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # @@ -23,7 +24,7 @@ dmaapadapterservice: image: registry: "nexus3.o-ran-sc.org:10002/o-ran-sc" name: "nonrtric-plt-dmaapadapter" - tag: 1.3.0 + tag: 1.4.0 service: allowHttp: true httpName: http diff --git a/nonrtric/helm/dmeparticipant/values.yaml b/nonrtric/helm/dmeparticipant/values.yaml index 92f21cff..e4518713 100644 --- a/nonrtric/helm/dmeparticipant/values.yaml +++ b/nonrtric/helm/dmeparticipant/values.yaml @@ -1,6 +1,6 @@ -# ============LICENSE_START=============================================== -# Copyright (C) 2023 OpenInfra Foundation Europe. All rights reserved. -# ======================================================================== +# ============LICENSE_START================================================ +# Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. +# ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -12,7 +12,7 @@ # 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================================================= +# ============LICENSE_END================================================== # # Default values for DME Participant. @@ -24,7 +24,7 @@ dmeparticipant: image: registry: "nexus3.o-ran-sc.org:10002/o-ran-sc" name: nonrtric-plt-participant-impl-dme - tag: 1.0.0 + tag: 0.1.0 service: httpName: http internalPort1: 8080 diff --git a/nonrtric/helm/policymanagementservice/values.yaml b/nonrtric/helm/policymanagementservice/values.yaml index 7191f1d7..8103bfb6 100644 --- a/nonrtric/helm/policymanagementservice/values.yaml +++ b/nonrtric/helm/policymanagementservice/values.yaml @@ -1,7 +1,7 @@ -# ============LICENSE_START=============================================== +# ============LICENSE_START================================================ # Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. # Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. -# ======================================================================== +# ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -13,7 +13,7 @@ # 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================================================= +# ============LICENSE_END================================================== # Default values for Policy Management Service. # This is a YAML-formatted file. @@ -24,7 +24,7 @@ policymanagementservice: image: registry: "nexus3.o-ran-sc.org:10002/o-ran-sc" name: nonrtric-plt-a1policymanagementservice - tag: 2.7.0 + tag: 2.8.0 service: allowHttp: true httpName: http diff --git a/nonrtric/helm/rappcatalogueenhancedservice/values.yaml b/nonrtric/helm/rappcatalogueenhancedservice/values.yaml index 2628dc4f..bddf6790 100644 --- a/nonrtric/helm/rappcatalogueenhancedservice/values.yaml +++ b/nonrtric/helm/rappcatalogueenhancedservice/values.yaml @@ -1,7 +1,7 @@ -# ============LICENSE_START=============================================== +# ============LICENSE_START================================================ # Copyright (C) 2022-2023 Nordix Foundation. All rights reserved. -# Copyright (C) 2023 OpenInfra Foundation Europe. All rights reserved. -# ======================================================================== +# Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. +# ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -13,7 +13,7 @@ # 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================================================= +# ============LICENSE_END================================================== # Default values for rAPP Catalogue Enhanced Service. # This is a YAML-formatted file. @@ -24,7 +24,7 @@ rappcatalogueenhancedservice: image: registry: 'nexus3.o-ran-sc.org:10002/o-ran-sc' name: nonrtric-plt-rappcatalogue-enhanced - tag: 1.1.0 + tag: 1.2.0 service: allowHttp: true httpName: http diff --git a/nonrtric/helm/rappmanager/values.yaml b/nonrtric/helm/rappmanager/values.yaml index cf6aab7a..75c54cc8 100644 --- a/nonrtric/helm/rappmanager/values.yaml +++ b/nonrtric/helm/rappmanager/values.yaml @@ -1,6 +1,6 @@ -# ============LICENSE_START=============================================== +# ============LICENSE_START================================================ # Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. -# ======================================================================== +# ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -12,7 +12,7 @@ # 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================================================= +# ============LICENSE_END================================================== # # Default values for rApp Manager. @@ -25,7 +25,7 @@ rappmanager: image: registry: "nexus3.o-ran-sc.org:10002/o-ran-sc" name: nonrtric-plt-rappmanager - tag: 0.0.1 + tag: 0.1.0 service: httpName: http internalPort1: 8080 diff --git a/nonrtric/helm/servicemanager/values.yaml b/nonrtric/helm/servicemanager/values.yaml index 0cfaa055..14631303 100644 --- a/nonrtric/helm/servicemanager/values.yaml +++ b/nonrtric/helm/servicemanager/values.yaml @@ -21,7 +21,7 @@ servicemanager: image: registry: 'nexus3.o-ran-sc.org:10004/o-ran-sc' name: nonrtric-plt-servicemanager - tag: 0.1.2 + tag: 0.1.3 apiVersion: v1 kind: ConfigMap metadataName: servicemanager-configmap diff --git a/servicemanager-preload/README.md b/servicemanager-preload/README.md new file mode 100644 index 00000000..b7b10a43 --- /dev/null +++ b/servicemanager-preload/README.md @@ -0,0 +1,103 @@ + + +# Service Manager Preload + +## Config format +The config file follows a format that is similar to the format required by the Service Manager/CAPIFcore Publisher. + +## Running + +At the end of the Kubernetes deployment, following script runs automatically. + +```sh +servicemanager-preload.sh [config.yaml] +``` +where [config.yaml] is a config file. If this arguement is not specified, the default is config.yaml. The input file is expected to be in the same directory as the `servicemanager-preload.sh` script. You can call the command without arguements as below. + +In our installation we provide 2 config files, `config-nonrtric.yaml` and `config-smo.yaml`. The file `config-nonrtric.yaml` is used by both the NONRTRIC install and SMO installs. For the SMO install we concatate both files into a file called `config-nonrtric-smo.yaml` and use that. This file is deleted after use in the installation script. We do it this way to avoid duplicating the information in `config-nonrtric.yaml`. + +## Script Action + +1. The script runs through the provided config.yaml file and selects the root entries in the YAML as Kubernetes service names. +1. For each service, we check if the service exists, using `kubectl get service` for both the nonrtric and onap namespaces. +1. If the service is exists, we add it to a list, `running_services_list`. +1. Next, we run through all entries in the supplied YAML file. +1. If the service is on the `running_services_list`, we build a payload from the entries for that YAML item. +1. We use the payload to call the Service Manager. This in turn calls Kong and Capif to set up the service. + +## Interface Descriptions + +To distinguish between multiple interface descriptions, Service Manager prepends the port number and a hash code to the URL path. + +## Static and Dynamic Routes + +We can specify either static or dynamic routes. Static routing defines a route when there is a single route for traffic to reach a destination. Dynamic routing allows us to specify path parameters. In this config file, we specify path parameters using regular expressions. + +Kong uses the regex definition from the [Rust programming language](https://docs.rs/regex/latest/regex/) to specify the regular expression (regex) that describes the path parameters, [Kong regex](https://docs.konghq.com/gateway/latest/key-concepts/routes/#regular-expressions). + +An example of a static path is as follows. This is the straightforward case. + +```http + /rapps +``` + +An example of a dynamic path is + +```http + ~/rapps/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*) +``` + +Our dynamic path starts with a ~ character. In this example, we have a path parameter that is described by a regex capture group called rappId. The regex describes a word made of mixed-case alphanumeric characters optionally followed by one or more sets of a dash or underscore together with another word. + +When the Service Manager client calls a dynamic API, it must strip the ~ and substitute the path parameter according to the rules specified in the regex. Therefore, we can call the above example by using + +```http + /rapps/my-rApp-id +``` + +as the URL where my-rApp-id is the rApp id of in the rApp Manager. The name my-rApp-id has to match the regex shown above. + +It is required to name the capture group in this YAML config file. The capture group name is used by Service Manager when creating a Kong Request Transformerplugin. We can specify multiple capture groups in a URL if there are multiple path parameters in the API path. + +We create a Kong Request Transformer plugin with the following .data[].config.replace, as in the following example curl and abridged response. + +```sh +curl -X GET http://oran-nonrtric-kong-admin.nonrtric.svc.cluster.local:8001/plugins +``` + +```json +{ + "body": [], + "uri": "/rapps/$(uri_captures[\"rappId\"])", + "headers": [], + "querystring": [] +} +``` + +In our example, this allows Kong to match /rapps/my-rApp-id. + +The Service Manager uses the following regex to search and replace the YAML file regexes. + +```regex +/\(\?<([^>]+)>([^\/]+)/ +``` + +Please note that the example path, /rapps/my-rApp-id, is not terminated by a '/'. Service Manager adds a '/' for internal matching. This made the regex easier to develop. Service Manager will match on /rapps/my-rApp-id/ for this case. diff --git a/servicemanager-preload/config-nonrtric.yaml b/servicemanager-preload/config-nonrtric.yaml new file mode 100644 index 00000000..8546b86d --- /dev/null +++ b/servicemanager-preload/config-nonrtric.yaml @@ -0,0 +1,392 @@ +################################################################################ +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ + +--- + +# Preload services for nonrtric install + +# https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-sme/en/latest/overview.html# + +servicemanager: + AefProfiles: + - interfaceDescriptions: + - ipv4Addr: "servicemanager.nonrtric.svc.cluster.local" + port: 8095 + securityMethods: + - PKI + Versions: + - ApiVersion: "v1" + Resources: + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: healthcheck + Uri: "/" + - CommType: REQUEST_RESPONSE + Operations: + - POST + ResourceName: registrations + Uri: "/api-provider-management/registrations" + - CommType: REQUEST_RESPONSE + Operations: + - PUT + - PATCH + - DELETE + ResourceName: registrations-domain_id + Uri: "~/api-provider-management/registrations/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + - POST + ResourceName: publisher + Uri: "~/published-apis/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/service-apis" + - CommType: REQUEST_RESPONSE + Operations: + - GET + - PUT + - PATCH + - DELETE + ResourceName: publisher-api_id + Uri: "~/published-apis/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/service-apis/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - POST + ResourceName: invoker + Uri: "/api-invoker-management/onboardedInvokers" + - CommType: REQUEST_RESPONSE + Operations: + - PUT + - PATCH + - DELETE + ResourceName: invoker-invoker_id + Uri: "~/api-invoker-management/onboardedInvokers/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: discovery + Uri: "/service-apis/allServiceAPIs" + ApiName: servicemanager-http + +# https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-rappmanager/en/latest/rappmanager-api.html + +rappmanager: + AefProfiles: + - interfaceDescriptions: + - ipv4Addr: "rappmanager.nonrtric.svc.cluster.local" + port: 8080 + securityMethods: + - PKI + - ipv4Addr: "rappmanager.nonrtric.svc.cluster.local" + port: 8433 + securityMethods: + - PSK + Versions: + - ApiVersion: "" + Resources: + - CommType: REQUEST_RESPONSE + Operations: + - GET + - POST + - PUT + - DELETE + ResourceName: "rapps-rappId" + Uri: "~/rapps/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "rapps" + Uri: "/rapps" + - CommType: REQUEST_RESPONSE + Operations: + - GET + - PUT + - DELETE + ResourceName: "rapps-instance" + Uri: "~/rapps/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/instance/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + - POST + ResourceName: "rapps-all-instances" + Uri: "~/rapps/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/instance" + ApiName: rapp-http + +# https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-a1policymanagementservice/en/latest/pms-api.html + +policymanagementservice: + AefProfiles: + - interfaceDescriptions: + - ipv4Addr: "policymanagementservice.nonrtric.svc.cluster.local" + port: 8081 + securityMethods: + - PKI + - ipv4Addr: "policymanagementservice.nonrtric.svc.cluster.local" + port: 8433 + securityMethods: + - PSK + Versions: + - ApiVersion: "" + Resources: + - CommType: REQUEST_RESPONSE + Operations: + - PUT + ResourceName: "putPolicy" + Uri: "/a1-policy/v2/policies" + - CommType: REQUEST_RESPONSE + Operations: + - GET + - DELETE + ResourceName: "Policy" + Uri: "~/a1-policy/v2/policies/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "getPolicyIds" + Uri: "/a1-policy/v2/policies" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "getPolicyInstances" + Uri: "/a1-policy/v2/policy-instances" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "getPolicyStatus" + Uri: "~/a1-policy/v2/policies/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/status" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "getPolicyTypeDefinition" + Uri: "~/a1-policy/v2/policy-types/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "getPolicyTypes" + Uri: "/a1-policy/v2/policy-types" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "health" + Uri: "/actuator/health" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "healthPath" + Uri: "/actuator/health/**" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "heapdump" + Uri: "/actuator/heapdump" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "info" + Uri: "/actuator/info" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "ActuatorRootWebEndpoint" + Uri: "/actuator" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "logfile" + Uri: "/actuator/logfile" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "loggers" + Uri: "/actuator/loggers" + - CommType: REQUEST_RESPONSE + Operations: + - GET + - POST + ResourceName: "loggersName" + Uri: "~/actuator/loggers/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "metrics" + Uri: "/actuator/metrics" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "metricsRequiredMetricName" + Uri: "~/actuator/metrics/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - POST + ResourceName: "shutdown" + Uri: "/actuator/shutdown" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "threaddump" + Uri: "/actuator/threaddump" + - CommType: REQUEST_RESPONSE + Operations: + - GET + - PUT + ResourceName: "Configuration" + Uri: "/a1-policy/v2/configuration" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "getStatus" + Uri: "/a1-policy/v2/status" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "getStatusV1" + Uri: "/status" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "getRic" + Uri: "/a1-policy/v2/rics/ric" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "getRics" + Uri: "/a1-policy/v2/rics" + - CommType: REQUEST_RESPONSE + Operations: + - DELETE + ResourceName: "deleteService" + Uri: "~/a1-policy/v2/services/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - PUT + ResourceName: "keepAliveService" + Uri: "~/a1-policy/v2/services/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/keepalive" + - CommType: REQUEST_RESPONSE + Operations: + - DELETE + ResourceName: "putService" + Uri: "/a1-policy/v2/services" + ApiName: a1-policy-http + +# https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-informationcoordinatorservice/en/h-release/ics-api.html + +informationservice: + AefProfiles: + - interfaceDescriptions: + - ipv4Addr: "informationservice.nonrtric.svc.cluster.local" + port: 9082 + securityMethods: + - PKI + - ipv4Addr: "informationservice.nonrtric.svc.cluster.local" + port: 9083 + securityMethods: + - PSK + Versions: + - ApiVersion: "v1" + Resources: + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "IndividualEIType" + Uri: "~/A1-EI/eitypes/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "EIJobStatus" + Uri: "~/A1-EI/v1/eijobs/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/status" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "EITypeIdentifiers" + Uri: "/A1-EI/eitypes" + - CommType: REQUEST_RESPONSE + Operations: + - GET + - DELETE + - PUT + ResourceName: "IndividualEIJob" + Uri: "~/A1-EI/v1/eijobs/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "EIJobIdentifiers" + Uri: "/A1-EI/v1/eijobs" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "ServiceStatus" + Uri: "/status" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "threaddump" + Uri: "/actuator/threaddump" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "loggers" + Uri: "/actuator/loggers" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "health" + Uri: "/actuator/health" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "healthPath" + Uri: "/actuator/health/**" + - CommType: REQUEST_RESPONSE + Operations: + - POST + ResourceName: "shutdown" + Uri: "/actuator/shutdown" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "metrics" + Uri: "/actuator/metrics" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "metricsRequiredMetricName" + Uri: "~/actuator/metrics/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "ActuatorRootWebEndpoint" + Uri: "/actuator" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "info" + Uri: "/actuator/info" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "logfile" + Uri: "/actuator/logfile" + - CommType: REQUEST_RESPONSE + Operations: + - GET + - POST + ResourceName: "loggersName" + Uri: "~/actuator/loggers/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + - CommType: REQUEST_RESPONSE + Operations: + - GET + ResourceName: "heapdump" + Uri: "/actuator/heapdump" + ApiName: informationservice-http diff --git a/servicemanager-preload/config-smo.yaml b/servicemanager-preload/config-smo.yaml new file mode 100644 index 00000000..51f365cb --- /dev/null +++ b/servicemanager-preload/config-smo.yaml @@ -0,0 +1,132 @@ +################################################################################ +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ + +--- + +# Preload services for smo install + +policy-apex-pdp: + AefProfiles: + - interfaceDescriptions: + - ipv4Addr: "policy-apex-pdp.nonrtric.svc.cluster.local" + port: 6969 + securityMethods: + - PKI + Versions: + - ApiVersion: "" + Resources: + - CommType: REQUEST_RESPONSE + Operations: + - DELETE + - GET + - PATCH + - POST + - PUT + ResourceName: root + Uri: "/" + ApiName: policy-apex-pdp-http + +policy-api: + AefProfiles: + - interfaceDescriptions: + - ipv4Addr: "policy-api.nonrtric.svc.cluster.local" + port: 6969 + securityMethods: + - PKI + Versions: + - ApiVersion: "" + Resources: + - CommType: REQUEST_RESPONSE + Operations: + - DELETE + - GET + - PATCH + - POST + - PUT + ResourceName: root + Uri: "/" + ApiName: policy-api-http + +policy-pap: + AefProfiles: + - interfaceDescriptions: + - ipv4Addr: "policy-pap.nonrtric.svc.cluster.local" + port: 6969 + securityMethods: + - PKI + - ipv4Addr: "policy-pap.nonrtric.svc.cluster.local" + port: 5005 + securityMethods: + - PSK + Versions: + - ApiVersion: "" + Resources: + - CommType: REQUEST_RESPONSE + Operations: + - DELETE + - GET + - PATCH + - POST + - PUT + ResourceName: root + Uri: "/" + ApiName: policy-pap-http + +sdnc-oam: + AefProfiles: + - interfaceDescriptions: + - ipv4Addr: "sdnc-oam.nonrtric.svc.cluster.local" + port: 8282 + securityMethods: + - PKI + - ipv4Addr: "sdnc-oam.nonrtric.svc.cluster.local" + port: 8202 + securityMethods: + - PSK + Versions: + - ApiVersion: "" + Resources: + - CommType: REQUEST_RESPONSE + Operations: + - DELETE + - GET + - PATCH + - POST + - PUT + ResourceName: root + Uri: "/" + ApiName: sdnc-oam-http + +sdnc-web: + AefProfiles: + - interfaceDescriptions: + - ipv4Addr: "sdnc-web.nonrtric.svc.cluster.local" + port: 8080 + securityMethods: + - PKI + Versions: + - ApiVersion: "" + Resources: + - CommType: REQUEST_RESPONSE + Operations: + - DELETE + - GET + - PATCH + - POST + - PUT + ResourceName: root + Uri: "/" + ApiName: sdnc-web-http diff --git a/servicemanager-preload/servicemanager-preload.sh b/servicemanager-preload/servicemanager-preload.sh new file mode 100755 index 00000000..fcf4a82c --- /dev/null +++ b/servicemanager-preload/servicemanager-preload.sh @@ -0,0 +1,382 @@ +#!/bin/bash + +################################################################################ +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ + +function get_published_apis_payload() { + + IFS=$'\n' read -d '' -r -a ipv4Ar <<< ${interfaceDescIpv4Addr} + IFS=$'\n' read -d '' -r -a portAr <<< ${interfaceDescPort} + IFS=$'\n' read -d '' -r -a securityMethodsAr <<< ${interfaceDescSecurityMethods} + + interfaceDescArLen=${#ipv4Ar[@]} + >&2 echo "interfaceDescArLen: ${interfaceDescArLen}" + + # Iterate over the array using array indexing + interfaceDescBlock="" + for (( i=0; i&2 echo "ipv4Ar[$i]: ${ipv4Ar[$i]}" + + interfaceDescItem=" + { + \"ipv4Addr\": \"${ipv4Ar[$i]}\", + \"port\": ${portAr[$i]}, + \"securityMethods\": ${securityMethodsAr[$i]} + }" + interfaceDescBlock="${interfaceDescBlock}${interfaceDescItem}, " + >&2 echo "interfaceDescItem: ${interfaceDescItem}" + done + + # Trim the trailing space and comma + interfaceDescBlock="${interfaceDescBlock%??}" + + >&2 echo "interfaceDescBlock: ${interfaceDescBlock}" + + + declare -a commType_array + read -r -a commType_array <<< "${resourcesAr["CommType"]}" + + declare -a resourceName_array + read -r -a resourceName_array <<< "${resourcesAr["ResourceName"]}" + + declare -a uri_array + read -r -a uri_array <<< "${resourcesAr["Uri"]}" + + declare -a ops_array + + ops_array=$(echo ${resourcesAr["Operations"]} | tr ' ' '*') + + declare -a operations_array + + IFS=',' read -r -a operations_array <<< "${ops_array}" + + for operation in ${operations_array[@]}; do + >&2 echo "Operations Element: ${operation}" + done + + ops_ar_length=${#operations_array[@]} + + >&2 echo "ops_ar_length operations_array ${ops_ar_length}" + + # Iterate over the array using array indexing + resourceBlock="" + for (( i=0; i&2 echo "payload ${payload}" + + echo $payload | jq . +} + +function publish_service() { + echo "Publish service for $service_name" + + aef_profiles=$(echo "$service" | jq -c '.value.AefProfiles') + api_name=$(echo "$service" | jq -c '.value.ApiName') + + echo "$aef_profiles" | jq -c '.[]' | while read -r aef_profile; do + + interfaceDescriptions=$(echo "$aef_profile" | jq -c '.interfaceDescriptions') + + >&2 echo "interfaceDescriptions: ${interfaceDescriptions}"; + + interfaceDescIpv4Addr=$(echo $interfaceDescriptions | jq -r .[]."ipv4Addr") + interfaceDescPort=$(echo $interfaceDescriptions | jq .[]."port") + interfaceDescSecurityMethods=$(echo $interfaceDescriptions | jq -c .[]."securityMethods") + + >&2 echo "interfaceDescIpv4Addr: ${interfaceDescIpv4Addr}"; + >&2 echo "interfaceDescPort: ${interfaceDescPort}"; + >&2 echo "interfaceDescSecurityMethods: ${interfaceDescSecurityMethods}"; + + versions=$(echo "$aef_profile" | jq -c '.Versions[]') + + ApiVersion=$(echo "$versions" | jq -c '.ApiVersion') + >&2 echo "ApiVersion: $ApiVersion" + + Resources=$(echo "$versions" | jq -c '.Resources[]') + + # Parse Resources + declare -A resourcesAr + + commTypeCsv="" + + for row in $(echo "$Resources" | jq -c '.CommType'); do + commType=$(echo "$row" | jq -r '.'); + >&2 echo "commType: $commType"; + commTypeCsv="${commTypeCsv}${commType} " + >&2 echo "Building commTypeCsv ${commTypeCsv}" + done + + commTypeCsv=$(echo "$commTypeCsv" | xargs) + resourcesAr["CommType"]=${commTypeCsv} + + resourceNameCsv="" + for row in $(echo "$Resources" | jq -c '.ResourceName'); do + resourceName=$(echo "$row" | jq -r '.'); + >&2 echo "resourceName: $resourceName"; + resourceNameCsv="${resourceNameCsv}${resourceName} " + >&2 echo "Building resourceNameCsv ${resourceNameCsv}" + done + resourceNameCsv=$(echo "$resourceNameCsv" | xargs) + resourcesAr["ResourceName"]=$resourceNameCsv + + uriCsv="" + for row in $(echo "$Resources" | jq -c '.Uri'); do + uri=$(echo "$row" | jq -r '.'); + >&2 echo "uri: $uri"; + uriCsv="${uriCsv}${uri} " + >&2 echo "Building uriCsv ${uriCsv}" + done + uriCsv=$(echo "$uriCsv" | xargs) + resourcesAr["Uri"]=$uriCsv + + operationsCsv="" + for row in $(echo "$Resources" | jq -c '.Operations'); do + operations=$(echo "$row" | jq -r '.[]') + >&2 echo "operations: $operations"; + operationsCsv="${operationsCsv}${operations}," + >&2 echo "Building operationsCsv ${operationsCsv}" + done + resourcesAr["Operations"]=$operationsCsv + + payload=$(get_published_apis_payload) + + # Make the REST call + url="http://${first_node_ip}:${servicemanager_node_port}/published-apis/v1/${apfId}/service-apis" + >&2 echo "published-apis url: ${url}" + response=$(curl -s -X POST -H "Content-Type: application/json" -d "$payload" "$url") + + ret=$? + if [ $ret -ne 0 ]; then + echo "REST call to Service Manager/published-apis failed, error code $ret" + return $ret + fi + + resp_code=$(echo $response | jq -r '.status') + if [ "$resp_code" != "null" ] && [ "$resp_code" != "201" ]; then + echo "Failed to publish service $service_name with response code $resp_code" + fi + + response=$(echo "${response}" | jq .) + >&2 echo "Response for published service $service_name: $response" + done + return 0 +} + +function register_provider() { + # Make the REST call + url="http://${first_node_ip}:${servicemanager_node_port}/api-provider-management/v1/registrations" + response=$(curl -s -X POST -H "Content-Type: application/json" -d "$payload" "$url") + + ret=$? + if [ $ret -ne 0 ]; then + echo "REST call to Service Manager/api-provider-management failed, error code $ret" + status="$ret" + else + check_resp=$(jq --argjson resp "$response" -n '$resp.apiProvDomId') + if [ $check_resp != "null" ]; then + status=201 + else + status=$(jq --argjson resp "$response" -n '$resp.status') + fi + fi + echo $status +} + +function get_registrations_payload() { + payload="{ + \"apiProvDomInfo\": \"${domainName}\", + \"apiProvFuncs\": [ + { + \"apiProvFuncInfo\": \"${apf_info}\", + \"apiProvFuncRole\": \"APF\", + \"regInfo\": { + \"apiProvPubKey\": \"APF-PublicKey\" + } + }, + { + \"apiProvFuncInfo\": \"${aef_info}\", + \"apiProvFuncRole\": \"AEF\", + \"regInfo\": { + \"apiProvPubKey\": \"AEF-PublicKey\" + } + } + ], + \"regSec\": \"${service_name}-regsec\" +}" + echo $payload +} + +function register_apf() { + echo "Register provider for ${service_name}" + # Prepare the JSON payload for the REST calls + apf_info="${service_name} as APF" + aef_info="${service_name} as AEF" + aefId="AEF_id_${service_name}_as_AEF" + apfId="APF_id_${service_name}_as_APF" + + payload=$(get_registrations_payload) + >&2 echo "Registration payload: $payload" + resp=$(register_provider) + + if [ $resp != 201 ]; then + >&2 echo "Failed to register provider with error code ${resp}" + return $resp + fi + return 0 +} + +function find_running_services_from_config() { + result="" + + # Extract service names from YAML using yq and strip leading/trailing whitespace + SERVICE_NAMES=$(yq eval '. | keys[]' "$yaml_file") + + # Check each service using kubectl + for service in $SERVICE_NAMES; do + >&2 echo "Checking service: $service in nonrtric" + # Use kubectl get to check if the service exists and capture the output + SERVICE_STATUS=$(kubectl get service "$service" -n nonrtric) + + if [ $? = 0 ]; then + >&2 echo "Service $service is found in nonrtric" + result+="$service " + else + >&2 echo "Service $service is not running in nonrtric" + SERVICE_STATUS=$(kubectl get service "$service" -n onap) + if [ $? = 0 ]; then + >&2 echo "Service $service is found in onap" + result+="$service " + else + >&2 echo "Service $service is not found in onap" + fi + fi + done + + # Trim trailing whitespace + result=$(echo "$result" | xargs) + echo $result +} + +function publish_services_from_config() { + echo "Find running services" + domainName="kong" + running_services_list=$(find_running_services_from_config) + + # Iterate through the configured services + echo "$json_config" | jq -c 'to_entries[]' | while read -r service; do + service_name=$(echo "$service" | jq -r '.key') + if echo "$running_services_list" | grep -q "$service_name"; then + register_apf + ret=$? + if [ $ret -ne 0 ]; then + break + fi + + publish_service + ret=$? + if [ $ret -ne 0 ]; then + break + fi + fi + done +} + +# Ensure yq and jq are installed +if ! command -v yq &> /dev/null; then + >&2 echo "yq is not installed. Installing yq..." + sudo snap install yq --channel=v4/stable +fi + +if ! command -v jq &> /dev/null; then + >&2 echo "jq is not installed. Installing jq..." + sudo snap install jq +fi + +# Read and parse the YAML file +yaml_file="${1:-config.yaml}" +json_config=$(yq eval "$yaml_file" -o=json) + +echo "Preloading Service Manager from ${yaml_file}" + +# Get our Node IP and nodePort +first_node_ip=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}') +servicemanager_node_port=$(kubectl get service servicemanager -n nonrtric -o jsonpath='{.spec.ports[0].nodePort}') + +echo "Waiting for capifcore deployment" +kubectl wait --for=condition=Available -n nonrtric --timeout=300s deploy/capifcore + +echo "Waiting for servicemanager deployment" +kubectl wait --for=condition=Available -n nonrtric --timeout=300s deploy/servicemanager + +echo "Waiting for kong deployment" +kubectl wait --for=condition=Available -n nonrtric --timeout=300s deploy/oran-nonrtric-kong + +publish_services_from_config + +echo "Service Manager preload completed for ${yaml_file}" diff --git a/smo-install/oran_oom/a1simulator/values.yaml b/smo-install/oran_oom/a1simulator/values.yaml index a2145ae0..b2459ae4 100644 --- a/smo-install/oran_oom/a1simulator/values.yaml +++ b/smo-install/oran_oom/a1simulator/values.yaml @@ -1,7 +1,7 @@ -# ============LICENSE_START=============================================== +# ============LICENSE_START================================================ # Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. -# Copyright (C) 2023 OpenInfra Foundation Europe. All rights reserved. -# ======================================================================== +# Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. +# ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -13,12 +13,12 @@ # 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================================================= +# ============LICENSE_END================================================== image: repository: 'nexus3.o-ran-sc.org:10002/o-ran-sc' name: a1-simulator - tag: 2.6.1 + tag: 2.7.0 pullPolicy: IfNotPresent service: type: ClusterIP diff --git a/smo-install/oran_oom/capifcore/values.yaml b/smo-install/oran_oom/capifcore/values.yaml index 8d9cf80a..fb4e1cdd 100644 --- a/smo-install/oran_oom/capifcore/values.yaml +++ b/smo-install/oran_oom/capifcore/values.yaml @@ -20,9 +20,9 @@ imagePullPolicy: IfNotPresent image: - registry: 'nexus3.o-ran-sc.org:10002/o-ran-sc' + registry: 'nexus3.o-ran-sc.org:10004/o-ran-sc' name: nonrtric-plt-capifcore - tag: 1.2.0 + tag: 1.4.0 service: type: ClusterIP ports: diff --git a/smo-install/oran_oom/dmaapadapterservice/values.yaml b/smo-install/oran_oom/dmaapadapterservice/values.yaml index 40665dca..62cc766e 100644 --- a/smo-install/oran_oom/dmaapadapterservice/values.yaml +++ b/smo-install/oran_oom/dmaapadapterservice/values.yaml @@ -1,5 +1,6 @@ ################################################################################ -# Copyright (c) 2021 Nordix Foundation. # +# Copyright (c) 2021-22 Nordix Foundation. All rights reserved. # +# Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # @@ -22,7 +23,7 @@ imagePullPolicy: IfNotPresent image: registry: "nexus3.o-ran-sc.org:10002/o-ran-sc" name: "nonrtric-plt-dmaapadapter" - tag: 1.3.0 + tag: 1.4.0 service: type: ClusterIP ports: diff --git a/smo-install/oran_oom/policy-clamp-ac-dme-ppnt/values.yaml b/smo-install/oran_oom/policy-clamp-ac-dme-ppnt/values.yaml index f75f811a..c7027e59 100644 --- a/smo-install/oran_oom/policy-clamp-ac-dme-ppnt/values.yaml +++ b/smo-install/oran_oom/policy-clamp-ac-dme-ppnt/values.yaml @@ -42,7 +42,7 @@ secrets: # Application configuration defaults. ################################################################# # application image -image: nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-plt-participant-impl-dme:0.0.1 +image: nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-plt-participant-impl-dme:0.1.0 pullPolicy: Always componentName: &componentName policy-clamp-ac-dme-ppnt diff --git a/smo-install/oran_oom/policymanagementservice/values.yaml b/smo-install/oran_oom/policymanagementservice/values.yaml index e34f8869..cac8329a 100644 --- a/smo-install/oran_oom/policymanagementservice/values.yaml +++ b/smo-install/oran_oom/policymanagementservice/values.yaml @@ -1,7 +1,7 @@ -# ============LICENSE_START=============================================== +# ============LICENSE_START================================================ # Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. -# Copyright (C) 2023 OpenInfra Foundation Europe. All rights reserved. -# ======================================================================== +# Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved. +# ========================================================================= # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -13,7 +13,7 @@ # 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================================================= +# ============LICENSE_END================================================== # Default values for Policy Management Service. # This is a YAML-formatted file. @@ -23,7 +23,7 @@ imagePullPolicy: IfNotPresent image: registry: "nexus3.o-ran-sc.org:10002/o-ran-sc" name: nonrtric-plt-a1policymanagementservice - tag: 2.7.0 + tag: 2.8.0 service: type: NodePort ports: diff --git a/smo-install/oran_oom/rappmanager/values.yaml b/smo-install/oran_oom/rappmanager/values.yaml index dd7a2c77..1429b07c 100644 --- a/smo-install/oran_oom/rappmanager/values.yaml +++ b/smo-install/oran_oom/rappmanager/values.yaml @@ -24,7 +24,7 @@ imagePullPolicy: IfNotPresent image: registry: "nexus3.o-ran-sc.org:10002/o-ran-sc" name: nonrtric-plt-rappmanager - tag: 0.0.1 + tag: 0.1.0 service: type: ClusterIP ports: diff --git a/smo-install/oran_oom/servicemanager/values.yaml b/smo-install/oran_oom/servicemanager/values.yaml index fb536718..28a49742 100644 --- a/smo-install/oran_oom/servicemanager/values.yaml +++ b/smo-install/oran_oom/servicemanager/values.yaml @@ -20,7 +20,7 @@ imagePullPolicy: IfNotPresent image: registry: 'nexus3.o-ran-sc.org:10004/o-ran-sc' name: nonrtric-plt-servicemanager - tag: 0.1.2 + tag: 0.1.3 service: httpName: http ports: diff --git a/smo-install/scripts/sub-scripts/install-nonrtric.sh b/smo-install/scripts/sub-scripts/install-nonrtric.sh index d91243d7..4f58600e 100755 --- a/smo-install/scripts/sub-scripts/install-nonrtric.sh +++ b/smo-install/scripts/sub-scripts/install-nonrtric.sh @@ -63,3 +63,11 @@ if [ "$INSTALL_SERVICEMANAGER" == "true" ]; then fi helm install --debug oran-nonrtric local/nonrtric --namespace nonrtric -f $OVERRIDEYAML --set nonrtric.persistence.mountPath="/dockerdata-nfs/deployment-$2" + +if [ "$INSTALL_SERVICEMANAGER" == "true" ]; then + pushd ../../../servicemanager-preload + # Send stderr to /dev/null to turn off chatty logging + ./servicemanager-preload.sh config-nonrtric.yaml 2>/dev/null + ./servicemanager-preload.sh config-smo.yaml 2>/dev/null + popd +fi -- 2.16.6 From 593812878b9ce6d9109a1814bf3f11577501fbd4 Mon Sep 17 00:00:00 2001 From: DenisGNoonan Date: Mon, 19 Aug 2024 16:32:15 +0100 Subject: [PATCH 10/15] NONRTRIC-1005: ServiceManager preload README Change-Id: If644b268929d7a7361ababfd4719f7c92d982c20 Signed-off-by: DenisGNoonan --- servicemanager-preload/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/servicemanager-preload/README.md b/servicemanager-preload/README.md index b7b10a43..7fcfac0e 100644 --- a/servicemanager-preload/README.md +++ b/servicemanager-preload/README.md @@ -67,7 +67,7 @@ An example of a dynamic path is Our dynamic path starts with a ~ character. In this example, we have a path parameter that is described by a regex capture group called rappId. The regex describes a word made of mixed-case alphanumeric characters optionally followed by one or more sets of a dash or underscore together with another word. -When the Service Manager client calls a dynamic API, it must strip the ~ and substitute the path parameter according to the rules specified in the regex. Therefore, we can call the above example by using +When the Service Manager client calls a dynamic API, we call the URL without the '~'. Kong substitutes the path parameter according to the rules specified in the regex. Therefore, we can call the above example by using ```http /rapps/my-rApp-id @@ -75,9 +75,9 @@ When the Service Manager client calls a dynamic API, it must strip the ~ and sub as the URL where my-rApp-id is the rApp id of in the rApp Manager. The name my-rApp-id has to match the regex shown above. -It is required to name the capture group in this YAML config file. The capture group name is used by Service Manager when creating a Kong Request Transformerplugin. We can specify multiple capture groups in a URL if there are multiple path parameters in the API path. +It is required to name the capture group in this YAML config file. The capture group name is used by Service Manager when creating a Kong Request Transformer plugin. We can specify multiple capture groups in a URL if there are multiple path parameters in the API path. -We create a Kong Request Transformer plugin with the following .data[].config.replace, as in the following example curl and abridged response. +We create a Kong Request Transformer plugin with .data[].config.replace, as in the following example curl with abridged response. ```sh curl -X GET http://oran-nonrtric-kong-admin.nonrtric.svc.cluster.local:8001/plugins -- 2.16.6 From 2357be5fd88311b3250ec3e37cbdb93a509c6135 Mon Sep 17 00:00:00 2001 From: DenisGNoonan Date: Thu, 22 Aug 2024 20:47:55 +0100 Subject: [PATCH 11/15] NONRTRIC-1005: preload services with names in braces Issue-ID: NONRTRIC-1005 Change-Id: Ib84136bfa8e17b6430ae6a5a1ef288375b0a192d Signed-off-by: DenisGNoonan --- servicemanager-preload/config-nonrtric.yaml | 38 ++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/servicemanager-preload/config-nonrtric.yaml b/servicemanager-preload/config-nonrtric.yaml index 8546b86d..6b687bda 100644 --- a/servicemanager-preload/config-nonrtric.yaml +++ b/servicemanager-preload/config-nonrtric.yaml @@ -46,13 +46,13 @@ servicemanager: - PATCH - DELETE ResourceName: registrations-domain_id - Uri: "~/api-provider-management/registrations/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/api-provider-management/registrations/{registrationId}" - CommType: REQUEST_RESPONSE Operations: - GET - POST ResourceName: publisher - Uri: "~/published-apis/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/service-apis" + Uri: "/published-apis/{apfId}/service-apis" - CommType: REQUEST_RESPONSE Operations: - GET @@ -60,7 +60,7 @@ servicemanager: - PATCH - DELETE ResourceName: publisher-api_id - Uri: "~/published-apis/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/service-apis/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/published-apis/{apfId}/service-apis/{serviceApiId}" - CommType: REQUEST_RESPONSE Operations: - POST @@ -72,7 +72,7 @@ servicemanager: - PATCH - DELETE ResourceName: invoker-invoker_id - Uri: "~/api-invoker-management/onboardedInvokers/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/api-invoker-management/onboardedInvokers/{onboardingId}" - CommType: REQUEST_RESPONSE Operations: - GET @@ -103,7 +103,7 @@ rappmanager: - PUT - DELETE ResourceName: "rapps-rappId" - Uri: "~/rapps/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/rapps/{rappId}" - CommType: REQUEST_RESPONSE Operations: - GET @@ -115,13 +115,13 @@ rappmanager: - PUT - DELETE ResourceName: "rapps-instance" - Uri: "~/rapps/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/instance/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/rapps/{rappId}/instance/{rappInstanceId}" - CommType: REQUEST_RESPONSE Operations: - GET - POST ResourceName: "rapps-all-instances" - Uri: "~/rapps/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/instance" + Uri: "/rapps/{rappId}/instance" ApiName: rapp-http # https://docs.o-ran-sc.org/projects/o-ran-sc-nonrtric-plt-a1policymanagementservice/en/latest/pms-api.html @@ -150,7 +150,7 @@ policymanagementservice: - GET - DELETE ResourceName: "Policy" - Uri: "~/a1-policy/v2/policies/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/a1-policy/v2/policies/{policy_id}" - CommType: REQUEST_RESPONSE Operations: - GET @@ -165,12 +165,12 @@ policymanagementservice: Operations: - GET ResourceName: "getPolicyStatus" - Uri: "~/a1-policy/v2/policies/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/status" + Uri: "/a1-policy/v2/policies/{policy_id}/status" - CommType: REQUEST_RESPONSE Operations: - GET ResourceName: "getPolicyTypeDefinition" - Uri: "~/a1-policy/v2/policy-types/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/a1-policy/v2/policy-types/{policytype_id}" - CommType: REQUEST_RESPONSE Operations: - GET @@ -216,7 +216,7 @@ policymanagementservice: - GET - POST ResourceName: "loggersName" - Uri: "~/actuator/loggers/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/actuator/loggers/{name}" - CommType: REQUEST_RESPONSE Operations: - GET @@ -226,7 +226,7 @@ policymanagementservice: Operations: - GET ResourceName: "metricsRequiredMetricName" - Uri: "~/actuator/metrics/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/actuator/metrics/{requiredMetricName}" - CommType: REQUEST_RESPONSE Operations: - POST @@ -267,12 +267,12 @@ policymanagementservice: Operations: - DELETE ResourceName: "deleteService" - Uri: "~/a1-policy/v2/services/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/a1-policy/v2/services/{service_id}" - CommType: REQUEST_RESPONSE Operations: - PUT ResourceName: "keepAliveService" - Uri: "~/a1-policy/v2/services/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/keepalive" + Uri: "/a1-policy/v2/services/{service_id}/keepalive" - CommType: REQUEST_RESPONSE Operations: - DELETE @@ -300,12 +300,12 @@ informationservice: Operations: - GET ResourceName: "IndividualEIType" - Uri: "~/A1-EI/eitypes/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/A1-EI/eitypes/{eiTypeId}" - CommType: REQUEST_RESPONSE Operations: - GET ResourceName: "EIJobStatus" - Uri: "~/A1-EI/v1/eijobs/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)/status" + Uri: "/A1-EI/v1/eijobs/{eiJobId}/status" - CommType: REQUEST_RESPONSE Operations: - GET @@ -317,7 +317,7 @@ informationservice: - DELETE - PUT ResourceName: "IndividualEIJob" - Uri: "~/A1-EI/v1/eijobs/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/A1-EI/v1/eijobs/{eiJobId}" - CommType: REQUEST_RESPONSE Operations: - GET @@ -362,7 +362,7 @@ informationservice: Operations: - GET ResourceName: "metricsRequiredMetricName" - Uri: "~/actuator/metrics/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/actuator/metrics/{requiredMetricName}" - CommType: REQUEST_RESPONSE Operations: - GET @@ -383,7 +383,7 @@ informationservice: - GET - POST ResourceName: "loggersName" - Uri: "~/actuator/loggers/(?[a-zA-Z0-9]+([-_][a-zA-Z0-9]+)*)" + Uri: "/actuator/loggers/{name}" - CommType: REQUEST_RESPONSE Operations: - GET -- 2.16.6 From 039fca7a30aff945520ca266ee1e019f6255cc49 Mon Sep 17 00:00:00 2001 From: "aravind.est" Date: Mon, 26 Aug 2024 11:55:12 +0100 Subject: [PATCH 12/15] Fix the usage of absolute paths Absolute path usage changed to relative paths. This causes an issue when the repository checked out to a different folder name other than dep Issue-ID: CCSDK-4033 Change-Id: I932c793bbda052691c126b00e926ca95f50eebce Signed-off-by: aravind.est --- bin/deploy-nonrtric | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/deploy-nonrtric b/bin/deploy-nonrtric index cb40cd3a..6228d881 100755 --- a/bin/deploy-nonrtric +++ b/bin/deploy-nonrtric @@ -225,7 +225,7 @@ if [ "$INSTALL_KONG" = true ];then echo "Installing Kong" helm repo add kong https://charts.konghq.com --force-update helm repo update - helm install oran-nonrtric kong/kong -n ${NONRTRIC_NAMESPACE:-nonrtric} -f dep/nonrtric/helm/kongstorage/kongvalues.yaml + helm install oran-nonrtric kong/kong -n ${NONRTRIC_NAMESPACE:-nonrtric} -f "$ROOT_DIR/../nonrtric/helm/kongstorage/kongvalues.yaml" fi kubectl create configmap -n ${NONRTRIC_NAMESPACE:-nonrtric} nonrtric-recipe --from-file=recipe=$OVERRIDEYAML @@ -245,7 +245,7 @@ echo "helm install -f $OVERRIDEYAML --namespace ${NONRTRIC_NAMESPACE:-nonrtric} helm install -f $OVERRIDEYAML -n "${NONRTRIC_NAMESPACE:-nonrtric}" ${HELM_NAME_OPT} "${RELEASE_PREFIX}" "$ROOT_DIR/../nonrtric/helm/nonrtric" if [ "$INSTALL_SERVICEMANAGER" == "true" ]; then - pushd dep/servicemanager-preload + pushd "$ROOT_DIR/../servicemanager-preload" # Send stderr to null to turn off chatty logging ./servicemanager-preload.sh config-nonrtric.yaml 2>/dev/null popd -- 2.16.6 From 2b8f982e038a2107a89e6f9724f35a107860c99a Mon Sep 17 00:00:00 2001 From: "aravind.est" Date: Fri, 30 Aug 2024 15:40:56 +0100 Subject: [PATCH 13/15] Move NONRTRIC charts to separate build process NONRTRIC helm build process uses helm v3 ric charts verify excluded the NONRTRIC charts Issue-ID: CCSDk-4033 Change-Id: Iec4f4da1f26d8a8108b7be7e5a8d4c9916a457d1 Signed-off-by: aravind.est --- bin/build-nonrtric-base | 73 ++++++++++++++++++++++++++++++++++++++++++ bin/deploy-nonrtric | 56 +------------------------------- bin/verify-nonrtric-charts | 65 +++++++++++++++++++++++++++++++++++++ bin/verify-ric-charts | 9 ++---- ci/Dockerfile-nonrtric-install | 27 ++++++++++++++++ 5 files changed, 169 insertions(+), 61 deletions(-) create mode 100755 bin/build-nonrtric-base create mode 100755 bin/verify-nonrtric-charts create mode 100644 ci/Dockerfile-nonrtric-install diff --git a/bin/build-nonrtric-base b/bin/build-nonrtric-base new file mode 100755 index 00000000..00dd64eb --- /dev/null +++ b/bin/build-nonrtric-base @@ -0,0 +1,73 @@ +#!/bin/bash +################################################################################ +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ + +ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" + +#Check for helm3 +IS_HELM3=$(helm version -c --short|grep -e "^v3") + +CM_VERSION="v0.16.2" +CM_PORT="8879" +CM_BASE_URL="http://127.0.0.1:$CM_PORT" +CM_CHART_GET_URL="$CM_BASE_URL/charts" +CM_CHART_POST_URL="$CM_BASE_URL/charts/api/charts" + +if ! command -v chartmuseum &> /dev/null +then + pushd /tmp + echo "Installing ChartMuseum binary..." + wget https://get.helm.sh/chartmuseum-$CM_VERSION-linux-amd64.tar.gz + tar xvfz chartmuseum-$CM_VERSION-linux-amd64.tar.gz + sudo mv /tmp/linux-amd64/chartmuseum /usr/local/bin/chartmuseum + popd +else + echo "ChartMuseum is already installed." +fi + +# Package common templates and serve it using Helm local repo +HELM_LOCAL_REPO="./chartstorage" +rm $HELM_LOCAL_REPO/* + +#Start Chart Museum server if there isn't one +CHART_MUSEUM_PID=$(lsof -i :"$CM_PORT" | grep "chartmus" | grep -v "grep" | awk '{print $2}') +if [ -z "$CHART_MUSEUM_PID" ]; then + echo "Starting ChartMuseum on port $CM_PORT..." + nohup chartmuseum --port=$CM_PORT --storage="local" --context-path=/charts --storage-local-rootdir=$HELM_LOCAL_REPO >/dev/null 2>&1 & + echo $! > $ROOT_DIR/CM_PID.txt +else + echo "ChartMuseum is already running..." +fi + +# Check if ChartMuseum is ready to serve request +command="curl --silent --output /dev/null $CM_BASE_URL" +for i in $(seq 1 5) +do $command && s=0 && break || s=$? && echo "Failed to establish a connection with the ChartMuseum server. Retrying after 5s" && sleep 5; +done + +if [ $s -gt 0 ] +then + echo "Cmd to test ChartMuseum failed with ($s): $command" + exit $s +fi + +helm repo remove local +helm repo add local $CM_CHART_GET_URL + +echo -e "\nPackaging NONRTRIC common [nonrtric-common]" +NONRTRIC_COMMON_CHART_VERSION=$(cat $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common/Chart.yaml | grep version | awk '{print $2}') +helm package -d /tmp $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common +curl --data-binary @/tmp/nonrtric-common-$NONRTRIC_COMMON_CHART_VERSION.tgz $CM_CHART_POST_URL diff --git a/bin/deploy-nonrtric b/bin/deploy-nonrtric index 6228d881..ccc9ddee 100755 --- a/bin/deploy-nonrtric +++ b/bin/deploy-nonrtric @@ -89,61 +89,7 @@ ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" echo "** $ROOT_DIR" rm $ROOT_DIR/../nonrtric/helm/*/charts/*.tgz -#ChartMuseum configuration -CM_VERSION="v0.16.1" -CM_PORT="8879" -CM_BASE_URL="http://127.0.0.1:$CM_PORT" -CM_CHART_GET_URL="$CM_BASE_URL/charts" -CM_CHART_POST_URL="$CM_BASE_URL/charts/api/charts" - -#Check for helm3 -IS_HELM3=$(helm version -c --short|grep -e "^v3") - -if ! command -v chartmuseum &> /dev/null -then - pushd /tmp - echo "Installing ChartMuseum binary..." - wget https://get.helm.sh/chartmuseum-$CM_VERSION-linux-amd64.tar.gz - tar xvfz chartmuseum-$CM_VERSION-linux-amd64.tar.gz - sudo mv /tmp/linux-amd64/chartmuseum /usr/local/bin/chartmuseum - popd -else - echo "ChartMuseum is already installed." -fi - -# Package common templates and serve it using Helm local repo -HELM_LOCAL_REPO="./chartstorage" -rm $HELM_LOCAL_REPO/* - -#Start Chart Museum server if there isn't one -CHART_MUSEUM_PID=$(lsof -i :"$CM_PORT" | grep "chartmus" | grep -v "grep" | awk '{print $2}') -if [ -z "$CHART_MUSEUM_PID" ]; then - echo "Starting ChartMuseum on port $CM_PORT..." - nohup chartmuseum --port=$CM_PORT --storage="local" --context-path=/charts --storage-local-rootdir=$HELM_LOCAL_REPO >/dev/null 2>&1 & - echo $! > $ROOT_DIR/CM_PID.txt -else - echo "ChartMuseum is already running..." -fi - -# Check if ChartMuseum is ready to serve request -command="curl --silent --output /dev/null $CM_BASE_URL" -for i in $(seq 1 5) -do $command && s=0 && break || s=$? && echo "Failed to establish a connection with the ChartMuseum server. Retrying after 5s" && sleep 5; -done - -if [ $s -gt 0 ] -then - echo "Cmd to test ChartMuseum failed with ($s): $command" - exit $s -fi - -helm repo remove local -helm repo add local $CM_CHART_GET_URL - -echo -e "\nPackaging NONRTRIC common [nonrtric-common]" -NONRTRIC_COMMON_CHART_VERSION=$(cat $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common/Chart.yaml | grep version | awk '{print $2}') -helm package -d /tmp $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common -curl --data-binary @/tmp/nonrtric-common-$NONRTRIC_COMMON_CHART_VERSION.tgz $CM_CHART_POST_URL +source $ROOT_DIR/build-nonrtric-base charts_already_exists=() diff --git a/bin/verify-nonrtric-charts b/bin/verify-nonrtric-charts new file mode 100755 index 00000000..c4547922 --- /dev/null +++ b/bin/verify-nonrtric-charts @@ -0,0 +1,65 @@ +#!/bin/bash +################################################################################ +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ + +OVERRIDEYAML=$1 + +ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" + +source $ROOT_DIR/build-nonrtric-base + +echo "Create array of helm charts" +CHART_ARRAY=() +while IFS= read -r -d $'\0'; do + echo -e "File - $REPLY \n" + CHART_ARRAY+=("$REPLY") +done < <(find $ROOT_DIR/../nonrtric -maxdepth 5 -name Chart.yaml -printf '%h\0') + +echo "***************************************" +echo "Remove nonrtric parent chart from linting as its a conceptual visualization of Nonrtric components. This chart doesn't contain any templates & it's primarily +used for grouping of all Nonrtric components in deployment" + +for dir in "${CHART_ARRAY[@]}" +do + if [[ $dir == *"/helm/nonrtric"* ]]; then + echo "Skip Nonrtric Parent chart" + else + echo "Update chart dependency for directory $dir" + helm dep up $dir + # Lint clearly marks errors; e.g., [ERROR] + if [ -z $OVERRIDEYAML ]; then + helm lint $dir > /tmp/output 2>&1 + else + helm lint -f $OVERRIDEYAML $dir> /tmp/output 2>&1 + fi + echo "***************************************************************************************************************" + cat /tmp/output + + egrep -q '^Error: [0-9]* chart\(s\) linted, [0-9]* chart\(s\) failed' /tmp/output && exit 1 + echo "***************************************************************************************************************" + + if [ -z $OVERRIDEYAML ]; then + helm template $dir > /tmp/output 2>&1 + else + helm template -f $OVERRIDEYAML $dir > /tmp/output 2>&1 + fi + echo "***************************************************************************************************************" + cat /tmp/output + sleep 1 + egrep -n '%!.\(.*=.*\)' /tmp/output && echo "Error: Type mismatch." && exit 1 + echo "***************************************************************************************************************" + fi +done diff --git a/bin/verify-ric-charts b/bin/verify-ric-charts index 53cc8312..51e9b584 100755 --- a/bin/verify-ric-charts +++ b/bin/verify-ric-charts @@ -2,6 +2,7 @@ ############################################################################## # # Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -58,13 +59,9 @@ AUX_COMMON_CHART_VERSION=$(cat $ROOT_DIR/../ric-common/Common-Template/helm/aux- helm package -d /tmp $ROOT_DIR/../ric-common/Common-Template/helm/aux-common cp /tmp/aux-common-$AUX_COMMON_CHART_VERSION.tgz $HELM_LOCAL_REPO -NONRTRIC_COMMON_CHART_VERSION=$(cat $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common/Chart.yaml | grep version | awk '{print $2}') -helm package -d /tmp $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common -cp /tmp/nonrtric-common-$NONRTRIC_COMMON_CHART_VERSION.tgz $HELM_LOCAL_REPO - -helm repo index $HELM_HOME/repository/local/ +helm repo index $HELM_LOCAL_REPO echo "Make sure that helm local repo is added" helm repo remove local @@ -75,7 +72,7 @@ echo "Create array of helm charts" CHART_ARRAY=() while IFS= read -r -d $'\0'; do CHART_ARRAY+=("$REPLY") -done < <(find $ROOT_DIR/../ -maxdepth 5 -name Chart.yaml -printf '%h\0') +done < <(find $ROOT_DIR/../ -not -path "$ROOT_DIR/../nonrtric/*" -maxdepth 5 -name Chart.yaml -printf '%h\0') echo "***************************************" echo "Remove nonrtric parent chart from linting as its a conceptual visualization of Nonrtric components. This chart doesn't contain any templates & it's primarily diff --git a/ci/Dockerfile-nonrtric-install b/ci/Dockerfile-nonrtric-install new file mode 100644 index 00000000..ae6a9fd5 --- /dev/null +++ b/ci/Dockerfile-nonrtric-install @@ -0,0 +1,27 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (C) 2024 OpenInfra Foundation Europe. All rights reserved. # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); # +# you may not use this file 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. # +################################################################################ + +FROM ubuntu:24.04 +RUN apt-get update && apt-get -y install curl ca-certificates wget curl lsof sudo +ARG HELMVERSION=v3.15.4 +# often times out during LF jenkins build +RUN wget https://get.helm.sh/helm-${HELMVERSION}-linux-amd64.tar.gz && tar -xvf ../helm-${HELMVERSION}-linux-amd64.tar.gz && mv linux-amd64/helm /usr/local/bin/helm +ARG TGT=/tmp/it-dep +COPY . $TGT +# Remove the smo-install as this one will be verified in another verify job +RUN rm -rf $TGT/smo-install +RUN $TGT/bin/verify-nonrtric-charts -- 2.16.6 From ea1a97cc41762859b781e0a80af51f31e813492d Mon Sep 17 00:00:00 2001 From: "aravind.est" Date: Tue, 3 Sep 2024 12:13:11 +0100 Subject: [PATCH 14/15] Move service manager preload configuration to NONRTRIC directory Service manager preload configuration moved to NONRTRIC directory. Issue-ID: CCSDK-4033 Change-Id: I97585255f5269e0ce3fb2105809ec63a5ad36700 Signed-off-by: aravind.est --- bin/deploy-nonrtric | 2 +- {servicemanager-preload => nonrtric/servicemanager-preload}/README.md | 0 .../servicemanager-preload}/config-nonrtric.yaml | 0 .../servicemanager-preload}/config-smo.yaml | 0 .../servicemanager-preload}/servicemanager-preload.sh | 0 5 files changed, 1 insertion(+), 1 deletion(-) rename {servicemanager-preload => nonrtric/servicemanager-preload}/README.md (100%) rename {servicemanager-preload => nonrtric/servicemanager-preload}/config-nonrtric.yaml (100%) rename {servicemanager-preload => nonrtric/servicemanager-preload}/config-smo.yaml (100%) rename {servicemanager-preload => nonrtric/servicemanager-preload}/servicemanager-preload.sh (100%) diff --git a/bin/deploy-nonrtric b/bin/deploy-nonrtric index ccc9ddee..6e5f74f8 100755 --- a/bin/deploy-nonrtric +++ b/bin/deploy-nonrtric @@ -191,7 +191,7 @@ echo "helm install -f $OVERRIDEYAML --namespace ${NONRTRIC_NAMESPACE:-nonrtric} helm install -f $OVERRIDEYAML -n "${NONRTRIC_NAMESPACE:-nonrtric}" ${HELM_NAME_OPT} "${RELEASE_PREFIX}" "$ROOT_DIR/../nonrtric/helm/nonrtric" if [ "$INSTALL_SERVICEMANAGER" == "true" ]; then - pushd "$ROOT_DIR/../servicemanager-preload" + pushd "$ROOT_DIR/../nonrtric/servicemanager-preload" # Send stderr to null to turn off chatty logging ./servicemanager-preload.sh config-nonrtric.yaml 2>/dev/null popd diff --git a/servicemanager-preload/README.md b/nonrtric/servicemanager-preload/README.md similarity index 100% rename from servicemanager-preload/README.md rename to nonrtric/servicemanager-preload/README.md diff --git a/servicemanager-preload/config-nonrtric.yaml b/nonrtric/servicemanager-preload/config-nonrtric.yaml similarity index 100% rename from servicemanager-preload/config-nonrtric.yaml rename to nonrtric/servicemanager-preload/config-nonrtric.yaml diff --git a/servicemanager-preload/config-smo.yaml b/nonrtric/servicemanager-preload/config-smo.yaml similarity index 100% rename from servicemanager-preload/config-smo.yaml rename to nonrtric/servicemanager-preload/config-smo.yaml diff --git a/servicemanager-preload/servicemanager-preload.sh b/nonrtric/servicemanager-preload/servicemanager-preload.sh similarity index 100% rename from servicemanager-preload/servicemanager-preload.sh rename to nonrtric/servicemanager-preload/servicemanager-preload.sh -- 2.16.6 From e337e805fd301f624a766e14c88fea873d041ed6 Mon Sep 17 00:00:00 2001 From: "aravind.est" Date: Tue, 17 Sep 2024 17:21:59 +0100 Subject: [PATCH 15/15] Add warning message when the default storage class is not set Warning message added when the default storage class is not set. This prevents the kong installation as the dependent postgres expects the PV to be available. Issue-ID: NONRTRIC-1030 Change-Id: Ia11d7ab261095a875acec3fb690632a2f1f4e25a Signed-off-by: aravind.est --- bin/deploy-nonrtric | 11 +++++++++++ nonrtric/helm/kongstorage/kongvalues.yaml | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/bin/deploy-nonrtric b/bin/deploy-nonrtric index 6e5f74f8..6ce07a51 100755 --- a/bin/deploy-nonrtric +++ b/bin/deploy-nonrtric @@ -165,6 +165,17 @@ fi echo "Install Kong- $INSTALL_KONG" if [ "$INSTALL_KONG" = true ];then + DEFAULT_SC=$(kubectl get sc -o jsonpath='{.items[?(@.metadata.annotations.storageclass\.kubernetes\.io/is-default-class=="true")].metadata.name}') + if [ -z "$DEFAULT_SC" ];then + echo "----------------------------------- WARNING!!! -------------------------------------------------------" + echo "Default storage class is not set." + echo "Kong PV and PVC creation may fail if it unable to create/use a storage class." + echo "Storage class for the kong installation can be specified in nonrtric/helm/kongstorage/kongvalues.yaml" + echo "------------------------------------------------------------------------------------------------------" + else + echo "Default storage class is set to $DEFAULT_SC" + fi + echo "Install kongstorage through helm" helm install kongstorage -n "${NONRTRIC_NAMESPACE:-nonrtric}" ${HELM_NAME_OPT} "$ROOT_DIR/../nonrtric/helm/kongstorage" diff --git a/nonrtric/helm/kongstorage/kongvalues.yaml b/nonrtric/helm/kongstorage/kongvalues.yaml index 350cb033..c6fff53f 100644 --- a/nonrtric/helm/kongstorage/kongvalues.yaml +++ b/nonrtric/helm/kongstorage/kongvalues.yaml @@ -121,6 +121,10 @@ postgresql: primary: persistence: existingClaim: kongpvc + # If the default storage class is not set, + # This value should be set to create the PV + # storageClass: standard + # ----------------------------------------------------------------------------- # Miscellaneous parameters # ----------------------------------------------------------------------------- -- 2.16.6