-
Notifications
You must be signed in to change notification settings - Fork 7
Create template component for data deploy jobs #538
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 3 commits
e4f65b7
b5cd7f6
ec9e810
a6ff161
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| services: | ||
| scheduler: | ||
| volumes: | ||
| - ./optional-components/scheduler-job-deploy_data/config.yml:/scheduler-job-configs/deploy_data.yml:ro |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,11 @@ | ||||||||||||||||||||||||||||
| export SCHEDULER_JOB_DEPLOY_DATA_JOB_DOCKER='docker' | ||||||||||||||||||||||||||||
| export SCHEDULER_JOB_DEPLOY_DATA_JOB_VERSION='19.03.6-git' | ||||||||||||||||||||||||||||
| export SCHEDULER_JOB_DEPLOY_DATA_JOB_IMAGE='${SCHEDULER_JOB_DEPLOY_DATA_JOB_DOCKER}:${SCHEDULER_JOB_DEPLOY_DATA_JOB_VERSION}' | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| export SCHEDULER_JOB_DEPLOY_EXTRA_DOCKER_ARGS='$([ -n "$DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE" ] && echo "--volume ${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE}:${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE}:ro --env DEPLOY_DATA_GIT_SSH_IDENTITY_FILE=${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE} ")' | ||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||
| # Location of ssh private key for git clone over ssh, useful for private repos. | |
| #DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE="/path/to/id_rsa" | |
| #DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE=/home/vagrant/.ssh/id_rsa_git_ssh_read_only |
This var is reset at the end, allowing for different key per job, see
birdhouse-deploy/birdhouse/components/scheduler/deploy_data_job.env
Lines 106 to 115 in b5cd7f6
| # Reset all config vars to prevent cross-contamination between successive invocations. | |
| DEPLOY_DATA_JOB_SCHEDULE="" | |
| DEPLOY_DATA_JOB_JOB_NAME="" | |
| DEPLOY_DATA_JOB_CONFIG="" | |
| DEPLOY_DATA_JOB_CHECKOUT_CACHE="" | |
| DEPLOY_DATA_JOB_LOGFILE="" | |
| DEPLOY_DATA_JOB_JOB_DESCRIPTION="" | |
| DEPLOY_DATA_JOB_DOCKER_IMAGE="" | |
| DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE="" | |
| DEPLOY_DATA_JOB_DOCKER_RUN_EXTRA_OPTS="" |
Now looking back at this list, DEPLOY_DATA_JOB_DOCKER_IMAGE was also possible to have a different image per job, with a default if unset !
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With your new commit ec9e810, I think this SCHEDULER_JOB_DEPLOY_EXTRA_DOCKER_ARGS is unused and can be deleted.
| Original file line number | Diff line number | Diff line change | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,52 @@ | ||||||||||||
| generate_scheduler_job_deploy_data_template() { | ||||||||||||
| job_id="$1" | ||||||||||||
| name="$(eval "echo \"\$SCHEDULER_JOB_${job_id}_DEPLOY_DATA_JOB_NAME\"")" | ||||||||||||
| comment="$(eval "echo \"\$SCHEDULER_JOB_${job_id}_DEPLOY_DATA_JOB_COMMENT\"")" | ||||||||||||
| schedule="$(eval "echo \"\$SCHEDULER_JOB_${job_id}_DEPLOY_DATA_JOB_SCHEDULE\"")" | ||||||||||||
| config_file="$(eval "echo \"\$SCHEDULER_JOB_${job_id}_DEPLOY_DATA_JOB_CONFIG_FILE\"")" | ||||||||||||
| checkout_cache="$(eval "echo \"\$SCHEDULER_JOB_${job_id}_DEPLOY_DATA_JOB_CHECKOUT_CACHE\"")" | ||||||||||||
| log_file_name="$(eval "echo \"\$SCHEDULER_JOB_${job_id}_DEPLOY_DATA_JOB_LOG_FILENAME\"")" | ||||||||||||
| image="$(eval "echo \"\$SCHEDULER_JOB_${job_id}_DEPLOY_DATA_JOB_DOCKER_IMAGE\"")" | ||||||||||||
| git_ssh_id_file="$(eval "echo \"\$SCHEDULER_JOB_${job_id}_DEPLOY_DATA_JOB_GIT_SSH_ID_FILE\"")" | ||||||||||||
| extra_options="$(eval "echo \"\$SCHEDULER_JOB_${job_id}_DEPLOY_DATA_JOB_EXTRA_OPTIONS\"")" | ||||||||||||
|
|
||||||||||||
| error_msg = "No XXX found for deploy data job with id '$job_id'" | ||||||||||||
| [ -z "$name" ] && log ERROR "$(sed $error_msg | 's/XXX/name/')" && return 1 | ||||||||||||
| [ -z "$schedule" ] && log ERROR "$(sed $error_msg | 's/XXX/schedule/')" && return 1 | ||||||||||||
| [ -z "$config_file" ] && log ERROR "$(sed $error_msg | 's/XXX/config_file/')" && return 1 | ||||||||||||
|
|
||||||||||||
| comment="${comment:-"${name}"}" | ||||||||||||
| checkout_cache="${checkout_cache:-"${name}"}" | ||||||||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The default for birdhouse-deploy/birdhouse/components/scheduler/deploy_data_job.env Lines 39 to 43 in b5cd7f6
|
||||||||||||
| image="${image:-"${SCHEDULER_JOB_DEPLOY_DATA_JOB_IMAGE}"}" | ||||||||||||
| git_ssh_id_file="${git_ssh_id_file:-"${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE}"}" | ||||||||||||
| log_file_name="${log_file_name:-"${name}.log"}" | ||||||||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
birdhouse-deploy/birdhouse/components/scheduler/deploy_data_job.env Lines 45 to 48 in b5cd7f6
|
||||||||||||
|
|
||||||||||||
| if [ -n "$git_ssh_id_file" ]; then | ||||||||||||
| git_ssh_id_options="--volume ${git_ssh_id_file}:${git_ssh_id_file}:ro --env DEPLOY_DATA_GIT_SSH_IDENTITY_FILE=${git_ssh_id_file} " | ||||||||||||
| fi | ||||||||||||
|
|
||||||||||||
| echo " | ||||||||||||
| - name: '${name}' | ||||||||||||
| comment: '${comment}' | ||||||||||||
| schedule: '${schedule}' | ||||||||||||
| command: '/deploy-data ${config_file}' | ||||||||||||
| dockerargs: >- | ||||||||||||
| --rm --name '${name}' | ||||||||||||
| --volume /var/run/docker.sock:/var/run/docker.sock:ro | ||||||||||||
| --volume ${COMPOSE_DIR}/deployment/deploy-data:/deploy-data:ro | ||||||||||||
| --volume ${config_file}:${config_file}:ro | ||||||||||||
| --volume ${checkout_cache}:${checkout_cache}:rw | ||||||||||||
| --volume ${BIRDHOUSE_LOG_DIR}:${BIRDHOUSE_LOG_DIR}:rw | ||||||||||||
| --env DEPLOY_DATA_CHECKOUT_CACHE=${checkout_cache} | ||||||||||||
| --env DEPLOY_DATA_LOGFILE=${log_file_name} ${git_ssh_id_options} ${extra_options} | ||||||||||||
| image: '${image}' | ||||||||||||
| " | ||||||||||||
| } | ||||||||||||
|
|
||||||||||||
| SCHEDULER_JOB_DEPLOY_DATA_JOB_CONFIG_FILE="${COMPOSE_DIR}/optional-components/scheduler-job-deploy_data/config.yml" | ||||||||||||
|
|
||||||||||||
| echo > "$SCHEDULER_JOB_DEPLOY_DATA_JOB_CONFIG_FILE" | ||||||||||||
|
|
||||||||||||
| for job_id in $SCHEDULER_JOB_DEPLOY_DATA_JOB_IDS; do | ||||||||||||
| generate_scheduler_job_deploy_data_template "$job_id" >> "$SCHEDULER_JOB_DEPLOY_DATA_JOB_CONFIG_FILE" | ||||||||||||
| done | ||||||||||||
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,29 +1,20 @@ | ||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_NAME=deploy_raven_testdata_to_thredds | ||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_COMMENT="Auto-deploy Raven testdata to Thredds for Raven tutorial notebooks." | ||||||||||||||||||||||||
mishaschwartz marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_CHECKOUT_CACHE='${BIRDHOUSE_DATA_PERSIST_ROOT}/deploy_data_cache/deploy_raven_testdata_to_thredds' | ||||||||||||||||||||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. JOB_CHECKOUT_CACHE default generated from JOB_NAME if unset, see birdhouse-deploy/birdhouse/components/scheduler/deploy_data_job.env Lines 39 to 43 in b5cd7f6
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. With your new commit ec9e810, I think this job specific |
||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_LOG_FILENAME='deploy_raven_testdata_to_thredds.log' | ||||||||||||||||||||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. JOB_LOG_FILENAME also have default generated from JOB_NAME, see birdhouse-deploy/birdhouse/components/scheduler/deploy_data_job.env Lines 45 to 48 in b5cd7f6
The previous birdhouse-deploy/birdhouse/components/scheduler/deploy_raven_testdata_to_thredds.env Lines 1 to 7 in 3a1fa93
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yup this is the same: only name, schedule and config file need to be specified. |
||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_SCHEDULE="*/30 * * * *" # UTC | ||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_SCHEDULE='*/30 * * * *' # UTC | ||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_CONFIG_FILE="${COMPOSE_DIR}/deployment/deploy-data-raven-testdata-to-thredds.yml" | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_DOCKER='docker' | ||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_VERSION='19.03.6-git' | ||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_IMAGE='${SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_DOCKER}:${SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_VERSION}' | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| export SCHEDULER_JOB_RAVEN_DEPLOY_EXTRA_DOCKER_ARGS='$([ -n "$DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE" ] && echo "--volume ${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE}:${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE}:ro --env DEPLOY_DATA_GIT_SSH_IDENTITY_FILE=${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE} ")' | ||||||||||||||||||||||||
| export SCHEDULER_JOB_DEPLOY_DATA_JOB_IDS=" | ||||||||||||||||||||||||
| $SCHEDULER_JOB_DEPLOY_DATA_JOB_IDS | ||||||||||||||||||||||||
| RAVEN | ||||||||||||||||||||||||
| " | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| DELAYED_EVAL=" | ||||||||||||||||||||||||
| $DELAYED_EVAL | ||||||||||||||||||||||||
| SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_CHECKOUT_CACHE | ||||||||||||||||||||||||
| SCHEDULER_JOB_RAVEN_DEPLOY_EXTRA_DOCKER_ARGS | ||||||||||||||||||||||||
| SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_IMAGE | ||||||||||||||||||||||||
| " | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| VARS=" | ||||||||||||||||||||||||
| $VARS | ||||||||||||||||||||||||
| \$SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_CHECKOUT_CACHE | ||||||||||||||||||||||||
| \$SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_SCHEDULE$ | ||||||||||||||||||||||||
| \$SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_IMAGE | ||||||||||||||||||||||||
| \$SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_LOG_FILENAME | ||||||||||||||||||||||||
| " | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| OPTIONAL_VARS=" | ||||||||||||||||||||||||
| $OPTIONAL_VARS | ||||||||||||||||||||||||
| \$SCHEDULER_JOB_RAVEN_DEPLOY_EXTRA_DOCKER_ARGS | ||||||||||||||||||||||||
| COMPONENT_DEPENDENCIES=" | ||||||||||||||||||||||||
| ./optional-components/scheduler-job-deploy_data | ||||||||||||||||||||||||
| " | ||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,7 +1,3 @@ | ||
| if ! echo "${BIRDHOUSE_EXTRA_CONF_DIRS}" | grep -q 'thredds[[:space:]]*$'; then | ||
| log WARN 'The scheduler-job-deploy_raven_testdata component is enabled but the thredds component is not. This WILL cause problems. Please disable the scheduler-job-deploy_raven_testdata component.' | ||
| fi | ||
|
|
||
| if ! echo "${BIRDHOUSE_EXTRA_CONF_DIRS}" | grep -q 'raven[[:space:]]*$'; then | ||
| log WARN 'The scheduler-job-deploy_raven_testdata component is enabled but the raven component is not. Are you sure you want to enable the scheduler-job-deploy_raven_testdata component?' | ||
| fi |
This file was deleted.
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,29 +1,20 @@ | ||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_NAME=deploy_xclim_testdata_to_thredds | ||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_COMMENT='Auto-deploy Xclim testdata to Thredds for Finch and Xclim tutorial notebooks.' | ||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_CHECKOUT_CACHE='${BIRDHOUSE_DATA_PERSIST_ROOT}/deploy_data_cache/deploy_xclim_testdata_to_thredds' | ||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_LOG_FILENAME='deploy_xclim_testdata_to_thredds.log' | ||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_SCHEDULE="7,37 * * * *" # UTC | ||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_SCHEDULE='7,37 * * * *' # UTC | ||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_CONFIG_FILE="${COMPOSE_DIR}/deployment/deploy-data-xclim-testdata-to-thredds.yml" | ||
|
|
||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_DOCKER='docker' | ||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_VERSION='19.03.6-git' | ||
| export SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_IMAGE='${SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_DOCKER}:${SCHEDULER_JOB_RAVEN_DEPLOY_DATA_JOB_VERSION}' | ||
|
|
||
| export SCHEDULER_JOB_XCLIM_DEPLOY_EXTRA_DOCKER_ARGS='$([ -n "$DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE" ] && echo "--volume ${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE}:${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE}:ro --env DEPLOY_DATA_GIT_SSH_IDENTITY_FILE=${DEPLOY_DATA_JOB_GIT_SSH_IDENTITY_FILE} ")' | ||
| export SCHEDULER_JOB_DEPLOY_DATA_JOB_IDS=" | ||
| $SCHEDULER_JOB_DEPLOY_DATA_JOB_IDS | ||
| XCLIM | ||
| " | ||
|
|
||
| DELAYED_EVAL=" | ||
| $DELAYED_EVAL | ||
| SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_CHECKOUT_CACHE | ||
| SCHEDULER_JOB_XCLIM_DEPLOY_EXTRA_DOCKER_ARGS | ||
| SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_IMAGE | ||
| " | ||
|
|
||
| VARS=" | ||
| $VARS | ||
| \$SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_CHECKOUT_CACHE | ||
| \$SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_SCHEDULE | ||
| \$SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_LOG_FILENAME | ||
| \$SCHEDULER_JOB_XCLIM_DEPLOY_DATA_JOB_IMAGE | ||
| " | ||
|
|
||
| OPTIONAL_VARS=" | ||
| $OPTIONAL_VARS | ||
| \$SCHEDULER_JOB_XCLIM_DEPLOY_EXTRA_DOCKER_ARGS | ||
| " | ||
| COMPONENT_DEPENDENCIES=" | ||
| ./optional-components/scheduler-job-deploy_data | ||
| " |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice interface !