diff --git a/Dockerfile b/Dockerfile index c241932..93057dc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,16 +2,19 @@ FROM registry.access.redhat.com/ubi8/python-36 USER root -RUN mkdir -p /usr/share/indy-sidedcar-init/sidecarinit +RUN mkdir -p /usr/share/indy-sidecar-init/sidecarinit -ADD sidecarinit /usr/share/indy-sidedcar-init/sidecarinit -ADD setup.py /usr/share/indy-sidedcar-init +ADD sidecarinit /usr/share/indy-sidecar-init/sidecarinit +ADD setup.py /usr/share/indy-sidecar-init ADD scripts/* /usr/local/bin/ +ADD application.yml /deployments/config/application.yml RUN chmod +x /usr/local/bin/* -RUN virtualenv --python=$(which python3) /usr/share/indy-sidedcar-init/venv && \ - /usr/share/indy-sidedcar-init/venv/bin/pip install --upgrade pip && \ - /usr/share/indy-sidedcar-init/venv/bin/pip install -e /usr/share/indy-sidedcar-init +RUN virtualenv --python=$(which python3) /usr/share/indy-sidecar-init/venv && \ + /usr/share/indy-sidecar-init/venv/bin/pip install --upgrade pip && \ + /usr/share/indy-sidecar-init/venv/bin/pip install -e /usr/share/indy-sidecar-init -USER 1001 \ No newline at end of file +USER 1001 + +CMD ["sidecar-init"] \ No newline at end of file diff --git a/application.yml b/application.yml new file mode 100644 index 0000000..cf957ef --- /dev/null +++ b/application.yml @@ -0,0 +1,47 @@ +#### +# This file is a Example file, mount other file on this one inside container when deploy + +quarkus: + http: + port: 8080 + read-timeout: 30m + limits: + max-body-size: 500M + container-image: + builder: docker + vertx: + prefer-native-transport: true + native: + additional-build-args: |- + -H:ResourceConfigurationFiles=resources-config.json + -H:ReflectionConfigurationFiles=reflection-config.json + # Logging (disable console on prod) + log: + level: INFO + category: + "org.commonjava.util.sidecar": + level: DEBUG + console: + level: DEBUG + enable: true + file: + enable: true + path: "log/sidecar.log" + level: DEBUG + format: "%d{HH:mm:ss} %-5p [%c{2.}] (%t) %s%e%n" + rotation: + max-backup-index: 5 + max-file-size: 10M + +honeycomb: + enabled: false + dataset: indy-sidecar-test + write-key: test + base-sample-rate: 20 + functions: |- + /api/content/.*|sidecar.content|20, + /api/folo/admin/.*|sidecar.folo.admin|1, + /api/folo/track/.*|sidecar.folo.content|1 +sidecar: + archive-api: http://localhost:8081/api/archive + local-repository: ${user.home}/preSeedRepo \ No newline at end of file diff --git a/scripts/sidecar-init b/scripts/sidecar-init index b31b244..67e55cc 100644 --- a/scripts/sidecar-init +++ b/scripts/sidecar-init @@ -2,4 +2,4 @@ source /etc/profile -exec /usr/share/indy-sidedcar-init/venv/bin/run-sidecar-init "$@" \ No newline at end of file +exec /usr/share/indy-sidecar-init/venv/bin/run-sidecar-init "$@" \ No newline at end of file diff --git a/sidecarinit/commands.py b/sidecarinit/commands.py index 3a51a3f..bf02c74 100644 --- a/sidecarinit/commands.py +++ b/sidecarinit/commands.py @@ -2,13 +2,20 @@ import os import sys from time import sleep -from traceback import format_exc +from pathlib import Path import sidecarinit.config as config +import sidecarinit.download as download @click.command() -@click.argument('env_yml', required=False) #help='Target environment, Same as sidecar application.yml' -@click.option('-B', '--artifact-dir', help='Dir for saving artifacts', default='artifacts') -def run(env_yml, artifact_dir): +@click.argument('env_yml', required=False, default='/deployments/config/application.yml') #help='Target environment, Same as sidecar application.yml' +def run(env_yml): - #suite = config.read_config(env_yml) - print("hello world") \ No newline at end of file + suite = config.read_config(env_yml) + + archive_name = '/' + os.environ.get('BUILD_ID') + '.zip' + + print('Downloading from :', suite.archive_api, ' to ' ,suite.local_repository) + Path(suite.local_repository).mkdir(parents=True, exist_ok=True) + Path(suite.local_repository + archive_name ).touch(exist_ok=True) + + download.download_archive(suite.archive_api + archive_name, suite.local_repository) \ No newline at end of file diff --git a/sidecarinit/config.py b/sidecarinit/config.py index 51d7257..1ac9ed4 100644 --- a/sidecarinit/config.py +++ b/sidecarinit/config.py @@ -1,16 +1,17 @@ from ruamel.yaml import YAML import os -ENV_INDY_URL = 'indy-url' -ENV_PROXY_PORT = 'proxy-port' +ENV_ARCHIVE_API = 'archive-api' +ENV_LOCAL_REPOSITORY = 'local-repository' DEFAULT_PROXY_PORT = 8081 +DEFAULT_LOCAL_REPOSITORY = '/preSeedRepo' class Environment: def __init__(self, env_spec): - self.indy_url = env_spec.get(ENV_INDY_URL) - self.proxy_port = env_spec.get(ENV_PROXY_PORT) or DEFAULT_PROXY_PORT + self.archive_api = env_spec.get('sidecar').get(ENV_ARCHIVE_API) + self.local_repository = env_spec.get('sidecar').get(ENV_LOCAL_REPOSITORY).replace('${user.home}',os.environ.get('HOME')) or DEFAULT_LOCAL_REPOSITORY def read_config(env_yml): """ Read the suite configuration that this worker should run, from a config.yml file diff --git a/sidecarinit/download.py b/sidecarinit/download.py new file mode 100644 index 0000000..ca3ad40 --- /dev/null +++ b/sidecarinit/download.py @@ -0,0 +1,11 @@ +import urllib.request +import shutil +import os + +def download_archive(url,repository): + archive_name = "/" + os.environ.get('BUILD_ID') + '.zip' + + with urllib.request.urlopen(url) as response, open(repository + archive_name, 'wb') as out_file: + shutil.copyfileobj(response, out_file) + + shutil.unpack_archive(repository + archive_name, repository) \ No newline at end of file