You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by my...@apache.org on 2020/02/17 13:53:00 UTC

[incubator-dlab] 01/01: [DLAB-1527]: Rarely notebook is not created successful from the first attempt fixed

This is an automated email from the ASF dual-hosted git repository.

mykolabodnar pushed a commit to branch DLAB-1527
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit 5e25a7d36d56291037b634522d93c653dc5af1de
Author: Mykola_Bodnar1 <bo...@gmail.com>
AuthorDate: Mon Feb 17 15:52:35 2020 +0200

    [DLAB-1527]: Rarely notebook is not created successful from the first attempt fixed
---
 .../src/general/lib/os/debian/common_lib.py        | 34 +++++++++---
 .../src/general/lib/os/debian/edge_lib.py          |  7 ++-
 .../src/general/lib/os/debian/notebook_lib.py      | 64 +++++++++++-----------
 .../src/general/lib/os/debian/ssn_lib.py           | 19 ++++---
 .../src/general/lib/os/fab.py                      |  5 +-
 5 files changed, 75 insertions(+), 54 deletions(-)

diff --git a/infrastructure-provisioning/src/general/lib/os/debian/common_lib.py b/infrastructure-provisioning/src/general/lib/os/debian/common_lib.py
index 916c48c..0d94ecf 100644
--- a/infrastructure-provisioning/src/general/lib/os/debian/common_lib.py
+++ b/infrastructure-provisioning/src/general/lib/os/debian/common_lib.py
@@ -27,6 +27,26 @@ import sys
 import os
 import time
 
