Merge pull request #97 from dokku/linked-existence

feat: implement exists and linked subcommands
This commit is contained in:
Jose Diaz-Gonzalez
2018-02-25 17:28:07 -05:00
committed by GitHub
8 changed files with 86 additions and 9 deletions

View File

@@ -2,10 +2,9 @@ sudo: required
dist: trusty dist: trusty
language: bash language: bash
env: env:
- DOKKU_VERSION=master - DOKKU_VERSION=master DOKKU_SYSTEM_GROUP=travis DOKKU_SYSTEM_USER=travis
- DOKKU_VERSION=v0.7.0 - DOKKU_VERSION=v0.7.0 DOKKU_SYSTEM_GROUP=travis DOKKU_SYSTEM_USER=travis
- DOKKU_VERSION=v0.6.0 - DOKKU_VERSION=v0.6.0 DOKKU_SYSTEM_GROUP=travis DOKKU_SYSTEM_USER=travis
- DOKKU_VERSION=v0.5.0 - DOKKU_VERSION=v0.5.0 DOKKU_SYSTEM_GROUP=travis DOKKU_SYSTEM_USER=travis
- DOKKU_VERSION=v0.4.0 - DOKKU_VERSION=v0.4.0 DOKKU_SYSTEM_GROUP=travis DOKKU_SYSTEM_USER=travis
before_install: make setup
script: make test script: make test

View File

