From b8efde2d9533b4861773f104d5204f76dfbf75de Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 20 Feb 2023 23:26:44 -0500 Subject: [PATCH 01/12] feat: add ability to skip restarts on link and unlink Refs dokku/dokku-redis#192 --- README.md | 13 ++++++++++++- common-functions | 10 +++++++--- subcommands/link | 5 +++++ subcommands/unlink | 1 + subcommands/upgrade | 2 +- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 602ce7f..1719fe0 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,7 @@ flags: - `-a|--alias "BLUE_DATABASE"`: an alternative alias to use for linking to an app via environment variable - `-q|--querystring "pool=5"`: ampersand delimited querystring arguments to append to the service link +- `-n|--no-restart "false"`: whether or not to restart the app on link (default: true) A meilisearch service can be linked to a container. This will use native docker links via the docker-options plugin. Here we link it to our `playground` app. @@ -233,6 +234,12 @@ This will cause `MEILISEARCH_URL` to be set as: http2://lollipop:SOME_PASSWORD@dokku-meilisearch-lollipop:7700/lollipop ``` +If you specify `MEILISEARCH_DATABASE_SCHEME` to equal `http`, we`ll also automatically adjust `MEILISEARCH_URL` to match the http interface: + +``` +http://lollipop:SOME_PASSWORD@dokku-meilisearch-lollipop:${PLUGIN_DATASTORE_PORTS[1]} +``` + ### unlink the meilisearch service from the app ```shell @@ -240,6 +247,10 @@ http2://lollipop:SOME_PASSWORD@dokku-meilisearch-lollipop:7700/lollipop dokku meilisearch:unlink ``` +flags: + +- `-n|--no-restart "false"`: whether or not to restart the app on unlink (default: true) + You can unlink a meilisearch service: > NOTE: this will restart your app and unset related environment variables @@ -426,7 +437,7 @@ flags: - `-I|--image-version IMAGE_VERSION`: the image version to start the service with - `-N|--initial-network INITIAL_NETWORK`: the initial network to attach the service to - `-P|--post-create-network NETWORKS`: a comman-separated list of networks to attach the service container to after service creation -- `-R|--restart-apps "true"`: whether to force an app restart +- `-R|--restart-apps "true"`: whether or not to force an app restart (default: false) - `-S|--post-start-network NETWORKS`: a comman-separated list of networks to attach the service container to after service start - `-s|--shm-size SHM_SIZE`: override shared memory size for meilisearch docker container diff --git a/common-functions b/common-functions index 10a4677..17a6da4 100755 --- a/common-functions +++ b/common-functions @@ -631,7 +631,7 @@ service_link() { fi [[ -n "$SERVICE_QUERYSTRING" ]] && SERVICE_URL="${SERVICE_URL}?${SERVICE_QUERYSTRING}" plugn trigger service-action post-link "$PLUGIN_COMMAND_PREFIX" "$SERVICE" "$APP" - if [[ "$DOKKU_GLOBAL_FLAGS" == *"--no-restart"* ]]; then + if [[ "$DOKKU_GLOBAL_FLAGS" == *"--no-restart"* ]] || [[ "$SERVICE_RESTART_APPS" == "false" ]]; then config_set --no-restart "$APP" "${ALIAS}_URL=$SERVICE_URL" else config_set "$APP" "${ALIAS}_URL=$SERVICE_URL" @@ -714,6 +714,7 @@ service_parse_args() { "--initial-network") set -- "$@" "-N" ;; "--image") set -- "$@" "-i" ;; "--memory") set -- "$@" "-m" ;; + "--no-restart") set -- "$@" "-n" ;; "--password") set -- "$@" "-p" ;; "--post-create-network") set -- "$@" "-P" ;; "--post-start-network") set -- "$@" "-S" ;; @@ -727,7 +728,7 @@ service_parse_args() { done OPTIND=1 - while getopts "a:c:C:d:i:I:m:n:N:p:P:q:R:r:s:S:u:" opt; do + while getopts "a:c:C:d:i:I:m:n:nN:p:P:q:R:r:s:S:u:" opt; do case "$opt" in a) SERVICE_ALIAS="${OPTARG^^}" @@ -751,6 +752,9 @@ service_parse_args() { m) export SERVICE_MEMORY=$OPTARG ;; + n) + export SERVICE_RESTART_APPS=false + ;; N) export SERVICE_INITIAL_NETWORK=$OPTARG ;; @@ -971,7 +975,7 @@ service_unlink() { [[ -z ${LINK[*]} ]] && dokku_log_fail "Not linked to app $APP" plugn trigger service-action post-unlink "$PLUGIN_COMMAND_PREFIX" "$SERVICE" "$APP" - if [[ "$DOKKU_GLOBAL_FLAGS" == *"--no-restart"* ]]; then + if [[ "$DOKKU_GLOBAL_FLAGS" == *"--no-restart"* ]] || [[ "$SERVICE_RESTART_APPS" == "false" ]]; then config_unset --no-restart "$APP" "${LINK[@]}" else config_unset "$APP" "${LINK[@]}" diff --git a/subcommands/link b/subcommands/link index 01c3028..f59f82a 100755 --- a/subcommands/link +++ b/subcommands/link @@ -38,10 +38,15 @@ service-link-cmd() { #E this will cause ${PLUGIN_DEFAULT_ALIAS}_URL to be set as: #E #E ${PLUGIN_SCHEME}2://lollipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[0]}/lollipop + #E + #E If you specify ${PLUGIN_VARIABLE}_DATABASE_SCHEME to equal `http`, we'll also automatically adjust ${PLUGIN_DEFAULT_ALIAS}_URL to match the http interface: + #E + #E http://lollipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[1]} #A service, service to run command against #A app, app to run command against #F -a|--alias "BLUE_DATABASE", an alternative alias to use for linking to an app via environment variable #F -q|--querystring "pool=5", ampersand delimited querystring arguments to append to the service link + #F -n|--no-restart "false", whether or not to restart the app on link (default: true) declare desc="link the $PLUGIN_SERVICE service to the app" local cmd="$PLUGIN_COMMAND_PREFIX:link" argv=("$@") [[ ${argv[0]} == "$cmd" ]] && shift 1 diff --git a/subcommands/unlink b/subcommands/unlink index 7819079..63c4c97 100755 --- a/subcommands/unlink +++ b/subcommands/unlink @@ -11,6 +11,7 @@ service-unlink-cmd() { #E dokku $PLUGIN_COMMAND_PREFIX:unlink lollipop playground #A service, service to run command against #A app, app to run command against + #F -n|--no-restart "false", whether or not to restart the app on unlink (default: true) declare desc="unlink the $PLUGIN_SERVICE service from the app" local cmd="$PLUGIN_COMMAND_PREFIX:unlink" argv=("$@") [[ ${argv[0]} == "$cmd" ]] && shift 1 diff --git a/subcommands/upgrade b/subcommands/upgrade index 898b268..93352c1 100755 --- a/subcommands/upgrade +++ b/subcommands/upgrade @@ -16,7 +16,7 @@ service-upgrade-cmd() { #F -I|--image-version IMAGE_VERSION, the image version to start the service with #F -N|--initial-network INITIAL_NETWORK, the initial network to attach the service to #F -P|--post-create-network NETWORKS, a comman-separated list of networks to attach the service container to after service creation - #F -R|--restart-apps "true", whether to force an app restart + #F -R|--restart-apps "true", whether or not to force an app restart (default: false) #F -S|--post-start-network NETWORKS, a comman-separated list of networks to attach the service container to after service start #F -s|--shm-size SHM_SIZE, override shared memory size for $PLUGIN_COMMAND_PREFIX docker container declare desc="upgrade service to the specified versions" From 072fc1558cb263b226834635d3a6b6bdc42849d2 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 20 Feb 2023 23:35:12 -0500 Subject: [PATCH 02/12] chore: make all the service names used in the service_link tests the same --- tests/service_link.bats | 60 ++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/tests/service_link.bats b/tests/service_link.bats index 76e0942..eafa491 100755 --- a/tests/service_link.bats +++ b/tests/service_link.bats @@ -2,14 +2,14 @@ load test_helper setup() { - dokku "$PLUGIN_COMMAND_PREFIX:create" l - dokku "$PLUGIN_COMMAND_PREFIX:create" m + dokku "$PLUGIN_COMMAND_PREFIX:create" ls + dokku "$PLUGIN_COMMAND_PREFIX:create" ms dokku apps:create my-app } teardown() { - dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" m - dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l + dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ms + dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ls dokku --force apps:destroy my-app } @@ -22,7 +22,7 @@ teardown() { } @test "($PLUGIN_COMMAND_PREFIX:link) error when the app argument is missing" { - run dokku "$PLUGIN_COMMAND_PREFIX:link" l + run dokku "$PLUGIN_COMMAND_PREFIX:link" ls echo "output: $output" echo "status: $status" assert_contains "${lines[*]}" "Please specify an app to run the command on" @@ -30,7 +30,7 @@ teardown() { } @test "($PLUGIN_COMMAND_PREFIX:link) error when the app does not exist" { - run dokku "$PLUGIN_COMMAND_PREFIX:link" l not_existing_app + run dokku "$PLUGIN_COMMAND_PREFIX:link" ls not_existing_app echo "output: $output" echo "status: $status" assert_contains "${lines[*]}" "App not_existing_app does not exist" @@ -46,73 +46,73 @@ teardown() { } @test "($PLUGIN_COMMAND_PREFIX:link) error when the service is already linked to app" { - dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app - run dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app + run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app echo "output: $output" echo "status: $status" assert_contains "${lines[*]}" "Already linked as MEILISEARCH_URL" assert_failure - dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } @test "($PLUGIN_COMMAND_PREFIX:link) exports MEILISEARCH_URL to app" { - run dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app + run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app echo "output: $output" echo "status: $status" url=$(dokku config:get my-app MEILISEARCH_URL) - password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")" - assert_contains "$url" "http://:$password@dokku-meilisearch-l:7700" + password="$(sudo cat "$PLUGIN_DATA_ROOT/ls/PASSWORD")" + assert_contains "$url" "http://:$password@dokku-meilisearch-ls:7700" assert_success - dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } @test "($PLUGIN_COMMAND_PREFIX:link) generates an alternate config url when MEILISEARCH_URL already in use" { dokku config:set my-app MEILISEARCH_URL=http://user:pass@host:7700/db - dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app run dokku config my-app assert_contains "${lines[*]}" "DOKKU_MEILISEARCH_AQUA_URL" assert_success - dokku "$PLUGIN_COMMAND_PREFIX:link" m my-app + dokku "$PLUGIN_COMMAND_PREFIX:link" ms my-app run dokku config my-app assert_contains "${lines[*]}" "DOKKU_MEILISEARCH_BLACK_URL" assert_success - dokku "$PLUGIN_COMMAND_PREFIX:unlink" m my-app - dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ms my-app + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } @test "($PLUGIN_COMMAND_PREFIX:link) links to app with docker-options" { - dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app run dokku docker-options:report my-app - assert_contains "${lines[*]}" "--link dokku.meilisearch.l:dokku-meilisearch-l" + assert_contains "${lines[*]}" "--link dokku.meilisearch.ls:dokku-meilisearch-ls" assert_success - dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } @test "($PLUGIN_COMMAND_PREFIX:link) uses apps MEILISEARCH_DATABASE_SCHEME variable" { dokku config:set my-app MEILISEARCH_DATABASE_SCHEME=http2 - dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app url=$(dokku config:get my-app MEILISEARCH_URL) - password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")" - assert_contains "$url" "http2://:$password@dokku-meilisearch-l:7700" + password="$(sudo cat "$PLUGIN_DATA_ROOT/ls/PASSWORD")" + assert_contains "$url" "http2://:$password@dokku-meilisearch-ls:7700" assert_success - dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } @test "($PLUGIN_COMMAND_PREFIX:link) adds a querystring" { - dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app --querystring "pool=5" + dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --querystring "pool=5" url=$(dokku config:get my-app MEILISEARCH_URL) assert_contains "$url" "?pool=5" assert_success - dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } @test "($PLUGIN_COMMAND_PREFIX:link) uses a specified config url when alias is specified" { - dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app --alias "ALIAS" + dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --alias "ALIAS" url=$(dokku config:get my-app ALIAS_URL) - password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")" - assert_contains "$url" "http://:$password@dokku-meilisearch-l:7700" + password="$(sudo cat "$PLUGIN_DATA_ROOT/ls/PASSWORD")" + assert_contains "$url" "http://:$password@dokku-meilisearch-ls:7700" assert_success - dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } From f59274b756a823ca41a3aa190b56cc7fa8cbef49 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 20 Feb 2023 23:40:09 -0500 Subject: [PATCH 03/12] chore: make all the service names used in the service_unlink tests the same --- tests/service_unlink.bats | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/service_unlink.bats b/tests/service_unlink.bats index aaa20fb..ac306fa 100755 --- a/tests/service_unlink.bats +++ b/tests/service_unlink.bats @@ -3,11 +3,11 @@ load test_helper setup() { dokku apps:create my-app - dokku "$PLUGIN_COMMAND_PREFIX:create" l + dokku "$PLUGIN_COMMAND_PREFIX:create" ls } teardown() { - dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l + dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" ls dokku --force apps:destroy my-app } @@ -17,12 +17,12 @@ teardown() { } @test "($PLUGIN_COMMAND_PREFIX:unlink) error when the app argument is missing" { - run dokku "$PLUGIN_COMMAND_PREFIX:unlink" l + run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls assert_contains "${lines[*]}" "Please specify an app to run the command on" } @test "($PLUGIN_COMMAND_PREFIX:unlink) error when the app does not exist" { - run dokku "$PLUGIN_COMMAND_PREFIX:unlink" l not_existing_app + run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls not_existing_app assert_contains "${lines[*]}" "App not_existing_app does not exist" } @@ -32,13 +32,13 @@ teardown() { } @test "($PLUGIN_COMMAND_PREFIX:unlink) error when service not linked to app" { - run dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app assert_contains "${lines[*]}" "Not linked to app my-app" } @test "($PLUGIN_COMMAND_PREFIX:unlink) removes link from docker-options" { - dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app >&2 - dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app >&2 + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app check_value="Docker options build: Docker options deploy: --restart=on-failure:10 Docker options run:" options=$(dokku --quiet docker-options:report my-app | xargs) @@ -46,8 +46,8 @@ teardown() { } @test "($PLUGIN_COMMAND_PREFIX:unlink) unsets config url from app" { - dokku "$PLUGIN_COMMAND_PREFIX:link" l my-app >&2 - dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my-app + dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app >&2 + dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app config=$(dokku config:get my-app MEILISEARCH_URL || true) assert_equal "$config" "" } From c9608d750259224f50452ba9afcc1dd34a1f5729 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 20 Feb 2023 23:47:03 -0500 Subject: [PATCH 04/12] tests: add test for --no-restart to unlink tests --- tests/service_unlink.bats | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/service_unlink.bats b/tests/service_unlink.bats index ac306fa..a1bac08 100755 --- a/tests/service_unlink.bats +++ b/tests/service_unlink.bats @@ -51,3 +51,9 @@ teardown() { config=$(dokku config:get my-app MEILISEARCH_URL || true) assert_equal "$config" "" } + +@test "($PLUGIN_COMMAND_PREFIX:unlink) respects --no-restart" { + run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app --no-restart + assert_output_contains "Restarting app my-app" 0 + assert_success +} From 216f251341c323cc91e49db2ee827f65a98a936e Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 20 Feb 2023 23:51:27 -0500 Subject: [PATCH 05/12] tests: add test for --no-restart to link tests --- tests/service_link.bats | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/service_link.bats b/tests/service_link.bats index eafa491..8b8e313 100755 --- a/tests/service_link.bats +++ b/tests/service_link.bats @@ -116,3 +116,19 @@ teardown() { assert_success dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } + +@test "($PLUGIN_COMMAND_PREFIX:unlink) respects --no-restart" { + run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --no-restart + assert_output_contains "Restarting app my-app" 1 + assert_success + + run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app + assert_success + + run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --no-restart + assert_output_contains "Restarting app my-app" 0 + assert_success + + run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app + assert_success +} From 0dbb1faf8727b320dda9314fbeed75f6d7eeda1c Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 21 Feb 2023 00:08:53 -0500 Subject: [PATCH 06/12] tests: add output/status and flesh out restart tests a bit more --- tests/service_link.bats | 10 +++++++++- tests/service_unlink.bats | 13 +++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/service_link.bats b/tests/service_link.bats index 8b8e313..ca9a736 100755 --- a/tests/service_link.bats +++ b/tests/service_link.bats @@ -117,18 +117,26 @@ teardown() { dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } -@test "($PLUGIN_COMMAND_PREFIX:unlink) respects --no-restart" { +@test "($PLUGIN_COMMAND_PREFIX:link) respects --no-restart" { run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --no-restart + echo "output: $output" + echo "status: $status" assert_output_contains "Restarting app my-app" 1 assert_success run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app + echo "output: $output" + echo "status: $status" assert_success run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --no-restart + echo "output: $output" + echo "status: $status" assert_output_contains "Restarting app my-app" 0 assert_success run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app + echo "output: $output" + echo "status: $status" assert_success } diff --git a/tests/service_unlink.bats b/tests/service_unlink.bats index a1bac08..0760a46 100755 --- a/tests/service_unlink.bats +++ b/tests/service_unlink.bats @@ -53,7 +53,20 @@ teardown() { } @test "($PLUGIN_COMMAND_PREFIX:unlink) respects --no-restart" { + run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app + echo "output: $output" + echo "status: $status" + assert_output_contains "Restarting app my-app" 1 + assert_success + + run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app + echo "output: $output" + echo "status: $status" + assert_success + run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app --no-restart + echo "output: $output" + echo "status: $status" assert_output_contains "Restarting app my-app" 0 assert_success } From f927b4234bca8efac1f0e9815065a793a125e0e6 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 21 Feb 2023 00:29:30 -0500 Subject: [PATCH 07/12] fix: move arg-less flags to the front --- common-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-functions b/common-functions index 17a6da4..7472f84 100755 --- a/common-functions +++ b/common-functions @@ -728,7 +728,7 @@ service_parse_args() { done OPTIND=1 - while getopts "a:c:C:d:i:I:m:n:nN:p:P:q:R:r:s:S:u:" opt; do + while getopts "na:c:C:d:i:I:m:n:N:p:P:q:R:r:s:S:u:" opt; do case "$opt" in a) SERVICE_ALIAS="${OPTARG^^}" From 9c5aa6cf037888687ddc3f4a22b7166b50c19094 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 21 Feb 2023 00:48:22 -0500 Subject: [PATCH 08/12] fix: update tests to properly handle case where app is not running --- common-functions | 2 ++ tests/service_link.bats | 7 ++++--- tests/service_unlink.bats | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/common-functions b/common-functions index 7472f84..0b3b952 100755 --- a/common-functions +++ b/common-functions @@ -633,6 +633,7 @@ service_link() { plugn trigger service-action post-link "$PLUGIN_COMMAND_PREFIX" "$SERVICE" "$APP" if [[ "$DOKKU_GLOBAL_FLAGS" == *"--no-restart"* ]] || [[ "$SERVICE_RESTART_APPS" == "false" ]]; then config_set --no-restart "$APP" "${ALIAS}_URL=$SERVICE_URL" + dokku_log_verbose "Skipping restart of linked app" else config_set "$APP" "${ALIAS}_URL=$SERVICE_URL" fi @@ -977,6 +978,7 @@ service_unlink() { plugn trigger service-action post-unlink "$PLUGIN_COMMAND_PREFIX" "$SERVICE" "$APP" if [[ "$DOKKU_GLOBAL_FLAGS" == *"--no-restart"* ]] || [[ "$SERVICE_RESTART_APPS" == "false" ]]; then config_unset --no-restart "$APP" "${LINK[@]}" + dokku_log_verbose "Skipping restart of linked app" else config_unset "$APP" "${LINK[@]}" fi diff --git a/tests/service_link.bats b/tests/service_link.bats index ca9a736..a7a1dfc 100755 --- a/tests/service_link.bats +++ b/tests/service_link.bats @@ -117,11 +117,12 @@ teardown() { dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } + @test "($PLUGIN_COMMAND_PREFIX:link) respects --no-restart" { - run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --no-restart + run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app echo "output: $output" echo "status: $status" - assert_output_contains "Restarting app my-app" 1 + assert_output_contains "Skipping restart of linked app" 0 assert_success run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app @@ -132,7 +133,7 @@ teardown() { run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app --no-restart echo "output: $output" echo "status: $status" - assert_output_contains "Restarting app my-app" 0 + assert_output_contains "Skipping restart of linked app" assert_success run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app diff --git a/tests/service_unlink.bats b/tests/service_unlink.bats index 0760a46..3458cbb 100755 --- a/tests/service_unlink.bats +++ b/tests/service_unlink.bats @@ -56,7 +56,7 @@ teardown() { run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app echo "output: $output" echo "status: $status" - assert_output_contains "Restarting app my-app" 1 + assert_output_contains "Skipping restart of linked app" 0 assert_success run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app @@ -67,6 +67,6 @@ teardown() { run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app --no-restart echo "output: $output" echo "status: $status" - assert_output_contains "Restarting app my-app" 0 + assert_output_contains "Skipping restart of linked app" assert_success } From 1bf2b54c16faa2977f13276dbf9ae5e363d5bee2 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 21 Feb 2023 00:49:17 -0500 Subject: [PATCH 09/12] chore: remove extra newline --- tests/service_link.bats | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/service_link.bats b/tests/service_link.bats index a7a1dfc..6a02d84 100755 --- a/tests/service_link.bats +++ b/tests/service_link.bats @@ -117,7 +117,6 @@ teardown() { dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app } - @test "($PLUGIN_COMMAND_PREFIX:link) respects --no-restart" { run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app echo "output: $output" From b42fdd8e251060fd37489fd5ad79ed5e31d61d2d Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 25 Feb 2023 00:40:36 -0500 Subject: [PATCH 10/12] chore: update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1719fe0..817c1b1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # dokku meilisearch [![Build Status](https://img.shields.io/github/actions/workflow/status/dokku/dokku-meilisearch/ci.yml?branch=master&style=flat-square "Build Status")](https://github.com/dokku/dokku-meilisearch/actions/workflows/ci.yml?query=branch%3Amaster) [![IRC Network](https://img.shields.io/badge/irc-libera-blue.svg?style=flat-square "IRC Libera")](https://webchat.libera.chat/?channels=dokku) -Official meilisearch plugin for dokku. Currently defaults to installing [getmeili/meilisearch v1.0.0](https://hub.docker.com/r/getmeili/meilisearch/). +Official meilisearch plugin for dokku. Currently defaults to installing [getmeili/meilisearch v1.0.2](https://hub.docker.com/r/getmeili/meilisearch/). ## Requirements From 38417ca8a03027b31dbc810a229eaa719966c880 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 25 Feb 2023 00:47:25 -0500 Subject: [PATCH 11/12] tests: link service before unlinking --- tests/service_unlink.bats | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/service_unlink.bats b/tests/service_unlink.bats index 3458cbb..1ad3c8b 100755 --- a/tests/service_unlink.bats +++ b/tests/service_unlink.bats @@ -53,6 +53,11 @@ teardown() { } @test "($PLUGIN_COMMAND_PREFIX:unlink) respects --no-restart" { + run dokku "$PLUGIN_COMMAND_PREFIX:link" ls my-app + echo "output: $output" + echo "status: $status" + assert_success + run dokku "$PLUGIN_COMMAND_PREFIX:unlink" ls my-app echo "output: $output" echo "status: $status" From af4cfd3fd6575f10c871c9473949c9c0d3b89e55 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 25 Feb 2023 01:50:30 -0500 Subject: [PATCH 12/12] fix: update link docs to remove erroneous copy-paste --- README.md | 10 ++-------- subcommands/link | 8 ++------ 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 817c1b1..cd53ea2 100644 --- a/README.md +++ b/README.md @@ -212,7 +212,7 @@ DOKKU_MEILISEARCH_LOLLIPOP_PORT_7700_TCP_ADDR=172.17.0.1 The following will be set on the linked application by default: ``` -MEILISEARCH_URL=http://lollipop:SOME_PASSWORD@dokku-meilisearch-lollipop:7700/lollipop +MEILISEARCH_URL=http://:SOME_PASSWORD@dokku-meilisearch-lollipop:7700 ``` The host exposed here only works internally in docker containers. If you want your container to be reachable from outside, you should use the `expose` subcommand. Another service can be linked to your app: @@ -231,13 +231,7 @@ dokku meilisearch:link lollipop playground This will cause `MEILISEARCH_URL` to be set as: ``` -http2://lollipop:SOME_PASSWORD@dokku-meilisearch-lollipop:7700/lollipop -``` - -If you specify `MEILISEARCH_DATABASE_SCHEME` to equal `http`, we`ll also automatically adjust `MEILISEARCH_URL` to match the http interface: - -``` -http://lollipop:SOME_PASSWORD@dokku-meilisearch-lollipop:${PLUGIN_DATASTORE_PORTS[1]} +http2://:SOME_PASSWORD@dokku-meilisearch-lollipop:7700 ``` ### unlink the meilisearch service from the app diff --git a/subcommands/link b/subcommands/link index f59f82a..661ce49 100755 --- a/subcommands/link +++ b/subcommands/link @@ -23,7 +23,7 @@ service-link-cmd() { #E #E the following will be set on the linked application by default: #E - #E ${PLUGIN_DEFAULT_ALIAS}_URL=${PLUGIN_SCHEME}://lollipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[0]}/lollipop + #E ${PLUGIN_DEFAULT_ALIAS}_URL=${PLUGIN_SCHEME}://:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[0]} #E #E the host exposed here only works internally in docker containers. #E if you want your container to be reachable from outside, you should @@ -37,11 +37,7 @@ service-link-cmd() { #E dokku $PLUGIN_COMMAND_PREFIX:link lollipop playground #E this will cause ${PLUGIN_DEFAULT_ALIAS}_URL to be set as: #E - #E ${PLUGIN_SCHEME}2://lollipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[0]}/lollipop - #E - #E If you specify ${PLUGIN_VARIABLE}_DATABASE_SCHEME to equal `http`, we'll also automatically adjust ${PLUGIN_DEFAULT_ALIAS}_URL to match the http interface: - #E - #E http://lollipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[1]} + #E ${PLUGIN_SCHEME}2://:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[0]} #A service, service to run command against #A app, app to run command against #F -a|--alias "BLUE_DATABASE", an alternative alias to use for linking to an app via environment variable