- if [ -n "$INSTALL_PERFMON" ]; then
- echo -e "\nUninstalling OSM Performance Monitoring stack"
- remove_stack osm_metrics
- sg docker -c "docker image rm osm/kafka-exporter"
- $WORKDIR_SUDO rm -rf $OSM_DOCKER_WORK_DIR/osm_metrics
- fi
- else
- echo -e "\nUninstalling OSM"
- remove_stack $OSM_STACK_NAME
- remove_stack osm_elk
- remove_stack osm_metrics
- echo "Now osm docker images and volumes will be deleted"
- newgrp docker << EONG
- docker image rm osm/ro
- docker image rm osm/lcm
- docker image rm osm/light-ui
- docker image rm osm/nbi
- docker image rm osm/mon
- docker image rm osm/pm
- docker image rm osm/kafka-exporter
-EONG
- remove_volumes $OSM_STACK_NAME
- remove_network $OSM_STACK_NAME
- echo "Removing $OSM_DOCKER_WORK_DIR"
- $WORKDIR_SUDO rm -rf $OSM_DOCKER_WORK_DIR
- sg lxd -c "juju destroy-controller --yes $OSM_STACK_NAME"
- fi
- echo "Some docker images will be kept in case they are used by other docker stacks"
- echo "To remove them, just run 'docker image prune' in a terminal"
- return 0
-}
-
-#Configure NAT rules, based on the current IP addresses of containers
-function nat(){
- echo -e "\nChecking required packages: iptables-persistent"
- dpkg -l iptables-persistent &>/dev/null || ! echo -e " Not installed.\nInstalling iptables-persistent requires root privileges" || \
- sudo DEBIAN_FRONTEND=noninteractive apt-get -yq install iptables-persistent
- echo -e "\nConfiguring NAT rules"
- echo -e " Required root privileges"
- sudo $OSM_DEVOPS/installers/nat_osm
-}
-
-function FATAL(){
- echo "FATAL error: Cannot install OSM due to \"$1\""
- exit 1
-}
-
-#Update RO, SO and UI:
-function update(){
- echo -e "\nUpdating components"
-
- echo -e " Updating RO"
- CONTAINER="RO"
- MDG="RO"
- INSTALL_FOLDER="/opt/openmano"
- echo -e " Fetching the repo"
- lxc exec $CONTAINER -- git -C $INSTALL_FOLDER fetch --all
- BRANCH=""
- BRANCH=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status -sb | head -n1 | sed -n 's/^## \(.*\).*/\1/p'|awk '{print $1}' |sed 's/\(.*\)\.\.\..*/\1/'`
- [ -z "$BRANCH" ] && FATAL "Could not find the current branch in use in the '$MDG'"
- CURRENT=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status |head -n1`
- CURRENT_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-parse HEAD`
- echo " FROM: $CURRENT ($CURRENT_COMMIT_ID)"
- # COMMIT_ID either was previously set with -b option, or is an empty string
- CHECKOUT_ID=$COMMIT_ID
- [ -z "$CHECKOUT_ID" ] && [ "$BRANCH" == "HEAD" ] && CHECKOUT_ID="tags/$LATEST_STABLE_DEVOPS"
- [ -z "$CHECKOUT_ID" ] && [ "$BRANCH" != "HEAD" ] && CHECKOUT_ID="$BRANCH"
- if [[ $CHECKOUT_ID == "tags/"* ]]; then
- REMOTE_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-list -n 1 $CHECKOUT_ID`
- else
- REMOTE_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-parse origin/$CHECKOUT_ID`
- fi
- echo " TO: $CHECKOUT_ID ($REMOTE_COMMIT_ID)"
- if [ "$CURRENT_COMMIT_ID" == "$REMOTE_COMMIT_ID" ]; then
- echo " Nothing to be done."
- else
- echo " Update required."
- lxc exec $CONTAINER -- service osm-ro stop
- lxc exec $CONTAINER -- git -C /opt/openmano stash
- lxc exec $CONTAINER -- git -C /opt/openmano pull --rebase
- lxc exec $CONTAINER -- git -C /opt/openmano checkout $CHECKOUT_ID
- lxc exec $CONTAINER -- git -C /opt/openmano stash pop
- lxc exec $CONTAINER -- /opt/openmano/database_utils/migrate_mano_db.sh
- lxc exec $CONTAINER -- service osm-ro start
- fi
- echo
-
- echo -e " Updating SO and UI"
- CONTAINER="SO-ub"
- MDG="SO"
- INSTALL_FOLDER="" # To be filled in
- echo -e " Fetching the repo"
- lxc exec $CONTAINER -- git -C $INSTALL_FOLDER fetch --all
- BRANCH=""
- BRANCH=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status -sb | head -n1 | sed -n 's/^## \(.*\).*/\1/p'|awk '{print $1}' |sed 's/\(.*\)\.\.\..*/\1/'`
- [ -z "$BRANCH" ] && FATAL "Could not find the current branch in use in the '$MDG'"
- CURRENT=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status |head -n1`
- CURRENT_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-parse HEAD`
- echo " FROM: $CURRENT ($CURRENT_COMMIT_ID)"
- # COMMIT_ID either was previously set with -b option, or is an empty string
- CHECKOUT_ID=$COMMIT_ID
- [ -z "$CHECKOUT_ID" ] && [ "$BRANCH" == "HEAD" ] && CHECKOUT_ID="tags/$LATEST_STABLE_DEVOPS"
- [ -z "$CHECKOUT_ID" ] && [ "$BRANCH" != "HEAD" ] && CHECKOUT_ID="$BRANCH"
- if [[ $CHECKOUT_ID == "tags/"* ]]; then
- REMOTE_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-list -n 1 $CHECKOUT_ID`
- else
- REMOTE_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-parse origin/$CHECKOUT_ID`
- fi
- echo " TO: $CHECKOUT_ID ($REMOTE_COMMIT_ID)"
- if [ "$CURRENT_COMMIT_ID" == "$REMOTE_COMMIT_ID" ]; then
- echo " Nothing to be done."
- else
- echo " Update required."
- # Instructions to be added
- # lxc exec SO-ub -- ...
- fi
- echo
- echo -e "Updating MON Container"
- CONTAINER="MON"
- MDG="MON"
- INSTALL_FOLDER="/root/MON"
- echo -e " Fetching the repo"
- lxc exec $CONTAINER -- git -C $INSTALL_FOLDER fetch --all
- BRANCH=""
- BRANCH=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status -sb | head -n1 | sed -n 's/^## \(.*\).*/\1/p'|awk '{print $1}' |sed 's/\(.*\)\.\.\..*/\1/'`
- [ -z "$BRANCH" ] && FATAL "Could not find the current branch in use in the '$MDG'"
- CURRENT=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER status |head -n1`
- CURRENT_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-parse HEAD`
- echo " FROM: $CURRENT ($CURRENT_COMMIT_ID)"
- # COMMIT_ID either was previously set with -b option, or is an empty string
- CHECKOUT_ID=$COMMIT_ID
- [ -z "$CHECKOUT_ID" ] && [ "$BRANCH" == "HEAD" ] && CHECKOUT_ID="tags/$LATEST_STABLE_DEVOPS"
- [ -z "$CHECKOUT_ID" ] && [ "$BRANCH" != "HEAD" ] && CHECKOUT_ID="$BRANCH"
- if [[ $CHECKOUT_ID == "tags/"* ]]; then
- REMOTE_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-list -n 1 $CHECKOUT_ID`
- else
- REMOTE_COMMIT_ID=`lxc exec $CONTAINER -- git -C $INSTALL_FOLDER rev-parse origin/$CHECKOUT_ID`
- fi
- echo " TO: $CHECKOUT_ID ($REMOTE_COMMIT_ID)"
- if [ "$CURRENT_COMMIT_ID" == "$REMOTE_COMMIT_ID" ]; then
- echo " Nothing to be done."
- else
- echo " Update required."
- fi
- echo
-}
-
-function so_is_up() {
- if [ -n "$1" ]; then
- SO_IP=$1
- else
- SO_IP=`lxc list SO-ub -c 4|grep eth0 |awk '{print $2}'`
- fi
- time=0
- step=5
- timelength=300
- while [ $time -le $timelength ]
- do
- if [[ `curl -k -X GET https://$SO_IP:8008/api/operational/vcs/info \
- -H 'accept: application/vnd.yang.data+json' \
- -H 'authorization: Basic YWRtaW46YWRtaW4=' \
- -H 'cache-control: no-cache' 2> /dev/null | jq '.[].components.component_info[] | select(.component_name=="RW.Restconf")' 2>/dev/null | grep "RUNNING" | wc -l` -eq 1 ]]
- then
- echo "RW.Restconf running....SO is up"
- return 0
- fi
-
- sleep $step
- echo -n "."
- time=$((time+step))
- done
-
- FATAL "OSM Failed to startup. SO failed to startup"
-}
-
-function vca_is_up() {
- if [[ `lxc exec VCA -- juju status | grep "osm" | wc -l` -eq 1 ]]; then
- echo "VCA is up and running"
- return 0
- fi
-
- FATAL "OSM Failed to startup. VCA failed to startup"
-}
-
-function mon_is_up() {
- if [[ `curl http://$RO_IP:9090/openmano/ | grep "works" | wc -l` -eq 1 ]]; then
- echo "MON is up and running"
- return 0
- fi
-
- FATAL "OSM Failed to startup. MON failed to startup"
-}
-
-function ro_is_up() {
- if [ -n "$1" ]; then
- RO_IP=$1
- else
- RO_IP=`lxc list RO -c 4|grep eth0 |awk '{print $2}'`
- fi
- time=0
- step=2
- timelength=20
- while [ $time -le $timelength ]; do
- if [[ `curl http://$RO_IP:9090/openmano/ | grep "works" | wc -l` -eq 1 ]]; then
- echo "RO is up and running"
- return 0
- fi
- sleep $step
- echo -n "."
- time=$((time+step))