|
|
@ -2880,6 +2880,7 @@ export DOCKER_DATASTORE=${DOCKER_DATASTORE:-/srv/docker-datastore} |
|
|
|
|
|
|
|
|
|
|
|
COMPOSE_YML_FILE=$(get_compose_yml_location) || exit 1 |
|
|
|
COMPOSE_YML_CONTENT=$(get_compose_yml_content) || exit 1 |
|
|
|
export COMPOSE_YML_FILE COMPOSE_YML_CONTENT |
|
|
|
|
|
|
|
|
|
|
@ -2910,12 +2911,28 @@ if [ -z "$is_docker_compose_action" -a "$action" ]; then |
|
|
|
die "Unknown action '${DARKCYAN}$action$NORMAL': It doesn't match any docker-compose commands nor inner charm actions." |
|
|
|
fi |
|
|
|
else |
|
|
|
if [[ "$action" =~ (up|ps) && "${#services_args[@]}" == 0 ]]; then |
|
|
|
services_args=($(echo "$COMPOSE_YML_CONTENT" | shyaml keys)) |
|
|
|
fi |
|
|
|
if [ "$action" == "config" ]; then |
|
|
|
services_args=("${action_posargs[@]}") |
|
|
|
fi |
|
|
|
case "$action" in |
|
|
|
ps) |
|
|
|
if [ "${#services_args[@]}" == 0 ]; then |
|
|
|
services_args=($(printf "%s" "$COMPOSE_YML_CONTENT" | shyaml keys 2>/dev/null)) || true |
|
|
|
fi |
|
|
|
;; |
|
|
|
up) |
|
|
|
if [ "${#services_args[@]}" == 0 ]; then |
|
|
|
while read-0 service; do |
|
|
|
charm=$(get_service_charm "$service") |
|
|
|
metadata=$(charm.metadata "$charm") |
|
|
|
type="$(printf "%s" "$metadata" | shyaml get-value type 2>/dev/null)" || true |
|
|
|
if [ "$type" != "run-once" ]; then |
|
|
|
services_args+=("$service") |
|
|
|
fi |
|
|
|
done < <(printf "%s" "$COMPOSE_YML_CONTENT" | shyaml keys-0 2>/dev/null) |
|
|
|
fi |
|
|
|
;; |
|
|
|
config) |
|
|
|
services_args=("${action_posargs[@]}") |
|
|
|
;; |
|
|
|
esac |
|
|
|
if [ "$is_docker_compose_action" -a "${#services_args[@]}" -gt 0 ]; then |
|
|
|
services=($(get_master_services "${services_args[@]}")) || exit 1 |
|
|
|
action_posargs+=("${services[@]}") |
|
|
@ -2981,6 +2998,15 @@ if [ "$full_init" ]; then |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
if [ "$action" == "run" ]; then |
|
|
|
charm=$(get_service_charm "${services_args[0]}") || exit 1 |
|
|
|
metadata=$(charm.metadata "$charm") || exit 1 |
|
|
|
type="$(printf "%s" "$metadata" | shyaml get-value type 2>/dev/null)" || true |
|
|
|
if [ "$type" == "run-once" ]; then |
|
|
|
run_service_hook dc-pre-run "${services_args[@]}" || exit 1 |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
export SERVICE_PACK="${services_args[*]}" |
|
|
|
|
|
|
|