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:52:59 UTC

[incubator-dlab] branch DLAB-1527 created (now 5e25a7d)

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

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


      at 5e25a7d  [DLAB-1527]: Rarely notebook is not created successful from the first attempt fixed

This branch includes the following new commits:

     new 5e25a7d  [DLAB-1527]: Rarely notebook is not created successful from the first attempt fixed

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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


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

Posted by my...@apache.org.
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