Revise deployment tools to better reflect the repo structure.
[it/dep.git] / ric-aux / bin / install
1 #!/bin/bash
2 ################################################################################
3 #   Copyright (c) 2019 AT&T Intellectual Property.                             #
4 #   Copyright (c) 2019 Nokia.                                                  #
5 #                                                                              #
6 #   Licensed under the Apache License, Version 2.0 (the "License");            #
7 #   you may not use this file except in compliance with the License.           #
8 #   You may obtain a copy of the License at                                    #
9 #                                                                              #
10 #       http://www.apache.org/licenses/LICENSE-2.0                             #
11 #                                                                              #
12 #   Unless required by applicable law or agreed to in writing, software        #
13 #   distributed under the License is distributed on an "AS IS" BASIS,          #
14 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15 #   See the License for the specific language governing permissions and        #
16 #   limitations under the License.                                             #
17 ################################################################################
18
19
20 while [ -n "$1" ]; do # while loop starts
21
22     case "$1" in
23
24     -f) OVERRIDEYAML=$2
25         shift
26         ;;
27     -c) LIST_OF_COMPONENTS=$2
28         shift
29         ;;
30     *) echo "Option $1 not recognized" ;; # In case you typed a different option other than a,b,c
31
32     esac
33
34     shift
35
36 done
37
38
39 if [ -z "$OVERRIDEYAML" ];then
40     echo "****************************************************************************************************************"
41     echo "                                                     ERROR                                                      "
42     echo "****************************************************************************************************************"
43     echo "RIC deployment without deployment recipe is currently disabled. Please specify an recipe with the -f option."
44     echo "****************************************************************************************************************"
45     exit 1
46 fi
47
48
49 HAS_RIC_COMMON_PACKAGE=$(helm search local/ric-common | grep ric-common)
50
51 if [ -z "$HAS_RIC_COMMON_PACKAGE" ];then
52     echo "****************************************************************************************************************"
53     echo "                                                     ERROR                                                      "
54     echo "****************************************************************************************************************"
55     echo "Can't locate the ric-common helm package in the local repo. Please make sure that it is properly installed."
56     echo "****************************************************************************************************************"
57     exit 1
58 fi
59
60 HAS_AUX_COMMON_PACKAGE=$(helm search local/aux-common | grep aux-common)
61
62 if [ -z "$HAS_AUX_COMMON_PACKAGE" ];then
63     echo "****************************************************************************************************************"
64     echo "                                                     ERROR                                                      "
65     echo "****************************************************************************************************************"
66     echo "Can't locate the aux-common helm package in the local repo. Please make sure that it is properly installed."
67     echo "****************************************************************************************************************"
68     exit 1
69 fi
70
71
72
73 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
74
75 COMMON_BLOCK=$(cat $OVERRIDEYAML | awk '/^common:/{getline; while ($0 ~ /^ +.*|^ *$/) {print $0; if (getline == 0) {break}}}')
76 NAMESPACE_BLOCK=$(cat $OVERRIDEYAML | awk '/^  namespace:/{getline; while ($0 ~ /^    .*|^ *$/) {print $0; if (getline == 0) {break}}}')
77 AUXNAMESPACE=$(echo "$NAMESPACE_BLOCK" | awk '/^ *aux:/{print $2}')
78 INFRANAMESPACE=$(echo "$NAMESPACE_BLOCK" | awk '/^ *infra:/{print $2}')
79 RELEASE_PREFIX=$(echo "$COMMON_BLOCK" | awk '/^ *releasePrefix:/{print $2}')
80 COMPONENTS=${LIST_OF_COMPONENTS:-"infrastructure dashboard ves message-router mrsub mc-stack portal aaf"}
81
82
83 NODENAME=$(kubectl get node | awk 'NR>1{print $1}')
84 LABELFOUND=false
85 for f in $NODENAME; do
86     LABEL=$(kubectl describe node $f | grep "local-storage=enable")
87     if [ ! -z "$LABEL" ]; then
88         LABELFOUND=true
89     fi
90 done
91   
92 FOUND_STORAGECLASS=$(grep storageclass $OVERRIDEYAML)
93
94
95 if  ! $LABELFOUND && [ -z "$FOUND_STORAGECLASS" ]; then
96     echo "***********************************************************************************************"
97     echo "*                                          ERROR!!!!!!!!!!!!!                                 *"
98     echo "***********************************************************************************************"
99     echo "* Nodes label \"local-storage=enable\" is not found in any of the cluster node.               *"
100     echo "* Please pick a node and label it using the following command.                                *"
101     echo "* kubectl label --overwrite nodes <YOUR_NODE_NAME> local-storage=enable                       *"
102     echo "***********************************************************************************************"
103
104     exit 1
105 fi
106
107
108 if [ -z "$FOUND_STORAGECLASS" ] && $LABELFOUND; then
109
110     DATAPATH=$(cat $DIR/../helm/dashboard/values.yaml | grep datapath | awk '{ print $2}' )
111
112
113     if [ ! -z $OVERRIDEYAML ]; then
114         DATAPATHOVERRIDE=$(cat $OVERRIDEYAML | grep datapath | awk '{ print $2}' )
115     fi
116
117     if [ ! -z "$DATAPATHOVERRIDE" ]; then
118         DATAPATH=$DATAPATHOVERRIDE
119     fi
120
121     if [ ! -d "$DATAPATH" ]; then
122         mkdir -p $DATAPATH || { echo "Directory $DATAPATH does not exist and you don't have permission to create it. Please choose a different datapath." ; exit 1 ; }
123     fi
124
125     echo "***********************************************************************************************"
126     echo "*                                          WARNING!!!!!!!!!!!!!                               *"
127     echo "***********************************************************************************************"
128     echo "* Dashboard will use local storage. Please make sure that directory                           *"
129     echo "* $DATAPATH                                                                                   *"
130     echo "* contains the proper files.                                                                  *"
131     echo "***********************************************************************************************"
132
133 fi
134
135
136 LABELFOUND=false
137 for f in $NODENAME; do
138     LABEL=$(kubectl describe node $f | grep "portal-storage=enable")
139     if [ ! -z "$LABEL" ]; then
140         LABELFOUND=true
141     fi
142 done
143
144 if  ! $LABELFOUND; then
145     echo "***********************************************************************************************"
146     echo "*                                          ERROR!!!!!!!!!!!!!                                 *"
147     echo "***********************************************************************************************"
148     echo "* Nodes label \"portal-storage=enable\" is not found in any of the cluster node.               *"
149     echo "* Please pick a node and label it using the following command.   i                             *"
150     echo "* kubectl label --overwrite nodes <YOUR_NODE_NAME> portal-storage=enable                       *"
151     echo "***********************************************************************************************"
152
153     exit 1
154 fi
155
156
157
158 if ! kubectl get ns ${AUXNAMESPACE:-ricaux}> /dev/null 2>&1; then
159     kubectl create ns ${AUXNAMESPACE:-ricaux}
160 fi
161 if ! kubectl get ns ${INFRANAMESPACE:-ricinfra}> /dev/null 2>&1; then
162     kubectl create ns ${INFRANAMESPACE:-ricinfra}
163 fi
164 if ! kubectl get ns onap > /dev/null 2>&1; then
165     kubectl create ns onap
166 fi
167
168
169
170 echo Add cluster roles
171     cat >ricaux-role.yaml <<EOF
172 ---
173 apiVersion: rbac.authorization.k8s.io/v1
174 kind: ClusterRole
175 metadata:
176   name: ricaux-system-default
177 rules:
178   - apiGroups: [""]
179     resources: ["pods"]
180     verbs: ["list"]
181   - apiGroups: ["batch"]
182     resources: ["jobs/status"]
183     verbs: ["get"]
184 ---
185
186 apiVersion: rbac.authorization.k8s.io/v1
187 kind: ClusterRoleBinding
188 metadata:
189   name: ricaux-system-default
190 roleRef:
191   apiGroup: rbac.authorization.k8s.io
192   kind: ClusterRole
193   name: ricaux-system-default
194 subjects:
195   - kind: ServiceAccount
196     name: default
197     namespace: ${AUXNAMESPACE:-ricaux}
198 ---
199 apiVersion: rbac.authorization.k8s.io/v1
200 kind: ClusterRole
201 metadata:
202   name: onap-system-default
203 rules:
204   - apiGroups: [""]
205     resources: ["pods"]
206     verbs: ["list"]
207   - apiGroups: ["apps"]
208     resources: ["replicasets/status"]
209     verbs: ["get"]
210   - apiGroups: ["batch"]
211     resources: ["jobs/status"]
212     verbs: ["get"]
213   - apiGroups: ["apps"]
214     resources: ["deployments", "statefulsets"]
215     verbs: ["get"]
216 ---
217
218 apiVersion: rbac.authorization.k8s.io/v1
219 kind: ClusterRoleBinding
220 metadata:
221   name: onap-system-default
222 roleRef:
223   apiGroup: rbac.authorization.k8s.io
224   kind: ClusterRole
225   name: onap-system-default
226 subjects:
227   - kind: ServiceAccount
228     name: default
229     namespace: onap
230 EOF
231 kubectl apply -f ricaux-role.yaml
232 rm ricaux-role.yaml
233
234 kubectl create configmap -n ${AUXNAMESPACE:-ricaux} aux-recipe --from-file=recipe=$OVERRIDEYAML
235
236
237
238 echo "Clean up dockerdata-nfs directory"
239 rm -rf /dockerdata-nfs
240
241
242 echo "Deploying AUX components [$COMPONENTS]"
243
244
245
246 for component in $COMPONENTS; do
247     helm dep up $DIR/../helm/$component
248     case "$component" in
249             aaf)
250                 NODENAME=$(kubectl get node | awk 'NR>1{print $1}')
251                 LABELFOUND=false
252                 for f in $NODENAME; do
253                     LABEL=$(kubectl describe node $f | grep "aaf-storage=enable")
254                     if [ ! -z "$LABEL" ]; then
255                         LABELFOUND=true
256                     fi
257                 done
258                 
259                 if  ! $LABELFOUND; then
260                     echo "***********************************************************************************************"
261                     echo "*                                          ERROR!!!!!!!!!!!!!                                 *"
262                     echo "***********************************************************************************************"
263                     echo "* Nodes label \"aaf-storage=enable\" is not found in any of the cluster node.               *"
264                     echo "* Please pick a node and label it using the following command.                                *"
265                     echo "* kubectl label --overwrite nodes <YOUR_NODE_NAME> aaf-storage=enable                       *"
266                     echo "***********************************************************************************************"
267                 else
268                     helm install -f $OVERRIDEYAML --namespace "onap" --name "${RELEASE_PREFIX}-$component" $DIR/../helm/$component
269                 fi
270             ;;
271             *)
272                 helm install -f $OVERRIDEYAML --namespace "${AUXNAMESPACE:-ricaux}" --name "${RELEASE_PREFIX}-$component" $DIR/../helm/$component
273  
274     esac
275
276 done