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 03f6e240bef1e958b6f286b0103b8ca0aec2b5d9 Author: leonidfrolov <frolovl...@gmail.com> AuthorDate: Wed Jul 8 19:19:21 2020 +0300 [DLAB-1748]: added installation of specific pip lib and list of versions and dependencies to response file --- .../src/general/lib/os/debian/notebook_lib.py | 2 +- infrastructure-provisioning/src/general/lib/os/fab.py | 19 +++++++++++++++---- .../src/general/scripts/os/install_additional_libs.py | 3 +++ 3 files changed, 19 insertions(+), 5 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 985b311..9558c7c 100644 --- a/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py +++ b/infrastructure-provisioning/src/general/lib/os/debian/notebook_lib.py @@ -384,7 +384,7 @@ def install_os_pkg(requisites): 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" + dep = "none" 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: diff --git a/infrastructure-provisioning/src/general/lib/os/fab.py b/infrastructure-provisioning/src/general/lib/os/fab.py index cd15d42..b800448 100644 --- a/infrastructure-provisioning/src/general/lib/os/fab.py +++ b/infrastructure-provisioning/src/general/lib/os/fab.py @@ -62,13 +62,22 @@ def install_pip_pkg(requisites, pip_version, lib_group): sudo('{} install -U pip=={} --no-cache-dir'.format(pip_version, os.environ['conf_pip_version'])) sudo('{} install --upgrade pip=={}'.format(pip_version, os.environ['conf_pip_version'])) for pip_pkg in requisites: + if pip_pkg[1] == '' or pip_pkg[1] == 'N/A': + pip_pkg = pip_pkg[0] + else: + pip_pkg = "{}=={}".format(pip_pkg[0], pip_pkg[1]) sudo('{0} install {1} --no-cache-dir 2>&1 | if ! grep -w -i -E "({2})" > /tmp/{0}install_{1}.log; then echo "" > /tmp/{0}install_{1}.log;fi'.format(pip_version, pip_pkg, error_parser)) err = sudo('cat /tmp/{0}install_{1}.log'.format(pip_version, pip_pkg)).replace('"', "'") sudo('{0} freeze | if ! grep -w -i {1} > /tmp/{0}install_{1}.list; then echo "" > /tmp/{0}install_{1}.list;fi'.format(pip_version, pip_pkg)) res = sudo('cat /tmp/{0}install_{1}.list'.format(pip_version, pip_pkg)) changed_pip_pkg = False + if "Could not find a version that satisfies the requirement" in err: + versions = [err[err.find("(from versions: ") + 16:err.find(")\r\n")]] + status.append({"group": "{}".format(lib_group), "name": pip_pkg.split("=")[0], "status": "failed", + "error_message": err, "available_versions": versions}) + return status if res == '': - changed_pip_pkg = pip_pkg.replace("_", "-").split('-') + changed_pip_pkg = pip_pkg.split("=")[0].replace("_", "-").split('-') changed_pip_pkg = changed_pip_pkg[0] sudo( '{0} freeze | if ! grep -w -i {1} > /tmp/{0}install_{1}.list; then echo "" > /tmp/{0}install_{1}.list;fi'.format( @@ -83,11 +92,13 @@ def install_pip_pkg(requisites, pip_version, lib_group): version = [i for i in ver if changed_pip_pkg.lower() in i][0].split('==')[1] else: version = \ - [i for i in ver if pip_pkg.lower() in i][0].split( + [i for i in ver if pip_pkg.split("=")[0].lower() in i][0].split( '==')[1] - status.append({"group": "{}".format(lib_group), "name": pip_pkg, "version": version, "status": "installed"}) + dep = sudo('{0} show {1} 2>&1 | grep "Requires: "'.format(pip_version, pip_pkg.split("=")[0])).replace( + '\r', '').replace('\n', '').replace('Requires: ', '').strip() + status.append({"group": "{}".format(lib_group), "name": pip_pkg.split("=")[0], "version": version, "status": "installed", "add_pkgs": dep}) else: - status.append({"group": "{}".format(lib_group), "name": pip_pkg, "status": "failed", "error_message": err}) + status.append({"group": "{}".format(lib_group), "name": pip_pkg.split("=")[0], "status": "failed", "error_message": err}) return status except Exception as err: append_result("Failed to install {} packages".format(pip_version), str(err)) diff --git a/infrastructure-provisioning/src/general/scripts/os/install_additional_libs.py b/infrastructure-provisioning/src/general/scripts/os/install_additional_libs.py index b3a787f..84db583 100644 --- a/infrastructure-provisioning/src/general/scripts/os/install_additional_libs.py +++ b/infrastructure-provisioning/src/general/scripts/os/install_additional_libs.py @@ -58,6 +58,9 @@ if __name__ == "__main__": pkgs['libraries'][data[row]['group']].append( [data[row]['name'].split(':')[0], data[row]['name'].split(':')[1], data[row]['version'], data[row]['override']]) + elif data[row]['group'] == "pip2" or data[row]['group'] == "pip3" or data[row]['group'] == "os_pkg": + pkgs['libraries'][data[row]['group']].append( + [data[row]['name'], data[row]['version']]) else: pkgs['libraries'][data[row]['group']].append(data[row]['name']) except Exception as err: --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org