3 # Copyright (c) 2021 AT&T. All rights reserved.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
18 # 1. Chart packages available under local directory provided as input/argument
19 # 2. helm client installed with push plugin
20 # 3. ONAP chartmuseum service deployed
24 echo "Chart Base directory or helm chart from local repo must be provided as input!!"
25 echo "Usage: registry-initialize.sh -d chartdirectory \
26 <-n namespace override> <-r helmrelease override> <-p chart name prefix> | <-h helm charts from local repo>"
42 while getopts ":d:n:r:p:h:c:" opt; do
46 n) NAMESPACE="$OPTARG"
52 h) HELM_CHART="$OPTARG"
54 c) HELM_REPO="$OPTARG"
56 \?) echo "Invalid option -$OPTARG" >&2
63 if [ -z "$BASEDIR" ] && [ -z "$HELM_CHART" ] ; then
64 echo "Chart base directory provided $BASEDIR and helm chart from local repo is empty"
68 if [ -n "$BASEDIR" ] && [ -n "$HELM_CHART" ] ; then
69 echo "Both chart base directory $BASEDIR and helm chart from local repo $HELM_CHART cannot be used at the same time "
73 if [ -n "$BASEDIR" ]; then
74 if [ "$(find $BASEDIR -maxdepth 1 -name '*tgz' -print -quit)" ]; then
77 echo "No chart package on $BASEDIR provided"
82 if [ -n "$HELM_CHART" ]; then
83 tmp_location=$(mktemp -d)
84 helm pull $HELM_REPO/$HELM_CHART -d $tmp_location
86 echo "Helm chart $HELM_CHART has been pulled out from in $HELM_REPO repo"
89 echo "No chart package $HELM_CHART on $HELM_REPO repo"
94 if [ -z "$PREF" ] && [ -z "$HELM_CHART" ] ; then
98 LOGIN=$(kubectl -n "$NAMESPACE" get secret \
99 "${RLS_NAME}-chartmuseum-registrycred" \
100 -o jsonpath='{.data.login}' | base64 -d)
102 PASSWORD=$(kubectl -n "$NAMESPACE" get secret \
103 "${RLS_NAME}-chartmuseum-registrycred" \
104 -o jsonpath='{.data.password}' | base64 -d)
106 if [ -z "$LOGIN" ] || [ -z "$PASSWORD" ]; then
107 echo "Login/Password credential for target registry cannot be retrieved"
111 # Expose cluster port via port-forwarding
112 kubectl -n $NAMESPACE port-forward service/chart-museum 27017:80 &
113 if [ $? -ne 0 ]; then
114 echo "Error in port forwarding; registry cannot be added!!"
120 # Add chartmuseum repo as helm repo
121 # Credentials should match config defined in
122 # oom\kubernetes\platform\components\chartmuseum\values.yaml
123 helm repo add k8s-registry http://127.0.0.1:27017 --username "$LOGIN" \
124 --password "$PASSWORD"
125 if [ $? -ne 0 ]; then
126 echo "registry cannot be added!!"
127 pkill -f "port-forward service/chart-museum"
131 # Initial scope is pushing only dcae charts
132 # can be expanded to include all onap charts if required
133 for file in $BASEDIR/$PREF*tgz; do
134 # use helm plugin to push charts
135 helm push $file k8s-registry
136 if [ $? -eq 0 ]; then
137 echo "$file uploaded to registry successfully"
139 echo "registry upload failed!!"
140 pkill -f "port-forward service/chart-museum"
141 helm repo remove k8s-registry
146 echo "All Helm charts successfully uploaded into internal repository"
148 # Remove the port-forwarding process
149 pkill -f "port-forward service/chart-museum"
151 # Remove helm registry from local
152 helm repo remove k8s-registry