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

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

commit ef0a28a44b8ae63be2b359d02817bbe009b637d5
Author: leonidfrolov <frolovl...@gmail.com>
AuthorDate: Wed Jul 22 18:12:29 2020 +0300

    [DLAB-1594]: fixed for apt packages
---
 .../src/general/lib/os/debian/notebook_lib.py      | 37 ++++++++++------------
 1 file changed, 16 insertions(+), 21 deletions(-)

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 18d7f59..224e59c 100644
--- a/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
+++ b/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
@@ -375,44 +375,39 @@ def install_os_pkg(requisites):
                 os_pkg = "{}={}".format(os_pkg[0], os_pkg[1])
             else:
                 os_pkg = os_pkg[0]
-            sudo('DEBIAN_FRONTEND=noninteractive apt-get -y install {0} 2>&1 | 
tee /tmp/tee.tmp; if ! grep -w -E "({1})" /tmp/tee.tmp > '
+            sudo('DEBIAN_FRONTEND=noninteractive apt-get -y install 
--allow-downgrades {0} 2>&1 | tee /tmp/tee.tmp; if ! grep -w -E "({1})" 
/tmp/tee.tmp > '
                  '/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('"', "'")
             sudo('cat /tmp/tee.tmp | if ! grep -w -E -A 20 "({1})" 
/tmp/tee.tmp > '
                  '/tmp/os_install_{0}.log; then echo "" > 
/tmp/os_install_{0}.log;fi'.format(os_pkg, new_pkgs_parser))
             dep = sudo('cat /tmp/os_install_{}.log'.format(os_pkg))
-            if err == '':
-                dep = dep[len(new_pkgs_parser): dep.find(" upgraded, ") - 
1].replace('\r', '') \
-                    .replace('\n', '').replace('  ', ' ').replace(' {} 
'.format(os_pkg.split("=")[0]), ' ').strip().split(' ')
-                if dep == '' or dep == os_pkg.split("=")[0]:
-                    dep = []
-                else:
-                    for n, i in enumerate(dep):
-                        pkg = sudo('apt list --installed 2>&1 | grep 
{}'.format(i))
-                        if pkg == '':
-                            pkg = sudo('apt list --installed 2>&1 | grep 
{}'.format(i.lower()))
-                        if i == os_pkg.split("=")[0]:
-                            dep[n] = ''
-                        elif "/" in pkg:
-                            dep[n] = '{} v.{}'.format(pkg.split('/')[0], 
pkg.split(' ')[1])
-                    dep = [i for i in dep if i]
-            else:
+            if dep == '':
                 dep = []
+            else:
+                dep = dep[len(new_pkgs_parser): dep.find(" upgraded, ") - 
1].replace('\r', '') \
+                        .replace('\n', '').replace('  ', ' ').replace(' {} 
'.format(os_pkg.split("=")[0]),
+                                                                      ' 
').strip().split(' ')
+                for n, i in enumerate(dep):
+                    dep[n] = sudo('apt show {} 2>&1 | grep 
Version:'.format(i)).replace('Version: ', '{} v.'.format(i))
+                dep = [i for i in dep if i]
             if 'E: Version' in err and 'was not found' in err:
                 versions = sudo ('apt-cache policy {} | grep 500 | grep -v 
Packages'.format(os_pkg.split("=")[0])).replace('\r\n', '').replace(' 500', 
'').replace('     ', ' ').strip().split(' ')
-                status_msg = 'invalid version'
+                if versions != '':
+                    status_msg = 'invalid version'
             else:
                 versions = []
                 status_msg = 'failed'
             sudo('apt list --installed | if ! grep {0}/ > 
/tmp/os_install_{1}.list; then  echo "" > 
/tmp/os_install_{1}.list;fi'.format(os_pkg.split("=")[0], os_pkg))
             res = sudo('cat /tmp/os_install_{}.list'.format(os_pkg))
+            version = os_pkg.split("=")[1]
             if res:
                 ansi_escape = re.compile(r'\x1b[^m]*m')
                 ver = ansi_escape.sub('', res).split("\r\n")
                 version = [i for i in ver if os_pkg.split("=")[0] in 
i][0].split(' ')[1]
-                status.append({"group": "os_pkg", "name": 
os_pkg.split("=")[0], "version": version, "status": "installed", "add_pkgs": 
dep})
-            else:
-                status.append({"group": "os_pkg", "name": 
os_pkg.split("=")[0], "status": status_msg, "error_message": err, 
"available_versions": versions})
+                if os_pkg.split("=")[1] == '' or os_pkg.split("=")[1] == 
version:
+                    status_msg = "installed"
+            status.append({"group": "os_pkg", "name": os_pkg.split("=")[0], 
"version": version, "status": status_msg,
+                           "error_message": err, "add_pkgs": dep, 
"available_versions": versions})
         sudo('unattended-upgrades -v')
         sudo('export LC_ALL=C')
         return status


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

Reply via email to