You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by lf...@apache.org on 2020/07/08 16:22:02 UTC
[incubator-dlab] 01/02: [DLAB-1748]: added installation of specific
debian os pkg and dependencies to response file
This is an automated email from the ASF dual-hosted git repository.
lfrolov pushed a commit to branch DLAB-1748
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
commit 011f93948bea9434c44ebd08bf78100492dba673
Author: leonidfrolov <fr...@gmail.com>
AuthorDate: Wed Jul 8 17:28:46 2020 +0300
[DLAB-1748]: added installation of specific debian os pkg and dependencies to response file
---
.../src/general/lib/os/debian/notebook_lib.py | 29 ++++++++++++++++------
1 file changed, 21 insertions(+), 8 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 d1fa44a..985b311 100644
--- a/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
+++ b/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py
@@ -365,22 +365,35 @@ def install_nodejs(os_user):
def install_os_pkg(requisites):
status = list()
- error_parser = "Could not|No matching|Error:|failed|Requires:"
+ error_parser = "Could not|No matching|Error:|E:|failed|Requires:"
+ add_pkgs_parser = "The following additional packages will be installed:"
try:
print("Updating repositories and installing requested tools: {}".format(requisites))
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('"', "'")
- sudo('apt list --installed | if ! grep {0}/ > /tmp/os_install_{0}.list; then echo "" > /tmp/os_install_{0}.list;fi'.format(os_pkg))
+ if os_pkg[1] != '':
+ 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 > /tmp/os_install_{0}.log'.format(os_pkg))
+ sudo('cat /tmp/os_install_{0}.log | if ! grep -w -E "({1})" /tmp/os_install_{0}.log > '
+ '/tmp/os_install_{0}_err.log; then echo "" > /tmp/os_install_{0}_err.log;fi'.format(os_pkg, error_parser))
+ sudo('cat /tmp/os_install_{0}.log | if ! grep -w -E -A 10 "({1})" /tmp/os_install_{0}.log > '
+ '/tmp/os_install_{0}_dep.log; then echo "" > /tmp/os_install_{0}_dep.log;fi'.format(os_pkg, add_pkgs_parser))
+ err = sudo('cat /tmp/os_install_{}_err.log'.format(os_pkg)).replace('"', "'")
+ dep = sudo('cat /tmp/os_install_{}_dep.log'.format(os_pkg))
+ dep = dep[len(add_pkgs_parser):dep.find("Suggested packages:")].replace('\r', '').replace('\n', '').replace(' ', ' ').strip()
+ if dep == '':
+ dep = "N/A"
+ 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))
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 in i][0].split(' ')[1]
- status.append({"group": "os_pkg", "name": os_pkg, "version": version, "status": "installed"})
+ 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, "status": "failed", "error_message": err})
+ status.append({"group": "os_pkg", "name": os_pkg.split("=")[0], "status": "failed", "error_message": err})
sudo('unattended-upgrades -v')
sudo('export LC_ALL=C')
return status
@@ -401,7 +414,7 @@ def get_available_os_pkgs():
os_pkgs = dict()
ansi_escape = re.compile(r'\x1b[^m]*m')
manage_pkg('update', 'remote', '')
- apt_raw = sudo("apt list")
+ apt_raw = sudo("apt list -a")
apt_list = ansi_escape.sub('', apt_raw).split("\r\n")
for pkg in apt_list:
if "/" in pkg:
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org