Assign image keyname and pubkey at vnf level
[ccsdk/apps.git] / sdnr / wireless-transport / code-Carbon-SR1 / odl
1 #!/bin/bash
2 # (c) 2016 highstreet technologies
3 # History
4 #   2.1 Modify to use config/active directory
5 #   2.2 Correct problems
6 #   2.3 Shift config/active to code/apps/persistentDatabase/activConfig
7 #   2.4 Update to Boron
8 #   2.5 One feature to start apps
9 #   2.6 New variant of install.sh
10 #   2.12 CMDBIN, switch of DLUX for prepare
11 #   2.13 Adapt ODLBIN to odl.sh and buildv2.sh,
12 #        Fix "yes" answer for cluster distremove
13 #        introduce cluster push
14 #        kill command
15 #   2.14 add compile command
16 #   2.15 move im install script to odl.cmd
17 #   2.16 Add $ODL_KARAF_STARTUP_SCRIPT_CLUSTER for cluster command
18 #        cp for filecopy
19 #   2.17 odl.cmd moved back into bin/odl.sh
20 #        Added prepare with copy of etc/preload.cache.schema to cache/schema into startup
21 #        status command delivers version information
22 #   2.18 Add loop for cluster commands
23 #   2.19 Change startup feature
24 #        Add parent version variable ODLPARENT
25 #   2.20 Added parameter KARAFSLEEPFORSTART
26 #   2.21 Typos fixed
27 Version=2.21
28
29 # ----- Constants not depending on variables specified by $CONFIG
30 ODLPARENT="0.5.1-SNAPSHOT"
31 STARTFEATURE="odl-dev-all"
32 KARAFSLEEPFORSTART=30
33 ODLBIN=../bin
34
35 CONFIG=dist.conf
36
37 # ----- Functions to startup Vanilla ODL
38
39 karaf_prepare() {
40     echo "Prepare"
41     echo $ODL_KARAF_HOME
42     ODLCACHESCHEMADIR="$ODL_KARAF_HOME/cache/schema"
43     ETCCACHESCHEMADIR="$ODL_KARAF_HOME/etc/preload.cache.schema"
44
45     if [ -d "$ETCCACHESCHEMADIR" ] ; then
46        echo "Handle YANG preload"
47        if [ -d "$ODLCACHESCHEMADIR" ] ; then
48          echo "Remove all files in YANG cache/schema directory"
49          rm $ODLCACHESCHEMADIR/*
50        else
51          echo "YANG cache/schema directory created"
52          mkdir -p $ODLCACHESCHEMADIR
53        fi
54        cp $ETCCACHESCHEMADIR/* $ODLCACHESCHEMADIR
55     fi
56 }
57
58 # Startup of single node (no clustering)
59 karaf_startup_all() {
60     # Prepare
61     karaf_prepare
62     # Base
63     karafcmd  "feature:install odl-netconf-topology"
64     karafcmd  "feature:install odl-netconf-connector"
65     karafcmd  "feature:install odl-restconf-all"
66     karafcmd  "feature:install odl-mdsal-apidocs"
67
68     # Logs and apps
69     karaf_enable_logs
70     karaf_startup_apps
71 }
72
73 # Startup of clustered nodes (no clustering)
74 karaf_startup_cluster_all() {
75     # Prepare
76     karaf_prepare
77     # Base
78     karafcmd "feature:repo-add mvn:org.opendaylight.mwtn/mwtn-parent/$ODLPARENT/xml/features"
79     karafcmd  "feature:install odl-mwtn-cluster-preparation"
80
81     # Logs and apps
82     karaf_enable_logs DEBUG
83     karaf_startup_apps
84 }
85
86 # Sub functions
87
88 karaf_startup_apps() {
89     # Wireless (mwtn: microwave transport network)
90     karafcmd "feature:repo-add mvn:org.opendaylight.mwtn/mwtn-parent/$ODLPARENT/xml/features"
91     karafcmd "feature:install $STARTFEATURE"
92
93     #If restart is required set RESTART to true
94     # RESTART="true"
95 }
96
97 karaf_enable_logs() {
98     if [ -z "$1" ] ; then
99       LOGLEVEL="INFO"
100     else
101       LOGLEVEL="$1"
102     fi
103     karafcmd "log:set $LOGLEVEL com.highstreet.technologies"
104     karafcmd "log:set $LOGLEVEL org.opendaylight.mwtn"
105     karafcmd "log:set $LOGLEVEL org.opendaylight.netconf"
106 }
107
108 karafcmd() {
109    echo "$@"
110    $ODL_KARAF_HOME/bin/client -u karaf "$@" 2> /dev/null
111    if [ ! -z "$ODL_KARAF_AFTERCMD_DELAY_SECONDS" ] ; then
112      echo "Pause $ODL_KARAF_AFTERCMD_DELAY_SECONDS seconds"
113      sleep "$ODL_KARAF_AFTERCMD_DELAY_SECONDS"
114    fi
115 }
116
117 install_originM2() {
118     #Network apps
119     cp -r ~/.m2/repository/org/opendaylight/mwtn $ODL_KARAF_HOME/system/org/opendaylight
120     cp -r ~/.m2/repository/com/highstreet $ODL_KARAF_HOME/system/com
121     #Additional package for feature odl-ht-info
122     mkdir -p $ODL_KARAF_HOME/system/org/apache/commons/commons-compress
123     cp -r ~/.m2/repository/org/apache/commons/commons-compress/1.14 $ODL_KARAF_HOME/system/org/apache/commons/commons-compress
124 }
125
126 # ----- Functions of script to implement commands
127
128 #check if tool is installed as prereq
129
130 tool_check_installed() {
131    hash $1 2>/dev/null || { echo >&2 "I require $1 but it's not installed.  Please install. Aborting."; exit 1; }
132 }
133
134 #check if karaf instance is running
135 karaf_checkrunning() {
136    NETSTATRESULT=$(netstat -ant | grep 8101)
137    if [ -n "$NETSTATRESULT" ] ; then
138       reason="$NETSTATRESULT"
139       running="true"
140    else
141      running1=$(ps -ef | grep -c karaf.jar)
142      sleep 1
143      running2=$(ps -ef | grep -c karaf.jar)
144
145      reason="psResults: $running1 $running2"
146      if [ "$running1" = "2" -o "$running2" = "2" ] ; then
147         running="true"
148      else
149         running="false"
150    fi
151   fi
152   #echo "Test running: $running indication:$reason"
153 }
154
155 karaf_status() {
156    echo "Version information"
157    cat $ODL_KARAF_HOME/networkAppVersion.txt
158    karaf_checkrunning
159    echo "Karaf is running: $running"
160 }
161
162 karaf_waittillstopped() {
163     KARAF_WAITFORSTOP="5"
164     anzahl=0
165
166     echo -n "Wait for stop "
167
168     karaf_checkrunning
169     while [ "$running" = "true" -a "$anzahl" -lt 30 ]
170     do
171        (( anzahl++ ))
172        # echo "Wait ($anzahl) for karaf stop. Wait $KARAF_WAITFORSTOP seconds"
173        echo -n "."
174        sleep $KARAF_WAITFORSTOP
175        karaf_checkrunning
176     done
177     echo
178
179     if [ "$running" = "true" ]
180     then
181        echo "Exceeded wait counter. Waited $anzahl * $KARAF_WITFORSTOP seconds. Karaf still running. Reason is $reason"
182     else
183        echo "Karaf reached stop status with $reason"
184     fi
185 }
186
187 karaf_startifnotrunning() {
188
189     karaf_checkrunning
190     if [ "$running" = "true" ]
191     then
192        echo "Can not start, karaf is already running. Reason: $reason"
193     else
194        if [ "$1" = "clean" ] ; then
195           $ODL_KARAF_HOME/bin/start clean
196           echo "Started with clean"
197        else
198           $ODL_KARAF_HOME/bin/start
199           echo "Started"
200        fi
201     fi
202 }
203
204
205 # Start all servies
206 # see beginning of this script
207
208 #Param1 Optional Param2 Optional
209 karaf_cleanstart() {
210     echo "start karaf clean with parameters $1 $2"
211     if [ -f "$ODL_KARAF_HOME/etc/opendaylight" ]
212     then
213        echo "Remove old ODL configuration"
214        rm -r $ODL_KARAF_HOME/etc/opendaylight
215     fi
216     echo "Start karaf"
217     $ODL_KARAF_HOME/bin/start clean
218     echo "Wait $KARAFSLEEPFORSTART s till karaf and ssh is in a working level"
219     sleep $KARAFSLEEPFORSTART
220     netstat -ant | grep 8101
221     echo "Provisioning $1"
222     if [ -z "$ODL_KARAF_STARTUP_SCRIPT" ] ; then  #Old scripting names
223       if [ "$1" = "1b" ] ; then
224         karaf_startup_1b
225       else
226         karaf_startup_all
227       fi
228     else #Use startup script according to configuration
229       if [ "$1"="cluster" ] ; then
230          echo "Cluster start command"
231          if [ -z "$ODL_KARAF_STARTUP_SCRIPT_CLUSTER" ] ; then
232             echo "Using normal startup script"
233                 $ODL_KARAF_STARTUP_SCRIPT
234          else
235             echo "Using cluster startup script"
236                 $ODL_KARAF_STARTUP_SCRIPT_CLUSTER
237          fi
238       else
239          $ODL_KARAF_STARTUP_SCRIPT
240       fi
241     fi
242     if [ "$1" = "x" -o "$2" = "x" -o "$RESTART" = "true" ] ; then
243       echo "Executed with restart option .."
244       sleep 5
245       $ODL_KARAF_HOME/bin/stop
246       echo "Re-starting Karaf to finish setup"
247       karaf_waittillstopped
248       if [ "$1" = "d" -o "$2" = "d" ] ; then
249         rp=$ODL_KARAF_HOME/data/log
250         echo "Remove all logs from $rp"
251         rm "$rp"/*
252       fi
253       karaf_startifnotrunning
254     fi
255     echo "Ready"
256 }
257
258 # Install from dir $1 all subs with mask $2.
259 # Example:   install_originM2Range "com/highstreet/technologies/solutions" "sdn4*"
260 install_originM2Range() {
261     mkdir -p $ODL_KARAF_HOME/system/$1
262     cp -R $HOME/.m2/repository/$1/$2 $ODL_KARAF_HOME/system/$1
263 }
264
265 install_tarFile() {
266    if [ ! -e "$1" ] ; then
267      echo "No tar file $1"
268      exit 4
269    else
270      echo "Do install file $1 to karaf container"
271      tar -xf "$1" -C "$ODL_KARAF_HOME"
272      echo "Done"
273    fi
274 }
275
276 install_originBuild() {
277
278    if [ -z "$ODL_BUILD_HOME" ] ; then
279      echo "No ODL_BUILD_HOME defined. Terminate" ; exit 2
280    fi
281    echo "Build home at $ODL_BUILD_HOME"
282    if [ ! -e $ODL_BUILD_HOME/builds/version.txt ] ; then
283      echo "No builds available Terminate." ; exit 2
284    fi
285
286    source $ODL_BUILD_HOME/builds/version.txt
287    echo "Install Version $LASTBUILDTAR"
288    tar -xf "$ODL_BUILD_HOME/builds/$LASTBUILDTAR" -C "$ODL_KARAF_HOME"
289    echo "Version info"
290    cat $ODL_KARAF_HOME/networkAppVersion.txt
291 }
292
293 clean_repository() {
294    echo Clean repository .m2 and karaf/system
295    rm -r ~/.m2/repository/org/opendaylight/mwtn
296    rm -r ~/.m2/repository/org/opendaylight/apigateway
297    rm -r ~/.m2/repository/cn/com/zte
298    rm -r ~/.m2/repository/com/hcl
299    rm -r ~/.m2/repository/com/highstreet
300    rm -r $ODL_KARAF_HOME/system/com/highstreet
301    rm -r $ODL_KARAF_HOME/system/com/hcl
302    rm -r $ODL_KARAF_HOME/system/cn/com/zte
303    rm -r $ODL_KARAF_HOME/system/org/opendaylight/mwtn
304    rm -r $ODL_KARAF_HOME/system/org/opendaylight/apigateway
305 }
306
307 # Parameter1 nodlux
308 prepare() {
309     #tool_check_installed unzip
310     #tool_check_installed sshpass
311     KARAFDISTBASENAME=$ODL_KARAF_DIST
312     KARAFGZ=$ODL_KARAF_DISTGZ
313     NODLUX="nodlux"
314
315     if [ ! -f "$KARAFGZ" ] ; then
316       echo "ERROR: Could not find tar file with karaf distribution: $KARAFGZ"
317     else
318       if [ "$1" != "$NODLUX" -a  ! -f "$TARFILE_DLUXLOADER" ] ; then
319          echo "WARN: Could not find tar with DLUX patch $TARFILE_DLUXLOADER. .. proceeding without Patching"
320       fi
321       if [ -d "$ODL_KARAF_HOME" ] ; then
322          echo "Found existing Karaf distribution at $ODL_KARAF_HOME. Can not proceed. Please remove or rename."
323       else
324          echo "Start installation $KARAFDISTBASENAME"
325          echo "Unpack karaf distribution"
326          cd $HOME
327          cd Downloads
328          tar -xzf $KARAFDISTBASENAME".tar.gz"
329          mv "$KARAFDISTBASENAME" "$ODL_KARAF_HOME"
330          cd "$here"
331
332          if ! [ -d "$ODL_KARAF_HOME" ] ; then
333             echo "ERROR: Could not find ODL_KARAF_HOME. Can not proceed if not existing."
334          else
335             echo "READY, create link dist"
336             ln -s $ODL_KARAF_HOME dist
337             if [ "$1" != "$NODLUX" ] ; then
338                echo "Install DLUX patch"
339                installDluxPatch tar
340             fi
341          fi
342       fi
343     fi
344 }
345
346 show_env() {
347     echo "ENV settings:"
348     echo "   ODL_KARAF_DIST: $ODL_KARAF_DIST"
349     echo "   ODL_KARAF_HOME: $ODL_KARAF_HOME"
350     echo "   JAVA_HOME: $JAVA_HOME"
351 }
352
353 #Param1: Mandatory Param2:optional Param3:optional
354 do_install() {
355
356     echo "Install from $1 to Karaf"
357         if [ ! -d "$ODL_KARAF_HOME" ] ; then
358                 echo "ERROR: Karaf not installed at $ODL_KARAF_HOME. Stop execution."
359                 exit 2
360         fi
361     sleep 2
362     karaf_checkrunning
363     if [ "$running" = "true" ]
364     then
365        echo "karaf instance is running. Stop first. Indication '$reason'"
366     else
367        echo "Start install to karaf"
368        case "$1" in
369           build)
370              install_originBuild
371              karaf_cleanstart $2 $3
372              ;;
373           m2)
374              if [ "$(type -t install_originM2)" == "function" ] ; then
375                 install_originM2
376                 karaf_cleanstart $2 $3
377              else
378                 echo "Error: Install function not defined. Exit."
379                  fi
380              ;;
381           tar)
382              install_tarFile $2
383              shift
384              karaf_cleanstart $3 $4
385              ;;
386           *)
387              echo "Script error: missing installation command"
388              ;;
389        esac
390     fi
391 }
392
393 karaf_distremove() {
394     echo "Remove karaf installation"
395     karaf_checkrunning
396     if [ "$running" = "true" ]
397     then
398        echo "karaf instance is running. Stop first"
399     else
400        if [ "$1" = "force" ] ; then
401           answer=yes
402        else
403           read -p "Delete karaf installation. if you are sure type yes<enter> " answer
404        fi
405        if [ "$answer" == "yes" ] ; then
406           echo "Remove ..."
407           rm -r $ODL_KARAF_HOME
408           echo "Remove link"
409           rm dist
410           echo "removed"
411        else
412           echo "Did nothing"
413        fi
414     fi
415 }
416
417 # Par1 Install command
418 installDluxPatch() {
419    #Default is the tar file
420    DLUXAPPHOME="apps/dlux"
421    TARGETDIR="$DLUXAPPHOME/loader/impl/target"
422    LOADERREPO="org/opendaylight/dlux"
423    LOADERNAME="loader.implementation"
424
425    case "$1" in
426      m2)
427        if [ -d $TARGETDIR ] ; then
428          echo "Copy DLUX Patch from repository"
429          cp -r "$HOME/.m2/repository/$LOADERREPO/loader.implementation" "$ODL_KARAF_HOME/system/$LOADERREPO"
430        else
431          echo "ERROR No compiled DLUX Version or tarfile for repositiory found. "
432          echo " - Please compile dlux."
433          echo " - Install DLUX Patch with $ODL/odl.sh dlux m2"
434        fi
435      ;;
436      tar)
437        if [ -f "$TARFILE_DLUXLOADER" ] ; then
438          echo "Install DLUX Patch from existing tar"
439          tar -xzf "$TARFILE_DLUXLOADER" -C "$ODL_KARAF_HOME/system"
440          echo "Done"
441        else
442          echo "DLUX tar file not found: $TARFILE_DLUXLOADER"
443        fi
444      ;;
445      create)
446        echo "Create tar file"
447        if [ -d $TARGETDIR ] ; then
448          HERE=$(pwd)
449
450          stringa=($(cd $TARGETDIR ; ls $LOADERNAME*jar))
451          if [[ ${stringa[0]} =~ $LOADERNAME-(.*).jar ]] ; then
452                 version="${BASH_REMATCH[1]}"
453             echo $version
454             M2INPUTNAME="$LOADERREPO/$LOADERNAME/$version"
455             TAROUTPUTNAME="$HERE/$DLUXAPPHOME/$ODL_KARAF_DIST.dluxloader.tar.gz"
456             echo "Creating file: $TAROUTPUTNAME"
457             echo "Reading from: $M2INPUTNAME"
458             cd "$HOME/.m2/repository"
459             tar -czf "$TAROUTPUTNAME" "$M2INPUTNAME"
460             echo Done
461          fi
462          cd $HERE
463        else
464          echo "ERROR No compiled DLUX Version for repositiory found. "
465          echo " - Please compile dlux."
466        fi
467      ;;
468      *)
469       echo "use $ODLBIN/odl.sh dlux [m2|tar|create] to install from m2-repository or install tar file or create tar file"
470      ;;
471    esac
472 }
473
474 # -----------------------------------------------------
475 # -----  Cluster commands
476
477 # P1: Passwd P2: Username P3:ServerIP P4, P5: Remote commands
478 karafclustercmd() {
479   rcmd="cd $here ; $ODLBIN/odl.sh $4 $5"
480   cmd="sshpass -p$1 ssh -o StrictHostKeyChecking=no $2@$3 $rcmd"
481   echo "--------- Begin at node: $3 -----------"
482   $cmd
483   echo "--------- Ende at node: $3 ------------"
484 }
485
486 # P1: Passwd P2: Username P3:ServerIP P4, P5: Remote commands
487 karafclustercmdnohup() {
488   #Template: nohup myprogram > foo.out 2> foo.err < /dev/null &
489   echo " Start install for node $3"
490   rcmd="cd $here ; nohup $ODLBIN/odl.sh $4 $5 &> odl.log < /dev/null &"
491   cmd="sshpass -p$1 ssh -o StrictHostKeyChecking=no $2@$3 $rcmd"
492   $cmd
493   echo "Command executed in background. Result see odl.log."
494 }
495
496 karafclustercreate() {
497
498   if [ -z "$1" ] ; then
499     read -p "Please enter password for user $USER: " -r -s USERPWD
500     echo
501   fi
502
503   for i in ${!ODL_CLUSTER_ARRAY[@]} ; do
504      rcmd="cd $here ; $ODL_KARAF_HOME/bin/configure_cluster.sh $((i+1)) ${ODL_CLUSTER_ARRAY[@]}"
505      cmd="sshpass -p$USERPWD ssh -o StrictHostKeyChecking=no $USER@${ODL_CLUSTER_ARRAY[$i]} $rcmd"
506      echo "--------- Start Node: ${ODL_CLUSTER_ARRAY[$i]} ----------- CMD: $rcmd"
507      $cmd
508      echo "--------- Ende Node: ${ODL_CLUSTER_ARRAY[$i]}------------"
509   done
510
511 }
512
513 pause() {
514       read -p "($1) Hit enter ..." -r -s TMP
515       echo
516 }
517
518 #Destination is $ODL_BUILD_HOME
519 #Source is $ODL_CLUSTER_REPO
520 pushbuildinfo() {
521   if [ -z $ODL_CLUSTER_REPO ] ; then
522     echo "No cluster repository specified by ODL_CLUSTER_REPO. Can not proceed."
523   else
524     if [ -z "$ODL_BUILD_HOME" ] ; then
525       echo "No ODL_BUILD_HOME defined. Terminate" ; exit 2
526     fi
527     echo "Build home at $ODL_CLUSTER_REPO"
528     ODL_VERSION_FILE="$ODL_CLUSTER_REPO/builds/version.txt"
529     if [ ! -e $ODL_VERSION_FILE ] ; then
530       echo "No builds available Terminate." ; exit 2
531     fi
532
533     #Read version information
534     source $ODL_VERSION_FILE
535     echo "Prepare cluster with $BUILDTAG and prepare configuration files."
536     echo "Destination repository: $ODL_BUILD_HOME Source repository: $ODL_CLUSTER_REPO"
537     if [ -z "$1" ] ; then
538       read -p "Please enter password for user $USER: " -r -s USERPWD
539       echo
540     fi
541     for i in ${ODL_CLUSTER_ARRAY[@]} ; do
542         echo "Copy to $i:$ODL_BUILD_HOME"
543                 sshpass -p$USERPWD ssh -o StrictHostKeyChecking=no $USER@$i "mkdir -p $ODL_BUILD_HOME/builds"
544         sshpass -p$USERPWD scp "$ODL_CLUSTER_REPO/builds/$LASTBUILDTAR" "$i:$ODL_BUILD_HOME/builds"
545         sshpass -p$USERPWD scp "$ODL_VERSION_FILE" "$i:$ODL_BUILD_HOME/builds"
546         sshpass -p$USERPWD scp -r "$ODL_CLUSTER_REPO/bin" "$i:$ODL_BUILD_HOME"
547                 sshpass -p$USERPWD ssh -o StrictHostKeyChecking=no $USER@$i "mkdir -p $here"
548                 sshpass -p$USERPWD scp "$here/$CONFIG" "$i:$here"
549                 # sshpass -p$USERPWD scp "$here/$ODLCMD" "$i:$here"
550                 sshpass -p$USERPWD ssh -o StrictHostKeyChecking=no $USER@$i "cd $here ; chmod 755 $ODL_BUILD_HOME/bin/odl.sh ; if [ ! -e odl ] ; then ln -s $ODL_BUILD_HOME/bin/odl.sh odl ; fi"
551     done
552   fi
553 }
554
555 #Destination is $here/dist
556 #Parameter $1 is sourcedirectory
557 clusterfilecopy() {
558     if [ -z "$1" ] ; then
559       echo "ERROR: Need a path as parameter"
560     else
561       echo "Copy all files from directory $1/* to $here/dist/$1 on each node."
562       read -p "Please enter password for user $USER: " -r -s USERPWD
563       echo
564       for i in ${ODL_CLUSTER_ARRAY[@]} ; do
565           destpath="$i:$here/dist"
566           echo "Copy $here/$1 to $destpath"
567           sshpass -p$USERPWD scp -r "$1" "$destpath"
568       done
569         fi
570 }
571
572 karafclusterinfo() {
573   echo "Using user $USER"
574   echo "Cluster: ${ODL_CLUSTER_ARRAY[@]}"
575 }
576
577 karafcluster() {
578
579  CLUSTERCLI="TRUE"
580
581  while [ $CLUSTERCLI = "TRUE" ] ; do
582
583    if [ -z "$ODL_CLUSTER_ARRAY" ] ; then
584       echo "No cluster in '$ODL_CLUSTER_ARRAY' specified"
585    else
586       tool_check_installed sshpass
587       echo "Cluster: ${ODL_CLUSTER_ARRAY[@]}"
588
589       if [ -z "$1" ] ; then
590          read -p "cluster cmd> " answer
591          set -- $answer
592       else
593          CLUSTERCLI="FALSE"
594       fi
595
596       case "$1" in
597         cp)
598            clusterfilecopy $2
599            ;;
600         create)
601            karafclustercreate
602            ;;
603         distremove)
604            read -p "Confirm karaf cluster installation deletion. If you are sure type yes<enter> " answer
605            if [ "$answer" = "yes" ] ; then
606               echo "Change to forced mode."
607               set -- distremove force
608               function="karafclustercmd"
609            else
610                   echo "Terminated by user"
611            fi
612            ;;
613         "" | exit)
614            CLUSTERCLI="FALSE"
615            function=""
616            ;;
617         info)
618            karafclusterinfo
619            ;;
620         im* | ib*)
621            echo "Started on each node in background. See odl.log"
622            function="karafclustercmdnohup"
623            set -- $1 cluster
624            ;;
625         push)
626            pushbuildinfo
627            ;;
628         *)
629            function="karafclustercmd"
630            ;;
631       esac
632
633       if [ ! -z "$function" ] ; then
634         read -p "Please enter password for user $USER: " -r -s USERPWD
635         echo
636         for i in "${ODL_CLUSTER_ARRAY[@]}" ; do
637           $function $USERPWD $USER $i $1 $2
638         done
639         if [ "$1" = "prepare" ] ; then
640            read -p "Proceed with create (y/n): " answer
641            case "$answer" in
642                   y*) karafclustercreate $USERPWD
643                   ;;
644            esac
645         fi
646       fi
647    fi
648    if [ $CLUSTERCLI = "TRUE" ] ; then
649          set -- ""
650    fi
651
652 done
653 }
654
655 # -----------------------------------------------------
656 # ----- Script body
657
658 echo "AppToODL installer $Version"
659
660 if [ -f $CONFIG ] ; then
661    echo "Load configuration"
662    source "$CONFIG"
663 else
664    script_command="Error: No $CONFIG file .. can not proceed. Create this file and specify the right versions:"
665    echo $script_command
666    echo 'ODL_KARAF_DIST="distribution-karaf-0.6.1-Carbon"'
667    echo 'ODL_KARAF_HOME=$HOME/odl/$ODL_KARAF_DIST'
668    echo 'ODL_KARAF_DISTGZ="$HOME/Downloads/"$ODL_KARAF_DIST".tar.gz"'
669    echo 'ODL_BUILD_HOME="$HOME/build/acme"'
670    echo 'ODL_KARAF_STARTUP_SCRIPT="karaf_startup_all"'
671    echo 'export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"'
672    echo
673    echo "Example for downloading the distribution:"
674    echo 'wget https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.6.1-Carbon/distribution-karaf-0.6.1-Carbon.tar.gz'
675
676    exit 1
677 fi
678 #Since 2.17 moved back to script
679 #if [ -f $ODLCMD ] ; then
680 #   source $ODLCMD
681 #else
682 #   script_command="Error: No $ODLCMD file .. can not proceed"
683 #   echo $script_command
684 #   exit 1
685 #fi
686
687 TARFILE_DLUXLOADER="apps/dlux/$ODL_KARAF_DIST.dluxloader.tar.gz"
688 echo "Karaf home: $ODL_KARAF_HOME"
689
690 here=$(pwd)
691 echo "Executed here: $here"
692 echo ""
693
694 if [ -z "$ODL_KARAF_HOME" -o -z "$ODL_KARAF_DIST" ]
695 then
696   echo "Missing ENV setting ODL_KARAF_HOME or ODL_KARAF_DIST. Can not execute."
697   show_env
698   script_command="Error Incomplete ENV"
699 else
700   script_command="ok"
701 fi
702
703 #echo "Command: $script_command"
704
705 if [ "$script_command" = "ok" ] ; then
706
707 case "$1" in
708
709   build)
710     if [ -z "$ODL_BUILD_HOME" ] ; then
711       echo "No build configuration found. Specify '$ODL_BUILD_HOME'."
712     else
713       echo "Enter build subsystem at location $ODL_BUILD_HOME"
714       shift
715       $ODLBIN/buildv2.sh $@
716     fi
717     ;;
718
719   cli)
720     shift
721     karafcmd $@
722     ;;
723
724   clu*)
725     shift
726     karafcluster $@
727     ;;
728
729   dlux)
730     echo "Install DLUX Patch"
731     shift
732     installDluxPatch $@
733     ;;
734
735   env)
736     show_env
737     ;;
738   kill)
739     echo "Kill ODL instance"
740     pkill -e -f "Dkaraf.home=.home.herbert.odl.$ODL_KARAF_DIST"
741     ;;
742   test)
743     echo "Test a little bit"
744     here=$(pwd)
745     echo "Path: $here"
746     cd $HOME
747     echo "List1"
748     ls
749     cd $here
750     echo "List2"
751     ls
752
753     karaf_prepare
754     ;;
755   v)
756     echo "List app versions"
757     mvn --version
758     git --version
759     echo "node: " ; node --version
760     echo "npm: " ; npm --version
761     echo "jq: " ; jq --version
762     echo "bower" ; bower --version
763     ;;
764   restart)
765     echo "restart command"
766     karaf_checkrunning
767     if [ "$running" = "true" ] ; then
768        $ODL_KARAF_HOME/bin/stop
769        karaf_waittillstopped
770        karaf_startifnotrunning $2
771     else
772        echo "Already stopped .. do start"
773        karaf_startifnotrunning $2
774     fi
775     ;;
776
777   stop)
778     echo "stop command"
779     karaf_checkrunning
780     if [ "$running" = "true" ] ; then
781        $ODL_KARAF_HOME/bin/stop
782        karaf_waittillstopped
783     else
784        echo "Already stopped"
785     fi
786     ;;
787   start)
788     echo "start command"
789     karaf_startifnotrunning $2
790     ;;
791   bower)
792     echo "Install bower"
793     cd ./ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/
794     ./bowerInstall.sh
795     cd $here
796     ;;
797
798   dbclean)
799     database_cleansetup
800     ;;
801
802   untar)
803     echo "Extract karaf"
804     prepare nodlux
805     ;;
806
807   prepare)
808     echo "Prepare prepare"
809     prepare $2
810     ;;
811
812   a)
813     echo "Compile all"
814     mvn clean install -DskipTests
815     if [[ $? -ne 0 ]] ; then
816        echo "could not complete"
817     else
818        do_install m2
819     fi
820     ;;
821
822   d)
823     app="devicemanager"
824     echo "Compile $app"
825     cd apps/$app
826     mvn clean install -DskipTests
827     rc=$?
828     cd $here
829     if [[ $rc -ne 0 ]] ; then
830        echo "could not complete"
831     else
832        do_install m2 d
833     fi
834     ;;
835
836   distremove)
837     karaf_distremove $2
838     ;;
839
840   ib)
841     do_install build $2
842     ;;
843
844   imd)
845     do_install m2 d $2
846     ;;
847
848   im)
849     do_install m2 $2
850     ;;
851
852   it)
853     do_install tar $2
854     ;;
855
856   karafclean)
857     karaf_cleanstart
858     ;;
859
860   log)
861    vi dist/data/log/karaf.log
862    ;;
863
864   migrate)
865     echo "Migrate index$2 to index$3"
866     elasticdump --input=http://localhost:9200/sdnevents_$2 --output=http://localhost:9200/sdnevents_$3 --type=data --limit=100000
867     ;;
868   mvn)
869     echo "try to compile $2"
870     here=`pwd`
871     cd "$2"
872     mvn clean install -DskipTests
873     cd "$here"
874     ;;
875   status)
876     karaf_status
877     ;;
878
879   debug)
880     karaf_enable_logs $2
881     ;;
882
883   *)
884     if [ ! "$1" == "help" ] ; then
885       echo "ERROR Unknown command $1"
886     fi
887     echo "Commands:"
888     echo " a           for build all and install from M2"
889     echo " build       enter build subsystem"
890     echo "                build, deliver"
891     echo " bower       for install bower"
892     echo " cli         start karaf command line"
893     echo " cluster xx  cluster commands and all other commands"
894     echo "                status, ib, im, stop, push, distremove, cp"
895     echo " env         List environment variables"
896     echo " d           for devicemanager and install from M2"
897     echo " dbclean     clean db and load with initial data"
898     echo " debug       activate debug for netconf and mwtn"
899     echo " distremove  remove existing karaf distribution"
900     echo " dlux        install DLUX patch. Use dlux [m2|tar|create] to install from m2-repository or install tar file or create tar file"
901     echo " help        List this help"
902     echo " ib          for install from Build-directory"
903     echo " im          for install from M2-directory"
904     echo " imd         for install from M2-directory. Delete logs before start command"
905     echo " it fn       install tar file to container"
906     echo " karafclean  start clean and install apps on karaf"
907     echo " kill        hard termination of ODL instance"
908     echo " log         vi karaf.log"
909     echo " migrate     migrate Param1 Param2 Migrate on localhost"
910     echo " mvn [folder]  compile folder with maven with parameter -DskipTests"
911     echo " prepare [nodlux]  to install and prepare a karaf. tar version expected in Downloads."
912     echo " untar       to extract karaf."
913     echo " test        do some testing"
914     echo " start       start karaf"
915     echo " status      display karaf status"
916     echo " stop        stop and wait karaf"
917     echo " restart     stop and start karaf"
918     echo " repoclean   clean the repositories"
919     echo " v           get Versions"
920     ;;
921 esac
922 fi
923
924 unset install_err
925