Merge "config-init time optimization"
[oom.git] / kubernetes / config / docker / init / config-init.sh
1 #!/bin/bash -x
2
3 concat_array() {
4   local arr=("$@")
5   local str=''
6   for i in ${!arr[@]}; do
7     if (( $i > 0 )); then
8       str="${str};"
9     fi
10     str="${str}${arr[$i]}"
11   done
12   echo "$str"
13 }
14
15 echo "Validating onap-parameters.yaml has been populated"
16 [[ -z "$OPENSTACK_UBUNTU_14_IMAGE" ]] && { echo "Error: OPENSTACK_UBUNTU_14_IMAGE must be set in onap-parameters.yaml"; exit 1; }
17 [[ -z "$OPENSTACK_PUBLIC_NET_ID" ]] && { echo "Error: OPENSTACK_PUBLIC_NET_ID must be set in onap-parameters.yaml"; exit 1; }
18 [[ -z "$OPENSTACK_OAM_NETWORK_ID" ]] && { echo "Error: OPENSTACK_OAM_NETWORK_ID must be set in onap-parameters.yaml"; exit 1; }
19 [[ -z "$OPENSTACK_OAM_SUBNET_ID" ]] && { echo "Error: OPENSTACK_OAM_SUBNET_ID must be set in onap-parameters.yaml"; exit 1; }
20 [[ -z "$OPENSTACK_OAM_NETWORK_CIDR" ]] && { echo "Error: OPENSTACK_OAM_NETWORK_CIDR must be set in onap-parameters.yaml"; exit 1; }
21 [[ -z "$OPENSTACK_USERNAME" ]] && { echo "Error: OPENSTACK_USERNAME must be set in onap-parameters.yaml"; exit 1; }
22 [[ -z "$OPENSTACK_TENANT_ID" ]] && { echo "Error: OPENSTACK_TENANT_ID must be set in onap-parameters.yaml"; exit 1; }
23 [[ -z "$OPENSTACK_API_KEY" ]] && { echo "Error: OPENSTACK_API_KEY must be set in onap-parameters.yaml"; exit 1; }
24 [[ -z "$OPENSTACK_REGION" ]] && { echo "Error: OPENSTACK_REGION must be set in onap-parameters.yaml"; exit 1; }
25 [[ -z "$OPENSTACK_KEYSTONE_URL" ]] && { echo "Error: OPENSTACK_KEYSTONE_URL must be set in onap-parameters.yaml"; exit 1; }
26 [[ -z "$OPENSTACK_FLAVOUR_MEDIUM" ]] && { echo "Error: OPENSTACK_FLAVOUR_MEDIUM must be set in onap-parameters.yaml"; exit 1; }
27 [[ -z "$OPENSTACK_SERVICE_TENANT_NAME" ]] && { echo "Error: OPENSTACK_SERVICE_TENANT_NAME must be set in onap-parameters.yaml"; exit 1; }
28 [[ -z "$DMAAP_TOPIC" ]] && { echo "Error: DMAAP_TOPIC must be set in onap-parameters.yaml"; exit 1; }
29 [[ -z "$DEMO_ARTIFACTS_VERSION" ]] && { echo "Error: DEMO_ARTIFACTS_VERSION must be set in onap-parameters.yaml"; exit 1; }
30 [[ -z "$OPENSTACK_TENANT_NAME" ]] && { echo "Error: OPENSTACK_TENANT_NAME must be set in onap-parameters.yaml"; exit 1; }
31
32 #make NAMESPACE directory
33 echo "Creating $NAMESPACE directory if it doesn't exist"
34 mkdir -p /config-init/$NAMESPACE/
35
36 #unzip the configs in the NAMESPACEs directory ensuring no overwriting of files
37 echo "Installing configuration files"
38 cp -vnpr /opt/config/src/* /config-init/$NAMESPACE/
39
40 #ensure db directories exist.
41 mkdir -p /config-init/$NAMESPACE/appc/data/
42 mkdir -p /config-init/$NAMESPACE/dcae/pgaas/pgdata/
43 mkdir -p /config-init/$NAMESPACE/portal/mariadb/data/
44 mkdir -p /config-init/$NAMESPACE/portal/logs/
45 mkdir -p /config-init/$NAMESPACE/sdnc/data/
46 mkdir -p /config-init/$NAMESPACE/vid/mariadb/data/
47 mkdir -p /config-init/$NAMESPACE/sdc/sdc-cs/CS/
48 mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-ES/
49 mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-CS/
50 mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-KB/
51 mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-BE/
52 mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-FE/
53 mkdir -p /config-init/$NAMESPACE/aai/opt/aai/logroot/
54 mkdir -p /config-init/$NAMESPACE/aai/model-loader/logs/
55 mkdir -p /config-init/$NAMESPACE/aai/aai-traversal/logs/
56 mkdir -p /config-init/$NAMESPACE/aai/aai-resources/logs/
57 mkdir -p /config-init/$NAMESPACE/aai/sparky-be/logs/
58 mkdir -p /config-init/$NAMESPACE/aai/elasticsearch/es-data/
59 mkdir -p /config-init/$NAMESPACE/aai/search-data-service/logs/
60 mkdir -p /config-init/$NAMESPACE/aai/data-router/logs/
61 mkdir -p /config-init/$NAMESPACE/mso/mariadb/data
62 mkdir -p /config-init/$NAMESPACE/clamp/mariadb/data
63 mkdir -p /config-init/$NAMESPACE/log/elasticsearch/data
64 mkdir -p /config-init/$NAMESPACE/consul/consul-agent-config/bin
65 mkdir -p /config-init/$NAMESPACE/consul/consul-agent-config/scripts
66 mkdir -p /config-init/$NAMESPACE/consul/consul-server-config
67
68 echo "Setting permissions to container writeable directories"
69 chmod -R 777 /config-init/$NAMESPACE/sdc/logs/
70 chmod -R 777 /config-init/$NAMESPACE/portal/logs/
71 chmod -R 777 /config-init/$NAMESPACE/aai/aai-config/
72 chmod -R 777 /config-init/$NAMESPACE/aai/aai-data/
73 chmod -R 777 /config-init/$NAMESPACE/aai/opt/aai/logroot/
74 chmod -R 777 /config-init/$NAMESPACE/aai/model-loader/logs/
75 chmod -R 777 /config-init/$NAMESPACE/aai/haproxy/log/
76 chmod -R 777 /config-init/$NAMESPACE/aai/aai-traversal/logs/
77 chmod -R 777 /config-init/$NAMESPACE/aai/aai-resources/logs/
78 chmod -R 777 /config-init/$NAMESPACE/aai/sparky-be/logs/
79 chmod -R 777 /config-init/$NAMESPACE/aai/elasticsearch/es-data/
80 chmod -R 777 /config-init/$NAMESPACE/aai/search-data-service/logs/
81 chmod -R 777 /config-init/$NAMESPACE/aai/data-router/logs/
82 chmod -R 777 /config-init/$NAMESPACE/policy/mariadb/
83 chmod -R 777 /config-init/$NAMESPACE/log/elasticsearch
84 chown -R root:root /config-init/$NAMESPACE/log
85
86 # SDNC/Robot preload files manipulation
87 OPENSTACK_OAM_NETWORK_CIDR_PREFIX=`cut -d. -f1-3 <<<"$OPENSTACK_OAM_NETWORK_CIDR"`
88 # MSO post install steps to encrypt openstack password
89 MSO_ENCRYPTION_KEY=$(cat /config-init/$NAMESPACE/mso/mso/encryption.key)
90 OPENSTACK_API_ENCRYPTED_KEY=`echo -n "$OPENSTACK_API_KEY" | openssl aes-128-ecb -e -K $MSO_ENCRYPTION_KEY -nosalt | xxd -c 256 -p`
91
92 echo "Substituting configuration parameters"
93
94 # replace the default 'onap' namespace qualification of K8s hostnames within the config files
95 SED_NS_PATHS="/config-init/$NAMESPACE/"
96 SED_NS_STRINGS=(
97   "s/\.onap-/\.${NAMESPACE}-/g"
98   "s/kubectl -n onap/kubectl -n ${NAMESPACE}/g"
99 )
100 SED_NS_STRING=$(concat_array "${SED_NS_STRINGS[@]}")
101 find $SED_NS_PATHS -type f -exec sed -i -e "${SED_NS_STRING}" {} \;
102
103 # set variable parameters
104 # ATTENTION: the list of the paths must be verified if more parameters are added!
105 SED_CONFIG_PATHS="/config-init/$NAMESPACE/robot/ /config-init/$NAMESPACE/mso/"
106 SED_CONFIG_STRINGS=( \
107   "s/UBUNTU_14_IMAGE_NAME_HERE/${OPENSTACK_UBUNTU_14_IMAGE}/g" \
108   "s/OPENSTACK_PUBLIC_NET_ID_HERE/${OPENSTACK_PUBLIC_NET_ID}/g" \
109   "s/OPENSTACK_NETWORK_ID_WITH_ONAP_ROUTE_HERE/${OPENSTACK_OAM_NETWORK_ID}/g" \
110   "s/OPENSTACK_SUBNET_ID_WITH_ONAP_ROUTE_HERE/${OPENSTACK_OAM_SUBNET_ID}/g" \
111   "s,NETWORK_CIDR_WITH_ONAP_ROUTE_HERE,${OPENSTACK_OAM_NETWORK_CIDR},g" \
112   "s/OPENSTACK_USERNAME_HERE/${OPENSTACK_USERNAME}/g" \
113   "s/OPENSTACK_TENANT_ID_HERE/${OPENSTACK_TENANT_ID}/g" \
114   "s/OPENSTACK_PASSWORD_HERE/${OPENSTACK_API_KEY}/g" \
115   "s/OPENSTACK_REGION_HERE/${OPENSTACK_REGION}/g" \
116   "s,OPENSTACK_KEYSTONE_IP_HERE,${OPENSTACK_KEYSTONE_URL},g" \
117   "s/OPENSTACK_FLAVOUR_MEDIUM_HERE/${OPENSTACK_FLAVOUR_MEDIUM}/g" \
118   "s/DMAAP_TOPIC_HERE/${DMAAP_TOPIC}/g" \
119   "s/OPENSTACK_SERVICE_TENANT_NAME_HERE/${OPENSTACK_SERVICE_TENANT_NAME}/g" \
120   "s/DEMO_ARTIFACTS_VERSION_HERE/${DEMO_ARTIFACTS_VERSION}/g" \
121   "s/OPENSTACK_OAM_NETWORK_CIDR_PREFIX_HERE/${OPENSTACK_OAM_NETWORK_CIDR_PREFIX}/g" \
122   "s/OPENSTACK_ENCRYPTED_PASSWORD_HERE/${OPENSTACK_API_ENCRYPTED_KEY}/g" \
123   "s/OPENSTACK_TENANT_NAME_HERE/${OPENSTACK_TENANT_NAME}/g" \
124 )
125 SED_CONFIG_STRING=$(concat_array "${SED_CONFIG_STRINGS[@]}")
126 find $SED_CONFIG_PATHS -type f -exec sed -i -e "${SED_CONFIG_STRING}" {} \;
127
128 echo "Done!"