bug 397 Preserve env running install-openmano.sh
[osm/RO.git] / scripts / install-openmano.sh
index 0110d75..7e082fb 100755 (executable)
@@ -26,7 +26,7 @@
 #Ask for database user and password if not provided
 
 function usage(){
 #Ask for database user and password if not provided
 
 function usage(){
-    echo -e "usage: sudo $0 [OPTIONS]"
+    echo -e "usage: sudo -E $0 [OPTIONS]"
     echo -e "Install last stable source code in ./openmano and the needed packages"
     echo -e "On a Ubuntu 16.04 it configures openmano as a service"
     echo -e "  OPTIONS"
     echo -e "Install last stable source code in ./openmano and the needed packages"
     echo -e "On a Ubuntu 16.04 it configures openmano as a service"
     echo -e "  OPTIONS"
@@ -77,6 +77,7 @@ function ask_user(){
 
 GIT_URL=https://osm.etsi.org/gerrit/osm/RO.git
 GIT_OVIM_URL=https://osm.etsi.org/gerrit/osm/openvim.git
 
 GIT_URL=https://osm.etsi.org/gerrit/osm/RO.git
 GIT_OVIM_URL=https://osm.etsi.org/gerrit/osm/openvim.git
+GIT_OSMIM_URL=https://osm.etsi.org/gerrit/osm/IM.git
 DBUSER="root"
 DBPASSWD=""
 DBPASSWD_PARAM=""
 DBUSER="root"
 DBPASSWD=""
 DBPASSWD_PARAM=""
@@ -216,10 +217,10 @@ then
     [ "$_DISTRO" == "Ubuntu" ] && apt-get update -y
 
     [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && yum check-update -y
     [ "$_DISTRO" == "Ubuntu" ] && apt-get update -y
 
     [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && yum check-update -y
-    [ "$_DISTRO" == "CentOS" ] && sudo yum install -y epel-release
+    [ "$_DISTRO" == "CentOS" ] && yum install -y epel-release
     [ "$_DISTRO" == "Red" ] && wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm \
     [ "$_DISTRO" == "Red" ] && wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm \
-        && sudo rpm -ivh epel-release-7-5.noarch.rpm && sudo yum install -y epel-release && rm -f epel-release-7-5.noarch.rpm
-    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && sudo yum repolist
+        && rpm -ivh epel-release-7-5.noarch.rpm && yum install -y epel-release && rm -f epel-release-7-5.noarch.rpm
+    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && yum repolist
 
     echo -e "\n"\
         "#################################################################\n"\
 
     echo -e "\n"\
         "#################################################################\n"\
@@ -232,25 +233,28 @@ then
         "#################################################################\n"\
         "#####        INSTALL PYTHON PACKAGES                        #####\n"\
         "#################################################################"
         "#################################################################\n"\
         "#####        INSTALL PYTHON PACKAGES                        #####\n"\
         "#################################################################"
-    [ "$_DISTRO" == "Ubuntu" ] && install_packages "python-yaml python-bottle python-mysqldb python-jsonschema python-paramiko python-argcomplete python-requests python-logutils libxml2-dev libxslt-dev python-dev python-pip"
-    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "PyYAML MySQL-python python-jsonschema python-paramiko python-argcomplete python-requests python-logutils libxslt-devel libxml2-devel python-devel python-pip"
+    [ "$_DISTRO" == "Ubuntu" ] && install_packages "python-yaml python-bottle python-mysqldb python-jsonschema python-paramiko python-argcomplete python-requests python-logutils libxml2-dev libxslt-dev python-dev python-pip python-crypto"
+    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "PyYAML MySQL-python python-jsonschema python-paramiko python-argcomplete python-requests python-logutils libxslt-devel libxml2-devel python-devel python-pip python-crypto"
     # The only way to install python-bottle on Centos7 is with easy_install or pip
     [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && easy_install -U bottle
 
     # required for vmware connector TODO move that to separete opt in install script
     # The only way to install python-bottle on Centos7 is with easy_install or pip
     [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && easy_install -U bottle
 
     # required for vmware connector TODO move that to separete opt in install script
-    sudo pip install --upgrade pip
-    sudo pip install pyvcloud
-    sudo pip install progressbar
-    sudo pip install prettytable
-    sudo pip install pyvmomi
+    pip install --upgrade pip
+    pip install pyvcloud
+    pip install progressbar
+    pip install prettytable
+    pip install pyvmomi
 
     # required for AWS connector
     [ "$_DISTRO" == "Ubuntu" ] && install_packages "python-boto"
     [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "python-boto"  #TODO check if at Centos it exists with this name, or PIP should be used
 
     # install openstack client needed for using openstack as a VIM
 
     # required for AWS connector
     [ "$_DISTRO" == "Ubuntu" ] && install_packages "python-boto"
     [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "python-boto"  #TODO check if at Centos it exists with this name, or PIP should be used
 
     # install openstack client needed for using openstack as a VIM
-    [ "$_DISTRO" == "Ubuntu" ] && install_packages "python-novaclient python-keystoneclient python-glanceclient python-neutronclient python-cinderclient"
-    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "python-devel" && easy_install python-novaclient python-keystoneclient python-glanceclient python-neutronclient python-cinderclient #TODO revise if gcc python-pip is needed
+    [ "$_DISTRO" == "Ubuntu" ] && install_packages "python-novaclient python-keystoneclient python-glanceclient "\
+                                                   "python-neutronclient python-cinderclient python-openstackclient"
+    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "python-devel" && easy_install \
+        python-novaclient python-keystoneclient python-glanceclient python-neutronclient python-cinderclient \
+        python-openstackclient #TODO revise if gcc python-pip is needed
 fi  # [[ -z "$NO_PACKAGES" ]]
 
 if [[ -z $NOCLONE ]]; then
 fi  # [[ -z "$NO_PACKAGES" ]]
 
 if [[ -z $NOCLONE ]]; then
@@ -270,23 +274,55 @@ if [[ -z $NOCLONE ]]; then
         fi
     fi
     su $SUDO_USER -c "git clone ${GIT_URL} ${BASEFOLDER}"
         fi
     fi
     su $SUDO_USER -c "git clone ${GIT_URL} ${BASEFOLDER}"
+    LATEST_STABLE_TAG=`git -C "${BASEFOLDER}" tag -l v[0-9].* | tail -n1`
+    [[ -z $DEVELOP ]] && su $SUDO_USER -c "git -C ${BASEFOLDER} checkout tags/${LATEST_STABLE_TAG}"
     su $SUDO_USER -c "cp ${BASEFOLDER}/.gitignore-common ${BASEFOLDER}/.gitignore"
     su $SUDO_USER -c "cp ${BASEFOLDER}/.gitignore-common ${BASEFOLDER}/.gitignore"
-    [[ -z $DEVELOP ]] && su $SUDO_USER -c "git -C ${BASEFOLDER} checkout v2.0"
 fi
 
 fi
 
+echo -e "\n"\
+    "#################################################################\n"\
+    "#####        INSTALLING OSM-IM LIBRARY                      #####\n"\
+    "#################################################################"
+su $SUDO_USER -c "git -C ${BASEFOLDER} clone ${GIT_OSMIM_URL} IM"
+LATEST_STABLE_TAG=`git -C "${BASEFOLDER}/IM" tag -l v[0-9].* | tail -n1`
+[[ -z $DEVELOP ]] && su $SUDO_USER -c "git -C ${BASEFOLDER}/IM checkout tags/${LATEST_STABLE_TAG}"
+
+# Install debian dependencies before setup.py
+if [[ -z "$NO_PACKAGES" ]]
+then
+    [ "$_DISTRO" == "Ubuntu" ] && install_packages "tox debhelper python-bitarray"
+    # TODO check packages for CentOS and RedHat
+    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "tox debhelper python-bitarray"
+    pip install stdeb pyangbind
+fi
+su $SUDO_USER -c "make -C ${BASEFOLDER}/IM all"
+dpkg -i ${BASEFOLDER}/IM/deb_dist/python-osm-im*.deb ${BASEFOLDER}/IM/pyangbind/deb_dist/*.deb \
+        ${BASEFOLDER}/IM/pyang/deb_dist/*.deb
+rm -rf "${BASEFOLDER}/IM"
+OSM_IM_PATH=`python -c 'import osm_im; print osm_im.__path__[0]'` ||
+    ! echo "ERROR installing python-osm-im library!!!" >&2  || exit 1
+
+
 echo -e "\n"\
     "#################################################################\n"\
     "#####        INSTALLING OVIM LIBRARY                        #####\n"\
     "#################################################################"
 su $SUDO_USER -c "git -C ${BASEFOLDER} clone ${GIT_OVIM_URL} openvim"
 echo -e "\n"\
     "#################################################################\n"\
     "#####        INSTALLING OVIM LIBRARY                        #####\n"\
     "#################################################################"
 su $SUDO_USER -c "git -C ${BASEFOLDER} clone ${GIT_OVIM_URL} openvim"
-[[ -z $DEVELOP ]] && su $SUDO_USER -c "git -C ${BASEFOLDER}/openvim checkout v2.0"
+LATEST_STABLE_TAG=`git -C "${BASEFOLDER}/openvim" tag -l v[0-9].* | tail -n1`
+[[ -z $DEVELOP ]] && su $SUDO_USER -c "git -C ${BASEFOLDER}/openvim checkout 005a9dc"
+# disable because a problem with this version[[ -z $DEVELOP ]] && su $SUDO_USER -c "git -C ${BASEFOLDER}/openvim checkout tags/${LATEST_STABLE_TAG}"
 
 # Install debian dependencies before setup.py
 
 # Install debian dependencies before setup.py
-[ "$_DISTRO" == "Ubuntu" ] && install_packages "libmysqlclient-dev"
-[ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "libmysqlclient-dev"  #TODO check if that's the name in CentOS and RedHat
+if [[ -z "$NO_PACKAGES" ]]
+then
+    [ "$_DISTRO" == "Ubuntu" ] && install_packages "libmysqlclient-dev"
+    #TODO check if that is the name in CentOS and RedHat
+    [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ] && install_packages "libmysqlclient-dev"
+fi
 make -C ${BASEFOLDER}/openvim lite
 rm -rf "${BASEFOLDER}/openvim"
 make -C ${BASEFOLDER}/openvim lite
 rm -rf "${BASEFOLDER}/openvim"
-OSMLIBOVIM_PATH=`python -c 'import lib_osm_openvim; print lib_osm_openvim.__path__[0]'`
+OSMLIBOVIM_PATH=`python -c 'import lib_osm_openvim; print lib_osm_openvim.__path__[0]'` ||
+    ! echo "ERROR installing python-lib-osm-openvim library!!!" >&2  || exit 1
 
 if [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ]
 then
 
 if [ "$_DISTRO" == "CentOS" -o "$_DISTRO" == "Red" ]
 then
@@ -391,7 +427,7 @@ then
     # echo 'alias service-openmano="service openmano"' >> ${HOME}/.bashrc
     echo
     echo "Done!  installed at /opt/openmano"
     # echo 'alias service-openmano="service openmano"' >> ${HOME}/.bashrc
     echo
     echo "Done!  installed at /opt/openmano"
-    echo " Manage server with 'sudo service osm-ro start|stop|status|...' "
+    echo " Manage server with 'sudo -E service osm-ro start|stop|status|...' "
 else
     echo
     echo "Done!  you may need to logout and login again for loading client configuration"
 else
     echo
     echo "Done!  you may need to logout and login again for loading client configuration"