policy/engine changes to support PE https
[policy/engine.git] / packages / docker / src / main / docker / docker-install.sh
1 #!/bin/bash
2 #
3 #============LICENSE_START==================================================
4 #  ONAP Policy Engine
5 #===========================================================================
6 #  Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
7 #===========================================================================
8 # Licensed under the Apache License, Version 2.0 (the "License");
9 # you may not use this file except in compliance with the License.
10 # You may obtain a copy of the License at
11 #
12 #         http://www.apache.org/licenses/LICENSE-2.0
13 #
14 # Unless required by applicable law or agreed to in writing, software
15 # distributed under the License is distributed on an "AS IS" BASIS,
16 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 # See the License for the specific language governing permissions and
18 # limitations under the License.
19 #============LICENSE_END==================================================
20 #
21
22
23 #########################################################################
24 ##
25 ## Functions
26 ##
27 #########################################################################
28
29 function usage() {
30         echo -n "syntax: $(basename $0) "
31         echo -n "--debug ("
32         echo -n "[--install base|pap|pdp|console|mysql|elk|brmsgw|paplp|pdplp] | "
33         echo -n "[--configure base|pap|pdp|console|mysql|elk|brmsgw|paplp|pdplp] | "
34 }
35
36 function check_java() {
37         if [[ $DEBUG == y ]]; then
38                 echo "-- ${FUNCNAME[0]} $@ --"
39                 set -x
40         fi
41         
42         TARGET_JAVA_VERSION=$1
43         
44         if [[ -z ${JAVA_HOME} ]]; then
45                 echo "error: ${JAVA_HOME} is not set"
46                 return 1
47         fi
48         
49         if ! check_x_file "${JAVA_HOME}/bin/java"; then
50                 echo "error: ${JAVA_HOME}/bin/java is not accessible"
51                 return 1
52         fi
53         
54         INSTALLED_JAVA_VERSION=$("${JAVA_HOME}/bin/java" -version 2>&1 | awk -F '"' '/version/ {print $2}')
55         if [[ -z $INSTALLED_JAVA_VERSION ]]; then
56                 echo "error: ${JAVA_HOME}/bin/java is invalid"
57                 return 1
58         fi
59         
60         if [[ "${INSTALLED_JAVA_VERSION}" != ${TARGET_JAVA_VERSION}* ]]; then
61                 echo "error: java version (${INSTALLED_JAVA_VERSION}) does not"\
62                          "march desired version ${TARGET_JAVA_VERSION}"
63                 return 1
64         fi 
65         
66         echo "OK: java ${INSTALLED_JAVA_VERSION} installed"
67         
68 }
69
70 function process_configuration() {
71         if [[ $DEBUG == y ]]; then
72                 echo "-- ${FUNCNAME[0]} $@ --"
73                 set -x
74         fi
75         
76         CONF_FILE=$1
77         while read line || [ -n "${line}" ]; do
78         if [[ -n ${line} ]] && [[ ${line} != \#* ]]; then
79                 name=$(echo "${line%%=*}")
80                 value=$(echo "${line#*=}")
81                 # escape ampersand so that sed does not replace it with the search string
82             value=${value//&/\\&}
83                 if [[ -z ${name} ]] || [[ -z $value ]]; then
84                         echo "WARNING: ${line} missing name or value"
85                 fi
86                 export ${name}="${value}"
87                 eval "${name}" "${value}" 2> /dev/null
88         fi
89         done < "${CONF_FILE}"
90         return 0
91 }
92
93 function component_preconfigure() {
94         if [[ $DEBUG == y ]]; then
95                 echo "-- ${FUNCNAME[0]} $@ --"
96                 set -x
97         fi
98
99         /bin/sed -i -e 's!${{POLICY_HOME}}!'"${POLICY_HOME}!g" \
100                 -e 's!${{FQDN}}!'"${FQDN}!g" \
101                 *.conf > /dev/null 2>&1
102 }
103
104 function tomcat_component() {
105         if [[ $DEBUG == y ]]; then
106                 echo "-- ${FUNCNAME[0]} $@ --"
107                 set -x
108         fi
109         
110         TOMCAT_TARGET_INSTALL_DIR=${POLICY_HOME}/servers/${COMPONENT_TYPE}
111         if [[ -d ${TOMCAT_TARGET_INSTALL_DIR} ]]; then
112                 echo "error: ${TOMCAT_TARGET_INSTALL_DIR} exists."
113                 return 1
114         fi
115         
116         TOMCAT_INSTALL_DIR=${POLICY_HOME}/install/3rdparty/${TOMCAT_PACKAGE_NAME}/
117         if [[ -d ${TOMCAT_INSTALL_DIR} ]]; then
118                 echo "error: ${TOMCAT_INSTALL_DIR} exists."
119                 return 1                
120         fi
121         
122         tar -C "${POLICY_HOME}/servers" -xf "${POLICY_HOME}/install/3rdparty/${TOMCAT_PACKAGE_NAME}.tar.gz"
123         
124         mv "${POLICY_HOME}/servers/${TOMCAT_PACKAGE_NAME}" "${POLICY_HOME}/servers/${COMPONENT_TYPE}/"
125         /bin/cp "${POLICY_HOME}"/install/servers/common/tomcat/bin/* "${POLICY_HOME}/servers/${COMPONENT_TYPE}/bin"
126         /bin/cp "${POLICY_HOME}"/install/servers/common/tomcat/conf/* "${POLICY_HOME}/servers/${COMPONENT_TYPE}/conf"
127         
128         /bin/cp "${POLICY_HOME}/install/servers/common/tomcat/init.d/tomcatd" "${POLICY_HOME}/etc/init.d/${COMPONENT_TYPE}"
129         /bin/sed -i -e "s!\${{COMPONENT_TYPE}}!${COMPONENT_TYPE}!g" "${POLICY_HOME}/etc/init.d/${COMPONENT_TYPE}" >/dev/null 2>&1
130
131
132         /bin/cp -fr "${POLICY_HOME}"/install/servers/${COMPONENT_TYPE}/webapps/* "${POLICY_HOME}/servers/${COMPONENT_TYPE}/webapps"
133         /bin/cp -fr "${POLICY_HOME}"/install/servers/${COMPONENT_TYPE}/bin/* "${POLICY_HOME}/servers/${COMPONENT_TYPE}/bin" >/dev/null 2>&1
134         /bin/cp -fr "${POLICY_HOME}"/install/servers/${COMPONENT_TYPE}/conf/* "${POLICY_HOME}/servers/${COMPONENT_TYPE}/conf" >/dev/null 2>&1
135         
136         /bin/rm -fr "${POLICY_HOME}/servers/${COMPONENT_TYPE}/webapps/docs" \
137                  "${POLICY_HOME}/servers/${COMPONENT_TYPE}/webapps/examples" \
138                  "${POLICY_HOME}/servers/${COMPONENT_TYPE}/webapps/ROOT" \
139                  "${POLICY_HOME}/servers/${COMPONENT_TYPE}/webapps/manager" \
140                  "${POLICY_HOME}/servers/${COMPONENT_TYPE}/webapps/host-manager"
141         
142         if [[ ${COMPONENT_TYPE} == console ]]; then
143                 install_onap_portal_settings
144         fi
145
146         return 0
147 }
148
149 function configure_tomcat_component() {
150         configure_component "${COMPONENT_TYPE}.conf" "${POLICY_HOME}/servers/${COMPONENT_TYPE}/"
151 }
152
153 function configure_component() {
154         if [[ $DEBUG == y ]]; then
155                 echo "-- ${FUNCNAME[0]} $@ --"
156                 set -x
157         fi
158                 
159         if ! process_configuration "${COMPONENT_TYPE}.conf"; then
160                 echo "error: aborting ${COMPONENT_TYPE} installation: cannot process configuration ${COMPONENT_TYPE}.conf"
161                 exit 1
162         fi
163         
164         CONF_FILE=$1
165         COMPONENT_ROOT_DIR=$2
166         
167         SED_LINE="sed -i"
168         SED_LINE+=" -e 's!\${{POLICY_HOME}}!${POLICY_HOME}!g' "
169         SED_LINE+=" -e 's!\${{POLICY_USER}}!${POLICY_USER}!g' "
170         SED_LINE+=" -e 's!\${{POLICY_GROUP}}!${POLICY_GROUP}!g' "
171         SED_LINE+=" -e 's!\${{KEYSTORE_PASSWD}}!${KEYSTORE_PASSWD}!g' "
172         SED_LINE+=" -e 's!\${{TRUSTSTORE_PASSWD}}!${TRUSTSTORE_PASSWD}!g' "
173         SED_LINE+=" -e 's!\${{JAVA_HOME}}!${JAVA_HOME}!g' "
174         SED_LINE+=" -e 's!\${{COMPONENT_TYPE}}!${COMPONENT_TYPE}!g' "
175         SED_LINE+=" -e 's!\${{POLICY_LOGS}}!${POLICY_LOGS}!g' "
176                 
177         while read line || [ -n "${line}" ]; do
178         if [[ -n $line ]] && [[ $line != \#* ]]; then
179                 name=$(echo "${line%%=*}")
180                 value=$(echo "${line#*=}")
181                 # escape ampersand so that sed does not replace it with the search string
182                 value=${value//&/\\&}
183                 if [[ -z ${name} ]] || [[ -z ${value} ]]; then
184                         echo "WARNING: ${line} missing name or value"
185                 fi
186                 SED_LINE+=" -e 's!\${{${name}}}!${value}!g' "
187                 
188         fi
189         done < "$CONF_FILE"
190         
191         SED_FILES=""
192         for sed_file in $(find "${COMPONENT_ROOT_DIR}" -name '*.xml' -o -name '*.sh' -o -name '*.properties' -o -name '*.conf' -o -name '*.cfg' -o -name '*.template' -o -name '*.conf' -o -name '*.cron' -o -name '*.json' | grep -v /backup/); do
193                 if fgrep -l '${{' ${sed_file} > /dev/null 2>&1; then
194                         SED_FILES+="${sed_file} "
195                 fi
196         done
197
198         if [[ -f $HOME/.m2/settings.xml ]]; then
199                 SED_FILES+="$HOME/.m2/settings.xml "
200         fi
201         
202
203         if [[ -z ${SED_FILES} ]]; then
204                 echo "WARNING: no xml, sh, properties, or conf files to perform configuration expansion"
205         else
206                 SED_LINE+=${SED_FILES}
207                 eval "${SED_LINE}"
208         fi
209
210         list_unexpanded_files ${POLICY_HOME}
211 }
212
213 function install_onap_portal_settings() {
214         echo "Install onap portal settings"
215
216         # unpack onap war file
217         mkdir -p "${POLICY_HOME}"/servers/console/webapps/onap
218         cd "${POLICY_HOME}"/servers/console/webapps/onap
219         unzip -q ../onap.war
220         cd ${INSTALL_DIR}
221
222         # copy over the configured settings
223         /bin/cp -fr "${POLICY_HOME}"/install/servers/onap/* "${POLICY_HOME}/servers/console/webapps/onap"
224 }
225
226 function check_r_file() {
227         if [[ $DEBUG == y ]]; then
228                 echo "-- ${FUNCNAME[0]} $@ --"
229                 set -x
230         fi
231
232         FILE=$1
233         if [[ ! -f ${FILE} || ! -r ${FILE} ]]; then
234         return 1
235         fi
236
237         return 0
238 }
239
240 function check_x_file() {       
241         if [[ $DEBUG == y ]]; then
242                 echo "-- ${FUNCNAME[0]} $@ --"
243                 set -x
244         fi
245
246         FILE=$1
247         if [[ ! -f ${FILE} || ! -x ${FILE} ]]; then
248         return 1
249         fi
250
251         return 0
252 }
253
254 function install_prereqs() {
255         if [[ $DEBUG == y ]]; then
256                 echo "-- ${FUNCNAME[0]} $@ --"
257                 set -x
258         fi
259         
260         CONF_FILE=$1
261         
262         if ! check_r_file "${CONF_FILE}"; then
263                 echo "error: aborting ${COMPONENT_TYPE} installation: ${CONF_FILE} is not accessible"
264                 exit 1
265         fi
266         
267         if ! process_configuration "${CONF_FILE}"; then
268                 echo "error: aborting ${COMPONENT_TYPE} installation: cannot process configuration ${CONF_FILE}"
269                 exit 1
270         fi
271         
272 #       if ! check_java "1.8"; then
273 #               echo "error: aborting ${COMPONENT_TYPE} installation: invalid java version"
274 #               exit 1
275 #       fi
276         
277         if [[ -z ${POLICY_HOME} ]]; then
278                 echo "error: aborting ${COMPONENT_TYPE} installation: ${POLICY_HOME} is not set"
279                 exit 1  
280         fi
281
282         HOME_OWNER=$(ls -ld "${POLICY_HOME}" | awk '{print $3}')
283         if [[ ${HOME_OWNER} != ${POLICY_USER} ]]; then
284                 echo "error: aborting ${COMPONENT_TYPE} installation: ${POLICY_USER} does not own ${POLICY_HOME} directory"
285                 exit 1
286         fi
287         
288         echo -n "Starting ${OPERATION} of ${COMPONENT_TYPE} under ${POLICY_USER}:${POLICY_GROUP} "
289         echo "ownership with umask $(umask)."
290 }
291
292 function list_unexpanded_files() {
293         ROOT_DIR=$1
294         SEARCH_LIST=$(find ${ROOT_DIR} -type f -name '*.properties' -o -name '*.sh'  -o -name '*.conf' -o -name '*.yml' -o -name '*.template' -o -name '*.xml' -o -name '*.cfg' -o -name '*.json' -o -path "${ROOT_DIR}/etc/init.d/*" | egrep -v '/m2/|/install/|/logs/')
295     NOT_EXPANDED_BASE_FILES=$(grep -l '${{' ${SEARCH_LIST} 2> /dev/null)
296         if [[ -n ${NOT_EXPANDED_BASE_FILES} ]]; then
297                 echo "error: component installation has completed but some base files have not been expanded:"
298                 echo "${NOT_EXPANDED_BASE_FILES}"
299                 return 1
300         fi
301         return 0
302 }
303
304 function install_base() {
305         if [[ $DEBUG == y ]]; then
306                 echo "-- ${FUNCNAME[0]} $@ --"
307                 set -x
308         fi
309         
310         install_prereqs "${BASE_CONF}"
311         
312         if [[ -z ${POLICY_HOME} ]]; then
313                 echo "error: ${POLICY_HOME} is not set"
314                 exit 1
315         fi
316         
317         POLICY_HOME_CONTENTS=$(ls -A "${POLICY_HOME}" 2> /dev/null)
318         if [[ -n ${POLICY_HOME_CONTENTS} ]]; then
319                 echo "error: aborting base installation: ${POLICY_HOME} directory is not empty"
320                 exit 1
321         fi
322         
323         if [[ ! -d ${POLICY_HOME} ]]; then
324                 echo "error: aborting base installation: ${POLICY_HOME} is not a directory."
325                 exit 1
326         fi
327         
328         if ! /bin/mkdir -p "${POLICY_HOME}/servers/" > /dev/null 2>&1; then     
329                 echo "error: aborting base installation: cannot create ${POLICY_HOME}/servers/"
330                 exit 1
331         fi      
332         
333         if ! /bin/mkdir -p "${POLICY_LOGS}" > /dev/null 2>&1; then      
334                 echo "error: aborting base installation: cannot create ${POLICY_LOGS}"
335                 exit 1
336         fi      
337         
338         if ! /bin/mkdir -p "${POLICY_HOME}/logs/" > /dev/null 2>&1; then        
339                 echo "error: aborting base installation: cannot create ${POLICY_HOME}/logs/"
340                 exit 1
341         fi      
342         
343         BASE_TGZ=$(ls base-*.tar.gz)
344         if [ ! -r ${BASE_TGZ} ]; then
345                 echo "error: aborting base installation: ${POLICY_USER} cannot access tar file: ${BASE_TGZ}"
346                 exit 1                  
347         fi
348         
349         tar -tzf ${BASE_TGZ} > /dev/null 2>&1
350         if [[ $? != 0 ]]; then
351                 echo >&2 "error: aborting base installation: invalid base package tar file: ${BASE_TGZ}"
352                 exit 1
353         fi
354         
355         BASH_PROFILE_LINE=". ${POLICY_HOME}/etc/profile.d/env.sh"
356         PROFILE_LINE="ps -p \$\$ | grep -q bash || . ${POLICY_HOME}/etc/profile.d/env.sh"
357                 
358         tar -C ${POLICY_HOME} -xf ${BASE_TGZ} --no-same-owner
359         if [[ $? != 0 ]]; then
360                 # this should not happened
361                 echo "error: aborting base installation: base package cannot be unpacked: ${BASE_TGZ}"
362                 exit 1
363         fi
364
365         /bin/mkdir -p ${POLICY_HOME}/etc/init.d > /dev/null 2>&1
366         /bin/mkdir -p ${POLICY_HOME}/tmp > /dev/null 2>&1
367         /bin/mkdir -p ${POLICY_HOME}/var > /dev/null 2>&1
368                         
369         #list_unexpanded_files ${POLICY_HOME}
370 }
371
372
373 function configure_base() {
374         if [[ $DEBUG == y ]]; then
375                 echo "-- ${FUNCNAME[0]} $@ --"
376                 set -x
377         fi
378         
379         # check if fqdn is set in base.conf and use that value if set
380         if [[ -z ${INSTALL_FQDN} ]]
381         then
382                 echo "FQDN not set in config...using the default FQDN ${FQDN}"
383         else
384                 echo "Using FQDN ${INSTALL_FQDN} from config"
385                 FQDN=${INSTALL_FQDN}
386         fi
387
388         configure_component "${BASE_CONF}" "${POLICY_HOME}"
389         
390         BASH_PROFILE_LINE=". ${POLICY_HOME}/etc/profile.d/env.sh"
391         PROFILE_LINE="ps -p \$\$ | grep -q bash || . ${POLICY_HOME}/etc/profile.d/env.sh"
392         
393         if ! fgrep -x "${BASH_PROFILE_LINE}" "${HOME}/.bash_profile" >/dev/null 2>&1; then
394                 echo "${BASH_PROFILE_LINE}" >> "${HOME}/.bash_profile"
395         fi
396         
397         if ! fgrep -x "${PROFILE_LINE}" "${HOME}/.profile" >/dev/null 2>&1; then
398                 echo "${PROFILE_LINE}" >> "${HOME}/.profile"
399         fi
400 }
401
402 function configure_keystore() {
403         if [[ $DEBUG == y ]]; then
404                 echo "-- ${FUNCNAME[0]} --"
405                 set -x
406         fi
407
408     local DEFAULT_KEYSTORE_PASSWORD='Pol1cy_0nap'
409
410         if [[ -n ${TRUSTSTORE_PASSWD} ]]; then
411             keytool -storepasswd -storepass "${DEFAULT_KEYSTORE_PASSWORD}" -keystore "${POLICY_HOME}/etc/ssl/policy-truststore" -new "${TRUSTSTORE_PASSWD}"
412             keytool -list -keystore "${POLICY_HOME}/etc/ssl/policy-truststore" -storepass "${TRUSTSTORE_PASSWD}"
413         fi
414
415         if [[ -n ${KEYSTORE_PASSWD} ]]; then
416             keytool -storepasswd -storepass "${DEFAULT_KEYSTORE_PASSWORD}" -keystore "${POLICY_HOME}/etc/ssl/policy-keystore" -new "${KEYSTORE_PASSWD}"
417             keytool -list -keystore "${POLICY_HOME}/etc/ssl/policy-keystore" -storepass "${KEYSTORE_PASSWD}"
418         fi
419 }
420
421
422 function install_tomcat_component() {
423         if [[ $DEBUG == y ]]; then
424                 echo "-- ${FUNCNAME[0]} $@ --"
425                 set -x
426         fi
427         
428         install_prereqs "${BASE_CONF}"
429
430         if ! process_configuration "${COMPONENT_TYPE}.conf"; then
431                 echo "error: aborting ${COMPONENT_TYPE} installation: cannot process configuration ${COMPONENT_TYPE}.conf"
432                 exit 1
433         fi
434         
435         if ! tomcat_component; then
436                 echo "error: aborting ${COMPONENT_TYPE} installation: tomcat installation failed."
437                 exit 1                  
438         fi
439         
440 }
441
442 # This function installs mysql related shell scripts and sql files in the proper locations
443 # under $POLICY_HOME. It also adds the MySQL client bin to the PATH based on configuration.
444 #
445 function install_mysql() {
446         if [[ $DEBUG == y ]]; then
447                 echo "-- ${FUNCNAME[0]} $@ --"
448                 set -x
449         fi
450         
451         install_prereqs "${BASE_CONF}"
452
453         if ! process_configuration "${COMPONENT_TYPE}.conf"; then
454                 echo "error: aborting ${COMPONENT_TYPE} installation: cannot process configuration ${COMPONENT_TYPE}.conf"
455                 exit 1
456         fi
457         
458         MYSQL_DATA_PATH=${POLICY_HOME}/data/mysql
459         /bin/mkdir -p ${MYSQL_DATA_PATH} > /dev/null 2>&1
460         
461         /bin/cp -f "${POLICY_HOME}"/install/mysql/data/* "${MYSQL_DATA_PATH}"
462         /bin/chmod 555 "${MYSQL_DATA_PATH}"/*
463         
464         MYSQL_BIN_SOURCE=${POLICY_HOME}/install/mysql/bin
465         /bin/mkdir -p ${POLICY_HOME}/bin > /dev/null 2>&1
466         for script in $(/bin/ls "${MYSQL_BIN_SOURCE}"); do
467                 /bin/cp ${MYSQL_BIN_SOURCE}/${script} ${POLICY_HOME}/bin
468                 /bin/chmod 555 "${POLICY_HOME}/bin/${script}"
469         done
470 }
471
472 function configure_mysql() {
473         if [[ $DEBUG == y ]]; then
474                 echo "-- ${FUNCNAME[0]} $@ --"
475                 set -x
476         fi
477         
478         # nothing to do
479 }
480
481 # This function installs elk related shell scripts and sql files in the proper locations
482 # under $POLICY_HOME. It also adds the Elk to the PATH based on configuration.
483 #
484 function configure_elk() {
485         if [[ $DEBUG == y ]]; then
486                 echo "-- ${FUNCNAME[0]} $@ --"
487                 set -x
488         fi
489         
490         # nothing to do
491 }
492
493 function install_elk() {
494         if [[ $DEBUG == y ]]; then
495                 echo "-- ${FUNCNAME[0]} $@ --"
496                 set -x
497         fi
498         
499         if [[ -f "${HOME}/.bash_profile" ]]; then
500                 source "${HOME}/.bash_profile"
501         fi
502         
503         if [[ -f "${HOME}/.profile" ]]; then
504                 source "${HOME}/.profile"
505         fi
506         
507         ELK_TARGET_INSTALL_DIR="${POLICY_HOME}"/elk
508         
509         if [[ -d ${ELK_TARGET_INSTALL_DIR} ]]; then
510                 echo "WARNING: ${ELK_TARGET_INSTALL_DIR} exists."
511                 return 1
512         fi
513         
514         /bin/mkdir -p "${ELK_TARGET_INSTALL_DIR}" > /dev/null 2>&1
515         
516         if [[ ! -d ${ELK_TARGET_INSTALL_DIR} ]]; then
517                 echo "WARNING: ${ELK_TARGET_INSTALL_DIR} doesn't exist."
518                 return 1
519         fi
520         
521         cd ${ELK_TARGET_INSTALL_DIR}
522         curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz
523         
524         tar xvzf elasticsearch-5.4.0.tar.gz -C .
525         /bin/rm -fr elasticsearch-5.4.0.tar.gz
526         /bin/mv  ${ELK_TARGET_INSTALL_DIR}/elasticsearch-5.4.0/* .
527         /bin/rm -fr ${ELK_TARGET_INSTALL_DIR}/elasticsearch-5.4.0
528         
529         /bin/cp "${POLICY_HOME}"/install/elk/bin/* "${POLICY_HOME}/bin" 
530         /bin/cp -f "${POLICY_HOME}"/install/elk/config/* "${ELK_TARGET_INSTALL_DIR}/config"
531         /bin/cp -f "${POLICY_HOME}/install/elk/init.d/elkd" "${POLICY_HOME}/etc/init.d/elk"
532         
533         install_prereqs "${COMPONENT_TYPE}.conf"
534         
535         /bin/sed -i -e "s!\${{POLICY_HOME}}!${POLICY_HOME}!g" \
536                 -e "s!\${{FQDN}}!${FQDN}!g" \
537                 -e "s!\${{ELK_JMX_PORT}}!${ELK_JMX_PORT}!g" \
538                 "${ELK_TARGET_INSTALL_DIR}"/config/* "${POLICY_HOME}/etc/init.d/elk" > /dev/null 2>&1
539                 
540
541         list_unexpanded_files ${POLICY_HOME}
542                 
543         return $?
544 }
545
546 # This function installs brmsgw related shell scripts and config files in the proper
547 # locations under $POLICY_HOME. 
548 #
549
550 function install_brmsgw() {
551         if [[ $DEBUG == y ]]; then
552                 echo "-- ${FUNCNAME[0]} $@ --"
553                 set -x
554         fi
555         
556         install_prereqs "${BASE_CONF}"
557
558         if [[ -n ${BUILD_VERSION} ]]; then
559                 echo "Replacing ${BUILD_VERSION} in ${COMPONENT_TYPE}.conf"
560                 sed -i -e "s/^BRMS_DEPENDENCY_VERSION=.*$/BRMS_DEPENDENCY_VERSION=${BUILD_VERSION}/g" "${COMPONENT_TYPE}.conf"
561         fi
562         
563         if ! process_configuration "${COMPONENT_TYPE}.conf"; then
564                 echo "error: aborting ${COMPONENT_TYPE} installation: cannot process configuration ${COMPONENT_TYPE}.conf"
565                 exit 1
566         fi
567         
568         if [ -z "$M2_HOME" ]; then
569                 echo "error: aborting ${COMPONENT_TYPE} installation: M2_HOME must be set in brmsgw.conf"
570                 exit 1
571         fi
572         
573         echo "export M2_HOME=$M2_HOME" >>$POLICY_HOME/etc/profile.d/env.sh
574
575         /bin/cp -f "${POLICY_HOME}/install/servers/brmsgw/init.d/brmsgw" "${POLICY_HOME}/etc/init.d/brmsgw"
576         
577         if ! /bin/mkdir -p "${POLICY_HOME}/servers/${COMPONENT_TYPE}" > /dev/null 2>&1; then    
578                 echo "error: aborting base installation: cannot create ${POLICY_HOME}/servers/${COMPONENT_TYPE}"
579                 exit 1
580         fi      
581
582         /bin/cp -fr "${POLICY_HOME}"/install/servers/${COMPONENT_TYPE}/BRMSGateway.jar "${POLICY_HOME}/servers/${COMPONENT_TYPE}"
583         /bin/cp -fr "${POLICY_HOME}"/install/servers/${COMPONENT_TYPE}/*.properties "${POLICY_HOME}/servers/${COMPONENT_TYPE}"
584         /bin/cp -fr "${POLICY_HOME}"/install/servers/${COMPONENT_TYPE}/config "${POLICY_HOME}/servers/${COMPONENT_TYPE}"
585         /bin/cp -fr "${POLICY_HOME}"/install/servers/${COMPONENT_TYPE}/dependency.json "${POLICY_HOME}/servers/${COMPONENT_TYPE}"
586         
587         /bin/mv $POLICY_HOME/m2 $HOME/.m2
588
589         return 0
590 }
591
592
593 function install_logparser() {
594         if [[ $DEBUG == y ]]; then
595                 echo "-- ${FUNCNAME[0]} $@ --"
596                 set -x
597         fi
598         
599         install_prereqs "${BASE_CONF}"
600
601         if ! process_configuration "${COMPONENT_TYPE}.conf"; then
602                 echo "error: aborting ${COMPONENT_TYPE} installation: cannot process configuration ${COMPONENT_TYPE}.conf"
603                 exit 1
604         fi
605         
606         LP_TARGET_DIR=${POLICY_HOME}/servers/${COMPONENT_TYPE}
607         /bin/mkdir -p ${LP_TARGET_DIR}/bin > /dev/null 2>&1
608         /bin/mkdir -p ${LP_TARGET_DIR}/logs > /dev/null 2>&1
609         
610         # copy binaries, initialization script and configuration
611         /bin/cp "${POLICY_HOME}"/install/servers/common/logparser/bin/*jar "${LP_TARGET_DIR}/bin"
612         /bin/cp "${POLICY_HOME}/install/servers/common/logparser/init.d/logparserd" "${POLICY_HOME}/etc/init.d/${COMPONENT_TYPE}"
613         /bin/cp "${POLICY_HOME}/install/servers/${COMPONENT_TYPE}/bin/parserlog.properties" "${LP_TARGET_DIR}/bin"
614         /bin/cp -fr "${POLICY_HOME}"/install/servers/${COMPONENT_TYPE}/bin/config "${POLICY_HOME}/servers/${COMPONENT_TYPE}/bin"
615         
616 }
617
618 #########################################################################
619 ##
620 ## script execution body
621 ##
622 #########################################################################
623
624
625 OPERATION=none
626 COMPONENT_TYPE=none
627 DEBUG=n
628
629 BASE_CONF=base.conf
630
631 TOMCAT_PACKAGE_NAME=apache-tomcat-8.0.53
632
633 INSTALL_DIR="$(pwd)"
634
635 export POLICY_USER=$(/usr/bin/id -un)
636
637 # command line options parsing
638 until [[ -z "$1" ]]; do
639         case $1 in
640                 -d|--debug)     DEBUG=y
641                                                 set -x
642                                                 ;;
643                 -i|--install)   OPERATION=install
644                                                 shift
645                                                 COMPONENT_TYPE=$1
646                                                 ;;
647                 -c|--configure) OPERATION=configure
648                                                 shift
649                                                 COMPONENT_TYPE=$1
650                                                 ;;
651                 *)                              usage
652                                                 exit 1
653                                                 ;;
654         esac
655         shift
656 done
657
658 # component-type validation
659 case $COMPONENT_TYPE in
660         base)   ;;
661         pdp)    ;;
662         pap)    ;;
663         console)        ;;
664         mysql)  ;;
665         elk)    ;;
666         brmsgw) ;;
667         paplp)  ;;
668         pdplp)  ;;
669         skip)   ;;
670         *)              echo "invalid component type (${COMPONENT_TYPE}): must be in {base|pdp|pap|console|mysql|elk|brmsgw|paplp|pdplp}";
671                         usage
672                         exit 1
673                         ;;
674 esac
675
676 # operation validation
677 case $OPERATION in
678         install|configure)      ;;
679         *)              echo "invalid operation (${OPERATION}): must be in {install|configure}";
680                         usage
681                         exit 1
682                         ;;
683 esac
684
685 if [[ -n ${POLICY_GROUP} ]]; then
686         groups=$(groups)
687         if ! echo ${groups} | grep -qP "\b${POLICY_GROUP}"; then
688                 echo "error: ${POLICY_GROUP} is not a valid group for account ${POLICY_USER}"
689                 exit 1
690         fi
691 fi
692
693 if [[ -z ${POLICY_GROUP} ]]; then
694         numGroups=$(groups | sed "s/^.*: *//g" | wc -w)
695         if [ ${numGroups} -eq 1 ]; then
696                 export POLICY_GROUP=$(groups ${POLICY_USER} | sed "s/^.*: *//g")
697         else
698                 echo "error: ${POLICY_USER} belongs to multiple groups, one group \
699               must be provided for the installation"
700                 usage
701                 exit 1
702         fi
703 fi
704
705 if [[ -z ${POLICY_GROUP} ]]; then
706         echo "error: installation of root section must not provide the \
707               installation group owner argument."
708         usage
709         exit 1
710 fi
711
712 if [[ -z ${POLICY_LOGS} ]]; then
713     echo "POLICY_LOGS environment variable NOT set, default to /var/log/onap"
714     export POLICY_LOGS="/var/log/onap"
715 fi
716
717 FQDN=$(hostname -f 2> /dev/null)
718 if [[ $? != 0 || -z ${FQDN} ]]; then
719         echo "error: cannot determine the FQDN for this host $(hostname)."
720         exit 1
721 fi
722
723 if [[ ${OPERATION} == install ]]; then
724         case $COMPONENT_TYPE in
725                 base)   
726                         install_base
727                         ;;
728                 pdp)    
729                         install_tomcat_component
730                         ;;
731                 pap)
732                         install_tomcat_component
733                         ;;
734                 console)
735                         install_tomcat_component
736                         ;;
737                 mysql)
738                         install_mysql
739                         ;;
740                 elk)
741                         install_elk
742                         ;;              
743                 brmsgw)
744                         install_brmsgw
745                         ;;
746                 paplp|pdplp)
747                         install_logparser
748                         ;;
749                 *)              
750                         echo "invalid component type (${COMPONENT_TYPE}): must be in {base|pdp|pap|console|mysql|elk|brmsgw|paplp|pdplp}";
751                         usage
752                         exit 1
753                         ;;
754         esac
755 fi
756 if [[ ${OPERATION} == configure ]]; then
757
758         install_prereqs "${BASE_CONF}"
759
760         case $COMPONENT_TYPE in
761                 base)   
762                         configure_base
763                         component_preconfigure
764                         configure_keystore
765                         ;;
766                 pdp)    
767                         configure_component "${COMPONENT_TYPE}.conf" "${POLICY_HOME}/servers/${COMPONENT_TYPE}/"
768                         ;;
769                 pap)
770                         configure_component "${COMPONENT_TYPE}.conf" "${POLICY_HOME}/servers/${COMPONENT_TYPE}/"
771                         ;;
772                 console)
773                         configure_component "${COMPONENT_TYPE}.conf" "${POLICY_HOME}/servers/${COMPONENT_TYPE}/"
774                         ;;
775                 mysql)
776                         configure_mysql
777                         ;;
778                 elk)
779                         configure_elk
780                         ;;      
781                 brmsgw)
782                         configure_component "${COMPONENT_TYPE}.conf" "${POLICY_HOME}/servers/${COMPONENT_TYPE}/"
783                         ;;
784                 paplp|pdplp)
785                         configure_component "${COMPONENT_TYPE}.conf" "${POLICY_HOME}/servers/${COMPONENT_TYPE}/"
786                         ;;
787                 *)              
788                         echo "invalid component type (${COMPONENT_TYPE}): must be in {base|pdp|pap|console|mysql|elk|brmsgw|paplp|pdplp}";
789                         usage
790                         exit 1
791                         ;;
792         esac
793 fi
794
795
796 echo -n "Successful ${OPERATION} of ${COMPONENT_TYPE} under ${POLICY_USER}:${POLICY_GROUP} "
797 echo "ownership with umask $(umask)."