From 033ab424056c2de6bdbc22479e961aeebbaddd37 Mon Sep 17 00:00:00 2001 From: Zhe Huang Date: Mon, 20 May 2019 15:45:42 -0400 Subject: [PATCH] This patch introduces a new structure of the it/dep repo. Components are restructured into a tree. Helm charts are designed with common templates so that parameters can be standardized. This patches introduced installation scripts that take override value.yaml files for all the helm charts. Signed-off-by: Zhe Huang Change-Id: I44f043f8c7a93fa7f50ac31c37f9cb5e0efbfb53 --- .gitmodules | 3 + LICENSES.txt | 32 ---- README.md | 24 --- aux/80-Auxiliary-Functions/bin/install | 59 +++++++ .../80-Auxiliary-Functions/etc/dashboard.conf | 15 +- .../helm/dashboard}/Chart.yaml | 4 +- .../helm/dashboard/charts/common-1.1.0.tgz | Bin 0 -> 2615 bytes .../helm/dashboard}/requirements.yaml | 3 +- .../helm/dashboard}/templates/_helpers.tpl | 0 .../helm/dashboard}/templates/configmap.yaml | 0 .../helm/dashboard}/templates/deployment.yaml | 40 ++--- .../helm/dashboard/templates/service.yaml | 36 +++++ .../helm/dashboard}/values.yaml | 24 +-- aux/portal-ric-dashboard/templates/NOTES.txt | 22 --- aux/portal-ric-dashboard/templates/ingress.yaml | 57 ------- aux/portal-ric-dashboard/templates/service.yaml | 35 ----- .../templates/tests/test-connection.yaml | 35 ----- aux/portal-ric-dashboard/values.yaml | 66 -------- dep | 1 - .../Chart.yaml => infra/00-Kubernetes/bin/install | 10 +- .../00-Kubernetes/bin/install-1node-k8s | 44 ++++++ .../00-Kubernetes/etc/k8s-1node | 28 ++-- infra/10-Nexus/bin/install | 122 +++++++++++++++ infra/10-Nexus/docker/Dockerfile | 45 ++++++ infra/10-Nexus/docker/nexus-repository-helm | 1 + infra/10-Nexus/etc/nexus.conf | 30 ++++ infra/10-Nexus/helm/.helmignore | 21 +++ {ricplt/e2term => infra/10-Nexus/helm}/Chart.yaml | 6 +- infra/10-Nexus/helm/charts/common-1.1.0.tgz | Bin 0 -> 2615 bytes .../10-Nexus/helm}/requirements.yaml | 3 +- infra/10-Nexus/helm/templates/_helpers.tpl | 32 ++++ infra/10-Nexus/helm/templates/deployment.yaml | 48 ++++++ infra/10-Nexus/helm/templates/ingress.yaml | 28 ++++ infra/10-Nexus/helm/templates/save-secret-job.yaml | 27 ++++ infra/10-Nexus/helm/templates/secret-docker.yaml | 15 ++ infra/10-Nexus/helm/templates/service.yaml | 23 +++ infra/10-Nexus/helm/values.yaml | 24 +++ .../20-Credential/bin/install | 40 +++-- ric-platform/20-Credential/etc/credential.conf | 26 ++++ .../20-Credential/helm}/Chart.yaml | 4 +- ric-platform/20-Credential/helm/resources/tls.crt | 19 +++ .../20-Credential/helm}/templates/_helper.tpl | 19 +-- .../helm}/templates/config-helm-cert.yaml | 3 +- .../helm}/templates/secrets-docker-reg.yaml | 0 .../helm}/templates/secrets-helm-xapp.yaml | 0 ric-platform/20-Credential/helm/values.yaml | 31 ++++ .../50-RIC-Platform/bin/install | 65 ++++---- .../50-RIC-Platform/bin/uninstall | 37 ++++- .../50-RIC-Platform/etc/ric.conf | 18 +-- .../50-RIC-Platform/helm/appmgr}/.helmignore | 0 .../50-RIC-Platform/helm}/appmgr/Chart.yaml | 2 +- .../helm/appmgr/charts/common-1.1.0.tgz | Bin 0 -> 2819 bytes .../50-RIC-Platform/helm/appmgr}/requirements.yaml | 3 +- .../helm/appmgr/resources/xapp-manager.yaml | 14 ++ .../helm}/appmgr/templates/_helpers.tpl | 0 .../helm/appmgr/templates/appconfig.yaml | 29 ++++ .../helm}/appmgr/templates/appenv.yaml | 0 .../helm}/appmgr/templates/deployment.yaml | 18 +-- .../helm}/appmgr/templates/service.yaml | 0 .../50-RIC-Platform/helm}/appmgr/values.yaml | 85 ++++++----- .../50-RIC-Platform/helm}/common/Chart.yaml | 2 +- .../helm/common/templates/_helmrepo.tpl | 169 +++++++++++++++++++++ .../helm}/common/templates/_name.tpl | 0 .../helm}/common/templates/_namespace.tpl | 0 .../helm/common/templates/_repository.tpl | 132 ++++++++++++++++ .../helm}/common/templates/_resources.tpl | 0 .../helm}/common/templates/_service.tpl | 0 .../50-RIC-Platform/helm}/common/values.yaml | 0 .../50-RIC-Platform/helm}/dbaas/Chart.yaml | 2 +- .../helm/dbaas/charts/common-1.1.0.tgz | Bin 0 -> 2819 bytes .../50-RIC-Platform/helm/dbaas}/requirements.yaml | 3 +- .../helm}/dbaas/templates/_helper.tpl | 0 .../helm}/dbaas/templates/deployment.yaml | 8 +- .../helm}/dbaas/templates/service.yaml | 0 .../50-RIC-Platform/helm/dbaas}/values.yaml | 36 +++-- .../50-RIC-Platform/helm}/e2mgr/Chart.yaml | 2 +- .../helm/e2mgr/charts/common-1.1.0.tgz | Bin 0 -> 2819 bytes .../50-RIC-Platform/helm/e2mgr/requirements.yaml | 20 +++ .../helm}/e2mgr/templates/_helpers.tpl | 0 .../helm}/e2mgr/templates/configmap.yaml | 0 .../helm}/e2mgr/templates/deployment.yaml | 6 +- .../helm}/e2mgr/templates/service.yaml | 0 .../50-RIC-Platform/helm}/e2mgr/values.yaml | 20 ++- .../50-RIC-Platform/helm/e2term}/.helmignore | 0 .../50-RIC-Platform/helm}/e2term/Chart.yaml | 3 +- .../helm/e2term/charts/common-1.1.0.tgz | Bin 0 -> 2819 bytes .../50-RIC-Platform/helm/e2term/requirements.yaml | 20 +++ .../helm}/e2term/templates/_helpers.tpl | 0 .../helm}/e2term/templates/configmap.yaml | 0 .../helm}/e2term/templates/deployment.yaml | 6 +- .../helm}/e2term/templates/service.yaml | 0 .../50-RIC-Platform/helm}/e2term/values.yaml | 19 ++- .../50-RIC-Platform/helm/ric}/.helmignore | 0 .../50-RIC-Platform/helm}/ric/Chart.yaml | 2 +- .../50-RIC-Platform/helm}/ric/requirements.yaml | 15 +- .../50-RIC-Platform/helm}/ric/values.yaml | 8 - .../50-RIC-Platform/helm/rtmgr}/.helmignore | 0 .../50-RIC-Platform/helm}/rtmgr/Chart.yaml | 2 +- .../helm/rtmgr/charts/common-1.1.0.tgz | Bin 0 -> 2819 bytes .../50-RIC-Platform/helm/rtmgr/requirements.yaml | 20 +++ .../helm}/rtmgr/templates/_helper.tpl | 0 .../helm}/rtmgr/templates/rtmgr-dep.yaml | 8 +- .../helm}/rtmgr/templates/rtmgr-svc.yaml | 0 .../50-RIC-Platform/helm/rtmgr/values.yaml | 49 ++++++ ricplt/README.md | 33 ---- ricplt/appmgr/values.yaml | 17 --- ricplt/common/templates/_repository.tpl | 50 ------ ricplt/dbaas/charts/dbaas/Chart.yaml | 22 --- ricplt/dbaas/values.yaml | 17 --- ricplt/e2mgr/Chart.yaml | 21 --- ricplt/e2mgr/charts/e2mgr/.helmignore | 37 ----- ricplt/e2mgr/values.yaml | 16 -- ricplt/e2term/charts/e2term/.helmignore | 37 ----- ricplt/e2term/values.yaml | 16 -- ricplt/preric/resources/helmrepo.crt | 25 --- ricplt/ric_env.sh | 25 --- ricplt/ric_install.sh | 68 --------- ricplt/ric_uninstall.sh | 52 ------- ricplt/rtmgr/.helmignore | 22 --- ricplt/rtmgr/charts/rtmgr/Chart.yaml | 22 --- ricplt/rtmgr/requirements.yaml | 21 --- ricplt/rtmgr/values.yaml | 16 -- xapp-std/.helmignore | 22 --- .../90-xApps/helm/xapp-admin}/Chart.yaml | 0 .../90-xApps/helm/xapp-admin}/values.yaml | 0 .../90-xApps/helm/xapp-std}/.helmignore | 0 .../90-xApps/helm/xapp-std}/Chart.yaml | 0 .../90-xApps/helm/xapp-std}/templates/_helpers.tpl | 0 .../helm/xapp-std}/templates/appconfig.yaml | 0 .../90-xApps/helm/xapp-std}/templates/appenv.yaml | 0 .../helm/xapp-std}/templates/appsecret.yaml | 0 .../helm/xapp-std}/templates/deployment.yaml | 0 .../90-xApps/helm/xapp-std}/templates/secret.yaml | 0 .../90-xApps/helm/xapp-std}/templates/service.yaml | 0 .../90-xApps/helm/xapp-std}/values.yaml | 0 135 files changed, 1398 insertions(+), 1069 deletions(-) create mode 100644 .gitmodules delete mode 100644 LICENSES.txt delete mode 100644 README.md create mode 100755 aux/80-Auxiliary-Functions/bin/install rename ricplt/appmgr/charts/appmgr/templates/appconfig.yaml => aux/80-Auxiliary-Functions/etc/dashboard.conf (82%) rename aux/{portal-ric-dashboard => 80-Auxiliary-Functions/helm/dashboard}/Chart.yaml (97%) create mode 100644 aux/80-Auxiliary-Functions/helm/dashboard/charts/common-1.1.0.tgz rename {ricplt/appmgr => aux/80-Auxiliary-Functions/helm/dashboard}/requirements.yaml (96%) rename aux/{portal-ric-dashboard => 80-Auxiliary-Functions/helm/dashboard}/templates/_helpers.tpl (100%) rename aux/{portal-ric-dashboard => 80-Auxiliary-Functions/helm/dashboard}/templates/configmap.yaml (100%) rename aux/{portal-ric-dashboard => 80-Auxiliary-Functions/helm/dashboard}/templates/deployment.yaml (66%) create mode 100644 aux/80-Auxiliary-Functions/helm/dashboard/templates/service.yaml rename {ricplt/rtmgr/charts/rtmgr => aux/80-Auxiliary-Functions/helm/dashboard}/values.yaml (82%) delete mode 100644 aux/portal-ric-dashboard/templates/NOTES.txt delete mode 100644 aux/portal-ric-dashboard/templates/ingress.yaml delete mode 100644 aux/portal-ric-dashboard/templates/service.yaml delete mode 100644 aux/portal-ric-dashboard/templates/tests/test-connection.yaml delete mode 100644 aux/portal-ric-dashboard/values.yaml delete mode 160000 dep rename ricplt/appmgr/charts/appmgr/Chart.yaml => infra/00-Kubernetes/bin/install (92%) mode change 100644 => 100755 rename setup-1node-k8s.sh => infra/00-Kubernetes/bin/install-1node-k8s (90%) rename ricplt/dbaas/charts/dbaas/values.yaml => infra/00-Kubernetes/etc/k8s-1node (80%) create mode 100755 infra/10-Nexus/bin/install create mode 100644 infra/10-Nexus/docker/Dockerfile create mode 160000 infra/10-Nexus/docker/nexus-repository-helm create mode 100644 infra/10-Nexus/etc/nexus.conf create mode 100644 infra/10-Nexus/helm/.helmignore rename {ricplt/e2term => infra/10-Nexus/helm}/Chart.yaml (95%) create mode 100644 infra/10-Nexus/helm/charts/common-1.1.0.tgz rename {ricplt/dbaas => infra/10-Nexus/helm}/requirements.yaml (96%) create mode 100644 infra/10-Nexus/helm/templates/_helpers.tpl create mode 100644 infra/10-Nexus/helm/templates/deployment.yaml create mode 100644 infra/10-Nexus/helm/templates/ingress.yaml create mode 100644 infra/10-Nexus/helm/templates/save-secret-job.yaml create mode 100644 infra/10-Nexus/helm/templates/secret-docker.yaml create mode 100644 infra/10-Nexus/helm/templates/service.yaml create mode 100644 infra/10-Nexus/helm/values.yaml rename runric_env.sh => ric-platform/20-Credential/bin/install (69%) create mode 100644 ric-platform/20-Credential/etc/credential.conf rename {ricplt/preric => ric-platform/20-Credential/helm}/Chart.yaml (97%) create mode 100644 ric-platform/20-Credential/helm/resources/tls.crt rename {ricplt/preric => ric-platform/20-Credential/helm}/templates/_helper.tpl (81%) rename {ricplt/preric => ric-platform/20-Credential/helm}/templates/config-helm-cert.yaml (95%) rename {ricplt/preric => ric-platform/20-Credential/helm}/templates/secrets-docker-reg.yaml (100%) rename {ricplt/preric => ric-platform/20-Credential/helm}/templates/secrets-helm-xapp.yaml (100%) create mode 100644 ric-platform/20-Credential/helm/values.yaml rename localize.sh => ric-platform/50-RIC-Platform/bin/install (54%) rename ricplt/prepull.sh => ric-platform/50-RIC-Platform/bin/uninstall (68%) rename ricplt/helm_reset.sh => ric-platform/50-RIC-Platform/etc/ric.conf (82%) mode change 100755 => 100644 rename {aux/portal-ric-dashboard => ric-platform/50-RIC-Platform/helm/appmgr}/.helmignore (100%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/appmgr/Chart.yaml (98%) create mode 100644 ric-platform/50-RIC-Platform/helm/appmgr/charts/common-1.1.0.tgz rename {ricplt/e2mgr => ric-platform/50-RIC-Platform/helm/appmgr}/requirements.yaml (96%) create mode 100644 ric-platform/50-RIC-Platform/helm/appmgr/resources/xapp-manager.yaml rename {ricplt/appmgr/charts => ric-platform/50-RIC-Platform/helm}/appmgr/templates/_helpers.tpl (100%) create mode 100644 ric-platform/50-RIC-Platform/helm/appmgr/templates/appconfig.yaml rename {ricplt/appmgr/charts => ric-platform/50-RIC-Platform/helm}/appmgr/templates/appenv.yaml (100%) rename {ricplt/appmgr/charts => ric-platform/50-RIC-Platform/helm}/appmgr/templates/deployment.yaml (85%) rename {ricplt/appmgr/charts => ric-platform/50-RIC-Platform/helm}/appmgr/templates/service.yaml (100%) rename {ricplt/appmgr/charts => ric-platform/50-RIC-Platform/helm}/appmgr/values.yaml (57%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/common/Chart.yaml (98%) create mode 100644 ric-platform/50-RIC-Platform/helm/common/templates/_helmrepo.tpl rename {ricplt => ric-platform/50-RIC-Platform/helm}/common/templates/_name.tpl (100%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/common/templates/_namespace.tpl (100%) create mode 100644 ric-platform/50-RIC-Platform/helm/common/templates/_repository.tpl rename {ricplt => ric-platform/50-RIC-Platform/helm}/common/templates/_resources.tpl (100%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/common/templates/_service.tpl (100%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/common/values.yaml (100%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/dbaas/Chart.yaml (98%) create mode 100644 ric-platform/50-RIC-Platform/helm/dbaas/charts/common-1.1.0.tgz rename {ricplt/e2term => ric-platform/50-RIC-Platform/helm/dbaas}/requirements.yaml (96%) rename {ricplt/dbaas/charts => ric-platform/50-RIC-Platform/helm}/dbaas/templates/_helper.tpl (100%) rename {ricplt/dbaas/charts => ric-platform/50-RIC-Platform/helm}/dbaas/templates/deployment.yaml (87%) rename {ricplt/dbaas/charts => ric-platform/50-RIC-Platform/helm}/dbaas/templates/service.yaml (100%) rename {ricplt/preric => ric-platform/50-RIC-Platform/helm/dbaas}/values.yaml (69%) rename {ricplt/e2mgr/charts => ric-platform/50-RIC-Platform/helm}/e2mgr/Chart.yaml (98%) create mode 100644 ric-platform/50-RIC-Platform/helm/e2mgr/charts/common-1.1.0.tgz create mode 100644 ric-platform/50-RIC-Platform/helm/e2mgr/requirements.yaml rename {ricplt/e2mgr/charts => ric-platform/50-RIC-Platform/helm}/e2mgr/templates/_helpers.tpl (100%) rename {ricplt/e2mgr/charts => ric-platform/50-RIC-Platform/helm}/e2mgr/templates/configmap.yaml (100%) rename {ricplt/e2mgr/charts => ric-platform/50-RIC-Platform/helm}/e2mgr/templates/deployment.yaml (92%) rename {ricplt/e2mgr/charts => ric-platform/50-RIC-Platform/helm}/e2mgr/templates/service.yaml (100%) rename {ricplt/e2mgr/charts => ric-platform/50-RIC-Platform/helm}/e2mgr/values.yaml (81%) rename {ricplt/appmgr => ric-platform/50-RIC-Platform/helm/e2term}/.helmignore (100%) rename {ricplt/e2term/charts => ric-platform/50-RIC-Platform/helm}/e2term/Chart.yaml (97%) create mode 100644 ric-platform/50-RIC-Platform/helm/e2term/charts/common-1.1.0.tgz create mode 100644 ric-platform/50-RIC-Platform/helm/e2term/requirements.yaml rename {ricplt/e2term/charts => ric-platform/50-RIC-Platform/helm}/e2term/templates/_helpers.tpl (100%) rename {ricplt/e2term/charts => ric-platform/50-RIC-Platform/helm}/e2term/templates/configmap.yaml (100%) rename {ricplt/e2term/charts => ric-platform/50-RIC-Platform/helm}/e2term/templates/deployment.yaml (92%) rename {ricplt/e2term/charts => ric-platform/50-RIC-Platform/helm}/e2term/templates/service.yaml (100%) rename {ricplt/e2term/charts => ric-platform/50-RIC-Platform/helm}/e2term/values.yaml (81%) rename {ricplt/e2term => ric-platform/50-RIC-Platform/helm/ric}/.helmignore (100%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/ric/Chart.yaml (98%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/ric/requirements.yaml (87%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/ric/values.yaml (92%) rename {ricplt/preric => ric-platform/50-RIC-Platform/helm/rtmgr}/.helmignore (100%) rename {ricplt => ric-platform/50-RIC-Platform/helm}/rtmgr/Chart.yaml (98%) create mode 100644 ric-platform/50-RIC-Platform/helm/rtmgr/charts/common-1.1.0.tgz create mode 100644 ric-platform/50-RIC-Platform/helm/rtmgr/requirements.yaml rename {ricplt/rtmgr/charts => ric-platform/50-RIC-Platform/helm}/rtmgr/templates/_helper.tpl (100%) rename {ricplt/rtmgr/charts => ric-platform/50-RIC-Platform/helm}/rtmgr/templates/rtmgr-dep.yaml (89%) rename {ricplt/rtmgr/charts => ric-platform/50-RIC-Platform/helm}/rtmgr/templates/rtmgr-svc.yaml (100%) create mode 100644 ric-platform/50-RIC-Platform/helm/rtmgr/values.yaml delete mode 100644 ricplt/README.md delete mode 100644 ricplt/appmgr/values.yaml delete mode 100644 ricplt/common/templates/_repository.tpl delete mode 100644 ricplt/dbaas/charts/dbaas/Chart.yaml delete mode 100644 ricplt/dbaas/values.yaml delete mode 100644 ricplt/e2mgr/Chart.yaml delete mode 100644 ricplt/e2mgr/charts/e2mgr/.helmignore delete mode 100644 ricplt/e2mgr/values.yaml delete mode 100644 ricplt/e2term/charts/e2term/.helmignore delete mode 100644 ricplt/e2term/values.yaml delete mode 100644 ricplt/preric/resources/helmrepo.crt delete mode 100644 ricplt/ric_env.sh delete mode 100755 ricplt/ric_install.sh delete mode 100755 ricplt/ric_uninstall.sh delete mode 100644 ricplt/rtmgr/.helmignore delete mode 100644 ricplt/rtmgr/charts/rtmgr/Chart.yaml delete mode 100644 ricplt/rtmgr/requirements.yaml delete mode 100644 ricplt/rtmgr/values.yaml delete mode 100644 xapp-std/.helmignore rename {xapp-admin => xapps/90-xApps/helm/xapp-admin}/Chart.yaml (100%) rename {xapp-admin => xapps/90-xApps/helm/xapp-admin}/values.yaml (100%) rename {ricplt/ric => xapps/90-xApps/helm/xapp-std}/.helmignore (100%) rename {xapp-std => xapps/90-xApps/helm/xapp-std}/Chart.yaml (100%) rename {xapp-std => xapps/90-xApps/helm/xapp-std}/templates/_helpers.tpl (100%) rename {xapp-std => xapps/90-xApps/helm/xapp-std}/templates/appconfig.yaml (100%) rename {xapp-std => xapps/90-xApps/helm/xapp-std}/templates/appenv.yaml (100%) rename {xapp-std => xapps/90-xApps/helm/xapp-std}/templates/appsecret.yaml (100%) rename {xapp-std => xapps/90-xApps/helm/xapp-std}/templates/deployment.yaml (100%) rename {xapp-std => xapps/90-xApps/helm/xapp-std}/templates/secret.yaml (100%) rename {xapp-std => xapps/90-xApps/helm/xapp-std}/templates/service.yaml (100%) rename {xapp-std => xapps/90-xApps/helm/xapp-std}/values.yaml (100%) diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..43126d91 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "infra/10-Nexus/docker/nexus-repository-helm"] + path = infra/10-Nexus/docker/nexus-repository-helm + url = https://github.com/sonatype-nexus-community/nexus-repository-helm.git diff --git a/LICENSES.txt b/LICENSES.txt deleted file mode 100644 index 2a3dd5c9..00000000 --- a/LICENSES.txt +++ /dev/null @@ -1,32 +0,0 @@ -LICENSES.txt - - -Unless otherwise specified, all software contained herein is licensed -under the Apache License, Version 2.0 (the "Software License"); -you may not use this software except in compliance with the Software -License. You may obtain a copy of the Software License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the Software License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the Software License for the specific language governing permissions -and limitations under the Software License. - - - -Unless otherwise specified, all documentation contained herein is licensed -under the Creative Commons License, Attribution 4.0 Intl. (the -"Documentation License"); you may not use this documentation except in -compliance with the Documentation License. You may obtain a copy of the -Documentation License at - -https://creativecommons.org/licenses/by/4.0/ - -Unless required by applicable law or agreed to in writing, documentation -distributed under the Documentation License is distributed on an "AS IS" -BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -implied. See the Documentation License for the specific language governing -permissions and limitations under the Documentation License. - diff --git a/README.md b/README.md deleted file mode 100644 index 13eeaaa0..00000000 --- a/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# RIC Integration - -This repo contains RAN Intelligent Controller (RIC) deployments related files. - - -### Directory Structure -- kubernetes: scripts for kubernetes related tasks -- LICENSES.txt: -- localize.sh: a script for inserting localized infrastructure parameters (docker registry host, port, etc) into helm charts and scripts in this repo -- ricplt: RIC Platform Helm charts and related scripts -- runric_env.sh: the env variables for local infrastructure -- xapps: xapps Helm charts and chart templates - -### To Generate Localized Charts and Scripts - -First we will need to edit the ./runric_env.sh and fill values with local infrastructure parameters. - -```sh -$ then run: -$ ./localize.sh -$ cd generated -``` - -Now the localized scripts and charts are ready to use. diff --git a/aux/80-Auxiliary-Functions/bin/install b/aux/80-Auxiliary-Functions/bin/install new file mode 100755 index 00000000..8e8170d7 --- /dev/null +++ b/aux/80-Auxiliary-Functions/bin/install @@ -0,0 +1,59 @@ +#!/bin/bash +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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 + + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" + + +source $DIR/../etc/dashboard.conf + +if [ -z "$RICAUX_RELEASE_NAME" ];then + RELEASE_NAME=$helm_release_name +else + RELEASE_NAME=$RICAUX_RELEASE_NAME +fi +if [ -z "$RICAUX_NAMESPACE" ];then + NAMESPACE=$namespace +else + NAMESPACE=$RICAUX_NAMESPACE +fi + +RICAUX_COMPONENTS="dashboard" + +echo "Deploying RIC AUX components [$RICAUX_COMPONENTS]" +echo "Platform Namespace: $NAMESPACE" +echo "Helm Release Name: $RELEASE_NAME" + + +COMMON_CHART_VERSION=$(cat $DIR/../../50-RIC-Platform/charts/common/Chart.yaml | grep version | awk '{print $2}') + +helm package -d /tmp $DIR/../../50-RIC-Platform/charts/common + + +for component in $RICAUX_COMPONENTS; do + echo "Preparing chart for comonent $component" + cp /tmp/common-$COMMON_CHART_VERSION.tgz $DIR/../charts/$component/charts/ + if [ -z $OVERRIDEYAML ]; then + helm install --namespace "${NAMESPACE}" --name "${RELEASE_NAME}-$component" $DIR/../charts/$component + else + helm install -f $OVERRIDEYAML --namespace "${NAMESPACE}" --name "${RELEASE_NAME}-$component" $DIR/../charts/$component + fi +done diff --git a/ricplt/appmgr/charts/appmgr/templates/appconfig.yaml b/aux/80-Auxiliary-Functions/etc/dashboard.conf similarity index 82% rename from ricplt/appmgr/charts/appmgr/templates/appconfig.yaml rename to aux/80-Auxiliary-Functions/etc/dashboard.conf index 6cc1fda9..0ee625be 100644 --- a/ricplt/appmgr/charts/appmgr/templates/appconfig.yaml +++ b/aux/80-Auxiliary-Functions/etc/dashboard.conf @@ -15,12 +15,11 @@ # limitations under the License. # ################################################################################ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "appmgr.fullname" . }}-appconfig -data: - {{- with .Values.appconfig }} - {{- toYaml . | nindent 2 }} - {{- end }} +# helm_release_name defines the release name helm will use to deploy RIC +# It will be overrided by RICAUX_RELEASE_NAME +helm_release_name=r0 + +# namespace defines the namespace that helm will use to deploy RIC +# It will be overrided by RICAUX_NAMESPACE +namespace=ricaux diff --git a/aux/portal-ric-dashboard/Chart.yaml b/aux/80-Auxiliary-Functions/helm/dashboard/Chart.yaml similarity index 97% rename from aux/portal-ric-dashboard/Chart.yaml rename to aux/80-Auxiliary-Functions/helm/dashboard/Chart.yaml index 17a28b14..f142b0ac 100644 --- a/aux/portal-ric-dashboard/Chart.yaml +++ b/aux/80-Auxiliary-Functions/helm/dashboard/Chart.yaml @@ -18,5 +18,5 @@ apiVersion: v1 appVersion: "1.0" description: Helm chart for the RIC Dashboard web app -name: ric-dashboard -version: 1.0.0 +name: dashboard +version: 1.1.0 diff --git a/aux/80-Auxiliary-Functions/helm/dashboard/charts/common-1.1.0.tgz b/aux/80-Auxiliary-Functions/helm/dashboard/charts/common-1.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ccccfe6340f1a83c9e8bd74fa745a0e71a9c24e0 GIT binary patch literal 2615 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 Z*QPeLsZG12{{{d6|Nn$78oK~w0056t80Y{1 literal 0 HcmV?d00001 diff --git a/ricplt/appmgr/requirements.yaml b/aux/80-Auxiliary-Functions/helm/dashboard/requirements.yaml similarity index 96% rename from ricplt/appmgr/requirements.yaml rename to aux/80-Auxiliary-Functions/helm/dashboard/requirements.yaml index f18ffcaa..aa94575b 100644 --- a/ricplt/appmgr/requirements.yaml +++ b/aux/80-Auxiliary-Functions/helm/dashboard/requirements.yaml @@ -17,5 +17,4 @@ dependencies: - name: common - version: ~1.0.0 - repository: '@local' + version: ~1.1.0 diff --git a/aux/portal-ric-dashboard/templates/_helpers.tpl b/aux/80-Auxiliary-Functions/helm/dashboard/templates/_helpers.tpl similarity index 100% rename from aux/portal-ric-dashboard/templates/_helpers.tpl rename to aux/80-Auxiliary-Functions/helm/dashboard/templates/_helpers.tpl diff --git a/aux/portal-ric-dashboard/templates/configmap.yaml b/aux/80-Auxiliary-Functions/helm/dashboard/templates/configmap.yaml similarity index 100% rename from aux/portal-ric-dashboard/templates/configmap.yaml rename to aux/80-Auxiliary-Functions/helm/dashboard/templates/configmap.yaml diff --git a/aux/portal-ric-dashboard/templates/deployment.yaml b/aux/80-Auxiliary-Functions/helm/dashboard/templates/deployment.yaml similarity index 66% rename from aux/portal-ric-dashboard/templates/deployment.yaml rename to aux/80-Auxiliary-Functions/helm/dashboard/templates/deployment.yaml index dbd0191c..efabecb9 100644 --- a/aux/portal-ric-dashboard/templates/deployment.yaml +++ b/aux/80-Auxiliary-Functions/helm/dashboard/templates/deployment.yaml @@ -19,27 +19,31 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "dashboard.fullname" . }} + namespace: {{ include "common.namespace" . }} labels: - app.kubernetes.io/name: {{ include "dashboard.name" . }} - helm.sh/chart: {{ include "dashboard.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} + app: {{ include "common.namespace" . }}-{{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: - app.kubernetes.io/name: {{ include "dashboard.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} + app: {{ include "common.namespace" . }}-{{ include "common.name" . }} + release: {{ .Release.Name }} template: metadata: labels: - app.kubernetes.io/name: {{ include "dashboard.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} + app: {{ include "common.namespace" . }}-{{ include "common.name" . }} + release: {{ .Release.Name }} spec: + hostname: {{ .Chart.Name }} + imagePullSecrets: + - name: {{ include "common.repositoryCred" . }} containers: - - name: {{ .Chart.Name }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} + - name: {{ include "common.namespace" . }}-{{ include "common.name" . }} + image: {{ include "common.repository" . }}/{{ .Values.image.name }}:{{ .Values.image.tag }} + imagePullPolicy: {{ include "common.pullPolicy" . }} ports: - name: http containerPort: 8080 @@ -58,17 +62,3 @@ spec: httpGet: path: / port: http - resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/aux/80-Auxiliary-Functions/helm/dashboard/templates/service.yaml b/aux/80-Auxiliary-Functions/helm/dashboard/templates/service.yaml new file mode 100644 index 00000000..8ed2a966 --- /dev/null +++ b/aux/80-Auxiliary-Functions/helm/dashboard/templates/service.yaml @@ -0,0 +1,36 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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: Service +metadata: + name: {{ include "dashboard.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.namespace" . }}-{{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + selector: + app: {{ include "common.namespace" . }}-{{ include "common.name" . }} + release: {{ .Release.Name }} diff --git a/ricplt/rtmgr/charts/rtmgr/values.yaml b/aux/80-Auxiliary-Functions/helm/dashboard/values.yaml similarity index 82% rename from ricplt/rtmgr/charts/rtmgr/values.yaml rename to aux/80-Auxiliary-Functions/helm/dashboard/values.yaml index 8ce64ea7..13bc5cfc 100644 --- a/ricplt/rtmgr/charts/rtmgr/values.yaml +++ b/aux/80-Auxiliary-Functions/helm/dashboard/values.yaml @@ -15,22 +15,22 @@ # limitations under the License. # ################################################################################ -# Default values for rtmgr. +# Default values for dashboard. # This is a YAML-formatted file. # Declare variables to be passed into your templates. +replicaCount: 1 +repository: "nexus3.o-ran-sc.org:10004" +imagePullPolicy: IfNotPresent +repositoryCred: docker-reg-cred + + image: - repository: "${__RUNRICENV_DOCKER_HOST__}:${__RUNRICENV_DOCKER_PORT__}" - repositoryCred: docker-reg-cred - name: rtmgr - tag: 0.0.2 - pullPolicy: IfNotPresent + repository: ric-dash-be + tag: 1.0.0-SNAPSHOT + service: - type: ClusterIP - nano: - port: 5656 - target_port: 4560 - protocol: "TCP" - name: "nano-port" + type: NodePort + port: 80 diff --git a/aux/portal-ric-dashboard/templates/NOTES.txt b/aux/portal-ric-dashboard/templates/NOTES.txt deleted file mode 100644 index 4f651a7a..00000000 --- a/aux/portal-ric-dashboard/templates/NOTES.txt +++ /dev/null @@ -1,22 +0,0 @@ -# O-RAN SC Apache 2.0 -1. Get the application URL by running these commands: -{{- if .Values.ingress.enabled }} -{{- range $host := .Values.ingress.hosts }} - {{- range $.Values.ingress.paths }} - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host }}{{ . }} - {{- end }} -{{- end }} -{{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "dashboard.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" .Values.service.type }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get svc -w {{ include "dashboard.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "dashboard.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') - echo http://$SERVICE_IP:{{ .Values.service.port }} -{{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "dashboard.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - echo "Visit http://127.0.0.1:8080 to use your application" - kubectl port-forward $POD_NAME 8080:80 -{{- end }} diff --git a/aux/portal-ric-dashboard/templates/ingress.yaml b/aux/portal-ric-dashboard/templates/ingress.yaml deleted file mode 100644 index bbdbe5bb..00000000 --- a/aux/portal-ric-dashboard/templates/ingress.yaml +++ /dev/null @@ -1,57 +0,0 @@ -################################################################################ -# Copyright (c) 2019 AT&T Intellectual Property. # -# Copyright (c) 2019 Nokia. # -# # -# 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. # -################################################################################ - -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "dashboard.fullname" . -}} -{{- $ingressPaths := .Values.ingress.paths -}} -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - app.kubernetes.io/name: {{ include "dashboard.name" . }} - helm.sh/chart: {{ include "dashboard.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - {{- with .Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: -{{- if .Values.ingress.tls }} - tls: - {{- range .Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} -{{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ . | quote }} - http: - paths: - {{- range $ingressPaths }} - - path: {{ . }} - backend: - serviceName: {{ $fullName }} - servicePort: http - {{- end }} - {{- end }} -{{- end }} diff --git a/aux/portal-ric-dashboard/templates/service.yaml b/aux/portal-ric-dashboard/templates/service.yaml deleted file mode 100644 index 6623a7a9..00000000 --- a/aux/portal-ric-dashboard/templates/service.yaml +++ /dev/null @@ -1,35 +0,0 @@ -################################################################################ -# Copyright (c) 2019 AT&T Intellectual Property. # -# Copyright (c) 2019 Nokia. # -# # -# 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: Service -metadata: - name: {{ include "dashboard.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "dashboard.name" . }} - helm.sh/chart: {{ include "dashboard.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - selector: - app.kubernetes.io/name: {{ include "dashboard.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/aux/portal-ric-dashboard/templates/tests/test-connection.yaml b/aux/portal-ric-dashboard/templates/tests/test-connection.yaml deleted file mode 100644 index 80491fd9..00000000 --- a/aux/portal-ric-dashboard/templates/tests/test-connection.yaml +++ /dev/null @@ -1,35 +0,0 @@ -################################################################################ -# Copyright (c) 2019 AT&T Intellectual Property. # -# Copyright (c) 2019 Nokia. # -# # -# 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: Pod -metadata: - name: "{{ include "dashboard.fullname" . }}-test-connection" - labels: - app.kubernetes.io/name: {{ include "dashboard.name" . }} - helm.sh/chart: {{ include "dashboard.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - annotations: - "helm.sh/hook": test-success -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ include "dashboard.fullname" . }}:{{ .Values.service.port }}'] - restartPolicy: Never diff --git a/aux/portal-ric-dashboard/values.yaml b/aux/portal-ric-dashboard/values.yaml deleted file mode 100644 index a1b74c2f..00000000 --- a/aux/portal-ric-dashboard/values.yaml +++ /dev/null @@ -1,66 +0,0 @@ -################################################################################ -# Copyright (c) 2019 AT&T Intellectual Property. # -# Copyright (c) 2019 Nokia. # -# # -# 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. # -################################################################################ - -# Default values for dashboard. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: nexus3.o-ran-sc.org:10004/ric-dash-be - tag: 1.0.1 - pullPolicy: IfNotPresent - -nameOverride: "" -fullnameOverride: "" - -service: - type: NodePort - port: 80 - -ingress: - enabled: false - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - paths: [] - hosts: - - chart-example.local - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - diff --git a/dep b/dep deleted file mode 160000 index 1a8a09de..00000000 --- a/dep +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1a8a09deaeded3c6a50fa7c13594e46301375874 diff --git a/ricplt/appmgr/charts/appmgr/Chart.yaml b/infra/00-Kubernetes/bin/install old mode 100644 new mode 100755 similarity index 92% rename from ricplt/appmgr/charts/appmgr/Chart.yaml rename to infra/00-Kubernetes/bin/install index f3e28a14..d351e927 --- a/ricplt/appmgr/charts/appmgr/Chart.yaml +++ b/infra/00-Kubernetes/bin/install @@ -1,3 +1,5 @@ +#!/bin/bash + ################################################################################ # Copyright (c) 2019 AT&T Intellectual Property. # # Copyright (c) 2019 Nokia. # @@ -15,8 +17,6 @@ # limitations under the License. # ################################################################################ -apiVersion: v1 -appVersion: "1.0" -description: Helm Chart for xAppManager -name: appmgr -version: 0.0.1 +# This is a temporary script that today deploy one node K8S cluster + +./install-1node-k8s diff --git a/setup-1node-k8s.sh b/infra/00-Kubernetes/bin/install-1node-k8s similarity index 90% rename from setup-1node-k8s.sh rename to infra/00-Kubernetes/bin/install-1node-k8s index aa5a8c64..8733c144 100755 --- a/setup-1node-k8s.sh +++ b/infra/00-Kubernetes/bin/install-1node-k8s @@ -34,6 +34,50 @@ set -x +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +source $DIR/../etc/k8s-1node + + +if [ -z "$__RUNRICENV_GERRIT_HOST__" ]; then + export __RUNRICENV_GERRIT_HOST__=$gerrithost +fi +if [ -z "$__RUNRICENV_GERRIT_IP__" ]; then + export __RUNRICENV_GERRIT_IP__=$gerritip +fi +if [ -z "$__RUNRICENV_DOCKER_HOST__" ]; then + export __RUNRICENV_DOCKER_HOST__=$dockerregistry +fi +if [ -z "$__RUNRICENV_DOCKER_IP__" ]; then + export __RUNRICENV_DOCKER_IP__=$dockerip +fi +if [ -z "$__RUNRICENV_DOCKER_PORT__" ]; then + export __RUNRICENV_DOCKER_PORT__=$dockerport +fi +if [ -z "$__RUNRICENV_DOCKER_USER__" ]; then + export __RUNRICENV_DOCKER_USER__=$dockeruser +fi +if [ -z "$__RUNRICENV_DOCKER_PASS__" ]; then + export __RUNRICENV_DOCKER_PASS__=$dockerpassword +fi +if [ -z "$__RUNRICENV_HELMREPO_HOST__" ]; then + export __RUNRICENV_HELMREPO_HOST__=$helmrepo +fi +if [ -z "$__RUNRICENV_HELMREPO_PORT__" ]; then + export __RUNRICENV_HELMREPO_PORT__=$helmport +fi +if [ -z "$__RUNRICENV_HELMREPO_IP__" ]; then + export __RUNRICENV_HELMREPO_IP__=$helmip +fi +if [ -z "$__RUNRICENV_HELMREPO_USER__" ]; then + export __RUNRICENV_HELMREPO_USER__=$helmuser +fi +if [ -z "$__RUNRICENV_HELMREPO_PASS__" ]; then + export __RUNRICENV_HELMREPO_PASS__=$helmpassword +fi + + + + # for RIC R0 we keep 1.13 export KUBEV="1.13.3" export KUBECNIV="0.6.0" diff --git a/ricplt/dbaas/charts/dbaas/values.yaml b/infra/00-Kubernetes/etc/k8s-1node similarity index 80% rename from ricplt/dbaas/charts/dbaas/values.yaml rename to infra/00-Kubernetes/etc/k8s-1node index b322d49a..716cb5bf 100644 --- a/ricplt/dbaas/charts/dbaas/values.yaml +++ b/infra/00-Kubernetes/etc/k8s-1node @@ -15,18 +15,20 @@ # limitations under the License. # ################################################################################ -image: - repository: "${__RUNRICENV_DOCKER_HOST__}:${__RUNRICENV_DOCKER_PORT__}" - repositoryCred: docker-reg-cred +# customize the following repo info to local infrastructure +gerrithost=gerrit.o-ran-sc.org +gerritip=35.165.179.212 + +dockerregistry=nexus3.o-ran-sc.org +dockerip=38.108.68.158 +dockerport=10004 +dockeruser=docker +dockerpassword=docker + +helmrepo=helm.ricinfra.local +helmport=30000 +helmip='' +helmuser=helm +helmpassword=helm -backend: - terminationGracePeriodSeconds: 0 - replicas: 1 - name: "redis-standalone" - port: 6379 - targetPort: 6379 - image: - name: redis-standalone - tag: latest - imagePullPolicy: IfNotPresent diff --git a/infra/10-Nexus/bin/install b/infra/10-Nexus/bin/install new file mode 100755 index 00000000..18102f80 --- /dev/null +++ b/infra/10-Nexus/bin/install @@ -0,0 +1,122 @@ +#!/bin/bash +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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 + + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +source $DIR/../etc/nexus.conf + +if [ -z "$RICINFRA_RELEASE_NAME" ];then + RELEASE_NAME=$helm_release_name +else + RELEASE_NAME=$RICINFRA_RELEASE_NAME +fi +if [ -z "$RICINFRA_NAMESPACE" ];then + NAMESPACE=$namespace +else + NAMESPACE=$RICINFRA_NAMESPACE +fi +if [ -z "$INGRESS_PORT" ];then + INGRESS_PORT_NEXUS=$ingress_port +else + INGRESS_PORT_NEXUS=$INGRESS_PORT +fi + + + +echo "Deploying nexus repo managers for local docker registry and helm repo." +echo "Name Space: $NAMESPACE" +echo "Helm Release: $RELEASE_NAME" + +HOSTPOSTFIX=$(cat $DIR/../charts/values.yaml | grep hostpostfix | awk '{print $2}') + + +echo "****************************************************************************************************************" +echo " WARNING " +echo "****************************************************************************************************************" + +echo "Nexus is deployed using default admin password. It is not for production deployment." +echo "If you want to secure the repositories, you should change the admin password immediately." +echo "You can access this nexus here: http://nexus.$HOSTPOSTFIX:$INGRESS_PORT_NEXUS" +echo "If nexus.$HOSTPOSTFIX is not resolved by your DNS server, please add an entry in your /etc/hosts file." +echo "****************************************************************************************************************" + +COMMON_CHART_VERSION=$(cat $DIR/../../50-RIC-Platform/charts/common/Chart.yaml | grep version | awk '{print $2}') +helm package -d /tmp $DIR/../../50-RIC-Platform/charts/common + +cp /tmp/common-$COMMON_CHART_VERSION.tgz $DIR/../charts/charts/ + +if [ -z $OVERRIDEYAML ]; then +helm install --namespace "${NAMESPACE}" --name "${RELEASE_NAME}-nexus" $DIR/../charts +else +helm install -f $OVERRIDEYAML --namespace "${NAMESPACE}" --name "${RELEASE_NAME}-nexus" $DIR/../charts +fi + +NEXUS_POD_NAME=$(kubectl get pod -n $NAMESPACE | grep nexus | grep ContainerCreating | awk '{print $1}') + + + +echo "Waiting Nexus to be ready." +echo " " + +sleep 10 + +IS_NEXUS_READY=$(kubectl logs -n $NAMESPACE $NEXUS_POD_NAME | grep "Started Sonatype Nexus OSS") + +COUNTER=1 +while [[ -z $IS_NEXUS_READY ]]; do + echo -e "\033[2AWaiting Nexus to be ready." + echo -e "\033[2K" + PROGRESS=$(printf "%0.s-" $(seq 1 $COUNTER)) + echo -e "\033[1A$PROGRESS" + + + COUNTER=$((COUNTER+1)) + if [ $COUNTER -gt 5 ]; then + COUNTER=1 + fi + + IS_NEXUS_READY=$(kubectl logs -n $NAMESPACE $NEXUS_POD_NAME | grep "Started Sonatype Nexus OSS") + + sleep 5 +done + +echo $IS_NEXUS_READY + + +DOCKERPORT=$(cat $DIR/../charts/templates/deployment.yaml | awk '/.*- name: docker.*/{getline; print $2}') + + +DOCKERREPOSCRIPT="{\"name\":\"create_docker_repo\",\ + \"type\":\"groovy\",\ + \"content\":\"repository.createDockerHosted('docker.snapshot',\ + $DOCKERPORT, null, 'default', false, true)\"}" + +echo $DOCKERREPOSCRIPT + +# This line uses the default admin password +curl -u admin:admin123 -X POST -H "Content-Type: application/json" --data "$DOCKERREPOSCRIPT" http://nexus.$HOSTPOSTFIX:$INGRESS_PORT_NEXUS/service/rest/v1/script + +curl -u admin:admin123 -X POST -H 'Content-Type: text/plain' -H 'Accept: application/json' http://nexus.$HOSTPOSTFIX:$INGRESS_PORT_NEXUS/service/rest/v1/script/create_docker_repo/run + + + + + + diff --git a/infra/10-Nexus/docker/Dockerfile b/infra/10-Nexus/docker/Dockerfile new file mode 100644 index 00000000..f61b21c0 --- /dev/null +++ b/infra/10-Nexus/docker/Dockerfile @@ -0,0 +1,45 @@ +ARG NEXUS_VERSION=3.15.2 +ARG NEXUS_BUILD=01 + +FROM maven:3-jdk-8-alpine AS aptbuild +#ARG NEXUS_VERSION=3.14.0 +#ARG NEXUS_BUILD=04 + +COPY ./nexus-repository-apt /nexus-repository-apt/ +#RUN cd /nexus-repository-apt/; sed -i "s/3.15.2-01/${NEXUS_VERSION}-${NEXUS_BUILD}/g" pom.xml; \ +# mvn; +RUN cd /nexus-repository-apt/; mvn; + + +FROM maven:3-jdk-8-alpine AS helmbuild +ARG NEXUS_VERSION=3.15.2 +ARG NEXUS_BUILD=01 + +COPY ./nexus-repository-helm /nexus-repository-helm/ +RUN cd /nexus-repository-helm/; sed -i "s/3.14.0-04/${NEXUS_VERSION}-${NEXUS_BUILD}/g" pom.xml; \ + mvn clean package; + + + + +FROM sonatype/nexus3:$NEXUS_VERSION +ARG NEXUS_VERSION=3.15.2 +ARG NEXUS_BUILD=01 +# Will not seem to work in sed without some magick +ARG APT_VERSION=1.0.10 +ARG COMP_VERSION=1.18 +#ARG COMP_VERSION=1.16.1 +ARG XZ_VERSION=1.8 +ARG APT_TARGET=/opt/sonatype/nexus/system/net/staticsnow/nexus-repository-apt/${APT_VERSION}/ +ARG HELM_VERSION=0.0.7 +ARG TARGET_DIR=/opt/sonatype/nexus/system/org/sonatype/nexus/plugins/nexus-repository-helm/${HELM_VERSION}/ +USER root +RUN mkdir -p ${APT_TARGET}; \ + sed -i "s@nexus-repository-maven@nexus-repository-maven\n nexus-repository-apt@g" /opt/sonatype/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/${NEXUS_VERSION}-${NEXUS_BUILD}/nexus-core-feature-${NEXUS_VERSION}-${NEXUS_BUILD}-features.xml; \ + sed -i "s@\n
net.staticsnow:nexus-repository-apt
\n mvn:net.staticsnow/nexus-repository-apt/${APT_VERSION}\n mvn:org.apache.commons/commons-compress/${COMP_VERSION}\n mvn:org.tukaani/xz/${XZ_VERSION}\n
\n @nexus-repository-maven\n nexus-repository-helm@g' /opt/sonatype/nexus/system/org/sonatype/nexus/assemblies/nexus-core-feature/${NEXUS_VERSION}-${NEXUS_BUILD}/nexus-core-feature-${NEXUS_VERSION}-${NEXUS_BUILD}-features.xml; \ + sed -i 's@\n
org.sonatype.nexus.plugins:nexus-repository-helm
\n mvn:org.sonatype.nexus.plugins/nexus-repository-helm/0.0.7\n mvn:org.apache.commons/commons-compress/1.18\n
\n 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 Z*QPeLsZG12{{{d6|Nn$78oK~w0056t80Y{1 literal 0 HcmV?d00001 diff --git a/ricplt/dbaas/requirements.yaml b/infra/10-Nexus/helm/requirements.yaml similarity index 96% rename from ricplt/dbaas/requirements.yaml rename to infra/10-Nexus/helm/requirements.yaml index f18ffcaa..aa94575b 100644 --- a/ricplt/dbaas/requirements.yaml +++ b/infra/10-Nexus/helm/requirements.yaml @@ -17,5 +17,4 @@ dependencies: - name: common - version: ~1.0.0 - repository: '@local' + version: ~1.1.0 diff --git a/infra/10-Nexus/helm/templates/_helpers.tpl b/infra/10-Nexus/helm/templates/_helpers.tpl new file mode 100644 index 00000000..9f9800c6 --- /dev/null +++ b/infra/10-Nexus/helm/templates/_helpers.tpl @@ -0,0 +1,32 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "nexus.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "nexus.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "nexus.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/infra/10-Nexus/helm/templates/deployment.yaml b/infra/10-Nexus/helm/templates/deployment.yaml new file mode 100644 index 00000000..d3184c0f --- /dev/null +++ b/infra/10-Nexus/helm/templates/deployment.yaml @@ -0,0 +1,48 @@ +apiVersion: apps/v1beta2 +kind: Deployment +metadata: + name: {{ template "nexus.fullname" . }} + labels: + app: {{ template "nexus.name" . }} + chart: {{ template "nexus.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ template "nexus.name" . }} + release: {{ .Release.Name }} + template: + metadata: + labels: + app: {{ template "nexus.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + # volumeMounts: + #- name: certs + # mountPath: /var/run/certs + # readOnly: true + ports: + - name: nexus + containerPort: 8081 + protocol: TCP + - name: docker + containerPort: 10001 + protocol: TCP + # livenessProbe: + # httpGet: + # path: / + # port: nexus +# readinessProbe: +# httpGet: +# path: / +# port: http +# volumes: +# - name: certs +# secret: +# secretName: {{ template "nexus.name" . }}-certs diff --git a/infra/10-Nexus/helm/templates/ingress.yaml b/infra/10-Nexus/helm/templates/ingress.yaml new file mode 100644 index 00000000..1a7522a8 --- /dev/null +++ b/infra/10-Nexus/helm/templates/ingress.yaml @@ -0,0 +1,28 @@ +{{- $fullName := include "nexus.fullname" . -}} +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + app: {{ template "nexus.name" . }} + chart: {{ template "nexus.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + tls: + - hosts: + - docker.{{ .Values.ingress.hostpostfix }} + secretName: {{ include "common.repositorycert" . }} + rules: + - host: nexus.{{ .Values.ingress.hostpostfix }} + http: + paths: + - backend: + serviceName: {{ $fullName }} + servicePort: nexus + - host: docker.{{ .Values.ingress.hostpostfix }} + http: + paths: + - backend: + serviceName: {{ $fullName }} + servicePort: docker diff --git a/infra/10-Nexus/helm/templates/save-secret-job.yaml b/infra/10-Nexus/helm/templates/save-secret-job.yaml new file mode 100644 index 00000000..801df246 --- /dev/null +++ b/infra/10-Nexus/helm/templates/save-secret-job.yaml @@ -0,0 +1,27 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: cert-copy +spec: + template: + spec: + containers: + - name: cert-copy + image: alpine + command: ["cp", "-rL", "/var/run/certs/..data/tls.crt", "/var/run/certs-copy/"] + # command: ["tail", "-f", "/dev/null"] + volumeMounts: + - name: certs + mountPath: /var/run/certs + readOnly: true + - name: write-to-volume + mountPath: /var/run/certs-copy + volumes: + - name: certs + secret: + secretName: {{ include "common.repositorycert" . }} + - name: write-to-volume + hostPath: + path: /tmp + restartPolicy: Never + backoffLimit: 4 diff --git a/infra/10-Nexus/helm/templates/secret-docker.yaml b/infra/10-Nexus/helm/templates/secret-docker.yaml new file mode 100644 index 00000000..7365f7e2 --- /dev/null +++ b/infra/10-Nexus/helm/templates/secret-docker.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Secret +type: kubernetes.io/tls +metadata: + name: {{ include "common.repositorycert" . }} + labels: + app: {{ template "nexus.name" . }} + chart: {{ template "nexus.chart" . }} + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + annotations: + "helm.sh/hook": "pre-install" + "helm.sh/hook-delete-policy": "before-hook-creation" +data: +{{ ( include "common.repository.gen-certs" . ) | indent 2 }} diff --git a/infra/10-Nexus/helm/templates/service.yaml b/infra/10-Nexus/helm/templates/service.yaml new file mode 100644 index 00000000..cc9b5185 --- /dev/null +++ b/infra/10-Nexus/helm/templates/service.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "nexus.fullname" . }} + labels: + app: {{ template "nexus.name" . }} + chart: {{ template "nexus.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: ClusterIP + ports: + - port: {{ .Values.service.port.nexus }} + targetPort: nexus + protocol: TCP + name: nexus + - port: {{ .Values.service.port.docker }} + targetPort: docker + protocol: TCP + name: docker + selector: + app: {{ template "nexus.name" . }} + release: {{ .Release.Name }} diff --git a/infra/10-Nexus/helm/values.yaml b/infra/10-Nexus/helm/values.yaml new file mode 100644 index 00000000..d7324f56 --- /dev/null +++ b/infra/10-Nexus/helm/values.yaml @@ -0,0 +1,24 @@ +# Default values for nexus. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +# This is the name of K8S secret that contains the docker registry cert +# You can override this by using +# repositoryCertOverride: "" +repositoryCert: docker-reg-certs + +# This is designed to be deployed using local image +image: + repository: nexus-repository-helm-apt + tag: 1.0.0 + pullPolicy: Never + +service: + port: + nexus: 80 + docker: 10001 +ingress: + hostpostfix: ricinfra.local + diff --git a/runric_env.sh b/ric-platform/20-Credential/bin/install similarity index 69% rename from runric_env.sh rename to ric-platform/20-Credential/bin/install index 4dca1944..c3f75065 100755 --- a/runric_env.sh +++ b/ric-platform/20-Credential/bin/install @@ -17,20 +17,28 @@ ################################################################################ -# customize the following repo info to local infrastructure -export __RICENV_SET__='' -export __RUNRICENV_GERRIT_HOST__='' -export __RUNRICENV_GERRIT_IP__='' - -export __RUNRICENV_DOCKER_HOST__='' -export __RUNRICENV_DOCKER_IP__='' -export __RUNRICENV_DOCKER_PORT__='' -export __RUNRICENV_DOCKER_USER__='' -export __RUNRICENV_DOCKER_PASS__='' - -export __RUNRICENV_HELMREPO_HOST__='' -export __RUNRICENV_HELMREPO_PORT__='' -export __RUNRICENV_HELMREPO_IP__='' -export __RUNRICENV_HELMREPO_USER__='' -export __RUNRICENV_HELMREPO_PASS__='' +OVERRIDEYAML=$1 + + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" + + +source $DIR/../etc/credential.conf + +if [ -z "$RICPLT_RELEASE_NAME" ];then + RELEASE_NAME=$helm_release_name +else + RELEASE_NAME=$RICPLT_RELEASE_NAME +fi +if [ -z "$RICPLT_NAMESPACE" ];then + NAMESPACE=$namespace +else + NAMESPACE=$RICPLT_NAMESPACE +fi + +if [ -z $OVERRIDEYAML ]; then + helm install --namespace "${NAMESPACE}" --name "${RELEASE_NAME}-credential" $DIR/../charts +else + helm install -f $OVERRIDEYAML --namespace "${NAMESPACE}" --name "${RELEASE_NAME}-credential" $DIR/../charts +fi diff --git a/ric-platform/20-Credential/etc/credential.conf b/ric-platform/20-Credential/etc/credential.conf new file mode 100644 index 00000000..fc9b7372 --- /dev/null +++ b/ric-platform/20-Credential/etc/credential.conf @@ -0,0 +1,26 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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. # +################################################################################ + + +# helm_release_name defines the release name helm will use to deploy the credential +# It will be overrided by RICPLT_RELEASE_NAME +helm_release_name=r0 + +# namespace defines the namespace that helm will use to deploy the credential +# It will be overrided by RICPLT_NAMESPACE +namespace=ricplt + diff --git a/ricplt/preric/Chart.yaml b/ric-platform/20-Credential/helm/Chart.yaml similarity index 97% rename from ricplt/preric/Chart.yaml rename to ric-platform/20-Credential/helm/Chart.yaml index 82c59cc3..69bdcc4c 100644 --- a/ricplt/preric/Chart.yaml +++ b/ric-platform/20-Credential/helm/Chart.yaml @@ -18,5 +18,5 @@ apiVersion: v1 appVersion: "1.0" description: A Helm chart for setting up k8s resources for accessing external and infrastructure resources before RIC deployment" -name: preric -version: 0.1.0 +name: credential +version: 1.1.0 diff --git a/ric-platform/20-Credential/helm/resources/tls.crt b/ric-platform/20-Credential/helm/resources/tls.crt new file mode 100644 index 00000000..3060f345 --- /dev/null +++ b/ric-platform/20-Credential/helm/resources/tls.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDCTCCAfGgAwIBAgIBATANBgkqhkiG9w0BAQsFADAdMRswGQYDVQQDExJkb2Nr +ZXItcmVnaXN0cnktY2EwHhcNMTkwNTE1MTQ1NzQzWhcNMjAwNTE0MTQ1NzQzWjAQ +MQ4wDAYDVQQDEwVuZXh1czCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKNNbC8/cil64YXmPYpN7mRaT5biVsZrOrFkXfX2AXcJAsLUL7E4t7keK4Ba/VwO +pJKmgdjI4NxlTxe+zoOJVVz3+sMYz77UZTd1h/KDn1eBfozbqHcQ5lQksNDsL46d +yG/JfYpEEzRha/QxEEdaaQLWMyOcf/SjWnscqMQ2cGvTaEiO8F1re2qrwfnrbqQm +JYkIrmBbcGKMdg33edZpl3xbFc9eMfJGWuhaoC+Tk7Hj1EtV/O9KdPrvDYzO+h7P +HVExKXU04h1f9ThAoeU9/o7EN266iuUiCVE6M0zekYSV4BuAkXqbUtmpbnYziAYo +Cq2puiNUSirqXc6Bno12QykCAwEAAaNhMF8wDgYDVR0PAQH/BAQDAgWgMB0GA1Ud +JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCAGA1UdEQQZ +MBeCFWRvY2tlci5yaWNpbmZyYS5sb2NhbDANBgkqhkiG9w0BAQsFAAOCAQEAg5aE +yicj1VnG4G3JeCszj2hFFmg2eTnwkPsIlpeIMJY8zI/IZ2aQP5e0KPAM8IaKMnqq +RPPusL2DF7Dl4A+ZBTkvfKtxIzwc7wnQGCfonMyM/MxyoBxXIJw+Qek42CpVbYYt +qVZ3fz6VpCvF/QL6eGmVpMlvLIu15C9pxzEHPcUKpkM1mvKLRcxn2tt5daqjh9ao +EvZHJt8kOh53c/FZHgA2+73I8Gx6BLUZPO0E+E1vC5K1FwtCl+Cmt6nX5jZEw1LK +eNcb3oZhXrVnUoQ72HTJEWuPjydB7w1hxnzB5RYGZalM7XwDmOHwdGHlNxpmMbJa +UZ4yL0N+nAUbLeUS2w== +-----END CERTIFICATE----- diff --git a/ricplt/preric/templates/_helper.tpl b/ric-platform/20-Credential/helm/templates/_helper.tpl similarity index 81% rename from ricplt/preric/templates/_helper.tpl rename to ric-platform/20-Credential/helm/templates/_helper.tpl index cba7024f..d009278a 100644 --- a/ricplt/preric/templates/_helper.tpl +++ b/ric-platform/20-Credential/helm/templates/_helper.tpl @@ -49,11 +49,7 @@ Create chart name and version as used by the chart label. {{- end -}} {{- define "repository" -}} - {{if .Values.repositoryOverride }} - {{- printf "%s" .Values.repositoryOverride -}} - {{else}} - {{- default .Values.repository .Values.global.repository -}} - {{end}} + {{- default "docker.ricinfra.local:80" .Values.repository -}} {{- end -}} {{/* @@ -66,21 +62,22 @@ Create chart name and version as used by the chart label. */}} {{- define "repository.secret" -}} {{- $repo := include "repository" . }} - {{- $repo := default "${__RUNRICENV_DOCKER_HOST__}:${__RUNRICENV_DOCKER_PORT__}" $repo }} - {{- $cred := .Values.global.repositoryCred }} + {{- $cred := .Values.repositoryCred }} + {{- $user := default "docker" $cred.user }} + {{- $password := default "docker" $cred.password }} {{- $mail := default "@" $cred.mail }} - {{- $auth := printf "%s:%s" $cred.user $cred.password | b64enc }} - {{- printf "{\"%s\":{\"username\":\"%s\",\"password\":\"%s\",\"email\":\"%s\",\"auth\":\"%s\"}}" $repo $cred.user $cred.password $mail $auth | b64enc -}} + {{- $auth := printf "%s:%s" $user $password | b64enc }} + {{- printf "{\"%s\":{\"username\":\"%s\",\"password\":\"%s\",\"email\":\"%s\",\"auth\":\"%s\"}}" $repo $user $password $mail $auth | b64enc -}} {{- end -}} {{- define "helmrepo.secret.user" -}} - {{- $user := default "${__RUNRICENV_HELMREPO_USER__}" .Values.global.helmrepoCred.user -}} + {{- $user := default "helm" .Values.helmrepoCred.user -}} {{- printf "%s" $user |b64enc }} {{- end -}} {{- define "helmrepo.secret.password" -}} - {{- $pass := default "${__RUNRICENV_HELMREPO_PASS__}" .Values.global.helmrepoCred.password -}} + {{- $pass := default "helm" .Values.helmrepoCred.password -}} {{- printf "%s" $pass |b64enc }} {{- end -}} diff --git a/ricplt/preric/templates/config-helm-cert.yaml b/ric-platform/20-Credential/helm/templates/config-helm-cert.yaml similarity index 95% rename from ricplt/preric/templates/config-helm-cert.yaml rename to ric-platform/20-Credential/helm/templates/config-helm-cert.yaml index e293cd6a..7140d6bf 100644 --- a/ricplt/preric/templates/config-helm-cert.yaml +++ b/ric-platform/20-Credential/helm/templates/config-helm-cert.yaml @@ -20,4 +20,5 @@ kind: ConfigMap metadata: name: xapp-mgr-certs data: - {{ (.Files.Glob "resources/helmrepo.crt").AsConfig | nindent 2 }} + {{ (.Files.Glob "resources/tls.crt").AsConfig | nindent 2 }} + diff --git a/ricplt/preric/templates/secrets-docker-reg.yaml b/ric-platform/20-Credential/helm/templates/secrets-docker-reg.yaml similarity index 100% rename from ricplt/preric/templates/secrets-docker-reg.yaml rename to ric-platform/20-Credential/helm/templates/secrets-docker-reg.yaml diff --git a/ricplt/preric/templates/secrets-helm-xapp.yaml b/ric-platform/20-Credential/helm/templates/secrets-helm-xapp.yaml similarity index 100% rename from ricplt/preric/templates/secrets-helm-xapp.yaml rename to ric-platform/20-Credential/helm/templates/secrets-helm-xapp.yaml diff --git a/ric-platform/20-Credential/helm/values.yaml b/ric-platform/20-Credential/helm/values.yaml new file mode 100644 index 00000000..16b9b57b --- /dev/null +++ b/ric-platform/20-Credential/helm/values.yaml @@ -0,0 +1,31 @@ +################################################################################ +# Copyright (c) 2019 AT&T Intellectual Property. # +# Copyright (c) 2019 Nokia. # +# # +# 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. # +################################################################################ + +# Values for setting up Kubernetes resources for accessing infrastructure such as docker registry +# helm repo, etc. + + +repository: "nexus3.o-ran-sc.org:10004" +repositoryCred: + user: "docker" + password: "docker" + + +helmrepo: "https://helm.ricinfra.local" +helmrepoCred: + user: "helm" + password: "helm" diff --git a/localize.sh b/ric-platform/50-RIC-Platform/bin/install similarity index 54% rename from localize.sh rename to ric-platform/50-RIC-Platform/bin/install index 41b783a1..87040d79 100755 --- a/localize.sh +++ b/ric-platform/50-RIC-Platform/bin/install @@ -16,36 +16,45 @@ # limitations under the License. # ################################################################################ -source ./runric_env.sh -if [ -z $__RICENV_SET__ ]; then - echo "Edit your ric_env.sh for local infrastyructure values first" - exit + +OVERRIDEYAML=$1 + + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" + + +source $DIR/../etc/ric.conf + +if [ -z "$RICPLT_RELEASE_NAME" ];then + RELEASE_NAME=$helm_release_name +else + RELEASE_NAME=$RICPLT_RELEASE_NAME +fi +if [ -z "$RICPLT_NAMESPACE" ];then + NAMESPACE=$namespace +else + NAMESPACE=$RICPLT_NAMESPACE fi -echo "Copy files to generated fir" -DIRS='kubernetes ricplt xapps' -rm -rf ./generated -mkdir -p generated -for d in $DIRS; do - cp -rf $d ./generated/ -done -echo "env substitude vars in .yaml and .sh files" -FILELIST=$(find . \( -name "*.sh" -o -name "*.yaml" \)) -for f in $FILELIST; do - echo "$f to ./generated/$f": - envsubst '${__RUNRICENV_GERRIT_HOST__} -${__RUNRICENV_GERRIT_IP__} -${__RUNRICENV_DOCKER_HOST__} -${__RUNRICENV_DOCKER_IP__} -${__RUNRICENV_DOCKER_PORT__} -${__RUNRICENV_DOCKER_USER__} -${__RUNRICENV_DOCKER_PASS__} -${__RUNRICENV_HELMREPO_HOST__} -${__RUNRICENV_HELMREPO_PORT__} -${__RUNRICENV_HELMREPO_IP__} -${__RUNRICENV_HELMREPO_USER__} -${__RUNRICENV_HELMREPO_PASS__} '< $f > "./generated/$f"; -done +RICPLT_COMPONENTS="appmgr rtmgr dbaas e2mgr e2term" + +echo "Deploying RIC Platform components [$RICPLT_COMPONENTS]" +echo "Platform Namespace: $NAMESPACE" +echo "Helm Release Name: $RELEASE_NAME" + +COMMON_CHART_VERSION=$(cat $DIR/../charts/common/Chart.yaml | grep version | awk '{print $2}') +helm package -d /tmp $DIR/../charts/common + + +for component in $RICPLT_COMPONENTS; do + echo "Preparing chart for comonent $component" + cp /tmp/common-$COMMON_CHART_VERSION.tgz $DIR/../charts/$component/charts/ + if [ -z $OVERRIDEYAML ]; then + helm install --namespace "${NAMESPACE}" --name "${RELEASE_NAME}-$component" $DIR/../charts/$component + else + helm install -f $OVERRIDEYAML --namespace "${NAMESPACE}" --name "${RELEASE_NAME}-$component" $DIR/../charts/$component + fi +done diff --git a/ricplt/prepull.sh b/ric-platform/50-RIC-Platform/bin/uninstall similarity index 68% rename from ricplt/prepull.sh rename to ric-platform/50-RIC-Platform/bin/uninstall index 0f3c7d0b..b5937b1d 100755 --- a/ricplt/prepull.sh +++ b/ric-platform/50-RIC-Platform/bin/uninstall @@ -16,14 +16,35 @@ # limitations under the License. # ################################################################################ -# usage: echo "{{YOUR_DOCKER_PASSWORD}}" | sh ./prepull.sh -DOCKER_REGISTRY="${__RUNRICENV_DOCKER_HOST__}:${__RUNRICENV_DOCKER_PORT__}" -IMAGE_LIST="xapp-manager:latest rtmgr:0.0.2 redis-standalone:latest e2mgr:1.0.0 e2:1.0.0" -docker login -u ${__RUNRICENV_DOCKER_USER__} --password-stdin ${DOCKER_REGISTRY} -for IMAGE in ${IMAGE_LIST}; do - docker pull ${DOCKER_REGISTRY}/${IMAGE} -done -docker logout ${DOCKER_REGISTRY} +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" + + +source $DIR/../etc/ric.conf + +if [ -z "$RICPLT_RELEASE_NAME" ];then + RELEASE_NAME=$helm_release_name +else + RELEASE_NAME=$RICPLT_RELEASE_NAME +fi +if [ -z "$RICPLT_NAMESPACE" ];then + NAMESPACE=$namespace +else + NAMESPACE=$RICPLT_NAMESPACE +fi + + +RICPLT_COMPONENTS="appmgr rtmgr dbaas e2mgr e2term" + +echo "Undeploying RIC Platform components [$RICPLT_COMPONENTS]" +echo "Platform Namespace: $NAMESPACE" +echo "Helm Release Name: $RELEASE_NAME" + + + + +for component in $RICPLT_COMPONENTS; do + helm delete --purge "${RELEASE_NAME}-$component" +done diff --git a/ricplt/helm_reset.sh b/ric-platform/50-RIC-Platform/etc/ric.conf old mode 100755 new mode 100644 similarity index 82% rename from ricplt/helm_reset.sh rename to ric-platform/50-RIC-Platform/etc/ric.conf index c604c07f..29339d8b --- a/ricplt/helm_reset.sh +++ b/ric-platform/50-RIC-Platform/etc/ric.conf @@ -1,5 +1,3 @@ -#!/bin/bash - ################################################################################ # Copyright (c) 2019 AT&T Intellectual Property. # # Copyright (c) 2019 Nokia. # @@ -18,12 +16,12 @@ ################################################################################ -SERVEPID=$(ps aux |grep "helm[ +]serve" | sed 's/\s\s*/ /g' | cut -f2 -d ' ') -if [ ! -z $SERVEPID ]; then - echo "Stopping running helm serve process $SERVEPID" - kill -9 $SERVEPID -fi +# helm_release_name defines the release name helm will use to deploy RIC +# It will be overrided by RICPLT_RELEASE_NAME +helm_release_name=r0 + +# namespace defines the namespace that helm will use to deploy RIC +# It will be overrided by RICPLT_NAMESPACE +namespace=ricplt + -rm -rf ~/.helm -find . -name "common-*" | xargs rm -helm init --client-only diff --git a/aux/portal-ric-dashboard/.helmignore b/ric-platform/50-RIC-Platform/helm/appmgr/.helmignore similarity index 100% rename from aux/portal-ric-dashboard/.helmignore rename to ric-platform/50-RIC-Platform/helm/appmgr/.helmignore diff --git a/ricplt/appmgr/Chart.yaml b/ric-platform/50-RIC-Platform/helm/appmgr/Chart.yaml similarity index 98% rename from ricplt/appmgr/Chart.yaml rename to ric-platform/50-RIC-Platform/helm/appmgr/Chart.yaml index f3e28a14..11c2f520 100644 --- a/ricplt/appmgr/Chart.yaml +++ b/ric-platform/50-RIC-Platform/helm/appmgr/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v1 appVersion: "1.0" description: Helm Chart for xAppManager name: appmgr -version: 0.0.1 +version: 1.1.0 diff --git a/ric-platform/50-RIC-Platform/helm/appmgr/charts/common-1.1.0.tgz b/ric-platform/50-RIC-Platform/helm/appmgr/charts/common-1.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..994e516fbf9b9d86e0b0d3032750ea5b4cd5efd0 GIT binary patch literal 2819 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 Vb*V}EZvX%Q|Nor%weDc zVQyr3R8em|NM&qo0PI{{Z`(N5?(OSeagfftn+zJoPU3Xdi@C_A-PxeCX;Eip(5nS4 z9os}HN<&gfjkN!LK~j<>*|H^BcDjIg;}7vXJUrw>9)29Tf$s}F1cau&pAFWOK2 ze!u^EI5eOAe!uwHA6&jpznlLD=NFf+U%(zzSxu2tM7-$tcf~1I?tdhakp7NB(twZP zVbJqXx`Kwv{Jt@L0~GopBMK!<0|At~EYkUbatPEM1-QEN$Q~y?j=*-P-a`U9a0X7l z_uSR&Qb~&W|3FxTa!&)m7XF{Vz8n_$e>J%1_vgOo!2>>@ixDa$US8(i}zKSdQ(_E==bawXm_~;O0KPM2gGiKG3 zXTRRwyuBO0J=HdR1`U7X45b8te@0ZG2a^SmFl5vv6NbRZBLo7-Odxuo0^LN9f-1^q zuRsP<^+*Kf0X-^}pp!`DdQQ?BROT`S90-S_>oMGpkKiBIuiflD|{5GbFcpvrWp-b)~ifs7{B zt#Vq>Xv6p)&;O~9clMt-GGAaAI4W$(7uY=i4~CbQ7lrwMI5_Wj^Zy~z&Yi2+*Sh(? zoBtcy5W4xloBwMzO54L%@9F96#~#2(lmUCNRp-RVgeZ2t1U*TDo+Tw!fmk>_fcrVx zx!st^`Q5Ilb;gfrKHZ{`v>hk*2VV66BHOLv*3f1Y)I;#mofA%_pNKiV9>8geJu_}b zu?QF~5fY!HpsvwSdl`BF2{>{U`y+aw(Rp*laPQ#ga$u67$}o?w^`*K~>0UYr27#7ONpMWAtjIw3#c>vY=Ew zVy+e54>jY4XiUx(`5oxF9;*$47LfN#Q5h2VAUwTG3Og8KmnBwb?$Rb(Ih?}pMCMF^ zb!eSR)!_H4!cB-?hO$q_FI#d)>aPRZc?>88ZErAGEnnA2{Cv=z{~jW>et^=Q|90oU4Q&YB`EPgrTeDHx9=;L> z{_U4gYo0y+CHA7bQ|dtKj9F(faYh{*U7;5hsc)k5rjFiMP$J?kTwR#2)E`IFDg6RR zr$?n5_BR5FLLg}=(}=MJ{238Orxd-UW172X>E@s=hUmUTlrBwINWuhNqK6n6_z3T! z2?~x1rLFjsBJ(8Zo@-jp_G~j69Zwd`M$r1k!v-KA>F3EbxY4TeSkZ+L!j)%kyiNUaZ`o&VSQ ze+_L2o&VSQe>EGW?cuBJ{-50qR)J~nh4~V@gJugh@m-c#rExQQpc`@J5@8}pWfB4q zZ)SSPflh&=i&7G?fMc9F#^z~2z)24vlG@A~Y8o&WJnCO&7kHH4q2=;}K<({hw@a5g zhUVc$e|F{2BlXg} zb^c#N8$##*b^c$?MrnKasu=%4eO==!0U%<(!5?CC;73uPR7^ZWzYcXUUBgP_jB6p zCE*-#IJ8f~{RDQ1{Ref3?ExLJB?Qj&z+D>9A({kpY{1@5vYYZijuK_6lWmUy9HMdX zMyX^@wg0PDyS8c9BvK8+X(L+Rg%M*A28_BJrX!Q}L&VqzlW{LJDVDL0 zCmCgP5Cz$a%*djZQ6Wr0OK4D5^fn%BmTQX$MWfbWLb+(INoWg9GfI?!?r`67Wthyw zDrKW2Hclb?3PP$7fK(y&NHmE%su^-rDcq<;ks4FS{=$qz;}D}#$%al_d!a=om{r-* zOBnMDauk{nnVuliwOxTh6}pHsLw>5UqNKx3-SWKc+K|o-x<4eS4vYaK!OT zB;y+!4x9j|ETgc-(j{s<#iZj3HG-!ni|ZJyuQ0i~MD9YIE9ym*czL1z)%S zD}zY5C=Yf1KO9^Qiu=D8-TVIzlUmGprS{ojT*gl_-0+yAZEC~Xg4Ju_8T*#b`H zNn4>a-6v2gm@@JZi1IateZH5qMGU=eO%Xpz-}__V*qp_%IVvtCVz}i?eKcOW-}!0_7fZ1%vbM4$$|V zR@Z-VTyl#cfZOhWUktB`@qe!`hu!+`5UF(ss$2hc>%WFJgl_%Ut^aB^O54NNru#qf zjqkt8X0w(VpIi~1X@oY+BD-+h7XKJav>D)+h**rZb?pNDy40mE Vb*V}EZvX%Q|Nor%weDc zVQyr3R8em|NM&qo0PI{{Z`(N5?(OSeagfftn+zJoPU3Xdi@C_A-PxeCX;Eip(5nS4 z9os}HN<&gfjkN!LK~j<>*|H^BcDjIg;}7vXJUrw>9)29Tf$s}F1cau&pAFWOK2 ze!u^EI5eOAe!uwHA6&jpznlLD=NFf+U%(zzSxu2tM7-$tcf~1I?tdhakp7NB(twZP zVbJqXx`Kwv{Jt@L0~GopBMK!<0|At~EYkUbatPEM1-QEN$Q~y?j=*-P-a`U9a0X7l z_uSR&Qb~&W|3FxTa!&)m7XF{Vz8n_$e>J%1_vgOo!2>>@ixDa$US8(i}zKSdQ(_E==bawXm_~;O0KPM2gGiKG3 zXTRRwyuBO0J=HdR1`U7X45b8te@0ZG2a^SmFl5vv6NbRZBLo7-Odxuo0^LN9f-1^q zuRsP<^+*Kf0X-^}pp!`DdQQ?BROT`S90-S_>oMGpkKiBIuiflD|{5GbFcpvrWp-b)~ifs7{B zt#Vq>Xv6p)&;O~9clMt-GGAaAI4W$(7uY=i4~CbQ7lrwMI5_Wj^Zy~z&Yi2+*Sh(? zoBtcy5W4xloBwMzO54L%@9F96#~#2(lmUCNRp-RVgeZ2t1U*TDo+Tw!fmk>_fcrVx zx!st^`Q5Ilb;gfrKHZ{`v>hk*2VV66BHOLv*3f1Y)I;#mofA%_pNKiV9>8geJu_}b zu?QF~5fY!HpsvwSdl`BF2{>{U`y+aw(Rp*laPQ#ga$u67$}o?w^`*K~>0UYr27#7ONpMWAtjIw3#c>vY=Ew zVy+e54>jY4XiUx(`5oxF9;*$47LfN#Q5h2VAUwTG3Og8KmnBwb?$Rb(Ih?}pMCMF^ zb!eSR)!_H4!cB-?hO$q_FI#d)>aPRZc?>88ZErAGEnnA2{Cv=z{~jW>et^=Q|90oU4Q&YB`EPgrTeDHx9=;L> z{_U4gYo0y+CHA7bQ|dtKj9F(faYh{*U7;5hsc)k5rjFiMP$J?kTwR#2)E`IFDg6RR zr$?n5_BR5FLLg}=(}=MJ{238Orxd-UW172X>E@s=hUmUTlrBwINWuhNqK6n6_z3T! z2?~x1rLFjsBJ(8Zo@-jp_G~j69Zwd`M$r1k!v-KA>F3EbxY4TeSkZ+L!j)%kyiNUaZ`o&VSQ ze+_L2o&VSQe>EGW?cuBJ{-50qR)J~nh4~V@gJugh@m-c#rExQQpc`@J5@8}pWfB4q zZ)SSPflh&=i&7G?fMc9F#^z~2z)24vlG@A~Y8o&WJnCO&7kHH4q2=;}K<({hw@a5g zhUVc$e|F{2BlXg} zb^c#N8$##*b^c$?MrnKasu=%4eO==!0U%<(!5?CC;73uPR7^ZWzYcXUUBgP_jB6p zCE*-#IJ8f~{RDQ1{Ref3?ExLJB?Qj&z+D>9A({kpY{1@5vYYZijuK_6lWmUy9HMdX zMyX^@wg0PDyS8c9BvK8+X(L+Rg%M*A28_BJrX!Q}L&VqzlW{LJDVDL0 zCmCgP5Cz$a%*djZQ6Wr0OK4D5^fn%BmTQX$MWfbWLb+(INoWg9GfI?!?r`67Wthyw zDrKW2Hclb?3PP$7fK(y&NHmE%su^-rDcq<;ks4FS{=$qz;}D}#$%al_d!a=om{r-* zOBnMDauk{nnVuliwOxTh6}pHsLw>5UqNKx3-SWKc+K|o-x<4eS4vYaK!OT zB;y+!4x9j|ETgc-(j{s<#iZj3HG-!ni|ZJyuQ0i~MD9YIE9ym*czL1z)%S zD}zY5C=Yf1KO9^Qiu=D8-TVIzlUmGprS{ojT*gl_-0+yAZEC~Xg4Ju_8T*#b`H zNn4>a-6v2gm@@JZi1IateZH5qMGU=eO%Xpz-}__V*qp_%IVvtCVz}i?eKcOW-}!0_7fZ1%vbM4$$|V zR@Z-VTyl#cfZOhWUktB`@qe!`hu!+`5UF(ss$2hc>%WFJgl_%Ut^aB^O54NNru#qf zjqkt8X0w(VpIi~1X@oY+BD-+h7XKJav>D)+h**rZb?pNDy40mE Vb*V}EZvX%Q|Nor%weDc zVQyr3R8em|NM&qo0PI{{Z`(N5?(OSeagfftn+zJoPU3Xdi@C_A-PxeCX;Eip(5nS4 z9os}HN<&gfjkN!LK~j<>*|H^BcDjIg;}7vXJUrw>9)29Tf$s}F1cau&pAFWOK2 ze!u^EI5eOAe!uwHA6&jpznlLD=NFf+U%(zzSxu2tM7-$tcf~1I?tdhakp7NB(twZP zVbJqXx`Kwv{Jt@L0~GopBMK!<0|At~EYkUbatPEM1-QEN$Q~y?j=*-P-a`U9a0X7l z_uSR&Qb~&W|3FxTa!&)m7XF{Vz8n_$e>J%1_vgOo!2>>@ixDa$US8(i}zKSdQ(_E==bawXm_~;O0KPM2gGiKG3 zXTRRwyuBO0J=HdR1`U7X45b8te@0ZG2a^SmFl5vv6NbRZBLo7-Odxuo0^LN9f-1^q zuRsP<^+*Kf0X-^}pp!`DdQQ?BROT`S90-S_>oMGpkKiBIuiflD|{5GbFcpvrWp-b)~ifs7{B zt#Vq>Xv6p)&;O~9clMt-GGAaAI4W$(7uY=i4~CbQ7lrwMI5_Wj^Zy~z&Yi2+*Sh(? zoBtcy5W4xloBwMzO54L%@9F96#~#2(lmUCNRp-RVgeZ2t1U*TDo+Tw!fmk>_fcrVx zx!st^`Q5Ilb;gfrKHZ{`v>hk*2VV66BHOLv*3f1Y)I;#mofA%_pNKiV9>8geJu_}b zu?QF~5fY!HpsvwSdl`BF2{>{U`y+aw(Rp*laPQ#ga$u67$}o?w^`*K~>0UYr27#7ONpMWAtjIw3#c>vY=Ew zVy+e54>jY4XiUx(`5oxF9;*$47LfN#Q5h2VAUwTG3Og8KmnBwb?$Rb(Ih?}pMCMF^ zb!eSR)!_H4!cB-?hO$q_FI#d)>aPRZc?>88ZErAGEnnA2{Cv=z{~jW>et^=Q|90oU4Q&YB`EPgrTeDHx9=;L> z{_U4gYo0y+CHA7bQ|dtKj9F(faYh{*U7;5hsc)k5rjFiMP$J?kTwR#2)E`IFDg6RR zr$?n5_BR5FLLg}=(}=MJ{238Orxd-UW172X>E@s=hUmUTlrBwINWuhNqK6n6_z3T! z2?~x1rLFjsBJ(8Zo@-jp_G~j69Zwd`M$r1k!v-KA>F3EbxY4TeSkZ+L!j)%kyiNUaZ`o&VSQ ze+_L2o&VSQe>EGW?cuBJ{-50qR)J~nh4~V@gJugh@m-c#rExQQpc`@J5@8}pWfB4q zZ)SSPflh&=i&7G?fMc9F#^z~2z)24vlG@A~Y8o&WJnCO&7kHH4q2=;}K<({hw@a5g zhUVc$e|F{2BlXg} zb^c#N8$##*b^c$?MrnKasu=%4eO==!0U%<(!5?CC;73uPR7^ZWzYcXUUBgP_jB6p zCE*-#IJ8f~{RDQ1{Ref3?ExLJB?Qj&z+D>9A({kpY{1@5vYYZijuK_6lWmUy9HMdX zMyX^@wg0PDyS8c9BvK8+X(L+Rg%M*A28_BJrX!Q}L&VqzlW{LJDVDL0 zCmCgP5Cz$a%*djZQ6Wr0OK4D5^fn%BmTQX$MWfbWLb+(INoWg9GfI?!?r`67Wthyw zDrKW2Hclb?3PP$7fK(y&NHmE%su^-rDcq<;ks4FS{=$qz;}D}#$%al_d!a=om{r-* zOBnMDauk{nnVuliwOxTh6}pHsLw>5UqNKx3-SWKc+K|o-x<4eS4vYaK!OT zB;y+!4x9j|ETgc-(j{s<#iZj3HG-!ni|ZJyuQ0i~MD9YIE9ym*czL1z)%S zD}zY5C=Yf1KO9^Qiu=D8-TVIzlUmGprS{ojT*gl_-0+yAZEC~Xg4Ju_8T*#b`H zNn4>a-6v2gm@@JZi1IateZH5qMGU=eO%Xpz-}__V*qp_%IVvtCVz}i?eKcOW-}!0_7fZ1%vbM4$$|V zR@Z-VTyl#cfZOhWUktB`@qe!`hu!+`5UF(ss$2hc>%WFJgl_%Ut^aB^O54NNru#qf zjqkt8X0w(VpIi~1X@oY+BD-+h7XKJav>D)+h**rZb?pNDy40mE Vb*V}EZvX%Q|Nor%weDc zVQyr3R8em|NM&qo0PI{{Z`(N5?(OSeagfftn+zJoPU3Xdi@C_A-PxeCX;Eip(5nS4 z9os}HN<&gfjkN!LK~j<>*|H^BcDjIg;}7vXJUrw>9)29Tf$s}F1cau&pAFWOK2 ze!u^EI5eOAe!uwHA6&jpznlLD=NFf+U%(zzSxu2tM7-$tcf~1I?tdhakp7NB(twZP zVbJqXx`Kwv{Jt@L0~GopBMK!<0|At~EYkUbatPEM1-QEN$Q~y?j=*-P-a`U9a0X7l z_uSR&Qb~&W|3FxTa!&)m7XF{Vz8n_$e>J%1_vgOo!2>>@ixDa$US8(i}zKSdQ(_E==bawXm_~;O0KPM2gGiKG3 zXTRRwyuBO0J=HdR1`U7X45b8te@0ZG2a^SmFl5vv6NbRZBLo7-Odxuo0^LN9f-1^q zuRsP<^+*Kf0X-^}pp!`DdQQ?BROT`S90-S_>oMGpkKiBIuiflD|{5GbFcpvrWp-b)~ifs7{B zt#Vq>Xv6p)&;O~9clMt-GGAaAI4W$(7uY=i4~CbQ7lrwMI5_Wj^Zy~z&Yi2+*Sh(? zoBtcy5W4xloBwMzO54L%@9F96#~#2(lmUCNRp-RVgeZ2t1U*TDo+Tw!fmk>_fcrVx zx!st^`Q5Ilb;gfrKHZ{`v>hk*2VV66BHOLv*3f1Y)I;#mofA%_pNKiV9>8geJu_}b zu?QF~5fY!HpsvwSdl`BF2{>{U`y+aw(Rp*laPQ#ga$u67$}o?w^`*K~>0UYr27#7ONpMWAtjIw3#c>vY=Ew zVy+e54>jY4XiUx(`5oxF9;*$47LfN#Q5h2VAUwTG3Og8KmnBwb?$Rb(Ih?}pMCMF^ zb!eSR)!_H4!cB-?hO$q_FI#d)>aPRZc?>88ZErAGEnnA2{Cv=z{~jW>et^=Q|90oU4Q&YB`EPgrTeDHx9=;L> z{_U4gYo0y+CHA7bQ|dtKj9F(faYh{*U7;5hsc)k5rjFiMP$J?kTwR#2)E`IFDg6RR zr$?n5_BR5FLLg}=(}=MJ{238Orxd-UW172X>E@s=hUmUTlrBwINWuhNqK6n6_z3T! z2?~x1rLFjsBJ(8Zo@-jp_G~j69Zwd`M$r1k!v-KA>F3EbxY4TeSkZ+L!j)%kyiNUaZ`o&VSQ ze+_L2o&VSQe>EGW?cuBJ{-50qR)J~nh4~V@gJugh@m-c#rExQQpc`@J5@8}pWfB4q zZ)SSPflh&=i&7G?fMc9F#^z~2z)24vlG@A~Y8o&WJnCO&7kHH4q2=;}K<({hw@a5g zhUVc$e|F{2BlXg} zb^c#N8$##*b^c$?MrnKasu=%4eO==!0U%<(!5?CC;73uPR7^ZWzYcXUUBgP_jB6p zCE*-#IJ8f~{RDQ1{Ref3?ExLJB?Qj&z+D>9A({kpY{1@5vYYZijuK_6lWmUy9HMdX zMyX^@wg0PDyS8c9BvK8+X(L+Rg%M*A28_BJrX!Q}L&VqzlW{LJDVDL0 zCmCgP5Cz$a%*djZQ6Wr0OK4D5^fn%BmTQX$MWfbWLb+(INoWg9GfI?!?r`67Wthyw zDrKW2Hclb?3PP$7fK(y&NHmE%su^-rDcq<;ks4FS{=$qz;}D}#$%al_d!a=om{r-* zOBnMDauk{nnVuliwOxTh6}pHsLw>5UqNKx3-SWKc+K|o-x<4eS4vYaK!OT zB;y+!4x9j|ETgc-(j{s<#iZj3HG-!ni|ZJyuQ0i~MD9YIE9ym*czL1z)%S zD}zY5C=Yf1KO9^Qiu=D8-TVIzlUmGprS{ojT*gl_-0+yAZEC~Xg4Ju_8T*#b`H zNn4>a-6v2gm@@JZi1IateZH5qMGU=eO%Xpz-}__V*qp_%IVvtCVz}i?eKcOW-}!0_7fZ1%vbM4$$|V zR@Z-VTyl#cfZOhWUktB`@qe!`hu!+`5UF(ss$2hc>%WFJgl_%Ut^aB^O54NNru#qf zjqkt8X0w(VpIi~1X@oY+BD-+h7XKJav>D)+h**rZb?pNDy40mE Vb*V}EZvX%Q|Nor%we