+def manage_pkg(command, environment, requisites):
+    try:
+        allow = False
+        while not allow:
+            if environment == 'remote':
+                if sudo('pgrep apt-get -a </dev/null &'):
+                    print('Package manager still working, pleae wait')
+                else:
+                    allow = True
+                    sudo('apt-get {0} {1}'.format(command, requisites))
+            elif environment == 'local':
+                if local('sudo pgrep apt-get -a </dev/null &'):
+                    print('Package manager still working, pleae wait')
+                else:
+                    allow = True
+                    local('sudo apt-get {0} {1}'.format(command, requisites))
+            else:
+                print('Wrong environment')
+    except:
+        sys.exit(1)
 
 def ensure_pkg(user, requisites='linux-headers-generic python-pip python-dev '
                                 'groff gcc vim less git wget sysv-rc-conf '
@@ -45,15 +65,15 @@ def ensure_pkg(user, requisites='linux-headers-generic python-pip python-dev '
                         print("Updating repositories "
                                 "and installing requested tools: {}".format(requisites))
                         print("Attempt number " + str(count) + " to install requested tools. Max 60 tries.")
-                        sudo('apt-get update')
-                        sudo('apt-get -y install ' + requisites)
+                        manage_pkg('update', 'remote', '')
+                        manage_pkg('-y install', 'remote', requisites)
                         sudo('unattended-upgrades -v')
                         sudo('export LC_ALL=C')
                         sudo('touch /home/{}/.ensure_dir/pkg_upgraded'.format(user))
                         sudo('systemctl enable haveged')
                         sudo('systemctl start haveged')
                         if os.environ['conf_cloud_provider'] == 'aws':
-                            sudo('apt-get -y install --install-recommends linux-aws-hwe')
+                            manage_pkg('-y install --install-recommends', 'remote', 'linux-aws-hwe')
                         check = True
                     except:
                         count += 1
@@ -74,7 +94,7 @@ def change_pkg_repos():
     if not exists('/tmp/pkg_china_ensured'):
         put('/root/files/sources.list', '/tmp/sources.list')
         sudo('mv /tmp/sources.list /etc/apt/sources.list')
-        sudo('apt-get update')
+        manage_pkg('update', 'remote', '')
         sudo('touch /tmp/pkg_china_ensured')
 
 
@@ -92,7 +112,7 @@ def ensure_ntpd(user, edge_private_ip=''):
     try:
         if not exists('/home/{}/.ensure_dir/ntpd_ensured'.format(user)):
             sudo('timedatectl set-ntp no')
-            sudo('apt-get -y install ntp ntpdate')
+            manage_pkg('-y install', 'remote', 'ntp ntpdate')
             sudo('echo "tinker panic 0" >> /etc/ntp.conf')
             if os.environ['conf_resource'] != 'ssn' and os.environ['conf_resource'] != 'edge':
                 sudo('echo "server {} prefer iburst" >> /etc/ntp.conf'.format(edge_private_ip))
@@ -106,7 +126,7 @@ def ensure_ntpd(user, edge_private_ip=''):
 def ensure_java(user):
     try:
         if not exists('/home/{}/.ensure_dir/java_ensured'.format(user)):
-            sudo('apt-get -y install openjdk-8-jdk')
+            manage_pkg('-y install', 'remote', 'openjdk-8-jdk')
             sudo('touch /home/{}/.ensure_dir/java_ensured'.format(user))
     except:
         sys.exit(1)
@@ -115,7 +135,7 @@ def ensure_java(user):
 def ensure_step(user):
     try:
         if not exists('/home/{}/.ensure_dir/step_ensured'.format(user)):
-            sudo('apt-get install -y wget')
+            manage_pkg('-y install', 'remote', 'wget')
             sudo('wget https://github.com/smallstep/cli/releases/download/v0.13.3/step-cli_0.13.3_amd64.deb '
                  '-O /tmp/step-cli_0.13.3_amd64.deb')
             sudo('dpkg -i /tmp/step-cli_0.13.3_amd64.deb')
diff --git a/infrastructure-provisioning/src/general/lib/os/debian/edge_lib.py b/infrastructure-provisioning/src/general/lib/os/debian/edge_lib.py
index cb79a95..d73d7ee 100644
--- a/infrastructure-provisioning/src/general/lib/os/debian/edge_lib.py
+++ b/infrastructure-provisioning/src/general/lib/os/debian/edge_lib.py
@@ -25,12 +25,13 @@ import os
 import sys
 from fabric.api import *
 from fabric.contrib.files import exists
+from dlab.common_lib import manage_pkg
 
 
 def configure_http_proxy_server(config):
     try:
         if not exists('/tmp/http_proxy_ensured'):
-            sudo('apt-get -y install squid')
+            manage_pkg('-y install', 'remote', 'squid')
             template_file = config['template_file']
             proxy_subnet = config['exploratory_subnet']
             put(template_file, '/tmp/squid.conf')
@@ -62,8 +63,8 @@ def install_nginx_lua(edge_ip, nginx_version, keycloak_auth_server_url, keycloak
                       keycloak_client_secret, user, hostname, step_cert_sans):
     try:
         if not os.path.exists('/tmp/nginx_installed'):
-            sudo('apt-get install -y wget')
-            sudo('apt-get -y install gcc build-essential make automake zlib1g-dev libpcre++-dev libssl-dev git libldap2-dev libc6-dev libgd-dev libgeoip-dev libpcre3-dev apt-utils autoconf liblmdb-dev libtool libxml2-dev libyajl-dev pkgconf liblua5.1-0 liblua5.1-0-dev libreadline-dev libreadline6-dev libtinfo-dev libtool-bin lua5.1 zip readline-doc')
+            manage_pkg('-y install', 'remote', 'wget')
+            manage_pkg('-y install', 'remote', 'gcc build-essential make automake zlib1g-dev libpcre++-dev libssl-dev git libldap2-dev libc6-dev libgd-dev libgeoip-dev libpcre3-dev apt-utils autoconf liblmdb-dev libtool libxml2-dev libyajl-dev pkgconf liblua5.1-0 liblua5.1-0-dev libreadline-dev libreadline6-dev libtinfo-dev libtool-bin lua5.1 zip readline-doc')
             if os.environ['conf_stepcerts_enabled'] == 'true':
                 sudo('mkdir -p /home/{0}/keys'.format(user))
                 sudo('''bash -c 'echo "{0}" | base64 --decode > /etc/ssl/certs/root_ca.crt' '''.format(
diff --git a/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py b/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
index 44bf218..d1fa44a 100644
--- a/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
+++ b/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
@@ -89,9 +89,9 @@ def ensure_r(os_user, r_libs, region, r_mirror):
                 r_repository = 'https://cloud.r-project.org'
             add_marruter_key()
             sudo('apt update')
-            sudo('apt-get install -y libcurl4-openssl-dev libssl-dev libreadline-dev')
-            sudo('apt-get install -y cmake')
-            sudo('apt-get install -y r-base r-base-dev')
+            manage_pkg('-y install', 'remote', 'libcurl4-openssl-dev libssl-dev libreadline-dev')
+            manage_pkg('-y install', 'remote', 'cmake')
+            manage_pkg('-y install', 'remote', 'r-base r-base-dev')
             sudo('R CMD javareconf')
             sudo('cd /root; git clone https://github.com/zeromq/zeromq4-x.git; cd zeromq4-x/; mkdir build; cd build; cmake ..; make install; ldconfig')
             for i in r_libs:
@@ -112,8 +112,8 @@ def ensure_r(os_user, r_libs, region, r_mirror):
 def install_rstudio(os_user, local_spark_path, rstudio_pass, rstudio_version):
     if not exists('/home/' + os_user + '/.ensure_dir/rstudio_ensured'):
         try:
-            sudo('apt-get install -y r-base')
-            sudo('apt-get install -y gdebi-core')
+            manage_pkg('-y install', 'remote', 'r-base')
+            manage_pkg('-y install', 'remote', 'gdebi-core')
             sudo('wget https://download2.rstudio.org/server/trusty/amd64/rstudio-server-{}-amd64.deb'.format(rstudio_version))
             sudo('gdebi -n rstudio-server-{}-amd64.deb'.format(rstudio_version))
             sudo('mkdir -p /mnt/var')
@@ -151,8 +151,8 @@ def ensure_matplot(os_user):
     if not exists('/home/' + os_user + '/.ensure_dir/matplot_ensured'):
         try:
             sudo("sudo sed -i~orig -e 's/# deb-src/deb-src/' /etc/apt/sources.list")
-            sudo('sudo apt-get update')
-            sudo('apt-get build-dep -y python-matplotlib')
+            manage_pkg('update', 'remote', '')
+            manage_pkg('-y build-dep', 'remote', 'python-matplotlib')
             sudo('pip2 install matplotlib==2.0.2 --no-cache-dir')
             sudo('pip3 install matplotlib==2.0.2 --no-cache-dir')
             if os.environ['application'] in ('tensor', 'deeplearning'):
@@ -170,11 +170,11 @@ def add_sbt_key():
 def ensure_sbt(os_user):
     if not exists('/home/' + os_user + '/.ensure_dir/sbt_ensured'):
         try:
-            sudo('apt-get install -y apt-transport-https')
+            manage_pkg('-y install', 'remote', 'apt-transport-https')
             sudo('echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list')
             add_sbt_key()
-            sudo('apt-get update')
-            sudo('apt-get install -y sbt')
+            manage_pkg('update', 'remote', '')
+            manage_pkg('-y install', 'remote', 'sbt')
             sudo('touch /home/' + os_user + '/.ensure_dir/sbt_ensured')
         except:
             sys.exit(1)
@@ -193,8 +193,8 @@ def ensure_scala(scala_link, scala_version, os_user):
 def ensure_jre_jdk(os_user):
     if not exists('/home/' + os_user + '/.ensure_dir/jre_jdk_ensured'):
         try:
-            sudo('apt-get install -y default-jre')
-            sudo('apt-get install -y default-jdk')
+            manage_pkg('-y install', 'remote', 'default-jre')
+            manage_pkg('-y install', 'remote', 'default-jdk')
             sudo('touch /home/' + os_user + '/.ensure_dir/jre_jdk_ensured')
         except:
             sys.exit(1)
@@ -203,7 +203,7 @@ def ensure_jre_jdk(os_user):
 def ensure_additional_python_libs(os_user):
     if not exists('/home/' + os_user + '/.ensure_dir/additional_python_libs_ensured'):
         try:
-            sudo('apt-get install -y libjpeg8-dev zlib1g-dev')
+            manage_pkg('-y install', 'remote', 'libjpeg8-dev zlib1g-dev')
             if os.environ['application'] in ('jupyter', 'zeppelin'):
                 sudo('pip2 install NumPy=={} SciPy pandas Sympy Pillow sklearn --no-cache-dir'.format(os.environ['notebook_numpy_version']))
                 sudo('pip3 install NumPy=={} SciPy pandas Sympy Pillow sklearn --no-cache-dir'.format(os.environ['notebook_numpy_version']))
@@ -231,10 +231,10 @@ def ensure_python2_libraries(os_user):
     if not exists('/home/' + os_user + '/.ensure_dir/python2_libraries_ensured'):
         try:
             try:
-                sudo('apt-get install -y libssl-dev python-virtualenv')
+                manage_pkg('-y install', 'remote', 'libssl-dev python-virtualenv')
             except:
                 sudo('pip2 install virtualenv --no-cache-dir')
-                sudo('apt-get install -y libssl-dev')
+                manage_pkg('-y install', 'remote', 'libssl-dev')
             try:
                 sudo('pip2 install tornado=={0} ipython ipykernel=={1} --no-cache-dir' \
                      .format(os.environ['notebook_tornado_version'], os.environ['notebook_ipykernel_version']))
@@ -252,8 +252,8 @@ def ensure_python2_libraries(os_user):
 def ensure_python3_libraries(os_user):
     if not exists('/home/' + os_user + '/.ensure_dir/python3_libraries_ensured'):
         try:
-            sudo('apt-get install python3-setuptools')
-            sudo('apt install -y python3-pip')
+            manage_pkg('-y install', 'remote', 'python3-setuptools')
+            manage_pkg('-y install', 'remote', 'python3-pip')
             try:
                 sudo('pip3 install tornado=={0} ipython==7.9.0 ipykernel=={1} --no-cache-dir' \
                      .format(os.environ['notebook_tornado_version'], os.environ['notebook_ipykernel_version']))
@@ -279,10 +279,10 @@ def install_tensor(os_user, cuda_version, cuda_file_name,
             sudo('update-initramfs -u')
             with settings(warn_only=True):
                 reboot(wait=150)
-            sudo('apt-get -y install dkms')
+            manage_pkg('-y install', 'remote', 'dkms')
             kernel_version = run('uname -r | tr -d "[..0-9-]"')
             if kernel_version == 'azure':
-                sudo('apt-get -y install linux-modules-`uname -r`')
+                manage_pkg('-y install', 'remote', 'linux-modules-`uname -r`')
             else:
                 #legacy support for old kernels
                 sudo('if [[ $(apt-cache search linux-image-`uname -r`) ]]; then apt-get -y install linux-image-`uname -r`; else apt-get -y install linux-modules-`uname -r`; fi;')
@@ -324,19 +324,19 @@ def install_tensor(os_user, cuda_version, cuda_file_name,
 
 def install_maven(os_user):
     if not exists('/home/' + os_user + '/.ensure_dir/maven_ensured'):
-        sudo('apt-get -y install maven')
+        manage_pkg('-y install', 'remote', 'maven')
         sudo('touch /home/' + os_user + '/.ensure_dir/maven_ensured')
 
 def install_gcloud(os_user):
     if not exists('/home/' + os_user + '/.ensure_dir/gcloud_ensured'):
         sudo('echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list')
         sudo('curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -')
-        sudo('apt-get install google-cloud-sdk')
+        manage_pkg('-y install', 'remote', 'google-cloud-sdk')
         sudo('touch /home/' + os_user + '/.ensure_dir/gcloud_ensured')
 
 def install_livy_dependencies(os_user):
     if not exists('/home/' + os_user + '/.ensure_dir/livy_dependencies_ensured'):
-        sudo('apt-get -y install libkrb5-dev')
+        manage_pkg('-y install', 'remote', 'libkrb5-dev')
         sudo('pip2 install cloudpickle requests requests-kerberos flake8 flaky pytest --no-cache-dir')
         sudo('pip3 install cloudpickle requests requests-kerberos flake8 flaky pytest --no-cache-dir')
         sudo('touch /home/' + os_user + '/.ensure_dir/livy_dependencies_ensured')
@@ -344,13 +344,13 @@ def install_livy_dependencies(os_user):
 
 def install_maven_emr(os_user):
     if not os.path.exists('/home/' + os_user + '/.ensure_dir/maven_ensured'):
-        local('sudo apt-get -y install maven')
+        manage_pkg('-y install', 'local', 'maven')
         local('touch /home/' + os_user + '/.ensure_dir/maven_ensured')
 
 
 def install_livy_dependencies_emr(os_user):
     if not os.path.exists('/home/' + os_user + '/.ensure_dir/livy_dependencies_ensured'):
-        local('sudo apt-get -y install libkrb5-dev')
+        manage_pkg('-y install', 'local', 'libkrb5-dev')
         local('sudo pip2 install cloudpickle requests requests-kerberos flake8 flaky pytest --no-cache-dir')
         local('sudo pip3 install cloudpickle requests requests-kerberos flake8 flaky pytest --no-cache-dir')
         local('touch /home/' + os_user + '/.ensure_dir/livy_dependencies_ensured')
@@ -359,7 +359,7 @@ def install_livy_dependencies_emr(os_user):
 def install_nodejs(os_user):
     if not exists('/home/{}/.ensure_dir/nodejs_ensured'.format(os_user)):
         sudo('curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -')
-        sudo('apt-get install -y nodejs')
+        manage_pkg('-y install', 'remote', 'nodejs')
         sudo('touch /home/{}/.ensure_dir/nodejs_ensured'.format(os_user))
 
 
@@ -368,7 +368,7 @@ def install_os_pkg(requisites):
     error_parser = "Could not|No matching|Error:|failed|Requires:"
     try:
         print("Updating repositories and installing requested tools: {}".format(requisites))
-        sudo('apt-get update')
+        manage_pkg('update', 'remote', '')
         for os_pkg in requisites:
             sudo('DEBIAN_FRONTEND=noninteractive apt-get -y install {0} 2>&1 | if ! grep -w -E  "({1})" >  /tmp/os_install_{0}.log; then  echo "" > /tmp/os_install_{0}.log;fi'.format(os_pkg, error_parser))
             err = sudo('cat /tmp/os_install_{}.log'.format(os_pkg)).replace('"', "'")
@@ -400,7 +400,7 @@ def get_available_os_pkgs():
     try:
         os_pkgs = dict()
         ansi_escape = re.compile(r'\x1b[^m]*m')
-        sudo('apt-get update')
+        manage_pkg('update', 'remote', '')
         apt_raw = sudo("apt list")
         apt_list = ansi_escape.sub('', apt_raw).split("\r\n")
         for pkg in apt_list:
@@ -414,14 +414,12 @@ def get_available_os_pkgs():
 def install_caffe2(os_user, caffe2_version, cmake_version):
     if not exists('/home/{}/.ensure_dir/caffe2_ensured'.format(os_user)):
         env.shell = "/bin/bash -l -c -i"
-        sudo('apt-get update')
-        sudo('apt-get install -y --no-install-recommends build-essential cmake git libgoogle-glog-dev libprotobuf-dev'
-             ' protobuf-compiler python-dev python-pip')
+        manage_pkg('update', 'remote', '')
+        manage_pkg('-y install --no-install-recommends', 'remote', 'build-essential cmake git libgoogle-glog-dev libprotobuf-dev protobuf-compiler python-dev python-pip')
         sudo('pip2 install numpy=={} protobuf --no-cache-dir'.format(os.environ['notebook_numpy_version']))
         sudo('pip3 install numpy=={} protobuf --no-cache-dir'.format(os.environ['notebook_numpy_version']))
-        sudo('apt-get install -y --no-install-recommends libgflags-dev')
-        sudo('apt-get install -y --no-install-recommends libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev '
-             'libopencv-dev libopenmpi-dev libsnappy-dev openmpi-bin openmpi-doc python-pydot')
+        manage_pkg('-y install --no-install-recommends', 'remote', 'libgflags-dev')
+        manage_pkg('-y install --no-install-recommends', 'remote', 'libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev openmpi-bin openmpi-doc python-pydot')
         sudo('pip2 install flask graphviz hypothesis jupyter matplotlib==2.0.2 pydot python-nvd3 pyyaml requests scikit-image '
              'scipy setuptools tornado --no-cache-dir')
         sudo('pip3 install flask graphviz hypothesis jupyter matplotlib==2.0.2 pydot python-nvd3 pyyaml requests scikit-image '
diff --git a/infrastructure-provisioning/src/general/lib/os/debian/ssn_lib.py b/infrastructure-provisioning/src/general/lib/os/debian/ssn_lib.py
index b3d5167..814421e 100644
--- a/infrastructure-provisioning/src/general/lib/os/debian/ssn_lib.py
+++ b/infrastructure-provisioning/src/general/lib/os/debian/ssn_lib.py
@@ -30,6 +30,7 @@ import os
 import json
 import traceback
 import sys
+from dlab.common_lib import manage_pkg
 
 
 def ensure_docker_daemon(dlab_path, os_user, region):
@@ -39,9 +40,9 @@ def ensure_docker_daemon(dlab_path, os_user, region):
             sudo('curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -')
             sudo('add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) \
                   stable"')
-            sudo('apt-get update')
+            manage_pkg('update', 'remote', '')
             sudo('apt-cache policy docker-ce')
-            sudo('apt-get install -y docker-ce={}~ce~3-0~ubuntu'.format(docker_version))
+            manage_pkg('-y install', 'remote', 'docker-ce={}~ce~3-0~ubuntu'.format(docker_version))
             sudo('usermod -a -G docker ' + os_user)
             sudo('update-rc.d docker defaults')
             sudo('update-rc.d docker enable')
@@ -54,7 +55,7 @@ def ensure_docker_daemon(dlab_path, os_user, region):
 def ensure_nginx(dlab_path):
     try:
         if not exists(dlab_path + 'tmp/nginx_ensured'):
-            sudo('apt-get -y install nginx')
+            manage_pkg('-y install', 'remote', 'nginx')
             sudo('service nginx restart')
             sudo('update-rc.d nginx defaults')
             sudo('update-rc.d nginx enable')
@@ -70,8 +71,8 @@ def ensure_jenkins(dlab_path):
         if not exists(dlab_path + 'tmp/jenkins_ensured'):
             sudo('wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | apt-key add -')
             sudo('echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list')
-            sudo('apt-get -y update')
-            sudo('apt-get -y install jenkins')
+            manage_pkg('-y update', 'remote', '')
+            manage_pkg('-y install', 'remote', 'jenkins')
             sudo('touch ' + dlab_path + 'tmp/jenkins_ensured')
     except Exception as err:
         traceback.print_exc()
@@ -143,7 +144,7 @@ def configure_nginx(config, dlab_path, hostname):
 def ensure_supervisor():
     try:
         if not exists(os.environ['ssn_dlab_path'] + 'tmp/superv_ensured'):
-            sudo('apt-get -y install supervisor')
+            manage_pkg('-y install', 'remote', 'supervisor')
             sudo('update-rc.d supervisor defaults')
             sudo('update-rc.d supervisor enable')
             sudo('touch ' + os.environ['ssn_dlab_path'] + 'tmp/superv_ensured')
@@ -158,7 +159,7 @@ def ensure_mongo():
         if not exists(os.environ['ssn_dlab_path'] + 'tmp/mongo_ensured'):
             sudo('apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927')
             sudo('ver=`lsb_release -cs`; echo "deb http://repo.mongodb.org/apt/ubuntu $ver/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list; apt-get update')
-            sudo('apt-get -y --allow-unauthenticated install mongodb-org')
+            manage_pkg('-y --allow-unauthenticated install', 'remote', 'mongodb-org')
             sudo('systemctl enable mongod.service')
             sudo('touch ' + os.environ['ssn_dlab_path'] + 'tmp/mongo_ensured')
     except Exception as err:
@@ -345,14 +346,14 @@ def install_build_dep():
     try:
         if not exists('{}tmp/build_dep_ensured'.format(os.environ['ssn_dlab_path'])):
             maven_version = '3.5.4'
-            sudo('apt-get install -y openjdk-8-jdk git wget unzip')
+            manage_pkg('-y install', 'remote', 'openjdk-8-jdk git wget unzip')
             with cd('/opt/'):
                 sudo('wget http://mirrors.sonic.net/apache/maven/maven-{0}/{1}/binaries/apache-maven-{1}-bin.zip'.format(
                     maven_version.split('.')[0], maven_version))
                 sudo('unzip apache-maven-{}-bin.zip'.format(maven_version))
                 sudo('mv apache-maven-{} maven'.format(maven_version))
             sudo('bash -c "curl --silent --location https://deb.nodesource.com/setup_12.x | bash -"')
-            sudo('apt-get install -y nodejs')
+            manage_pkg('-y install', 'remote', 'nodejs')
             sudo('npm config set unsafe-perm=true')
             sudo('touch {}tmp/build_dep_ensured'.format(os.environ['ssn_dlab_path']))
     except Exception as err:
diff --git a/infrastructure-provisioning/src/general/lib/os/fab.py b/infrastructure-provisioning/src/general/lib/os/fab.py
index 47ef676..a1e1a16 100644
--- a/infrastructure-provisioning/src/general/lib/os/fab.py
+++ b/infrastructure-provisioning/src/general/lib/os/fab.py
@@ -32,6 +32,7 @@ from dlab.actions_lib import *
 import dlab.actions_lib
 import re
 import traceback
+from dlab.common_lib import manage_pkg
 
 
 def ensure_pip(requisites):
@@ -200,9 +201,9 @@ def configure_docker(os_user):
             sudo('curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -')
             sudo('add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) \
                   stable"')
-            sudo('apt-get update')
+            manage_pkg('update', 'remote', '')
             sudo('apt-cache policy docker-ce')
-            sudo('apt-get install -y docker-ce={}~ce~3-0~ubuntu'.format(docker_version))
+            manage_pkg('-y install', 'remote', 'docker-ce={}~ce~3-0~ubuntu'.format(docker_version))
             sudo('touch /home/{}/.ensure_dir/docker_ensured'.format(os_user))
     except Exception as err:
         print('Failed to configure Docker:', str(err))


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org