NONRTRIC-946: Servicemanager - add Kong data plane and control plane
[nonrtric/plt/sme.git] / servicemanager / deploy / src / deploy-to-k8s.sh
index 9e81d61..18a0583 100755 (executable)
 create_env_from_template(){
     # Set up .env file for Kubernetes Config Map
     echo "create_env_from_template"
-    cp -v ../../.env.example ./.env
-    sed -i 's/KONG_DOMAIN=<string>/KONG_DOMAIN=kong/' .env
-    sed -i 's/KONG_PROTOCOL=<http or https protocol scheme>/KONG_PROTOCOL=http/' .env
-    sed -i 's/KONG_IPV4=<host string>/KONG_IPV4=10.101.1.101/' .env
-    sed -i 's/KONG_DATA_PLANE_PORT=<port number>/KONG_DATA_PLANE_PORT=32080/' .env
-    sed -i 's/KONG_CONTROL_PLANE_PORT=<port number>/KONG_CONTROL_PLANE_PORT=32081/' .env
-    sed -i 's/CAPIF_PROTOCOL=<http or https protocol scheme>/CAPIF_PROTOCOL=http/' .env
-    sed -i 's/CAPIF_IPV4=<host>/CAPIF_IPV4=10.101.1.101/' .env
-    sed -i 's/CAPIF_PORT=<port number>/CAPIF_PORT=31570/' .env
-    sed -i 's/LOG_LEVEL=<Trace, Debug, Info, Warning, Error, Fatal or Panic>/LOG_LEVEL=Info/' .env
-    sed -i 's/SERVICE_MANAGER_PORT=<port number>/SERVICE_MANAGER_PORT=8095/' .env
-    sed -i 's/TEST_SERVICE_IPV4=<host string>/TEST_SERVICE_IPV4=10.101.1.101/' .env
-    sed -i 's/TEST_SERVICE_PORT=<port number>/TEST_SERVICE_PORT=30951/' .env
+    if [ ! -f ../../.env ]; then
+        cp -v ../../.env.example ../../.env
+        sed -i 's/KONG_DOMAIN=<string>/KONG_DOMAIN=kong/' ../../.env
+        sed -i 's/KONG_PROTOCOL=<http or https protocol scheme>/KONG_PROTOCOL=http/' ../../.env
+        sed -i 's/KONG_CONTROL_PLANE_IPV4=<host string>/KONG_CONTROL_PLANE_IPV4=kong-kong-admin.kong.svc.cluster.local/' ../../.env
+        sed -i 's/KONG_CONTROL_PLANE_PORT=<port number>/KONG_CONTROL_PLANE_PORT=8001/' ../../.env
+        sed -i 's/KONG_DATA_PLANE_IPV4=<host string>/KONG_DATA_PLANE_IPV4=kong-kong-proxy.kong.svc.cluster.local/' ../../.env
+        sed -i 's/KONG_DATA_PLANE_PORT=<port number>/KONG_DATA_PLANE_PORT=80/' ../../.env
+        sed -i 's/CAPIF_PROTOCOL=<http or https protocol scheme>/CAPIF_PROTOCOL=http/' ../../.env
+        sed -i 's/CAPIF_IPV4=<host>/CAPIF_IPV4=capifcore.servicemanager.svc.cluster.local/' ../../.env
+        sed -i 's/CAPIF_PORT=<port number>/CAPIF_PORT=8090/' ../../.env
+        sed -i 's/LOG_LEVEL=<Trace, Debug, Info, Warning, Error, Fatal or Panic>/LOG_LEVEL=Info/' ../../.env
+        sed -i 's/SERVICE_MANAGER_PORT=<port number>/SERVICE_MANAGER_PORT=8095/' ../../.env
+        sed -i 's/TEST_SERVICE_IPV4=<host string>/TEST_SERVICE_IPV4=10.101.1.101/' ../../.env
+        sed -i 's/TEST_SERVICE_PORT=<port number>/TEST_SERVICE_PORT=30951/' ../../.env
+        echo "created .env"
+    else
+        echo "found .env"
+    fi
 }
 