@@ -30,11 +30,13 @@ mongo:connect-admin <name> Connect via telnet to a mongo service as admin us
mongo:create <name> Create a mongo service with environment variables mongo:create <name> Create a mongo service with environment variables
mongo:destroy <name> Delete the service, delete the data and stop its container if there are no links left mongo:destroy <name> Delete the service, delete the data and stop its container if there are no links left
mongo:enter <name> [command] Enter or run a command in a running mongo service container mongo:enter <name> [command] Enter or run a command in a running mongo service container
mongo:exists <service> Check if the mongo service exists
mongo:export <name> > <file> Export a dump of the mongo service database mongo:export <name> > <file> Export a dump of the mongo service database
mongo:expose <name> [port] Expose a mongo service on custom port if provided (random port otherwise) mongo:expose <name> [port] Expose a mongo service on custom port if provided (random port otherwise)
mongo:import <name> < <file> Import a dump into the mongo service database mongo:import <name> < <file> Import a dump into the mongo service database
mongo:info <name> Print the connection information mongo:info <name> Print the connection information
mongo:link <name> <app> Link the mongo service to the app mongo:link <name> <app> Link the mongo service to the app
mongo:linked <name> <app> Check if the mongo service is linked to an app
mongo:list List all mongo services mongo:list List all mongo services
mongo:logs <name> [-t] Print the most recent log(s) for this service mongo:logs <name> [-t] Print the most recent log(s) for this service
mongo:promote <name> <app> Promote service <name> as MONGO_URL in <app> mongo:promote <name> <app> Promote service <name> as MONGO_URL in <app>

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_AVAILABLE_PATH/config/functions"
docker_ports_options() { docker_ports_options() {
declare desc="Exports a list of exposed ports" declare desc="Exports a list of exposed ports"
@@ -288,6 +289,20 @@ service_info() {
fi fi
} }
service_is_linked() {
declare desc="Links a service to an application"
declare SERVICE="$1" APP="$2"
update_plugin_scheme_for_app "$APP"
local SERVICE_URL=$(service_url "$SERVICE")
local EXISTING_CONFIG=$(config_all "$APP")
local LINK=$(echo "$EXISTING_CONFIG" | grep "$SERVICE_URL" | cut -d: -f1) || true
if [[ -z $LINK ]]; then
dokku_log_warn "Service $SERVICE is not linked to $APP"
exit 1
fi
dokku_log_info1 "Service $SERVICE is linked to $APP"
}
service_link() { service_link() {
declare desc="Links a service to an application" declare desc="Links a service to an application"
declare SERVICE="$1" APP="$2" declare SERVICE="$1" APP="$2"

20
subcommands/exists Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
service-exists-cmd() {
#E here we check if the lolipop $PLUGIN_COMMAND_PREFIX service exists.
#E dokku $PLUGIN_COMMAND_PREFIX:exists lolipop
#A service, service to run command against
declare desc="check if the $PLUGIN_SERVICE service exists"
local cmd="$PLUGIN_COMMAND_PREFIX:exists" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a name for the service"
verify_service_name "$SERVICE"
dokku_log_info1 "Service $SERVICE exists"
}
service-exists-cmd "$@"

24
subcommands/linked Executable file
View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
service-linked-cmd() {
#E here we check if the lolipop $PLUGIN_COMMAND_PREFIX service is linked to the 'playground' app.
#E dokku $PLUGIN_COMMAND_PREFIX:linked lolipop playground
#A service, service to run command against
#A app, app to run command against
declare desc="check if the $PLUGIN_SERVICE service is linked to an app"
local cmd="$PLUGIN_COMMAND_PREFIX:linked" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" APP="$2"
APP=${APP:="$DOKKU_APP_NAME"}
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a name for the service"
[[ -z "$APP" ]] && dokku_log_fail "Please specify an app to run the command on"
verify_app_name "$APP"
verify_service_name "$SERVICE"
service_is_linked "$SERVICE" "$APP"
}
service-linked-cmd "$@"

View File

@@ -39,10 +39,20 @@ teardown() {
@test "($PLUGIN_COMMAND_PREFIX:unlink) removes link from docker-options" { @test "($PLUGIN_COMMAND_PREFIX:unlink) removes link from docker-options" {
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app >&2 dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app >&2
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
options=$(dokku docker-options my_app | xargs)
check_value="" check_value=""
[[ "$(dokku version)" == "master" ]] && check_value="Deploy options: --restart=on-failure:10" report_action="docker-options"
[[ "$(at-least-version 0.7.0 "$(dokku version)")" == "true" ]] && check_value="Deploy options: --restart=on-failure:10" if [[ "$(dokku version)" == "master" ]]; then
check_value="Docker options build: Docker options deploy: --restart=on-failure:10 Docker options run:"
report_action="docker-options:report"
elif [[ "$(at-least-version 0.8.1 "$(dokku version)")" == "true" ]]; then
check_value="Docker options build: Docker options deploy: --restart=on-failure:10 Docker options run:"
report_action="docker-options:report"
elif [[ "$(at-least-version 0.7.0 "$(dokku version)")" == "true" ]]; then
check_value="Deploy options: --restart=on-failure:10"
fi
options=$(dokku $report_action my_app | xargs)
assert_equal "$options" "$check_value" assert_equal "$options" "$check_value"
} }

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/test_helper.bash" source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/test_helper.bash"
BIN_STUBS="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin" BIN_STUBS="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/bin"
@@ -10,6 +11,11 @@ fi
cd $DOKKU_ROOT cd $DOKKU_ROOT
echo "Dokku version $DOKKU_VERSION" echo "Dokku version $DOKKU_VERSION"
git checkout $DOKKU_VERSION > /dev/null git checkout $DOKKU_VERSION > /dev/null
if grep go-build Makefile > /dev/null; then
mv "$BIN_STUBS/docker" "$BIN_STUBS/docker-stub"
make go-build
mv "$BIN_STUBS/docker-stub" "$BIN_STUBS/docker"
fi
cd - cd -
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config" source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"

View File

@@ -11,6 +11,7 @@ export PLUGIN_CORE_AVAILABLE_PATH="$PLUGIN_PATH"
export MONGO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/fixtures" export MONGO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/fixtures"
export PLUGIN_DATA_ROOT="$MONGO_ROOT" export PLUGIN_DATA_ROOT="$MONGO_ROOT"
export PLUGIN_CONFIG_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config" export PLUGIN_CONFIG_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
export DOKKU_LIB_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/lib-root"
if [[ "$(uname)" == "Darwin" ]]; then if [[ "$(uname)" == "Darwin" ]]; then
export PLUGN_URL="https://github.com/dokku/plugn/releases/download/v0.3.0/plugn_0.3.0_darwin_x86_64.tgz" export PLUGN_URL="https://github.com/dokku/plugn/releases/download/v0.3.0/plugn_0.3.0_darwin_x86_64.tgz"
else else