Merge "NONRTRIC-980: Service Manager - SMO deployment" master
authorJohn Keeney <john.keeney@est.tech>
Mon, 27 May 2024 16:16:15 +0000 (16:16 +0000)
committerGerrit Code Review <gerrit@o-ran-sc.org>
Mon, 27 May 2024 16:16:15 +0000 (16:16 +0000)
26 files changed:
.gitignore
README.md
bin/deploy-nonrtric
nonrtric/RECIPE_EXAMPLE/example_recipe.yaml
nonrtric/helm/nonrtric/values.yaml
nonrtric/helm/servicemanager/templates/configmap.yaml
nonrtric/helm/servicemanager/values.yaml
ric-aux/helm/mrsub/resources/mrsub.sh
ric-common/Common-Template/helm/nonrtric-common/templates/_servicemanager.tpl [moved from ric-common/Common-Template/helm/nonrtric-common/templates/servicemanager.tpl with 99% similarity]
smo-install/helm-override/cnf/oran-override.yaml
smo-install/helm-override/default/oran-override.yaml
smo-install/helm-override/pythonsdk-tests/oran-override.yaml
smo-install/oran_oom/kong/.helmignore [new file with mode: 0644]
smo-install/oran_oom/kong/Chart.yaml [new file with mode: 0644]
smo-install/oran_oom/kong/templates/00-kong-pv.yaml [new file with mode: 0644]
smo-install/oran_oom/kong/templates/01-kongpvc.yaml [new file with mode: 0644]
smo-install/oran_oom/kong/values.yaml [new file with mode: 0644]
smo-install/oran_oom/nonrtric/Chart.yaml
smo-install/oran_oom/nonrtric/values.yaml
smo-install/oran_oom/servicemanager/Chart.yaml [new file with mode: 0644]
smo-install/oran_oom/servicemanager/templates/configmap.yaml [new file with mode: 0644]
smo-install/oran_oom/servicemanager/templates/deployment.yaml [new file with mode: 0644]
smo-install/oran_oom/servicemanager/templates/service.yaml [new file with mode: 0644]
smo-install/oran_oom/servicemanager/values.yaml [new file with mode: 0644]
smo-install/scripts/sub-scripts/install-nonrtric.sh
smo-install/scripts/sub-scripts/uninstall-nonrtric.sh

index a14e5c2..ad46484 100644 (file)
@@ -7,3 +7,4 @@
 .tox
 .DS_Store
 docs/_build/
+index-cache.yaml
\ No newline at end of file
index bfc2832..b79262a 100644 (file)
--- 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:
index 2125ef3..651771b 100755 (executable)
@@ -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
index 1a67607..d557e53 100644 (file)
@@ -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:
index 4f067e9..c8edf87 100644 (file)
@@ -30,7 +30,7 @@ nonrtric:
   installOrufhrecovery: true
   installRansliceassurance: true
   installCapifcore: true
-  installServicemanager: false
+  installServicemanager: true
   installRanpm: true
   installrAppmanager: true
   installDmeParticipant: true
index 746b039..280e58f 100644 (file)
 #   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 }}: |
index 7a36304..dbb261c 100644 (file)
@@ -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"
index 2743951..9992193 100644 (file)
@@ -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
-
 #   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 "-" -}}
index 52403d2..b159e96 100644 (file)
@@ -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:
index 574ef5d..40d8173 100644 (file)
@@ -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:
index 9b0c2de..50634cc 100644 (file)
@@ -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 (file)
index 0000000..0e8a0eb
--- /dev/null
@@ -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 (file)
index 0000000..9e2ab91
--- /dev/null
@@ -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 (file)
index 0000000..a12ad6a
--- /dev/null
@@ -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 (file)
index 0000000..5f631cf
--- /dev/null
@@ -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 (file)
index 0000000..527f0d0
--- /dev/null
@@ -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
index e7dd005..5462a68 100644 (file)
@@ -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
index f344441..7b862a7 100644 (file)
@@ -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 (file)
index 0000000..db6a13e
--- /dev/null
@@ -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 (file)
index 0000000..746b039
--- /dev/null
@@ -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 (file)
index 0000000..fd76886
--- /dev/null
@@ -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 (file)
index 0000000..3a64f6a
--- /dev/null
@@ -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 (file)
index 0000000..a0a4ffd
--- /dev/null
@@ -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"
index 2926b40..97479d0 100755 (executable)
@@ -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
 # 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"
index 6c528e3..ee52b7c 100755 (executable)
@@ -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
 # 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