-substitute_repo(){
-    echo "substitute_repo"
+substitute_repos(){
+    echo "substitute_repos"
     docker_repo=$1
 
     # Use our own Capificore and ServiceManager images
-    sed -i "s/image: o-ran-sc.org\/nonrtric\/plt\/capifcore/image: $docker_repo\/capifcore:latest/" ../manifests/capifcore.yaml
-    sed -i 's/imagePullPolicy: IfNotPresent/imagePullPolicy: Always/' ../manifests/capifcore.yaml
-    sed -i "s/image: o-ran-sc.org\/nonrtric\/plt\/servicemanager/image: $docker_repo\/servicemanager:latest/" ../manifests/servicemanager.yaml
-    sed -i 's/imagePullPolicy: IfNotPresent/imagePullPolicy: Always/' ../manifests/servicemanager.yaml
+    sed -i "s*nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-capifcore:CAPIF_VERSION*$docker_repo/capifcore:latest*" ../manifests/capifcore.yaml
+    sed -i "s*nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-servicemanager:SERVICEMANAGER_VERSION*$docker_repo/servicemanager:latest*" ../manifests/servicemanager.yaml
+
+    sed -i 's*imagePullPolicy: IfNotPresent*imagePullPolicy: Always*' ../manifests/capifcore.yaml
+    sed -i 's*imagePullPolicy: IfNotPresent*imagePullPolicy: Always*' ../manifests/servicemanager.yaml
+}
+
+substitute_repo_versions(){
+    echo "substitute_repo_versions"
+    servicemanager_version=$(awk '/tag:/{print $2}' ../../container-tag.yaml)
+    capif_version=$(awk '/tag:/{print $2}' ../../../capifcore/container-tag.yaml)
+    # Set the Capificore and ServiceManager image versions
+    sed -i "s*nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-capifcore:CAPIF_VERSION*nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-capifcore:$capif_version*" ../manifests/capifcore.yaml
+    sed -i "s*nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-servicemanager:SERVICEMANAGER_VERSION*nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-plt-servicemanager:$servicemanager_version*" ../manifests/servicemanager.yaml
 }
 
 add_env(){
     echo "add_env"
-    additional_env=$1
+    # Our additional .env has to exist in the project root folder
+    additional_env="../../$1"
+
     # Add our own .env file
     if [ -f $additional_env ]; then
-        echo "found additional env"
-        kubectl create configmap env-configmap --from-file=.env --from-file=$additional_env -n servicemanager
+        echo "found additional env $1"
+        kubectl create configmap env-configmap --from-file=../../.env --from-file=$additional_env -n servicemanager
 
         # Add additional env file to volume mounting
         env_filename=$(basename "$additional_env")
         echo "env_filename $env_filename"
 
-        mount_path_wc=$(grep "mountPath: /app/$env_filename" ../manifests/servicemanager.yaml | wc -l)
+        mount_path_wc=$(grep "mountPath: /app/servicemanager/$env_filename" ../manifests/servicemanager.yaml | wc -l)
         env_path_count=$((mount_path_wc))
         if [ $env_path_count -eq 0 ]; then
             echo "Adding mount path"
-            sed -i -e '/subPath: .env/a\' -e "        - name: config-volume\n          mountPath: /app/$env_filename\n          subPath: $env_filename" ../manifests/servicemanager.yaml
+            sed -i -e '/subPath: .env/a\' \
+                -e "        - name: config-volume\n          mountPath: /app/servicemanager/$env_filename\n          subPath: $env_filename" ../manifests/servicemanager.yaml
         fi
 
         # Update SERVICE_MANAGER_ENV to point to additional env
         env_extension=$(basename "$additional_env" | awk -F. '{print $NF}')
-        echo "env_extension $env_extension"
-
+        echo "SERVICE_MANAGER_ENV=$env_extension"
         sed -i "/- name: SERVICE_MANAGER_ENV/{n;s/              value: \"\"/              value: \"$env_extension\"/}" ../manifests/servicemanager.yaml
+        return 0  # Return zero for success
+    else
+        echo "additional env $additional_env NOT found"
+        return 1  # Return non-zero for failure
     fi
 }
 
@@ -129,15 +151,21 @@ create_env_from_template
 
 # Check if the development switch is enabled
 if [ "$USE_OWN_REPO" = true ]; then
-    substitute_repo $DOCKER_REPO
+    substitute_repos $DOCKER_REPO
+else
+    substitute_repo_versions
 fi
 
 kubectl create ns servicemanager
 
 if [ "$ADD_ENV" = true ]; then
     add_env $ENV_PATH
+    # Check if the function failed
+    if [ $? -ne 0 ]; then
+        kubectl create configmap env-configmap --from-file=../../.env -n servicemanager
+    fi
 else
-    kubectl create configmap env-configmap --from-file=.env -n servicemanager
+    kubectl create configmap env-configmap --from-file=../../.env -n servicemanager
 fi
 
 # Create the Kubernetes resources