|
|
@ -811,7 +811,21 @@ get_docker_compose () { |
|
|
|
debug " ..finished all mixins for $DARKYELLOW$target_service$NORMAL $GRAY(in $((SECONDS - start))s)$NORMAL" |
|
|
|
done |
|
|
|
|
|
|
|
merge_yaml_str "${entries[@]}" > "$cache_file" |
|
|
|
docker_compose_services=$(merge_yaml_str "${entries[@]}") || return 1 |
|
|
|
|
|
|
|
base_v2="version: '2.0' |
|
|
|
networks: |
|
|
|
static: |
|
|
|
driver: bridge |
|
|
|
ipam: |
|
|
|
driver: default |
|
|
|
config: |
|
|
|
- subnet: 172.25.1.0/24 |
|
|
|
|
|
|
|
" |
|
|
|
merge_yaml_str "$(yaml_key_val_str "services" "$docker_compose_services")" \ |
|
|
|
"$base_v2" > "$cache_file" || return 1 |
|
|
|
|
|
|
|
export _current_docker_compose="$(cat "$cache_file")" |
|
|
|
echo "$_current_docker_compose" |
|
|
|
debug " ..compilation of base 'docker-compose.yml' done $GRAY(in $((SECONDS - start_compilation))s)$NORMAL" || true |
|
|
@ -897,7 +911,7 @@ get_service_def () { |
|
|
|
"\$_current_docker_compose has been calculated." |
|
|
|
fi |
|
|
|
|
|
|
|
def=$(echo "$_current_docker_compose" | shyaml get-value "$service" 2>/dev/null) |
|
|
|
def=$(echo "$_current_docker_compose" | shyaml get-value "services.$service" 2>/dev/null) |
|
|
|
if [ -z "$def" ]; then |
|
|
|
err "No definition for service $DARKYELLOW$service$NORMAL in compiled 'docker-compose.yml'." |
|
|
|
return 1 |
|
|
@ -1273,7 +1287,8 @@ export -f config-add |
|
|
|
## XXXvlab; this can be used only in relation, I'd like to use it in init. |
|
|
|
init-config-add() { |
|
|
|
local metadata="$1" |
|
|
|
_config_merge "$state_tmpdir/to-merge-in-docker-compose.yml" <(echo "$metadata") |
|
|
|
_config_merge "$state_tmpdir/to-merge-in-docker-compose.yml" \ |
|
|
|
<(yaml_key_val_str "services" "$metadata") |
|
|
|
} |
|
|
|
export -f init-config-add |
|
|
|
|
|
|
@ -1862,9 +1877,13 @@ _get_docker_compose_mixin_from_metadata_cached() { |
|
|
|
mixin=$(echo -en "volumes:\n$volumes") |
|
|
|
fi |
|
|
|
|
|
|
|
docker_compose=$(echo "$metadata" | shyaml get-value "docker-compose" 2>/dev/null) |
|
|
|
docker_compose=$(echo "$metadata" | shyaml get-value -y "docker-compose" 2>/dev/null) |
|
|
|
if [ "$docker_compose" ]; then |
|
|
|
mixin=$(merge_yaml_str "$mixin" "$docker_compose") |
|
|
|
mixin=$(merge_yaml_str "$mixin" "$docker_compose") || { |
|
|
|
err "Failed to merge mixin with ${WHITE}docker-compose${NORMAL} option" \ |
|
|
|
"from charm ${DARKYELLOW}$charm$NORMAL." |
|
|
|
return 1 |
|
|
|
} |
|
|
|
fi |
|
|
|
|
|
|
|
if [ "$(echo "$metadata" | shyaml get-value "subordinate" 2>/dev/null)" == "True" ]; then |
|
|
@ -1960,7 +1979,7 @@ launch_docker_compose() { |
|
|
|
fi |
|
|
|
|
|
|
|
## XXXvlab: could be more specific and only link the needed charms |
|
|
|
for charm in $(shyaml keys < "$docker_compose_dir/docker-compose.yml"); do |
|
|
|
for charm in $(shyaml keys services < "$docker_compose_dir/docker-compose.yml"); do |
|
|
|
if charm.exists "$charm"; then |
|
|
|
ln -sf "$(charm.get_dir "$charm")" "$docker_compose_dir/$charm" || exit 1 |
|
|
|
fi |
|
|
|