commit d51f7fcbfd35bc82efcf818bcb54956c76a5caa8 Author: Ahmed Bilal Khalid Date: Tue Aug 27 13:31:22 2019 +0500 a diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..6338ebf --- /dev/null +++ b/Pipfile @@ -0,0 +1,12 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +click = "*" + +[requires] +python_version = "3.7" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..98397f7 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,29 @@ +{ + "_meta": { + "hash": { + "sha256": "e6728243c3982bd95c23ad63dc24514046979d9cf07efbb6dc60150bdf182788" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.7" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "click": { + "hashes": [ + "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", + "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" + ], + "index": "pypi", + "version": "==7.0" + } + }, + "develop": {} +} diff --git a/app/__init__ b/app/__init__ new file mode 100644 index 0000000..e69de29 diff --git a/app/api.py b/app/api.py new file mode 100644 index 0000000..f2e5bd7 --- /dev/null +++ b/app/api.py @@ -0,0 +1,41 @@ +import click +import subprocess + + +from app.helper import clone, clone_common,\ + clone_etcd_wrapper, pipenv_install + +@click.group() +def api(): + pass + +@api.command("setup") +@click.option("--auth_name", required=True) +@click.option("--auth_seed", required=True) +@click.option("--auth_realm", required=True) +@click.option("--realm_allowed", multiple=True, required=True) +@click.option("--otp_server", default="https://otp.ungleich.ch/ungleichotp/", + help="URL of ungleich OTP server") + +def setup(auth_name, auth_seed, auth_realm, realm_allowed, otp_server): + if clone("https://code.ungleich.ch/ungleich-public/ucloud-api.git"): + with open(".env", "w") as env_file: + lines = [f"AUTH_NAME={auth_name}", + f"AUTH_SEED={auth_seed}", + f"AUTH_REALM={auth_seed}", + f"REALM_ALLOWED={realm_allowed}", + f"OTP_SERVER={otp_server}"] + + env_file.writelines(lines) + + result = [] + result.append(clone_common()) + result.append(clone_etcd_wrapper()) + + if all(result): + result.append(pipenv_install("ucloud-api")) + + if all(result): + print("Successfull installation :)") + else: + print("Unsuccessful installation ;(") \ No newline at end of file diff --git a/app/helper.py b/app/helper.py new file mode 100644 index 0000000..8c7811d --- /dev/null +++ b/app/helper.py @@ -0,0 +1,36 @@ +import subprocess + + +def clone(repo): + command = f"git clone {repo}" + try: + subprocess.check_output(command.split()) + except subprocess.CalledProcessError as e: + return False + else: + return True + + +def clone_common(): + return clone("https://code.ungleich.ch/ungleich-public/ucloud_common") + +def clone_etcd_wrapper(): + return clone("https://code.ungleich.ch/ahmedbilal/etcd3_wrapper") + + +class Operation(object): + def __init__(self): + self.result = [] + + def execute(self, rc): + self.result.append(rc) + + +def pipenv_install(_dir): + command = f"pipenv install" + try: + subprocess.check_output(command.split(), cwd=_dir) + except subprocess.CalledProcessError as e: + return False + else: + return True \ No newline at end of file diff --git a/app/scheduler.py b/app/scheduler.py new file mode 100644 index 0000000..a09398f --- /dev/null +++ b/app/scheduler.py @@ -0,0 +1,16 @@ +import click +import subprocess + + +@click.group() +def scheduler(): + pass + + +@scheduler.command("setup") +def setup(): + command = "git clone https://code.ungleich.ch/ungleich-public/ucloud-scheduler.git" + try: + subprocess.check_output(command.split()) + except subprocess.CalledProcessError as e: + print("Some Error Occurrred", e) \ No newline at end of file diff --git a/ucloud-setup.py b/ucloud-setup.py new file mode 100644 index 0000000..3e3a583 --- /dev/null +++ b/ucloud-setup.py @@ -0,0 +1,19 @@ +import click +from app.api import api +from app.scheduler import scheduler + + + + + + +@click.group() +def entry_point(): + pass + + +entry_point.add_command(api) +entry_point.add_command(scheduler) + +if __name__ == "__main__": + entry_point()