From 7f3e22239f2464ac831f0247e212496470789d0c Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 16:18:04 +0100 Subject: [PATCH 01/27] add dot-cdist to cdist-config Signed-off-by: Nico Schottelius --- bin/cdist-config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index 946c88b4..a5eb9485 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -44,6 +44,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_code:=code} : ${__cdist_name_code_finished:=.codedone} : ${__cdist_name_conf_dir:=conf} +: ${__cdist_name_dot_cdist:=.cdist} : ${__cdist_name_explorer:=explorer} : ${__cdist_name_gencode:=gencode} : ${__cdist_name_gencode_local:=local} @@ -231,7 +232,7 @@ __cdist_object_id_from_object() __cdist_object_dir() { - __cdist_object_dir="${__cdist_out_object_dir}/$1" + __cdist_object_dir="${__cdist_out_object_dir}/$1/${__cdist_name_dot_cdist}" echo "$__cdist_object_dir" } From 0a028785c315c5cf32a470d19022057046b9b286 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 10:39:45 +0100 Subject: [PATCH 02/27] remove check whether object already exists Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 9f272569..0b9a10ed 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -53,10 +53,10 @@ __cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object")" # Append id for error messages __cdist_myname="$__cdist_myname ($__cdist_object_id)" -if [ -e "${__cdist_ddir}" ]; then - source="$(__cdist_object_source "${__cdist_ddir}")" - __cdist_exit_err "${__cdist_object} already exists (source: $source)" -fi +# if [ -e "${__cdist_ddir}" ]; then +# source="$(__cdist_object_source "${__cdist_ddir}")" +# __cdist_exit_err "${__cdist_object} already exists (source: $source)" +# fi mkdir -p "${__cdist_ddir}" mkdir -p "${__cdist_parameter_dir}" From 19e6ea9c801704d40dfe33df6c978d33b4e19c53 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 10:47:13 +0100 Subject: [PATCH 03/27] begin restructure, use name __cdist_object_self for type/object_id combination Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 0b9a10ed..17b6cae6 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -27,26 +27,39 @@ . cdist-config set -eu +################################################################################ +# Prepare object and type +# + __cdist_type="$__cdist_myname" # Find out whether type is a singleton or regular type if [ -f "$(__cdist_type_singleton "$__cdist_type")" ]; then - __cdist_object_id="singleton" + __cdist_object_id="$__cdist_name_singleton" else [ $# -ge 1 ] || __cdist_usage " " __cdist_object_id="$1"; shift fi -echo "$__cdist_object_id" | grep -q "^${__cdist_sane_regexp}\$" || \ +# Verify object id +__cdist_object_id_sane=$(echo "$__cdist_object_id" | grep "^${__cdist_sane_regexp}\$") +if [ -z "$__cdist_object_id_sane" ]; then __cdist_usage "Insane object id, ${__cdist_object_id}." - -# Remove double slash if id begins with / -if [ "$(echo $__cdist_object_id | grep "^/")" ]; then - __cdist_object="${__cdist_type}${__cdist_object_id}" -else - __cdist_object="${__cdist_type}/${__cdist_object_id}" fi +# Prevent double slash if id begins with / +if [ "$(echo $__cdist_object_id | grep "^/")" ]; then + __cdist_object_self="${__cdist_type}${__cdist_object_id}" +else + __cdist_object_self="${__cdist_type}/${__cdist_object_id}" +fi + +################################################################################ +# Verify object +# + + + __cdist_ddir="$(__cdist_object_dir "$__cdist_object")" __cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object")" From 117232ce9d599ab1929e5261a8c5d20b9e170701 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:05:02 +0100 Subject: [PATCH 04/27] begin rewrite of cdist-type-emulator Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 17b6cae6..8be6e819 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -55,28 +55,41 @@ else fi ################################################################################ -# Verify object +# Internal quirks # - - -__cdist_ddir="$(__cdist_object_dir "$__cdist_object")" -__cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object")" - # Append id for error messages __cdist_myname="$__cdist_myname ($__cdist_object_id)" -# if [ -e "${__cdist_ddir}" ]; then -# source="$(__cdist_object_source "${__cdist_ddir}")" +################################################################################ +# Create object in tmpdir +# + +__cdist_new_object_dir="$__cdist_tmp_dir/$__cdist_object_self" +mkdir -p "${__cdist_new_object_dir}" + +# Record source +echo "${__cdist_manifest}" > "${__cdist_new_object_dir}/${__cdist_name_object_source}" + + + +################################################################################ +# Try to merge object into global object directory +# + +# +__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" +__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" + +__cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object")" + +# if [ -e "${__cdist_new_object_dir}" ]; then +# source="$(__cdist_object_source "${__cdist_new_object_dir}")" # __cdist_exit_err "${__cdist_object} already exists (source: $source)" # fi -mkdir -p "${__cdist_ddir}" mkdir -p "${__cdist_parameter_dir}" -# Record (correct ;-) source -echo "${__cdist_manifest}" > "${__cdist_ddir}/${__cdist_name_object_source}" - # Record parameters to tmpdir tempparameter="${__cdist_tmp_dir}/${__cdist_name_parameter}" mkdir -p "$tempparameter" From 359e252ef7b840e7348aa0f8ae2361b6e02b3033 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:12:39 +0100 Subject: [PATCH 05/27] begin to sort cdist-config by alphabet Signed-off-by: Nico Schottelius --- bin/cdist-config | 216 +++++++++++++++++++++++++---------------------- 1 file changed, 114 insertions(+), 102 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index a5eb9485..9a7cea91 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -134,7 +134,7 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") : ${__cdist_remote_out_object_base_dir:=$__cdist_remote_out_dir/$__cdist_name_object} ################################################################################ -# Function list +# Internal functions # __cdist_debug_echo() { @@ -143,6 +143,12 @@ __cdist_debug_echo() fi } +__cdist_exec_fail_on_error() +{ + sh -e "$@" + [ "$?" -eq 0 ] || __cdist_exit_err "Error: $1 exited non-zero." +} + __cdist_exit_err() { echo "$@" >&2 @@ -170,76 +176,9 @@ __cdist_init_deploy() ln -sf "$__cdist_conf_dir" "$__cdist_local_base_dir/$__cdist_name_conf_dir" } -__cdist_type_has_explorer() -{ - # We only create output, if there's at least one explorer - # and can thus be used as a boolean ;-) - if [ -d "$(__cdist_type_explorer_dir "$1")" ]; then - ls -1 "$(__cdist_type_explorer_dir "$1")" - fi -} - -__cdist_type_dir() -{ - echo "${__cdist_type_dir}/$1" -} - -__cdist_type_explorer_dir() -{ - echo "${__cdist_type_dir}/$1/${__cdist_name_explorer}" -} - -__cdist_remote_type_explorer_dir() -{ - echo "${__cdist_remote_type_dir}/$1/${__cdist_name_explorer}" -} - -__cdist_type_gencode() -{ - echo "${__cdist_type_dir}/$1/${__cdist_name_gencode}" -} - -__cdist_type_singleton() -{ - echo "${__cdist_type_dir}/$1/${__cdist_name_singleton}" -} - -__cdist_type_parameter_dir() -{ - echo "$(__cdist_type_dir "$1")/${__cdist_name_parameter}" -} - -# Shorthand for required and optional -__cdist_type_parameter_required() -{ - echo "$(__cdist_type_parameter_dir "$1")/$__cdist_name_parameter_required" -} - -__cdist_type_parameter_optional() -{ - echo "$(__cdist_type_parameter_dir "$1")/$__cdist_name_parameter_optional" -} - -__cdist_type_from_object() -{ - echo "${1%%/*}" -} - -__cdist_object_id_from_object() -{ - echo "${1#*/}" -} - -__cdist_object_dir() -{ - __cdist_object_dir="${__cdist_out_object_dir}/$1/${__cdist_name_dot_cdist}" - echo "$__cdist_object_dir" -} - -__cdist_remote_object_dir() -{ - echo "${__cdist_remote_out_object_base_dir}/$1" -} +################################################################################ +# Object +# __cdist_object_code() { @@ -251,31 +190,6 @@ __cdist_object_code_finished() echo "$(__cdist_object_dir "$1")/${__cdist_name_code_finished}" } -__cdist_object_parameter_dir() -{ - echo "$(__cdist_object_dir "$1")/${__cdist_name_parameter}" -} - -__cdist_remote_object_parameter_dir() -{ - echo "$(__cdist_remote_object_dir "$1")/${__cdist_name_parameter}" -} - -__cdist_object_require() -{ - echo "$(__cdist_object_dir "$1")/${__cdist_name_require}" -} - -__cdist_object_type_explorer_dir() -{ - echo "$(__cdist_object_dir "$1")/${__cdist_name_explorer}" -} - -__cdist_remote_object_type_explorer_dir() -{ - echo "$(__cdist_remote_object_dir "$1")/${__cdist_name_explorer}" -} - # Find objects, remove ./ and /MARKER __cdist_object_list() { @@ -298,19 +212,117 @@ __cdist_object_source() cat "${object_dir}/${__cdist_name_object_source}" } -__cdist_exec_fail_on_error() +__cdist_object_parameter_dir() { - sh -e "$@" - [ "$?" -eq 0 ] || __cdist_exit_err "Error: $1 exited non-zero." + echo "$(__cdist_object_dir "$1")/${__cdist_name_parameter}" +} + +__cdist_remote_object_parameter_dir() +{ + echo "$(__cdist_remote_object_dir "$1")/${__cdist_name_parameter}" +} + +__cdist_object_require() +{ + echo "$(__cdist_object_dir "$1")/${__cdist_name_require}" +} + +__cdist_object_type_explorer_dir() +{ + echo "$(__cdist_object_dir "$1")/${__cdist_name_explorer}" +} + +__cdist_object_id_from_object() +{ + echo "${1#*/}" +} + +__cdist_object_dir() +{ + __cdist_object_dir="${__cdist_out_object_dir}/$1/${__cdist_name_dot_cdist}" + echo "$__cdist_object_dir" +} + +################################################################################ +# Remote +# + +__cdist_remote_object_dir() +{ + echo "${__cdist_remote_out_object_base_dir}/$1" +} + +__cdist_remote_object_type_explorer_dir() +{ + echo "$(__cdist_remote_object_dir "$1")/${__cdist_name_explorer}" } +__cdist_remote_type_explorer_dir() +{ + echo "${__cdist_remote_type_dir}/$1/${__cdist_name_explorer}" +} + + +################################################################################ +# Temp clenup +# __cdist_tmp_removal() { rm -rf "${__cdist_tmp_dir}" } -################################################################################ -# Trap for tmp removal -# trap __cdist_tmp_removal EXIT + + +################################################################################ +# Type +# +__cdist_type_dir() +{ + echo "${__cdist_type_dir}/$1" +} + +__cdist_type_explorer_dir() +{ + echo "${__cdist_type_dir}/$1/${__cdist_name_explorer}" +} + +__cdist_type_from_object() +{ + echo "${1%%/*}" +} + +__cdist_type_has_explorer() +{ + # We only create output, if there's at least one explorer + # and can thus be used as a boolean ;-) + if [ -d "$(__cdist_type_explorer_dir "$1")" ]; then + ls -1 "$(__cdist_type_explorer_dir "$1")" + fi +} + +__cdist_type_gencode() +{ + echo "${__cdist_type_dir}/$1/${__cdist_name_gencode}" +} + +__cdist_type_parameter_dir() +{ + echo "$(__cdist_type_dir "$1")/${__cdist_name_parameter}" +} + +__cdist_type_parameter_optional() +{ + echo "$(__cdist_type_parameter_dir "$1")/$__cdist_name_parameter_optional" +} + +__cdist_type_parameter_required() +{ + echo "$(__cdist_type_parameter_dir "$1")/$__cdist_name_parameter_required" +} + +__cdist_type_singleton() +{ + echo "${__cdist_type_dir}/$1/${__cdist_name_singleton}" +} From 6f67911a0b9c5e06a274e38fb0c12c1e8d5d392d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:19:05 +0100 Subject: [PATCH 06/27] sort object area in cdist-config Signed-off-by: Nico Schottelius --- bin/cdist-config | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 9a7cea91..3f7d7c3c 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -190,6 +190,18 @@ __cdist_object_code_finished() echo "$(__cdist_object_dir "$1")/${__cdist_name_code_finished}" } +__cdist_object_dir() +{ + __cdist_object_dir="${__cdist_out_object_dir}/$1/${__cdist_name_dot_cdist}" + echo "$__cdist_object_dir" +} + + +__cdist_object_id_from_object() +{ + echo "${1#*/}" +} + # Find objects, remove ./ and /MARKER __cdist_object_list() { @@ -205,44 +217,26 @@ __cdist_object_list() } -__cdist_object_source() -{ - local object_dir="$1"; shift - - cat "${object_dir}/${__cdist_name_object_source}" -} - __cdist_object_parameter_dir() { echo "$(__cdist_object_dir "$1")/${__cdist_name_parameter}" } -__cdist_remote_object_parameter_dir() -{ - echo "$(__cdist_remote_object_dir "$1")/${__cdist_name_parameter}" -} - __cdist_object_require() { echo "$(__cdist_object_dir "$1")/${__cdist_name_require}" } +__cdist_object_source() +{ + cat "$1/${__cdist_name_object_source}" +} + __cdist_object_type_explorer_dir() { echo "$(__cdist_object_dir "$1")/${__cdist_name_explorer}" } -__cdist_object_id_from_object() -{ - echo "${1#*/}" -} - -__cdist_object_dir() -{ - __cdist_object_dir="${__cdist_out_object_dir}/$1/${__cdist_name_dot_cdist}" - echo "$__cdist_object_dir" -} - ################################################################################ # Remote # @@ -252,6 +246,11 @@ __cdist_remote_object_dir() echo "${__cdist_remote_out_object_base_dir}/$1" } +__cdist_remote_object_parameter_dir() +{ + echo "$(__cdist_remote_object_dir "$1")/${__cdist_name_parameter}" +} + __cdist_remote_object_type_explorer_dir() { echo "$(__cdist_remote_object_dir "$1")/${__cdist_name_explorer}" From ab02adf01a67b71dc191f6f95215628022224cd8 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:27:38 +0100 Subject: [PATCH 07/27] abort after manifest-run-init to verify new methods Signed-off-by: Nico Schottelius --- bin/cdist-deploy-to | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index 9a2fd303..34662081 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -49,6 +49,9 @@ cdist-dir push "$__cdist_target_host" "${__cdist_abs_mydir}" "${__cdist_remote_b cdist-explorer-run-global "$__cdist_target_host" cdist-manifest-run-init "$__cdist_target_host" + +exit 1 + cdist-manifest-run-all "$__cdist_target_host" cdist-object-explorer-all "$__cdist_target_host" cdist-object-gencode-all "$__cdist_target_host" From 69453feaa51ac322451bad26be9bbb01ba073f35 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:30:22 +0100 Subject: [PATCH 08/27] add __cdist_object_source_add Signed-off-by: Nico Schottelius --- bin/cdist-config | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index 3f7d7c3c..71bc3672 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -227,9 +227,19 @@ __cdist_object_require() echo "$(__cdist_object_dir "$1")/${__cdist_name_require}" } +__cdist_object_source_name() +{ + echo "$1/${__cdist_name_object_source}" +} + __cdist_object_source() { - cat "$1/${__cdist_name_object_source}" + cat "$(__cdist_object_source_name "$1")" +} + +__cdist_object_source_add() +{ + echo "$__cdist_manifest" >> "$(__cdist_object_source_name "$1")" } __cdist_object_type_explorer_dir() From a6702cc8045d3d3d3d2cf3455e5f1d31e80ef116 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:32:22 +0100 Subject: [PATCH 09/27] do not setup variables in cdist-config Signed-off-by: Nico Schottelius --- bin/cdist-config | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 71bc3672..531e4384 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -192,8 +192,7 @@ __cdist_object_code_finished() __cdist_object_dir() { - __cdist_object_dir="${__cdist_out_object_dir}/$1/${__cdist_name_dot_cdist}" - echo "$__cdist_object_dir" + echo "${__cdist_out_object_dir}/$1/${__cdist_name_dot_cdist}" } From b46850cd12398ca5cf1392d53e3b9696e559b159 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:39:17 +0100 Subject: [PATCH 10/27] begin to reintegrate parameter recording Signed-off-by: Nico Schottelius --- bin/cdist-config | 1 - bin/cdist-type-emulator | 52 +++++++++++++++++++++++------------------ 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 531e4384..fbdbe719 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -213,7 +213,6 @@ __cdist_object_list() find . -name "$__cdist_name_object_source" | \ sed -e 's;^./;;' -e "s;/${__cdist_name_object_source}\$;;" ) - } __cdist_object_parameter_dir() diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 8be6e819..06369895 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -62,38 +62,28 @@ fi __cdist_myname="$__cdist_myname ($__cdist_object_id)" ################################################################################ -# Create object in tmpdir +# Create object in tmpdir first # -__cdist_new_object_dir="$__cdist_tmp_dir/$__cdist_object_self" -mkdir -p "${__cdist_new_object_dir}" +# Save original destination +__cdist_out_object_dir_orig="$__cdist_out_object_dir" + +# Store to tmp now +__cdist_out_object_dir="$__cdist_tmp_dir" + +__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" + +set -x # Record source -echo "${__cdist_manifest}" > "${__cdist_new_object_dir}/${__cdist_name_object_source}" +mkdir -p "${__cdist_object_dir}" +__cdist_object_source_add "${__cdist_object_dir}" - -################################################################################ -# Try to merge object into global object directory -# - -# -__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" -__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" - +# Record parameter __cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object")" - -# if [ -e "${__cdist_new_object_dir}" ]; then -# source="$(__cdist_object_source "${__cdist_new_object_dir}")" -# __cdist_exit_err "${__cdist_object} already exists (source: $source)" -# fi - mkdir -p "${__cdist_parameter_dir}" -# Record parameters to tmpdir -tempparameter="${__cdist_tmp_dir}/${__cdist_name_parameter}" -mkdir -p "$tempparameter" - while [ $# -gt 0 ]; do opt="$1"; shift @@ -109,6 +99,14 @@ while [ $# -gt 0 ]; do echo "${value}" > "${tempparameter}/${opt_file}" done +exit 1 + + +################################################################################ +# Try to merge object into global object directory +# + + # Ensure required parameters are given if [ -f "$(__cdist_type_parameter_required "$__cdist_type")" ]; then while read required; do @@ -144,3 +142,11 @@ for requirement in $require; do echo $requirement >> "$(__cdist_object_require "$__cdist_object")" echo Recording: $__cdist_object requires $requirement done + + +# old stuff +# if [ -e "${__cdist_new_object_dir}" ]; then +# source="$(__cdist_object_source "${__cdist_new_object_dir}")" +# __cdist_exit_err "${__cdist_object} already exists (source: $source)" +# fi + From fa0a3af2a0d2e5fd0e14c753ca76a4fbef084b28 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:44:33 +0100 Subject: [PATCH 11/27] correctly record parameter, remove sed (not required) Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 06369895..18171233 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -73,15 +73,15 @@ __cdist_out_object_dir="$__cdist_tmp_dir" __cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" -set -x - # Record source mkdir -p "${__cdist_object_dir}" __cdist_object_source_add "${__cdist_object_dir}" # Record parameter -__cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object")" +set -x + +__cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object_self")" mkdir -p "${__cdist_parameter_dir}" while [ $# -gt 0 ]; do @@ -90,15 +90,17 @@ while [ $# -gt 0 ]; do echo "$opt" | grep -q "^--${__cdist_sane_regexp}\$" || \ __cdist_usage "Provide sane options" - opt_file="$(echo $opt | sed 's/^--//')" + opt_file="${opt#--}" [ $# -ge 1 ] || __cdist_usage "Missing value for $opt" value="$1"; shift - echo "${value}" > "${tempparameter}/${opt_file}" + echo "${value}" > "${__cdist_parameter_dir}/${opt_file}" done +find $__cdist_object_dir + exit 1 From d8f7ebc73f352734018b6552ff72231903c47296 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:45:50 +0100 Subject: [PATCH 12/27] move .dotfiles to .cdist/dotfiles (without dot) Signed-off-by: Nico Schottelius --- bin/cdist-config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index fbdbe719..21b797bb 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -42,7 +42,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_bin:=bin} : ${__cdist_name_code:=code} -: ${__cdist_name_code_finished:=.codedone} +: ${__cdist_name_code_finished:=codedone} : ${__cdist_name_conf_dir:=conf} : ${__cdist_name_dot_cdist:=.cdist} : ${__cdist_name_explorer:=explorer} @@ -54,9 +54,9 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_init:=init} : ${__cdist_name_manifest:=manifest} : ${__cdist_name_object:=object} -: ${__cdist_name_object_finished:=.done} +: ${__cdist_name_object_finished:=done} : ${__cdist_name_object_id:=object_id} -: ${__cdist_name_object_source:=.source} +: ${__cdist_name_object_source:=source} : ${__cdist_name_out_dir:=out} : ${__cdist_name_parameter:=parameter} : ${__cdist_name_parameter_required:=required} From 6e5ed1c8e80e1afb184b2bc498ea080ad5feca12 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 11:56:19 +0100 Subject: [PATCH 13/27] re-include requirement recording Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 18171233..7cb8e450 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -99,16 +99,20 @@ while [ $# -gt 0 ]; do echo "${value}" > "${__cdist_parameter_dir}/${opt_file}" done -find $__cdist_object_dir +# Record requirements +# it's fine, if it's not set +set +u +for requirement in $require; do + echo $requirement >> "$(__cdist_object_require "$__cdist_object_self")" + echo Object $__cdist_object_self requires $requirement +done + exit 1 - - ################################################################################ -# Try to merge object into global object directory +# Check newly created object # - # Ensure required parameters are given if [ -f "$(__cdist_type_parameter_required "$__cdist_type")" ]; then while read required; do @@ -133,17 +137,12 @@ fi cd "${tempparameter}" other="$(ls)" +exit 1 + if [ "$other" ]; then __cdist_usage "Unsupported parameter: $other" fi -# Record requirements -# it's fine, if it's not set -set +u -for requirement in $require; do - echo $requirement >> "$(__cdist_object_require "$__cdist_object")" - echo Recording: $__cdist_object requires $requirement -done # old stuff From 34b5e44091576579d4d74f55bdeba71a22205a1d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 12:12:03 +0100 Subject: [PATCH 14/27] re-include parameter check Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 53 ++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 7cb8e450..10e0534d 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -79,8 +79,6 @@ __cdist_object_source_add "${__cdist_object_dir}" # Record parameter -set -x - __cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object_self")" mkdir -p "${__cdist_parameter_dir}" @@ -106,44 +104,55 @@ for requirement in $require; do echo $requirement >> "$(__cdist_object_require "$__cdist_object_self")" echo Object $__cdist_object_self requires $requirement done +set -u - -exit 1 ################################################################################ # Check newly created object # +set -x + +# # Ensure required parameters are given +# if [ -f "$(__cdist_type_parameter_required "$__cdist_type")" ]; then while read required; do - if [ ! -f "${tempparameter}/${required}" ]; then + if [ ! -f "${__cdist_parameter_dir}/${required}" ]; then __cdist_usage "Missing required parameter $required" fi - - mv "${tempparameter}/${required}" "${__cdist_parameter_dir}" done < "$(__cdist_type_parameter_required "$__cdist_type")" fi -# Allow optional parameters -if [ -f "$(__cdist_type_parameter_optional "$__cdist_type")" ]; then - while read optional; do - if [ -f "${tempparameter}/${optional}" ]; then - mv "${tempparameter}/${optional}" "${__cdist_parameter_dir}" - fi - done < "$(__cdist_type_parameter_optional "$__cdist_type")" -fi +# +# Ensure that only optional or required parameters are given +# -# Error out on other paramaters -cd "${tempparameter}" -other="$(ls)" +if [ -f "$(__cdist_type_parameter_optional "$__cdist_type")" ]; then + cat "$(__cdist_type_parameter_optional "$__cdist_type")" > \ + "$__cdist_tmp_file" +fi + +if [ -f "$(__cdist_type_parameter_required "$__cdist_type")" ]; then + cat "$(__cdist_type_parameter_required "$__cdist_type")" >> \ + "$__cdist_tmp_file" +fi + +cd "$__cdist_parameter_dir" +for parameter in $(ls -1); do + is_valid=$(grep "^$parameter\$" "$__cdist_tmp_file") + + [ "$is_valid" ] || "Unknown parameter $parameter" +done exit 1 -if [ "$other" ]; then - __cdist_usage "Unsupported parameter: $other" -fi - +################################################################################ +# Merge object +# +# +# Ensure that only optional or required parameters are given +# # old stuff # if [ -e "${__cdist_new_object_dir}" ]; then From 2ef17f9bf20ae743908fb90d361bddb4dc00c8ef Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 12:15:00 +0100 Subject: [PATCH 15/27] begin merge section in cdist-type-emulator Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 10e0534d..0b709a13 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -149,14 +149,18 @@ exit 1 ################################################################################ # Merge object # +# Save original destination +__cdist_out_object_dir="$__cdist_out_object_dir_orig" + +__cdist_object_destination_dir="$(__cdist_object_dir "$__cdist_object_self")" # -# Ensure that only optional or required parameters are given +# If the object already exists and is exactly the same, merge it. Otherwise fail. # +if [ -e "${__cdist_new_object_dir}" ]; then + source="$(__cdist_object_source "${__cdist_new_object_dir}")" + __cdist_exit_err "${__cdist_object} already exists (source: $source)" -# old stuff -# if [ -e "${__cdist_new_object_dir}" ]; then -# source="$(__cdist_object_source "${__cdist_new_object_dir}")" -# __cdist_exit_err "${__cdist_object} already exists (source: $source)" -# fi + +fi From 92860706b2d643d5b142db5e82134e9e1066ed7d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 12:20:09 +0100 Subject: [PATCH 16/27] import merge code from cdist-manifest-run-all into cdist-type-emulator Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 53 +++++++++++++++++++++++++++++++++++++++++ doc/dev/todo/niconext | 3 +++ 2 files changed, 56 insertions(+) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 0b709a13..8451ec9d 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -164,3 +164,56 @@ if [ -e "${__cdist_new_object_dir}" ]; then fi + + +# -------------------------------------------------------------------------------- + + # Verify no conflicting objects have been created + while read __cdist_new_object; do + __cdist_object_found=$(grep "^$__cdist_new_object\$" "$__cdist_objects_list" || true) + + if [ "$__cdist_object_found" ]; then + __cdist_object_source="$(cat "$(__cdist_object_dir "$__cdist_new_object")/${__cdist_name_object_source}")" + __cdist_exit_err "${__cdist_manifest}: ${__cdist_new_object} already exists (source: $__cdist_object_source)" + fi + done < "$__cdist_new_objects_list" + + # Safe harbour: We can merge all objects into main tree + # Merge = mkdir + mv parameters and source information + while read __cdist_new_object; do + [ "$__cdist_new_objects_created" = "n" ] && __cdist_new_objects_created="y" + + # where to save the newly created object + __cdist_object_dir="$__cdist_out_object_dir/$__cdist_new_object" + mkdir -p "$__cdist_object_dir" + + # Move parts of the object (CANNOT MOVE COMPLETLEY, HIERACHY!) + __cdist_new_object_dir="$__cdist_new_objects_dir/$__cdist_new_object" + + # Source + mv "${__cdist_new_object_dir}/${__cdist_name_object_source}" \ + "$__cdist_object_dir" + + # Explorer, Parameter, Require + for __cdist_object_file in \ + ${__cdist_name_explorer} \ + ${__cdist_name_parameter} \ + ${__cdist_name_require} \ + ; do + + if [ -e "${__cdist_new_object_dir}/${__cdist_object_file}" ]; then + mv "${__cdist_new_object_dir}/${__cdist_object_file}" \ + "$__cdist_object_dir" + fi + done + done < "$__cdist_new_objects_list" + + # Remove listing and objects, otherwise the next type will reuse it... + rm -rf "$__cdist_new_objects_dir" "$__cdist_new_objects_list" + else + # Be nice, warn user if manifests exists, but is not executable + if [ -f "${__cdist_manifest}" ]; then + echo "Warning ${__cdist_manifest} exists, but is not executable." >&2 + fi + fi + fi diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 6179c017..75790fb8 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,2 +1,5 @@ - think about using .cdist for meta information? - otherwise: parameter, gencode-local, etc. are not valid object id stuff + +- check cdist-manifest-run-all whether -x -f to manifest shouldn't be better + in cdist-manifest-run From 8d32e00114b7c01f7ae06334c6b498f877174e10 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 13:21:18 +0100 Subject: [PATCH 17/27] add more todo Signed-off-by: Nico Schottelius --- doc/dev/todo/post-1.3 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/dev/todo/post-1.3 b/doc/dev/todo/post-1.3 index 301dfdb2..ec186d3a 100644 --- a/doc/dev/todo/post-1.3 +++ b/doc/dev/todo/post-1.3 @@ -3,6 +3,7 @@ Core: - support $__self = relative_type/object_id - .cdist - cache + - display changes if object cannot be merged to user Cache: Assume you want to configure stuff one host ("monitor node"), @@ -31,3 +32,4 @@ Types to be written/extended: - regexp replace (can probably cover all?) -> aka sed. - __cron + From 175660872092958b9e0a30c2de0dd06e8ce440c9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 13:33:26 +0100 Subject: [PATCH 18/27] in theory finish new algorithm to allow same objects Signed-off-by: Nico Schottelius --- bin/cdist-config | 7 ++++++- bin/cdist-type-emulator | 33 ++++++++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 21b797bb..e5dc46c0 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -192,7 +192,12 @@ __cdist_object_code_finished() __cdist_object_dir() { - echo "${__cdist_out_object_dir}/$1/${__cdist_name_dot_cdist}" + echo "$(__cdist_object_dir_base "$1")/${__cdist_name_dot_cdist}" +} + +__cdist_object_dir_base() +{ + echo "${__cdist_out_object_dir}/$1" } diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 8451ec9d..cf2bc418 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -77,7 +77,6 @@ __cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" mkdir -p "${__cdist_object_dir}" __cdist_object_source_add "${__cdist_object_dir}" - # Record parameter __cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object_self")" mkdir -p "${__cdist_parameter_dir}" @@ -152,19 +151,43 @@ exit 1 # Save original destination __cdist_out_object_dir="$__cdist_out_object_dir_orig" -__cdist_object_destination_dir="$(__cdist_object_dir "$__cdist_object_self")" +__cdist_new_object_dir="$(__cdist_object_dir "$__cdist_object_self")" # # If the object already exists and is exactly the same, merge it. Otherwise fail. # if [ -e "${__cdist_new_object_dir}" ]; then - source="$(__cdist_object_source "${__cdist_new_object_dir}")" - __cdist_exit_err "${__cdist_object} already exists (source: $source)" - + # Allow diff to fail + set +e + diff -ru "${__cdist_object_dir}" "${__cdist_new_object_dir}" \ + > "$__cdist_tmp_file"; ret=$? + set -e + + if [ "$ret" != 0 ]; then + # Go to standard error + exec >&2 + echo "${__cdist_object_self} already exists differently." + echo "Recorded source(s):" + __cdist_object_source "${__cdist_new_object_dir}" + echo "Differences:" + cat "$__cdist_tmp_file" + __cdist_exit_err "Aborting due to object conflict." + fi + # Add ourselves, if we're compatible + __cdist_object_source_add "${__cdist_new_object_dir}" +else + # + # Move object into tree: + # Create full path minus .cdist and move .cdist + # + __cdist_new_object_base_dir="$(__cdist_object_base_dir "$__cdist_object_self")" + mkdir -p "$__cdist_new_object_base_dir" + mv "$__cdist_object_dir" "$__cdist_new_object_base_dir" fi +exit 0 # -------------------------------------------------------------------------------- From d7b765e498f7df4eca15f355223d7547083d8089 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 13:38:14 +0100 Subject: [PATCH 19/27] base_dir not dir_base Signed-off-by: Nico Schottelius --- bin/cdist-config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index e5dc46c0..653d993f 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -192,10 +192,10 @@ __cdist_object_code_finished() __cdist_object_dir() { - echo "$(__cdist_object_dir_base "$1")/${__cdist_name_dot_cdist}" + echo "$(__cdist_object_base_dir "$1")/${__cdist_name_dot_cdist}" } -__cdist_object_dir_base() +__cdist_object_base_dir() { echo "${__cdist_out_object_dir}/$1" } From 9ba61ac0442dd038c7552ce68c956fb9c7afebb1 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 13:41:56 +0100 Subject: [PATCH 20/27] remove debug Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 61 +---------------------------------------- 1 file changed, 1 insertion(+), 60 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index cf2bc418..18069b44 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -109,8 +109,6 @@ set -u # Check newly created object # -set -x - # # Ensure required parameters are given # @@ -143,12 +141,10 @@ for parameter in $(ls -1); do [ "$is_valid" ] || "Unknown parameter $parameter" done -exit 1 - ################################################################################ # Merge object # -# Save original destination +# Restore original destination __cdist_out_object_dir="$__cdist_out_object_dir_orig" __cdist_new_object_dir="$(__cdist_object_dir "$__cdist_object_self")" @@ -185,58 +181,3 @@ else mkdir -p "$__cdist_new_object_base_dir" mv "$__cdist_object_dir" "$__cdist_new_object_base_dir" fi - - -exit 0 - -# -------------------------------------------------------------------------------- - - # Verify no conflicting objects have been created - while read __cdist_new_object; do - __cdist_object_found=$(grep "^$__cdist_new_object\$" "$__cdist_objects_list" || true) - - if [ "$__cdist_object_found" ]; then - __cdist_object_source="$(cat "$(__cdist_object_dir "$__cdist_new_object")/${__cdist_name_object_source}")" - __cdist_exit_err "${__cdist_manifest}: ${__cdist_new_object} already exists (source: $__cdist_object_source)" - fi - done < "$__cdist_new_objects_list" - - # Safe harbour: We can merge all objects into main tree - # Merge = mkdir + mv parameters and source information - while read __cdist_new_object; do - [ "$__cdist_new_objects_created" = "n" ] && __cdist_new_objects_created="y" - - # where to save the newly created object - __cdist_object_dir="$__cdist_out_object_dir/$__cdist_new_object" - mkdir -p "$__cdist_object_dir" - - # Move parts of the object (CANNOT MOVE COMPLETLEY, HIERACHY!) - __cdist_new_object_dir="$__cdist_new_objects_dir/$__cdist_new_object" - - # Source - mv "${__cdist_new_object_dir}/${__cdist_name_object_source}" \ - "$__cdist_object_dir" - - # Explorer, Parameter, Require - for __cdist_object_file in \ - ${__cdist_name_explorer} \ - ${__cdist_name_parameter} \ - ${__cdist_name_require} \ - ; do - - if [ -e "${__cdist_new_object_dir}/${__cdist_object_file}" ]; then - mv "${__cdist_new_object_dir}/${__cdist_object_file}" \ - "$__cdist_object_dir" - fi - done - done < "$__cdist_new_objects_list" - - # Remove listing and objects, otherwise the next type will reuse it... - rm -rf "$__cdist_new_objects_dir" "$__cdist_new_objects_list" - else - # Be nice, warn user if manifests exists, but is not executable - if [ -f "${__cdist_manifest}" ]; then - echo "Warning ${__cdist_manifest} exists, but is not executable." >&2 - fi - fi - fi From 2d00e9d869601bf5ef454dc27762dc5d375a7b56 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 13:45:38 +0100 Subject: [PATCH 21/27] remove obsolete output from cdist-manifest-run Signed-off-by: Nico Schottelius --- bin/cdist-manifest-run | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/bin/cdist-manifest-run b/bin/cdist-manifest-run index 892f27cf..ae568c2a 100755 --- a/bin/cdist-manifest-run +++ b/bin/cdist-manifest-run @@ -23,7 +23,7 @@ # . cdist-config -[ $# -eq 3 ] || __cdist_usage " " +[ $# -eq 2 ] || __cdist_usage " " set -u __cdist_target_host="$1"; shift @@ -33,10 +33,6 @@ __cdist_manifest="$1"; shift # Export information for cdist-type-emulator or manifest # -# This is a special variable, as being used by __cdist_object_dir -# We need to adjust it, so cdist-type-emulator writes to the right location -export __cdist_out_object_dir="$1"; shift - # Config dir should not get reset - FIXME: why did I do this? export __cdist_conf_dir @@ -62,7 +58,5 @@ export PATH="${__cdist_out_type_bin_dir}:$PATH" || __cdist_exit_err "Missing manifest ${__cdist_manifest}" [ -x "${__cdist_manifest}" ] \ || __cdist_exit_err "${__cdist_manifest} needs to be executable." -mkdir -p "${__cdist_out_object_dir}" \ - || __cdist_exit_err "Cannot create output dir ${__cdist_out_object_dir}" __cdist_exec_fail_on_error "${__cdist_manifest}" From d7819b1922d63f1100f254d8fe1bf0d68b3c1be0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 13:46:24 +0100 Subject: [PATCH 22/27] do not use output dir in cdist-manifest-run-init Signed-off-by: Nico Schottelius --- bin/cdist-manifest-run-init | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-manifest-run-init b/bin/cdist-manifest-run-init index f895bafa..9f10c12c 100755 --- a/bin/cdist-manifest-run-init +++ b/bin/cdist-manifest-run-init @@ -31,4 +31,4 @@ __cdist_target_host="$1"; shift eval export $__cdist_name_var_manifest=\"\$__cdist_manifest_dir\" echo "Running initial manifest for $__cdist_target_host ..." -cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest_init" "$__cdist_out_object_dir" +cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest_init" From 1dacf779e635155a10d9d28e329e66462e419d46 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 16:33:16 +0100 Subject: [PATCH 23/27] HUGE cleanup of cdist-manifest-run-all Signed-off-by: Nico Schottelius --- bin/cdist-config | 5 +++ bin/cdist-manifest-run-all | 88 ++++++-------------------------------- doc/dev/todo/niconext | 3 +- 3 files changed, 20 insertions(+), 76 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 653d993f..51d68f77 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -319,6 +319,11 @@ __cdist_type_gencode() echo "${__cdist_type_dir}/$1/${__cdist_name_gencode}" } +__cdist_type_manifest() +{ + echo "${__cdist_type_dir}/$1/${__cdist_name_manifest}" +} + __cdist_type_parameter_dir() { echo "$(__cdist_type_dir "$1")/${__cdist_name_parameter}" diff --git a/bin/cdist-manifest-run-all b/bin/cdist-manifest-run-all index fe8263ea..f20171a7 100755 --- a/bin/cdist-manifest-run-all +++ b/bin/cdist-manifest-run-all @@ -17,14 +17,7 @@ # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # -# -# For each created object -# run the manifest of the type (with object id), -# try to merge back newly created objects (otherwise fail), -# mark the object as being run -# and iterate until all objects are marked being run. -# -# +# Run all manifests # . cdist-config @@ -35,8 +28,6 @@ __cdist_target_host="$1"; shift __cdist_objects_list="${__cdist_tmp_dir}/objects_file" __cdist_new_objects_list="${__cdist_tmp_dir}/new_objects_file" -__cdist_new_objects_dir="${__cdist_tmp_dir}/new_objects_dir" - # Loop until we do not create new objects anymore # which is equal to all objects have been run @@ -48,82 +39,29 @@ while [ "$__cdist_new_objects_created" = "y" ]; do __cdist_object_list "$__cdist_out_object_dir" > "$__cdist_objects_list" # Check every object, if we need to run it - while read __cdist_object; do + while read __cdist_object_self; do # Full path to current object - __cdist_cur_object_dir="$__cdist_out_object_dir/$__cdist_object" + __cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object_self")" + # Only the id - __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" + __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")" if [ ! -f "${__cdist_cur_object_dir}/$__cdist_name_object_finished" ]; then echo "Checking manifest for ${__cdist_object} ..." - __cdist_type="$(__cdist_type_from_object "$__cdist_object")" - __cdist_manifest="$__cdist_type_dir/${__cdist_type}/${__cdist_name_manifest}" + __cdist_type="$(__cdist_type_from_object "$__cdist_object_self")" + __cdist_manifest="$(__cdist_type_manifest "${__cdist_type}")" # Make __cdist_manifest available for cdist-type-emulator export __cdist_manifest - if [ -x "${__cdist_manifest}" ]; then - echo "Executing manifest ${__cdist_manifest} ..." + echo "Executing manifest ${__cdist_manifest} ..." + # Make variables available to non-core - FIXME: beatify + export $__cdist_name_var_object="$__cdist_cur_object_dir" + export $__cdist_name_var_object_id="$__cdist_object_id" + export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")" - # Make variables available to non-core - export $__cdist_name_var_object="$__cdist_cur_object_dir" - export $__cdist_name_var_object_id="$__cdist_object_id" - export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")" - - cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" \ - "$__cdist_new_objects_dir" - - __cdist_object_list "${__cdist_new_objects_dir}" > "$__cdist_new_objects_list" - - # Verify no conflicting objects have been created - while read __cdist_new_object; do - __cdist_object_found=$(grep "^$__cdist_new_object\$" "$__cdist_objects_list" || true) - - if [ "$__cdist_object_found" ]; then - __cdist_object_source="$(cat "$(__cdist_object_dir "$__cdist_new_object")/${__cdist_name_object_source}")" - __cdist_exit_err "${__cdist_manifest}: ${__cdist_new_object} already exists (source: $__cdist_object_source)" - fi - done < "$__cdist_new_objects_list" - - # Safe harbour: We can merge all objects into main tree - # Merge = mkdir + mv parameters and source information - while read __cdist_new_object; do - [ "$__cdist_new_objects_created" = "n" ] && __cdist_new_objects_created="y" - - # where to save the newly created object - __cdist_object_dir="$__cdist_out_object_dir/$__cdist_new_object" - mkdir -p "$__cdist_object_dir" - - # Move parts of the object (CANNOT MOVE COMPLETLEY, HIERACHY!) - __cdist_new_object_dir="$__cdist_new_objects_dir/$__cdist_new_object" - - # Source - mv "${__cdist_new_object_dir}/${__cdist_name_object_source}" \ - "$__cdist_object_dir" - - # Explorer, Parameter, Require - for __cdist_object_file in \ - ${__cdist_name_explorer} \ - ${__cdist_name_parameter} \ - ${__cdist_name_require} \ - ; do - - if [ -e "${__cdist_new_object_dir}/${__cdist_object_file}" ]; then - mv "${__cdist_new_object_dir}/${__cdist_object_file}" \ - "$__cdist_object_dir" - fi - done - done < "$__cdist_new_objects_list" - - # Remove listing and objects, otherwise the next type will reuse it... - rm -rf "$__cdist_new_objects_dir" "$__cdist_new_objects_list" - else - # Be nice, warn user if manifests exists, but is not executable - if [ -f "${__cdist_manifest}" ]; then - echo "Warning ${__cdist_manifest} exists, but is not executable." >&2 - fi - fi + cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" fi # done with this object diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 75790fb8..37c1884d 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,5 +1,6 @@ - think about using .cdist for meta information? - - otherwise: parameter, gencode-local, etc. are not valid object id stuff + - cleanup cdist-manifest-run-all +later - check cdist-manifest-run-all whether -x -f to manifest shouldn't be better in cdist-manifest-run From 65763a1b4d18ae26bb371b8ae2aa459b9ad29eae Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 16:39:06 +0100 Subject: [PATCH 24/27] search for .cdist not source Signed-off-by: Nico Schottelius --- bin/cdist-config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 51d68f77..4cad1924 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -215,8 +215,8 @@ __cdist_object_list() ( cd "${basedir}" - find . -name "$__cdist_name_object_source" | \ - sed -e 's;^./;;' -e "s;/${__cdist_name_object_source}\$;;" + find . -name "$__cdist_name_dot_cdist" | \ + sed -e 's;^./;;' -e "s;/${__cdist_name_dot_cdist}\$;;" ) } From a40974e28612b0d61129faaff7d2229d5e618216 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 16:45:00 +0100 Subject: [PATCH 25/27] check for existence and executable in manifest-run-all, because it's correct for manifest-run to fail if something is broken as it's used for init Signed-off-by: Nico Schottelius --- bin/cdist-deploy-to | 3 +-- bin/cdist-manifest-run | 6 ------ bin/cdist-manifest-run-all | 24 +++++++++++++++--------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index 34662081..df14931b 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -49,10 +49,9 @@ cdist-dir push "$__cdist_target_host" "${__cdist_abs_mydir}" "${__cdist_remote_b cdist-explorer-run-global "$__cdist_target_host" cdist-manifest-run-init "$__cdist_target_host" +cdist-manifest-run-all "$__cdist_target_host" exit 1 - -cdist-manifest-run-all "$__cdist_target_host" cdist-object-explorer-all "$__cdist_target_host" cdist-object-gencode-all "$__cdist_target_host" diff --git a/bin/cdist-manifest-run b/bin/cdist-manifest-run index ae568c2a..d4ea18bb 100755 --- a/bin/cdist-manifest-run +++ b/bin/cdist-manifest-run @@ -53,10 +53,4 @@ cdist-type-build-emulation "${__cdist_out_type_bin_dir}" \ # prepend our path, so all cdist tools come before other tools export PATH="${__cdist_out_type_bin_dir}:$PATH" -# Sanity checks -[ -f "${__cdist_manifest}" ] \ - || __cdist_exit_err "Missing manifest ${__cdist_manifest}" -[ -x "${__cdist_manifest}" ] \ - || __cdist_exit_err "${__cdist_manifest} needs to be executable." - __cdist_exec_fail_on_error "${__cdist_manifest}" diff --git a/bin/cdist-manifest-run-all b/bin/cdist-manifest-run-all index f20171a7..ee15273c 100755 --- a/bin/cdist-manifest-run-all +++ b/bin/cdist-manifest-run-all @@ -47,21 +47,27 @@ while [ "$__cdist_new_objects_created" = "y" ]; do __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")" if [ ! -f "${__cdist_cur_object_dir}/$__cdist_name_object_finished" ]; then - echo "Checking manifest for ${__cdist_object} ..." + echo "Checking manifest for ${__cdist_object_self} ..." __cdist_type="$(__cdist_type_from_object "$__cdist_object_self")" __cdist_manifest="$(__cdist_type_manifest "${__cdist_type}")" - # Make __cdist_manifest available for cdist-type-emulator - export __cdist_manifest + if [ -f "$__cdist_manifest" ]; then + if [ -x "$__cdist_manifest" ]; then + # Make __cdist_manifest available for cdist-type-emulator + export __cdist_manifest - echo "Executing manifest ${__cdist_manifest} ..." - # Make variables available to non-core - FIXME: beatify - export $__cdist_name_var_object="$__cdist_cur_object_dir" - export $__cdist_name_var_object_id="$__cdist_object_id" - export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")" + echo "Executing manifest ${__cdist_manifest} ..." + # Make variables available to non-core - FIXME: beatify + export $__cdist_name_var_object="$__cdist_cur_object_dir" + export $__cdist_name_var_object_id="$__cdist_object_id" + export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")" - cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" + cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" + else + __cdist_exit_err "${__cdist_manifest} needs to be executable." + fi + fi fi # done with this object From c527e1a9c4d5eb1431c7c1c26e6c372ba6d08852 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 16:48:36 +0100 Subject: [PATCH 26/27] cleanup and make cdist-deploy-to run all stages again Signed-off-by: Nico Schottelius --- bin/cdist-deploy-to | 2 -- bin/cdist-object-explorer-all | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index df14931b..9a2fd303 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -50,8 +50,6 @@ cdist-dir push "$__cdist_target_host" "${__cdist_abs_mydir}" "${__cdist_remote_b cdist-explorer-run-global "$__cdist_target_host" cdist-manifest-run-init "$__cdist_target_host" cdist-manifest-run-all "$__cdist_target_host" - -exit 1 cdist-object-explorer-all "$__cdist_target_host" cdist-object-gencode-all "$__cdist_target_host" diff --git a/bin/cdist-object-explorer-all b/bin/cdist-object-explorer-all index 8654b03f..692a79bb 100755 --- a/bin/cdist-object-explorer-all +++ b/bin/cdist-object-explorer-all @@ -87,7 +87,7 @@ while [ $# -gt 0 ]; do # Execute explorers cdist-run-remote "$__cdist_target_host" \ - "__object=\"$(__cdist_remote_object_dir "$__object")\"" \ + "__object=\"$(__cdist_remote_object_dir "$__object")\"" \ "__object_id=\"$__object_id\"" \ cdist-remote-explorer-run \ "$__cdist_name_var_type_explorer" \ From 0d465400ea5317b56785ae78be2e2f92c6c52f8a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 16:51:20 +0100 Subject: [PATCH 27/27] less todo for nico Signed-off-by: Nico Schottelius --- doc/changelog | 4 +++- doc/dev/todo/niconext | 9 +++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/doc/changelog b/doc/changelog index f120e47d..25459951 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,5 +1,7 @@ -1.3.3: +1.4: * Add --recursive to __directory + * Move cdist generated stuff to .cdist of object + * Allow objects to be redefined 1.3.2: 2011-03-21 * Add --source to __motd diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 37c1884d..bf13881e 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,6 +1,3 @@ -- think about using .cdist for meta information? - - cleanup cdist-manifest-run-all - -later -- check cdist-manifest-run-all whether -x -f to manifest shouldn't be better - in cdist-manifest-run +Document redefine behaviour +release cdist 1.4.0 + perhaps include __self