ucloud-setup/app/helper.py

90 lines
3.1 KiB
Python

import subprocess as sp
# import subprocess as sp
# import requests
import json
import os
# from decouple import config
# def install_available(pipfile):
# """ Install Python packages or their dependencies mentioned in
# pipfile if they are available in System repos
# """
# def is_available_in_system_repos(package):
# try:
# sp.check_output(['apk', 'info', f'py3-{package}'])
# except:
# return False
# else:
# return True
# if get_distro_name() == "alpine":
# dependencies = []
# need_to_be_installed = []
# try:
# with open(pipfile) as f:
# lines = f.readlines()
# try:
# start_index = lines.index("[packages]\n")
# end_index = lines.index("\n", start_index)
# for package in lines[start_index: end_index]:
# if '= "*"' in package:
# package = package[:package.index(" =")]
# if is_available_in_system_repos(package):
# need_to_be_installed.append(f"py3-{package}")
# else:
# dependencies.append(package)
# except ValueError:
# print("Not Found")
# except:
# return
# else:
# for dependency in dependencies:
# content = requests.get(f"https://libraries.io/api/pypi/{dependency}/latest/dependencies?api_key={config('LIBRARIES_IO_API')}")
# content = json.loads(content.content.decode("utf-8"))
# for subdependency in content["dependencies"]:
# subdependency = subdependency["name"]
# if is_available_in_system_repos(subdependency):
# need_to_be_installed.append(f"py3-{subdependency}")
# for package in need_to_be_installed:
# try:
# sp.check_output(["apk", "add", package])
# except:
# print(f"Could not install {package}")
def install_available(project_path):
if get_distro_name() == "alpine":
sp.check_output(['pipenv', 'lock'])
with open(os.path.join(project_path, "Pipfile.lock")) as f:
content = json.load(f)
for package in content["default"].keys():
try:
sp.check_output(["apk", "add", f"py3-{package}"])
except Exception:
pass
def clone_common(path='.'):
sp.check_output(['git', 'clone',
f'https://code.ungleich.ch/ungleich-public/ucloud_common'], cwd=path)
def clone_etcd_wrapper(path='.'):
sp.check_output(['git', 'clone',
f'https://code.ungleich.ch/ahmedbilal/etcd3_wrapper'], cwd=path)
def get_distro_name():
distro_name = None
with open("/etc/os-release") as f:
content = f.read()
start = content.find("ID=") + 3
end = content.find("\n", start)
distro_name = content[start:end]
return distro_name