diff --git a/functions b/functions index a3e80a1..4196518 100755 --- a/functions +++ b/functions @@ -100,11 +100,16 @@ dokku-ansible-deploy-pre-deploy() { declare desc="run the pre-deploy hook to setup an app" declare APP="$1" + declare APP_CONFIG_PATH="$DOKKU_LIB_ROOT/data/deploy.d/$APP" + declare PLUGIN_PATH="$PLUGIN_CORE_AVAILABLE_PATH/ansible-deploy" declare PREDEPLOY="$PLUGIN_CORE_AVAILABLE_PATH/ansible-deploy/scripts/predeploy.py" dokku_col_log_info1_quiet "Running pre-deploy steps" - /usr/bin/python3 "$PREDEPLOY" + /usr/bin/python3 "$PREDEPLOY" + --app "$APP" \ + --app-config-path "$APP_CONFIG_PATH" \ + --plugin-path "$PLUGIN_PATH" } dokku-ansible-deploy-post-deploy() { @@ -126,5 +131,5 @@ dokku-ansible-deploy-post-delete() { declare POSTDELETE="$PLUGIN_CORE_AVAILABLE_PATH/ansible-deploy/scripts/postdelete.py" dokku_col_log_info1_quiet "Running post-delete steps" - /usr/bin/python3 "$POSTDELETE" "$APP" + /usr/bin/python3 "$POSTDELETE" } diff --git a/scripts/predeploy.py b/scripts/predeploy.py index feb6944..91de252 100644 --- a/scripts/predeploy.py +++ b/scripts/predeploy.py @@ -1,10 +1,47 @@ #!/usr/bin/env python3 +from subprocess import check_output +from os.path import exists +from ruamel.yaml import YAML +from argparse import ArgumentParser -def predeploy(): +yaml = YAML() + +def yaml_load_file(target): + """Load a YAML file.""" + try: + with open(target, "r") as handle: + return yaml.load(handle.read()) + except Exception as exception: + msg = "-----> Failed to load {}, saw {}".format(target, str(exception)) + print(msg) + + +def load_config(app_config_path): + """Load the config.yml if it exists.""" + config = "{}/vault/config.yml".format(app_config_path) + + if exists(config): + print("-----> Loading {}".format(config)) + return yaml_load_file(config) + + print("-----> No {} discovered, moving on".format(config)) + + +def pre_deploy(app, app_config_path, plugin_path): """Pre-deploy steps.""" - pass + config = load_config(app_config_path) + + cmd = [ + "ansible-playbook", + "" + ] if __name__ == '__main__': - predeploy() + parser = ArgumentParser() + parser.add_argument("--app", help="app name") + parser.add_argument("--app-config-path", help="app config path") + parser.add_argument("--plugin-path", help="plugin path") + args = parser.parse_args() + pre_deploy(args.app, args.app_config_path, args.plugin_path)