From 240b4aebbc5ff01c4fdc10aed5c33ca0e433d320 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 09:14:42 +0100 Subject: [PATCH 0001/5240] begin to add --preseed to __package_apt Signed-off-by: Nico Schottelius --- conf/type/__package_apt/parameter/optional | 1 + doc/dev/todo/niconext | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/conf/type/__package_apt/parameter/optional b/conf/type/__package_apt/parameter/optional index a52167d3..2dae648e 100644 --- a/conf/type/__package_apt/parameter/optional +++ b/conf/type/__package_apt/parameter/optional @@ -1,2 +1,3 @@ name +preseed version diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 107023dd..4751c54a 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1 +1,2 @@ - - Ensure html output of manpages are published on the web +- add --preseed to __package_apt +- Ensure html output of manpages are published on the web From 1a4fd4854ca8094dbfb890211cfef1c92b5681bc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 09:30:42 +0100 Subject: [PATCH 0002/5240] __motd now supports --source as well Signed-off-by: Nico Schottelius --- conf/type/__motd/manifest | 2 +- conf/type/__motd/parameter/optional | 1 + doc/changelog | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 conf/type/__motd/parameter/optional diff --git a/conf/type/__motd/manifest b/conf/type/__motd/manifest index 4716f530..286d1ff3 100755 --- a/conf/type/__motd/manifest +++ b/conf/type/__motd/manifest @@ -26,7 +26,7 @@ else source="$__type/files/motd" fi -os=$(cat $__global/explorer/os) +os=$(cat "$__global/explorer/os") case "$os" in diff --git a/conf/type/__motd/parameter/optional b/conf/type/__motd/parameter/optional new file mode 100644 index 00000000..5a18cd2f --- /dev/null +++ b/conf/type/__motd/parameter/optional @@ -0,0 +1 @@ +source diff --git a/doc/changelog b/doc/changelog index df18aa43..2c2aec57 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,3 +1,6 @@ +1.3.2: + * Add --source to __motd + 1.3.1: 2011-03-21 * Document cdist-type-build-emulation * Document cdist-type-emulator From 3927da66b64688ad7b25245853d1012c2b8fce80 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 09:44:14 +0100 Subject: [PATCH 0003/5240] update __directory documentation Signed-off-by: Nico Schottelius --- conf/type/__directory/man.text | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/conf/type/__directory/man.text b/conf/type/__directory/man.text index f7272df9..02a41754 100644 --- a/conf/type/__directory/man.text +++ b/conf/type/__directory/man.text @@ -30,7 +30,7 @@ owner:: User to chown to. parents:: - Whether to create parents as well (mkdir -p behaviour) + Whether to create parents as well (mkdir -p behaviour). Must be yes or no. EXAMPLES @@ -41,7 +41,10 @@ EXAMPLES __directory /tmp/foobar # Ensure /etc exists correctly -__file /etc --owner root --group root --mode 0755 +__directory /etc --owner root --group root --mode 0755 + +# Create nfs service directory, including parents +__directory /home/services/nfs --parents yes -------------------------------------------------------------------------------- From 4ff794b11ab4085df262312ca54e6bfd0ddc1d13 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 10:07:38 +0100 Subject: [PATCH 0004/5240] __file now supports --preseed (including the documentation) Signed-off-by: Nico Schottelius --- conf/type/__package_apt/gencode-remote | 8 +++++++- conf/type/__package_apt/man.text | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/conf/type/__package_apt/gencode-remote b/conf/type/__package_apt/gencode-remote index 370f0102..b2c7179d 100755 --- a/conf/type/__package_apt/gencode-remote +++ b/conf/type/__package_apt/gencode-remote @@ -27,8 +27,14 @@ else name="$__object_id" fi -state="$(cat "$__object/parameter/state")" +# Check for preseeding and add preseed as here document +if [ -f "$__object/parameter/preseed" ]; then + echo "debconf-set-selections << __file-eof" + cat "$(cat "$__object/parameter/preseed")" + echo "__file-eof" +fi +state="$(cat "$__object/parameter/state")" is_installed="$(grep "^Status: install ok installed" "$__object/explorer/pkg_status" || true)" case "$state" in diff --git a/conf/type/__package_apt/man.text b/conf/type/__package_apt/man.text index 0780124d..8b7476b4 100644 --- a/conf/type/__package_apt/man.text +++ b/conf/type/__package_apt/man.text @@ -25,6 +25,9 @@ OPTIONAL PARAMETERS name:: If supplied, use the name and not the object id as the package name. +preseed:: + If supplied, use the given filename as input for debconf-set-selections(1) + EXAMPLES -------- @@ -36,6 +39,9 @@ __package_apt zsh --state installed # In case you only want *a* webserver, but don't care which one __package_apt webserver --state installed --name nginx +# Install package with defaults (from a type) +__package_apt postfix --state installed --preseed "$__type/files/postfix-seed" + # Remove obsolete package __package_apt puppet --state deinstalled -------------------------------------------------------------------------------- From 3f39c809b0cd7be1481ac4ad9197c996cb632042 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 10:08:15 +0100 Subject: [PATCH 0005/5240] more stuff for 1.3.2 Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 2c2aec57..6f7db0bf 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,5 +1,6 @@ 1.3.2: * Add --source to __motd + * Add --preseed to __package_apt 1.3.1: 2011-03-21 * Document cdist-type-build-emulation From 30c2b017d42c868582e70bb0af2af84b7d4ac65f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 12:24:42 +0100 Subject: [PATCH 0006/5240] also name source of object when running type manifests Signed-off-by: Nico Schottelius --- bin/cdist-manifest-run-all | 8 ++++++-- doc/changelog | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bin/cdist-manifest-run-all b/bin/cdist-manifest-run-all index 884f46ee..fe8263ea 100755 --- a/bin/cdist-manifest-run-all +++ b/bin/cdist-manifest-run-all @@ -78,8 +78,12 @@ while [ "$__cdist_new_objects_created" = "y" ]; do # Verify no conflicting objects have been created while read __cdist_new_object; do - grep -q "^$__cdist_new_object\$" "$__cdist_objects_list" && \ - __cdist_exit_err "${__cdist_manifest}: Tried to recreate ${__cdist_new_object}" + __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 diff --git a/doc/changelog b/doc/changelog index 6f7db0bf..4b985c30 100644 --- a/doc/changelog +++ b/doc/changelog @@ -15,7 +15,6 @@ * Bugfix: Remove obsolete $@ call in cdist-remote-explorer-run * Bugfix: Correct manpage for __removeline (broke manpage generation) - 1.2.0: 2011-03-19 * Added dependencies (see cdist-type(7)) * New type __removeline (Daniel Roth) From 87cc5c2bbf289001a064d71a2ab25821f878db00 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 13:31:00 +0100 Subject: [PATCH 0007/5240] claenup cdist-quickstart Signed-off-by: Nico Schottelius --- doc/man/cdist-quickstart.text | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/doc/man/cdist-quickstart.text b/doc/man/cdist-quickstart.text index ddcbbccc..087fd2d5 100644 --- a/doc/man/cdist-quickstart.text +++ b/doc/man/cdist-quickstart.text @@ -20,10 +20,8 @@ of the first tools you use when you begin with cdist. EXAMPLES -------- - -To use cdist-quickstart, add the bin directory to your PATH, -execute cdist-quickstart and enjoy cdist: - +To use cdist-quickstart, add the bin directory to your PATH, execute +cdist-quickstart and enjoy cdist: -------------------------------------------------------------------------------- # Bourne shell example @@ -37,7 +35,6 @@ cdist-quickstart -------------------------------------------------------------------------------- - SEE ALSO -------- - cdist(7) @@ -48,4 +45,3 @@ COPYING ------- Copyright \(C) 2010-2011 Nico Schottelius. Free use of this software is granted under the terms of the GNU General Public License version 3 (GPLv3). -## How to use cdist? From 4553333ddbec68bb8c4c5f65438485ea918235f6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 13:48:40 +0100 Subject: [PATCH 0008/5240] Begin to include html version of manpages Signed-off-by: Nico Schottelius --- Makefile | 14 +++++++++----- README | 9 +++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 6f1b08a7..7f975c92 100644 --- a/Makefile +++ b/Makefile @@ -9,8 +9,8 @@ A2XM=a2x -f manpage --no-xmllint A2XH=asciidoc -b xhtml11 # Developer only -WEBDIR=$$HOME/niconetz -WEBPAGE=software/cdist.mdwn +WEBPAGEBASE=$$HOME/niconetz/software/cdist +WEBPAGE=$(WEBPAGEBASE).mdwn # Documentation MANDIR=doc/man @@ -52,7 +52,7 @@ all: @echo '' @echo 'Here are the possible targets:' @echo '' - @echo ' man: Build manpages (requires Asciidoc (a2x binary))' + @echo ' man: Build manpages (requires Asciidoc)' @echo ' clean: Remove build stuff' @echo '' @echo '' @@ -97,6 +97,7 @@ $(MANDIR)/cdist-reference.text: manmove $(MANDIR)/cdist-reference.text.sh clean: rm -rf doc/man/*.html doc/man/*.[1-9] doc/man/man[1-9] $(MANGENERATED) rm -f conf/type/*/man.html + rm -rf doc/html ################################################################################ # Developer targets @@ -110,9 +111,12 @@ test: # gentoo .rsync nicosc@ru3.inf.ethz.ch:cdist +#web: manmove web: - cp README $(WEBDIR)/$(WEBPAGE) - cd $(WEBDIR) && git commit -m "cdist update" $(WEBPAGE) + cp README $(WEBPAGE) + cp -r doc/html/* $(WEBPAGEBASE)/man + exit 1 + cd $(WEBDIR) && git commit -m "cdist update" $(WEBPAGEBASE) cd $(WEBDIR) && make pub pub: diff --git a/README b/README index c0ecbbbf..2aab45c1 100644 --- a/README +++ b/README @@ -37,6 +37,11 @@ it ticks differently: * cdist is written in POSIX shell * No special requirements like high level interpreters needed on server or target +### Documentation + +The cdist documentation is included as manpages in the distribution. +You can [browse them online](man) as well. + ### Architecture * Push mode (server pushes configuration) @@ -151,6 +156,10 @@ If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break. The master branch on the other hand is the development branch and may not be working, break your setup or eat the tree in your garden. +### Upgrading from 1.2 to 1.3 + +Rename **gencode** of every type to **gencode-remote**. + ### Upgrading from 1.1 to 1.2 No incompatiblities. From b36f2fb28253ee15de90db81fc2427b1f11f4b4b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 13:48:58 +0100 Subject: [PATCH 0009/5240] -exit(1) Signed-off-by: Nico Schottelius --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 7f975c92..853feea1 100644 --- a/Makefile +++ b/Makefile @@ -115,7 +115,6 @@ test: web: cp README $(WEBPAGE) cp -r doc/html/* $(WEBPAGEBASE)/man - exit 1 cd $(WEBDIR) && git commit -m "cdist update" $(WEBPAGEBASE) cd $(WEBDIR) && make pub From f4dc8b28af97a15ec21a74ebfc02e0d1addecd6f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 14:00:00 +0100 Subject: [PATCH 0010/5240] fix webbpage copy Signed-off-by: Nico Schottelius --- Makefile | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 853feea1..45407702 100644 --- a/Makefile +++ b/Makefile @@ -9,8 +9,10 @@ A2XM=a2x -f manpage --no-xmllint A2XH=asciidoc -b xhtml11 # Developer only -WEBPAGEBASE=$$HOME/niconetz/software/cdist -WEBPAGE=$(WEBPAGEBASE).mdwn +WEBDIR=$$HOME/niconetz +WEBBASE=software/cdist +WEBPAGE=$(WEBBASE).mdwn + # Documentation MANDIR=doc/man @@ -113,9 +115,9 @@ test: #web: manmove web: - cp README $(WEBPAGE) - cp -r doc/html/* $(WEBPAGEBASE)/man - cd $(WEBDIR) && git commit -m "cdist update" $(WEBPAGEBASE) + cp README $(WEBDIR)/$(WEBPAGE) + cp -r doc/html/* $(WEBDIR)/$(WEBBASE)/man + cd $(WEBDIR) && git commit -m "cdist update" $(WEBBASE) $(WEBPAGE) cd $(WEBDIR) && make pub pub: From 556cb574ca8a94beaf9440736c6ad49158132177 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 14:04:26 +0100 Subject: [PATCH 0011/5240] update todos Signed-off-by: Nico Schottelius --- doc/changelog | 1 + doc/dev/todo/post-1.3 | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/changelog b/doc/changelog index 4b985c30..6f7cac71 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,6 +1,7 @@ 1.3.2: * Add --source to __motd * Add --preseed to __package_apt + * Include HTML documentation of manpages 1.3.1: 2011-03-21 * Document cdist-type-build-emulation diff --git a/doc/dev/todo/post-1.3 b/doc/dev/todo/post-1.3 index bf65d2cf..a798114a 100644 --- a/doc/dev/todo/post-1.3 +++ b/doc/dev/todo/post-1.3 @@ -3,13 +3,13 @@ Core: - otherwise: parameter, gencode-local, etc. are not valid object id stuff Types to be written/extended: - j __ssh-keys (host/user) + - __ssh-keys (host/user) - __service - __file_edit - regexp replace (can probably cover all?) - __cron -Documentation: +Further Documentation: (probably cdist-best-practises?) - Describe Multi master setups - use ssh with master socket? - saves connection delay for new connections: -M From bbf762a4d95f0f48cdd79b2c861552647f8ee955 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 14:05:17 +0100 Subject: [PATCH 0012/5240] more todo for nico Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 9 +++++++-- doc/dev/todo/post-1.3 | 8 -------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 4751c54a..fd604139 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,2 +1,7 @@ -- add --preseed to __package_apt -- Ensure html output of manpages are published on the web +Further Documentation: (probably cdist-best-practises?) + - Describe Multi master setups + - use ssh with master socket? + - saves connection delay for new connections: -M + - hint: http://protempore.net/~calvins/howto/ssh-connection-sharing/ + - Different environments (production, integration, development) + - via version control diff --git a/doc/dev/todo/post-1.3 b/doc/dev/todo/post-1.3 index a798114a..284b56b4 100644 --- a/doc/dev/todo/post-1.3 +++ b/doc/dev/todo/post-1.3 @@ -8,11 +8,3 @@ Types to be written/extended: - __file_edit - regexp replace (can probably cover all?) - __cron - -Further Documentation: (probably cdist-best-practises?) - - Describe Multi master setups - - use ssh with master socket? - - saves connection delay for new connections: -M - - hint: http://protempore.net/~calvins/howto/ssh-connection-sharing/ - - Different environments (production, integration, development) - - via version control From cccd9b32837d43da2557e43c9b9932d52c9f825b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 14:07:17 +0100 Subject: [PATCH 0013/5240] add hint on html documentation version Signed-off-by: Nico Schottelius --- README | 2 +- doc/changelog | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README b/README index 2aab45c1..211f1073 100644 --- a/README +++ b/README @@ -40,7 +40,7 @@ it ticks differently: ### Documentation The cdist documentation is included as manpages in the distribution. -You can [browse them online](man) as well. +You can [browse the documentation for the latest version online](man) as well. ### Architecture diff --git a/doc/changelog b/doc/changelog index 6f7cac71..5b6b03a9 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,7 +1,7 @@ -1.3.2: +1.3.2: 2011-03-21 * Add --source to __motd * Add --preseed to __package_apt - * Include HTML documentation of manpages + * Include HTML documentation of manpages and publish them 1.3.1: 2011-03-21 * Document cdist-type-build-emulation From b41c1f764928d1b0b8212266a891865cb877a7b4 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 14:11:24 +0100 Subject: [PATCH 0014/5240] upgrade to 1.3.2 Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index 6a2c1d90..946c88b4 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -19,7 +19,7 @@ # # -__cdist_version="1.3.1" +__cdist_version="1.3.2" # Fail if something bogus is going on set -u From e163a2baec715faf0abb1c70e6d232a71a8b2436 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 14:19:07 +0100 Subject: [PATCH 0015/5240] begin to write cdist-best-practise Signed-off-by: Nico Schottelius --- Makefile | 5 +++-- doc/dev/todo/niconext | 6 +++--- doc/man/cdist-best-practise.text | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 doc/man/cdist-best-practise.text diff --git a/Makefile b/Makefile index 45407702..29d86c67 100644 --- a/Makefile +++ b/Makefile @@ -19,8 +19,9 @@ MANDIR=doc/man MANGENERATED=$(MANDIR)/cdist-reference.text MANSRC=$(MANDIR)/cdist.text \ - $(MANDIR)/cdist-code-run-all.text \ + $(MANDIR)/cdist-best-practise.text \ $(MANDIR)/cdist-code-run.text \ + $(MANDIR)/cdist-code-run-all.text \ $(MANDIR)/cdist-config.text \ $(MANDIR)/cdist-dir.text \ $(MANDIR)/cdist-env.text \ @@ -29,8 +30,8 @@ MANSRC=$(MANDIR)/cdist.text \ $(MANDIR)/cdist-explorer.text \ $(MANDIR)/cdist-manifest.text \ $(MANDIR)/cdist-manifest-run.text \ - $(MANDIR)/cdist-manifest-run-init.text \ $(MANDIR)/cdist-manifest-run-all.text \ + $(MANDIR)/cdist-manifest-run-init.text \ $(MANDIR)/cdist-object-explorer-all.text \ $(MANDIR)/cdist-object-gencode.text \ $(MANDIR)/cdist-object-gencode-all.text \ diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index fd604139..fe7125b5 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,6 +1,6 @@ -Further Documentation: (probably cdist-best-practises?) - - Describe Multi master setups - - use ssh with master socket? +Write cdist-best-practise: + - Multi master setups + - ssh with master socket? - saves connection delay for new connections: -M - hint: http://protempore.net/~calvins/howto/ssh-connection-sharing/ - Different environments (production, integration, development) diff --git a/doc/man/cdist-best-practise.text b/doc/man/cdist-best-practise.text new file mode 100644 index 00000000..159da51d --- /dev/null +++ b/doc/man/cdist-best-practise.text @@ -0,0 +1,23 @@ +cdist-best-practise(1) +====================== +Nico Schottelius + +NAME +---- +cdist-best-practise - Practises used in real environments + + +TOPIC1 +------ + + + +SEE ALSO +-------- +- cdist(7) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From 3599eeb42ba1bbd2627caaba1eed7542620bccbb Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 14:27:23 +0100 Subject: [PATCH 0016/5240] add link and some content to cdist-best-practise Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 3 --- doc/man/cdist-best-practise.text | 26 +++++++++++++++++++++++--- doc/man/cdist.text | 1 + 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index fe7125b5..d4fe1ae4 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,7 +1,4 @@ Write cdist-best-practise: - Multi master setups - - ssh with master socket? - - saves connection delay for new connections: -M - - hint: http://protempore.net/~calvins/howto/ssh-connection-sharing/ - Different environments (production, integration, development) - via version control diff --git a/doc/man/cdist-best-practise.text b/doc/man/cdist-best-practise.text index 159da51d..4d4b8edb 100644 --- a/doc/man/cdist-best-practise.text +++ b/doc/man/cdist-best-practise.text @@ -1,4 +1,4 @@ -cdist-best-practise(1) +cdist-best-practise(7) ====================== Nico Schottelius @@ -7,8 +7,28 @@ NAME cdist-best-practise - Practises used in real environments -TOPIC1 ------- +PASSWORDLESS CONNECTIONS +------------------------ +It is recommended to run cdist with public key authentication. +This requires a private/public key pair and the entry +"PermitRootLogin without-password" in the sshd server. +See sshd_config(5) and ssh-keygen(1). + + +SPEEDING UP SSH CONNECTIONS +--------------------------- +When connecting to a new host, the initial delay with ssh connections +is pretty big. You can work around this by +"sharing of multiple sessions over a single network connection" +(quote from ssh_config(5)). The following code is suitable for +inclusion into your ~/.ssh/config: + +-------------------------------------------------------------------------------- +Host * + ControlPath ~/.ssh/master-%l-%r@%h:%p + ControlMaster auto + ControlPersist 10 +-------------------------------------------------------------------------------- diff --git a/doc/man/cdist.text b/doc/man/cdist.text index 570b6b95..957e7cb4 100644 --- a/doc/man/cdist.text +++ b/doc/man/cdist.text @@ -30,6 +30,7 @@ pull mechanism (client requests configuration). SEE ALSO -------- - Website: http://www.nico.schottelius.org/cdist/[] +- cdist-best-practise(7) - cdist-deploy-to(1) - cdist-manifest(7) - cdist-quickstart(1) From 70f2d1040fc6d3bc286cbc06a8bfd733217d09cd Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 14:38:53 +0100 Subject: [PATCH 0017/5240] document multi-master and multi-environment workflow Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 4 ---- doc/man/cdist-best-practise.text | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index d4fe1ae4..e69de29b 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,4 +0,0 @@ -Write cdist-best-practise: - - Multi master setups - - Different environments (production, integration, development) - - via version control diff --git a/doc/man/cdist-best-practise.text b/doc/man/cdist-best-practise.text index 4d4b8edb..af06084e 100644 --- a/doc/man/cdist-best-practise.text +++ b/doc/man/cdist-best-practise.text @@ -31,6 +31,36 @@ Host * -------------------------------------------------------------------------------- +MULTI MASTER OR ENVIRONMENT SETUPS +---------------------------------- +If you plan to distribute cdist among servers or use different +environments, you can do so easily with the included version +control git. For instance if you plan to use the typical three +environments production, integration and development, you can +realise this with git branches: + +-------------------------------------------------------------------------------- +# Go to cdist checkout +cd /path/to/cdist + +# Create branches +git branch development +git branch integration +git branch production + +# Make use of a branch, for instance production +git checkout production +-------------------------------------------------------------------------------- + +Similar if you want to have cdist checked out at multiple machines, +you can clone it multiple times: + +-------------------------------------------------------------------------------- +machine-a % git clone git://your-git-server/cdist +machine-b % git clone git://your-git-server/cdist +-------------------------------------------------------------------------------- + + SEE ALSO -------- From 9ae1026dc497a4b0cab6bcf8628bc21bafdf7437 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 14:46:15 +0100 Subject: [PATCH 0018/5240] update todos - WARNING: TODO IS almost EMPTY Signed-off-by: Nico Schottelius --- doc/dev/todo/cache | 18 ------------------ doc/dev/todo/daninext | 0 doc/dev/todo/niconext | 2 ++ doc/dev/todo/post-1.3 | 22 +++++++++++++++++++--- 4 files changed, 21 insertions(+), 21 deletions(-) delete mode 100644 doc/dev/todo/cache delete mode 100644 doc/dev/todo/daninext diff --git a/doc/dev/todo/cache b/doc/dev/todo/cache deleted file mode 100644 index b513e340..00000000 --- a/doc/dev/todo/cache +++ /dev/null @@ -1,18 +0,0 @@ -Assume you want to configure stuff one host ("monitor node"), -depending on the configuration of other hosts ("cluster nodes"). - -For instance, the monitor host would like to know, -which hosts are configured with the provider -"apache" and option --start true. - -This requires the monitor node to be able to -query all other configured nodes. It can't -ask for all hosts, because cdist does not -know which hosts are configured or may exist. - -Example implementation - -If cdist keeps ("caches") the configuration of every -node it configures, each new node can query the -cache for existing nodes that acquired the given -configuration. diff --git a/doc/dev/todo/daninext b/doc/dev/todo/daninext deleted file mode 100644 index e69de29b..00000000 diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index e69de29b..6179c017 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -0,0 +1,2 @@ +- think about using .cdist for meta information? + - otherwise: parameter, gencode-local, etc. are not valid object id stuff diff --git a/doc/dev/todo/post-1.3 b/doc/dev/todo/post-1.3 index 284b56b4..82a6dd3d 100644 --- a/doc/dev/todo/post-1.3 +++ b/doc/dev/todo/post-1.3 @@ -1,6 +1,22 @@ -Core: - - think about using .cdist for meta information? - - otherwise: parameter, gencode-local, etc. are not valid object id stuff +Cache: + Assume you want to configure stuff one host ("monitor node"), + depending on the configuration of other hosts ("cluster nodes"). + + For instance, the monitor host would like to know, + which hosts are configured with the provider + "apache" and option --start true. + + This requires the monitor node to be able to + query all other configured nodes. It can't + ask for all hosts, because cdist does not + know which hosts are configured or may exist. + + Example implementation + + If cdist keeps ("caches") the configuration of every + node it configures, each new node can query the + cache for existing nodes that acquired the given + configuration. Types to be written/extended: - __ssh-keys (host/user) From 7f3e22239f2464ac831f0247e212496470789d0c Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 21 Mar 2011 16:18:04 +0100 Subject: [PATCH 0019/5240] 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 2007fc17ccb2d960483903a3cf6432bc8529e4c6 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 21 Mar 2011 17:24:09 +0100 Subject: [PATCH 0020/5240] README: users++ Signed-off-by: Steven Armstrong --- README | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README b/README index 211f1073..b637c50f 100644 --- a/README +++ b/README @@ -214,3 +214,9 @@ Yes, I'm actually eating my own dogfood and currently managing with cdist on a total of **5** production machines of the [Systems Group](http://www.systems.ethz.ch) at the [ETH Zurich](http://www.ethz.ch). + +### Steven Armstrong, CBRG ETH Zurich + +The CBRG is managing most of their compute clusters with cdist. + + From 29edf58809d0b2e7ce3c3542005236da3bc05cd2 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 22 Mar 2011 00:43:44 +0100 Subject: [PATCH 0021/5240] +commercial support Signed-off-by: Nico Schottelius --- README | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README b/README index b637c50f..f5345fde 100644 --- a/README +++ b/README @@ -187,6 +187,11 @@ You can join the development ***IRC channel*** Bug reports, questions, patches, etc. should be send to the [cdist mailing list](http://l.schottelius.org/mailman/listinfo/cdist). +## Commercial support + +You can request commercial support for cdist from +[my company](http://firma.schottelius.org/english/). + ## Used by If you're using cdist, feel free to send a report to the mailing list. From 8a76143e33f46dfabbbd359583a8f4daa3169bbb Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 22 Mar 2011 08:29:59 +0100 Subject: [PATCH 0022/5240] shrink cdist env and make it usable for . ./bin/cdist-env (in sh) Signed-off-by: Nico Schottelius --- bin/cdist-env | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/bin/cdist-env b/bin/cdist-env index 3a477e85..2aac5e6b 100755 --- a/bin/cdist-env +++ b/bin/cdist-env @@ -21,23 +21,13 @@ # Setup environment for use with cdist - must be standalone! # -__cdist_pwd="$(pwd -P)" -__cdist_mydir="${0%/*}"; -__cdist_abs_mydir="$(cd "$__cdist_mydir" && pwd -P)" -__cdist_myname=${0##*/}; -__cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" +export PATH="$(cd "${0%/*}" && pwd -P):$PATH" +export MANPATH="$(cd "${0%/*}/../doc/man" && pwd -P):$MANPATH" -shell_binary=${SHELL##*/} - -NEWPATH="$__cdist_abs_mydir:$PATH" -cd "$__cdist_abs_mydir/../doc/man" -NEWMANPATH="$(pwd -P):$MANPATH" - -# Match csh, tcsh to handle differently -if [ "$(echo $shell_binary | grep 'csh$')" ]; then - echo setenv PATH $NEWPATH \; - echo setenv MANPATH $NEWMANPATH +if [ "$(echo ${SHELL##*/} | grep 'csh$')" ]; then + echo setenv PATH $PATH \; + echo setenv MANPATH $MANPATH else - echo export PATH=$NEWPATH - echo export MANPATH=$NEWMANPATH + echo export PATH=$PATH + echo export MANPATH=$MANPATH fi From e921986e32f9fb049a4b22f4de925eedfb797a73 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 22 Mar 2011 08:57:19 +0100 Subject: [PATCH 0023/5240] remove double slash in __cdist_object in bin/cdist-type-emulator Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 063afd92..9f272569 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -40,7 +40,13 @@ fi echo "$__cdist_object_id" | grep -q "^${__cdist_sane_regexp}\$" || \ __cdist_usage "Insane object id, ${__cdist_object_id}." -__cdist_object="${__cdist_type}/${__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 + __cdist_ddir="$(__cdist_object_dir "$__cdist_object")" __cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object")" From e4190c3d0a9d44faef0f4fc17cbc787cf5b4c64a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 22 Mar 2011 09:59:41 +0100 Subject: [PATCH 0024/5240] add --recursive to __directory (man, gencode, parameter, changelog) Signed-off-by: Nico Schottelius --- conf/type/__directory/gencode-remote | 10 ++++++++-- conf/type/__directory/man.text | 8 ++++++++ conf/type/__directory/parameter/optional | 1 + doc/changelog | 3 +++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/conf/type/__directory/gencode-remote b/conf/type/__directory/gencode-remote index 6d226aae..a5458b4b 100755 --- a/conf/type/__directory/gencode-remote +++ b/conf/type/__directory/gencode-remote @@ -36,6 +36,12 @@ if [ -f "$__object/parameter/parents" ]; then fi fi +if [ -f "$__object/parameter/recursive" ]; then + if [ yes = "$(cat "$__object/parameter/recursive")" ]; then + recursive="-R" + fi +fi + # Only create if not already existent if [ no = "$(cat "$__object/explorer/exists")" ]; then echo mkdir $mkdiropt \"$destination\" @@ -48,10 +54,10 @@ fi # Group if [ -f "$__object/parameter/group" ]; then - echo chgrp \"$(cat "$__object/parameter/group")\" \"$destination\" + echo chgrp $recursive \"$(cat "$__object/parameter/group")\" \"$destination\" fi # Owner if [ -f "$__object/parameter/owner" ]; then - echo chown \"$(cat "$__object/parameter/owner")\" \"$destination\" + echo chown $recursive \"$(cat "$__object/parameter/owner")\" \"$destination\" fi diff --git a/conf/type/__directory/man.text b/conf/type/__directory/man.text index 02a41754..8e1484de 100644 --- a/conf/type/__directory/man.text +++ b/conf/type/__directory/man.text @@ -32,6 +32,11 @@ owner:: parents:: Whether to create parents as well (mkdir -p behaviour). Must be yes or no. +recursive:: + If supplied the chgrp and chown call will run recursively. + This does *not* influence the behaviour of chmod. + Must be yes or no. + EXAMPLES -------- @@ -45,6 +50,9 @@ __directory /etc --owner root --group root --mode 0755 # Create nfs service directory, including parents __directory /home/services/nfs --parents yes + +# Change permissions recursively +__directory /home/services --recursive yes --owner root --group root -------------------------------------------------------------------------------- diff --git a/conf/type/__directory/parameter/optional b/conf/type/__directory/parameter/optional index 752c3989..247e2f64 100644 --- a/conf/type/__directory/parameter/optional +++ b/conf/type/__directory/parameter/optional @@ -2,3 +2,4 @@ group mode owner parents +recursive diff --git a/doc/changelog b/doc/changelog index 5b6b03a9..f120e47d 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,3 +1,6 @@ +1.3.3: + * Add --recursive to __directory + 1.3.2: 2011-03-21 * Add --source to __motd * Add --preseed to __package_apt From 6a0a5fb09c98e00c462cb6a2ea581d129b81d0ad Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 22 Mar 2011 12:37:32 +0100 Subject: [PATCH 0025/5240] +private Signed-off-by: Nico Schottelius --- README | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README b/README index f5345fde..e7345a78 100644 --- a/README +++ b/README @@ -202,7 +202,7 @@ Interesting information are for instance * What are the pros/cons you see in cdist? * General comments/critics -### Nico Schottelius, Systems Group ETH Zurich +### Nico Schottelius, Systems Group ETH Zurich and privately Yes, I'm actually eating my own dogfood and currently managing @@ -216,9 +216,9 @@ Yes, I'm actually eating my own dogfood and currently managing * [xfce](http://www.xfce.org/) (lightweight desktop environment) * [slim](http://slim.berlios.de/) (graphical login manager for X11) -with cdist on a total of **5** production machines of the +with cdist on a total of **9** production machines of the [Systems Group](http://www.systems.ethz.ch) at the -[ETH Zurich](http://www.ethz.ch). +[ETH Zurich](http://www.ethz.ch) as well at home. ### Steven Armstrong, CBRG ETH Zurich From 221e0341ae2456cb7457718cf5ab7241113b8ceb Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 22 Mar 2011 12:37:40 +0100 Subject: [PATCH 0026/5240] +todo Signed-off-by: Nico Schottelius --- doc/dev/todo/post-1.3 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/dev/todo/post-1.3 b/doc/dev/todo/post-1.3 index 82a6dd3d..301dfdb2 100644 --- a/doc/dev/todo/post-1.3 +++ b/doc/dev/todo/post-1.3 @@ -1,3 +1,9 @@ +Core: + - allow redefine object, if everything same + - support $__self = relative_type/object_id + - .cdist + - cache + Cache: Assume you want to configure stuff one host ("monitor node"), depending on the configuration of other hosts ("cluster nodes"). @@ -23,4 +29,5 @@ Types to be written/extended: - __service - __file_edit - regexp replace (can probably cover all?) + -> aka sed. - __cron From 0c593f5c5beada213ee7cbe7e106e495ca76bab6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 22 Mar 2011 16:48:02 +0100 Subject: [PATCH 0027/5240] -created in text Signed-off-by: Nico Schottelius --- bin/cdist-deploy-to | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index a288b189..9a2fd303 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -53,7 +53,7 @@ cdist-manifest-run-all "$__cdist_target_host" cdist-object-explorer-all "$__cdist_target_host" cdist-object-gencode-all "$__cdist_target_host" -echo "Transferring created objects to $__cdist_target_host ..." +echo "Transferring objects to $__cdist_target_host ..." cdist-dir push "$__cdist_target_host" "$__cdist_out_object_dir" \ "${__cdist_remote_out_object_base_dir}" From 0c8432fd4806cc161214bfa0767215dba2d130f8 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 08:11:56 +0100 Subject: [PATCH 0028/5240] add ideas about dependecies Signed-off-by: Steven Armstrong --- doc/dev/logs/2011-03-23.autorequire | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 doc/dev/logs/2011-03-23.autorequire diff --git a/doc/dev/logs/2011-03-23.autorequire b/doc/dev/logs/2011-03-23.autorequire new file mode 100644 index 00000000..6660d0eb --- /dev/null +++ b/doc/dev/logs/2011-03-23.autorequire @@ -0,0 +1,32 @@ + +Ziel: type __gugus soll abhaengig von type __foo sein + + +-------------------------------------------------------------------------------- + +__foo/manifest + + __file /nice/file --source /some/where + __file /nice/other/file --source /some/where/else + __package gurk --state installed + +-------------------------------------------------------------------------------- + +a) ohne autorequire + +__gugus/manifest + + require="__file/nice/file __file/nice/other/file __package/gurk" __file /whatever + +-------------------------------------------------------------------------------- + +b) mit autorequire + +__gugus/manifest + + require="__foo/someid" __file /whatever + +-------------------------------------------------------------------------------- + +Behauptung: __gugus sollte nicht ueber die internas von __foo bescheid wissen muessen + From ab7635512827f82993b97ae9795f8273361900d0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 09:29:41 +0100 Subject: [PATCH 0029/5240] add hint to . ./bin/cdist-env Signed-off-by: Nico Schottelius --- doc/man/cdist-env.text | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/man/cdist-env.text b/doc/man/cdist-env.text index 8d10aa85..cf54d363 100644 --- a/doc/man/cdist-env.text +++ b/doc/man/cdist-env.text @@ -32,7 +32,10 @@ in csh variants (csh, tcsh): eval `./bin/cdist-env` -------------------------------------------------------------------------------- -Replace "./" with the checkout directory of cdist. +For bourne shell, the is also a shorter version: +-------------------------------------------------------------------------------- +. ./bin/cdist-env +-------------------------------------------------------------------------------- SEE ALSO From 1924e0cc6374bb872d89c92c9579a5f97e00e723 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 10:32:20 +0100 Subject: [PATCH 0030/5240] +log: should a type manifest be able to use type explorer values? Signed-off-by: Steven Armstrong --- doc/dev/logs/2011-03-23.manifest_use_explorer | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 doc/dev/logs/2011-03-23.manifest_use_explorer diff --git a/doc/dev/logs/2011-03-23.manifest_use_explorer b/doc/dev/logs/2011-03-23.manifest_use_explorer new file mode 100644 index 00000000..26571027 --- /dev/null +++ b/doc/dev/logs/2011-03-23.manifest_use_explorer @@ -0,0 +1,22 @@ +== Henne/Ei Problem == +manifest will explorer benutzen der noch gar nicht existiert, +weil explorer ja auch object benutzen kann/soll/will welches erst von manifest +erzuegt wird. + + +-------------------------------------------------------------------------------- + +__foo/manifest + + state_should="$(cat "$__object/parameter/state")" + state_is="$(cat "$__object/explorer/state")" + # BANG -> $__object/explorer/state does not exist at this point + + if [ "$state_should" != "$state_is" ]; then + __file /some/file --source /some/source + fi + + + + + From 0a028785c315c5cf32a470d19022057046b9b286 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 10:39:45 +0100 Subject: [PATCH 0031/5240] 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 0032/5240] 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 0033/5240] 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 0034/5240] 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 0035/5240] 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 0036/5240] 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 0037/5240] 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 0038/5240] 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 0039/5240] 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 0040/5240] 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 0041/5240] 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 0042/5240] 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 0043/5240] 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 0044/5240] 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 0045/5240] 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 08a53cb130b63a6a4f9d4263387060e39e9e3dcf Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 13:18:13 +0100 Subject: [PATCH 0046/5240] new type: __apt_ppa Signed-off-by: Steven Armstrong --- conf/type/__apt_ppa/explorer/state | 28 +++++++++++ .../type/__apt_ppa/files/check-apt-repository | 42 +++++++++++++++++ .../__apt_ppa/files/remove-apt-repository | 42 +++++++++++++++++ conf/type/__apt_ppa/gencode-remote | 35 ++++++++++++++ conf/type/__apt_ppa/man.text | 47 +++++++++++++++++++ conf/type/__apt_ppa/manifest | 33 +++++++++++++ conf/type/__apt_ppa/parameter/required | 1 + 7 files changed, 228 insertions(+) create mode 100755 conf/type/__apt_ppa/explorer/state create mode 100755 conf/type/__apt_ppa/files/check-apt-repository create mode 100755 conf/type/__apt_ppa/files/remove-apt-repository create mode 100755 conf/type/__apt_ppa/gencode-remote create mode 100644 conf/type/__apt_ppa/man.text create mode 100755 conf/type/__apt_ppa/manifest create mode 100644 conf/type/__apt_ppa/parameter/required diff --git a/conf/type/__apt_ppa/explorer/state b/conf/type/__apt_ppa/explorer/state new file mode 100755 index 00000000..c50af3f0 --- /dev/null +++ b/conf/type/__apt_ppa/explorer/state @@ -0,0 +1,28 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Get the current state of the ppa. +# + +name="$__object_id" + +# FIXME: on first run check-apt-repository may not be installed +check-apt-repository "$name" && echo enabled || echo disabled + diff --git a/conf/type/__apt_ppa/files/check-apt-repository b/conf/type/__apt_ppa/files/check-apt-repository new file mode 100755 index 00000000..4f4252c1 --- /dev/null +++ b/conf/type/__apt_ppa/files/check-apt-repository @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# Check if the given apt repository is installed or not. +# Exit with: +# 0: if it is installed +# 1: if not +# 2: on error +# + +import sys +from aptsources import distro, sourceslist +from softwareproperties import ppa + + +def is_repository_installed(repository): + #print 'repository:', repository + codename = distro.get_distro().codename + #print 'codename:', codename + (line, file) = ppa.expand_ppa_line(repository.strip(), codename) + #print 'line:', line + #print 'file:', file + sources_list = sourceslist.SourcesList() + source_entry = sourceslist.SourceEntry(line, file) + + if source_entry in sources_list: + #print 'yes' + return True + else: + #print 'no' + return False + +if __name__ == '__main__': + if (len(sys.argv) != 2): + print 'Error: need a repository as argument' + sys.exit(2) + #repository = 'ppa:freenx-team' + repository = sys.argv[1] + if is_repository_installed(repository): + sys.exit(0) + else: + sys.exit(1) + diff --git a/conf/type/__apt_ppa/files/remove-apt-repository b/conf/type/__apt_ppa/files/remove-apt-repository new file mode 100755 index 00000000..b57a07f6 --- /dev/null +++ b/conf/type/__apt_ppa/files/remove-apt-repository @@ -0,0 +1,42 @@ +#!/usr/bin/env python +# +# Remove the given apt repository. +# +# Exit with: +# 0: if it worked +# 1: if not +# 2: on other error + + +import sys +from aptsources import distro, sourceslist +from softwareproperties import ppa +from softwareproperties.SoftwareProperties import SoftwareProperties + + +def remove_repository(repository): + #print 'repository:', repository + codename = distro.get_distro().codename + #print 'codename:', codename + (line, file) = ppa.expand_ppa_line(repository.strip(), codename) + #print 'line:', line + #print 'file:', file + source_entry = sourceslist.SourceEntry(line, file) + + try: + sp = SoftwareProperties() + sp.remove_source(source_entry) + return True + except ValueError: + print >> sys.stderr, "Error: '%s' doesn't exists in a sourcelist file" % line + return False + +if __name__ == '__main__': + if (len(sys.argv) != 2): + print >> sys.stderr, 'Error: need a repository as argument' + sys.exit(2) + repository = sys.argv[1] + if remove_repository(repository): + sys.exit(0) + else: + sys.exit(1) diff --git a/conf/type/__apt_ppa/gencode-remote b/conf/type/__apt_ppa/gencode-remote new file mode 100755 index 00000000..0e7fe163 --- /dev/null +++ b/conf/type/__apt_ppa/gencode-remote @@ -0,0 +1,35 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +name="$__object_id" +state_should="$(cat "$__object/parameter/state")" +state_is="$(cat "$__object/explorer/state")" + +if [ "$state_should" != "$state_is" ]; then + case "$state_should" in + enabled) + echo add-apt-repository \"$name\" + ;; + disabled) + echo remove-apt-repository \"$name\" + ;; + esac +fi + diff --git a/conf/type/__apt_ppa/man.text b/conf/type/__apt_ppa/man.text new file mode 100644 index 00000000..73fabc7f --- /dev/null +++ b/conf/type/__apt_ppa/man.text @@ -0,0 +1,47 @@ +cdist-type__apt_ppa(7) +========================== +Steven Armstrong + + +NAME +---- +cdist-type__apt_ppa - Manage ppa repositories + + +DESCRIPTION +----------- +This cdist type allows manage ubuntu ppa repositories. + + +REQUIRED PARAMETERS +------------------- +state:: + The state the ppa should be in, either "enabled" or "disabled". + + +OPTIONAL PARAMETERS +------------------- +None. + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Enable a ppa repository +__apt_ppa ppa:sans-intern/missing-bits --state enabled + +# Disable a ppa repository +__apt_ppa ppa:sans-intern/missing-bits --state disabled +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Copyright \(C) 2011 Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__apt_ppa/manifest b/conf/type/__apt_ppa/manifest new file mode 100755 index 00000000..a97ced75 --- /dev/null +++ b/conf/type/__apt_ppa/manifest @@ -0,0 +1,33 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + + +__package python-software-properties --state installed + +require="__package/python-software-properties" \ + __file /usr/local/bin/check-apt-repository \ + --source "$__type/files/check-apt-repository" \ + --mode 0755 + +require="__package/python-software-properties" \ + __file /usr/local/bin/remove-apt-repository \ + --source "$__type/files/remove-apt-repository" \ + --mode 0755 + diff --git a/conf/type/__apt_ppa/parameter/required b/conf/type/__apt_ppa/parameter/required new file mode 100644 index 00000000..ff72b5c7 --- /dev/null +++ b/conf/type/__apt_ppa/parameter/required @@ -0,0 +1 @@ +state From 8d32e00114b7c01f7ae06334c6b498f877174e10 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 13:21:18 +0100 Subject: [PATCH 0047/5240] 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 0048/5240] 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 0049/5240] 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 0050/5240] 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 0051/5240] 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 0052/5240] 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 0053/5240] 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 0054/5240] 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 0055/5240] 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 0056/5240] 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 0057/5240] 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 From ec7e836b1de12d24d507abcac88dae2b4f4c74b4 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 17:16:43 +0100 Subject: [PATCH 0058/5240] doc: object-redefine Signed-off-by: Steven Armstrong --- doc/man/cdist-manifest.text | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/man/cdist-manifest.text b/doc/man/cdist-manifest.text index 7da90f71..701c8b98 100644 --- a/doc/man/cdist-manifest.text +++ b/doc/man/cdist-manifest.text @@ -15,8 +15,12 @@ host as well as to define which configurations should be applied within a type. Manifests are executed locally and the resulting objects are stored in an internal database. +The same object can be redefined in multiple different manifests as long as it is +exactly the same, that is, all its parameters are equal. + In general, manifests are used to define which types are used depending -on given conditions +on given conditions. + EXAMPLE ------- From 5e5334dee12d96ebd67960d852eb8837ea471497 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 17:24:21 +0100 Subject: [PATCH 0059/5240] prepare release 1.4.0 Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- doc/changelog | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 4cad1924..00872438 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -19,7 +19,7 @@ # # -__cdist_version="1.3.2" +__cdist_version="1.4.0" # Fail if something bogus is going on set -u diff --git a/doc/changelog b/doc/changelog index 25459951..f7241150 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,4 +1,4 @@ -1.4: +1.4.0: * Add --recursive to __directory * Move cdist generated stuff to .cdist of object * Allow objects to be redefined From f375b5cb91a8c7d2ef49873c6fb8ea8786f1c649 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 17:24:48 +0100 Subject: [PATCH 0060/5240] submit $__cdist_out_object_dir to cdist-code-run on target host Signed-off-by: Nico Schottelius --- bin/cdist-code-run-all | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bin/cdist-code-run-all b/bin/cdist-code-run-all index 3a360715..607929ce 100755 --- a/bin/cdist-code-run-all +++ b/bin/cdist-code-run-all @@ -43,8 +43,9 @@ while [ $# -ge 1 ]; do || __cdist_exit_err "Remote code failed for $object" # Code remote - cdist-run-remote "$__cdist_target_host" "cdist-code-run" \ - "${__cdist_remote_out_object_base_dir}" "$object" \ - "${__cdist_name_gencode_remote}" \ + cdist-run-remote "$__cdist_target_host" \ + "__cdist_out_object_dir=\"$__cdist_remote_out_object_base_dir\" \ + "cdist-code-run" "${__cdist_remote_out_object_base_dir}" "$object" \ + "${__cdist_name_gencode_remote}" \ || __cdist_exit_err "Remote code failed for $object" done < "$__cdist_tmp_file" From a48e5ca8a1ce8d6dfbd3d1d3ca5c05e5b291771a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 17:25:42 +0100 Subject: [PATCH 0061/5240] +" Signed-off-by: Nico Schottelius --- bin/cdist-code-run-all | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-code-run-all b/bin/cdist-code-run-all index 607929ce..90ef6443 100755 --- a/bin/cdist-code-run-all +++ b/bin/cdist-code-run-all @@ -44,7 +44,7 @@ while [ $# -ge 1 ]; do # Code remote cdist-run-remote "$__cdist_target_host" \ - "__cdist_out_object_dir=\"$__cdist_remote_out_object_base_dir\" \ + "__cdist_out_object_dir=\"$__cdist_remote_out_object_base_dir\"" \ "cdist-code-run" "${__cdist_remote_out_object_base_dir}" "$object" \ "${__cdist_name_gencode_remote}" \ || __cdist_exit_err "Remote code failed for $object" From 44ecd1f056a498d0ffb3d6216d1c75f6653eda7a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 17:27:27 +0100 Subject: [PATCH 0062/5240] i'm tired, doing stuff that's already in the lines Signed-off-by: Nico Schottelius --- bin/cdist-code-run-all | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/cdist-code-run-all b/bin/cdist-code-run-all index 90ef6443..49af7b3b 100755 --- a/bin/cdist-code-run-all +++ b/bin/cdist-code-run-all @@ -44,7 +44,6 @@ while [ $# -ge 1 ]; do # Code remote cdist-run-remote "$__cdist_target_host" \ - "__cdist_out_object_dir=\"$__cdist_remote_out_object_base_dir\"" \ "cdist-code-run" "${__cdist_remote_out_object_base_dir}" "$object" \ "${__cdist_name_gencode_remote}" \ || __cdist_exit_err "Remote code failed for $object" From 2bab4ed93b95c6c2cfb6f478131dceaef784ca71 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 17:38:28 +0100 Subject: [PATCH 0063/5240] dont use python in type explorer Signed-off-by: Steven Armstrong --- conf/type/__apt_ppa/explorer/state | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/conf/type/__apt_ppa/explorer/state b/conf/type/__apt_ppa/explorer/state index c50af3f0..69af1937 100755 --- a/conf/type/__apt_ppa/explorer/state +++ b/conf/type/__apt_ppa/explorer/state @@ -23,6 +23,10 @@ name="$__object_id" -# FIXME: on first run check-apt-repository may not be installed -check-apt-repository "$name" && echo enabled || echo disabled +. /etc/lsb-release + +repo_name="${name#ppa:}" +repo_file_name="$(echo "$repo_name" | sed "s:\/:\-:")-${DISTRIB_CODENAME}.list" + +[ -f "/etc/apt/sources.list.d/${repo_file_name}" ] && echo enabled || echo disabled From f46b2a9a5a2434430506e93e1aec41aaef87beb2 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 17:39:28 +0100 Subject: [PATCH 0064/5240] no longer need check-apt-repository Signed-off-by: Steven Armstrong --- .../type/__apt_ppa/files/check-apt-repository | 42 ------------------- conf/type/__apt_ppa/manifest | 6 +-- 2 files changed, 1 insertion(+), 47 deletions(-) delete mode 100755 conf/type/__apt_ppa/files/check-apt-repository diff --git a/conf/type/__apt_ppa/files/check-apt-repository b/conf/type/__apt_ppa/files/check-apt-repository deleted file mode 100755 index 4f4252c1..00000000 --- a/conf/type/__apt_ppa/files/check-apt-repository +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python -# -# Check if the given apt repository is installed or not. -# Exit with: -# 0: if it is installed -# 1: if not -# 2: on error -# - -import sys -from aptsources import distro, sourceslist -from softwareproperties import ppa - - -def is_repository_installed(repository): - #print 'repository:', repository - codename = distro.get_distro().codename - #print 'codename:', codename - (line, file) = ppa.expand_ppa_line(repository.strip(), codename) - #print 'line:', line - #print 'file:', file - sources_list = sourceslist.SourcesList() - source_entry = sourceslist.SourceEntry(line, file) - - if source_entry in sources_list: - #print 'yes' - return True - else: - #print 'no' - return False - -if __name__ == '__main__': - if (len(sys.argv) != 2): - print 'Error: need a repository as argument' - sys.exit(2) - #repository = 'ppa:freenx-team' - repository = sys.argv[1] - if is_repository_installed(repository): - sys.exit(0) - else: - sys.exit(1) - diff --git a/conf/type/__apt_ppa/manifest b/conf/type/__apt_ppa/manifest index a97ced75..d5df9e23 100755 --- a/conf/type/__apt_ppa/manifest +++ b/conf/type/__apt_ppa/manifest @@ -18,14 +18,10 @@ # along with cdist. If not, see . # +name="$__object_id" __package python-software-properties --state installed -require="__package/python-software-properties" \ - __file /usr/local/bin/check-apt-repository \ - --source "$__type/files/check-apt-repository" \ - --mode 0755 - require="__package/python-software-properties" \ __file /usr/local/bin/remove-apt-repository \ --source "$__type/files/remove-apt-repository" \ From 0356d2eeff9f35ac6e33c926d41ad9cbca8a9103 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 17:45:03 +0100 Subject: [PATCH 0065/5240] also check if sources file is not empty Signed-off-by: Steven Armstrong --- conf/type/__apt_ppa/explorer/state | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/conf/type/__apt_ppa/explorer/state b/conf/type/__apt_ppa/explorer/state index 69af1937..86c401a4 100755 --- a/conf/type/__apt_ppa/explorer/state +++ b/conf/type/__apt_ppa/explorer/state @@ -28,5 +28,7 @@ name="$__object_id" repo_name="${name#ppa:}" repo_file_name="$(echo "$repo_name" | sed "s:\/:\-:")-${DISTRIB_CODENAME}.list" -[ -f "/etc/apt/sources.list.d/${repo_file_name}" ] && echo enabled || echo disabled +[ -f "/etc/apt/sources.list.d/${repo_file_name}" -a \ + -s "/etc/apt/sources.list.d/${repo_file_name}" ] \ + && echo enabled || echo disabled From e829fe65cd92cc66856d98908c1e445b1020d1e2 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 21:14:17 +0100 Subject: [PATCH 0066/5240] checking for filesize already includes check for file existence Signed-off-by: Steven Armstrong --- conf/type/__apt_ppa/explorer/state | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/conf/type/__apt_ppa/explorer/state b/conf/type/__apt_ppa/explorer/state index 86c401a4..8a5638b2 100755 --- a/conf/type/__apt_ppa/explorer/state +++ b/conf/type/__apt_ppa/explorer/state @@ -28,7 +28,6 @@ name="$__object_id" repo_name="${name#ppa:}" repo_file_name="$(echo "$repo_name" | sed "s:\/:\-:")-${DISTRIB_CODENAME}.list" -[ -f "/etc/apt/sources.list.d/${repo_file_name}" -a \ - -s "/etc/apt/sources.list.d/${repo_file_name}" ] \ +[ -s "/etc/apt/sources.list.d/${repo_file_name}" ] \ && echo enabled || echo disabled From 1e66bc43803a5be74e36346944fc00acf847c24f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Mar 2011 23:54:13 +0100 Subject: [PATCH 0067/5240] exchange new and object dir (good idea, steven) Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 18069b44..088286e9 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -71,11 +71,11 @@ __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")" +__cdist_new_object_dir="$(__cdist_object_dir "$__cdist_object_self")" # Record source -mkdir -p "${__cdist_object_dir}" -__cdist_object_source_add "${__cdist_object_dir}" +mkdir -p "${__cdist_new_object_dir}" +__cdist_object_source_add "${__cdist_new_object_dir}" # Record parameter __cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object_self")" @@ -147,15 +147,15 @@ done # Restore original destination __cdist_out_object_dir="$__cdist_out_object_dir_orig" -__cdist_new_object_dir="$(__cdist_object_dir "$__cdist_object_self")" +__cdist_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 +if [ -e "${__cdist_object_dir}" ]; then # Allow diff to fail set +e - diff -ru "${__cdist_object_dir}" "${__cdist_new_object_dir}" \ + diff -ru "${__cdist_new_object_dir}" "${__cdist_object_dir}" \ > "$__cdist_tmp_file"; ret=$? set -e @@ -164,14 +164,14 @@ if [ -e "${__cdist_new_object_dir}" ]; then exec >&2 echo "${__cdist_object_self} already exists differently." echo "Recorded source(s):" - __cdist_object_source "${__cdist_new_object_dir}" + __cdist_object_source "${__cdist_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}" + __cdist_object_source_add "${__cdist_object_dir}" else # # Move object into tree: @@ -179,5 +179,5 @@ else # __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" + mv "$__cdist_new_object_dir" "$__cdist_new_object_base_dir" fi From b44734e70a47a71dffc269aecdb0862fcfc1063f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 00:27:40 +0100 Subject: [PATCH 0068/5240] local != remote Signed-off-by: Nico Schottelius --- bin/cdist-code-run-all | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-code-run-all b/bin/cdist-code-run-all index 49af7b3b..f301864b 100755 --- a/bin/cdist-code-run-all +++ b/bin/cdist-code-run-all @@ -40,7 +40,7 @@ while [ $# -ge 1 ]; do # Code local cdist-code-run "$__cdist_out_object_dir" "$object" \ "${__cdist_name_gencode_local}" \ - || __cdist_exit_err "Remote code failed for $object" + || __cdist_exit_err "Local code failed for $object" # Code remote cdist-run-remote "$__cdist_target_host" \ From 9094f50b035421e2d773f08ce54bbb0a477262fd Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 24 Mar 2011 08:30:51 +0100 Subject: [PATCH 0069/5240] new type: __apt_update_index Signed-off-by: Steven Armstrong --- conf/type/__apt_update_index/gencode-remote | 35 ++++++++++++++++ conf/type/__apt_update_index/man.text | 44 +++++++++++++++++++++ conf/type/__apt_update_index/singleton | 0 3 files changed, 79 insertions(+) create mode 100755 conf/type/__apt_update_index/gencode-remote create mode 100644 conf/type/__apt_update_index/man.text create mode 100644 conf/type/__apt_update_index/singleton diff --git a/conf/type/__apt_update_index/gencode-remote b/conf/type/__apt_update_index/gencode-remote new file mode 100755 index 00000000..ad2296df --- /dev/null +++ b/conf/type/__apt_update_index/gencode-remote @@ -0,0 +1,35 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +# BIG FAT FIXME: there must be a better way to do this! +tmpdir=$(mktemp -d) +cleanup() { + rm -rf "$tmpdir" +} +trap cleanup EXIT + +should="$tmpdir/should" +is="$tmpdir/is" + +find "$__global/object/__apt_ppa" -path "*.cdist/parameter/state" | xargs cat > "$should" +find "$__global/object/__apt_ppa" -path "*.cdist/explorer/state" | xargs cat > "$is" + +diff -ru "$is" "$should" || echo apt-get update + diff --git a/conf/type/__apt_update_index/man.text b/conf/type/__apt_update_index/man.text new file mode 100644 index 00000000..dffba372 --- /dev/null +++ b/conf/type/__apt_update_index/man.text @@ -0,0 +1,44 @@ +cdist-type__apt_update_index(7) +========================== +Steven Armstrong + + +NAME +---- +cdist-type__apt_update_index - resynchronize the apt package index + + +DESCRIPTION +----------- +This cdist type allows you to resynchronize the package index files from their +sources. In other words, it runs `apt-get update`. + +FIXME: currently hard coded to work together with the __apt_ppa type + + +REQUIRED PARAMETERS +------------------- +None. + +OPTIONAL PARAMETERS +------------------- +None. + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +__apt_update_index +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Copyright \(C) 2011 Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__apt_update_index/singleton b/conf/type/__apt_update_index/singleton new file mode 100644 index 00000000..e69de29b From 15b1bdab7791033a6154a75d0000ee4069fe8fa0 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 24 Mar 2011 08:31:23 +0100 Subject: [PATCH 0070/5240] use __apt_update_index Signed-off-by: Steven Armstrong --- conf/type/__apt_ppa/manifest | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/conf/type/__apt_ppa/manifest b/conf/type/__apt_ppa/manifest index d5df9e23..ad6ee614 100755 --- a/conf/type/__apt_ppa/manifest +++ b/conf/type/__apt_ppa/manifest @@ -27,3 +27,8 @@ require="__package/python-software-properties" \ --source "$__type/files/remove-apt-repository" \ --mode 0755 +# FIXME: rewrite to use $__self once that exists +# FIXME: only run if something changed. currently working arround this in +# __apt_update_index/gencode-remote +require="__apt_ppa/$__object_id" __apt_update_index + From 7a294bf41d165eaeac22f3698db4dc2697c95107 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 10:13:52 +0100 Subject: [PATCH 0071/5240] always setup __cdist_out_object_dir, which needs to be done anyway Signed-off-by: Nico Schottelius --- bin/cdist-code-run | 7 ++----- bin/cdist-code-run-all | 10 +++++----- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index 229d4d1d..a6a9137f 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -22,12 +22,9 @@ # . cdist-config -[ $# -eq 3 ] || __cdist_usage " " +[ $# -eq 2 ] || __cdist_usage " " set -ue -# This variable MUST be exactly like this - see __cdist_object_dir -__cdist_out_object_dir="$1"; shift - object="$1"; shift __cdist_gencode_type="$1"; shift @@ -50,7 +47,7 @@ echo "Checking code-${__cdist_gencode_type} for $object ..." if [ -f "$require" ]; then while read requirement; do echo "Requiring dependency $requirement for $object ..." - cdist-code-run "$__cdist_out_object_dir" "$requirement" "$__cdist_gencode_type" + cdist-code-run "$requirement" "$__cdist_gencode_type" done < "$require" fi diff --git a/bin/cdist-code-run-all b/bin/cdist-code-run-all index f301864b..1486cc46 100755 --- a/bin/cdist-code-run-all +++ b/bin/cdist-code-run-all @@ -38,13 +38,13 @@ while [ $# -ge 1 ]; do object="$1"; shift # Code local - cdist-code-run "$__cdist_out_object_dir" "$object" \ - "${__cdist_name_gencode_local}" \ + export __cdist_out_object_dir="$__cdist_out_object_dir" + cdist-code-run "$object" "${__cdist_name_gencode_local}" \ || __cdist_exit_err "Local code failed for $object" # Code remote - cdist-run-remote "$__cdist_target_host" \ - "cdist-code-run" "${__cdist_remote_out_object_base_dir}" "$object" \ - "${__cdist_name_gencode_remote}" \ + cdist-run-remote "$__cdist_target_host" \ + "export __cdist_out_object_dir=\"$__cdist_remote_out_object_base_dir\";" \ + "cdist-code-run" "$object" "${__cdist_name_gencode_remote}" \ || __cdist_exit_err "Remote code failed for $object" done < "$__cdist_tmp_file" From 79eec9bd236febbb3cbace6a93f5820deed47e7f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 10:17:43 +0100 Subject: [PATCH 0072/5240] make PATH setting independent of further code Signed-off-by: Nico Schottelius --- bin/cdist-run-remote | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-run-remote b/bin/cdist-run-remote index 87af8459..93cf9062 100755 --- a/bin/cdist-run-remote +++ b/bin/cdist-run-remote @@ -28,4 +28,4 @@ set -ue __cdist_target_host="$1"; shift ssh "${__cdist_remote_user}@${__cdist_target_host}" \ - "PATH=\"${__cdist_remote_bin_dir}:\$PATH\"" "$@" + "export PATH=\"${__cdist_remote_bin_dir}:\$PATH\";" "$@" From 762c0b493525a4318cea35ec252e64269ee1a647 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 10:24:51 +0100 Subject: [PATCH 0073/5240] BUGFIX: marker reset got lost during migration to cdist-type-emulator Signed-off-by: Nico Schottelius --- bin/cdist-manifest-run-all | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/cdist-manifest-run-all b/bin/cdist-manifest-run-all index ee15273c..a431576d 100755 --- a/bin/cdist-manifest-run-all +++ b/bin/cdist-manifest-run-all @@ -64,6 +64,7 @@ while [ "$__cdist_new_objects_created" = "y" ]; do export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")" cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" + __cdist_new_objects_created=y else __cdist_exit_err "${__cdist_manifest} needs to be executable." fi From 914ec3104ea1b2c1e4a7b524189615c84949a1f7 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 10:27:05 +0100 Subject: [PATCH 0074/5240] only append source in final tree, otherwise we always conflict Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 088286e9..32f3ccb2 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -73,9 +73,8 @@ __cdist_out_object_dir="$__cdist_tmp_dir" __cdist_new_object_dir="$(__cdist_object_dir "$__cdist_object_self")" -# Record source +# Initialise object mkdir -p "${__cdist_new_object_dir}" -__cdist_object_source_add "${__cdist_new_object_dir}" # Record parameter __cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object_self")" From 4d2e03b96613dd10fb3573c547d5166ee596f5b7 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 10:28:50 +0100 Subject: [PATCH 0075/5240] always add source, even if everything went successful... Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 32f3ccb2..46ba3a57 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -168,9 +168,6 @@ if [ -e "${__cdist_object_dir}" ]; then cat "$__cdist_tmp_file" __cdist_exit_err "Aborting due to object conflict." fi - - # Add ourselves, if we're compatible - __cdist_object_source_add "${__cdist_object_dir}" else # # Move object into tree: @@ -180,3 +177,6 @@ else mkdir -p "$__cdist_new_object_base_dir" mv "$__cdist_new_object_dir" "$__cdist_new_object_base_dir" fi + +# Add "I was here message" +__cdist_object_source_add "${__cdist_object_dir}" From b20a50899a7bb9d5a0a89b6e4afbb1bec55c9743 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 10:35:29 +0100 Subject: [PATCH 0076/5240] only diff parameters ? Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 46ba3a57..6294870a 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -154,7 +154,8 @@ __cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" if [ -e "${__cdist_object_dir}" ]; then # Allow diff to fail set +e - diff -ru "${__cdist_new_object_dir}" "${__cdist_object_dir}" \ + diff -ru "${__cdist_new_object_dir}/${__cdist_name_parameter}" \ + "${__cdist_object_dir}/${__cdist_name_parameter}" \ > "$__cdist_tmp_file"; ret=$? set -e From 0b1957f5dfecd74f487bc9b925a369a05c601ba6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 13:27:22 +0100 Subject: [PATCH 0077/5240] clearify parameters Signed-off-by: Nico Schottelius --- doc/man/cdist-manifest.text | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/man/cdist-manifest.text b/doc/man/cdist-manifest.text index 701c8b98..04f1c56c 100644 --- a/doc/man/cdist-manifest.text +++ b/doc/man/cdist-manifest.text @@ -15,8 +15,8 @@ host as well as to define which configurations should be applied within a type. Manifests are executed locally and the resulting objects are stored in an internal database. -The same object can be redefined in multiple different manifests as long as it is -exactly the same, that is, all its parameters are equal. +The same object can be redefined in multiple different manifests as long as +the parameters are exactly the same. In general, manifests are used to define which types are used depending on given conditions. From 84bc0511fbe730dbc1e17338b9db85003adda0c9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 13:28:35 +0100 Subject: [PATCH 0078/5240] update to 1.4.0 Signed-off-by: Nico Schottelius --- doc/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/changelog b/doc/changelog index f7241150..f78b1660 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,6 +1,6 @@ -1.4.0: +1.4.0: 2011-03-24 * Add --recursive to __directory - * Move cdist generated stuff to .cdist of object + * Move cdist generated stuff to .cdist of an object * Allow objects to be redefined 1.3.2: 2011-03-21 From b02141eedab7639ad1eef020232d00bd7b04f4c8 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 13:30:08 +0100 Subject: [PATCH 0079/5240] update website to reference 1.4 branch Signed-off-by: Nico Schottelius --- README | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README b/README index e7345a78..feca4bc4 100644 --- a/README +++ b/README @@ -120,13 +120,14 @@ how to use cdist. There are at least the following branches available: * master: the development branch - * 1.3: Support for local and remote code execution (current stable) + * 1.4: Support for redefiniton of objects (if equal) Old versions: - * 1.0: First official release - * 1.1: __file to __file, __directory, __link migration + * 1.3: Support for local and remote code execution (current stable) * 1.2: Dependencies supported + * 1.1: __file to __file, __directory, __link migration + * 1.0: First official release Other branches may be available for features or bugfixes, but they may vanish at any point. To select a specific branch use @@ -156,6 +157,10 @@ If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break. The master branch on the other hand is the development branch and may not be working, break your setup or eat the tree in your garden. +### Upgrading from 1.3 to 1.4 + +No incompatiblities. + ### Upgrading from 1.2 to 1.3 Rename **gencode** of every type to **gencode-remote**. From c7ef2210fc34f39d5d73a526af4810d4e46dd4cc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 13:32:09 +0100 Subject: [PATCH 0080/5240] update manpage for __apt_ppa Signed-off-by: Nico Schottelius --- conf/type/__apt_ppa/man.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__apt_ppa/man.text b/conf/type/__apt_ppa/man.text index 73fabc7f..5423a1a2 100644 --- a/conf/type/__apt_ppa/man.text +++ b/conf/type/__apt_ppa/man.text @@ -1,5 +1,5 @@ cdist-type__apt_ppa(7) -========================== +====================== Steven Armstrong From 17c6a650ff4a8124634d6eba41c1556749f05c87 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:06:56 +0100 Subject: [PATCH 0081/5240] change workflow proposal Signed-off-by: Nico Schottelius --- bin/cdist-deploy-to | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index 9a2fd303..7a63f5ca 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -50,6 +50,8 @@ 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" + +# Change workflow here: cdist-object-{apply, run, foo} cdist-object-explorer-all "$__cdist_target_host" cdist-object-gencode-all "$__cdist_target_host" @@ -59,4 +61,6 @@ cdist-dir push "$__cdist_target_host" "$__cdist_out_object_dir" \ cdist-code-run-all "$__cdist_target_host" +# Stop change here + echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" From 33552e5930b0958c1d0930cfa5f92ac7abe7532e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:26:06 +0100 Subject: [PATCH 0082/5240] [DOC] include hackers manpage Signed-off-by: Nico Schottelius --- Makefile | 1 + doc/man/cdist-hacker.text | 65 +++++++++++++++++++++++++++++++++++++++ doc/man/cdist.text | 1 + 3 files changed, 67 insertions(+) create mode 100644 doc/man/cdist-hacker.text diff --git a/Makefile b/Makefile index 29d86c67..fea5a8ea 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,7 @@ MANSRC=$(MANDIR)/cdist.text \ $(MANDIR)/cdist-explorer-run-global.text \ $(MANDIR)/cdist-deploy-to.text \ $(MANDIR)/cdist-explorer.text \ + $(MANDIR)/cdist-hacker.text \ $(MANDIR)/cdist-manifest.text \ $(MANDIR)/cdist-manifest-run.text \ $(MANDIR)/cdist-manifest-run-all.text \ diff --git a/doc/man/cdist-hacker.text b/doc/man/cdist-hacker.text new file mode 100644 index 00000000..093eaf61 --- /dev/null +++ b/doc/man/cdist-hacker.text @@ -0,0 +1,65 @@ +cdist-hacker(7) +=============== +Nico Schottelius + + +NAME +---- +cdist-hacker - How to get (stuff) into cdist + + +WELCOME +------- +Welcome dear hacker! I invite you to a tour of pointers to +get into the usable configuration mangament system, cdist. + +The first thing to know is probably that cdist is brought to +you by people who care about how code looks like and who think +twice before merging or implementing a feature: Less features +with good usability are far better than the opposite. + + +UNDERSTANDING CDIST INTERNALS +----------------------------- +IF you are interested in how cdist internally works, you can open +bin/cdist-config and bin/cdist-deploy-to in your favorite editor and +read the scripts bin/cdist-deploy-to calls. The magnificent HACKERS_README +may be of great help as well. + + +HOW TO SUBMIT STUFF FOR INCLUSION INTO UPSTREAM CDIST +----------------------------------------------------- +If you did some cool changes to cdist, which you value as a benefit for +everybody using cdist, you're welcome to propose inclusion into upstream. + +There are though some requirements to ensure your changes don't break others +work nor kill the authors brain: + +- Code submission must be done via git +- Code to be included should be branched of the upstream "master" branch + - Exception: Bugfixes to a version branch +- Code submissions must be in your master branch + - Exception: If you only want a comment on your code, but not an inclusion. + +As soon as your work meets these requirements, you can contact me +(IRC, Mailinglist, Phone, RFC 1149) and I'll check your code before +including it. + + +HOW TO SUBMIT A NEW TYPE +------------------------ +Submitting a type works as described above, with the additional requirement +that a corresponding manpage named man.text in asciidoc format with +the manpage-name "cdist-type__NAME" is included in the type directory +AND asciidoc is able to compile it. + + +SEE ALSO +-------- +- cdist(7) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/doc/man/cdist.text b/doc/man/cdist.text index 957e7cb4..44be52b1 100644 --- a/doc/man/cdist.text +++ b/doc/man/cdist.text @@ -32,6 +32,7 @@ SEE ALSO - Website: http://www.nico.schottelius.org/cdist/[] - cdist-best-practise(7) - cdist-deploy-to(1) +- cdist-hacker(7) - cdist-manifest(7) - cdist-quickstart(1) - cdist-type(7) From c9680285962c33fa3f5f936ca3f79da831ffa552 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:28:07 +0100 Subject: [PATCH 0083/5240] Revert "use __apt_update_index" (until it works) This reverts commit 15b1bdab7791033a6154a75d0000ee4069fe8fa0. --- conf/type/__apt_ppa/manifest | 5 ----- 1 file changed, 5 deletions(-) diff --git a/conf/type/__apt_ppa/manifest b/conf/type/__apt_ppa/manifest index ad6ee614..d5df9e23 100755 --- a/conf/type/__apt_ppa/manifest +++ b/conf/type/__apt_ppa/manifest @@ -27,8 +27,3 @@ require="__package/python-software-properties" \ --source "$__type/files/remove-apt-repository" \ --mode 0755 -# FIXME: rewrite to use $__self once that exists -# FIXME: only run if something changed. currently working arround this in -# __apt_update_index/gencode-remote -require="__apt_ppa/$__object_id" __apt_update_index - From 0961e003be1a8dfbba0529cd12f25fdcbae837ac Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:28:20 +0100 Subject: [PATCH 0084/5240] Revert "new type: __apt_update_index" (until it works) This reverts commit 9094f50b035421e2d773f08ce54bbb0a477262fd. --- conf/type/__apt_update_index/gencode-remote | 35 ---------------- conf/type/__apt_update_index/man.text | 44 --------------------- conf/type/__apt_update_index/singleton | 0 3 files changed, 79 deletions(-) delete mode 100755 conf/type/__apt_update_index/gencode-remote delete mode 100644 conf/type/__apt_update_index/man.text delete mode 100644 conf/type/__apt_update_index/singleton diff --git a/conf/type/__apt_update_index/gencode-remote b/conf/type/__apt_update_index/gencode-remote deleted file mode 100755 index ad2296df..00000000 --- a/conf/type/__apt_update_index/gencode-remote +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -# -# 2011 Steven Armstrong (steven-cdist at armstrong.cc) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# - -# BIG FAT FIXME: there must be a better way to do this! -tmpdir=$(mktemp -d) -cleanup() { - rm -rf "$tmpdir" -} -trap cleanup EXIT - -should="$tmpdir/should" -is="$tmpdir/is" - -find "$__global/object/__apt_ppa" -path "*.cdist/parameter/state" | xargs cat > "$should" -find "$__global/object/__apt_ppa" -path "*.cdist/explorer/state" | xargs cat > "$is" - -diff -ru "$is" "$should" || echo apt-get update - diff --git a/conf/type/__apt_update_index/man.text b/conf/type/__apt_update_index/man.text deleted file mode 100644 index dffba372..00000000 --- a/conf/type/__apt_update_index/man.text +++ /dev/null @@ -1,44 +0,0 @@ -cdist-type__apt_update_index(7) -========================== -Steven Armstrong - - -NAME ----- -cdist-type__apt_update_index - resynchronize the apt package index - - -DESCRIPTION ------------ -This cdist type allows you to resynchronize the package index files from their -sources. In other words, it runs `apt-get update`. - -FIXME: currently hard coded to work together with the __apt_ppa type - - -REQUIRED PARAMETERS -------------------- -None. - -OPTIONAL PARAMETERS -------------------- -None. - - -EXAMPLES --------- - --------------------------------------------------------------------------------- -__apt_update_index --------------------------------------------------------------------------------- - - -SEE ALSO --------- -- cdist-type(7) - - -COPYING -------- -Copyright \(C) 2011 Steven Armstrong. Free use of this software is -granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__apt_update_index/singleton b/conf/type/__apt_update_index/singleton deleted file mode 100644 index e69de29b..00000000 From b34a40b9e83895c00659ecdbbb8421208cc69c43 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:37:16 +0100 Subject: [PATCH 0085/5240] update makefile Signed-off-by: Nico Schottelius --- Makefile | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index fea5a8ea..a545b749 100644 --- a/Makefile +++ b/Makefile @@ -63,7 +63,8 @@ all: man: doc/man/.marker -doc/man/.marker: $(MANDIR)/cdist-reference.text +# FIXME: also depends on conf/type/*/man.text! +doc/man/.marker: manmove touch $@ # Manual from core @@ -75,7 +76,7 @@ mantype: for man in conf/type/*/man.text; do $(A2XM) $$man; $(A2XH) $$man; done # Move into manpath directories -manmove: mantype mancore +manmove: mantype mancore $(MANGENERATED) for manpage in $(MANDIR)/*.[1-9] conf/type/*/*.7; do \ cat=$${manpage##*.}; \ mandir=$(MANDIR)/man$$cat; \ @@ -91,15 +92,13 @@ manmove: mantype mancore done # Reference depends on conf/type/*/man.text - HOWTO with posix make? -$(MANDIR)/cdist-reference.text: manmove $(MANDIR)/cdist-reference.text.sh +$(MANDIR)/cdist-reference.text: $(MANDIR)/cdist-reference.text.sh $(MANDIR)/cdist-reference.text.sh $(A2XM) $(MANDIR)/cdist-reference.text $(A2XH) $(MANDIR)/cdist-reference.text - # Move us to the destination as well - make manmove clean: - rm -rf doc/man/*.html doc/man/*.[1-9] doc/man/man[1-9] $(MANGENERATED) + rm -rf doc/man/html/* doc/man/*.[1-9] doc/man/man[1-9] $(MANGENERATED) rm -f conf/type/*/man.html rm -rf doc/html @@ -115,8 +114,7 @@ test: # gentoo .rsync nicosc@ru3.inf.ethz.ch:cdist -#web: manmove -web: +web: man cp README $(WEBDIR)/$(WEBPAGE) cp -r doc/html/* $(WEBDIR)/$(WEBBASE)/man cd $(WEBDIR) && git commit -m "cdist update" $(WEBBASE) $(WEBPAGE) From 6d4f702eacd0b82d9daf8b5ff7cdfe063fb6d2b5 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:39:26 +0100 Subject: [PATCH 0086/5240] shrink hackers_readme in favor for the manpage Signed-off-by: Nico Schottelius --- HACKERS_README | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/HACKERS_README b/HACKERS_README index 0ae1bdcd..66103acc 100755 --- a/HACKERS_README +++ b/HACKERS_README @@ -3,21 +3,12 @@ cat << eof Hey hackers, this README is for you, for those who want to dig into cdist, hack it or try -to get a deeper understanding. - -A lot of documentation is still missing, but running cdist-quickstart should -give you an impression of how cdist works. +to get a deeper understanding. Please read doc/man/cdist-hacker.text. I hope you have a lot of fun with cdist, because it was also a lot of fun to develop it! - -- Nico, 20110304 - - -## Conventions - -- All variables exported by cdist are prefixed with a double underscore (__) -- All cdist-internal variables are prefixed with __cdist_ and are generally not exported. + -- Nico, 20110324 ## Running cdist when developing From fa2f49e847942d07b86e167c3ae4e40c5e4945a6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:42:06 +0100 Subject: [PATCH 0087/5240] also git add html pages Signed-off-by: Nico Schottelius --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index a545b749..d7706926 100644 --- a/Makefile +++ b/Makefile @@ -117,6 +117,7 @@ test: web: man cp README $(WEBDIR)/$(WEBPAGE) cp -r doc/html/* $(WEBDIR)/$(WEBBASE)/man + cd $(WEBDIR) && git add $(WEBBASE)/man cd $(WEBDIR) && git commit -m "cdist update" $(WEBBASE) $(WEBPAGE) cd $(WEBDIR) && make pub From b14f7a431c8e68b2edf7e685ee3cc31404b10f05 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:45:31 +0100 Subject: [PATCH 0088/5240] rm mandir on webpage before copying (removes old manpages) Signed-off-by: Nico Schottelius --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index d7706926..1023d541 100644 --- a/Makefile +++ b/Makefile @@ -116,6 +116,7 @@ test: web: man cp README $(WEBDIR)/$(WEBPAGE) + rm -rf $(WEBDIR)/$(WEBBASE)/man && mkdir $(WEBDIR)/$(WEBBASE)/man cp -r doc/html/* $(WEBDIR)/$(WEBBASE)/man cd $(WEBDIR) && git add $(WEBBASE)/man cd $(WEBDIR) && git commit -m "cdist update" $(WEBBASE) $(WEBPAGE) From e685df7aa193938c8f392d8f5bdb456242812be0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:49:22 +0100 Subject: [PATCH 0089/5240] -typo Signed-off-by: Nico Schottelius --- doc/man/cdist-env.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/man/cdist-env.text b/doc/man/cdist-env.text index cf54d363..9a736133 100644 --- a/doc/man/cdist-env.text +++ b/doc/man/cdist-env.text @@ -32,7 +32,7 @@ in csh variants (csh, tcsh): eval `./bin/cdist-env` -------------------------------------------------------------------------------- -For bourne shell, the is also a shorter version: +For bourne shell, there is also a shorter version: -------------------------------------------------------------------------------- . ./bin/cdist-env -------------------------------------------------------------------------------- From c72833ce748b8be5d763bb7006af1ed3b8f02630 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 15:58:47 +0100 Subject: [PATCH 0090/5240] comment about conf/manifest/init in cdist-hacker Signed-off-by: Nico Schottelius --- doc/man/cdist-hacker.text | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/man/cdist-hacker.text b/doc/man/cdist-hacker.text index 093eaf61..d55f1c2f 100644 --- a/doc/man/cdist-hacker.text +++ b/doc/man/cdist-hacker.text @@ -27,6 +27,12 @@ read the scripts bin/cdist-deploy-to calls. The magnificent HACKERS_README may be of great help as well. +CODING CONVENTIONS (CORE) +------------------------- +- All variables exported by cdist are prefixed with a double underscore (__) +- All cdist-internal variables are prefixed with __cdist_ and are generally not exported. + + HOW TO SUBMIT STUFF FOR INCLUSION INTO UPSTREAM CDIST ----------------------------------------------------- If you did some cool changes to cdist, which you value as a benefit for @@ -40,6 +46,8 @@ work nor kill the authors brain: - Exception: Bugfixes to a version branch - Code submissions must be in your master branch - Exception: If you only want a comment on your code, but not an inclusion. +- Do not add conf/manifest/init - This file should only be touched in your + private branch! As soon as your work meets these requirements, you can contact me (IRC, Mailinglist, Phone, RFC 1149) and I'll check your code before From de81a2e80e6117243a7e1257a34b7701c87bb0dd Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 16:00:46 +0100 Subject: [PATCH 0091/5240] change todos Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 26 +++++++++++++++++++++++--- doc/dev/todo/post-1.3 | 27 --------------------------- 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index bf13881e..3556f371 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,3 +1,23 @@ -Document redefine behaviour -release cdist 1.4.0 - perhaps include __self +Core: + - support $__self = relative_type/object_id + - cache + +Cache: + Assume you want to configure stuff one host ("monitor node"), + depending on the configuration of other hosts ("cluster nodes"). + + For instance, the monitor host would like to know, + which hosts are configured with the provider + "apache" and option --start true. + + This requires the monitor node to be able to + query all other configured nodes. It can't + ask for all hosts, because cdist does not + know which hosts are configured or may exist. + + Example implementation + + If cdist keeps ("caches") the configuration of every + node it configures, each new node can query the + cache for existing nodes that acquired the given + configuration. diff --git a/doc/dev/todo/post-1.3 b/doc/dev/todo/post-1.3 index ec186d3a..c73a623b 100644 --- a/doc/dev/todo/post-1.3 +++ b/doc/dev/todo/post-1.3 @@ -1,30 +1,3 @@ -Core: - - allow redefine object, if everything same - - 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"), - depending on the configuration of other hosts ("cluster nodes"). - - For instance, the monitor host would like to know, - which hosts are configured with the provider - "apache" and option --start true. - - This requires the monitor node to be able to - query all other configured nodes. It can't - ask for all hosts, because cdist does not - know which hosts are configured or may exist. - - Example implementation - - If cdist keeps ("caches") the configuration of every - node it configures, each new node can query the - cache for existing nodes that acquired the given - configuration. - Types to be written/extended: - __ssh-keys (host/user) - __service From cd8ab7664a1f6a11b420f003d717a17f1914f627 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 16:02:15 +0100 Subject: [PATCH 0092/5240] rename post-1.3 todo Signed-off-by: Nico Schottelius --- doc/dev/todo/{post-1.3 => TAKEME} | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) rename doc/dev/todo/{post-1.3 => TAKEME} (54%) diff --git a/doc/dev/todo/post-1.3 b/doc/dev/todo/TAKEME similarity index 54% rename from doc/dev/todo/post-1.3 rename to doc/dev/todo/TAKEME index c73a623b..9fa083cc 100644 --- a/doc/dev/todo/post-1.3 +++ b/doc/dev/todo/TAKEME @@ -1,6 +1,10 @@ +The following list of todos has not been assigned to any developer. + +Feel free to pick one: + Types to be written/extended: - __ssh-keys (host/user) - - __service + - Think about __service - necessary? - __file_edit - regexp replace (can probably cover all?) -> aka sed. From f02254915a01640976368abedfc756f02bb99eb0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 17:41:20 +0100 Subject: [PATCH 0093/5240] begin to cleanup manpage generation Signed-off-by: Nico Schottelius --- Makefile | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 1023d541..93faa58a 100644 --- a/Makefile +++ b/Makefile @@ -16,10 +16,8 @@ WEBPAGE=$(WEBBASE).mdwn # Documentation MANDIR=doc/man -MANGENERATED=$(MANDIR)/cdist-reference.text -MANSRC=$(MANDIR)/cdist.text \ - $(MANDIR)/cdist-best-practise.text \ +MAN1SRC= \ $(MANDIR)/cdist-code-run.text \ $(MANDIR)/cdist-code-run-all.text \ $(MANDIR)/cdist-config.text \ @@ -28,23 +26,29 @@ MANSRC=$(MANDIR)/cdist.text \ $(MANDIR)/cdist-explorer-run-global.text \ $(MANDIR)/cdist-deploy-to.text \ $(MANDIR)/cdist-explorer.text \ - $(MANDIR)/cdist-hacker.text \ $(MANDIR)/cdist-manifest.text \ $(MANDIR)/cdist-manifest-run.text \ - $(MANDIR)/cdist-manifest-run-all.text \ $(MANDIR)/cdist-manifest-run-init.text \ + $(MANDIR)/cdist-manifest-run-all.text \ $(MANDIR)/cdist-object-explorer-all.text \ $(MANDIR)/cdist-object-gencode.text \ $(MANDIR)/cdist-object-gencode-all.text \ - $(MANDIR)/cdist-quickstart.text \ $(MANDIR)/cdist-remote-explorer-run.text \ $(MANDIR)/cdist-run-remote.text \ - $(MANDIR)/cdist-stages.text \ - $(MANDIR)/cdist-type.text \ $(MANDIR)/cdist-type-build-emulation.text \ $(MANDIR)/cdist-type-emulator.text \ $(MANDIR)/cdist-type-template.text \ +MAN7SRC=$(MANDIR)/cdist.text \ + $(MANDIR)/cdist-best-practise.text \ + $(MANDIR)/cdist-hacker.text \ + $(MANDIR)/cdist-quickstart.text \ + $(MANDIR)/cdist-reference.text \ + $(MANDIR)/cdist-stages.text \ + $(MANDIR)/cdist-type.text \ + +MAN1DST=$(MAN1SRC:.text=.1) +MAN7DST=$(MAN1SRC:.text=.7) ################################################################################ # User targets From 3dc37c17a33dccac168d26e7eace09e46f94ae9f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 18:32:53 +0100 Subject: [PATCH 0094/5240] require gnu make for manpages Signed-off-by: Nico Schottelius --- README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README b/README index feca4bc4..389470a0 100644 --- a/README +++ b/README @@ -107,7 +107,7 @@ To install cdist, execute the following commands: cd cdist export PATH=$PATH:$(pwd -P)/bin - # If you want the manpages (requires asciidoc to be installed) + # If you want the manpages (requires gmake and asciidoc to be installed) make man export MANPATH=$MANPATH:$(pwd -P)/doc/man @@ -136,7 +136,7 @@ may vanish at any point. To select a specific branch use git checkout -b origin/ # Stay on a specific version - git checkout -b 1.3 origin/1.3 + git checkout -b 1.4 origin/1.4 ### Mirrors From 0370412757d3ead117c54bcf434c17ed1f328ede Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 18:43:08 +0100 Subject: [PATCH 0095/5240] manpage generation cleaup Signed-off-by: Nico Schottelius --- Makefile | 41 ++++++++++++++++++++++------------------- doc/changelog | 3 +++ 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index 93faa58a..e43876b3 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ WEBPAGE=$(WEBBASE).mdwn # Documentation MANDIR=doc/man +HTMLDIR=$(MANDIR)/html MAN1SRC= \ $(MANDIR)/cdist-code-run.text \ @@ -46,9 +47,11 @@ MAN7SRC=$(MANDIR)/cdist.text \ $(MANDIR)/cdist-reference.text \ $(MANDIR)/cdist-stages.text \ $(MANDIR)/cdist-type.text \ + $(shell ls conf/type/*/man.text) MAN1DST=$(MAN1SRC:.text=.1) -MAN7DST=$(MAN1SRC:.text=.7) +MAN7DST=$(MAN7SRC:.text=.7) +MANHTML=$(MAN1SRC:.text=.html) $(MAN7SRC:.text=.html) ################################################################################ # User targets @@ -65,34 +68,34 @@ all: @echo '' @echo '' -man: doc/man/.marker -# FIXME: also depends on conf/type/*/man.text! -doc/man/.marker: manmove - touch $@ +%.1 %.7: %.text + $(A2XM) $*.text -# Manual from core -mancore: $(MANSRC) - for mansrc in $^; do $(A2XM) $$mansrc; $(A2XH) $$mansrc; done +%.html: %.text + $(A2XH) $*.text -# Manuals from types -mantype: - for man in conf/type/*/man.text; do $(A2XM) $$man; $(A2XH) $$man; done +man: $(MAN1DST) $(MAN7DST) + +html: $(MANHTML) + +# man: doc/man/.marker # Move into manpath directories -manmove: mantype mancore $(MANGENERATED) +manmove: $(MAN1DST) $(MAN7DST) $(MANHTML) for manpage in $(MANDIR)/*.[1-9] conf/type/*/*.7; do \ cat=$${manpage##*.}; \ mandir=$(MANDIR)/man$$cat; \ mkdir -p $$mandir; \ mv $$manpage $$mandir; \ done - mkdir -p doc/html - mv doc/man/*.html doc/html + # HTML + mkdir -p $(HTMLDIR) + mv doc/man/*.html $(HTMLDIR) for mantype in conf/type/*/man.html; do \ - mannew=$$(echo $$mantype | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;');\ - mv $$mantype doc/html/$$mannew; \ + mannew=$$(echo $$mantype | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;');\ + mv $$mantype doc/html/$$mannew; \ done # Reference depends on conf/type/*/man.text - HOWTO with posix make? @@ -102,9 +105,9 @@ $(MANDIR)/cdist-reference.text: $(MANDIR)/cdist-reference.text.sh $(A2XH) $(MANDIR)/cdist-reference.text clean: - rm -rf doc/man/html/* doc/man/*.[1-9] doc/man/man[1-9] $(MANGENERATED) - rm -f conf/type/*/man.html - rm -rf doc/html + rm -rf doc/man/html/* doc/man/*.[1-9] doc/man/man[1-9] + rm -f conf/type/*/man.html $(MANDIR)/cdist-reference.text + rm -rf $(HTMLDIR) ################################################################################ # Developer targets diff --git a/doc/changelog b/doc/changelog index f78b1660..6e119393 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,3 +1,6 @@ +1.4.1: + * Manpage generation cleanup + 1.4.0: 2011-03-24 * Add --recursive to __directory * Move cdist generated stuff to .cdist of an object From e27501218f5629b281b86f2dbea988c3d39bebaf Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 24 Mar 2011 23:16:25 +0100 Subject: [PATCH 0096/5240] new type __key_value Signed-off-by: Steven Armstrong --- conf/type/__key_value/explorer/value | 33 +++++++++++++ conf/type/__key_value/gencode-remote | 52 +++++++++++++++++++++ conf/type/__key_value/man.text | 59 ++++++++++++++++++++++++ conf/type/__key_value/manifest | 26 +++++++++++ conf/type/__key_value/parameter/optional | 1 + conf/type/__key_value/parameter/required | 3 ++ 6 files changed, 174 insertions(+) create mode 100755 conf/type/__key_value/explorer/value create mode 100755 conf/type/__key_value/gencode-remote create mode 100644 conf/type/__key_value/man.text create mode 100755 conf/type/__key_value/manifest create mode 100644 conf/type/__key_value/parameter/optional create mode 100644 conf/type/__key_value/parameter/required diff --git a/conf/type/__key_value/explorer/value b/conf/type/__key_value/explorer/value new file mode 100755 index 00000000..b1d7983f --- /dev/null +++ b/conf/type/__key_value/explorer/value @@ -0,0 +1,33 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Get the current value of key or __NOTSET__ if the key doesn't exist. +# + +key="$(cat "$__object/parameter/key")" +file="$(cat "$__object/parameter/file")" +delimiter="$(cat "$__object/parameter/delimiter")" + +awk -F "$delimiter" ' +BEGIN { found=0 } +/^'$key'/ { print $2; found=1 } +END { if (found) exit 0; else exit 1 }' "$file" \ +|| echo "__NOTSET__" + diff --git a/conf/type/__key_value/gencode-remote b/conf/type/__key_value/gencode-remote new file mode 100755 index 00000000..e41cd9b5 --- /dev/null +++ b/conf/type/__key_value/gencode-remote @@ -0,0 +1,52 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +value_is="$(cat "$__object/explorer/value")" +value_should="$(cat "$__object/parameter/value")" + +key="$(cat "$__object/parameter/key")" +file="$(cat "$__object/parameter/file")" +delimiter="$(cat "$__object/parameter/delimiter")" + +if [ "$value_is" != "$value_should" ]; then + case "$value_is" in + __NOTSET__) + # add key and value + echo "echo \"${key}${delimiter}${value_should}\" >> \"$file\"" + ;; + *) + if [ "$value_should" = '__NOTSET__' ]; then + # remove key and value + cat << DONE +sed -i '/^${key}/d' "$file" +DONE + else + # change value + cat << DONE +awk -F "$delimiter" ' +/${key}${delimiter}*/{gsub(/$value_is/, $value_should)};{print}' "$file" > "${file}+" \ +&& mv "${file}+" "$file" + +DONE + fi + ;; + esac +fi + diff --git a/conf/type/__key_value/man.text b/conf/type/__key_value/man.text new file mode 100644 index 00000000..78ba09a5 --- /dev/null +++ b/conf/type/__key_value/man.text @@ -0,0 +1,59 @@ +cdist-type__key_value(7) +========================== +Steven Armstrong + + +NAME +---- +cdist-type__key_value - Change property values in files + + +DESCRIPTION +----------- +This cdist type allows you to change values in a key value based config +file. + + +REQUIRED PARAMETERS +------------------- +value:: + The value for the key. Setting the value to __NOTSET__ will remove the key + from the file. +file:: + The file to operate on. +delimiter:: + The delimiter which seperates the key from the value. + + +OPTIONAL PARAMETERS +------------------- +key:: + The key to change. Defaults to object_id. + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Set the maximum system user id +__key_value SYS_UID_MAX --file /etc/login.defs --value 666 --delimiter ' ' + +# Same with fancy id +__key_value my-fancy-id --file /etc/login.defs --key SYS_UID_MAX --value 666 \ + --delimiter ' ' + +# Enable packet forwarding +__key_value net.ipv4.ip_forward --file /etc/sysctl.conf --value 1 \ + --delimiter '=' +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Copyright \(C) 2011 Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__key_value/manifest b/conf/type/__key_value/manifest new file mode 100755 index 00000000..706b0b0d --- /dev/null +++ b/conf/type/__key_value/manifest @@ -0,0 +1,26 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +if [ -f "$__object/parameter/key" ]; then + key="$(cat "$__object/parameter/key")" +else + echo "$__object_id" > "$__object/parameter/key" +fi + diff --git a/conf/type/__key_value/parameter/optional b/conf/type/__key_value/parameter/optional new file mode 100644 index 00000000..06bfde49 --- /dev/null +++ b/conf/type/__key_value/parameter/optional @@ -0,0 +1 @@ +key diff --git a/conf/type/__key_value/parameter/required b/conf/type/__key_value/parameter/required new file mode 100644 index 00000000..8f4aa53c --- /dev/null +++ b/conf/type/__key_value/parameter/required @@ -0,0 +1,3 @@ +value +file +delimiter From b959a14dc251826ff05a00d8cbc1226e408c4cb0 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 24 Mar 2011 23:22:08 +0100 Subject: [PATCH 0097/5240] fix length of ascidoc header Signed-off-by: Steven Armstrong --- conf/type/__key_value/man.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__key_value/man.text b/conf/type/__key_value/man.text index 78ba09a5..70711f97 100644 --- a/conf/type/__key_value/man.text +++ b/conf/type/__key_value/man.text @@ -1,5 +1,5 @@ cdist-type__key_value(7) -========================== +======================== Steven Armstrong From 46ceb3e3a924275bd096809b31f724044a502795 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 23:30:42 +0100 Subject: [PATCH 0098/5240] use variable instead of hardcoded value Signed-off-by: Nico Schottelius --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e43876b3..7b1e3dfa 100644 --- a/Makefile +++ b/Makefile @@ -121,10 +121,10 @@ test: # gentoo .rsync nicosc@ru3.inf.ethz.ch:cdist -web: man +web: manmove cp README $(WEBDIR)/$(WEBPAGE) rm -rf $(WEBDIR)/$(WEBBASE)/man && mkdir $(WEBDIR)/$(WEBBASE)/man - cp -r doc/html/* $(WEBDIR)/$(WEBBASE)/man + cp -r $(HTMLDIR)/* $(WEBDIR)/$(WEBBASE)/man cd $(WEBDIR) && git add $(WEBBASE)/man cd $(WEBDIR) && git commit -m "cdist update" $(WEBBASE) $(WEBPAGE) cd $(WEBDIR) && make pub From 79f6f90a05189bf4a6edca40e11c937c219631d3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 23:33:07 +0100 Subject: [PATCH 0099/5240] changelog+= __type/__key_value Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 6e119393..cd8cd4cc 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,5 +1,6 @@ 1.4.1: * Manpage generation cleanup + * New type __key_value (Steven Armstrong) 1.4.0: 2011-03-24 * Add --recursive to __directory From fa309545a8b272ac3b2555c3bb3a4c2ec8ccabc4 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 23:35:39 +0100 Subject: [PATCH 0100/5240] more stuff for 1.4.1 Signed-off-by: Nico Schottelius --- doc/changelog | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/changelog b/doc/changelog index cd8cd4cc..fb0bb1f9 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,6 +1,8 @@ 1.4.1: - * Manpage generation cleanup * New type __key_value (Steven Armstrong) + * New type __apt_ppa (Steven Armstrong) + * Documentation: Manpage generation cleanup + * Documentation: Manpage fix for __apt_ppa 1.4.0: 2011-03-24 * Add --recursive to __directory From ca139aa444650ae3815440a1f766122035a48460 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 24 Mar 2011 23:40:56 +0100 Subject: [PATCH 0101/5240] fixup manpage move/html Signed-off-by: Nico Schottelius --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 7b1e3dfa..98ac3a76 100644 --- a/Makefile +++ b/Makefile @@ -95,7 +95,7 @@ manmove: $(MAN1DST) $(MAN7DST) $(MANHTML) mv doc/man/*.html $(HTMLDIR) for mantype in conf/type/*/man.html; do \ mannew=$$(echo $$mantype | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;');\ - mv $$mantype doc/html/$$mannew; \ + mv $$mantype $(HTMLDIR)/$$mannew; \ done # Reference depends on conf/type/*/man.text - HOWTO with posix make? From 4088da5d8c53e76920292ffb13dcfb21fba75343 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 24 Mar 2011 23:47:05 +0100 Subject: [PATCH 0102/5240] escape __NOTSET__ in man page Signed-off-by: Steven Armstrong --- conf/type/__key_value/man.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__key_value/man.text b/conf/type/__key_value/man.text index 70711f97..7b9381df 100644 --- a/conf/type/__key_value/man.text +++ b/conf/type/__key_value/man.text @@ -17,7 +17,7 @@ file. REQUIRED PARAMETERS ------------------- value:: - The value for the key. Setting the value to __NOTSET__ will remove the key + The value for the key. Setting the value to `__NOTSET__` will remove the key from the file. file:: The file to operate on. From 042638943a028b01965430b29951d0e544000014 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 11:17:52 +0100 Subject: [PATCH 0103/5240] begin real clean manpage solution Signed-off-by: Nico Schottelius --- Makefile | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 98ac3a76..fb6161b2 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,10 @@ WEBPAGE=$(WEBBASE).mdwn # Documentation MANDIR=doc/man -HTMLDIR=$(MANDIR)/html + +MAN1DSTDIR=$(MANDIR)/man1 +MAN7DSTDIR=$(MANDIR)/man7 +MANHTMLDIR=$(MANDIR)/html MAN1SRC= \ $(MANDIR)/cdist-code-run.text \ @@ -47,12 +50,14 @@ MAN7SRC=$(MANDIR)/cdist.text \ $(MANDIR)/cdist-reference.text \ $(MANDIR)/cdist-stages.text \ $(MANDIR)/cdist-type.text \ - $(shell ls conf/type/*/man.text) + +MAN7TYPESRC=$(shell ls conf/type/*/man.text) MAN1DST=$(MAN1SRC:.text=.1) MAN7DST=$(MAN7SRC:.text=.7) MANHTML=$(MAN1SRC:.text=.html) $(MAN7SRC:.text=.html) + ################################################################################ # User targets # @@ -69,11 +74,15 @@ all: @echo '' -%.1 %.7: %.text +$(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR): + mkdir -p $< + +%.1 %.7: %.text $(MAN1DSTDIR) $(MAN7DSTDIR) $(A2XM) $*.text %.html: %.text - $(A2XH) $*.text + $(A2XH) -o $(MANHTMLDIR)/$(@F) $< + #$(A2XH) -o $(MANHTMLDIR)/$(@F) $*.text man: $(MAN1DST) $(MAN7DST) @@ -91,11 +100,11 @@ manmove: $(MAN1DST) $(MAN7DST) $(MANHTML) done # HTML - mkdir -p $(HTMLDIR) - mv doc/man/*.html $(HTMLDIR) + mkdir -p $(MANHTMLDIR) + mv doc/man/*.html $(MANHTMLDIR) for mantype in conf/type/*/man.html; do \ mannew=$$(echo $$mantype | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;');\ - mv $$mantype $(HTMLDIR)/$$mannew; \ + mv $$mantype $(MANHTMLDIR)/$$mannew; \ done # Reference depends on conf/type/*/man.text - HOWTO with posix make? @@ -107,7 +116,7 @@ $(MANDIR)/cdist-reference.text: $(MANDIR)/cdist-reference.text.sh clean: rm -rf doc/man/html/* doc/man/*.[1-9] doc/man/man[1-9] rm -f conf/type/*/man.html $(MANDIR)/cdist-reference.text - rm -rf $(HTMLDIR) + rm -rf $(MANHTMLDIR) ################################################################################ # Developer targets @@ -124,7 +133,7 @@ test: web: manmove cp README $(WEBDIR)/$(WEBPAGE) rm -rf $(WEBDIR)/$(WEBBASE)/man && mkdir $(WEBDIR)/$(WEBBASE)/man - cp -r $(HTMLDIR)/* $(WEBDIR)/$(WEBBASE)/man + cp -r $(MANHTMLDIR)/* $(WEBDIR)/$(WEBBASE)/man cd $(WEBDIR) && git add $(WEBBASE)/man cd $(WEBDIR) && git commit -m "cdist update" $(WEBBASE) $(WEBPAGE) cd $(WEBDIR) && make pub From bbe4f940e37a667aa209a8134b2bdb964b2c7a7b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 11:34:29 +0100 Subject: [PATCH 0104/5240] in theory finish generation for man1 and man7 core cleanly Signed-off-by: Nico Schottelius --- Makefile | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index fb6161b2..4af52565 100644 --- a/Makefile +++ b/Makefile @@ -53,8 +53,8 @@ MAN7SRC=$(MANDIR)/cdist.text \ MAN7TYPESRC=$(shell ls conf/type/*/man.text) -MAN1DST=$(MAN1SRC:.text=.1) -MAN7DST=$(MAN7SRC:.text=.7) +MAN1DST=$(addprefix $(MAN1DSTDIR)/,$(notdir $(MAN1SRC:.text=.1))) +MAN7DST=$(addprefix $(MAN7DSTDIR)/,$(notdir $(MAN7SRC:.text=.7))) MANHTML=$(MAN1SRC:.text=.html) $(MAN7SRC:.text=.html) @@ -74,15 +74,27 @@ all: @echo '' -$(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR): - mkdir -p $< +################################################################################ +# Documentation +# -%.1 %.7: %.text $(MAN1DSTDIR) $(MAN7DSTDIR) +# Create output dirs +$(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR): + mkdir -p $@ + +# Link source files +manlink: $(MAN1DSTDIR) $(MAN7DSTDIR) + for mansrc in $(MAN1SRC); do ln -sf $$mansrc $(MAN1DSTDIR); done + for mansrc in $(MAN7SRC); do ln -sf $$mansrc $(MAN7DSTDIR); done + for mansrc in $(MAN7TYPESRC); do \ + dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')"; \ + ln -sf $$mansrc $$dst; done + +%.1 %.7: %.text manlink $(A2XM) $*.text %.html: %.text $(A2XH) -o $(MANHTMLDIR)/$(@F) $< - #$(A2XH) -o $(MANHTMLDIR)/$(@F) $*.text man: $(MAN1DST) $(MAN7DST) From 6e85d65b72321c849ce224b6708bb031180310ec Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 11:35:43 +0100 Subject: [PATCH 0105/5240] and in practise link to .. is better than somewhere else Signed-off-by: Nico Schottelius --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 4af52565..d0d43073 100644 --- a/Makefile +++ b/Makefile @@ -84,8 +84,8 @@ $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR): # Link source files manlink: $(MAN1DSTDIR) $(MAN7DSTDIR) - for mansrc in $(MAN1SRC); do ln -sf $$mansrc $(MAN1DSTDIR); done - for mansrc in $(MAN7SRC); do ln -sf $$mansrc $(MAN7DSTDIR); done + for mansrc in $(notdir $(MAN1SRC)); do ln -sf ../$$mansrc $(MAN1DSTDIR); done + for mansrc in $(notdir $(MAN7SRC)); do ln -sf ../$$mansrc $(MAN7DSTDIR); done for mansrc in $(MAN7TYPESRC); do \ dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')"; \ ln -sf $$mansrc $$dst; done From 3e72555e5923f9f433fd6f8dfd700cb53f8be41c Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 11:46:56 +0100 Subject: [PATCH 0106/5240] make man is clean now Signed-off-by: Nico Schottelius --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index d0d43073..47d0e3df 100644 --- a/Makefile +++ b/Makefile @@ -52,7 +52,7 @@ MAN7SRC=$(MANDIR)/cdist.text \ $(MANDIR)/cdist-type.text \ MAN7TYPESRC=$(shell ls conf/type/*/man.text) - +MAN7TYPEDST=$(shell for mansrc in $(MAN7TYPESRC:.text=.7); do dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')"; echo $$dst; done) MAN1DST=$(addprefix $(MAN1DSTDIR)/,$(notdir $(MAN1SRC:.text=.1))) MAN7DST=$(addprefix $(MAN7DSTDIR)/,$(notdir $(MAN7SRC:.text=.7))) MANHTML=$(MAN1SRC:.text=.html) $(MAN7SRC:.text=.html) @@ -84,11 +84,11 @@ $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR): # Link source files manlink: $(MAN1DSTDIR) $(MAN7DSTDIR) - for mansrc in $(notdir $(MAN1SRC)); do ln -sf ../$$mansrc $(MAN1DSTDIR); done - for mansrc in $(notdir $(MAN7SRC)); do ln -sf ../$$mansrc $(MAN7DSTDIR); done + for mansrc in $(MAN1SRC); do ln -sf ../../../$$mansrc $(MAN1DSTDIR); done + for mansrc in $(MAN7SRC); do ln -sf ../../../$$mansrc $(MAN7DSTDIR); done for mansrc in $(MAN7TYPESRC); do \ dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')"; \ - ln -sf $$mansrc $$dst; done + ln -sf ../../../$$mansrc $$dst; done %.1 %.7: %.text manlink $(A2XM) $*.text @@ -96,7 +96,7 @@ manlink: $(MAN1DSTDIR) $(MAN7DSTDIR) %.html: %.text $(A2XH) -o $(MANHTMLDIR)/$(@F) $< -man: $(MAN1DST) $(MAN7DST) +man: $(MAN1DST) $(MAN7DST) $(MAN7TYPEDST) html: $(MANHTML) From 58391818ccd6a616524b7b98417870853603c4cf Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 11:52:51 +0100 Subject: [PATCH 0107/5240] remove old manmove target Signed-off-by: Nico Schottelius --- Makefile | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 47d0e3df..2b795740 100644 --- a/Makefile +++ b/Makefile @@ -55,7 +55,7 @@ MAN7TYPESRC=$(shell ls conf/type/*/man.text) MAN7TYPEDST=$(shell for mansrc in $(MAN7TYPESRC:.text=.7); do dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')"; echo $$dst; done) MAN1DST=$(addprefix $(MAN1DSTDIR)/,$(notdir $(MAN1SRC:.text=.1))) MAN7DST=$(addprefix $(MAN7DSTDIR)/,$(notdir $(MAN7SRC:.text=.7))) -MANHTML=$(MAN1SRC:.text=.html) $(MAN7SRC:.text=.html) +MANHTML=$(MAN1DST:.1=.html) $(MAN7DST:.7=.html) $(MAN7TYPEDST:.7=.html) ################################################################################ @@ -83,7 +83,7 @@ $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR): mkdir -p $@ # Link source files -manlink: $(MAN1DSTDIR) $(MAN7DSTDIR) +manlink: $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) for mansrc in $(MAN1SRC); do ln -sf ../../../$$mansrc $(MAN1DSTDIR); done for mansrc in $(MAN7SRC); do ln -sf ../../../$$mansrc $(MAN7DSTDIR); done for mansrc in $(MAN7TYPESRC); do \ @@ -100,25 +100,6 @@ man: $(MAN1DST) $(MAN7DST) $(MAN7TYPEDST) html: $(MANHTML) -# man: doc/man/.marker - -# Move into manpath directories -manmove: $(MAN1DST) $(MAN7DST) $(MANHTML) - for manpage in $(MANDIR)/*.[1-9] conf/type/*/*.7; do \ - cat=$${manpage##*.}; \ - mandir=$(MANDIR)/man$$cat; \ - mkdir -p $$mandir; \ - mv $$manpage $$mandir; \ - done - - # HTML - mkdir -p $(MANHTMLDIR) - mv doc/man/*.html $(MANHTMLDIR) - for mantype in conf/type/*/man.html; do \ - mannew=$$(echo $$mantype | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;');\ - mv $$mantype $(MANHTMLDIR)/$$mannew; \ - done - # Reference depends on conf/type/*/man.text - HOWTO with posix make? $(MANDIR)/cdist-reference.text: $(MANDIR)/cdist-reference.text.sh $(MANDIR)/cdist-reference.text.sh From bd25d6810b836552a245677c8189e0ddcd4293fa Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 19:39:50 +0100 Subject: [PATCH 0108/5240] makefile cleanup, todo add Signed-off-by: Nico Schottelius --- Makefile | 11 ++++++----- doc/dev/todo/TAKEME | 9 ++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 2b795740..3de70201 100644 --- a/Makefile +++ b/Makefile @@ -69,6 +69,7 @@ all: @echo 'Here are the possible targets:' @echo '' @echo ' man: Build manpages (requires Asciidoc)' + @echo ' manhtml: Build html-manpages (requires Asciidoc)' @echo ' clean: Remove build stuff' @echo '' @echo '' @@ -83,7 +84,7 @@ $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR): mkdir -p $@ # Link source files -manlink: $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) +manlink: $(MAN1SRC) $(MAN7SRC) $(MANTYPE7SRC) $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) for mansrc in $(MAN1SRC); do ln -sf ../../../$$mansrc $(MAN1DSTDIR); done for mansrc in $(MAN7SRC); do ln -sf ../../../$$mansrc $(MAN7DSTDIR); done for mansrc in $(MAN7TYPESRC); do \ @@ -93,14 +94,14 @@ manlink: $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) %.1 %.7: %.text manlink $(A2XM) $*.text -%.html: %.text +%.html: %.text manlink $(A2XH) -o $(MANHTMLDIR)/$(@F) $< man: $(MAN1DST) $(MAN7DST) $(MAN7TYPEDST) -html: $(MANHTML) +# $(MANHTML): $(MANHTMLDIR) +manhtml: $(MANHTML) -# Reference depends on conf/type/*/man.text - HOWTO with posix make? $(MANDIR)/cdist-reference.text: $(MANDIR)/cdist-reference.text.sh $(MANDIR)/cdist-reference.text.sh $(A2XM) $(MANDIR)/cdist-reference.text @@ -109,7 +110,7 @@ $(MANDIR)/cdist-reference.text: $(MANDIR)/cdist-reference.text.sh clean: rm -rf doc/man/html/* doc/man/*.[1-9] doc/man/man[1-9] rm -f conf/type/*/man.html $(MANDIR)/cdist-reference.text - rm -rf $(MANHTMLDIR) + rm -rf $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) ################################################################################ # Developer targets diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 9fa083cc..2881c06c 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -1,7 +1,14 @@ +UNASSIGNED TODOS +---------------- The following list of todos has not been assigned to any developer. +Feel free to pick one! -Feel free to pick one: +CORE +---- +Only build manpages if necessary for types as well as for the core! +TYPES +------ Types to be written/extended: - __ssh-keys (host/user) - Think about __service - necessary? From 1a2f7bb8bb3df13ed9ae81c089eb31684e186e66 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 20:31:20 +0100 Subject: [PATCH 0109/5240] link type manpages into tempdir Signed-off-by: Nico Schottelius --- Makefile | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 3de70201..b09d5719 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,8 @@ MANDIR=doc/man MAN1DSTDIR=$(MANDIR)/man1 MAN7DSTDIR=$(MANDIR)/man7 MANHTMLDIR=$(MANDIR)/html +MANTMPDIR=$(MANDIR)/tmp +MANOUTDIRS=$(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) MAN1SRC= \ $(MANDIR)/cdist-code-run.text \ @@ -79,8 +81,18 @@ all: # Documentation # +# Type manpages are in no good format for asciidoc, make them look good! +manlinktypes: $(MANTMPDIR) + for mansrc in $(MAN7TYPESRC); do \ + dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;$(MANTMPDIR)/;')"; \ + ln -sf ../../../$$mansrc $$dst; done + +################################################################################ + +man: $(MAN1DST) $(MAN7DST) $(MAN7TYPEDST) + # Create output dirs -$(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR): +$(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) $(MANTMPDIR): mkdir -p $@ # Link source files @@ -91,14 +103,12 @@ manlink: $(MAN1SRC) $(MAN7SRC) $(MANTYPE7SRC) $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANH dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')"; \ ln -sf ../../../$$mansrc $$dst; done -%.1 %.7: %.text manlink +%.1 %.7: %.text manlink $(MANOUTDIRS) $(A2XM) $*.text %.html: %.text manlink $(A2XH) -o $(MANHTMLDIR)/$(@F) $< -man: $(MAN1DST) $(MAN7DST) $(MAN7TYPEDST) - # $(MANHTML): $(MANHTMLDIR) manhtml: $(MANHTML) From 1398cde9f0f29f33420439ef608f50fe3d4a8e8d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 20:34:13 +0100 Subject: [PATCH 0110/5240] also link core manpages into tmp Signed-off-by: Nico Schottelius --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index b09d5719..79188352 100644 --- a/Makefile +++ b/Makefile @@ -82,10 +82,12 @@ all: # # Type manpages are in no good format for asciidoc, make them look good! -manlinktypes: $(MANTMPDIR) +manlink: $(MANTMPDIR) for mansrc in $(MAN7TYPESRC); do \ dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;$(MANTMPDIR)/;')"; \ ln -sf ../../../$$mansrc $$dst; done + for mansrc in $(MAN1SRC); do ln -sf ../../../$$mansrc $(MANTMPDIR); done + for mansrc in $(MAN7SRC); do ln -sf ../../../$$mansrc $(MANTMPDIR); done ################################################################################ From 8c3782f091db1bcba723bf72d4f244d8d185fa60 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 20:49:09 +0100 Subject: [PATCH 0111/5240] further cleanups to the man build system Signed-off-by: Nico Schottelius --- Makefile | 52 +++++++++++++++++++++------------------------------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 79188352..e06db5c0 100644 --- a/Makefile +++ b/Makefile @@ -5,23 +5,20 @@ MANDIR=$(PREFIX)/share/man # Manpage and HTML A2XM=a2x -f manpage --no-xmllint -# A2XH=a2x -f xhtml --no-xmllint -A2XH=asciidoc -b xhtml11 +A2XH=a2x -f xhtml --no-xmllint -# Developer only +# Developer webbase WEBDIR=$$HOME/niconetz WEBBASE=software/cdist WEBPAGE=$(WEBBASE).mdwn - # Documentation MANDIR=doc/man MAN1DSTDIR=$(MANDIR)/man1 MAN7DSTDIR=$(MANDIR)/man7 MANHTMLDIR=$(MANDIR)/html -MANTMPDIR=$(MANDIR)/tmp -MANOUTDIRS=$(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) +MANOUTDIRS=$(MAN1DSTDIR) $(MAN7DSTDIR) MAN1SRC= \ $(MANDIR)/cdist-code-run.text \ @@ -53,12 +50,17 @@ MAN7SRC=$(MANDIR)/cdist.text \ $(MANDIR)/cdist-stages.text \ $(MANDIR)/cdist-type.text \ +# Manpages from types MAN7TYPESRC=$(shell ls conf/type/*/man.text) -MAN7TYPEDST=$(shell for mansrc in $(MAN7TYPESRC:.text=.7); do dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')"; echo $$dst; done) -MAN1DST=$(addprefix $(MAN1DSTDIR)/,$(notdir $(MAN1SRC:.text=.1))) -MAN7DST=$(addprefix $(MAN7DSTDIR)/,$(notdir $(MAN7SRC:.text=.7))) -MANHTML=$(MAN1DST:.1=.html) $(MAN7DST:.7=.html) $(MAN7TYPEDST:.7=.html) +# Source files after linking them +MAN1TMPSRC=$(shell ls $(MAN1DSTDIR)/*.text) +MAN7TMPSRC=$(shell ls $(MAN7DSTDIR)/*.text) + +# Destination files based on linked files, not static list +MAN1DST=$(MAN1TMPSRC:.text=.1) +MAN7DST=$(MAN7TMPSRC:.text=.7) +MANHTML=$(MAN1TMPSRC:.text=.html) $(MAN7TMPSRC:.text=.html) ################################################################################ # User targets @@ -81,48 +83,36 @@ all: # Documentation # -# Type manpages are in no good format for asciidoc, make them look good! -manlink: $(MANTMPDIR) - for mansrc in $(MAN7TYPESRC); do \ - dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;$(MANTMPDIR)/;')"; \ - ln -sf ../../../$$mansrc $$dst; done - for mansrc in $(MAN1SRC); do ln -sf ../../../$$mansrc $(MANTMPDIR); done - for mansrc in $(MAN7SRC); do ln -sf ../../../$$mansrc $(MANTMPDIR); done +# Create manpages +man: $(MAN1DST) $(MAN7DST) +manhtml: $(MANHTML) -################################################################################ - -man: $(MAN1DST) $(MAN7DST) $(MAN7TYPEDST) +$(MANHTML): $(MANHTMLDIR) # Create output dirs $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) $(MANTMPDIR): mkdir -p $@ # Link source files -manlink: $(MAN1SRC) $(MAN7SRC) $(MANTYPE7SRC) $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) +manlink: $(MAN1SRC) $(MAN7SRC) $(MANTYPE7SRC) $(MANOUTDIRS) for mansrc in $(MAN1SRC); do ln -sf ../../../$$mansrc $(MAN1DSTDIR); done for mansrc in $(MAN7SRC); do ln -sf ../../../$$mansrc $(MAN7DSTDIR); done for mansrc in $(MAN7TYPESRC); do \ dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')"; \ ln -sf ../../../$$mansrc $$dst; done -%.1 %.7: %.text manlink $(MANOUTDIRS) +%.1 %.7: %.text manlink $(A2XM) $*.text %.html: %.text manlink - $(A2XH) -o $(MANHTMLDIR)/$(@F) $< - -# $(MANHTML): $(MANHTMLDIR) -manhtml: $(MANHTML) + $(A2XH) $< $(MANDIR)/cdist-reference.text: $(MANDIR)/cdist-reference.text.sh $(MANDIR)/cdist-reference.text.sh - $(A2XM) $(MANDIR)/cdist-reference.text - $(A2XH) $(MANDIR)/cdist-reference.text clean: - rm -rf doc/man/html/* doc/man/*.[1-9] doc/man/man[1-9] - rm -f conf/type/*/man.html $(MANDIR)/cdist-reference.text - rm -rf $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) + rm -rf $(MANOUTDIRS) + rm -f $(MANDIR)/cdist-reference.text ################################################################################ # Developer targets From 8a01df66dd8b7202a7e604f12f81bb47a3eee565 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 20:54:50 +0100 Subject: [PATCH 0112/5240] does not work: MAN1TMPSRC=$(shell ls $(MAN1DSTDIR)/*.text) is expanded before manlink was run Signed-off-by: Nico Schottelius --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e06db5c0..fc55ea03 100644 --- a/Makefile +++ b/Makefile @@ -87,7 +87,7 @@ all: man: $(MAN1DST) $(MAN7DST) manhtml: $(MANHTML) -$(MANHTML): $(MANHTMLDIR) +$(MAN1DST) $(MAN7DST) $(MANHTML): $(MANOUTDIRS) # Create output dirs $(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) $(MANTMPDIR): From 4d33e524a122745c8d62eb0015cd4b9ef46d4092 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 20:56:25 +0100 Subject: [PATCH 0113/5240] begin to migrate makefile to shell script Signed-off-by: Nico Schottelius --- Makefile => build.sh | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) rename Makefile => build.sh (80%) diff --git a/Makefile b/build.sh similarity index 80% rename from Makefile rename to build.sh index fc55ea03..f8544f09 100644 --- a/Makefile +++ b/build.sh @@ -1,7 +1,27 @@ -# General -PREFIX=/usr -BINDIR=$(PREFIX)/bin -MANDIR=$(PREFIX)/share/man +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Push a directory to a target, both sides have the same name (i.e. explorers) +# or +# Pull a directory from a target, both sides have the same name (i.e. explorers) +# # Manpage and HTML A2XM=a2x -f manpage --no-xmllint @@ -17,7 +37,6 @@ MANDIR=doc/man MAN1DSTDIR=$(MANDIR)/man1 MAN7DSTDIR=$(MANDIR)/man7 -MANHTMLDIR=$(MANDIR)/html MANOUTDIRS=$(MAN1DSTDIR) $(MAN7DSTDIR) MAN1SRC= \ From 8b9b95f98479c3002c9ca13da9ff8295f9d3d4ef Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 21:04:26 +0100 Subject: [PATCH 0114/5240] partial transformation Signed-off-by: Nico Schottelius --- build.sh | 156 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 84 insertions(+), 72 deletions(-) mode change 100644 => 100755 build.sh diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 index f8544f09..8509eddc --- a/build.sh +++ b/build.sh @@ -24,57 +24,98 @@ # # Manpage and HTML -A2XM=a2x -f manpage --no-xmllint -A2XH=a2x -f xhtml --no-xmllint +A2XM="a2x -f manpage --no-xmllint" +A2XH="a2x -f xhtml --no-xmllint" # Developer webbase -WEBDIR=$$HOME/niconetz +WEBDIR=$HOME/niconetz WEBBASE=software/cdist -WEBPAGE=$(WEBBASE).mdwn +WEBPAGE=${WEBBASE}.mdwn # Documentation MANDIR=doc/man - -MAN1DSTDIR=$(MANDIR)/man1 -MAN7DSTDIR=$(MANDIR)/man7 -MANOUTDIRS=$(MAN1DSTDIR) $(MAN7DSTDIR) +MAN1DSTDIR=${MANDIR}/man1 +MAN7DSTDIR=${MANDIR}/man7 MAN1SRC= \ - $(MANDIR)/cdist-code-run.text \ - $(MANDIR)/cdist-code-run-all.text \ - $(MANDIR)/cdist-config.text \ - $(MANDIR)/cdist-dir.text \ - $(MANDIR)/cdist-env.text \ - $(MANDIR)/cdist-explorer-run-global.text \ - $(MANDIR)/cdist-deploy-to.text \ - $(MANDIR)/cdist-explorer.text \ - $(MANDIR)/cdist-manifest.text \ - $(MANDIR)/cdist-manifest-run.text \ - $(MANDIR)/cdist-manifest-run-init.text \ - $(MANDIR)/cdist-manifest-run-all.text \ - $(MANDIR)/cdist-object-explorer-all.text \ - $(MANDIR)/cdist-object-gencode.text \ - $(MANDIR)/cdist-object-gencode-all.text \ - $(MANDIR)/cdist-remote-explorer-run.text \ - $(MANDIR)/cdist-run-remote.text \ - $(MANDIR)/cdist-type-build-emulation.text \ - $(MANDIR)/cdist-type-emulator.text \ - $(MANDIR)/cdist-type-template.text \ + ${MANDIR}/cdist-code-run.text \ + ${MANDIR}/cdist-code-run-all.text \ + ${MANDIR}/cdist-config.text \ + ${MANDIR}/cdist-dir.text \ + ${MANDIR}/cdist-env.text \ + ${MANDIR}/cdist-explorer-run-global.text \ + ${MANDIR}/cdist-deploy-to.text \ + ${MANDIR}/cdist-explorer.text \ + ${MANDIR}/cdist-manifest.text \ + ${MANDIR}/cdist-manifest-run.text \ + ${MANDIR}/cdist-manifest-run-init.text \ + ${MANDIR}/cdist-manifest-run-all.text \ + ${MANDIR}/cdist-object-explorer-all.text \ + ${MANDIR}/cdist-object-gencode.text \ + ${MANDIR}/cdist-object-gencode-all.text \ + ${MANDIR}/cdist-remote-explorer-run.text \ + ${MANDIR}/cdist-run-remote.text \ + ${MANDIR}/cdist-type-build-emulation.text \ + ${MANDIR}/cdist-type-emulator.text \ + ${MANDIR}/cdist-type-template.text + +MAN7SRC=${MANDIR}/cdist.text \ + ${MANDIR}/cdist-best-practise.text \ + ${MANDIR}/cdist-hacker.text \ + ${MANDIR}/cdist-quickstart.text \ + ${MANDIR}/cdist-reference.text \ + ${MANDIR}/cdist-stages.text \ + ${MANDIR}/cdist-type.text \ + + +case "$1" in + man) + for mansrc in ${MAN1SRC} ${MAN7SRC}; do + ln -sf ../../../$mansrc ${MAN1DSTDIR}; + done + for mansrc in ${MAN7TYPESRC}; do + dst="$(echo $mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')" + ln -sf ../../../$$mansrc $$dst + done + ;; + + web) + cp README ${WEBDIR}/${WEBPAGE} + rm -rf ${WEBDIR}/${WEBBASE}/man && mkdir ${WEBDIR}/${WEBBASE}/man + cp -r $(MANHTMLDIR)/* ${WEBDIR}/${WEBBASE}/man + cd ${WEBDIR} && git add ${WEBBASE}/man + cd ${WEBDIR} && git commit -m "cdist update" ${WEBBASE} ${WEBPAGE} + cd ${WEBDIR} && make pub + ;; + + pub) + git push --mirror + git push --mirror github + ;; + + *) + echo '' + echo 'Welcome to cdist!' + echo '' + echo 'Here are the possible targets:' + echo '' + echo ' man: Build manpages (requires Asciidoc)' + echo ' manhtml: Build html-manpages (requires Asciidoc)' + echo ' clean: Remove build stuff' + echo '' + echo '' + echo "Unknown target, \"$1\"" >&2 + exit 1 + ;; +esac -MAN7SRC=$(MANDIR)/cdist.text \ - $(MANDIR)/cdist-best-practise.text \ - $(MANDIR)/cdist-hacker.text \ - $(MANDIR)/cdist-quickstart.text \ - $(MANDIR)/cdist-reference.text \ - $(MANDIR)/cdist-stages.text \ - $(MANDIR)/cdist-type.text \ # Manpages from types -MAN7TYPESRC=$(shell ls conf/type/*/man.text) +MAN7TYPESRC=$(ls conf/type/*/man.text) # Source files after linking them -MAN1TMPSRC=$(shell ls $(MAN1DSTDIR)/*.text) -MAN7TMPSRC=$(shell ls $(MAN7DSTDIR)/*.text) +MAN1TMPSRC=$(shell ls ${MAN1DSTDIR}/*.text) +MAN7TMPSRC=$(shell ls ${MAN7DSTDIR}/*.text) # Destination files based on linked files, not static list MAN1DST=$(MAN1TMPSRC:.text=.1) @@ -85,18 +126,6 @@ MANHTML=$(MAN1TMPSRC:.text=.html) $(MAN7TMPSRC:.text=.html) # User targets # -all: - @echo '' - @echo 'Welcome to cdist!' - @echo '' - @echo 'Here are the possible targets:' - @echo '' - @echo ' man: Build manpages (requires Asciidoc)' - @echo ' manhtml: Build html-manpages (requires Asciidoc)' - @echo ' clean: Remove build stuff' - @echo '' - @echo '' - ################################################################################ # Documentation @@ -109,16 +138,11 @@ manhtml: $(MANHTML) $(MAN1DST) $(MAN7DST) $(MANHTML): $(MANOUTDIRS) # Create output dirs -$(MAN1DSTDIR) $(MAN7DSTDIR) $(MANHTMLDIR) $(MANTMPDIR): +${MAN1DSTDIR} ${MAN7DSTDIR} $(MANHTMLDIR) $(MANTMPDIR): mkdir -p $@ # Link source files -manlink: $(MAN1SRC) $(MAN7SRC) $(MANTYPE7SRC) $(MANOUTDIRS) - for mansrc in $(MAN1SRC); do ln -sf ../../../$$mansrc $(MAN1DSTDIR); done - for mansrc in $(MAN7SRC); do ln -sf ../../../$$mansrc $(MAN7DSTDIR); done - for mansrc in $(MAN7TYPESRC); do \ - dst="$$(echo $$mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')"; \ - ln -sf ../../../$$mansrc $$dst; done +manlink: ${MAN1SRC} ${MAN7SRC} $(MANTYPE7SRC) $(MANOUTDIRS) %.1 %.7: %.text manlink $(A2XM) $*.text @@ -126,12 +150,12 @@ manlink: $(MAN1SRC) $(MAN7SRC) $(MANTYPE7SRC) $(MANOUTDIRS) %.html: %.text manlink $(A2XH) $< -$(MANDIR)/cdist-reference.text: $(MANDIR)/cdist-reference.text.sh - $(MANDIR)/cdist-reference.text.sh +${MANDIR}/cdist-reference.text: ${MANDIR}/cdist-reference.text.sh + ${MANDIR}/cdist-reference.text.sh clean: rm -rf $(MANOUTDIRS) - rm -f $(MANDIR)/cdist-reference.text + rm -f ${MANDIR}/cdist-reference.text ################################################################################ # Developer targets @@ -144,15 +168,3 @@ test: .rsync nicosc@free.ethz.ch:cdist # gentoo .rsync nicosc@ru3.inf.ethz.ch:cdist - -web: manmove - cp README $(WEBDIR)/$(WEBPAGE) - rm -rf $(WEBDIR)/$(WEBBASE)/man && mkdir $(WEBDIR)/$(WEBBASE)/man - cp -r $(MANHTMLDIR)/* $(WEBDIR)/$(WEBBASE)/man - cd $(WEBDIR) && git add $(WEBBASE)/man - cd $(WEBDIR) && git commit -m "cdist update" $(WEBBASE) $(WEBPAGE) - cd $(WEBDIR) && make pub - -pub: - git push --mirror - git push --mirror github From 88ca7a44ec5180034afb31ce816d690fdbf5f47a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 22:10:52 +0100 Subject: [PATCH 0115/5240] finish most parts of translation Signed-off-by: Nico Schottelius --- build.sh | 157 +++++++++++++++++++++---------------------------------- 1 file changed, 59 insertions(+), 98 deletions(-) diff --git a/build.sh b/build.sh index 8509eddc..cf0574fd 100755 --- a/build.sh +++ b/build.sh @@ -37,55 +37,71 @@ MANDIR=doc/man MAN1DSTDIR=${MANDIR}/man1 MAN7DSTDIR=${MANDIR}/man7 -MAN1SRC= \ - ${MANDIR}/cdist-code-run.text \ - ${MANDIR}/cdist-code-run-all.text \ - ${MANDIR}/cdist-config.text \ - ${MANDIR}/cdist-dir.text \ - ${MANDIR}/cdist-env.text \ - ${MANDIR}/cdist-explorer-run-global.text \ - ${MANDIR}/cdist-deploy-to.text \ - ${MANDIR}/cdist-explorer.text \ - ${MANDIR}/cdist-manifest.text \ - ${MANDIR}/cdist-manifest-run.text \ - ${MANDIR}/cdist-manifest-run-init.text \ - ${MANDIR}/cdist-manifest-run-all.text \ - ${MANDIR}/cdist-object-explorer-all.text \ - ${MANDIR}/cdist-object-gencode.text \ - ${MANDIR}/cdist-object-gencode-all.text \ - ${MANDIR}/cdist-remote-explorer-run.text \ - ${MANDIR}/cdist-run-remote.text \ - ${MANDIR}/cdist-type-build-emulation.text \ - ${MANDIR}/cdist-type-emulator.text \ - ${MANDIR}/cdist-type-template.text - -MAN7SRC=${MANDIR}/cdist.text \ - ${MANDIR}/cdist-best-practise.text \ - ${MANDIR}/cdist-hacker.text \ - ${MANDIR}/cdist-quickstart.text \ - ${MANDIR}/cdist-reference.text \ - ${MANDIR}/cdist-stages.text \ - ${MANDIR}/cdist-type.text \ - - case "$1" in man) - for mansrc in ${MAN1SRC} ${MAN7SRC}; do - ln -sf ../../../$mansrc ${MAN1DSTDIR}; + set -e + "$0" mandirs + "$0" mantype + "$0" man1 + "$0" man7 + "$0" manbuild + ;; + + manbuild) + for src in ${MAN1DSTDIR}/*.text ${MAN7DSTDIR}/*.text; do + echo "Compiling manpage and html for $src" + $A2XM "$src" + $A2XH "$src" done + ;; + + mandirs) + # Create destination directories + mkdir -p "${MAN1DSTDIR}" "${MAN7DSTDIR}" + ;; + + mantype) for mansrc in ${MAN7TYPESRC}; do dst="$(echo $mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')" - ln -sf ../../../$$mansrc $$dst + ln -sf "../../../$mansrc" "$dst" done ;; + man1) + for man in cdist-code-run.text cdist-code-run-all.text cdist-config.text \ + cdist-dir.text cdist-env.text cdist-explorer-run-global.text \ + cdist-deploy-to.text cdist-explorer.text cdist-manifest.text \ + cdist-manifest-run.text cdist-manifest-run-init.text \ + cdist-manifest-run-all.text cdist-object-explorer-all.text \ + cdist-object-gencode.text cdist-object-gencode-all.text \ + cdist-remote-explorer-run.text cdist-run-remote.text \ + cdist-type-build-emulation.text cdist-type-emulator.text \ + cdist-type-template.text + do + ln -sf ../$man ${MAN1DSTDIR} + done + ;; + + man7) + for man in cdist.text cdist-best-practise.text cdist-hacker.text \ + cdist-quickstart.text cdist-reference.text cdist-stages.text \ + cdist-type.text + do + ln -sf ../$man ${MAN7DSTDIR} + done + ;; + + mangen) + ${MANDIR}/cdist-reference.text.sh + ;; + web) cp README ${WEBDIR}/${WEBPAGE} rm -rf ${WEBDIR}/${WEBBASE}/man && mkdir ${WEBDIR}/${WEBBASE}/man - cp -r $(MANHTMLDIR)/* ${WEBDIR}/${WEBBASE}/man - cd ${WEBDIR} && git add ${WEBBASE}/man - cd ${WEBDIR} && git commit -m "cdist update" ${WEBBASE} ${WEBPAGE} - cd ${WEBDIR} && make pub + cp -r ${MANHTMLDIR}/* ${WEBDIR}/${WEBBASE}/man + cd ${WEBDIR} && echo git add ${WEBBASE}/man + cd ${WEBDIR} && echo git commit -m "cdist update" ${WEBBASE} ${WEBPAGE} + cd ${WEBDIR} && echo make pub ;; pub) @@ -93,6 +109,11 @@ case "$1" in git push --mirror github ;; + clean) + rm -rf "$MAN1DSTDIR" "$MAN7DSTDIR" + rm -f ${MANDIR}/cdist-reference.text + ;; + *) echo '' echo 'Welcome to cdist!' @@ -108,63 +129,3 @@ case "$1" in exit 1 ;; esac - - -# Manpages from types -MAN7TYPESRC=$(ls conf/type/*/man.text) - -# Source files after linking them -MAN1TMPSRC=$(shell ls ${MAN1DSTDIR}/*.text) -MAN7TMPSRC=$(shell ls ${MAN7DSTDIR}/*.text) - -# Destination files based on linked files, not static list -MAN1DST=$(MAN1TMPSRC:.text=.1) -MAN7DST=$(MAN7TMPSRC:.text=.7) -MANHTML=$(MAN1TMPSRC:.text=.html) $(MAN7TMPSRC:.text=.html) - -################################################################################ -# User targets -# - - -################################################################################ -# Documentation -# - -# Create manpages -man: $(MAN1DST) $(MAN7DST) -manhtml: $(MANHTML) - -$(MAN1DST) $(MAN7DST) $(MANHTML): $(MANOUTDIRS) - -# Create output dirs -${MAN1DSTDIR} ${MAN7DSTDIR} $(MANHTMLDIR) $(MANTMPDIR): - mkdir -p $@ - -# Link source files -manlink: ${MAN1SRC} ${MAN7SRC} $(MANTYPE7SRC) $(MANOUTDIRS) - -%.1 %.7: %.text manlink - $(A2XM) $*.text - -%.html: %.text manlink - $(A2XH) $< - -${MANDIR}/cdist-reference.text: ${MANDIR}/cdist-reference.text.sh - ${MANDIR}/cdist-reference.text.sh - -clean: - rm -rf $(MANOUTDIRS) - rm -f ${MANDIR}/cdist-reference.text - -################################################################################ -# Developer targets -# - -test: - # ubuntu - .rsync lyni@tablett:cdist - # redhat - .rsync nicosc@free.ethz.ch:cdist - # gentoo - .rsync nicosc@ru3.inf.ethz.ch:cdist From 683e813ce22da3ff76933dff093710e16a104db7 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 22:13:07 +0100 Subject: [PATCH 0116/5240] adjust web target Signed-off-by: Nico Schottelius --- build.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.sh b/build.sh index cf0574fd..2c1570f5 100755 --- a/build.sh +++ b/build.sh @@ -98,10 +98,10 @@ case "$1" in web) cp README ${WEBDIR}/${WEBPAGE} rm -rf ${WEBDIR}/${WEBBASE}/man && mkdir ${WEBDIR}/${WEBBASE}/man - cp -r ${MANHTMLDIR}/* ${WEBDIR}/${WEBBASE}/man - cd ${WEBDIR} && echo git add ${WEBBASE}/man - cd ${WEBDIR} && echo git commit -m "cdist update" ${WEBBASE} ${WEBPAGE} - cd ${WEBDIR} && echo make pub + cp ${MAN1DSTDIR}/*.html ${MAN7DSTDIR}/*.html ${WEBDIR}/${WEBBASE}/man + cd ${WEBDIR} && git add ${WEBBASE}/man + cd ${WEBDIR} && git commit -m "cdist update" ${WEBBASE} ${WEBPAGE} + cd ${WEBDIR} && make pub ;; pub) From 3356564c7772bfc1202aed4957663a23ce2b60e7 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 22:24:02 +0100 Subject: [PATCH 0117/5240] upgrade to 1.4.1 Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- doc/changelog | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 00872438..86039f00 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -19,7 +19,7 @@ # # -__cdist_version="1.4.0" +__cdist_version="1.4.1" # Fail if something bogus is going on set -u diff --git a/doc/changelog b/doc/changelog index fb0bb1f9..5cfae26f 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,4 +1,4 @@ -1.4.1: +1.4.1: 2011-03-25 * New type __key_value (Steven Armstrong) * New type __apt_ppa (Steven Armstrong) * Documentation: Manpage generation cleanup From 7a56c5466e9ddf53e53c831e00af361f8f3844f3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 22:28:34 +0100 Subject: [PATCH 0118/5240] use build.sh in documentation Signed-off-by: Nico Schottelius --- README | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README b/README index 389470a0..48b934f1 100644 --- a/README +++ b/README @@ -77,6 +77,7 @@ cdist was tested or is know to run on at least * [Debian](http://www.debian.org/) * [Gentoo](http://www.gentoo.org/) * [Mac OS X](http://www.apple.com/macosx/) + * [OpenBSD](http://www.openbsd.org) * [Redhat](http://www.redhat.com/) * [Ubuntu](http://www.ubuntu.com/) @@ -108,7 +109,7 @@ To install cdist, execute the following commands: export PATH=$PATH:$(pwd -P)/bin # If you want the manpages (requires gmake and asciidoc to be installed) - make man + ./build.sh man export MANPATH=$MANPATH:$(pwd -P)/doc/man @@ -150,7 +151,7 @@ To upgrade cdist in the current branch use git pull # Also update the manpages - make man + ./build.sh man export MANPATH=$MANPATH:$(pwd -P)/doc/man If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break. From 7f2ca78b8238e037cab7fddf829cebb6172196f4 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 22:34:11 +0100 Subject: [PATCH 0119/5240] spell correction Signed-off-by: Nico Schottelius --- .../{cdist-best-practise.text => cdist-best-practice.text} | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) rename doc/man/{cdist-best-practise.text => cdist-best-practice.text} (96%) diff --git a/doc/man/cdist-best-practise.text b/doc/man/cdist-best-practice.text similarity index 96% rename from doc/man/cdist-best-practise.text rename to doc/man/cdist-best-practice.text index af06084e..febe8f36 100644 --- a/doc/man/cdist-best-practise.text +++ b/doc/man/cdist-best-practice.text @@ -1,10 +1,10 @@ -cdist-best-practise(7) +cdist-best-practice(7) ====================== Nico Schottelius NAME ---- -cdist-best-practise - Practises used in real environments +cdist-best-practice - Practices used in real environments PASSWORDLESS CONNECTIONS @@ -61,7 +61,6 @@ machine-b % git clone git://your-git-server/cdist -------------------------------------------------------------------------------- - SEE ALSO -------- - cdist(7) From a55eb6ebc97713a4b9f9f4aab45cf761f119ad14 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 22:54:17 +0100 Subject: [PATCH 0120/5240] correct mantype linking and finish spell check Signed-off-by: Nico Schottelius --- build.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 2c1570f5..4fc65b0d 100755 --- a/build.sh +++ b/build.sh @@ -41,6 +41,7 @@ case "$1" in man) set -e "$0" mandirs + "$0" mangen "$0" mantype "$0" man1 "$0" man7 @@ -61,7 +62,7 @@ case "$1" in ;; mantype) - for mansrc in ${MAN7TYPESRC}; do + for mansrc in conf/type/*/man.text; do dst="$(echo $mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;doc/man/man7/;')" ln -sf "../../../$mansrc" "$dst" done @@ -83,7 +84,7 @@ case "$1" in ;; man7) - for man in cdist.text cdist-best-practise.text cdist-hacker.text \ + for man in cdist.text cdist-best-practice.text cdist-hacker.text \ cdist-quickstart.text cdist-reference.text cdist-stages.text \ cdist-type.text do From 5ec1a6cc2d9f43b7b2cb7a65608a1d11ee7e08fb Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 23:06:30 +0100 Subject: [PATCH 0121/5240] rephrase cdist and add prominent example section Signed-off-by: Nico Schottelius --- doc/man/cdist.text | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/man/cdist.text b/doc/man/cdist.text index 44be52b1..a4c88c1d 100644 --- a/doc/man/cdist.text +++ b/doc/man/cdist.text @@ -10,8 +10,13 @@ cdist - Configuration management system DESCRIPTION ----------- -Cdist is a very simple, elegant, cleanly designed configuration management -system. The easiest way to get started with cdist is to run cdist-quickstart. +Cdist is a usable configuration management system. +The easiest way to get started with cdist is to initialise +the environment and run cdist-quickstart: + +-------------------------------------------------------------------------------- +eval `./bin/cdist-env` && cdist-quickstart +-------------------------------------------------------------------------------- Cdist configurations are written in the shell scripting language. The mapping of configurations to hosts is defined in so called manifests, From 8f88ed269198b83b101993355e9bd31d294e749c Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 23:17:35 +0100 Subject: [PATCH 0122/5240] template for cdist-cache Signed-off-by: Nico Schottelius --- bin/cdist-cache | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 bin/cdist-cache diff --git a/bin/cdist-cache b/bin/cdist-cache new file mode 100755 index 00000000..d4ea18bb --- /dev/null +++ b/bin/cdist-cache @@ -0,0 +1,56 @@ +#!/bin/sh +# +# 2010 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Let's build a cconfig tree from a configuration +# And save it into the cache tree +# + +. cdist-config +[ $# -eq 2 ] || __cdist_usage " " +set -u + +__cdist_target_host="$1"; shift +__cdist_manifest="$1"; shift + +################################################################################ +# Export information for cdist-type-emulator or manifest +# + +# Config dir should not get reset - FIXME: why did I do this? +export __cdist_conf_dir + +# Used to record the source in the object +export __cdist_manifest + +# Export information for manifests - __cdist_out_dir comes from cdist-config +export __global="$__cdist_out_dir" + +################################################################################ +# The actual run +# + +# Ensure binaries exist and are up-to-date +cdist-type-build-emulation "${__cdist_out_type_bin_dir}" \ + || __cdist_exit_err "Failed to build type emulation binaries" + +# prepend our path, so all cdist tools come before other tools +export PATH="${__cdist_out_type_bin_dir}:$PATH" + +__cdist_exec_fail_on_error "${__cdist_manifest}" From a9ce26f96858ec15fa88d3b26401bf1adc8ab10f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 23:35:11 +0100 Subject: [PATCH 0123/5240] integrate cdist-cache Signed-off-by: Nico Schottelius --- .gitignore | 9 ++------- bin/cdist-cache | 33 +++++++-------------------------- bin/cdist-config | 2 ++ bin/cdist-deploy-to | 1 + 4 files changed, 12 insertions(+), 33 deletions(-) diff --git a/.gitignore b/.gitignore index fdf9184f..68f829dc 100644 --- a/.gitignore +++ b/.gitignore @@ -2,13 +2,8 @@ .*.swp # Ignore generated manpages -doc/man/*.[1-9] doc/man/.marker doc/man/man*/ -doc/html - -conf/type/*/*.7 -conf/type/*/man.html - - +# Ignore cache for version control +cache/ diff --git a/bin/cdist-cache b/bin/cdist-cache index d4ea18bb..120b0df2 100755 --- a/bin/cdist-cache +++ b/bin/cdist-cache @@ -23,34 +23,15 @@ # . cdist-config -[ $# -eq 2 ] || __cdist_usage " " +[ $# -eq 1 ] || __cdist_usage "" set -u __cdist_target_host="$1"; shift -__cdist_manifest="$1"; shift -################################################################################ -# Export information for cdist-type-emulator or manifest -# +mkdir -p "${__cdist_local_base_cache_dir}" +__cdist_abs_cache_dir="$(cd "$__cdist_local_base_cache_dir" && pwd -P)" +__cdist_abs_ddir="$__cdist_abs_cache_dir/$__cdist_target_host" -# Config dir should not get reset - FIXME: why did I do this? -export __cdist_conf_dir - -# Used to record the source in the object -export __cdist_manifest - -# Export information for manifests - __cdist_out_dir comes from cdist-config -export __global="$__cdist_out_dir" - -################################################################################ -# The actual run -# - -# Ensure binaries exist and are up-to-date -cdist-type-build-emulation "${__cdist_out_type_bin_dir}" \ - || __cdist_exit_err "Failed to build type emulation binaries" - -# prepend our path, so all cdist tools come before other tools -export PATH="${__cdist_out_type_bin_dir}:$PATH" - -__cdist_exec_fail_on_error "${__cdist_manifest}" +echo "Saving cache to $__cdist_abs_ddir ..." +rm -rf "$__cdist_abs_ddir" +mv "$__cdist_local_base_dir" "$__cdist_abs_ddir" diff --git a/bin/cdist-config b/bin/cdist-config index 86039f00..ccab81cc 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -41,6 +41,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" # : ${__cdist_name_bin:=bin} +: ${__cdist_name_cache:=cache} : ${__cdist_name_code:=code} : ${__cdist_name_code_finished:=codedone} : ${__cdist_name_conf_dir:=conf} @@ -100,6 +101,7 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") # Local Base # : ${__cdist_local_base_dir:=$__cdist_tmp_dir} +: ${__cdist_local_base_cache_dir:=$__cdist_abs_mydir/../$__cdist_name_cache} : ${__cdist_conf_dir:="$(cd "$__cdist_abs_mydir/../conf" && pwd -P)"} diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index 9a2fd303..3a2c37c9 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -58,5 +58,6 @@ cdist-dir push "$__cdist_target_host" "$__cdist_out_object_dir" \ "${__cdist_remote_out_object_base_dir}" cdist-code-run-all "$__cdist_target_host" +cdist-cache "$__cdist_target_host" echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" From a11e9791650be176d0c270edf7d8dca9b58319d4 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 23:36:42 +0100 Subject: [PATCH 0124/5240] update todos Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 3556f371..ada791ca 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,8 +1,12 @@ Core: - support $__self = relative_type/object_id - - cache Cache: + - add manpage + - add example how to use + - export variable $__cache + -> to all hosts or this host? + Assume you want to configure stuff one host ("monitor node"), depending on the configuration of other hosts ("cluster nodes"). From 76725c1b0db5923069fdc5734c37551a2efa68a6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 23:43:23 +0100 Subject: [PATCH 0125/5240] begin to document cache Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 25 ++------------------- doc/man/cdist-cache.text | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 23 deletions(-) create mode 100644 doc/man/cdist-cache.text diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index ada791ca..6b0891a2 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,27 +1,6 @@ -Core: - - support $__self = relative_type/object_id - Cache: - - add manpage - add example how to use - export variable $__cache -> to all hosts or this host? - - Assume you want to configure stuff one host ("monitor node"), - depending on the configuration of other hosts ("cluster nodes"). - - For instance, the monitor host would like to know, - which hosts are configured with the provider - "apache" and option --start true. - - This requires the monitor node to be able to - query all other configured nodes. It can't - ask for all hosts, because cdist does not - know which hosts are configured or may exist. - - Example implementation - - If cdist keeps ("caches") the configuration of every - node it configures, each new node can query the - cache for existing nodes that acquired the given - configuration. +Core: + - support $__self = relative_type/object_id diff --git a/doc/man/cdist-cache.text b/doc/man/cdist-cache.text new file mode 100644 index 00000000..cbf4c9d7 --- /dev/null +++ b/doc/man/cdist-cache.text @@ -0,0 +1,47 @@ +cdist-cache(1) +============== +Nico Schottelius + + +NAME +---- +cdist-cache - Cache output of last run + + +SYNOPSIS +-------- +cdist-cache TARGET_HOST + + +DESCRIPTION +----------- + + Assume you want to configure stuff one host ("monitor node"), + depending on the configuration of other hosts ("cluster nodes"). + + For instance, the monitor host would like to know, + which hosts are configured with the provider + "apache" and option --start true. + + This requires the monitor node to be able to + query all other configured nodes. It can't + ask for all hosts, because cdist does not + know which hosts are configured or may exist. + + Example implementation + + If cdist keeps ("caches") the configuration of every + node it configures, each new node can query the + cache for existing nodes that acquired the given + configuration. + + +SEE ALSO +-------- +cdist(7) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From 652c0c1615d9b73eee55cdeb2445be1a179db871 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 23:52:13 +0100 Subject: [PATCH 0126/5240] document stuff for next release Signed-off-by: Nico Schottelius --- build.sh | 2 +- doc/changelog | 4 +++- doc/man/cdist-cache.text | 22 +++------------------- 3 files changed, 7 insertions(+), 21 deletions(-) diff --git a/build.sh b/build.sh index 4fc65b0d..b91db496 100755 --- a/build.sh +++ b/build.sh @@ -86,7 +86,7 @@ case "$1" in man7) for man in cdist.text cdist-best-practice.text cdist-hacker.text \ cdist-quickstart.text cdist-reference.text cdist-stages.text \ - cdist-type.text + cdist-type.text cdist-cache.text do ln -sf ../$man ${MAN7DSTDIR} done diff --git a/doc/changelog b/doc/changelog index 5cfae26f..93d0f7e4 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,3 +1,6 @@ +1.5.0: + * Add cache functionality + 1.4.1: 2011-03-25 * New type __key_value (Steven Armstrong) * New type __apt_ppa (Steven Armstrong) @@ -41,7 +44,6 @@ * Document cdist-object-gencode-all * Document cdist-manifest-run - 1.1.0: 2011-03-16 * Replace type __file with __file, __directory, __link * Document cdist-env diff --git a/doc/man/cdist-cache.text b/doc/man/cdist-cache.text index cbf4c9d7..54619199 100644 --- a/doc/man/cdist-cache.text +++ b/doc/man/cdist-cache.text @@ -15,25 +15,9 @@ cdist-cache TARGET_HOST DESCRIPTION ----------- - - Assume you want to configure stuff one host ("monitor node"), - depending on the configuration of other hosts ("cluster nodes"). - - For instance, the monitor host would like to know, - which hosts are configured with the provider - "apache" and option --start true. - - This requires the monitor node to be able to - query all other configured nodes. It can't - ask for all hosts, because cdist does not - know which hosts are configured or may exist. - - Example implementation - - If cdist keeps ("caches") the configuration of every - node it configures, each new node can query the - cache for existing nodes that acquired the given - configuration. +cdist-cache moves away the objects created during last run so the +next run can use the previous information and compare them with +the current status. SEE ALSO From 38a9c5d60fb492945aeb6b2ddf7f8466d991f40f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 25 Mar 2011 23:53:38 +0100 Subject: [PATCH 0127/5240] ++todo Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 6b0891a2..05a44503 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,6 +1,9 @@ Cache: - add example how to use - export variable $__cache - -> to all hosts or this host? + -> for current host + -> add function to cdist-config, import from cdist-cache + + Core: - support $__self = relative_type/object_id From 2a0cba4e4b37ed115accd5ce24cefc9a24cc9f7d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 26 Mar 2011 00:07:23 +0100 Subject: [PATCH 0128/5240] rephrase features Signed-off-by: Nico Schottelius --- README | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/README b/README index 48b934f1..c498e3b8 100644 --- a/README +++ b/README @@ -52,22 +52,28 @@ You can [browse the documentation for the latest version online](man) as well. ### Features -Stuff that should probably be included in every configuration management, -but is not. Or: Why I began to write cdist: - - * Speed - * Elegant code - * Clean design + * Elegant code and clean design + * Type and core cleanly seperated + * Small codebase in core * Good documentation (man pages) - * Meaningful error messages - * The no surprise factor * Consistency in behaviour, naming and documentation + * Meaningful error messages + * Either standard error messages from tools or added description for clearification + * The no surprise factor + * No magic guessing of what the user wants + * Simple and well-known DSL + * Posix shell * Easy integration into bare metal installations - * Simple and well-known DSL: posix shell - * It must be very easy to extend and debug cdist - * Focus on reuse of existing functionality (like sh, ssh, find, rm, ...) - * Easy upgrade: ***There is no need to update cdist on target hosts!*** - * cdist only needs to be update on the master server + * requires only ssh + sh + * Easy upgrade + * ***There is no need to update cdist on target hosts!*** + * cdist only needs to be updated on the master server(s) + * Very easy to extend + * Can be done via types, which can be stacked on top of others + * Reuse of existing functionality + * sh, ssh, find, rm, mv, ... + * Very easy to debug + * Just add set -x in the scripts ### OS support From 086e47a636c765835f132735d319da9141f34696 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 00:23:59 +0100 Subject: [PATCH 0129/5240] extract code to transfer type explorers into its own executable Signed-off-by: Steven Armstrong --- bin/cdist-type-explorer-push | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 bin/cdist-type-explorer-push diff --git a/bin/cdist-type-explorer-push b/bin/cdist-type-explorer-push new file mode 100755 index 00000000..7ba412ca --- /dev/null +++ b/bin/cdist-type-explorer-push @@ -0,0 +1,40 @@ +#!/bin/sh +# +# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Push the given types explorers to the target host +# + +. cdist-config +[ $# -eq 2 ] || __cdist_usage " " + +set -eu + +__cdist_target_host="$1"; shift +__cdist_type="$1"; shift + +src_dir="$(__cdist_type_explorer_dir "$__cdist_type")" +dst_dir="$(__cdist_remote_type_explorer_dir "$__cdist_type")" + +if [ -d "$src_dir" ]; then + echo "Transfering explorers for $__cdist_type ..." + cdist-dir push "$__cdist_target_host" "$src_dir" "$dst_dir" +fi + From 92005e25670206302ae87d1b3da561f0911aa176 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 00:24:35 +0100 Subject: [PATCH 0130/5240] extract code to run an objects explorers into its own executable Signed-off-by: Steven Armstrong --- bin/cdist-object-explorer-run | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 bin/cdist-object-explorer-run diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run new file mode 100755 index 00000000..e349a490 --- /dev/null +++ b/bin/cdist-object-explorer-run @@ -0,0 +1,61 @@ +#!/bin/sh +# +# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Run the explorers for the given object on the target host. +# + +. cdist-config +[ $# -eq 2 ] || __cdist_usage " " + +set -eu + +__cdist_target_host="$1"; shift +__object="$1"; shift + +__object_id="$(__cdist_object_id_from_object "$__object")" +__cdist_type="$(__cdist_type_from_object "$__object")" + +# Check if type of object has >= 1 explorer +has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" + +# If so, run explorers on remote side +if [ "$has_explorer" ]; then + echo "Running explorers for $__object ..." + # Copy object parameters + cdist-dir push "$__cdist_target_host" \ + "$(__cdist_object_parameter_dir "$__object")" \ + "$(__cdist_remote_object_parameter_dir "$__object")" + + # Execute explorers + cdist-run-remote "$__cdist_target_host" \ + "__object=\"$(__cdist_remote_object_dir "$__object")\"" \ + "__object_id=\"$__object_id\"" \ + cdist-remote-explorer-run \ + "$__cdist_name_var_type_explorer" \ + "$(__cdist_remote_type_explorer_dir "$__cdist_type")" \ + "$(__cdist_remote_object_type_explorer_dir "$__object")" + + # Copy back results + cdist-dir pull "$__cdist_target_host" \ + "$(__cdist_remote_object_type_explorer_dir "$__object")" \ + "$(__cdist_object_type_explorer_dir "$__object")" +fi + From f7d20c002cd8f2d34ebdf3296a6e70d473ca885e Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 00:25:46 +0100 Subject: [PATCH 0131/5240] introduce new executable to process objects Signed-off-by: Steven Armstrong --- bin/cdist-object-run-all | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 bin/cdist-object-run-all diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all new file mode 100755 index 00000000..1dfef04f --- /dev/null +++ b/bin/cdist-object-run-all @@ -0,0 +1,61 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# For each created object: +# - run type explorers +# - generate code +# - copy object to target +# - execute code on target +# + +. cdist-config +[ $# -eq 1 ] || __cdist_usage "" +set -eu + +__cdist_target_host="$1"; shift + +object_listing="$__cdist_tmp_dir/objects" +type_listing_all="$__cdist_tmp_dir/types_all" +type_listing="$__cdist_tmp_dir/types" +types_pushed="$__cdist_tmp_dir/types_pushed" +touch "$types_pushed" + + +# Get listing of objects +__cdist_object_list "$__cdist_out_object_dir" > "$object_listing" + + +while read object; do + __cdist_type="$(__cdist_type_from_object "$object")" + if __cdist_type_has_explorer "$__cdist_type"; then + # Transfer the type explorers + if ! grep -q "$__cdist_type" "$types_pushed"; then + cdist-type-explorer-push "$__cdist_target_host" "$__cdist_type" + echo "$__cdist_type" >> "$types_pushed" + fi + + # Run the type explorers for the current object + cdist-object-explorer-run "$__cdist_target_host" "$object" + + fi + +done < "$object_listing" + From b740a4b934dc719f9a4f6a2cca4dd8c21d211c95 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 00:26:12 +0100 Subject: [PATCH 0132/5240] use new workflow Signed-off-by: Steven Armstrong --- bin/cdist-deploy-to | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index 7a63f5ca..29c3a847 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -52,6 +52,9 @@ cdist-manifest-run-init "$__cdist_target_host" cdist-manifest-run-all "$__cdist_target_host" # Change workflow here: cdist-object-{apply, run, foo} +cdist-object-run-all "$__cdist_target_host" +exit + cdist-object-explorer-all "$__cdist_target_host" cdist-object-gencode-all "$__cdist_target_host" From 31a0b6c3d0b202f6624f236c122d27a93b9ce3e7 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 01:43:55 +0100 Subject: [PATCH 0133/5240] fixed inconsistencies between local and remote variable naming - /__cdist_remote_out_object_base_dir/__cdist_remote_out_object_dir/ - __cdist_remote_object_dir += __cdist_name_dot_cdist Signed-off-by: Steven Armstrong --- bin/cdist-code-run-all | 2 +- bin/cdist-config | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/bin/cdist-code-run-all b/bin/cdist-code-run-all index 1486cc46..6f5aeb92 100755 --- a/bin/cdist-code-run-all +++ b/bin/cdist-code-run-all @@ -44,7 +44,7 @@ while [ $# -ge 1 ]; do # Code remote cdist-run-remote "$__cdist_target_host" \ - "export __cdist_out_object_dir=\"$__cdist_remote_out_object_base_dir\";" \ + "export __cdist_out_object_dir=\"$__cdist_remote_out_object_dir\";" \ "cdist-code-run" "$object" "${__cdist_name_gencode_remote}" \ || __cdist_exit_err "Remote code failed for $object" done < "$__cdist_tmp_file" diff --git a/bin/cdist-config b/bin/cdist-config index 86039f00..26139819 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -131,7 +131,7 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") # : ${__cdist_remote_out_dir:=$__cdist_remote_base_dir/$__cdist_name_out_dir} : ${__cdist_remote_out_explorer_dir:=$__cdist_remote_out_dir/$__cdist_name_explorer} -: ${__cdist_remote_out_object_base_dir:=$__cdist_remote_out_dir/$__cdist_name_object} +: ${__cdist_remote_out_object_dir:=$__cdist_remote_out_dir/$__cdist_name_object} ################################################################################ # Internal functions @@ -254,9 +254,14 @@ __cdist_object_type_explorer_dir() # Remote # +__cdist_remote_object_base_dir() +{ + echo "${__cdist_remote_out_object_dir}/$1" +} + __cdist_remote_object_dir() { - echo "${__cdist_remote_out_object_base_dir}/$1" + echo "$(__cdist_remote_object_base_dir "$1")/${__cdist_name_dot_cdist}" } __cdist_remote_object_parameter_dir() From 14ece853df0a5daf6ee1dd7ec5da06b8596988ac Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 01:46:02 +0100 Subject: [PATCH 0134/5240] trust nico when he says: SSH DESTROYS WHILE READ LOOP Signed-off-by: Steven Armstrong --- bin/cdist-object-run-all | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index 1dfef04f..a6e5790d 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -43,9 +43,21 @@ touch "$types_pushed" __cdist_object_list "$__cdist_out_object_dir" > "$object_listing" +# NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP while read object; do + set -- "$@" "$object" +done < "$object_listing" + +while [ $# -gt 0 ]; do + object="$1"; shift + __cdist_type="$(__cdist_type_from_object "$object")" - if __cdist_type_has_explorer "$__cdist_type"; then + + # Check if type of object has >= 1 explorer + has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" + + # If so, run explorers on remote side + if [ "$has_explorer" ]; then # Transfer the type explorers if ! grep -q "$__cdist_type" "$types_pushed"; then cdist-type-explorer-push "$__cdist_target_host" "$__cdist_type" @@ -57,5 +69,14 @@ while read object; do fi -done < "$object_listing" + # Run the gencode scripts for the current object + cdist-object-gencode-run "$__cdist_target_host" "$object" + + # Transfer the current object to the target + cdist-object-push "$__cdist_target_host" "$object" + + # Run the code for the current object + cdist-object-code-run "$__cdist_target_host" "$object" + +done From e8d656556cb15f7f8f975415ae3b75e5f1494968 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 01:46:53 +0100 Subject: [PATCH 0135/5240] /__cdist_remote_out_object_base_dir/__cdist_remote_out_object_dir/ Signed-off-by: Steven Armstrong --- bin/cdist-deploy-to | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index 29c3a847..db26a988 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -51,6 +51,7 @@ cdist-explorer-run-global "$__cdist_target_host" cdist-manifest-run-init "$__cdist_target_host" cdist-manifest-run-all "$__cdist_target_host" + # Change workflow here: cdist-object-{apply, run, foo} cdist-object-run-all "$__cdist_target_host" exit @@ -60,7 +61,7 @@ cdist-object-gencode-all "$__cdist_target_host" echo "Transferring objects to $__cdist_target_host ..." cdist-dir push "$__cdist_target_host" "$__cdist_out_object_dir" \ - "${__cdist_remote_out_object_base_dir}" + "${__cdist_remote_out_object_dir}" cdist-code-run-all "$__cdist_target_host" From 31842564d37374e844a56d2bc3f5629dfc8d2a18 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 01:47:51 +0100 Subject: [PATCH 0136/5240] extract code to run gencode scripts into its own executable Signed-off-by: Steven Armstrong --- bin/cdist-object-gencode-run | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 bin/cdist-object-gencode-run diff --git a/bin/cdist-object-gencode-run b/bin/cdist-object-gencode-run new file mode 100755 index 00000000..76ce6953 --- /dev/null +++ b/bin/cdist-object-gencode-run @@ -0,0 +1,44 @@ +#!/bin/sh +# +# 2010 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# For the given object create the code to be executed on the target. +# + +. cdist-config +[ $# -eq 2 ] || __cdist_usage " " +set -eu + +__cdist_target_host="$1"; shift +__cdist_object="$1"; shift + +code_local="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_local}" +code_remote="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_remote}" + +echo "Generating local code for $__cdist_object ..." +cdist-object-gencode "$__cdist_target_host" "$__cdist_object" \ + "${__cdist_name_gencode_local}" > "${code_local}" + +echo "Generating remote code for $__cdist_object ..." +cdist-object-gencode "$__cdist_target_host" "$__cdist_object" \ + "${__cdist_name_gencode_remote}" > "${code_remote}" + +chmod u+x "${code_local}" "${code_remote}" + From 4c6f115a434eaf9e33ec1b305179b306f53d0edd Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 01:48:19 +0100 Subject: [PATCH 0137/5240] extract code to execute gencode-generated scripts into its own executable Signed-off-by: Steven Armstrong --- bin/cdist-object-code-run | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 bin/cdist-object-code-run diff --git a/bin/cdist-object-code-run b/bin/cdist-object-code-run new file mode 100755 index 00000000..b75f6f46 --- /dev/null +++ b/bin/cdist-object-code-run @@ -0,0 +1,42 @@ +#!/bin/sh +# +# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Exec the code for the given object locally and remote +# + +. cdist-config +[ $# -eq 2 ] || __cdist_usage " " +set -e + +__cdist_target_host="$1"; shift +__cdist_object="$1"; shift + +# Code local +export __cdist_out_object_dir="$__cdist_out_object_dir" +cdist-code-run "$__cdist_object" "${__cdist_name_gencode_local}" \ + || __cdist_exit_err "Local code failed for $__cdist_object" + +# Code remote +cdist-run-remote "$__cdist_target_host" \ + "export __cdist_out_object_dir=\"$__cdist_remote_out_object_dir\";" \ + "cdist-code-run" "$__cdist_object" "${__cdist_name_gencode_remote}" \ + || __cdist_exit_err "Remote code failed for $__cdist_object" + From 0dab5b5f7e80a69c4a39e708e22c6920d4095713 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 01:48:44 +0100 Subject: [PATCH 0138/5240] extract code to transfer objects into its own executable Signed-off-by: Steven Armstrong --- bin/cdist-object-push | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 bin/cdist-object-push diff --git a/bin/cdist-object-push b/bin/cdist-object-push new file mode 100755 index 00000000..9c44d14e --- /dev/null +++ b/bin/cdist-object-push @@ -0,0 +1,37 @@ +#!/bin/sh +# +# 2010 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Transfer the given object to the target host. +# + +. cdist-config +[ $# -eq 2 ] || __cdist_usage " " +set -eu + +__cdist_target_host="$1"; shift +__cdist_object="$1"; shift + + +echo "Transferring object $__cdist_object to target host ..." +cdist-dir push "$__cdist_target_host" \ + "$(__cdist_object_dir "$__cdist_object")" \ + "$(__cdist_remote_object_dir "$__cdist_object")" + From 2c710186996f40b2e7ef1182ddd176897d3abdb2 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 01:52:15 +0100 Subject: [PATCH 0139/5240] migrate to new workflow Signed-off-by: Steven Armstrong --- bin/cdist-code-run-all | 50 ----------------- bin/cdist-deploy-to | 15 ----- bin/cdist-object-explorer-all | 102 ---------------------------------- bin/cdist-object-gencode-all | 45 --------------- 4 files changed, 212 deletions(-) delete mode 100755 bin/cdist-code-run-all delete mode 100755 bin/cdist-object-explorer-all delete mode 100755 bin/cdist-object-gencode-all diff --git a/bin/cdist-code-run-all b/bin/cdist-code-run-all deleted file mode 100755 index 6f5aeb92..00000000 --- a/bin/cdist-code-run-all +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -# -# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Exec code locally and remote -# - -. cdist-config -[ $# -eq 1 ] || __cdist_usage "" -set -e - -__cdist_target_host="$1"; shift - -__cdist_object_list "$__cdist_out_object_dir" > "$__cdist_tmp_file" - -# NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP -while read object; do - set -- "$@" "$object" -done < "$__cdist_tmp_file" - -while [ $# -ge 1 ]; do - object="$1"; shift - - # Code local - export __cdist_out_object_dir="$__cdist_out_object_dir" - cdist-code-run "$object" "${__cdist_name_gencode_local}" \ - || __cdist_exit_err "Local code failed for $object" - - # Code remote - cdist-run-remote "$__cdist_target_host" \ - "export __cdist_out_object_dir=\"$__cdist_remote_out_object_dir\";" \ - "cdist-code-run" "$object" "${__cdist_name_gencode_remote}" \ - || __cdist_exit_err "Remote code failed for $object" -done < "$__cdist_tmp_file" diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index db26a988..96b65e8b 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -50,21 +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" - - -# Change workflow here: cdist-object-{apply, run, foo} cdist-object-run-all "$__cdist_target_host" -exit - -cdist-object-explorer-all "$__cdist_target_host" -cdist-object-gencode-all "$__cdist_target_host" - -echo "Transferring objects to $__cdist_target_host ..." -cdist-dir push "$__cdist_target_host" "$__cdist_out_object_dir" \ - "${__cdist_remote_out_object_dir}" - -cdist-code-run-all "$__cdist_target_host" - -# Stop change here echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" diff --git a/bin/cdist-object-explorer-all b/bin/cdist-object-explorer-all deleted file mode 100755 index 692a79bb..00000000 --- a/bin/cdist-object-explorer-all +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/sh -# -# 2011 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# For each created object check the explorers and run them if needed. -# - -. cdist-config -[ $# -eq 1 ] || __cdist_usage "" -set -eu - -__cdist_target_host="$1"; shift - -object_listing="$__cdist_tmp_dir/objects" -type_listing_all="$__cdist_tmp_dir/types_all" -type_listing="$__cdist_tmp_dir/types" - -# Get listing of objects -__cdist_object_list "$__cdist_out_object_dir" > "$object_listing" - -# Get listing of types used -while read object; do - echo "$(__cdist_type_from_object "$object")" >> "$type_listing_all" -done < "$object_listing" -sort "$type_listing_all" | uniq > "$type_listing" - -# Create pseudo array to avoid issues with ssh -tc=0 -while read type; do - eval type_$tc=\"\$type\" - tc=$((tc+1)) -done < "$type_listing" - -# For every type that has explorers, Transfer the explorers -i=0 -while [ "$i" -lt "$tc" ]; do - eval cur_type=\"\$type_$i\" - - src_dir="$(__cdist_type_explorer_dir "$cur_type")" - dst_dir="$(__cdist_remote_type_explorer_dir "$cur_type")" - - if [ -d "$src_dir" ]; then - cdist-dir push "$__cdist_target_host" "$src_dir" "$dst_dir" - fi - i=$((i+1)) -done - -################################################################################ -# Explorer execution per object -# -# need to create pseudo array, as ssh in cdist-explorer-run will destroy while-read loops -while read object; do - set -- "$@" "$object" -done < "$object_listing" - -while [ $# -gt 0 ]; do - __object="$1"; shift - __object_id="$(__cdist_object_id_from_object "$__object")" - __cdist_type="$(__cdist_type_from_object "$__object")" - - # Check if type of object has >= 1 explorer - has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" - - # If so, run explorers on remote side - if [ "$has_explorer" ]; then - echo "Running explorers for $__object ..." - # Copy object parameters - cdist-dir push "$__cdist_target_host" \ - "$(__cdist_object_parameter_dir "$__object")" \ - "$(__cdist_remote_object_parameter_dir "$__object")" - - # Execute explorers - cdist-run-remote "$__cdist_target_host" \ - "__object=\"$(__cdist_remote_object_dir "$__object")\"" \ - "__object_id=\"$__object_id\"" \ - cdist-remote-explorer-run \ - "$__cdist_name_var_type_explorer" \ - "$(__cdist_remote_type_explorer_dir "$__cdist_type")" \ - "$(__cdist_remote_object_type_explorer_dir "$__object")" - - # Copy back results - cdist-dir pull "$__cdist_target_host" \ - "$(__cdist_remote_object_type_explorer_dir "$__object")" \ - "$(__cdist_object_type_explorer_dir "$__object")" - fi -done diff --git a/bin/cdist-object-gencode-all b/bin/cdist-object-gencode-all deleted file mode 100755 index 00ac1664..00000000 --- a/bin/cdist-object-gencode-all +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -# -# 2010 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# For each created object create the code to be executed on the target. -# - -. cdist-config -[ $# -eq 1 ] || __cdist_usage "" -set -eu - -__cdist_target_host="$1"; shift - -__cdist_object_list "$__cdist_out_object_dir" > "$__cdist_tmp_file" - -while read object; do - code_local="$(__cdist_object_code "$object")-${__cdist_name_gencode_local}" - code_remote="$(__cdist_object_code "$object")-${__cdist_name_gencode_remote}" - - echo "Generating local code for $object ..." - cdist-object-gencode "$__cdist_target_host" "$object" \ - "${__cdist_name_gencode_local}" > "${code_local}" - - echo "Generating remote code for $object ..." - cdist-object-gencode "$__cdist_target_host" "$object" \ - "${__cdist_name_gencode_remote}" > "${code_remote}" - - chmod u+x "${code_local}" "${code_remote}" -done < "$__cdist_tmp_file" From 4e2d063911587fda08d703c6fc74b28b112c42b3 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 01:53:03 +0100 Subject: [PATCH 0140/5240] cleanup: remove unused variables Signed-off-by: Steven Armstrong --- bin/cdist-object-run-all | 2 -- 1 file changed, 2 deletions(-) diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index a6e5790d..67c69154 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -33,8 +33,6 @@ set -eu __cdist_target_host="$1"; shift object_listing="$__cdist_tmp_dir/objects" -type_listing_all="$__cdist_tmp_dir/types_all" -type_listing="$__cdist_tmp_dir/types" types_pushed="$__cdist_tmp_dir/types_pushed" touch "$types_pushed" From 216ea21933903be61e1fa0f4e19fb1848aca1f4f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 26 Mar 2011 18:44:31 +0100 Subject: [PATCH 0141/5240] a lot of more stuff in 1.5.0 :-) Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 93d0f7e4..a99a0c3d 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,5 +1,6 @@ 1.5.0: * Add cache functionality + * Restructured execution: Run whole object at once (REPHRASE) 1.4.1: 2011-03-25 * New type __key_value (Steven Armstrong) From 74266df8aa3e9fa1fe16c8b18bd21124c88ff889 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 26 Mar 2011 18:46:58 +0100 Subject: [PATCH 0142/5240] rereformulate Signed-off-by: Nico Schottelius --- doc/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/changelog b/doc/changelog index a99a0c3d..b5908a36 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,6 +1,6 @@ 1.5.0: * Add cache functionality - * Restructured execution: Run whole object at once (REPHRASE) + * Restructured execution: Run whole object at once (REPHRASE) (Steven Armstrong) 1.4.1: 2011-03-25 * New type __key_value (Steven Armstrong) From bdf3e4b86e752909575744b28b1e15a83b0f5479 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Sat, 26 Mar 2011 22:09:19 +0100 Subject: [PATCH 0143/5240] prefix all variables with __cdist_ Signed-off-by: Steven Armstrong --- bin/cdist-object-run-all | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index 67c69154..14a6d9b3 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -32,49 +32,49 @@ set -eu __cdist_target_host="$1"; shift -object_listing="$__cdist_tmp_dir/objects" -types_pushed="$__cdist_tmp_dir/types_pushed" -touch "$types_pushed" +__cdist_objects="$__cdist_tmp_dir/objects" +__cdist_types_pushed="$__cdist_tmp_dir/types_pushed" +touch "$__cdist_types_pushed" # Get listing of objects -__cdist_object_list "$__cdist_out_object_dir" > "$object_listing" +__cdist_object_list "$__cdist_out_object_dir" > "$__cdist_objects" # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP -while read object; do - set -- "$@" "$object" -done < "$object_listing" +while read __cdist_object; do + set -- "$@" "$__cdist_object" +done < "$__cdist_objects" while [ $# -gt 0 ]; do - object="$1"; shift + __cdist_object="$1"; shift - __cdist_type="$(__cdist_type_from_object "$object")" + __cdist_type="$(__cdist_type_from_object "$__cdist_object")" # Check if type of object has >= 1 explorer - has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" + __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" # If so, run explorers on remote side - if [ "$has_explorer" ]; then + if [ "$__cdist_has_explorer" ]; then # Transfer the type explorers - if ! grep -q "$__cdist_type" "$types_pushed"; then + if ! grep -q "$__cdist_type" "$__cdist_types_pushed"; then cdist-type-explorer-push "$__cdist_target_host" "$__cdist_type" - echo "$__cdist_type" >> "$types_pushed" + echo "$__cdist_type" >> "$__cdist_types_pushed" fi # Run the type explorers for the current object - cdist-object-explorer-run "$__cdist_target_host" "$object" + cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" fi # Run the gencode scripts for the current object - cdist-object-gencode-run "$__cdist_target_host" "$object" + cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" # Transfer the current object to the target - cdist-object-push "$__cdist_target_host" "$object" + cdist-object-push "$__cdist_target_host" "$__cdist_object" # Run the code for the current object - cdist-object-code-run "$__cdist_target_host" "$object" + cdist-object-code-run "$__cdist_target_host" "$__cdist_object" done From 0a14aa080ce9d88366f691d8b521772b9e81f0c2 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 26 Mar 2011 23:04:06 +0100 Subject: [PATCH 0144/5240] prepare version change Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index ccab81cc..991d23bb 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -19,7 +19,7 @@ # # -__cdist_version="1.4.1" +__cdist_version="1.5.0pre" # Fail if something bogus is going on set -u From 4ba452874a666b6b2d774eee1eeb3b39d22df723 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 26 Mar 2011 23:45:41 +0100 Subject: [PATCH 0145/5240] add template for fancy idea __process Signed-off-by: Nico Schottelius --- conf/type/__process/explorer/cksum | 34 ++++++++++++++ conf/type/__process/explorer/exists | 30 +++++++++++++ conf/type/__process/gencode-local | 44 +++++++++++++++++++ conf/type/__process/gencode-remote | 46 +++++++++++++++++++ conf/type/__process/man.text | 61 ++++++++++++++++++++++++++ conf/type/__process/parameter/optional | 4 ++ 6 files changed, 219 insertions(+) create mode 100755 conf/type/__process/explorer/cksum create mode 100755 conf/type/__process/explorer/exists create mode 100755 conf/type/__process/gencode-local create mode 100755 conf/type/__process/gencode-remote create mode 100644 conf/type/__process/man.text create mode 100644 conf/type/__process/parameter/optional diff --git a/conf/type/__process/explorer/cksum b/conf/type/__process/explorer/cksum new file mode 100755 index 00000000..dcad99ba --- /dev/null +++ b/conf/type/__process/explorer/cksum @@ -0,0 +1,34 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Retrieve the md5sum of a file to be created, if it is already existing. +# + +destination="/$__object_id" + +if [ -e "$destination" ]; then + if [ -f "$destination" ]; then + cksum < "$destination" + else + echo "NO REGULAR FILE" + fi +else + echo "NO FILE FOUND, NO CHECKSUM CALCULATED." +fi diff --git a/conf/type/__process/explorer/exists b/conf/type/__process/explorer/exists new file mode 100755 index 00000000..f8b85671 --- /dev/null +++ b/conf/type/__process/explorer/exists @@ -0,0 +1,30 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Check whether file exists or not +# + +destination="/$__object_id" + +if [ -e "$destination" ]; then + echo yes +else + echo no +fi diff --git a/conf/type/__process/gencode-local b/conf/type/__process/gencode-local new file mode 100755 index 00000000..1168919e --- /dev/null +++ b/conf/type/__process/gencode-local @@ -0,0 +1,44 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# __file is a very basic type, which will probably be reused quite often +# + +destination="/$__object_id" + +if [ -f "$__object/parameter/source" ]; then + source="$(cat "$__object/parameter/source")" + + if [ -f "$source" ]; then + local_cksum="$(cksum < "$source")" + remote_cksum="$(cat "$__object/explorer/cksum")" + + if [ "$local_cksum" != "$remote_cksum" ]; then + # FIXME: The username is ugly and hardcoded, replace after 1.0! + # Probably a better aproach is to have the user configured + # ~/.ssh/config to contain the right username + # Probably describe it in cdist-quickstart... + echo scp "$source" "root@${__target_host}:${destination}" + fi + else + echo "Source \"$source\" does not exist." >&2 + exit 1 + fi +fi diff --git a/conf/type/__process/gencode-remote b/conf/type/__process/gencode-remote new file mode 100755 index 00000000..7c5cf7ce --- /dev/null +++ b/conf/type/__process/gencode-remote @@ -0,0 +1,46 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# __file is a very basic type, which will probably be reused quite often +# + +destination="/$__object_id" + +# No source? Create empty file +if [ ! -f "$__object/parameter/source" ]; then + if [ no = "$(cat "$__object/explorer/exists")" ]; then + echo touch \"$destination\" + fi +fi + +# Mode settings +if [ -f "$__object/parameter/mode" ]; then + echo chmod \"$(cat "$__object/parameter/mode")\" \"$destination\" +fi + +# Group +if [ -f "$__object/parameter/group" ]; then + echo chgrp \"$(cat "$__object/parameter/group")\" \"$destination\" +fi + +# Owner +if [ -f "$__object/parameter/owner" ]; then + echo chown \"$(cat "$__object/parameter/owner")\" \"$destination\" +fi diff --git a/conf/type/__process/man.text b/conf/type/__process/man.text new file mode 100644 index 00000000..67ab53d1 --- /dev/null +++ b/conf/type/__process/man.text @@ -0,0 +1,61 @@ +cdist-type__file(7) +=================== +Nico Schottelius + + +NAME +---- +cdist-type__file - Create files + + +DESCRIPTION +----------- +This cdist type allows you to create files on the target. + + +REQUIRED PARAMETERS +------------------- +None. + + +OPTIONAL PARAMETERS +------------------- +group:: + Group to chgrp to. + +mode:: + Unix permissions, suitable for chmod. + +owner:: + User to chown to. + +source:: + If supplied, copy this file from the host running cdist to the target. + If not supplied, an empty file or directory will be created. + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Create /etc/cdist-configured as an empty file +__file /etc/cdist-configured + +# Use __file from another type +__file /etc/issue --source "$__type/files/archlinux" + +# Supply some more settings +__file /etc/shadow --source "$__type/files/shadow" \ + --owner root --group shadow --mode 0640 +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__process/parameter/optional b/conf/type/__process/parameter/optional new file mode 100644 index 00000000..06120518 --- /dev/null +++ b/conf/type/__process/parameter/optional @@ -0,0 +1,4 @@ +group +mode +owner +source From 6c6ece859bb035429a67446dd41bf183d0a93370 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 26 Mar 2011 23:51:45 +0100 Subject: [PATCH 0146/5240] update documentation for __process Signed-off-by: Nico Schottelius --- conf/type/__process/man.text | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/conf/type/__process/man.text b/conf/type/__process/man.text index 67ab53d1..2273f6f9 100644 --- a/conf/type/__process/man.text +++ b/conf/type/__process/man.text @@ -1,52 +1,33 @@ -cdist-type__file(7) -=================== +cdist-type__process(7) +====================== Nico Schottelius NAME ---- -cdist-type__file - Create files +cdist-type__process - Start or stop process DESCRIPTION ----------- -This cdist type allows you to create files on the target. +This cdist type allows you to define the state of a process. REQUIRED PARAMETERS ------------------- -None. +state:: + State of the process: Either stopped or running. OPTIONAL PARAMETERS ------------------- -group:: - Group to chgrp to. - -mode:: - Unix permissions, suitable for chmod. - -owner:: - User to chown to. - -source:: - If supplied, copy this file from the host running cdist to the target. - If not supplied, an empty file or directory will be created. - +None EXAMPLES -------- -------------------------------------------------------------------------------- -# Create /etc/cdist-configured as an empty file -__file /etc/cdist-configured - -# Use __file from another type -__file /etc/issue --source "$__type/files/archlinux" - -# Supply some more settings -__file /etc/shadow --source "$__type/files/shadow" \ - --owner root --group shadow --mode 0640 +__process /usr/sbin/sshd --state running --start "/etc/rc.d/sshd start" -------------------------------------------------------------------------------- From 06fe371b1df80492b300093b7db77ee47ad7dc39 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 26 Mar 2011 23:56:17 +0100 Subject: [PATCH 0147/5240] create type explorer "runs" Signed-off-by: Nico Schottelius --- conf/type/__process/explorer/cksum | 34 ------------------- conf/type/__process/explorer/{exists => runs} | 10 ++---- 2 files changed, 3 insertions(+), 41 deletions(-) delete mode 100755 conf/type/__process/explorer/cksum rename conf/type/__process/explorer/{exists => runs} (85%) diff --git a/conf/type/__process/explorer/cksum b/conf/type/__process/explorer/cksum deleted file mode 100755 index dcad99ba..00000000 --- a/conf/type/__process/explorer/cksum +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# -# 2011 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Retrieve the md5sum of a file to be created, if it is already existing. -# - -destination="/$__object_id" - -if [ -e "$destination" ]; then - if [ -f "$destination" ]; then - cksum < "$destination" - else - echo "NO REGULAR FILE" - fi -else - echo "NO FILE FOUND, NO CHECKSUM CALCULATED." -fi diff --git a/conf/type/__process/explorer/exists b/conf/type/__process/explorer/runs similarity index 85% rename from conf/type/__process/explorer/exists rename to conf/type/__process/explorer/runs index f8b85671..685dd19e 100755 --- a/conf/type/__process/explorer/exists +++ b/conf/type/__process/explorer/runs @@ -18,13 +18,9 @@ # along with cdist. If not, see . # # -# Check whether file exists or not +# Check whether a process runs # -destination="/$__object_id" +process="$__object_id" -if [ -e "$destination" ]; then - echo yes -else - echo no -fi +pgrep -f "$process" || true From e4467de8fd9dfe044e65d2cce1972c102513441e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 00:05:30 +0100 Subject: [PATCH 0148/5240] describe how __process should work Signed-off-by: Nico Schottelius --- conf/type/__process/man.text | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/conf/type/__process/man.text b/conf/type/__process/man.text index 2273f6f9..623ec4b2 100644 --- a/conf/type/__process/man.text +++ b/conf/type/__process/man.text @@ -21,13 +21,28 @@ state:: OPTIONAL PARAMETERS ------------------- -None +stop:: + Executable to use for stopping the process. + +start:: + Executable to use for starting the process. + EXAMPLES -------- -------------------------------------------------------------------------------- +# Start /usr/sbin/sshd if not running +__process /usr/sbin/sshd --state running + +# Start /usr/sbin/sshd if not running with a different binary __process /usr/sbin/sshd --state running --start "/etc/rc.d/sshd start" + +# Stop the process using kill (the type default) +__process /usr/sbin/sshd --state stopped + +# Stop the process using /etc/rc.d/sshd stop +__process /usr/sbin/sshd --state stopped --stop "/etc/rc.d/sshd stop" -------------------------------------------------------------------------------- From e7c1d3f16b774c3b33f7b41aa7dbec4041dd6d5c Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 00:07:39 +0100 Subject: [PATCH 0149/5240] add parameter Signed-off-by: Nico Schottelius --- conf/type/__process/gencode-local | 44 -------------------------- conf/type/__process/parameter/optional | 6 ++-- conf/type/__process/parameter/required | 1 + 3 files changed, 3 insertions(+), 48 deletions(-) delete mode 100755 conf/type/__process/gencode-local create mode 100644 conf/type/__process/parameter/required diff --git a/conf/type/__process/gencode-local b/conf/type/__process/gencode-local deleted file mode 100755 index 1168919e..00000000 --- a/conf/type/__process/gencode-local +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh -# -# 2011 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# __file is a very basic type, which will probably be reused quite often -# - -destination="/$__object_id" - -if [ -f "$__object/parameter/source" ]; then - source="$(cat "$__object/parameter/source")" - - if [ -f "$source" ]; then - local_cksum="$(cksum < "$source")" - remote_cksum="$(cat "$__object/explorer/cksum")" - - if [ "$local_cksum" != "$remote_cksum" ]; then - # FIXME: The username is ugly and hardcoded, replace after 1.0! - # Probably a better aproach is to have the user configured - # ~/.ssh/config to contain the right username - # Probably describe it in cdist-quickstart... - echo scp "$source" "root@${__target_host}:${destination}" - fi - else - echo "Source \"$source\" does not exist." >&2 - exit 1 - fi -fi diff --git a/conf/type/__process/parameter/optional b/conf/type/__process/parameter/optional index 06120518..4189bb2c 100644 --- a/conf/type/__process/parameter/optional +++ b/conf/type/__process/parameter/optional @@ -1,4 +1,2 @@ -group -mode -owner -source +stop +start diff --git a/conf/type/__process/parameter/required b/conf/type/__process/parameter/required new file mode 100644 index 00000000..ff72b5c7 --- /dev/null +++ b/conf/type/__process/parameter/required @@ -0,0 +1 @@ +state From 97dd649f447a917c63200cce74d35aadfdc2b63b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 22:55:58 +0200 Subject: [PATCH 0150/5240] update todos Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 4 +++- doc/dev/todo/niconext | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 2881c06c..138f7714 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -5,7 +5,8 @@ Feel free to pick one! CORE ---- -Only build manpages if necessary for types as well as for the core! +- Only build manpages if necessary for types as well as for the core! +- support $__self = relative_type/object_id TYPES ------ @@ -17,3 +18,4 @@ Types to be written/extended: -> aka sed. - __cron + diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 05a44503..e9a6ddfc 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -5,5 +5,5 @@ Cache: -> add function to cdist-config, import from cdist-cache -Core: - - support $__self = relative_type/object_id +remove --preseed from package_apt and add debconf_set_selection or similar + -> much cleaner! From d21cfa66a03e681bf3f24774eb1995c49c85a717 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 22:58:42 +0200 Subject: [PATCH 0151/5240] +indent Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 6294870a..b3ed1f3d 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -155,7 +155,7 @@ if [ -e "${__cdist_object_dir}" ]; then # Allow diff to fail set +e diff -ru "${__cdist_new_object_dir}/${__cdist_name_parameter}" \ - "${__cdist_object_dir}/${__cdist_name_parameter}" \ + "${__cdist_object_dir}/${__cdist_name_parameter}" \ > "$__cdist_tmp_file"; ret=$? set -e From ec2971787090c11c5eb029a0a225ed1b9b56cc09 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 22:59:00 +0200 Subject: [PATCH 0152/5240] in theory finish __process Signed-off-by: Nico Schottelius --- conf/type/__process/gencode-remote | 46 ++++++++++++++++-------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/conf/type/__process/gencode-remote b/conf/type/__process/gencode-remote index 7c5cf7ce..219230db 100755 --- a/conf/type/__process/gencode-remote +++ b/conf/type/__process/gencode-remote @@ -21,26 +21,30 @@ # __file is a very basic type, which will probably be reused quite often # -destination="/$__object_id" +process="$__object_id" -# No source? Create empty file -if [ ! -f "$__object/parameter/source" ]; then - if [ no = "$(cat "$__object/explorer/exists")" ]; then - echo touch \"$destination\" - fi -fi +runs="$(cat "$__object/explorer/runs")" +state="$(cat "$__object/parameter/state")" -# Mode settings -if [ -f "$__object/parameter/mode" ]; then - echo chmod \"$(cat "$__object/parameter/mode")\" \"$destination\" -fi - -# Group -if [ -f "$__object/parameter/group" ]; then - echo chgrp \"$(cat "$__object/parameter/group")\" \"$destination\" -fi - -# Owner -if [ -f "$__object/parameter/owner" ]; then - echo chown \"$(cat "$__object/parameter/owner")\" \"$destination\" -fi +case "$state" in + running) + # Does not run, start it! + if [ -z "$runs" ]; then + if [ -f "$__object/parameter/start" ]; then + cat "$__object/parameter/start" + else + echo "$process" + fi + fi + ;; + stopped) + # Runs, kill it! + if [ "$runs" ]; then + if [ -f "$__object/parameter/stop" ]; then + cat "$__object/parameter/stop" + else + echo kill "${runs}" + fi + fi + ;; +esac From 4cd70b7abbf19a3a1b71d4e5176ec8b67f515576 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 23:10:29 +0200 Subject: [PATCH 0153/5240] document pgrep fun Signed-off-by: Nico Schottelius --- doc/dev/logs/2011-03-27.pgrep | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 doc/dev/logs/2011-03-27.pgrep diff --git a/doc/dev/logs/2011-03-27.pgrep b/doc/dev/logs/2011-03-27.pgrep new file mode 100644 index 00000000..fedfa81e --- /dev/null +++ b/doc/dev/logs/2011-03-27.pgrep @@ -0,0 +1,12 @@ +Some pgrep fun when grepping for -f /usr/lib/postfix/master: + +[23:08] kr:cdist% cat cache/localhost/out/object/__process/usr/lib/postfix/master/.cdist/explorer/runs | grep -e 2529 -e 2537 -e 2538 -e 2539 +nico 2529 0.0 0.0 14848 1816 pts/45 S+ 23:08 0:00 /bin/sh /home/users/nico/oeffentlich/rechner/projekte/cdist/bin/cdist-run-remote localhost __object="/var/lib/cdist/out/object/__process/usr/lib/postfix/master" __object_id="usr/lib/postfix/master" cdist-remote-explorer-run __type_explorer /var/lib/cdist/conf/type/__process/explorer /var/lib/cdist/out/object/__process/usr/lib/postfix/master/explorer +nico 2537 0.0 0.0 41976 2324 pts/45 S+ 23:08 0:00 ssh root@localhost export PATH="/var/lib/cdist/bin:$PATH"; __object="/var/lib/cdist/out/object/__process/usr/lib/postfix/master" __object_id="usr/lib/postfix/master" cdist-remote-explorer-run __type_explorer /var/lib/cdist/conf/type/__process/explorer /var/lib/cdist/out/object/__process/usr/lib/postfix/master/explorer +root 2538 0.0 0.0 11440 1264 ? Ss 23:08 0:00 bash -c export PATH="/var/lib/cdist/bin:$PATH"; __object="/var/lib/cdist/out/object/__process/usr/lib/postfix/master" __object_id="usr/lib/postfix/master" cdist-remote-explorer-run __type_explorer /var/lib/cdist/conf/type/__process/explorer /var/lib/cdist/out/object/__process/usr/lib/postfix/master/explorer +root 2539 0.0 0.0 11440 1524 ? S 23:08 0:00 /bin/sh /var/lib/cdist/bin/cdist-remote-explorer-run __type_explorer /var/lib/cdist/conf/type/__process/explorer /var/lib/cdist/out/object/__process/usr/lib/postfix/master/explorer +2529 +2537 +2538 +2539 + From 0e8d36f5928a5869f67eb79c55f3e1ff69973f08 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 23:12:25 +0200 Subject: [PATCH 0154/5240] add -x to pgrep Signed-off-by: Nico Schottelius --- conf/type/__process/explorer/runs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/conf/type/__process/explorer/runs b/conf/type/__process/explorer/runs index 685dd19e..6d2bdf8c 100755 --- a/conf/type/__process/explorer/runs +++ b/conf/type/__process/explorer/runs @@ -23,4 +23,5 @@ process="$__object_id" -pgrep -f "$process" || true +ps aux +pgrep -x -f "$process" || true From 40b7b158c0c38708574a2d4354490de83df23c3c Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 23:13:18 +0200 Subject: [PATCH 0155/5240] -debug Signed-off-by: Nico Schottelius --- conf/type/__process/explorer/runs | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/type/__process/explorer/runs b/conf/type/__process/explorer/runs index 6d2bdf8c..19d259a6 100755 --- a/conf/type/__process/explorer/runs +++ b/conf/type/__process/explorer/runs @@ -23,5 +23,4 @@ process="$__object_id" -ps aux pgrep -x -f "$process" || true From b8002efa6d630006b333bb7e650f7092fcd3659e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 23:29:10 +0200 Subject: [PATCH 0156/5240] add support for __process --name (in theory) Signed-off-by: Nico Schottelius --- conf/type/__process/explorer/runs | 8 ++++++-- conf/type/__process/gencode-remote | 13 +++++++++++-- conf/type/__process/man.text | 3 +++ conf/type/__process/parameter/optional | 1 + 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/conf/type/__process/explorer/runs b/conf/type/__process/explorer/runs index 19d259a6..240ebef9 100755 --- a/conf/type/__process/explorer/runs +++ b/conf/type/__process/explorer/runs @@ -21,6 +21,10 @@ # Check whether a process runs # -process="$__object_id" +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" +else + name="$__object_id" +fi -pgrep -x -f "$process" || true +pgrep -x -f "$name" || true diff --git a/conf/type/__process/gencode-remote b/conf/type/__process/gencode-remote index 219230db..f8da1795 100755 --- a/conf/type/__process/gencode-remote +++ b/conf/type/__process/gencode-remote @@ -21,7 +21,11 @@ # __file is a very basic type, which will probably be reused quite often # -process="$__object_id" +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" +else + name="$__object_id" +fi runs="$(cat "$__object/explorer/runs")" state="$(cat "$__object/parameter/state")" @@ -33,7 +37,7 @@ case "$state" in if [ -f "$__object/parameter/start" ]; then cat "$__object/parameter/start" else - echo "$process" + echo "$name" fi fi ;; @@ -47,4 +51,9 @@ case "$state" in fi fi ;; + *) + echo "Unknown state: $state" >&2 + exit 1 + ;; + esac diff --git a/conf/type/__process/man.text b/conf/type/__process/man.text index 623ec4b2..5f49865b 100644 --- a/conf/type/__process/man.text +++ b/conf/type/__process/man.text @@ -21,6 +21,9 @@ state:: OPTIONAL PARAMETERS ------------------- +name:: + Process name to match on when using pgrep -f -x. + stop:: Executable to use for stopping the process. diff --git a/conf/type/__process/parameter/optional b/conf/type/__process/parameter/optional index 4189bb2c..3411afb4 100644 --- a/conf/type/__process/parameter/optional +++ b/conf/type/__process/parameter/optional @@ -1,2 +1,3 @@ +name stop start From 271aa95a4da8f20f258fdb428faa4660197fbefa Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 23:32:28 +0200 Subject: [PATCH 0157/5240] add --name example to manpage Signed-off-by: Nico Schottelius --- conf/type/__process/man.text | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/conf/type/__process/man.text b/conf/type/__process/man.text index 5f49865b..d144498d 100644 --- a/conf/type/__process/man.text +++ b/conf/type/__process/man.text @@ -46,6 +46,11 @@ __process /usr/sbin/sshd --state stopped # Stop the process using /etc/rc.d/sshd stop __process /usr/sbin/sshd --state stopped --stop "/etc/rc.d/sshd stop" + +# Ensure cups is running, which runs with -C ...: +__process cups --start "/etc/rc.d/cups start" --state running \ + --name "/usr/sbin/cupsd -C /etc/cups/cupsd.conf" + -------------------------------------------------------------------------------- From 741e505b1e90acd584fbf232ff4945bdea40c98a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 27 Mar 2011 23:33:27 +0200 Subject: [PATCH 0158/5240] more interesting stuff for 1.5.0 Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index b5908a36..7faf789b 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,5 +1,6 @@ 1.5.0: * Add cache functionality + * New type __process * Restructured execution: Run whole object at once (REPHRASE) (Steven Armstrong) 1.4.1: 2011-03-25 From 417ce618217a49a83d4d83cb5260bfba2a5a3abc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 08:54:41 +0200 Subject: [PATCH 0159/5240] -'' Signed-off-by: Nico Schottelius --- conf/type/__process/man.text | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/type/__process/man.text b/conf/type/__process/man.text index d144498d..3f7004c7 100644 --- a/conf/type/__process/man.text +++ b/conf/type/__process/man.text @@ -50,7 +50,6 @@ __process /usr/sbin/sshd --state stopped --stop "/etc/rc.d/sshd stop" # Ensure cups is running, which runs with -C ...: __process cups --start "/etc/rc.d/cups start" --state running \ --name "/usr/sbin/cupsd -C /etc/cups/cupsd.conf" - -------------------------------------------------------------------------------- From dbe74dcc3330117d01df306833c019361c448742 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 08:56:53 +0200 Subject: [PATCH 0160/5240] compile all manpages in parallel! Signed-off-by: Nico Schottelius --- build.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index b91db496..4b0311c5 100755 --- a/build.sh +++ b/build.sh @@ -51,9 +51,10 @@ case "$1" in manbuild) for src in ${MAN1DSTDIR}/*.text ${MAN7DSTDIR}/*.text; do echo "Compiling manpage and html for $src" - $A2XM "$src" - $A2XH "$src" + $A2XM "$src" & + $A2XH "$src" & done + wait ;; mandirs) From 3d87f3f19a6de515923a74fcdd761bfcf3d76bf7 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 09:58:36 +0200 Subject: [PATCH 0161/5240] more ideas for future version Signed-off-by: Steven Armstrong --- doc/dev/logs/2011-03-28.execution-order | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 doc/dev/logs/2011-03-28.execution-order diff --git a/doc/dev/logs/2011-03-28.execution-order b/doc/dev/logs/2011-03-28.execution-order new file mode 100644 index 00000000..940da522 --- /dev/null +++ b/doc/dev/logs/2011-03-28.execution-order @@ -0,0 +1,14 @@ +run global explorers +run init manitest + +run all objects + -> depencies aufloesen wie/was/wo ???????? + run object + run explorer + run manifest + -> object liste wird evt veraendert + run gencode + run push -> target + run exec code + + From 4687d32771316506396fb0214b6cdb073a4c1ad4 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 10:00:22 +0200 Subject: [PATCH 0162/5240] add half backed code for new object-run ideas Signed-off-by: Steven Armstrong --- bin/cdist-deploy-to | 2 +- bin/cdist-object-run-all | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index 96b65e8b..c9aa1e2f 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -49,7 +49,7 @@ 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" +#cdist-manifest-run-all "$__cdist_target_host" cdist-object-run-all "$__cdist_target_host" echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index 14a6d9b3..abf01b23 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -48,6 +48,8 @@ done < "$__cdist_objects" while [ $# -gt 0 ]; do __cdist_object="$1"; shift + echo + echo "Running object $__cdist_object" __cdist_type="$(__cdist_type_from_object "$__cdist_object")" @@ -67,6 +69,9 @@ while [ $# -gt 0 ]; do fi + # Run the manifest for the current object + cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" + # Run the gencode scripts for the current object cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" From b5ab490a23a1413eb949ba9b3512561455303e07 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 10:02:13 +0200 Subject: [PATCH 0163/5240] add more half backed code for new object-run ideas Signed-off-by: Steven Armstrong --- bin/cdist-object-manifest-run | 64 +++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100755 bin/cdist-object-manifest-run diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run new file mode 100755 index 00000000..e20848cd --- /dev/null +++ b/bin/cdist-object-manifest-run @@ -0,0 +1,64 @@ +#!/bin/sh +# +# 2010 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Run the manifest for the given object. +# + +. cdist-config +[ $# -eq 2 ] || __cdist_usage " " +set -eu + +__cdist_target_host="$1"; shift +__cdist_object="$1"; shift + +# Full path to current object +__cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object")" + +# Only the id +__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" + +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_manifest "$__cdist_type")" + + 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")" + + 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 +touch "$__cdist_cur_object_dir/$__cdist_name_object_finished" + From c5d8eaa63dd7f44990a2e4bf4fe282198adf1131 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 10:54:22 +0200 Subject: [PATCH 0164/5240] add stevens todo list Signed-off-by: Steven Armstrong --- doc/dev/todo/steven | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 doc/dev/todo/steven diff --git a/doc/dev/todo/steven b/doc/dev/todo/steven new file mode 100644 index 00000000..5f91a198 --- /dev/null +++ b/doc/dev/todo/steven @@ -0,0 +1,16 @@ +- document object_id=$1 for manifest + gencode :-) + +- update docs regarding flow in cdist-stages.text +- create man pages for new executables +- nuke legacy manpages + +- prettify output of cdist-deploy-to, e.g. + +Processing object __file/etc/cdist-configured + transfering type explorers ... + running type explorers ... + running manifest ... + running gencode ... + transfering object to target ... + running code ... + From d7a607d54a9b595259408e2f3a60e7e1cf368568 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 11:22:25 +0200 Subject: [PATCH 0165/5240] update man pages for type explorer transfer and execution Signed-off-by: Steven Armstrong --- doc/man/cdist-object-explorer-all.text | 33 -------------------------- doc/man/cdist-object-explorer-run.text | 32 +++++++++++++++++++++++++ doc/man/cdist-type-explorer-push.text | 32 +++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 33 deletions(-) delete mode 100644 doc/man/cdist-object-explorer-all.text create mode 100644 doc/man/cdist-object-explorer-run.text create mode 100644 doc/man/cdist-type-explorer-push.text diff --git a/doc/man/cdist-object-explorer-all.text b/doc/man/cdist-object-explorer-all.text deleted file mode 100644 index dda3d30d..00000000 --- a/doc/man/cdist-object-explorer-all.text +++ /dev/null @@ -1,33 +0,0 @@ -cdist-object-explorer-all(1) -============================ -Nico Schottelius - - -NAME ----- -cdist-object-explorer-all - Run type explorer for every object - - -SYNOPSIS --------- -cdist-object-explorer-all HOSTNAME - - -DESCRIPTION ------------ -For every object, it checks whether the type has one or more explorers. -If so, the explorers of the type are copied to the target and executed -once per object. - - -SEE ALSO --------- -- cdist(7) -- cdist-deploy-to(1) -- cdist-remote-explorer-run(1) - - -COPYING -------- -Copyright \(C) 2011 Nico Schottelius. Free use of this software is -granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/doc/man/cdist-object-explorer-run.text b/doc/man/cdist-object-explorer-run.text new file mode 100644 index 00000000..a94047c3 --- /dev/null +++ b/doc/man/cdist-object-explorer-run.text @@ -0,0 +1,32 @@ +cdist-object-explorer-run(1) +============================ +Nico Schottelius +Steven Armstrong + + +NAME +---- +cdist-object-explorer-run - Run type explorers for a object + + +SYNOPSIS +-------- +cdist-object-explorer-run HOSTNAME OBJECT + + +DESCRIPTION +----------- +Runs the explorers for the given object on the target host. + + +SEE ALSO +-------- +- cdist(7) +- cdist-deploy-to(1) +- cdist-remote-explorer-run(1) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/doc/man/cdist-type-explorer-push.text b/doc/man/cdist-type-explorer-push.text new file mode 100644 index 00000000..31da880c --- /dev/null +++ b/doc/man/cdist-type-explorer-push.text @@ -0,0 +1,32 @@ +cdist-type-explorer-push(1) +============================ +Nico Schottelius +Steven Armstrong + + +NAME +---- +cdist-type-explorer-push - Transfer type explorers to the target host + + +SYNOPSIS +-------- +cdist-type-explorer-push HOSTNAME TYPE + + +DESCRIPTION +----------- +Transfers the explorers of the given type to the target host. + + +SEE ALSO +-------- +- cdist(7) +- cdist-object-run(1) +- cdist-type(1) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From 269ad8c4325c6435c288cc3071f0e8c3949d6cbd Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 11:27:05 +0200 Subject: [PATCH 0166/5240] update man pages for object gencode generation Signed-off-by: Steven Armstrong --- doc/man/cdist-object-gencode-all.text | 32 -------------------------- doc/man/cdist-object-gencode-run.text | 33 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 32 deletions(-) delete mode 100644 doc/man/cdist-object-gencode-all.text create mode 100644 doc/man/cdist-object-gencode-run.text diff --git a/doc/man/cdist-object-gencode-all.text b/doc/man/cdist-object-gencode-all.text deleted file mode 100644 index b1c96748..00000000 --- a/doc/man/cdist-object-gencode-all.text +++ /dev/null @@ -1,32 +0,0 @@ -cdist-object-gencode-all(1) -=========================== -Nico Schottelius - - -NAME ----- -cdist-object-gencode-all - Generate code for every existing object - - -SYNOPSIS --------- -cdist-object-gencode-all HOSTNAME - - -DESCRIPTION ------------ -For every object that exists, the cdist-object-gencode is executed. - - -SEE ALSO --------- -- cdist(7) -- cdist-code-run(1) -- cdist-deploy-to(1) -- cdist-object-gencode(1) - - -COPYING -------- -Copyright \(C) 2011 Nico Schottelius. Free use of this software is -granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/doc/man/cdist-object-gencode-run.text b/doc/man/cdist-object-gencode-run.text new file mode 100644 index 00000000..d69d1787 --- /dev/null +++ b/doc/man/cdist-object-gencode-run.text @@ -0,0 +1,33 @@ +cdist-object-gencode-run(1) +=========================== +Nico Schottelius +Steven Armstrong + + +NAME +---- +cdist-object-gencode-run - Generate code for a object + + +SYNOPSIS +-------- +cdist-object-gencode-run HOSTNAME OBJECT + + +DESCRIPTION +----------- +For the given object, generate the code for local and remote execution. + + +SEE ALSO +-------- +- cdist(7) +- cdist-code-run(1) +- cdist-object-run-all(1) +- cdist-object-gencode(1) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From 70caac86e914eee4a0c969003a3be691d1bb5377 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 12:11:55 +0200 Subject: [PATCH 0167/5240] man page for cdist-object-push Signed-off-by: Steven Armstrong --- doc/man/cdist-object-push.txt | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 doc/man/cdist-object-push.txt diff --git a/doc/man/cdist-object-push.txt b/doc/man/cdist-object-push.txt new file mode 100644 index 00000000..c4190e00 --- /dev/null +++ b/doc/man/cdist-object-push.txt @@ -0,0 +1,32 @@ +cdist-object-push(1) +============================ +Nico Schottelius +Steven Armstrong + + +NAME +---- +cdist-object-push - Transfer a object to the target host + + +SYNOPSIS +-------- +cdist-object-push HOSTNAME OBJECT + + +DESCRIPTION +----------- +Transfers the given object to the target host. + + +SEE ALSO +-------- +- cdist(7) +- cdist-object-run-all(1) +- cdist-type(1) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From 2ee4f7e95207dfcb2b6cac9c0dabe99ba106e224 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 12:12:57 +0200 Subject: [PATCH 0168/5240] cdist-object-push.txt -> cdist-object-push.text Signed-off-by: Steven Armstrong --- doc/man/{cdist-object-push.txt => cdist-object-push.text} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/man/{cdist-object-push.txt => cdist-object-push.text} (100%) diff --git a/doc/man/cdist-object-push.txt b/doc/man/cdist-object-push.text similarity index 100% rename from doc/man/cdist-object-push.txt rename to doc/man/cdist-object-push.text From c680f3e81d45c6afd4d74ef3bacb86fb88e54ef3 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 12:21:45 +0200 Subject: [PATCH 0169/5240] added man page for cdist-object-run-all Signed-off-by: Steven Armstrong --- doc/man/cdist-object-run-all.text | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 doc/man/cdist-object-run-all.text diff --git a/doc/man/cdist-object-run-all.text b/doc/man/cdist-object-run-all.text new file mode 100644 index 00000000..c5163208 --- /dev/null +++ b/doc/man/cdist-object-run-all.text @@ -0,0 +1,38 @@ +cdist-object-run-all(1) +======================= +Nico Schottelius +Steven Armstrong + + +NAME +---- +cdist-object-run-all - Run all created objects on the target host + + +SYNOPSIS +-------- +cdist-object-run-all HOSTNAME + + +DESCRIPTION +----------- +Iterates over all objects and runs them on the given target host. +The different subtasks are dispatched to specialized exectuables. +See related man pages for details. + + +SEE ALSO +-------- +- cdist(7) +- cdist-type-explorer-push(1) +- cdist-object-explorer-run(1) +- cdist-object-gencode-run(1) +- cdist-object-push(1) +- cdist-object-code-run(1) +- cdist-type(1) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From a5633df809cc05c5a242e086f1e82ee9262fbf8b Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 12:23:52 +0200 Subject: [PATCH 0170/5240] fix asciidoc headers Signed-off-by: Steven Armstrong --- doc/man/cdist-object-push.text | 2 +- doc/man/cdist-type-explorer-push.text | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/man/cdist-object-push.text b/doc/man/cdist-object-push.text index c4190e00..69648a4d 100644 --- a/doc/man/cdist-object-push.text +++ b/doc/man/cdist-object-push.text @@ -1,5 +1,5 @@ cdist-object-push(1) -============================ +==================== Nico Schottelius Steven Armstrong diff --git a/doc/man/cdist-type-explorer-push.text b/doc/man/cdist-type-explorer-push.text index 31da880c..e32f10a4 100644 --- a/doc/man/cdist-type-explorer-push.text +++ b/doc/man/cdist-type-explorer-push.text @@ -1,5 +1,5 @@ cdist-type-explorer-push(1) -============================ +=========================== Nico Schottelius Steven Armstrong From 23e2fb82c7c725b097e34c4e36c197d1ef822a22 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 12:27:43 +0200 Subject: [PATCH 0171/5240] add man page for cdist-object-code-run Signed-off-by: Steven Armstrong --- doc/man/cdist-object-code-run.text | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 doc/man/cdist-object-code-run.text diff --git a/doc/man/cdist-object-code-run.text b/doc/man/cdist-object-code-run.text new file mode 100644 index 00000000..4d19b5eb --- /dev/null +++ b/doc/man/cdist-object-code-run.text @@ -0,0 +1,33 @@ +cdist-object-code-run(1) +======================== +Nico Schottelius +Steven Armstrong + + +NAME +---- +cdist-object-code-run - Execute the generated code for a object + + +SYNOPSIS +-------- +cdist-object-code-run HOSTNAME OBJECT + + +DESCRIPTION +----------- +Execute the local and remote code for the given object. + + +SEE ALSO +-------- +- cdist(7) +- cdist-object-run-all(1) +- cdist-code-run(1) +- cdist-run-remote(1) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From d56b7d19448282594047480936e7d976f4614eaa Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 12:29:46 +0200 Subject: [PATCH 0172/5240] remove legacy man pages Signed-off-by: Steven Armstrong --- doc/man/cdist-code-run-all.text | 32 -------------------------------- doc/man/cdist-run-remote.text | 2 +- 2 files changed, 1 insertion(+), 33 deletions(-) delete mode 100644 doc/man/cdist-code-run-all.text diff --git a/doc/man/cdist-code-run-all.text b/doc/man/cdist-code-run-all.text deleted file mode 100644 index fba2e7e3..00000000 --- a/doc/man/cdist-code-run-all.text +++ /dev/null @@ -1,32 +0,0 @@ -cdist-code-run-all(1) -===================== -Nico Schottelius - - -NAME ----- -cdist-code-run-all - Execute all generated code on the target - - -SYNOPSIS --------- -cdist-code-run-all HOSTNAME - - -DESCRIPTION ------------ -cdist-code-run-all is just a wrapper for cdist-remote-code-run-all. - - -SEE ALSO --------- -- cdist(7) -- cdist-deploy-to(1) -- cdist-remote-code-run-all(1) -- cdist-run-remote(1) - - -COPYING -------- -Copyright \(C) 2011 Nico Schottelius. Free use of this software is -granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/doc/man/cdist-run-remote.text b/doc/man/cdist-run-remote.text index 6f06360f..ee7a6337 100644 --- a/doc/man/cdist-run-remote.text +++ b/doc/man/cdist-run-remote.text @@ -22,7 +22,7 @@ It ensures PATH is setup correctly on the target side. SEE ALSO -------- - cdist(7) -- cdist-code-run-all(1) +- cdist-object-code-run(1) - cdist-deploy-to(1) - cdist-remote-code-run-all(1) From 0f2193c5e3b731e4f92be2631e63c471d3f6a838 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 12:44:03 +0200 Subject: [PATCH 0173/5240] concentrate on iteration in cdist-object-run-all; move all execution code into new executable bin/cdist-object-run Signed-off-by: Steven Armstrong --- bin/cdist-object-run | 55 ++++++++++++++++++++++++++++++++++++++++ bin/cdist-object-run-all | 29 +++++---------------- 2 files changed, 61 insertions(+), 23 deletions(-) create mode 100755 bin/cdist-object-run diff --git a/bin/cdist-object-run b/bin/cdist-object-run new file mode 100755 index 00000000..44be01be --- /dev/null +++ b/bin/cdist-object-run @@ -0,0 +1,55 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# For the given object: +# - run type explorers +# - generate code +# - copy object to target +# - execute code on target +# + +. cdist-config +[ $# -eq 2 ] || __cdist_usage " " +set -eu + +__cdist_target_host="$1"; shift +__cdist_object="$1"; shift + + +__cdist_type="$(__cdist_type_from_object "$__cdist_object")" + +# Check if type of object has >= 1 explorer +__cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" + +# Run the type explorers for the current object if any +if [ "$__cdist_has_explorer" ]; then + cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" +fi + +# Run the gencode scripts for the current object +cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" + +# Transfer the current object to the target +cdist-object-push "$__cdist_target_host" "$__cdist_object" + +# Run the code for the current object +cdist-object-code-run "$__cdist_target_host" "$__cdist_object" + diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index 14a6d9b3..3d2cb21c 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -19,11 +19,7 @@ # along with cdist. If not, see . # # -# For each created object: -# - run type explorers -# - generate code -# - copy object to target -# - execute code on target +# Run cdist-object-run for each created object. # . cdist-config @@ -49,32 +45,19 @@ done < "$__cdist_objects" while [ $# -gt 0 ]; do __cdist_object="$1"; shift - __cdist_type="$(__cdist_type_from_object "$__cdist_object")" - # Check if type of object has >= 1 explorer __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" - # If so, run explorers on remote side + # Transfer the type explorers if any if [ "$__cdist_has_explorer" ]; then - # Transfer the type explorers if ! grep -q "$__cdist_type" "$__cdist_types_pushed"; then cdist-type-explorer-push "$__cdist_target_host" "$__cdist_type" - echo "$__cdist_type" >> "$__cdist_types_pushed" - fi - - # Run the type explorers for the current object - cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" - + echo "$__cdist_type" >> "$__cdist_types_pushed" + fi fi - # Run the gencode scripts for the current object - cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" - - # Transfer the current object to the target - cdist-object-push "$__cdist_target_host" "$__cdist_object" - - # Run the code for the current object - cdist-object-code-run "$__cdist_target_host" "$__cdist_object" + # Process the given object + cdist-object-run "$__cdist_target_host" "$__cdist_object" done From 1c51d32cdca9a6372274ff8dedaf845222973712 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 12:45:16 +0200 Subject: [PATCH 0174/5240] add missing variable __cdist_type Signed-off-by: Steven Armstrong --- bin/cdist-object-run-all | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index 3d2cb21c..e95c7841 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -45,6 +45,8 @@ done < "$__cdist_objects" while [ $# -gt 0 ]; do __cdist_object="$1"; shift + __cdist_type="$(__cdist_type_from_object "$__cdist_object")" + # Check if type of object has >= 1 explorer __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" From 0726735f38623efe0b825644a45a8ce63ed889b8 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 12:49:46 +0200 Subject: [PATCH 0175/5240] update man pages for cdist-object-run-all and cdist-object-run Signed-off-by: Steven Armstrong --- doc/man/cdist-object-run-all.text | 10 +++------ doc/man/cdist-object-run.text | 37 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 doc/man/cdist-object-run.text diff --git a/doc/man/cdist-object-run-all.text b/doc/man/cdist-object-run-all.text index c5163208..a3a8d56b 100644 --- a/doc/man/cdist-object-run-all.text +++ b/doc/man/cdist-object-run-all.text @@ -16,19 +16,15 @@ cdist-object-run-all HOSTNAME DESCRIPTION ----------- -Iterates over all objects and runs them on the given target host. -The different subtasks are dispatched to specialized exectuables. -See related man pages for details. +Transfers type explorers to the target then runs cdist-object-run(1) +for each created object. SEE ALSO -------- - cdist(7) - cdist-type-explorer-push(1) -- cdist-object-explorer-run(1) -- cdist-object-gencode-run(1) -- cdist-object-push(1) -- cdist-object-code-run(1) +- cdist-object-run(1) - cdist-type(1) diff --git a/doc/man/cdist-object-run.text b/doc/man/cdist-object-run.text new file mode 100644 index 00000000..b527c0e6 --- /dev/null +++ b/doc/man/cdist-object-run.text @@ -0,0 +1,37 @@ +cdist-object-run(1) +=================== +Nico Schottelius +Steven Armstrong + + +NAME +---- +cdist-object-run - Run an object + + +SYNOPSIS +-------- +cdist-object-run HOSTNAME OBJECT + + +DESCRIPTION +----------- +Runs the given object on the given target host. +The different subtasks are dispatched to specialized exectuables. +See related man pages for details. + + +SEE ALSO +-------- +- cdist(7) +- cdist-object-explorer-run(1) +- cdist-object-gencode-run(1) +- cdist-object-push(1) +- cdist-object-code-run(1) +- cdist-type(1) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From 4ee5d74c9ff5cb36132ef1751602087892b1d1fe Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 14:55:58 +0200 Subject: [PATCH 0176/5240] implement dependency handling at the object level Signed-off-by: Steven Armstrong --- bin/cdist-code-run | 15 ---------- bin/cdist-config | 16 ++++++++-- bin/cdist-object-manifest-run | 37 +++++++++++------------ bin/cdist-object-run | 54 ++++++++++++++++++++++------------ bin/cdist-object-run-all | 55 +++++++++++++++++------------------ 5 files changed, 93 insertions(+), 84 deletions(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index a6a9137f..e969d942 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -32,31 +32,16 @@ if [ ! -d "$(__cdist_object_dir "$object")" ]; then __cdist_exit_err "Object $object is missing." fi -finished="$(__cdist_object_code_finished "$object")" -require="$(__cdist_object_require "$object")" - code="$(__cdist_object_code "$object")-${__cdist_gencode_type}" -# Do nothing if our work has been done -if [ -f "$finished" ]; then - exit 0 -fi - echo "Checking code-${__cdist_gencode_type} for $object ..." -if [ -f "$require" ]; then - while read requirement; do - echo "Requiring dependency $requirement for $object ..." - cdist-code-run "$requirement" "$__cdist_gencode_type" - done < "$require" -fi if [ -e "$code" ]; then if [ -f "$code" ]; then if [ -x "$code" ]; then echo "Executing code-${__cdist_gencode_type} for $object ..." "$code" - touch "$finished" else __cdist_exit_err "$code exists, but is not executable." fi diff --git a/bin/cdist-config b/bin/cdist-config index 26139819..1b172ddb 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -42,7 +42,6 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_bin:=bin} : ${__cdist_name_code:=code} -: ${__cdist_name_code_finished:=codedone} : ${__cdist_name_conf_dir:=conf} : ${__cdist_name_dot_cdist:=.cdist} : ${__cdist_name_explorer:=explorer} @@ -68,6 +67,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_type:=type} : ${__cdist_name_type_bin:=type_bin} : ${__cdist_name_type_explorer:=type_explorer} +: ${__cdist_name_objects_created:=objects_created} # Used for IDs: Allow everything not starting with - and . : ${__cdist_sane_regexp:=[^-\.].*} @@ -107,6 +107,7 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") : ${__cdist_manifest_dir:=$__cdist_conf_dir/$__cdist_name_manifest} : ${__cdist_manifest_init:=$__cdist_manifest_dir/$__cdist_name_init} : ${__cdist_type_dir:=$__cdist_conf_dir/$__cdist_name_type} +: ${__cdist_new_objects_created:=$__cdist_local_base_dir/$__cdist_name_objects_created} ################################################################################ # Local output @@ -176,6 +177,14 @@ __cdist_init_deploy() ln -sf "$__cdist_conf_dir" "$__cdist_local_base_dir/$__cdist_name_conf_dir" } +__cdist_new_objects_created() { + touch "$__cdist_tmp_dir/object_created" +} + +__cdist_has_new_objects() { + touch "$__cdist_tmp_dir/object_created" +} + ################################################################################ # Object # @@ -185,9 +194,9 @@ __cdist_object_code() echo "$(__cdist_object_dir "$1")/${__cdist_name_code}" } -__cdist_object_code_finished() +__cdist_object_finished() { - echo "$(__cdist_object_dir "$1")/${__cdist_name_code_finished}" + echo "$(__cdist_object_dir "$1")/${__cdist_name_object_finished}" } __cdist_object_dir() @@ -250,6 +259,7 @@ __cdist_object_type_explorer_dir() echo "$(__cdist_object_dir "$1")/${__cdist_name_explorer}" } + ################################################################################ # Remote # diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run index e20848cd..4f8111f6 100755 --- a/bin/cdist-object-manifest-run +++ b/bin/cdist-object-manifest-run @@ -35,30 +35,27 @@ __cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object")" # Only the id __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" -if [ ! -f "${__cdist_cur_object_dir}/$__cdist_name_object_finished" ]; then - echo "Checking manifest for $__cdist_object ..." +echo "Checking manifest for $__cdist_object ..." - __cdist_type="$(__cdist_type_from_object "$__cdist_object")" - __cdist_manifest="$(__cdist_type_manifest "$__cdist_type")" +__cdist_type="$(__cdist_type_from_object "$__cdist_object")" +__cdist_manifest="$(__cdist_type_manifest "$__cdist_type")" - if [ -f "$__cdist_manifest" ]; then - if [ -x "$__cdist_manifest" ]; then - # 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" - else - __cdist_exit_err "${__cdist_manifest} needs to be executable." - fi + cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" + # Tell cdist that there may be new objects + touch "$__cdist_new_objects_created" + else + __cdist_exit_err "${__cdist_manifest} needs to be executable." fi fi -# done with this object -touch "$__cdist_cur_object_dir/$__cdist_name_object_finished" - diff --git a/bin/cdist-object-run b/bin/cdist-object-run index e123c7a4..6ad95656 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -21,6 +21,7 @@ # # For the given object: # - run type explorers +# - run type manifest # - generate code # - copy object to target # - execute code on target @@ -35,24 +36,41 @@ __cdist_object="$1"; shift __cdist_type="$(__cdist_type_from_object "$__cdist_object")" +__cdist_types_pushed="$__cdist_tmp_dir/types_pushed" +touch "$__cdist_types_pushed" -# Check if type of object has >= 1 explorer -__cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" +__cdist_object_finished="$(__cdist_object_finished "$__cdist_object")" +if [ ! -f "$__cdist_object_finished" ]; then + + echo + echo "Running object $__cdist_object" + + # Check if type of object has >= 1 explorer + __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" + + # Run the type explorers for the current object if any + if [ "$__cdist_has_explorer" ]; then + if ! grep -q "$__cdist_type" "$__cdist_types_pushed"; then + cdist-type-explorer-push "$__cdist_target_host" "$__cdist_type" + echo "$__cdist_type" >> "$__cdist_types_pushed" + fi + + cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" + fi + + # Run the manifest for the current object + cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" + + # Run the gencode scripts for the current object + cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" + + # Transfer the current object to the target + cdist-object-push "$__cdist_target_host" "$__cdist_object" + + # Run the code for the current object + cdist-object-code-run "$__cdist_target_host" "$__cdist_object" + + # Mark this object as done + touch "$__cdist_object_finished" -# Run the type explorers for the current object if any -if [ "$__cdist_has_explorer" ]; then - cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" fi - -# Run the manifest for the current object -cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" - -# Run the gencode scripts for the current object -cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" - -# Transfer the current object to the target -cdist-object-push "$__cdist_target_host" "$__cdist_object" - -# Run the code for the current object -cdist-object-code-run "$__cdist_target_host" "$__cdist_object" - diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index 45a1ae2a..582ff163 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -29,39 +29,38 @@ set -eu __cdist_target_host="$1"; shift __cdist_objects="$__cdist_tmp_dir/objects" -__cdist_types_pushed="$__cdist_tmp_dir/types_pushed" -touch "$__cdist_types_pushed" + +# Loop until we do not create new objects anymore +# which is equal to all objects have been run +touch "$__cdist_new_objects_created" +while [ -f "$__cdist_new_objects_created" ]; do + # Assume we're done after this run + rm "$__cdist_new_objects_created" + + # Get listing of objects + __cdist_object_list "$__cdist_out_object_dir" > "$__cdist_objects" -# Get listing of objects -__cdist_object_list "$__cdist_out_object_dir" > "$__cdist_objects" + # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP + while read __cdist_object; do + set -- "$@" "$__cdist_object" + done < "$__cdist_objects" + while [ $# -gt 0 ]; do + __cdist_object="$1"; shift -# NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP -while read __cdist_object; do - set -- "$@" "$__cdist_object" -done < "$__cdist_objects" + __cdist_object_require="$(__cdist_object_require "$__cdist_object")" + if [ -f "$__cdist_object_require" ]; then + echo + while read __cdist_requirement; do + echo "Resolving dependency $__cdist_object -> $__cdist_requirement ..." + cdist-object-run "$__cdist_target_host" "$__cdist_requirement" + done < "$__cdist_object_require" + fi -while [ $# -gt 0 ]; do - __cdist_object="$1"; shift - echo - echo "Running object $__cdist_object" - - __cdist_type="$(__cdist_type_from_object "$__cdist_object")" - - # Check if type of object has >= 1 explorer - __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" - - # Transfer the type explorers if any - if [ "$__cdist_has_explorer" ]; then - if ! grep -q "$__cdist_type" "$__cdist_types_pushed"; then - cdist-type-explorer-push "$__cdist_target_host" "$__cdist_type" - echo "$__cdist_type" >> "$__cdist_types_pushed" - fi - fi - - # Process the given object - cdist-object-run "$__cdist_target_host" "$__cdist_object" + # Process the object + cdist-object-run "$__cdist_target_host" "$__cdist_object" + done done From 62c4f0d086d76f54a5cc63e5a8741d5f30a7691a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 15:16:48 +0200 Subject: [PATCH 0177/5240] ABORT if explorer fails, not only WARN Signed-off-by: Nico Schottelius --- bin/cdist-remote-explorer-run | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/cdist-remote-explorer-run b/bin/cdist-remote-explorer-run index 1fdd1467..028f8d7d 100755 --- a/bin/cdist-remote-explorer-run +++ b/bin/cdist-remote-explorer-run @@ -57,16 +57,16 @@ for explorer in "$__cdist_explorer_dir/"*; do if [ -f "$explorer" ]; then if [ ! -x "$explorer" ]; then - echo "Explorer \"$explorer\" exists, but is not executable." - continue + echo "Explorer \"$explorer\" exists, but is not executable." >&2 + exit 1 fi # Execute explorers and save results in remote destination directory "$explorer" > "${__cdist_my_out_dir}/$explorer_name" else if [ -e "$explorer" ]; then - echo "Explorer \"$explorer\" exists, but is not a file." - continue + echo "Explorer \"$explorer\" exists, but is not a file." >&2 + exit 1 fi fi done From 9bdba19d4a077641d8a797ff1ae7f1cca4d696b8 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 15:20:58 +0200 Subject: [PATCH 0178/5240] prepend slash when using __object_id as name for __process Signed-off-by: Nico Schottelius --- conf/type/__process/explorer/runs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__process/explorer/runs b/conf/type/__process/explorer/runs index 240ebef9..2bfa8f84 100755 --- a/conf/type/__process/explorer/runs +++ b/conf/type/__process/explorer/runs @@ -24,7 +24,7 @@ if [ -f "$__object/parameter/name" ]; then name="$(cat "$__object/parameter/name")" else - name="$__object_id" + name="/$__object_id" fi pgrep -x -f "$name" || true From 8b0b7052c67673684018d0010eea94611a6febe7 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 28 Mar 2011 15:28:55 +0200 Subject: [PATCH 0179/5240] remove commented obsolete code Signed-off-by: Steven Armstrong --- bin/cdist-deploy-to | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index c9aa1e2f..b0a0117d 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -49,7 +49,7 @@ 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" cdist-object-run-all "$__cdist_target_host" echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" + From ba0bc4d02b320422a8605d56ea7932edb6de1c81 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:09:02 +0200 Subject: [PATCH 0180/5240] add somo todo proposals for steven / questions Signed-off-by: Nico Schottelius --- doc/dev/todo/steven-from-nico | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 doc/dev/todo/steven-from-nico diff --git a/doc/dev/todo/steven-from-nico b/doc/dev/todo/steven-from-nico new file mode 100644 index 00000000..1aa81aaa --- /dev/null +++ b/doc/dev/todo/steven-from-nico @@ -0,0 +1,12 @@ +- check: echo without parameters == valid in posix? bin/cdist-object-run:45 and others +- align messages (already in todo for steven, but makes life much easier, thus repeated) +- advantage of touch/rm loop vs. y == variable? bin/cdist-object-run-all +- bin/cdist-object-run-all: "->" graphic: can be useful, but if -> consistent! + -> all graphics could look cool: + + Object foo + | + |--> Requires ... + |--> ... + + but maybe bad do parse from outside From 29b61f38eaede3edab65fc5ef3308caecce77da3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:09:35 +0200 Subject: [PATCH 0181/5240] remove unecessary empty lines (interrupts read flow) Signed-off-by: Nico Schottelius --- bin/cdist-object-run-all | 3 --- 1 file changed, 3 deletions(-) diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index 582ff163..a3745689 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -40,7 +40,6 @@ while [ -f "$__cdist_new_objects_created" ]; do # Get listing of objects __cdist_object_list "$__cdist_out_object_dir" > "$__cdist_objects" - # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP while read __cdist_object; do set -- "$@" "$__cdist_object" @@ -60,7 +59,5 @@ while [ -f "$__cdist_new_objects_created" ]; do # Process the object cdist-object-run "$__cdist_target_host" "$__cdist_object" - done done - From 98c7b98aac81776d2a109dee08f3b8e0c25c15b0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:16:55 +0200 Subject: [PATCH 0182/5240] more todo for steven :-p Signed-off-by: Nico Schottelius --- doc/dev/todo/steven-from-nico | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/dev/todo/steven-from-nico b/doc/dev/todo/steven-from-nico index 1aa81aaa..c879144d 100644 --- a/doc/dev/todo/steven-from-nico +++ b/doc/dev/todo/steven-from-nico @@ -1,6 +1,7 @@ - check: echo without parameters == valid in posix? bin/cdist-object-run:45 and others - align messages (already in todo for steven, but makes life much easier, thus repeated) - advantage of touch/rm loop vs. y == variable? bin/cdist-object-run-all + also in bin/cdist-object-run - bin/cdist-object-run-all: "->" graphic: can be useful, but if -> consistent! -> all graphics could look cool: @@ -10,3 +11,7 @@ |--> ... but maybe bad do parse from outside + +- bin/cdist-object-run: type_explorer stuff: probably put into own binary + - sounds like cdist-object-explorer-run is already the right executable to + place such stuff into From 4ab770400a8f7349ca04f7c6d48f7581f3e678da Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:17:17 +0200 Subject: [PATCH 0183/5240] - lines + variable alignement Signed-off-by: Nico Schottelius --- bin/cdist-object-run | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/bin/cdist-object-run b/bin/cdist-object-run index 6ad95656..90e61fd4 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -34,14 +34,12 @@ set -eu __cdist_target_host="$1"; shift __cdist_object="$1"; shift - __cdist_type="$(__cdist_type_from_object "$__cdist_object")" __cdist_types_pushed="$__cdist_tmp_dir/types_pushed" touch "$__cdist_types_pushed" __cdist_object_finished="$(__cdist_object_finished "$__cdist_object")" if [ ! -f "$__cdist_object_finished" ]; then - echo echo "Running object $__cdist_object" @@ -59,18 +57,17 @@ if [ ! -f "$__cdist_object_finished" ]; then fi # Run the manifest for the current object - cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" + cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" # Run the gencode scripts for the current object - cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" + cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" # Transfer the current object to the target - cdist-object-push "$__cdist_target_host" "$__cdist_object" + cdist-object-push "$__cdist_target_host" "$__cdist_object" # Run the code for the current object - cdist-object-code-run "$__cdist_target_host" "$__cdist_object" + cdist-object-code-run "$__cdist_target_host" "$__cdist_object" # Mark this object as done touch "$__cdist_object_finished" - fi From 4e68c3027b1b96a6f9348667241532c42d591d47 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:19:51 +0200 Subject: [PATCH 0184/5240] remove self explanatory comments Signed-off-by: Nico Schottelius --- bin/cdist-object-run | 7 ------- 1 file changed, 7 deletions(-) diff --git a/bin/cdist-object-run b/bin/cdist-object-run index 90e61fd4..d633e537 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -56,16 +56,9 @@ if [ ! -f "$__cdist_object_finished" ]; then cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" fi - # Run the manifest for the current object cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" - - # Run the gencode scripts for the current object cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" - - # Transfer the current object to the target cdist-object-push "$__cdist_target_host" "$__cdist_object" - - # Run the code for the current object cdist-object-code-run "$__cdist_target_host" "$__cdist_object" # Mark this object as done From 10c96dee875240c8290da46b72e61271d5e25d33 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:26:17 +0200 Subject: [PATCH 0185/5240] -useless emptly line in bin/cdist-deploy-to Signed-off-by: Nico Schottelius --- bin/cdist-deploy-to | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index af33c3fe..e44ceff4 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -53,4 +53,3 @@ cdist-object-run-all "$__cdist_target_host" cdist-cache "$__cdist_target_host" echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" - From 78777ba9f3e8870975089d63fbd787361adc915a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:30:09 +0200 Subject: [PATCH 0186/5240] use same argv processing as elsewhere Signed-off-by: Nico Schottelius --- bin/cdist-remote-explorer-run | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bin/cdist-remote-explorer-run b/bin/cdist-remote-explorer-run index 028f8d7d..cef91e0d 100755 --- a/bin/cdist-remote-explorer-run +++ b/bin/cdist-remote-explorer-run @@ -25,9 +25,7 @@ # . cdist-config -if [ $# -ne 3 ]; then - __cdist_usage " " -fi +[ $# -eq 3 ] || __cdist_usage " " set -ue # Variable that defines the home of the explorers From 332548ba4f231c7d47f39dd8c64ef3954963527a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:31:26 +0200 Subject: [PATCH 0187/5240] more todo, less whiteline in bin/cdist-object-explorer-run Signed-off-by: Nico Schottelius --- bin/cdist-object-explorer-run | 1 - doc/dev/todo/steven-from-nico | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index e349a490..637d4448 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -24,7 +24,6 @@ . cdist-config [ $# -eq 2 ] || __cdist_usage " " - set -eu __cdist_target_host="$1"; shift diff --git a/doc/dev/todo/steven-from-nico b/doc/dev/todo/steven-from-nico index c879144d..bbfe13dc 100644 --- a/doc/dev/todo/steven-from-nico +++ b/doc/dev/todo/steven-from-nico @@ -15,3 +15,31 @@ - bin/cdist-object-run: type_explorer stuff: probably put into own binary - sounds like cdist-object-explorer-run is already the right executable to place such stuff into + +- remove enormous amount of empty lines :-) + - at end of file + - between [ $# -eq 2 ] || and set + - after if + - before fi + +- cdist-type-explorer-push: wherefore if [ -d "$src_dir" ];? + -> does this not even hide bugs? + -> not sure whether covering cdist-dir in its own script makes + sense, as cdist-dir push is only a one liner + -> if cdist-dir does too less, enhance it + +- code aus cdist-object-run-all für requirements: + in cdist-object-requirements oder so auslagern? + cdist-object-run-all wäre dann eine schöne zwei-zeiler-schleife + +- try to prefix all internal variables with __cdist! + - only avoid if waayyyyyyyyyyy tooooooooo long + - f.i.: cdist-object-explorer-run + +- cdist-object-explorer-run and bin/cdist-object-run seem to contain + very very similar code regarding transfer and co. + + +- general: cdist-object-run-all looks like a good idea! + + From 8abd5ce33ed323719bd29b1e8f97b3b1b14e85e4 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:37:26 +0200 Subject: [PATCH 0188/5240] - another empty line Signed-off-by: Nico Schottelius --- bin/cdist-object-gencode-run | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/cdist-object-gencode-run b/bin/cdist-object-gencode-run index 76ce6953..bfc65730 100755 --- a/bin/cdist-object-gencode-run +++ b/bin/cdist-object-gencode-run @@ -41,4 +41,3 @@ cdist-object-gencode "$__cdist_target_host" "$__cdist_object" \ "${__cdist_name_gencode_remote}" > "${code_remote}" chmod u+x "${code_local}" "${code_remote}" - From 8315ac2e256ff7de0f77bf9806ae94b391bd01bc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:38:08 +0200 Subject: [PATCH 0189/5240] - blank lines Signed-off-by: Nico Schottelius --- bin/cdist-object-push | 2 -- doc/dev/todo/steven-from-nico | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-object-push b/bin/cdist-object-push index 9c44d14e..170aaef3 100755 --- a/bin/cdist-object-push +++ b/bin/cdist-object-push @@ -29,9 +29,7 @@ set -eu __cdist_target_host="$1"; shift __cdist_object="$1"; shift - echo "Transferring object $__cdist_object to target host ..." cdist-dir push "$__cdist_target_host" \ "$(__cdist_object_dir "$__cdist_object")" \ "$(__cdist_remote_object_dir "$__cdist_object")" - diff --git a/doc/dev/todo/steven-from-nico b/doc/dev/todo/steven-from-nico index bbfe13dc..52d3047f 100644 --- a/doc/dev/todo/steven-from-nico +++ b/doc/dev/todo/steven-from-nico @@ -39,6 +39,8 @@ - cdist-object-explorer-run and bin/cdist-object-run seem to contain very very similar code regarding transfer and co. +- cdist-object-manifest-run: + # Tell cdist that there may be new objects -> WHO? :-) - general: cdist-object-run-all looks like a good idea! From a46c0a43726e66ed1903f0b7018bb9c5282d5089 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:38:43 +0200 Subject: [PATCH 0190/5240] replace CONSTANT target host by variable target host Signed-off-by: Nico Schottelius --- bin/cdist-object-push | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-object-push b/bin/cdist-object-push index 170aaef3..f7d46be4 100755 --- a/bin/cdist-object-push +++ b/bin/cdist-object-push @@ -29,7 +29,7 @@ set -eu __cdist_target_host="$1"; shift __cdist_object="$1"; shift -echo "Transferring object $__cdist_object to target host ..." +echo "Transferring object $__cdist_object to $__cdist_target_host ..." cdist-dir push "$__cdist_target_host" \ "$(__cdist_object_dir "$__cdist_object")" \ "$(__cdist_remote_object_dir "$__cdist_object")" From c80fa65af1236c68e391ad6753d37a2631ad420d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 18:42:04 +0200 Subject: [PATCH 0191/5240] -blank line Signed-off-by: Nico Schottelius --- bin/cdist-object-code-run | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/cdist-object-code-run b/bin/cdist-object-code-run index b75f6f46..d0722788 100755 --- a/bin/cdist-object-code-run +++ b/bin/cdist-object-code-run @@ -39,4 +39,3 @@ cdist-run-remote "$__cdist_target_host" \ "export __cdist_out_object_dir=\"$__cdist_remote_out_object_dir\";" \ "cdist-code-run" "$__cdist_object" "${__cdist_name_gencode_remote}" \ || __cdist_exit_err "Remote code failed for $__cdist_object" - From bb66523ea517822874125b4959ea9be4b52b131e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 28 Mar 2011 22:43:50 +0200 Subject: [PATCH 0192/5240] todo: fix __ in asciidoc Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 138f7714..b362d491 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -18,4 +18,7 @@ Types to be written/extended: -> aka sed. - __cron - +DOCUMENTATION +-------------- +- asciidoc interprets __, which we use for variables + names -> seek through docs and replace with \_\_! From 3618b225a39835d56bac0c1eda11b07688e1bb49 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 10:34:04 +0200 Subject: [PATCH 0193/5240] make all internal variables __cdist_ prefixed Signed-off-by: Nico Schottelius --- bin/cdist-object-explorer-run | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index 637d4448..e9a20921 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -33,10 +33,10 @@ __object_id="$(__cdist_object_id_from_object "$__object")" __cdist_type="$(__cdist_type_from_object "$__object")" # Check if type of object has >= 1 explorer -has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" +__cdist_has_explorer="$(__cdist_type___cdist_has_explorer "$__cdist_type")" # If so, run explorers on remote side -if [ "$has_explorer" ]; then +if [ "$__cdist_has_explorer" ]; then echo "Running explorers for $__object ..." # Copy object parameters cdist-dir push "$__cdist_target_host" \ @@ -57,4 +57,3 @@ if [ "$has_explorer" ]; then "$(__cdist_remote_object_type_explorer_dir "$__object")" \ "$(__cdist_object_type_explorer_dir "$__object")" fi - From 5306737d22aa2da3b685cd02a0134202e401a7ca Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 10:38:35 +0200 Subject: [PATCH 0194/5240] discuss todos / cleanup / make more fun for us Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 -- bin/cdist-object-manifest-run | 3 +- bin/cdist-object-run | 1 + bin/cdist-object-run-all | 7 ++++- doc/dev/todo/niconext | 2 ++ doc/dev/todo/steven-from-nico | 59 +++++++++++++++++++++-------------- 6 files changed, 45 insertions(+), 29 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index c4b8d44c..9a00395d 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -68,7 +68,6 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_type:=type} : ${__cdist_name_type_bin:=type_bin} : ${__cdist_name_type_explorer:=type_explorer} -: ${__cdist_name_objects_created:=objects_created} # Used for IDs: Allow everything not starting with - and . : ${__cdist_sane_regexp:=[^-\.].*} @@ -109,7 +108,6 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") : ${__cdist_manifest_dir:=$__cdist_conf_dir/$__cdist_name_manifest} : ${__cdist_manifest_init:=$__cdist_manifest_dir/$__cdist_name_init} : ${__cdist_type_dir:=$__cdist_conf_dir/$__cdist_name_type} -: ${__cdist_new_objects_created:=$__cdist_local_base_dir/$__cdist_name_objects_created} ################################################################################ # Local output diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run index 4f8111f6..a65ed138 100755 --- a/bin/cdist-object-manifest-run +++ b/bin/cdist-object-manifest-run @@ -52,10 +52,9 @@ if [ -f "$__cdist_manifest" ]; then export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")" cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" - # Tell cdist that there may be new objects + FIXME: Tell cdist that there may be new objects - WHO? Mama? touch "$__cdist_new_objects_created" else __cdist_exit_err "${__cdist_manifest} needs to be executable." fi fi - diff --git a/bin/cdist-object-run b/bin/cdist-object-run index d633e537..015d95fa 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -46,6 +46,7 @@ if [ ! -f "$__cdist_object_finished" ]; then # Check if type of object has >= 1 explorer __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" + FIXME: put into cdist-object-explorer-run # Run the type explorers for the current object if any if [ "$__cdist_has_explorer" ]; then if ! grep -q "$__cdist_type" "$__cdist_types_pushed"; then diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index a3745689..7c87660b 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -30,6 +30,9 @@ __cdist_target_host="$1"; shift __cdist_objects="$__cdist_tmp_dir/objects" +FIXME: reuse in subscripts, save in objects_base_dir +export __cdist_objects_created="$__cdist_tmp_dir/objects_created" + # Loop until we do not create new objects anymore # which is equal to all objects have been run touch "$__cdist_new_objects_created" @@ -48,11 +51,13 @@ while [ -f "$__cdist_new_objects_created" ]; do while [ $# -gt 0 ]; do __cdist_object="$1"; shift + FIXME: migrate into cdist-object-run + FIXME: take care of SSH foo after migration in while loop __cdist_object_require="$(__cdist_object_require "$__cdist_object")" if [ -f "$__cdist_object_require" ]; then echo while read __cdist_requirement; do - echo "Resolving dependency $__cdist_object -> $__cdist_requirement ..." + echo "Resolving dependency $__cdist_requirement for $__cdist_object ..." cdist-object-run "$__cdist_target_host" "$__cdist_requirement" done < "$__cdist_object_require" fi diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index e9a6ddfc..be66a33d 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,3 +1,5 @@ +/ prefix all internal variables with __cdist! -> Nico + Cache: - add example how to use - export variable $__cache diff --git a/doc/dev/todo/steven-from-nico b/doc/dev/todo/steven-from-nico index 52d3047f..c04e980f 100644 --- a/doc/dev/todo/steven-from-nico +++ b/doc/dev/todo/steven-from-nico @@ -1,8 +1,5 @@ -- check: echo without parameters == valid in posix? bin/cdist-object-run:45 and others -- align messages (already in todo for steven, but makes life much easier, thus repeated) -- advantage of touch/rm loop vs. y == variable? bin/cdist-object-run-all - also in bin/cdist-object-run -- bin/cdist-object-run-all: "->" graphic: can be useful, but if -> consistent! +x check: echo without parameters == valid in posix? bin/cdist-object-run:45 and others +x bin/cdist-object-run-all: "->" graphic: can be useful, but if -> consistent! -> all graphics could look cool: Object foo @@ -12,36 +9,50 @@ but maybe bad do parse from outside -- bin/cdist-object-run: type_explorer stuff: probably put into own binary - - sounds like cdist-object-explorer-run is already the right executable to - place such stuff into - -- remove enormous amount of empty lines :-) +x advantage of touch/rm loop vs. y == variable? bin/cdist-object-run-all + also in bin/cdist-object-run + -> cool :-) +x remove enormous amount of empty lines :-) - at end of file - between [ $# -eq 2 ] || and set - after if - before fi +x code aus cdist-object-run-all für requirements: + in cdist-object-requirements oder so auslagern? + cdist-object-run-all wäre dann eine schöne zwei-zeiler-schleife + +x cdist-object-explorer-run and bin/cdist-object-run seem to contain + very very similar code regarding transfer and co. + -> indirect solved by moving code into cdist-object-explorer-run + +x cdist-object-manifest-run: + # Tell cdist that there may be new objects -> WHO? :-) + +x general: cdist-object-run-all looks like a good idea! + +- export $__cdist_name_var_self=$__cdist_object_self -> non core + +- bin/cdist-object-run: type_explorer stuff: probably put into own binary + - sounds like cdist-object-explorer-run is already the right executable to + place such stuff into + - cdist-type-explorer-push: wherefore if [ -d "$src_dir" ];? -> does this not even hide bugs? -> not sure whether covering cdist-dir in its own script makes sense, as cdist-dir push is only a one liner -> if cdist-dir does too less, enhance it + => merge into cdist-object-explorer-run -- code aus cdist-object-run-all für requirements: - in cdist-object-requirements oder so auslagern? - cdist-object-run-all wäre dann eine schöne zwei-zeiler-schleife +- marker for type transferred / pushed goes into out/type/ + -> new variables for out/type + -> new variables for out/type/.MARKERFOONAMEMEGOOD -- try to prefix all internal variables with __cdist! - - only avoid if waayyyyyyyyyyy tooooooooo long - - f.i.: cdist-object-explorer-run - -- cdist-object-explorer-run and bin/cdist-object-run seem to contain - very very similar code regarding transfer and co. - -- cdist-object-manifest-run: - # Tell cdist that there may be new objects -> WHO? :-) - -- general: cdist-object-run-all looks like a good idea! +- new function: __cdist_type_explorer_created $name + if ! -d foo -> mkdir foo, echo $name >> foo/$NEW_FANCY_VAR +- align messages (already in todo for steven, but makes life much easier, thus repeated) + -> prefix all object stuff with $__self + -> __cdist_echo object string + -> $__cdist_object_self :-) From f187ed257aed536c8b0d12a8d0d42bb83d327dec Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 14:36:35 +0200 Subject: [PATCH 0195/5240] implement the big code shuffle Signed-off-by: Steven Armstrong --- bin/cdist-config | 20 ++++++++++++++++++ bin/cdist-object-explorer-run | 14 +++++++++--- bin/cdist-object-manifest-run | 4 ++-- bin/cdist-object-run | 29 +++++++++++++------------ bin/cdist-object-run-all | 21 +++--------------- bin/cdist-type-explorer-push | 40 ----------------------------------- doc/dev/todo/steven-from-nico | 19 +++++++++-------- doc/man/cdist-stages.text | 7 ++++-- 8 files changed, 67 insertions(+), 87 deletions(-) delete mode 100755 bin/cdist-type-explorer-push diff --git a/bin/cdist-config b/bin/cdist-config index 9a00395d..2c751cd8 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -57,6 +57,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_object_finished:=done} : ${__cdist_name_object_id:=object_id} : ${__cdist_name_object_source:=source} +: ${__cdist_name_objects_created:=.objects_created} : ${__cdist_name_out_dir:=out} : ${__cdist_name_parameter:=parameter} : ${__cdist_name_parameter_required:=required} @@ -68,6 +69,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_type:=type} : ${__cdist_name_type_bin:=type_bin} : ${__cdist_name_type_explorer:=type_explorer} +: ${__cdist_name_type_explorer_pushed:=.explorer_pushed} # Used for IDs: Allow everything not starting with - and . : ${__cdist_sane_regexp:=[^-\.].*} @@ -115,6 +117,7 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") : ${__cdist_out_dir:=$__cdist_local_base_dir/$__cdist_name_out_dir} : ${__cdist_out_explorer_dir:=$__cdist_out_dir/$__cdist_name_explorer} : ${__cdist_out_object_dir:=$__cdist_out_dir/$__cdist_name_object} +: ${__cdist_out_type_dir:=$__cdist_out_dir/$__cdist_name_type} : ${__cdist_out_type_bin_dir:=$__cdist_out_dir/$__cdist_name_type_bin} ################################################################################ @@ -134,6 +137,11 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") : ${__cdist_remote_out_explorer_dir:=$__cdist_remote_out_dir/$__cdist_name_explorer} : ${__cdist_remote_out_object_dir:=$__cdist_remote_out_dir/$__cdist_name_object} +################################################################################ +# Global internal variables +# +: ${__cdist_objects_created:=$__cdist_out_object_dir/$__cdist_name_objects_created} + ################################################################################ # Internal functions # @@ -329,6 +337,18 @@ __cdist_type_has_explorer() fi } +__cdist_type_explorer_pushed() +{ + [ -f "${__cdist_out_type_dir}/${__cdist_name_type_explorer_pushed}" ] \ + && grep -q "$1" "${__cdist_out_type_dir}/${__cdist_name_type_explorer_pushed}" +} + +__cdist_type_explorer_pushed_add() +{ + [ -d "$__cdist_out_type_dir" ] || mkdir "$__cdist_out_type_dir" + echo "$1" >> "${__cdist_out_type_dir}/${__cdist_name_type_explorer_pushed}" +} + __cdist_type_gencode() { echo "${__cdist_type_dir}/$1/${__cdist_name_gencode}" diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index e9a20921..72ca7a1d 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -32,11 +32,19 @@ __object="$1"; shift __object_id="$(__cdist_object_id_from_object "$__object")" __cdist_type="$(__cdist_type_from_object "$__object")" -# Check if type of object has >= 1 explorer -__cdist_has_explorer="$(__cdist_type___cdist_has_explorer "$__cdist_type")" -# If so, run explorers on remote side +# Check if type of object has >= 1 explorer +__cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" +# Run the type explorers for the current object if any if [ "$__cdist_has_explorer" ]; then + if ! __cdist_type_explorer_pushed "$__cdist_type"; then + src_dir="$(__cdist_type_explorer_dir "$__cdist_type")" + dst_dir="$(__cdist_remote_type_explorer_dir "$__cdist_type")" + echo "Transfering explorers for $__cdist_type ..." + cdist-dir push "$__cdist_target_host" "$src_dir" "$dst_dir" + __cdist_type_explorer_pushed_add "$__cdist_type" + fi + echo "Running explorers for $__object ..." # Copy object parameters cdist-dir push "$__cdist_target_host" \ diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run index a65ed138..25378eb2 100755 --- a/bin/cdist-object-manifest-run +++ b/bin/cdist-object-manifest-run @@ -52,8 +52,8 @@ if [ -f "$__cdist_manifest" ]; then export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")" cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" - FIXME: Tell cdist that there may be new objects - WHO? Mama? - touch "$__cdist_new_objects_created" + # Tell cdist-object-run-all that there may be new objects + touch "$__cdist_objects_created" else __cdist_exit_err "${__cdist_manifest} needs to be executable." fi diff --git a/bin/cdist-object-run b/bin/cdist-object-run index 015d95fa..f5d846e3 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -40,23 +40,26 @@ touch "$__cdist_types_pushed" __cdist_object_finished="$(__cdist_object_finished "$__cdist_object")" if [ ! -f "$__cdist_object_finished" ]; then - echo - echo "Running object $__cdist_object" - # Check if type of object has >= 1 explorer - __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" + # Resolve dependencies if any + __cdist_object_require="$(__cdist_object_require "$__cdist_object")" + if [ -f "$__cdist_object_require" ]; then + echo + # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP + while read __cdist_requirement; do + set -- "$@" "$__cdist_requirement" + done < "$__cdist_object_require" - FIXME: put into cdist-object-explorer-run - # Run the type explorers for the current object if any - if [ "$__cdist_has_explorer" ]; then - if ! grep -q "$__cdist_type" "$__cdist_types_pushed"; then - cdist-type-explorer-push "$__cdist_target_host" "$__cdist_type" - echo "$__cdist_type" >> "$__cdist_types_pushed" - fi - - cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" + while [ $# -gt 0 ]; do + __cdist_requirement="$1"; shift + echo "Resolving dependency $__cdist_requirement for $__cdist_object ..." + cdist-object-run "$__cdist_target_host" "$__cdist_requirement" + done fi + echo + echo "Running object $__cdist_object" + cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" cdist-object-push "$__cdist_target_host" "$__cdist_object" diff --git a/bin/cdist-object-run-all b/bin/cdist-object-run-all index 7c87660b..c646ab16 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-run-all @@ -30,15 +30,12 @@ __cdist_target_host="$1"; shift __cdist_objects="$__cdist_tmp_dir/objects" -FIXME: reuse in subscripts, save in objects_base_dir -export __cdist_objects_created="$__cdist_tmp_dir/objects_created" - # Loop until we do not create new objects anymore # which is equal to all objects have been run -touch "$__cdist_new_objects_created" -while [ -f "$__cdist_new_objects_created" ]; do +touch "$__cdist_objects_created" +while [ -f "$__cdist_objects_created" ]; do # Assume we're done after this run - rm "$__cdist_new_objects_created" + rm "$__cdist_objects_created" # Get listing of objects __cdist_object_list "$__cdist_out_object_dir" > "$__cdist_objects" @@ -50,18 +47,6 @@ while [ -f "$__cdist_new_objects_created" ]; do while [ $# -gt 0 ]; do __cdist_object="$1"; shift - - FIXME: migrate into cdist-object-run - FIXME: take care of SSH foo after migration in while loop - __cdist_object_require="$(__cdist_object_require "$__cdist_object")" - if [ -f "$__cdist_object_require" ]; then - echo - while read __cdist_requirement; do - echo "Resolving dependency $__cdist_requirement for $__cdist_object ..." - cdist-object-run "$__cdist_target_host" "$__cdist_requirement" - done < "$__cdist_object_require" - fi - # Process the object cdist-object-run "$__cdist_target_host" "$__cdist_object" done diff --git a/bin/cdist-type-explorer-push b/bin/cdist-type-explorer-push deleted file mode 100755 index 7ba412ca..00000000 --- a/bin/cdist-type-explorer-push +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -# -# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) -# 2011 Steven Armstrong (steven-cdist at armstrong.cc) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Push the given types explorers to the target host -# - -. cdist-config -[ $# -eq 2 ] || __cdist_usage " " - -set -eu - -__cdist_target_host="$1"; shift -__cdist_type="$1"; shift - -src_dir="$(__cdist_type_explorer_dir "$__cdist_type")" -dst_dir="$(__cdist_remote_type_explorer_dir "$__cdist_type")" - -if [ -d "$src_dir" ]; then - echo "Transfering explorers for $__cdist_type ..." - cdist-dir push "$__cdist_target_host" "$src_dir" "$dst_dir" -fi - diff --git a/doc/dev/todo/steven-from-nico b/doc/dev/todo/steven-from-nico index c04e980f..2f0ca2b5 100644 --- a/doc/dev/todo/steven-from-nico +++ b/doc/dev/todo/steven-from-nico @@ -31,28 +31,29 @@ x cdist-object-manifest-run: x general: cdist-object-run-all looks like a good idea! -- export $__cdist_name_var_self=$__cdist_object_self -> non core - -- bin/cdist-object-run: type_explorer stuff: probably put into own binary - - sounds like cdist-object-explorer-run is already the right executable to - place such stuff into - -- cdist-type-explorer-push: wherefore if [ -d "$src_dir" ];? +x cdist-type-explorer-push: wherefore if [ -d "$src_dir" ];? -> does this not even hide bugs? -> not sure whether covering cdist-dir in its own script makes sense, as cdist-dir push is only a one liner -> if cdist-dir does too less, enhance it => merge into cdist-object-explorer-run -- marker for type transferred / pushed goes into out/type/ +x bin/cdist-object-run: type_explorer stuff: probably put into own binary + - sounds like cdist-object-explorer-run is already the right executable to + place such stuff into + +x marker for type transferred / pushed goes into out/type/ -> new variables for out/type -> new variables for out/type/.MARKERFOONAMEMEGOOD -- new function: __cdist_type_explorer_created $name +x new function: __cdist_type_explorer_created $name if ! -d foo -> mkdir foo, echo $name >> foo/$NEW_FANCY_VAR +- export $__cdist_name_var_self=$__cdist_object_self -> non core + - align messages (already in todo for steven, but makes life much easier, thus repeated) -> prefix all object stuff with $__self -> __cdist_echo object string -> $__cdist_object_self :-) + diff --git a/doc/man/cdist-stages.text b/doc/man/cdist-stages.text index 4ab93cff..fbd60cea 100644 --- a/doc/man/cdist-stages.text +++ b/doc/man/cdist-stages.text @@ -51,8 +51,11 @@ Related manpages: - cdist-manifest-run-init(1) -STAGE 3: EXECUTION OF TYPES ---------------------------- +STAGE 3: EXECUTION OF OBJECTS +----------------------------- +Each object in the cconfig database is run through the following stages: +- + Every object is checked whether its type has a manifest file. If the type has a manifest file and it is executable, it will be executed. The manifest script may generate and change the created objects. In other words, one type can reuse From 801d2be3d2fbfacd84affbd2e50f85685278d848 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 15:17:45 +0200 Subject: [PATCH 0196/5240] remove legacy variables Signed-off-by: Steven Armstrong --- bin/cdist-object-run | 2 -- 1 file changed, 2 deletions(-) diff --git a/bin/cdist-object-run b/bin/cdist-object-run index f5d846e3..af543316 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -35,8 +35,6 @@ __cdist_target_host="$1"; shift __cdist_object="$1"; shift __cdist_type="$(__cdist_type_from_object "$__cdist_object")" -__cdist_types_pushed="$__cdist_tmp_dir/types_pushed" -touch "$__cdist_types_pushed" __cdist_object_finished="$(__cdist_object_finished "$__cdist_object")" if [ ! -f "$__cdist_object_finished" ]; then From 32392d129a3cafdaca0ba509e1aada102e656b48 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 15:27:17 +0200 Subject: [PATCH 0197/5240] implement $__self Signed-off-by: Steven Armstrong --- bin/cdist-config | 2 ++ bin/cdist-object-explorer-run | 1 + bin/cdist-object-run | 2 ++ 3 files changed, 5 insertions(+) diff --git a/bin/cdist-config b/bin/cdist-config index 2c751cd8..19c127d4 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -63,6 +63,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_parameter_required:=required} : ${__cdist_name_parameter_optional:=optional} : ${__cdist_name_require:=require} +: ${__cdist_name_self:=self} : ${__cdist_name_singleton:=singleton} : ${__cdist_name_target_host:=target_host} : ${__cdist_name_target_user:=target_user} @@ -89,6 +90,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_var_target_user:=__$__cdist_name_target_user} : ${__cdist_name_var_object:=__$__cdist_name_object} : ${__cdist_name_var_object_id:=__$__cdist_name_object_id} +: ${__cdist_name_var_self:=__$__cdist_name_self} : ${__cdist_name_var_type:=__$__cdist_name_type} diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index 72ca7a1d..99e12e89 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -55,6 +55,7 @@ if [ "$__cdist_has_explorer" ]; then cdist-run-remote "$__cdist_target_host" \ "__object=\"$(__cdist_remote_object_dir "$__object")\"" \ "__object_id=\"$__object_id\"" \ + "$__cdist_name_var_self=\"$__cdist_object\"" \ cdist-remote-explorer-run \ "$__cdist_name_var_type_explorer" \ "$(__cdist_remote_type_explorer_dir "$__cdist_type")" \ diff --git a/bin/cdist-object-run b/bin/cdist-object-run index af543316..450ba361 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -33,6 +33,8 @@ set -eu __cdist_target_host="$1"; shift __cdist_object="$1"; shift +# Export to non-core for use in manifest and gencode scripts +export $__cdist_name_var_self=$__cdist_object __cdist_type="$(__cdist_type_from_object "$__cdist_object")" From ce62775aecd5117040cc4f188d5ff700e7dc46d7 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 15:29:56 +0200 Subject: [PATCH 0198/5240] remove hard coded variable names; prefix all variables with __cdist_ Signed-off-by: Steven Armstrong --- bin/cdist-object-explorer-run | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index 99e12e89..ff0668e5 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -27,10 +27,10 @@ set -eu __cdist_target_host="$1"; shift -__object="$1"; shift +__cdist_object="$1"; shift -__object_id="$(__cdist_object_id_from_object "$__object")" -__cdist_type="$(__cdist_type_from_object "$__object")" +__object_id="$(__cdist_object_id_from_object "$__cdist_object")" +__cdist_type="$(__cdist_type_from_object "$__cdist_object")" # Check if type of object has >= 1 explorer @@ -45,24 +45,24 @@ if [ "$__cdist_has_explorer" ]; then __cdist_type_explorer_pushed_add "$__cdist_type" fi - echo "Running explorers for $__object ..." + echo "Running explorers for $__cdist_object ..." # Copy object parameters cdist-dir push "$__cdist_target_host" \ - "$(__cdist_object_parameter_dir "$__object")" \ - "$(__cdist_remote_object_parameter_dir "$__object")" + "$(__cdist_object_parameter_dir "$__cdist_object")" \ + "$(__cdist_remote_object_parameter_dir "$__cdist_object")" # Execute explorers cdist-run-remote "$__cdist_target_host" \ - "__object=\"$(__cdist_remote_object_dir "$__object")\"" \ - "__object_id=\"$__object_id\"" \ - "$__cdist_name_var_self=\"$__cdist_object\"" \ + "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object")\"" \ + "$__cdist_name_var_object_id=\"$__object_id\"" \ + "$__cdist_name_var_self=\"$__cdist_object\"" \ cdist-remote-explorer-run \ "$__cdist_name_var_type_explorer" \ "$(__cdist_remote_type_explorer_dir "$__cdist_type")" \ - "$(__cdist_remote_object_type_explorer_dir "$__object")" + "$(__cdist_remote_object_type_explorer_dir "$__cdist_object")" # Copy back results cdist-dir pull "$__cdist_target_host" \ - "$(__cdist_remote_object_type_explorer_dir "$__object")" \ - "$(__cdist_object_type_explorer_dir "$__object")" + "$(__cdist_remote_object_type_explorer_dir "$__cdist_object")" \ + "$(__cdist_object_type_explorer_dir "$__cdist_object")" fi From f671df1c67abdebf79918596cd3407339c57d036 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 15:33:37 +0200 Subject: [PATCH 0199/5240] less todo Signed-off-by: Steven Armstrong --- doc/dev/todo/steven-from-nico | 54 ----------------------------------- 1 file changed, 54 deletions(-) diff --git a/doc/dev/todo/steven-from-nico b/doc/dev/todo/steven-from-nico index 2f0ca2b5..21c8fb52 100644 --- a/doc/dev/todo/steven-from-nico +++ b/doc/dev/todo/steven-from-nico @@ -1,57 +1,3 @@ -x check: echo without parameters == valid in posix? bin/cdist-object-run:45 and others -x bin/cdist-object-run-all: "->" graphic: can be useful, but if -> consistent! - -> all graphics could look cool: - - Object foo - | - |--> Requires ... - |--> ... - - but maybe bad do parse from outside - -x advantage of touch/rm loop vs. y == variable? bin/cdist-object-run-all - also in bin/cdist-object-run - -> cool :-) -x remove enormous amount of empty lines :-) - - at end of file - - between [ $# -eq 2 ] || and set - - after if - - before fi - -x code aus cdist-object-run-all für requirements: - in cdist-object-requirements oder so auslagern? - cdist-object-run-all wäre dann eine schöne zwei-zeiler-schleife - -x cdist-object-explorer-run and bin/cdist-object-run seem to contain - very very similar code regarding transfer and co. - -> indirect solved by moving code into cdist-object-explorer-run - -x cdist-object-manifest-run: - # Tell cdist that there may be new objects -> WHO? :-) - -x general: cdist-object-run-all looks like a good idea! - -x cdist-type-explorer-push: wherefore if [ -d "$src_dir" ];? - -> does this not even hide bugs? - -> not sure whether covering cdist-dir in its own script makes - sense, as cdist-dir push is only a one liner - -> if cdist-dir does too less, enhance it - => merge into cdist-object-explorer-run - -x bin/cdist-object-run: type_explorer stuff: probably put into own binary - - sounds like cdist-object-explorer-run is already the right executable to - place such stuff into - -x marker for type transferred / pushed goes into out/type/ - -> new variables for out/type - -> new variables for out/type/.MARKERFOONAMEMEGOOD - -x new function: __cdist_type_explorer_created $name - if ! -d foo -> mkdir foo, echo $name >> foo/$NEW_FANCY_VAR - -- export $__cdist_name_var_self=$__cdist_object_self -> non core - - - align messages (already in todo for steven, but makes life much easier, thus repeated) -> prefix all object stuff with $__self -> __cdist_echo object string From f2967ef9f13596a4fdaef6e7d07b569ed4ad1154 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 15:36:23 +0200 Subject: [PATCH 0200/5240] remove legacy script Signed-off-by: Steven Armstrong --- bin/cdist-manifest-run-all | 77 -------------------------------------- 1 file changed, 77 deletions(-) delete mode 100755 bin/cdist-manifest-run-all diff --git a/bin/cdist-manifest-run-all b/bin/cdist-manifest-run-all deleted file mode 100755 index a431576d..00000000 --- a/bin/cdist-manifest-run-all +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh -# -# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# Run all manifests -# - -. cdist-config -[ $# -eq 1 ] || __cdist_usage "" -set -eu - -__cdist_target_host="$1"; shift - -__cdist_objects_list="${__cdist_tmp_dir}/objects_file" -__cdist_new_objects_list="${__cdist_tmp_dir}/new_objects_file" - -# Loop until we do not create new objects anymore -# which is equal to all objects have been run -__cdist_new_objects_created=y -while [ "$__cdist_new_objects_created" = "y" ]; do - # Assume we're done after this run - __cdist_new_objects_created=n - - __cdist_object_list "$__cdist_out_object_dir" > "$__cdist_objects_list" - - # Check every object, if we need to run it - while read __cdist_object_self; do - # Full path to current object - __cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object_self")" - - # Only the id - __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_self} ..." - - __cdist_type="$(__cdist_type_from_object "$__cdist_object_self")" - __cdist_manifest="$(__cdist_type_manifest "${__cdist_type}")" - - 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")" - - cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" - __cdist_new_objects_created=y - else - __cdist_exit_err "${__cdist_manifest} needs to be executable." - fi - fi - fi - - # done with this object - touch "$__cdist_cur_object_dir/$__cdist_name_object_finished" - done < "$__cdist_objects_list" -done From 49e987236fed77a1fc4314a1637ac82b29eba3bc Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 15:42:17 +0200 Subject: [PATCH 0201/5240] add manpage for cdist-object-manifest-run Signed-off-by: Steven Armstrong --- doc/man/cdist-object-manifest-run.text | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 doc/man/cdist-object-manifest-run.text diff --git a/doc/man/cdist-object-manifest-run.text b/doc/man/cdist-object-manifest-run.text new file mode 100644 index 00000000..76132425 --- /dev/null +++ b/doc/man/cdist-object-manifest-run.text @@ -0,0 +1,32 @@ +cdist-object-manifest-run(1) +============================ +Nico Schottelius +Steven Armstrong + + +NAME +---- +cdist-object-manifest-run - Run an objects manifest + + +SYNOPSIS +-------- +cdist-object-manifest-run HOSTNAME OBJECT + + +DESCRIPTION +----------- +Run the manifest for the given object. + + +SEE ALSO +-------- +- cdist(7) +- cdist-deploy-to(1) +- cdist-manifest-run(1) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From 59cc3dc1b3afb9f5abc2a4dc55fd4984ed3b05b1 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 15:42:40 +0200 Subject: [PATCH 0202/5240] remove legacy manpage Signed-off-by: Steven Armstrong --- doc/man/cdist-manifest-run-all.text | 32 ----------------------------- 1 file changed, 32 deletions(-) delete mode 100644 doc/man/cdist-manifest-run-all.text diff --git a/doc/man/cdist-manifest-run-all.text b/doc/man/cdist-manifest-run-all.text deleted file mode 100644 index 717089ad..00000000 --- a/doc/man/cdist-manifest-run-all.text +++ /dev/null @@ -1,32 +0,0 @@ -cdist-manifest-run-all(1) -========================== -Nico Schottelius - - -NAME ----- -cdist-manifest-run-all - Run manifests of all created types - - -SYNOPSIS --------- -cdist-manifest-run-all HOSTNAME - - -DESCRIPTION ------------ -cdist-manifest-run-all iterates over every existing object and -executes the manifest of its type. - - -SEE ALSO --------- -- cdist(7) -- cdist-deploy-to(1) -- cdist-manifest-run-init(1) - - -COPYING -------- -Copyright \(C) 2011 Nico Schottelius. Free use of this software is -granted under the terms of the GNU General Public License version 3 (GPLv3). From 7ff24008308faf57bc1638c68e967230c918c4cc Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 15:43:37 +0200 Subject: [PATCH 0203/5240] remove legacy manpage Signed-off-by: Steven Armstrong --- doc/man/cdist-type-explorer-push.text | 32 --------------------------- 1 file changed, 32 deletions(-) delete mode 100644 doc/man/cdist-type-explorer-push.text diff --git a/doc/man/cdist-type-explorer-push.text b/doc/man/cdist-type-explorer-push.text deleted file mode 100644 index e32f10a4..00000000 --- a/doc/man/cdist-type-explorer-push.text +++ /dev/null @@ -1,32 +0,0 @@ -cdist-type-explorer-push(1) -=========================== -Nico Schottelius -Steven Armstrong - - -NAME ----- -cdist-type-explorer-push - Transfer type explorers to the target host - - -SYNOPSIS --------- -cdist-type-explorer-push HOSTNAME TYPE - - -DESCRIPTION ------------ -Transfers the explorers of the given type to the target host. - - -SEE ALSO --------- -- cdist(7) -- cdist-object-run(1) -- cdist-type(1) - - -COPYING -------- -Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is -granted under the terms of the GNU General Public License version 3 (GPLv3). From 7c920231b7ac1de4b3aead46b0ed288c29b0721f Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 16:11:38 +0200 Subject: [PATCH 0204/5240] update stages man page to reflect new situation Signed-off-by: Steven Armstrong --- doc/man/cdist-stages.text | 60 ++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/doc/man/cdist-stages.text b/doc/man/cdist-stages.text index fbd60cea..465a7fc8 100644 --- a/doc/man/cdist-stages.text +++ b/doc/man/cdist-stages.text @@ -1,6 +1,7 @@ cdist-stages(7) =============== Nico Schottelius +Steven Armstrong NAME @@ -12,8 +13,8 @@ DESCRIPTION ----------- Starting the execution of deployment with cdist-deploy-to(1), cdist passes through different stages, each can be triggered and debugged on its own. -Reading the source of the cdist-deploy-to executable shous the scripts -responsible for each stage. +Reading the source of the cdist-deploy-to and cdist-object-run-all executables +shows the scripts responsible for each stage. STAGE 0: INTERNAL PREPERATION @@ -23,7 +24,7 @@ to contain cdist binaries and creates a clean environment for the configuration run. Related manpages: - - cdist-bin-transfer(1) + - cdist-bin-transfer(1) FIXME: does not exist STAGE 1: TARGET INFORMATION RETRIEVAL @@ -34,6 +35,8 @@ explorers are copied back into the local cache. The results can be used by manifests and types. Related manpages: + - cdist-explorer-run-global(1) + - cdist-remote-explorer-run(1) - cdist-explorer(7) @@ -46,16 +49,27 @@ no conflicts may occur, i.e. no object of the same type with the same id may be created. Related manpages: - - cdist-manifest(7) - - cdist-manifest-run(1) - cdist-manifest-run-init(1) + - cdist-manifest-run(1) + - cdist-manifest(7) -STAGE 3: EXECUTION OF OBJECTS ------------------------------ -Each object in the cconfig database is run through the following stages: -- +STAGE 3: OBJECT INFORMATION RETRIEVAL +------------------------------------- +Every object is checked whether its type has explorers and if so, these are +transfered to the target host and executed. The results are transfered back +and can be used in the following stages to decide what changes need to made +on the target to implement the desired state. +Related manpages: + - cdist-object-explorer-run(1) + - cdist-remote-explorer-run(1) + - cdist-type(7) + - cdist-explorer(7) + + +STAGE 4: RUN THE OBJECT MANIFEST +-------------------------------- Every object is checked whether its type has a manifest file. If the type has a manifest file and it is executable, it will be executed. The manifest script may generate and change the created objects. In other words, one type can reuse @@ -69,12 +83,12 @@ may occur during the merge. A conflict would mean that two different objects try to create the same object, which indicates a broken configuration. Related manpages: + - cdist-object-manifest-run(1) - cdist-manifest-run(1) - - cdist-manifest-run-all(1) - cdist-type(7) -STAGE 4: CODE GENERATION +STAGE 5: CODE GENERATION ------------------------ In this stage for every created objects its type is checked whether it has a gencode script. If the type has a gencode script and it is executable it will @@ -83,19 +97,27 @@ on stdout. If the gencode executable fails, it must print diagnostic messages on stderr and exit non-zero. Related manpages: - - cdist-gencode(1) - - cdist-gencode-all(1) + - cdist-object-gencode-run(1) + - cdist-object-gencode(1) - cdist-type(7) -STAGE 5: CODE EXECUTION +STAGE 6: CODE EXECUTION ----------------------- -The resulting code from the previous stage is transferred to the target host -and executed there to apply the configuration changes, +For every object the resulting code from the previous stage is transferred to +the target host and executed there to apply the configuration changes. Related manpages: - - cdist-exec-run(1) - - cdist-exec-transfer(1) + - cdist-object-code-run(1) + - cdist-code-run(1) + + +STAGE 7: CACHE +-------------- +The cache stores the information from the current run for later use. + +Related manpages: + - cdist-cache(1) SUMMARY @@ -115,5 +137,5 @@ SEE ALSO COPYING ------- -Copyright \(C) 2010-2011 Nico Schottelius. Free use of this software is +Copyright \(C) 2010-2011 Nico Schottelius, Steven Armstrong. Free use of this software is granted under the terms of the GNU General Public License version 3 (GPLv3). From 44fd2e3c1ce0f59e0c0b0d4de54c4c5a2955b4f9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:23:45 +0200 Subject: [PATCH 0205/5240] :%s/Related manpages/Related documentation/g Signed-off-by: Nico Schottelius --- doc/man/cdist-stages.text | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/man/cdist-stages.text b/doc/man/cdist-stages.text index 465a7fc8..279e1d5f 100644 --- a/doc/man/cdist-stages.text +++ b/doc/man/cdist-stages.text @@ -23,7 +23,7 @@ Before running the user facing stages, cdist prepares the target host to contain cdist binaries and creates a clean environment for the configuration run. -Related manpages: +Related documentation: - cdist-bin-transfer(1) FIXME: does not exist @@ -34,7 +34,7 @@ explorers. Every existing explorer is run on the target and the output of all explorers are copied back into the local cache. The results can be used by manifests and types. -Related manpages: +Related documentation: - cdist-explorer-run-global(1) - cdist-remote-explorer-run(1) - cdist-explorer(7) @@ -48,7 +48,7 @@ the objects as defined in the manifest for the specific host. In this stage, no conflicts may occur, i.e. no object of the same type with the same id may be created. -Related manpages: +Related documentation: - cdist-manifest-run-init(1) - cdist-manifest-run(1) - cdist-manifest(7) @@ -61,7 +61,7 @@ transfered to the target host and executed. The results are transfered back and can be used in the following stages to decide what changes need to made on the target to implement the desired state. -Related manpages: +Related documentation: - cdist-object-explorer-run(1) - cdist-remote-explorer-run(1) - cdist-type(7) @@ -82,7 +82,7 @@ The newly created objects are merged back into the existing tree. No conflicts may occur during the merge. A conflict would mean that two different objects try to create the same object, which indicates a broken configuration. -Related manpages: +Related documentation: - cdist-object-manifest-run(1) - cdist-manifest-run(1) - cdist-type(7) @@ -96,7 +96,7 @@ be executed. This executable should create code to be executed on the target on stdout. If the gencode executable fails, it must print diagnostic messages on stderr and exit non-zero. -Related manpages: +Related documentation: - cdist-object-gencode-run(1) - cdist-object-gencode(1) - cdist-type(7) @@ -107,7 +107,7 @@ STAGE 6: CODE EXECUTION For every object the resulting code from the previous stage is transferred to the target host and executed there to apply the configuration changes. -Related manpages: +Related documentation: - cdist-object-code-run(1) - cdist-code-run(1) @@ -116,7 +116,7 @@ STAGE 7: CACHE -------------- The cache stores the information from the current run for later use. -Related manpages: +Related documentation: - cdist-cache(1) From e2e4936103379d6e25de2198a633b6bc8ae9bfca Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:24:13 +0200 Subject: [PATCH 0206/5240] -FIXME in doc/man/cdist-stages.text Signed-off-by: Nico Schottelius --- doc/man/cdist-stages.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/man/cdist-stages.text b/doc/man/cdist-stages.text index 279e1d5f..6ac6efe2 100644 --- a/doc/man/cdist-stages.text +++ b/doc/man/cdist-stages.text @@ -24,7 +24,7 @@ to contain cdist binaries and creates a clean environment for the configuration run. Related documentation: - - cdist-bin-transfer(1) FIXME: does not exist + - Source of cdist-deploy-to STAGE 1: TARGET INFORMATION RETRIEVAL From 3fae65539e58b02cbad9bc3e901f65098bad6772 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 16:25:26 +0200 Subject: [PATCH 0207/5240] remove legacy man pages Signed-off-by: Steven Armstrong --- build.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index 709c1c55..335bbe9c 100755 --- a/build.sh +++ b/build.sh @@ -70,12 +70,11 @@ case "$1" in ;; man1) - for man in cdist-code-run.text cdist-code-run-all.text cdist-config.text \ + for man in cdist-code-run.text cdist-config.text \ cdist-dir.text cdist-env.text cdist-explorer-run-global.text \ cdist-deploy-to.text cdist-explorer.text cdist-manifest.text \ cdist-manifest-run.text cdist-manifest-run-init.text \ - cdist-manifest-run-all.text cdist-object-explorer-all.text \ - cdist-object-gencode.text cdist-object-gencode-all.text \ + cdist-object-gencode.text \ cdist-remote-explorer-run.text cdist-run-remote.text \ cdist-type-build-emulation.text cdist-type-emulator.text \ cdist-type-template.text From ad7a9f82f77526a2c52b30447686ecf6391cd6e3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:27:57 +0200 Subject: [PATCH 0208/5240] __cdist_objects_created == local output Signed-off-by: Nico Schottelius --- bin/cdist-config | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 19c127d4..1882d1bb 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -122,6 +122,8 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") : ${__cdist_out_type_dir:=$__cdist_out_dir/$__cdist_name_type} : ${__cdist_out_type_bin_dir:=$__cdist_out_dir/$__cdist_name_type_bin} +: ${__cdist_objects_created:=$__cdist_out_object_dir/$__cdist_name_objects_created} + ################################################################################ # Remote base # @@ -139,10 +141,6 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") : ${__cdist_remote_out_explorer_dir:=$__cdist_remote_out_dir/$__cdist_name_explorer} : ${__cdist_remote_out_object_dir:=$__cdist_remote_out_dir/$__cdist_name_object} -################################################################################ -# Global internal variables -# -: ${__cdist_objects_created:=$__cdist_out_object_dir/$__cdist_name_objects_created} ################################################################################ # Internal functions From 6be9d02e6a8f588d4b40ef0fdf01743d8f9736cc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:28:59 +0200 Subject: [PATCH 0209/5240] consistency: function {} begin on next line Signed-off-by: Nico Schottelius --- bin/cdist-config | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 1882d1bb..531f709c 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -185,11 +185,13 @@ __cdist_init_deploy() ln -sf "$__cdist_conf_dir" "$__cdist_local_base_dir/$__cdist_name_conf_dir" } -__cdist_new_objects_created() { +__cdist_new_objects_created() +{ touch "$__cdist_tmp_dir/object_created" } -__cdist_has_new_objects() { +__cdist_has_new_objects() +{ touch "$__cdist_tmp_dir/object_created" } @@ -267,7 +269,6 @@ __cdist_object_type_explorer_dir() echo "$(__cdist_object_dir "$1")/${__cdist_name_explorer}" } - ################################################################################ # Remote # From 0422eda599f51916c9c7d3cbd213b818d00c62e0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:33:09 +0200 Subject: [PATCH 0210/5240] WARNING: WHITESPACE-NAZI Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 138f7714..e63d3dfb 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -17,5 +17,3 @@ Types to be written/extended: - regexp replace (can probably cover all?) -> aka sed. - __cron - - From a5586aecff4ef3a37e41da1fe86b772027130329 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 16:36:10 +0200 Subject: [PATCH 0211/5240] changelog++ Signed-off-by: Steven Armstrong --- doc/changelog | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/changelog b/doc/changelog index 7faf789b..20c59b93 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,7 +1,11 @@ 1.5.0: * Add cache functionality * New type __process - * Restructured execution: Run whole object at once (REPHRASE) (Steven Armstrong) + * Restructured execution: (Steven Armstrong) + Process each object as a whole, resolve dependencies and ensure + correct execution order. + * Documentation: Rewrite stages docs + * Documentation: Remove legacy man pages 1.4.1: 2011-03-25 * New type __key_value (Steven Armstrong) From ebbacf48732ee2375a7fe8704985162ce121ed87 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 16:41:38 +0200 Subject: [PATCH 0212/5240] remove unused functions Signed-off-by: Steven Armstrong --- bin/cdist-config | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 531f709c..eb2a8e90 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -185,16 +185,6 @@ __cdist_init_deploy() ln -sf "$__cdist_conf_dir" "$__cdist_local_base_dir/$__cdist_name_conf_dir" } -__cdist_new_objects_created() -{ - touch "$__cdist_tmp_dir/object_created" -} - -__cdist_has_new_objects() -{ - touch "$__cdist_tmp_dir/object_created" -} - ################################################################################ # Object # From 5024c4bf580141e049bc30e825c660306295eeb5 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:45:16 +0200 Subject: [PATCH 0213/5240] more changes, quote author correctly Signed-off-by: Nico Schottelius --- doc/changelog | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/changelog b/doc/changelog index 20c59b93..5e0e2314 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,11 +1,11 @@ 1.5.0: - * Add cache functionality + * Add basic cache functionality * New type __process * Restructured execution: (Steven Armstrong) Process each object as a whole, resolve dependencies and ensure correct execution order. - * Documentation: Rewrite stages docs - * Documentation: Remove legacy man pages + * Documentation: Rewrite stages docs (Steven Armstrong) + * Documentation: Remove legacy man pages (Steven Armstrong) 1.4.1: 2011-03-25 * New type __key_value (Steven Armstrong) From 1d057560766e2377e1aa4fa914f0a1d368c321f9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:47:02 +0200 Subject: [PATCH 0214/5240] release 1.5.0 Signed-off-by: Nico Schottelius --- README | 3 ++- bin/cdist-config | 2 +- doc/changelog | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README b/README index c498e3b8..a62ac61c 100644 --- a/README +++ b/README @@ -127,10 +127,11 @@ how to use cdist. There are at least the following branches available: * master: the development branch - * 1.4: Support for redefiniton of objects (if equal) + * 1.5: Focus on object orientation instead of global stage orientation Old versions: + * 1.4: Support for redefiniton of objects (if equal) * 1.3: Support for local and remote code execution (current stable) * 1.2: Dependencies supported * 1.1: __file to __file, __directory, __link migration diff --git a/bin/cdist-config b/bin/cdist-config index eb2a8e90..ae84ced4 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -19,7 +19,7 @@ # # -__cdist_version="1.5.0pre" +__cdist_version="1.5.0" # Fail if something bogus is going on set -u diff --git a/doc/changelog b/doc/changelog index 5e0e2314..d3091fd7 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,4 +1,4 @@ -1.5.0: +1.5.0: 2011-03-29 * Add basic cache functionality * New type __process * Restructured execution: (Steven Armstrong) From f64c7988de1ecdc1af61be97bc74a47b04e09e88 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 16:52:27 +0200 Subject: [PATCH 0215/5240] document __self Signed-off-by: Steven Armstrong --- doc/man/cdist-reference.text.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/man/cdist-reference.text.sh b/doc/man/cdist-reference.text.sh index f6840880..48954b8e 100755 --- a/doc/man/cdist-reference.text.sh +++ b/doc/man/cdist-reference.text.sh @@ -166,6 +166,9 @@ __object:: __object_id:: The type unique object id. Available for: type manifest, type explorer, type codegen +__self:: + The full qualified name of the current object. + Available for: type manifest, type explorer, type codegen __target_host:: The host we are deploying to. Available for: initial manifest, type manifest, type codegen From a891a951e71736136de2c88855ff0252b11d7fed Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:49:05 +0200 Subject: [PATCH 0216/5240] cleanup todos Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 11 +++++++++++ doc/dev/todo/niconext | 12 +----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index a591038c..7e6a44d9 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -21,3 +21,14 @@ DOCUMENTATION -------------- - asciidoc interprets __, which we use for variables names -> seek through docs and replace with \_\_! +- check all all internal variables are prefixed with __cdist + +Cache: + - add example how to use + - export variable $__cache + -> for current host + -> add function to cdist-config, import from cdist-cache + + +remove --preseed from package_apt and add debconf_set_selection or similar + -> much cleaner! diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index be66a33d..29229d64 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,11 +1 @@ -/ prefix all internal variables with __cdist! -> Nico - -Cache: - - add example how to use - - export variable $__cache - -> for current host - -> add function to cdist-config, import from cdist-cache - - -remove --preseed from package_apt and add debconf_set_selection or similar - -> much cleaner! +Release 1.5.0 correctly :-) From 1ca8aec2066a19e1ec58e59a80a84420f56e81bb Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:49:49 +0200 Subject: [PATCH 0217/5240] update web/readme Signed-off-by: Nico Schottelius --- README | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README b/README index a62ac61c..3a4b2051 100644 --- a/README +++ b/README @@ -144,7 +144,8 @@ may vanish at any point. To select a specific branch use git checkout -b origin/ # Stay on a specific version - git checkout -b 1.4 origin/1.4 + version=1.5 + git checkout -b $version origin/$version ### Mirrors From dde2f370546e03a1e2a85b11162c20aadd80b87f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:51:11 +0200 Subject: [PATCH 0218/5240] make build.sh die on error Signed-off-by: Nico Schottelius --- build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.sh b/build.sh index 335bbe9c..52b3466e 100755 --- a/build.sh +++ b/build.sh @@ -23,6 +23,9 @@ # Pull a directory from a target, both sides have the same name (i.e. explorers) # +# exit on any error +set -e + # Manpage and HTML A2XM="a2x -f manpage --no-xmllint" A2XH="a2x -f xhtml --no-xmllint" From 9a56c5122c86649e6665516c77d82f7668523378 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:52:53 +0200 Subject: [PATCH 0219/5240] +release target in build.sh Signed-off-by: Nico Schottelius --- build.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.sh b/build.sh index 52b3466e..1d02256f 100755 --- a/build.sh +++ b/build.sh @@ -99,6 +99,10 @@ case "$1" in ${MANDIR}/cdist-reference.text.sh ;; + release) + "$0" clean && "$0" man && "$0" web + ;; + web) cp README ${WEBDIR}/${WEBPAGE} rm -rf ${WEBDIR}/${WEBBASE}/man && mkdir ${WEBDIR}/${WEBBASE}/man From bcbabe885b6c8ecfbe0cc346ece8034e658a2374 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:54:11 +0200 Subject: [PATCH 0220/5240] authors on one line Signed-off-by: Nico Schottelius --- doc/man/cdist-stages.text | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/man/cdist-stages.text b/doc/man/cdist-stages.text index 6ac6efe2..cbd541fe 100644 --- a/doc/man/cdist-stages.text +++ b/doc/man/cdist-stages.text @@ -1,7 +1,6 @@ cdist-stages(7) =============== -Nico Schottelius -Steven Armstrong +Nico Schottelius , Steven Armstrong NAME From 022e255d7a0bb497e19cf9f5c48e723c3a0e4f6b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 29 Mar 2011 16:55:40 +0200 Subject: [PATCH 0221/5240] less line breaks in asciidoc Signed-off-by: Nico Schottelius --- doc/man/cdist-object-code-run.text | 3 +-- doc/man/cdist-object-explorer-run.text | 3 +-- doc/man/cdist-object-gencode-run.text | 3 +-- doc/man/cdist-object-push.text | 3 +-- doc/man/cdist-object-run-all.text | 3 +-- doc/man/cdist-object-run.text | 3 +-- 6 files changed, 6 insertions(+), 12 deletions(-) diff --git a/doc/man/cdist-object-code-run.text b/doc/man/cdist-object-code-run.text index 4d19b5eb..c662d4c3 100644 --- a/doc/man/cdist-object-code-run.text +++ b/doc/man/cdist-object-code-run.text @@ -1,7 +1,6 @@ cdist-object-code-run(1) ======================== -Nico Schottelius -Steven Armstrong +Nico Schottelius , Steven Armstrong NAME diff --git a/doc/man/cdist-object-explorer-run.text b/doc/man/cdist-object-explorer-run.text index a94047c3..a1c87cd6 100644 --- a/doc/man/cdist-object-explorer-run.text +++ b/doc/man/cdist-object-explorer-run.text @@ -1,7 +1,6 @@ cdist-object-explorer-run(1) ============================ -Nico Schottelius -Steven Armstrong +Nico Schottelius , Steven Armstrong NAME diff --git a/doc/man/cdist-object-gencode-run.text b/doc/man/cdist-object-gencode-run.text index d69d1787..fc93ebfd 100644 --- a/doc/man/cdist-object-gencode-run.text +++ b/doc/man/cdist-object-gencode-run.text @@ -1,7 +1,6 @@ cdist-object-gencode-run(1) =========================== -Nico Schottelius -Steven Armstrong +Nico Schottelius , Steven Armstrong NAME diff --git a/doc/man/cdist-object-push.text b/doc/man/cdist-object-push.text index 69648a4d..168f5190 100644 --- a/doc/man/cdist-object-push.text +++ b/doc/man/cdist-object-push.text @@ -1,7 +1,6 @@ cdist-object-push(1) ==================== -Nico Schottelius -Steven Armstrong +Nico Schottelius , Steven Armstrong NAME diff --git a/doc/man/cdist-object-run-all.text b/doc/man/cdist-object-run-all.text index a3a8d56b..2b27347c 100644 --- a/doc/man/cdist-object-run-all.text +++ b/doc/man/cdist-object-run-all.text @@ -1,7 +1,6 @@ cdist-object-run-all(1) ======================= -Nico Schottelius -Steven Armstrong +Nico Schottelius , Steven Armstrong NAME diff --git a/doc/man/cdist-object-run.text b/doc/man/cdist-object-run.text index b527c0e6..b91e50ca 100644 --- a/doc/man/cdist-object-run.text +++ b/doc/man/cdist-object-run.text @@ -1,7 +1,6 @@ cdist-object-run(1) =================== -Nico Schottelius -Steven Armstrong +Nico Schottelius , Steven Armstrong NAME From d27afe352860c366b7c4decddde2a516a4444d35 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 17:24:40 +0200 Subject: [PATCH 0222/5240] move manpages Signed-off-by: Steven Armstrong --- doc/man/{ => man1}/cdist-cache.text | 0 doc/man/{ => man1}/cdist-code-run.text | 0 doc/man/{ => man1}/cdist-config.text | 0 doc/man/{ => man1}/cdist-deploy-to.text | 0 doc/man/{ => man1}/cdist-dir.text | 0 doc/man/{ => man1}/cdist-env.text | 0 doc/man/{ => man1}/cdist-explorer-run-global.text | 0 doc/man/{ => man1}/cdist-manifest-run-init.text | 0 doc/man/{ => man1}/cdist-manifest-run.text | 0 doc/man/{ => man1}/cdist-object-code-run.text | 0 doc/man/{ => man1}/cdist-object-explorer-run.text | 0 doc/man/{ => man1}/cdist-object-gencode-run.text | 0 doc/man/{ => man1}/cdist-object-gencode.text | 0 doc/man/{ => man1}/cdist-object-manifest-run.text | 0 doc/man/{ => man1}/cdist-object-push.text | 0 doc/man/{ => man1}/cdist-object-run-all.text | 0 doc/man/{ => man1}/cdist-object-run.text | 0 doc/man/{ => man1}/cdist-quickstart.text | 0 doc/man/{ => man1}/cdist-remote-explorer-run.text | 0 doc/man/{ => man1}/cdist-run-remote.text | 0 doc/man/{ => man1}/cdist-type-build-emulation.text | 0 doc/man/{ => man1}/cdist-type-emulator.text | 0 doc/man/{ => man1}/cdist-type-template.text | 0 doc/man/{ => man7}/cdist-best-practice.text | 0 doc/man/{ => man7}/cdist-explorer.text | 0 doc/man/{ => man7}/cdist-hacker.text | 0 doc/man/{ => man7}/cdist-manifest.text | 0 doc/man/{ => man7}/cdist-stages.text | 0 doc/man/{ => man7}/cdist-type.text | 0 doc/man/{ => man7}/cdist.text | 0 30 files changed, 0 insertions(+), 0 deletions(-) rename doc/man/{ => man1}/cdist-cache.text (100%) rename doc/man/{ => man1}/cdist-code-run.text (100%) rename doc/man/{ => man1}/cdist-config.text (100%) rename doc/man/{ => man1}/cdist-deploy-to.text (100%) rename doc/man/{ => man1}/cdist-dir.text (100%) rename doc/man/{ => man1}/cdist-env.text (100%) rename doc/man/{ => man1}/cdist-explorer-run-global.text (100%) rename doc/man/{ => man1}/cdist-manifest-run-init.text (100%) rename doc/man/{ => man1}/cdist-manifest-run.text (100%) rename doc/man/{ => man1}/cdist-object-code-run.text (100%) rename doc/man/{ => man1}/cdist-object-explorer-run.text (100%) rename doc/man/{ => man1}/cdist-object-gencode-run.text (100%) rename doc/man/{ => man1}/cdist-object-gencode.text (100%) rename doc/man/{ => man1}/cdist-object-manifest-run.text (100%) rename doc/man/{ => man1}/cdist-object-push.text (100%) rename doc/man/{ => man1}/cdist-object-run-all.text (100%) rename doc/man/{ => man1}/cdist-object-run.text (100%) rename doc/man/{ => man1}/cdist-quickstart.text (100%) rename doc/man/{ => man1}/cdist-remote-explorer-run.text (100%) rename doc/man/{ => man1}/cdist-run-remote.text (100%) rename doc/man/{ => man1}/cdist-type-build-emulation.text (100%) rename doc/man/{ => man1}/cdist-type-emulator.text (100%) rename doc/man/{ => man1}/cdist-type-template.text (100%) rename doc/man/{ => man7}/cdist-best-practice.text (100%) rename doc/man/{ => man7}/cdist-explorer.text (100%) rename doc/man/{ => man7}/cdist-hacker.text (100%) rename doc/man/{ => man7}/cdist-manifest.text (100%) rename doc/man/{ => man7}/cdist-stages.text (100%) rename doc/man/{ => man7}/cdist-type.text (100%) rename doc/man/{ => man7}/cdist.text (100%) diff --git a/doc/man/cdist-cache.text b/doc/man/man1/cdist-cache.text similarity index 100% rename from doc/man/cdist-cache.text rename to doc/man/man1/cdist-cache.text diff --git a/doc/man/cdist-code-run.text b/doc/man/man1/cdist-code-run.text similarity index 100% rename from doc/man/cdist-code-run.text rename to doc/man/man1/cdist-code-run.text diff --git a/doc/man/cdist-config.text b/doc/man/man1/cdist-config.text similarity index 100% rename from doc/man/cdist-config.text rename to doc/man/man1/cdist-config.text diff --git a/doc/man/cdist-deploy-to.text b/doc/man/man1/cdist-deploy-to.text similarity index 100% rename from doc/man/cdist-deploy-to.text rename to doc/man/man1/cdist-deploy-to.text diff --git a/doc/man/cdist-dir.text b/doc/man/man1/cdist-dir.text similarity index 100% rename from doc/man/cdist-dir.text rename to doc/man/man1/cdist-dir.text diff --git a/doc/man/cdist-env.text b/doc/man/man1/cdist-env.text similarity index 100% rename from doc/man/cdist-env.text rename to doc/man/man1/cdist-env.text diff --git a/doc/man/cdist-explorer-run-global.text b/doc/man/man1/cdist-explorer-run-global.text similarity index 100% rename from doc/man/cdist-explorer-run-global.text rename to doc/man/man1/cdist-explorer-run-global.text diff --git a/doc/man/cdist-manifest-run-init.text b/doc/man/man1/cdist-manifest-run-init.text similarity index 100% rename from doc/man/cdist-manifest-run-init.text rename to doc/man/man1/cdist-manifest-run-init.text diff --git a/doc/man/cdist-manifest-run.text b/doc/man/man1/cdist-manifest-run.text similarity index 100% rename from doc/man/cdist-manifest-run.text rename to doc/man/man1/cdist-manifest-run.text diff --git a/doc/man/cdist-object-code-run.text b/doc/man/man1/cdist-object-code-run.text similarity index 100% rename from doc/man/cdist-object-code-run.text rename to doc/man/man1/cdist-object-code-run.text diff --git a/doc/man/cdist-object-explorer-run.text b/doc/man/man1/cdist-object-explorer-run.text similarity index 100% rename from doc/man/cdist-object-explorer-run.text rename to doc/man/man1/cdist-object-explorer-run.text diff --git a/doc/man/cdist-object-gencode-run.text b/doc/man/man1/cdist-object-gencode-run.text similarity index 100% rename from doc/man/cdist-object-gencode-run.text rename to doc/man/man1/cdist-object-gencode-run.text diff --git a/doc/man/cdist-object-gencode.text b/doc/man/man1/cdist-object-gencode.text similarity index 100% rename from doc/man/cdist-object-gencode.text rename to doc/man/man1/cdist-object-gencode.text diff --git a/doc/man/cdist-object-manifest-run.text b/doc/man/man1/cdist-object-manifest-run.text similarity index 100% rename from doc/man/cdist-object-manifest-run.text rename to doc/man/man1/cdist-object-manifest-run.text diff --git a/doc/man/cdist-object-push.text b/doc/man/man1/cdist-object-push.text similarity index 100% rename from doc/man/cdist-object-push.text rename to doc/man/man1/cdist-object-push.text diff --git a/doc/man/cdist-object-run-all.text b/doc/man/man1/cdist-object-run-all.text similarity index 100% rename from doc/man/cdist-object-run-all.text rename to doc/man/man1/cdist-object-run-all.text diff --git a/doc/man/cdist-object-run.text b/doc/man/man1/cdist-object-run.text similarity index 100% rename from doc/man/cdist-object-run.text rename to doc/man/man1/cdist-object-run.text diff --git a/doc/man/cdist-quickstart.text b/doc/man/man1/cdist-quickstart.text similarity index 100% rename from doc/man/cdist-quickstart.text rename to doc/man/man1/cdist-quickstart.text diff --git a/doc/man/cdist-remote-explorer-run.text b/doc/man/man1/cdist-remote-explorer-run.text similarity index 100% rename from doc/man/cdist-remote-explorer-run.text rename to doc/man/man1/cdist-remote-explorer-run.text diff --git a/doc/man/cdist-run-remote.text b/doc/man/man1/cdist-run-remote.text similarity index 100% rename from doc/man/cdist-run-remote.text rename to doc/man/man1/cdist-run-remote.text diff --git a/doc/man/cdist-type-build-emulation.text b/doc/man/man1/cdist-type-build-emulation.text similarity index 100% rename from doc/man/cdist-type-build-emulation.text rename to doc/man/man1/cdist-type-build-emulation.text diff --git a/doc/man/cdist-type-emulator.text b/doc/man/man1/cdist-type-emulator.text similarity index 100% rename from doc/man/cdist-type-emulator.text rename to doc/man/man1/cdist-type-emulator.text diff --git a/doc/man/cdist-type-template.text b/doc/man/man1/cdist-type-template.text similarity index 100% rename from doc/man/cdist-type-template.text rename to doc/man/man1/cdist-type-template.text diff --git a/doc/man/cdist-best-practice.text b/doc/man/man7/cdist-best-practice.text similarity index 100% rename from doc/man/cdist-best-practice.text rename to doc/man/man7/cdist-best-practice.text diff --git a/doc/man/cdist-explorer.text b/doc/man/man7/cdist-explorer.text similarity index 100% rename from doc/man/cdist-explorer.text rename to doc/man/man7/cdist-explorer.text diff --git a/doc/man/cdist-hacker.text b/doc/man/man7/cdist-hacker.text similarity index 100% rename from doc/man/cdist-hacker.text rename to doc/man/man7/cdist-hacker.text diff --git a/doc/man/cdist-manifest.text b/doc/man/man7/cdist-manifest.text similarity index 100% rename from doc/man/cdist-manifest.text rename to doc/man/man7/cdist-manifest.text diff --git a/doc/man/cdist-stages.text b/doc/man/man7/cdist-stages.text similarity index 100% rename from doc/man/cdist-stages.text rename to doc/man/man7/cdist-stages.text diff --git a/doc/man/cdist-type.text b/doc/man/man7/cdist-type.text similarity index 100% rename from doc/man/cdist-type.text rename to doc/man/man7/cdist-type.text diff --git a/doc/man/cdist.text b/doc/man/man7/cdist.text similarity index 100% rename from doc/man/cdist.text rename to doc/man/man7/cdist.text From ac274802dee55104a92ea4bcda8dfe6e0f6d8c94 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 18:12:19 +0200 Subject: [PATCH 0223/5240] update build.sh to work with new man source layout Signed-off-by: Steven Armstrong --- build.sh | 44 ++++++++------------------------------------ 1 file changed, 8 insertions(+), 36 deletions(-) diff --git a/build.sh b/build.sh index 1d02256f..a6a0e7b0 100755 --- a/build.sh +++ b/build.sh @@ -24,7 +24,7 @@ # # exit on any error -set -e +#set -e # Manpage and HTML A2XM="a2x -f manpage --no-xmllint" @@ -43,11 +43,8 @@ MAN7DSTDIR=${MANDIR}/man7 case "$1" in man) set -e - "$0" mandirs "$0" mangen "$0" mantype - "$0" man1 - "$0" man7 "$0" manbuild ;; @@ -57,12 +54,6 @@ case "$1" in $A2XM "$src" $A2XH "$src" done - wait - ;; - - mandirs) - # Create destination directories - mkdir -p "${MAN1DSTDIR}" "${MAN7DSTDIR}" ;; mantype) @@ -72,29 +63,6 @@ case "$1" in done ;; - man1) - for man in cdist-code-run.text cdist-config.text \ - cdist-dir.text cdist-env.text cdist-explorer-run-global.text \ - cdist-deploy-to.text cdist-explorer.text cdist-manifest.text \ - cdist-manifest-run.text cdist-manifest-run-init.text \ - cdist-object-gencode.text \ - cdist-remote-explorer-run.text cdist-run-remote.text \ - cdist-type-build-emulation.text cdist-type-emulator.text \ - cdist-type-template.text - do - ln -sf ../$man ${MAN1DSTDIR} - done - ;; - - man7) - for man in cdist.text cdist-best-practice.text cdist-hacker.text \ - cdist-quickstart.text cdist-reference.text cdist-stages.text \ - cdist-type.text cdist-cache.text - do - ln -sf ../$man ${MAN7DSTDIR} - done - ;; - mangen) ${MANDIR}/cdist-reference.text.sh ;; @@ -118,8 +86,13 @@ case "$1" in ;; clean) - rm -rf "$MAN1DSTDIR" "$MAN7DSTDIR" - rm -f ${MANDIR}/cdist-reference.text + rm -f ${MANDIR}/cdist-reference.text + find "${MANDIR}" -mindepth 2 -type l \ + -o -name "*.1" \ + -o -name "*.7" \ + -o -name "*.html" \ + -o -name "*.xml" \ + | xargs rm -f ;; *) @@ -129,7 +102,6 @@ case "$1" in echo 'Here are the possible targets:' echo '' echo ' man: Build manpages (requires Asciidoc)' - echo ' manhtml: Build html-manpages (requires Asciidoc)' echo ' clean: Remove build stuff' echo '' echo '' From fb426bd412ed1e0f1843a0bcad9dde939310e948 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 20:10:40 +0200 Subject: [PATCH 0224/5240] __directory type does not have a destination parameter Signed-off-by: Steven Armstrong --- conf/type/__directory/explorer/exists | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/conf/type/__directory/explorer/exists b/conf/type/__directory/explorer/exists index b0be82fc..f8b85671 100755 --- a/conf/type/__directory/explorer/exists +++ b/conf/type/__directory/explorer/exists @@ -21,11 +21,7 @@ # Check whether file exists or not # -if [ -f "$__object/parameter/destination" ]; then - destination="$(cat "$__object/parameter/destination")" -else - destination="/$__object_id" -fi +destination="/$__object_id" if [ -e "$destination" ]; then echo yes From 2345d6509bc8ba2000c4d88d27f6976c04345325 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 21:20:07 +0200 Subject: [PATCH 0225/5240] add missing function call to __cdist_usage Signed-off-by: Steven Armstrong --- bin/cdist-type-emulator | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index b3ed1f3d..d0464533 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -25,7 +25,7 @@ # . cdist-config -set -eu +set -u ################################################################################ # Prepare object and type @@ -137,7 +137,7 @@ cd "$__cdist_parameter_dir" for parameter in $(ls -1); do is_valid=$(grep "^$parameter\$" "$__cdist_tmp_file") - [ "$is_valid" ] || "Unknown parameter $parameter" + [ "$is_valid" ] || __cdist_usage "Unknown parameter $parameter" done ################################################################################ From fe159eccb2946a85c1b0654a5258c3f45f5c31d5 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 21:47:05 +0200 Subject: [PATCH 0226/5240] prefix all variables with __cdist Signed-off-by: Steven Armstrong --- bin/cdist-code-run | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index e969d942..db1a2378 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -25,22 +25,22 @@ [ $# -eq 2 ] || __cdist_usage " " set -ue -object="$1"; shift +__cdist_object="$1"; shift __cdist_gencode_type="$1"; shift -if [ ! -d "$(__cdist_object_dir "$object")" ]; then - __cdist_exit_err "Object $object is missing." +if [ ! -d "$(__cdist_object_dir "$__cdist_object")" ]; then + __cdist_exit_err "Object $__cdist_object is missing." fi -code="$(__cdist_object_code "$object")-${__cdist_gencode_type}" +code="$(__cdist_object_code "$__cdist_object")-${__cdist_gencode_type}" -echo "Checking code-${__cdist_gencode_type} for $object ..." +echo "Checking code-${__cdist_gencode_type} for $__cdist_object ..." if [ -e "$code" ]; then if [ -f "$code" ]; then if [ -x "$code" ]; then - echo "Executing code-${__cdist_gencode_type} for $object ..." + echo "Executing code-${__cdist_gencode_type} for $__cdist_object ..." "$code" else __cdist_exit_err "$code exists, but is not executable." @@ -49,5 +49,5 @@ if [ -e "$code" ]; then __cdist_exit_err "$code exists, but is not a file." fi else - __cdist_exit_err "Missing code for ${object}." + __cdist_exit_err "Missing code for ${__cdist_object}." fi From 878f7d18ce295126ae4362d368e3a4bc37512fb2 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 21:49:06 +0200 Subject: [PATCH 0227/5240] move export of __cdist_out_object_dir to cdist-run-remote Signed-off-by: Steven Armstrong --- bin/cdist-object-code-run | 1 - bin/cdist-run-remote | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/cdist-object-code-run b/bin/cdist-object-code-run index d0722788..97cb58ac 100755 --- a/bin/cdist-object-code-run +++ b/bin/cdist-object-code-run @@ -36,6 +36,5 @@ cdist-code-run "$__cdist_object" "${__cdist_name_gencode_local}" \ # Code remote cdist-run-remote "$__cdist_target_host" \ - "export __cdist_out_object_dir=\"$__cdist_remote_out_object_dir\";" \ "cdist-code-run" "$__cdist_object" "${__cdist_name_gencode_remote}" \ || __cdist_exit_err "Remote code failed for $__cdist_object" diff --git a/bin/cdist-run-remote b/bin/cdist-run-remote index 93cf9062..4a4452a2 100755 --- a/bin/cdist-run-remote +++ b/bin/cdist-run-remote @@ -28,4 +28,6 @@ set -ue __cdist_target_host="$1"; shift ssh "${__cdist_remote_user}@${__cdist_target_host}" \ - "export PATH=\"${__cdist_remote_bin_dir}:\$PATH\";" "$@" + "export PATH=\"${__cdist_remote_bin_dir}:\$PATH\";" \ + "export __cdist_out_object_dir=\"$__cdist_remote_out_object_dir\";" \ + "$@" From 1cfdc6886f7aeaf1f241a4673b0485e04c4a4917 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 21:51:59 +0200 Subject: [PATCH 0228/5240] fail if a requested object is not defined Signed-off-by: Steven Armstrong --- bin/cdist-object-run | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/cdist-object-run b/bin/cdist-object-run index 450ba361..e3fc1629 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -33,6 +33,9 @@ set -eu __cdist_target_host="$1"; shift __cdist_object="$1"; shift +__cdist_object_dir="$(__cdist_object_dir "$__cdist_object")" +[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Requested object is not defined: $__cdist_object" + # Export to non-core for use in manifest and gencode scripts export $__cdist_name_var_self=$__cdist_object From e7f7a883575ab7ece200771bda3368fdac34c83a Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 22:00:54 +0200 Subject: [PATCH 0229/5240] prefix error messages with Error: Signed-off-by: Steven Armstrong --- bin/cdist-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index ae84ced4..9cd3a53c 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -160,7 +160,7 @@ __cdist_exec_fail_on_error() __cdist_exit_err() { - echo "$@" >&2 + echo "Error: $@" >&2 exit 1 } From 90448a479de47aa482e2975471e6edf4e51698bb Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 23:52:31 +0200 Subject: [PATCH 0230/5240] only generate man|html pages when necessery; allow the process to be interrupted Signed-off-by: Steven Armstrong --- build.sh | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/build.sh b/build.sh index a6a0e7b0..7fbb94cc 100755 --- a/build.sh +++ b/build.sh @@ -49,10 +49,24 @@ case "$1" in ;; manbuild) - for src in ${MAN1DSTDIR}/*.text ${MAN7DSTDIR}/*.text; do - echo "Compiling manpage and html for $src" - $A2XM "$src" - $A2XH "$src" + trap abort INT + abort() { + kill 0 + } + for section in 1 7; do + for src in ${MANDIR}/man${section}/*.text; do + manpage="${src%.text}.$section" + if [ ! -f "$manpage" -o "$manpage" -ot "$src" ]; then + echo "Compiling manpage for $src" + setsid $A2XM "$src" + a2x_pids="" + fi + htmlpage="${src%.text}.html" + if [ ! -f "$htmlpage" -o "$htmlpage" -ot "$src" ]; then + echo "Compiling html for $src" + $A2XH "$src" + fi + done done ;; From d85af22ce3a928246fee7f7579fe80d1bd90a958 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 29 Mar 2011 23:57:37 +0200 Subject: [PATCH 0231/5240] remove second author, asciidoc/docbook cant handle it Signed-off-by: Steven Armstrong --- doc/man/man1/cdist-object-code-run.text | 2 +- doc/man/man1/cdist-object-explorer-run.text | 2 +- doc/man/man1/cdist-object-gencode-run.text | 2 +- doc/man/man1/cdist-object-manifest-run.text | 1 - doc/man/man1/cdist-object-push.text | 2 +- doc/man/man1/cdist-object-run-all.text | 2 +- doc/man/man1/cdist-object-run.text | 2 +- doc/man/man7/cdist-stages.text | 5 ++--- 8 files changed, 8 insertions(+), 10 deletions(-) diff --git a/doc/man/man1/cdist-object-code-run.text b/doc/man/man1/cdist-object-code-run.text index c662d4c3..a055fc97 100644 --- a/doc/man/man1/cdist-object-code-run.text +++ b/doc/man/man1/cdist-object-code-run.text @@ -1,6 +1,6 @@ cdist-object-code-run(1) ======================== -Nico Schottelius , Steven Armstrong +Nico Schottelius NAME diff --git a/doc/man/man1/cdist-object-explorer-run.text b/doc/man/man1/cdist-object-explorer-run.text index a1c87cd6..a791681e 100644 --- a/doc/man/man1/cdist-object-explorer-run.text +++ b/doc/man/man1/cdist-object-explorer-run.text @@ -1,6 +1,6 @@ cdist-object-explorer-run(1) ============================ -Nico Schottelius , Steven Armstrong +Nico Schottelius NAME diff --git a/doc/man/man1/cdist-object-gencode-run.text b/doc/man/man1/cdist-object-gencode-run.text index fc93ebfd..be2d3448 100644 --- a/doc/man/man1/cdist-object-gencode-run.text +++ b/doc/man/man1/cdist-object-gencode-run.text @@ -1,6 +1,6 @@ cdist-object-gencode-run(1) =========================== -Nico Schottelius , Steven Armstrong +Nico Schottelius NAME diff --git a/doc/man/man1/cdist-object-manifest-run.text b/doc/man/man1/cdist-object-manifest-run.text index 76132425..a6f12f78 100644 --- a/doc/man/man1/cdist-object-manifest-run.text +++ b/doc/man/man1/cdist-object-manifest-run.text @@ -1,7 +1,6 @@ cdist-object-manifest-run(1) ============================ Nico Schottelius -Steven Armstrong NAME diff --git a/doc/man/man1/cdist-object-push.text b/doc/man/man1/cdist-object-push.text index 168f5190..5bff71cf 100644 --- a/doc/man/man1/cdist-object-push.text +++ b/doc/man/man1/cdist-object-push.text @@ -1,6 +1,6 @@ cdist-object-push(1) ==================== -Nico Schottelius , Steven Armstrong +Nico Schottelius NAME diff --git a/doc/man/man1/cdist-object-run-all.text b/doc/man/man1/cdist-object-run-all.text index 2b27347c..9e36b3d4 100644 --- a/doc/man/man1/cdist-object-run-all.text +++ b/doc/man/man1/cdist-object-run-all.text @@ -1,6 +1,6 @@ cdist-object-run-all(1) ======================= -Nico Schottelius , Steven Armstrong +Nico Schottelius NAME diff --git a/doc/man/man1/cdist-object-run.text b/doc/man/man1/cdist-object-run.text index b91e50ca..fca6db91 100644 --- a/doc/man/man1/cdist-object-run.text +++ b/doc/man/man1/cdist-object-run.text @@ -1,6 +1,6 @@ cdist-object-run(1) =================== -Nico Schottelius , Steven Armstrong +Nico Schottelius NAME diff --git a/doc/man/man7/cdist-stages.text b/doc/man/man7/cdist-stages.text index cbd541fe..e2eef3da 100644 --- a/doc/man/man7/cdist-stages.text +++ b/doc/man/man7/cdist-stages.text @@ -1,7 +1,6 @@ cdist-stages(7) =============== -Nico Schottelius , Steven Armstrong - +Nico Schottelius NAME ---- @@ -27,7 +26,7 @@ Related documentation: STAGE 1: TARGET INFORMATION RETRIEVAL --------------------------------------- +------------------------------------- In this stage information is collected about the target host using so called explorers. Every existing explorer is run on the target and the output of all explorers are copied back into the local cache. The results can be used by From 61b7b6867167a7d5a377f7ede31b0d92ed3bd47f Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 30 Mar 2011 22:46:49 +0200 Subject: [PATCH 0232/5240] split explorer/manifest and gencode runcode into to 2 steps Signed-off-by: Steven Armstrong --- bin/cdist-config | 6 +++ bin/cdist-deploy-to | 3 +- ...{cdist-object-run-all => cdist-object-all} | 8 ++-- bin/cdist-object-process | 48 +++++++++++++++++++ bin/cdist-object-run | 6 +-- 5 files changed, 62 insertions(+), 9 deletions(-) rename bin/{cdist-object-run-all => cdist-object-all} (88%) create mode 100755 bin/cdist-object-process diff --git a/bin/cdist-config b/bin/cdist-config index 9cd3a53c..393a963b 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -55,6 +55,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_manifest:=manifest} : ${__cdist_name_object:=object} : ${__cdist_name_object_finished:=done} +: ${__cdist_name_object_processed:=processed} : ${__cdist_name_object_id:=object_id} : ${__cdist_name_object_source:=source} : ${__cdist_name_objects_created:=.objects_created} @@ -194,6 +195,11 @@ __cdist_object_code() echo "$(__cdist_object_dir "$1")/${__cdist_name_code}" } +__cdist_object_processed() +{ + echo "$(__cdist_object_dir "$1")/${__cdist_name_object_processed}" +} + __cdist_object_finished() { echo "$(__cdist_object_dir "$1")/${__cdist_name_object_finished}" diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index e44ceff4..aeae3b6c 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -49,7 +49,8 @@ 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-object-run-all "$__cdist_target_host" +cdist-object-all "$__cdist_target_host" cdist-object-process +cdist-object-all "$__cdist_target_host" cdist-object-run cdist-cache "$__cdist_target_host" echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" diff --git a/bin/cdist-object-run-all b/bin/cdist-object-all similarity index 88% rename from bin/cdist-object-run-all rename to bin/cdist-object-all index c646ab16..28df0613 100755 --- a/bin/cdist-object-run-all +++ b/bin/cdist-object-all @@ -19,14 +19,15 @@ # along with cdist. If not, see . # # -# Run cdist-object-run for each created object. +# Run the given command for each created object. # . cdist-config -[ $# -eq 1 ] || __cdist_usage "" +[ $# -eq 2 ] || __cdist_usage " " set -eu __cdist_target_host="$1"; shift +__cdist_command="$1"; shift __cdist_objects="$__cdist_tmp_dir/objects" @@ -47,7 +48,6 @@ while [ -f "$__cdist_objects_created" ]; do while [ $# -gt 0 ]; do __cdist_object="$1"; shift - # Process the object - cdist-object-run "$__cdist_target_host" "$__cdist_object" + $__cdist_command "$__cdist_target_host" "$__cdist_object" done done diff --git a/bin/cdist-object-process b/bin/cdist-object-process new file mode 100755 index 00000000..371f3737 --- /dev/null +++ b/bin/cdist-object-process @@ -0,0 +1,48 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# For the given object: +# - run type explorers +# - run type manifest +# + +. cdist-config +[ $# -eq 2 ] || __cdist_usage " " +set -eu + +__cdist_target_host="$1"; shift +__cdist_object="$1"; shift +__cdist_object_dir="$(__cdist_object_dir "$__cdist_object")" +[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Requested object is not defined: $__cdist_object" + +# Export to non-core for use in manifest and gencode scripts +export $__cdist_name_var_self=$__cdist_object + +__cdist_object_processed="$(__cdist_object_processed "$__cdist_object")" +if [ ! -f "$__cdist_object_processed" ]; then + echo + echo "Processing object $__cdist_object" + cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" + cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" + + # Mark this object as done + touch "$__cdist_object_processed" +fi diff --git a/bin/cdist-object-run b/bin/cdist-object-run index e3fc1629..b49c8c2d 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -39,8 +39,6 @@ __cdist_object_dir="$(__cdist_object_dir "$__cdist_object")" # Export to non-core for use in manifest and gencode scripts export $__cdist_name_var_self=$__cdist_object -__cdist_type="$(__cdist_type_from_object "$__cdist_object")" - __cdist_object_finished="$(__cdist_object_finished "$__cdist_object")" if [ ! -f "$__cdist_object_finished" ]; then @@ -62,8 +60,8 @@ if [ ! -f "$__cdist_object_finished" ]; then echo echo "Running object $__cdist_object" - cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" - cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" + #cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" + #cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" cdist-object-push "$__cdist_target_host" "$__cdist_object" cdist-object-code-run "$__cdist_target_host" "$__cdist_object" From e7ff4c37ff555700398a61647dcc2d973845d0e3 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 31 Mar 2011 11:08:10 +0200 Subject: [PATCH 0233/5240] remove legacy commented code Signed-off-by: Steven Armstrong --- bin/cdist-object-process | 2 +- bin/cdist-object-run | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/bin/cdist-object-process b/bin/cdist-object-process index 371f3737..d10840e8 100755 --- a/bin/cdist-object-process +++ b/bin/cdist-object-process @@ -43,6 +43,6 @@ if [ ! -f "$__cdist_object_processed" ]; then cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" - # Mark this object as done + # Mark this object as processed touch "$__cdist_object_processed" fi diff --git a/bin/cdist-object-run b/bin/cdist-object-run index b49c8c2d..6c159ecf 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -60,8 +60,6 @@ if [ ! -f "$__cdist_object_finished" ]; then echo echo "Running object $__cdist_object" - #cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" - #cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" cdist-object-push "$__cdist_target_host" "$__cdist_object" cdist-object-code-run "$__cdist_target_host" "$__cdist_object" From dd176d7a642745ac2f748f81928abc4be88a8cc9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 31 Mar 2011 15:40:08 +0200 Subject: [PATCH 0234/5240] construct cache dir path in cdist-config, not cdist-cache Signed-off-by: Nico Schottelius --- bin/cdist-cache | 12 ++++++------ bin/cdist-config | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/bin/cdist-cache b/bin/cdist-cache index 120b0df2..f9480162 100755 --- a/bin/cdist-cache +++ b/bin/cdist-cache @@ -27,11 +27,11 @@ set -u __cdist_target_host="$1"; shift +__cdist_ddir="$(__cdist_host_cache_dir "$__cdist_target_host")" -mkdir -p "${__cdist_local_base_cache_dir}" -__cdist_abs_cache_dir="$(cd "$__cdist_local_base_cache_dir" && pwd -P)" -__cdist_abs_ddir="$__cdist_abs_cache_dir/$__cdist_target_host" +# Create base to move into +mkdir -p "$(__cdist_cache_dir)" -echo "Saving cache to $__cdist_abs_ddir ..." -rm -rf "$__cdist_abs_ddir" -mv "$__cdist_local_base_dir" "$__cdist_abs_ddir" +echo "Saving cache to $__cdist_ddir ..." +rm -rf "$__cdist_ddir" +mv "$__cdist_local_base_dir" "$__cdist_ddir" diff --git a/bin/cdist-config b/bin/cdist-config index 393a963b..fac1b5c6 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -105,6 +105,8 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") # Local Base # : ${__cdist_local_base_dir:=$__cdist_tmp_dir} + +# Cache may *NOT* be below __cdist_local_base_dir! : ${__cdist_local_base_cache_dir:=$__cdist_abs_mydir/../$__cdist_name_cache} : ${__cdist_conf_dir:="$(cd "$__cdist_abs_mydir/../conf" && pwd -P)"} @@ -186,6 +188,19 @@ __cdist_init_deploy() ln -sf "$__cdist_conf_dir" "$__cdist_local_base_dir/$__cdist_name_conf_dir" } +################################################################################ +# Cache +# +__cdist_cache_dir() +{ + cd "${__cdist_local_base_cache_dir}" && pwd -P +} + +__cdist_host_cache_dir() +{ + echo "$(__cdist_cache_dir)/$1" +} + ################################################################################ # Object # From 7431802b0357c7a528a33d88f4ec94864e190912 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 31 Mar 2011 15:43:07 +0200 Subject: [PATCH 0235/5240] ++todo Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 7e6a44d9..e85ddebd 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -6,6 +6,10 @@ Feel free to pick one! CORE ---- - Only build manpages if necessary for types as well as for the core! +- Add echo function: + __cdist_echo [level] [messages...] + level := syslog alike: + debug, notice, err TYPES ------ From 9955dc74c670d25270ada8bab2b280753143f33e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 31 Mar 2011 18:43:08 +0200 Subject: [PATCH 0236/5240] cleanups in bin/ Signed-off-by: Nico Schottelius --- bin/cdist-code-run | 1 - bin/cdist-deploy-to | 6 +++--- bin/cdist-dir | 5 +---- doc/dev/todo/TAKEME | 3 +++ 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index db1a2378..54cb312f 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -36,7 +36,6 @@ code="$(__cdist_object_code "$__cdist_object")-${__cdist_gencode_type}" echo "Checking code-${__cdist_gencode_type} for $__cdist_object ..." - if [ -e "$code" ]; then if [ -f "$code" ]; then if [ -x "$code" ]; then diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index aeae3b6c..02fd34fa 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -18,7 +18,7 @@ # along with cdist. If not, see . # # -# Apply configuration to a host +# Deploy configuration to a host # . cdist-config @@ -45,8 +45,8 @@ __cdist_init_deploy "$__cdist_target_host" # Transfer cdist executables echo "Transferring cdist binaries to $__cdist_target_host ..." -cdist-dir push "$__cdist_target_host" "${__cdist_abs_mydir}" "${__cdist_remote_bin_dir}" - +cdist-dir push "$__cdist_target_host" \ + "${__cdist_abs_mydir}" "${__cdist_remote_bin_dir}" cdist-explorer-run-global "$__cdist_target_host" cdist-manifest-run-init "$__cdist_target_host" cdist-object-all "$__cdist_target_host" cdist-object-process diff --git a/bin/cdist-dir b/bin/cdist-dir index 72f4730b..0d30e14a 100755 --- a/bin/cdist-dir +++ b/bin/cdist-dir @@ -25,14 +25,11 @@ . cdist-config -if [ $# -ne 4 ]; then - __cdist_usage " " -fi +[ $# -eq 4 ] || __cdist_usage " " set -ue __cdist_action="$1"; shift __cdist_target_host="$1"; shift - __cdist_src_dir="$1"; shift __cdist_dst_dir="$1"; shift diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index e85ddebd..7807c9e0 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -10,6 +10,9 @@ CORE __cdist_echo [level] [messages...] level := syslog alike: debug, notice, err +- Think about moving cdist-type-build-emulation out of cdist-manifest-run to + cdist-deploy-to: more dependency of cdist-manifest-run, but a lot of + less cycles consumed TYPES ------ From b3d7cf31925767be55f6baf399326722eb3c2432 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 31 Mar 2011 19:35:26 +0200 Subject: [PATCH 0237/5240] more cleanups, __cdist prefixes Signed-off-by: Nico Schottelius --- bin/cdist-object-explorer-run | 7 +++---- bin/cdist-object-gencode-run | 10 +++++----- doc/dev/todo/TAKEME | 3 +++ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index ff0668e5..4d8e2321 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -32,7 +32,6 @@ __cdist_object="$1"; shift __object_id="$(__cdist_object_id_from_object "$__cdist_object")" __cdist_type="$(__cdist_type_from_object "$__cdist_object")" - # Check if type of object has >= 1 explorer __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" # Run the type explorers for the current object if any @@ -47,8 +46,8 @@ if [ "$__cdist_has_explorer" ]; then echo "Running explorers for $__cdist_object ..." # Copy object parameters - cdist-dir push "$__cdist_target_host" \ - "$(__cdist_object_parameter_dir "$__cdist_object")" \ + cdist-dir push "$__cdist_target_host" \ + "$(__cdist_object_parameter_dir "$__cdist_object")" \ "$(__cdist_remote_object_parameter_dir "$__cdist_object")" # Execute explorers @@ -62,7 +61,7 @@ if [ "$__cdist_has_explorer" ]; then "$(__cdist_remote_object_type_explorer_dir "$__cdist_object")" # Copy back results - cdist-dir pull "$__cdist_target_host" \ + cdist-dir pull "$__cdist_target_host" \ "$(__cdist_remote_object_type_explorer_dir "$__cdist_object")" \ "$(__cdist_object_type_explorer_dir "$__cdist_object")" fi diff --git a/bin/cdist-object-gencode-run b/bin/cdist-object-gencode-run index bfc65730..4d21fec9 100755 --- a/bin/cdist-object-gencode-run +++ b/bin/cdist-object-gencode-run @@ -29,15 +29,15 @@ set -eu __cdist_target_host="$1"; shift __cdist_object="$1"; shift -code_local="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_local}" -code_remote="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_remote}" +__cdist_code_local="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_local}" +__cdist_code_remote="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_remote}" echo "Generating local code for $__cdist_object ..." cdist-object-gencode "$__cdist_target_host" "$__cdist_object" \ - "${__cdist_name_gencode_local}" > "${code_local}" + "${__cdist_name_gencode_local}" > "${__cdist_code_local}" echo "Generating remote code for $__cdist_object ..." cdist-object-gencode "$__cdist_target_host" "$__cdist_object" \ - "${__cdist_name_gencode_remote}" > "${code_remote}" + "${__cdist_name_gencode_remote}" > "${__cdist_code_remote}" -chmod u+x "${code_local}" "${code_remote}" +chmod u+x "${__cdist_code_local}" "${__cdist_code_remote}" diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 7807c9e0..4dc5b53b 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -14,6 +14,9 @@ CORE cdist-deploy-to: more dependency of cdist-manifest-run, but a lot of less cycles consumed +- cdist-object-gencode: remove code if output empty? + - also take care of that in cdist-code-run! + TYPES ------ Types to be written/extended: From 5359ed863cde6f920e0e59ec474e8a3ddbe9dfc6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 31 Mar 2011 20:21:08 +0200 Subject: [PATCH 0238/5240] +cleanups++ Signed-off-by: Nico Schottelius --- bin/cdist-object-manifest-run | 2 +- bin/cdist-object-process | 2 +- doc/dev/todo/TAKEME | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run index 25378eb2..74a81469 100755 --- a/bin/cdist-object-manifest-run +++ b/bin/cdist-object-manifest-run @@ -46,12 +46,12 @@ if [ -f "$__cdist_manifest" ]; then 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")" cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest" + # Tell cdist-object-run-all that there may be new objects touch "$__cdist_objects_created" else diff --git a/bin/cdist-object-process b/bin/cdist-object-process index d10840e8..777d2c88 100755 --- a/bin/cdist-object-process +++ b/bin/cdist-object-process @@ -31,7 +31,7 @@ set -eu __cdist_target_host="$1"; shift __cdist_object="$1"; shift __cdist_object_dir="$(__cdist_object_dir "$__cdist_object")" -[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Requested object is not defined: $__cdist_object" +[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined: $__cdist_object" # Export to non-core for use in manifest and gencode scripts export $__cdist_name_var_self=$__cdist_object diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 4dc5b53b..03c4f244 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -16,6 +16,7 @@ CORE - cdist-object-gencode: remove code if output empty? - also take care of that in cdist-code-run! +- cdist-object-process -> cdist-object-prepare TYPES ------ From 7d0877d8ceb4055e6267632689034fdc65a2a3af Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 31 Mar 2011 20:29:22 +0200 Subject: [PATCH 0239/5240] ++cleanups Signed-off-by: Nico Schottelius --- bin/cdist-object-manifest-run | 3 --- bin/cdist-object-run | 3 +-- bin/cdist-type-emulator | 1 - bin/cdist-type-template | 1 - doc/dev/todo/TAKEME | 9 ++++++++- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run index 74a81469..ce44cbbc 100755 --- a/bin/cdist-object-manifest-run +++ b/bin/cdist-object-manifest-run @@ -29,10 +29,7 @@ set -eu __cdist_target_host="$1"; shift __cdist_object="$1"; shift -# Full path to current object __cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object")" - -# Only the id __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" echo "Checking manifest for $__cdist_object ..." diff --git a/bin/cdist-object-run b/bin/cdist-object-run index 6c159ecf..667bf386 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -41,8 +41,7 @@ export $__cdist_name_var_self=$__cdist_object __cdist_object_finished="$(__cdist_object_finished "$__cdist_object")" if [ ! -f "$__cdist_object_finished" ]; then - - # Resolve dependencies if any + # Resolve dependencies, if any __cdist_object_require="$(__cdist_object_require "$__cdist_object")" if [ -f "$__cdist_object_require" ]; then echo diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index d0464533..2dcb47b3 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -53,7 +53,6 @@ if [ "$(echo $__cdist_object_id | grep "^/")" ]; then else __cdist_object_self="${__cdist_type}/${__cdist_object_id}" fi - ################################################################################ # Internal quirks # diff --git a/bin/cdist-type-template b/bin/cdist-type-template index cd34027c..dc853614 100755 --- a/bin/cdist-type-template +++ b/bin/cdist-type-template @@ -27,7 +27,6 @@ set -eu __cdist_type="$1"; shift - # Base mkdir -p "$(__cdist_type_dir "$__cdist_type")" diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 03c4f244..e4edeabe 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -6,10 +6,11 @@ Feel free to pick one! CORE ---- - Only build manpages if necessary for types as well as for the core! -- Add echo function: +- Add echo function / beautify output __cdist_echo [level] [messages...] level := syslog alike: debug, notice, err + Include object_self prefixing, if given! - Think about moving cdist-type-build-emulation out of cdist-manifest-run to cdist-deploy-to: more dependency of cdist-manifest-run, but a lot of less cycles consumed @@ -17,6 +18,12 @@ CORE - cdist-object-gencode: remove code if output empty? - also take care of that in cdist-code-run! - cdist-object-process -> cdist-object-prepare +- Remove cdist-object-push, covers only one line and is used only once: + [20:22] kr:bin% grep cdist-object-push * + cdist-object-run: cdist-object-push "$__cdist_target_host" "$__cdist_object" + [20:22] kr:bin% + +- probably remove or improve cdist-type-template TYPES ------ From db1f1d0c2d406c18b2ef26212c261158fac26017 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 31 Mar 2011 20:46:58 +0200 Subject: [PATCH 0240/5240] remove leftovers from experimenting with process group control Signed-off-by: Steven Armstrong --- build.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 7fbb94cc..ab62287e 100755 --- a/build.sh +++ b/build.sh @@ -58,8 +58,7 @@ case "$1" in manpage="${src%.text}.$section" if [ ! -f "$manpage" -o "$manpage" -ot "$src" ]; then echo "Compiling manpage for $src" - setsid $A2XM "$src" - a2x_pids="" + $A2XM "$src" fi htmlpage="${src%.text}.html" if [ ! -f "$htmlpage" -o "$htmlpage" -ot "$src" ]; then From c69feec5a0cfac25541aba7be7661c24f33e3ced Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 31 Mar 2011 20:49:02 +0200 Subject: [PATCH 0241/5240] -todo: conditional manpage building Signed-off-by: Steven Armstrong --- doc/dev/todo/TAKEME | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index e85ddebd..7f319790 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -5,7 +5,6 @@ Feel free to pick one! CORE ---- -- Only build manpages if necessary for types as well as for the core! - Add echo function: __cdist_echo [level] [messages...] level := syslog alike: From dbed2f1f83b0729ca57a57b3c37e269f658bef98 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 31 Mar 2011 21:44:44 +0200 Subject: [PATCH 0242/5240] 1.5 not yet released, correct changelog Signed-off-by: Nico Schottelius --- doc/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/changelog b/doc/changelog index d3091fd7..5e0e2314 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,4 +1,4 @@ -1.5.0: 2011-03-29 +1.5.0: * Add basic cache functionality * New type __process * Restructured execution: (Steven Armstrong) From a648aa5333d331123f7e4da00bb562b710ea8d18 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 31 Mar 2011 22:25:56 +0200 Subject: [PATCH 0243/5240] fix cdist-object-all: ensure output directory exists Signed-off-by: Nico Schottelius --- bin/cdist-object-all | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/cdist-object-all b/bin/cdist-object-all index 28df0613..391c9cc7 100755 --- a/bin/cdist-object-all +++ b/bin/cdist-object-all @@ -31,6 +31,9 @@ __cdist_command="$1"; shift __cdist_objects="$__cdist_tmp_dir/objects" +# Ensure object dir exists, so marker can be created +mkdir -p "${__cdist_out_object_dir}" + # Loop until we do not create new objects anymore # which is equal to all objects have been run touch "$__cdist_objects_created" From 1a0ef5ac6328ec8014710ae676a246682ff3cdce Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 09:56:44 +0200 Subject: [PATCH 0244/5240] update changelog Signed-off-by: Nico Schottelius --- doc/changelog | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/changelog b/doc/changelog index 5e0e2314..2fcb8b46 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,9 +1,9 @@ -1.5.0: +1.5.0: 2011-04-01 * Add basic cache functionality * New type __process * Restructured execution: (Steven Armstrong) - Process each object as a whole, resolve dependencies and ensure - correct execution order. + Orientate processing on objects, resolve dependencies and + ensure correct execution order. * Documentation: Rewrite stages docs (Steven Armstrong) * Documentation: Remove legacy man pages (Steven Armstrong) From 815d8cc8cdb22a155062afdfc5e87f9bdf2d7830 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 10:03:43 +0200 Subject: [PATCH 0245/5240] no incompat between 1.3 and 1.5 Signed-off-by: Nico Schottelius --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index 3a4b2051..1fd28ffd 100644 --- a/README +++ b/README @@ -166,7 +166,7 @@ If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break. The master branch on the other hand is the development branch and may not be working, break your setup or eat the tree in your garden. -### Upgrading from 1.3 to 1.4 +### Upgrading from 1.3 to 1.5 No incompatiblities. From 659bb1d1ac53d0bcab69fec07cd99a8d6180bb72 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 10:47:09 +0200 Subject: [PATCH 0246/5240] create reference in man7 Signed-off-by: Nico Schottelius --- doc/man/cdist-reference.text.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/man/cdist-reference.text.sh b/doc/man/cdist-reference.text.sh index 48954b8e..6358db9c 100755 --- a/doc/man/cdist-reference.text.sh +++ b/doc/man/cdist-reference.text.sh @@ -28,7 +28,7 @@ __cdist_myname=${0##*/}; __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" filename="${__cdist_myname%.sh}" -dest="$__cdist_abs_mydir/$filename" +dest="$__cdist_abs_mydir/man7/$filename" cd "$__cdist_abs_mydir" From 8828a69d608505d7c52fd6d9f942dcbe259ede46 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 11:04:31 +0200 Subject: [PATCH 0247/5240] unignore doc/man and update cdist-best-practice.text Signed-off-by: Nico Schottelius --- .gitignore | 4 +++- doc/man/man7/cdist-best-practice.text | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 68f829dc..89dba856 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,9 @@ # Ignore generated manpages doc/man/.marker -doc/man/man*/ +doc/man/man1/*.1 +doc/man/man7/*.7 +doc/man/man*/*.html # Ignore cache for version control cache/ diff --git a/doc/man/man7/cdist-best-practice.text b/doc/man/man7/cdist-best-practice.text index febe8f36..666dd414 100644 --- a/doc/man/man7/cdist-best-practice.text +++ b/doc/man/man7/cdist-best-practice.text @@ -60,6 +60,20 @@ machine-a % git clone git://your-git-server/cdist machine-b % git clone git://your-git-server/cdist -------------------------------------------------------------------------------- +SEPERATING WORK BY GROUPS +------------------------- +If you are working with different groups on one cdist-configuration, +you can delegate to other manifests and have the groups edit only +their manifests. You can use the following snippet in +**conf/manifests/init**: + +-------------------------------------------------------------------------------- +# Include other groups +sh -e "$__manifest/systems" + +sh -e "$__manifest/cbrg" +-------------------------------------------------------------------------------- + SEE ALSO -------- From 2d30dd6aad6617a0e7ecfba16cece7fdb85cddfa Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Fri, 1 Apr 2011 11:12:15 +0200 Subject: [PATCH 0248/5240] update to match new location of cdist-reference.text Signed-off-by: Steven Armstrong --- build.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index ab62287e..2df76539 100755 --- a/build.sh +++ b/build.sh @@ -57,12 +57,12 @@ case "$1" in for src in ${MANDIR}/man${section}/*.text; do manpage="${src%.text}.$section" if [ ! -f "$manpage" -o "$manpage" -ot "$src" ]; then - echo "Compiling manpage for $src" + echo "Compiling man page for $src" $A2XM "$src" fi htmlpage="${src%.text}.html" if [ ! -f "$htmlpage" -o "$htmlpage" -ot "$src" ]; then - echo "Compiling html for $src" + echo "Compiling html page for $src" $A2XH "$src" fi done @@ -99,7 +99,6 @@ case "$1" in ;; clean) - rm -f ${MANDIR}/cdist-reference.text find "${MANDIR}" -mindepth 2 -type l \ -o -name "*.1" \ -o -name "*.7" \ From afb1bf2373ce93b996681e0e5d5945848a894633 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 11:22:35 +0200 Subject: [PATCH 0249/5240] ignore type manpages and docbook stuff Signed-off-by: Nico Schottelius --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 89dba856..57950f3b 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,8 @@ doc/man/.marker doc/man/man1/*.1 doc/man/man7/*.7 doc/man/man*/*.html +doc/man/man7/cdist-type__*.text +doc/man/man*/docbook-xsl.css # Ignore cache for version control cache/ From 422bfd57d4664ab803461d4e45aaa70855f6c978 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 11:30:55 +0200 Subject: [PATCH 0250/5240] document multiple configuration workflow Signed-off-by: Nico Schottelius --- doc/man/man7/cdist-best-practice.text | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/doc/man/man7/cdist-best-practice.text b/doc/man/man7/cdist-best-practice.text index 666dd414..aa499790 100644 --- a/doc/man/man7/cdist-best-practice.text +++ b/doc/man/man7/cdist-best-practice.text @@ -75,6 +75,37 @@ sh -e "$__manifest/cbrg" -------------------------------------------------------------------------------- +MAINTAINING MULTIPLE CONFIGURATIONS +----------------------------------- +When you need to manage multiple sites with cdist, like company_a, company_b +and private for instance, you can easily use git for this purpose. +Including a possible common base that is reused accross the different sites: + +-------------------------------------------------------------------------------- +# create branches +git branch company_a company_b common private + +# make stuff for company a +git checkout company_a +# work, commit, etc. + +# make stuff for company b +git checkout company_b +# work, commit, etc. + +# make stuff relevant for all sites +git checkout common +# work, commit, etc. + +# change to private and include latest common stuff +git checkout private +git merge common +-------------------------------------------------------------------------------- + +Have a look at git-remote(1) to adjust the remote configuration, which allows +you to push certain branches to certain remotes. + + SEE ALSO -------- - cdist(7) From 2c3d71a7e7e43a7af275a93c991dadc51fd95a15 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 12:11:30 +0200 Subject: [PATCH 0251/5240] update todos Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 4 ---- doc/dev/todo/niconext | 3 ++- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 67afba55..7a8c4583 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -45,7 +45,3 @@ Cache: - export variable $__cache -> for current host -> add function to cdist-config, import from cdist-cache - - -remove --preseed from package_apt and add debconf_set_selection or similar - -> much cleaner! diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 29229d64..e7f2c72f 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1 +1,2 @@ -Release 1.5.0 correctly :-) +remove --preseed from package_apt and add debconf_set_selection or similar + -> much cleaner! From 48a96591d14910748744e256975c3fb55795f055 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 12:11:50 +0200 Subject: [PATCH 0252/5240] add template for type __debconf_set_selections/ Signed-off-by: Nico Schottelius --- .../explorer/pkg_status | 31 ++++++++++ .../__debconf_set_selections/gencode-remote | 53 +++++++++++++++++ conf/type/__debconf_set_selections/man.text | 59 +++++++++++++++++++ .../parameter/optional | 3 + .../parameter/required | 1 + 5 files changed, 147 insertions(+) create mode 100755 conf/type/__debconf_set_selections/explorer/pkg_status create mode 100755 conf/type/__debconf_set_selections/gencode-remote create mode 100644 conf/type/__debconf_set_selections/man.text create mode 100644 conf/type/__debconf_set_selections/parameter/optional create mode 100644 conf/type/__debconf_set_selections/parameter/required diff --git a/conf/type/__debconf_set_selections/explorer/pkg_status b/conf/type/__debconf_set_selections/explorer/pkg_status new file mode 100755 index 00000000..86b94825 --- /dev/null +++ b/conf/type/__debconf_set_selections/explorer/pkg_status @@ -0,0 +1,31 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Retrieve the status of a package - parsed dpkg output +# + +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" +else + name="$__object_id" +fi + +# Except dpkg failing, if package is not known / installed +dpkg -s "$name" 2>/dev/null || exit 0 diff --git a/conf/type/__debconf_set_selections/gencode-remote b/conf/type/__debconf_set_selections/gencode-remote new file mode 100755 index 00000000..b2c7179d --- /dev/null +++ b/conf/type/__debconf_set_selections/gencode-remote @@ -0,0 +1,53 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Manage packages on Debian and co. +# + +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" +else + name="$__object_id" +fi + +# Check for preseeding and add preseed as here document +if [ -f "$__object/parameter/preseed" ]; then + echo "debconf-set-selections << __file-eof" + cat "$(cat "$__object/parameter/preseed")" + echo "__file-eof" +fi + +state="$(cat "$__object/parameter/state")" +is_installed="$(grep "^Status: install ok installed" "$__object/explorer/pkg_status" || true)" + +case "$state" in + installed) + # Install only if non-existent + if [ -z "$is_installed" ]; then + echo apt-get --quiet --yes install \"$name\" + fi + ;; + uninstalled) + # Remove only if existent + if [ -n "$is_installed" ]; then + echo apt-get --quiet --yes remove \"$name\" + fi + ;; +esac diff --git a/conf/type/__debconf_set_selections/man.text b/conf/type/__debconf_set_selections/man.text new file mode 100644 index 00000000..8b7476b4 --- /dev/null +++ b/conf/type/__debconf_set_selections/man.text @@ -0,0 +1,59 @@ +cdist-type__package_apt(7) +========================== +Nico Schottelius + + +NAME +---- +cdist-type__package_apt - Manage packages with apt-get + + +DESCRIPTION +----------- +apt-get is usually used on Debian and variants (like Ubuntu) to +manage packages. + + +REQUIRED PARAMETERS +------------------- +state:: + Either "installed" or "deinstalled". + + +OPTIONAL PARAMETERS +------------------- +name:: + If supplied, use the name and not the object id as the package name. + +preseed:: + If supplied, use the given filename as input for debconf-set-selections(1) + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Ensure zsh in installed +__package_apt zsh --state installed + +# In case you only want *a* webserver, but don't care which one +__package_apt webserver --state installed --name nginx + +# Install package with defaults (from a type) +__package_apt postfix --state installed --preseed "$__type/files/postfix-seed" + +# Remove obsolete package +__package_apt puppet --state deinstalled +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) +- cdist-type__package(7) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__debconf_set_selections/parameter/optional b/conf/type/__debconf_set_selections/parameter/optional new file mode 100644 index 00000000..2dae648e --- /dev/null +++ b/conf/type/__debconf_set_selections/parameter/optional @@ -0,0 +1,3 @@ +name +preseed +version diff --git a/conf/type/__debconf_set_selections/parameter/required b/conf/type/__debconf_set_selections/parameter/required new file mode 100644 index 00000000..ff72b5c7 --- /dev/null +++ b/conf/type/__debconf_set_selections/parameter/required @@ -0,0 +1 @@ +state From 0db21eb308135cbc824675bce833a2924f6b6ead Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 12:47:48 +0200 Subject: [PATCH 0253/5240] document, cleanup and theoretically finish __debconf_set_selections Signed-off-by: Nico Schottelius --- .../explorer/pkg_status | 31 ---------------- .../__debconf_set_selections/gencode-remote | 35 +++--------------- conf/type/__debconf_set_selections/man.text | 36 ++++++------------- .../parameter/optional | 3 -- .../parameter/required | 2 +- 5 files changed, 15 insertions(+), 92 deletions(-) delete mode 100755 conf/type/__debconf_set_selections/explorer/pkg_status delete mode 100644 conf/type/__debconf_set_selections/parameter/optional diff --git a/conf/type/__debconf_set_selections/explorer/pkg_status b/conf/type/__debconf_set_selections/explorer/pkg_status deleted file mode 100755 index 86b94825..00000000 --- a/conf/type/__debconf_set_selections/explorer/pkg_status +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# -# 2011 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Retrieve the status of a package - parsed dpkg output -# - -if [ -f "$__object/parameter/name" ]; then - name="$(cat "$__object/parameter/name")" -else - name="$__object_id" -fi - -# Except dpkg failing, if package is not known / installed -dpkg -s "$name" 2>/dev/null || exit 0 diff --git a/conf/type/__debconf_set_selections/gencode-remote b/conf/type/__debconf_set_selections/gencode-remote index b2c7179d..156fc9f3 100755 --- a/conf/type/__debconf_set_selections/gencode-remote +++ b/conf/type/__debconf_set_selections/gencode-remote @@ -18,36 +18,9 @@ # along with cdist. If not, see . # # -# Manage packages on Debian and co. +# Setup selections # -if [ -f "$__object/parameter/name" ]; then - name="$(cat "$__object/parameter/name")" -else - name="$__object_id" -fi - -# Check for preseeding and add preseed as here document -if [ -f "$__object/parameter/preseed" ]; then - echo "debconf-set-selections << __file-eof" - cat "$(cat "$__object/parameter/preseed")" - echo "__file-eof" -fi - -state="$(cat "$__object/parameter/state")" -is_installed="$(grep "^Status: install ok installed" "$__object/explorer/pkg_status" || true)" - -case "$state" in - installed) - # Install only if non-existent - if [ -z "$is_installed" ]; then - echo apt-get --quiet --yes install \"$name\" - fi - ;; - uninstalled) - # Remove only if existent - if [ -n "$is_installed" ]; then - echo apt-get --quiet --yes remove \"$name\" - fi - ;; -esac +echo "debconf-set-selections << __file-eof" +cat "$__object/parameter/file" +echo "__file-eof" diff --git a/conf/type/__debconf_set_selections/man.text b/conf/type/__debconf_set_selections/man.text index 8b7476b4..b6b2ad18 100644 --- a/conf/type/__debconf_set_selections/man.text +++ b/conf/type/__debconf_set_selections/man.text @@ -1,31 +1,22 @@ -cdist-type__package_apt(7) -========================== +cdist-type__debconf_set_selections(7) +===================================== Nico Schottelius NAME ---- -cdist-type__package_apt - Manage packages with apt-get +cdist-type__debconf_set_selections - Setup debconf selections DESCRIPTION ----------- -apt-get is usually used on Debian and variants (like Ubuntu) to -manage packages. +On Debian and alike systems debconf-set-selections(1) can be used +to setup configuration parameters. REQUIRED PARAMETERS ------------------- -state:: - Either "installed" or "deinstalled". - - -OPTIONAL PARAMETERS -------------------- -name:: - If supplied, use the name and not the object id as the package name. - -preseed:: +file:: If supplied, use the given filename as input for debconf-set-selections(1) @@ -33,24 +24,17 @@ EXAMPLES -------- -------------------------------------------------------------------------------- -# Ensure zsh in installed -__package_apt zsh --state installed +# Setup configuration for nslcd +__debconf_set_selections nslcd --file /path/to/file -# In case you only want *a* webserver, but don't care which one -__package_apt webserver --state installed --name nginx - -# Install package with defaults (from a type) -__package_apt postfix --state installed --preseed "$__type/files/postfix-seed" - -# Remove obsolete package -__package_apt puppet --state deinstalled +# Setup configuration for nslcd from another type +__debconf_set_selections nslcd --file "$__type/files/preseed/nslcd" -------------------------------------------------------------------------------- SEE ALSO -------- - cdist-type(7) -- cdist-type__package(7) COPYING diff --git a/conf/type/__debconf_set_selections/parameter/optional b/conf/type/__debconf_set_selections/parameter/optional deleted file mode 100644 index 2dae648e..00000000 --- a/conf/type/__debconf_set_selections/parameter/optional +++ /dev/null @@ -1,3 +0,0 @@ -name -preseed -version diff --git a/conf/type/__debconf_set_selections/parameter/required b/conf/type/__debconf_set_selections/parameter/required index ff72b5c7..f73f3093 100644 --- a/conf/type/__debconf_set_selections/parameter/required +++ b/conf/type/__debconf_set_selections/parameter/required @@ -1 +1 @@ -state +file From e21283c579ef4e5da7d590a2b0338668cd2f16fc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 13:08:47 +0200 Subject: [PATCH 0254/5240] remove preseeding support from __package_apt Signed-off-by: Nico Schottelius --- conf/type/__package_apt/man.text | 6 ------ conf/type/__package_apt/parameter/optional | 1 - 2 files changed, 7 deletions(-) diff --git a/conf/type/__package_apt/man.text b/conf/type/__package_apt/man.text index 8b7476b4..0780124d 100644 --- a/conf/type/__package_apt/man.text +++ b/conf/type/__package_apt/man.text @@ -25,9 +25,6 @@ OPTIONAL PARAMETERS name:: If supplied, use the name and not the object id as the package name. -preseed:: - If supplied, use the given filename as input for debconf-set-selections(1) - EXAMPLES -------- @@ -39,9 +36,6 @@ __package_apt zsh --state installed # In case you only want *a* webserver, but don't care which one __package_apt webserver --state installed --name nginx -# Install package with defaults (from a type) -__package_apt postfix --state installed --preseed "$__type/files/postfix-seed" - # Remove obsolete package __package_apt puppet --state deinstalled -------------------------------------------------------------------------------- diff --git a/conf/type/__package_apt/parameter/optional b/conf/type/__package_apt/parameter/optional index 2dae648e..a52167d3 100644 --- a/conf/type/__package_apt/parameter/optional +++ b/conf/type/__package_apt/parameter/optional @@ -1,3 +1,2 @@ name -preseed version From 1b87fc7c3f0a6d3e6135d59f8a0452b7cdf3f907 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 13:10:41 +0200 Subject: [PATCH 0255/5240] changes for 1.6.0 Signed-off-by: Nico Schottelius --- doc/changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/changelog b/doc/changelog index 2fcb8b46..1b9ede30 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,3 +1,7 @@ +1.6.0: + * Removed --preseed support from __package_apt + * New type __debconf_set_selections which allows to preseed debian packages + 1.5.0: 2011-04-01 * Add basic cache functionality * New type __process From cee51f00880919638eab04c40dc988c3adf9f81f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 1 Apr 2011 13:12:00 +0200 Subject: [PATCH 0256/5240] make __package_apt use DEBIAN_FRONTEND=noninteractive Signed-off-by: Nico Schottelius --- conf/type/__package_apt/gencode-remote | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/conf/type/__package_apt/gencode-remote b/conf/type/__package_apt/gencode-remote index b2c7179d..e38653e9 100755 --- a/conf/type/__package_apt/gencode-remote +++ b/conf/type/__package_apt/gencode-remote @@ -37,17 +37,19 @@ fi state="$(cat "$__object/parameter/state")" is_installed="$(grep "^Status: install ok installed" "$__object/explorer/pkg_status" || true)" +aptget="DEBIAN_FRONTEND=noninteractive apt-get --quiet --yes" + case "$state" in installed) # Install only if non-existent if [ -z "$is_installed" ]; then - echo apt-get --quiet --yes install \"$name\" + echo $aptget install \"$name\" fi ;; uninstalled) # Remove only if existent if [ -n "$is_installed" ]; then - echo apt-get --quiet --yes remove \"$name\" + echo $aptget remove \"$name\" fi ;; esac From e700437b01f7bebb6496aba9d55b6a0894319ccd Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 01:20:24 +0200 Subject: [PATCH 0257/5240] also detect fedora Signed-off-by: Nico Schottelius --- conf/explorer/os | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/conf/explorer/os b/conf/explorer/os index f7481193..b636d980 100755 --- a/conf/explorer/os +++ b/conf/explorer/os @@ -43,6 +43,12 @@ if [ -f /etc/gentoo-release ]; then exit 0 fi +# Fedora is also Redhat, thus return before redhat! +if grep -q ^Fedora /etc/redhat-release 2>/dev/null; then + echo fedora + exit 0 +fi + if [ -f /etc/redhat-release ]; then echo redhat exit 0 From bcfba18e6f15a13bbb7533d9106ad7e65aa0e24d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 01:22:09 +0200 Subject: [PATCH 0258/5240] more upcoming changes Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 1b9ede30..c54a5358 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,6 +1,7 @@ 1.6.0: * Removed --preseed support from __package_apt * New type __debconf_set_selections which allows to preseed debian packages + * Explorer/os: Support Fedora 1.5.0: 2011-04-01 * Add basic cache functionality From afc16667f40945b42a493d6610e49495fc13e330 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 01:25:57 +0200 Subject: [PATCH 0259/5240] more production machines Signed-off-by: Nico Schottelius --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index 1fd28ffd..18352d5a 100644 --- a/README +++ b/README @@ -230,7 +230,7 @@ Yes, I'm actually eating my own dogfood and currently managing * [xfce](http://www.xfce.org/) (lightweight desktop environment) * [slim](http://slim.berlios.de/) (graphical login manager for X11) -with cdist on a total of **9** production machines of the +with cdist on a total of **20** production machines of the [Systems Group](http://www.systems.ethz.ch) at the [ETH Zurich](http://www.ethz.ch) as well at home. From c617dc0e8fc9e1e1949c40b2eb167957da969991 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 01:49:52 +0200 Subject: [PATCH 0260/5240] cleanup readme Signed-off-by: Nico Schottelius --- README | 65 +++++++++++++++++++--------------------------------------- 1 file changed, 21 insertions(+), 44 deletions(-) diff --git a/README b/README index 18352d5a..bb370b35 100644 --- a/README +++ b/README @@ -24,57 +24,34 @@ other configuration management systems like [cfengine](http://www.cfengine.org/), [bcfg2](http://trac.mcs.anl.gov/projects/bcfg2), [chef](http://wiki.opscode.com/display/chef/) -and [puppet](http://www.puppetlabs.com/), but -it ticks differently: +and [puppet](http://www.puppetlabs.com/), but it ticks differently. +Here are some features that makes it unique: - * cdist sticks completly to the KISS (keep it simple and stupid) paradigma - * cdist's core is very small (< 1k lines of code) - * There is only one type to extend cdist called ***type***. - * One main development target: ***It must be incredible easy to add new types.*** - * cdist is UNIX - * It reuses existing tools like cat, find, mv, ... - * cdist's documentation is bundled as manpages - * cdist is written in POSIX shell - * No special requirements like high level interpreters needed on server or target +[[!table data=""" +Simplicity | There is only one type to extend cdist called ***type*** +Design | Type and core cleanly seperated +Design | cdist sticks completly to the KISS (keep it simple and stupid) paradigma +Design | Meaningful error messages - do not lose time debugging error messages +Design | Consistency in behaviour, naming and documentation +Design | No surprise factor: Only do what is obviously clear, no magic +Design | Define target state, do not focus on methods or scripts +Small core | cdist's core is very small - less code, less bugs +Fast development | Focus on straightforwardness of type creation is a main development objective +Requirements, Scalability | No central server needed, cdist operates in push mode and can be run from any computer +Requirements, Scalability, Upgrade | cdist only needs to be updated on the master, not on the target hosts +Requirements | cdist requires only SSH and a shell on the target +Requirements | +UNIX | Reuse of existing tools like cat, find, mv, ... +UNIX, familar environment, documentation | Is available as manpages and HTML +UNIX, simplicity, familar environment | cdist is written in POSIX shell +UNIX, simplicity, familar environment | cdist is configured in POSIX shell +"""]] ### Documentation The cdist documentation is included as manpages in the distribution. You can [browse the documentation for the latest version online](man) as well. -### Architecture - - * Push mode (server pushes configuration) - * User defines configuration in shell scripts (called ***manifests***) - * Generates internal configuration (cconfig style) - * Uses ***types*** to generate code be executed on the target - * And finally executes the code on the target / applies the configuration - -### Features - - * Elegant code and clean design - * Type and core cleanly seperated - * Small codebase in core - * Good documentation (man pages) - * Consistency in behaviour, naming and documentation - * Meaningful error messages - * Either standard error messages from tools or added description for clearification - * The no surprise factor - * No magic guessing of what the user wants - * Simple and well-known DSL - * Posix shell - * Easy integration into bare metal installations - * requires only ssh + sh - * Easy upgrade - * ***There is no need to update cdist on target hosts!*** - * cdist only needs to be updated on the master server(s) - * Very easy to extend - * Can be done via types, which can be stacked on top of others - * Reuse of existing functionality - * sh, ssh, find, rm, mv, ... - * Very easy to debug - * Just add set -x in the scripts - ### OS support cdist was tested or is know to run on at least From 77766d29a21da7b7ba0e4a1e00fe1cd42578698f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 01:50:45 +0200 Subject: [PATCH 0261/5240] +header Signed-off-by: Nico Schottelius --- README | 1 + 1 file changed, 1 insertion(+) diff --git a/README b/README index bb370b35..26cd1ef2 100644 --- a/README +++ b/README @@ -28,6 +28,7 @@ and [puppet](http://www.puppetlabs.com/), but it ticks differently. Here are some features that makes it unique: [[!table data=""" +Keywords | Description Simplicity | There is only one type to extend cdist called ***type*** Design | Type and core cleanly seperated Design | cdist sticks completly to the KISS (keep it simple and stupid) paradigma From e19c079f24113f46cd006e37e47730ccf014c948 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:00:20 +0200 Subject: [PATCH 0262/5240] add template for new type __package_yum Signed-off-by: Nico Schottelius --- conf/type/__package_yum/explorer/pkg_version | 30 +++++++++++ conf/type/__package_yum/gencode-remote | 52 +++++++++++++++++++ conf/type/__package_yum/man.text | 53 ++++++++++++++++++++ conf/type/__package_yum/parameter/optional | 1 + conf/type/__package_yum/parameter/required | 1 + 5 files changed, 137 insertions(+) create mode 100755 conf/type/__package_yum/explorer/pkg_version create mode 100755 conf/type/__package_yum/gencode-remote create mode 100644 conf/type/__package_yum/man.text create mode 100644 conf/type/__package_yum/parameter/optional create mode 100644 conf/type/__package_yum/parameter/required diff --git a/conf/type/__package_yum/explorer/pkg_version b/conf/type/__package_yum/explorer/pkg_version new file mode 100755 index 00000000..4f612423 --- /dev/null +++ b/conf/type/__package_yum/explorer/pkg_version @@ -0,0 +1,30 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Retrieve the status of a package - parsed dpkg output +# + +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" +else + name="$__object_id" +fi + +pacman -Q "$name" 2>/dev/null | awk '{ print $2 }' diff --git a/conf/type/__package_yum/gencode-remote b/conf/type/__package_yum/gencode-remote new file mode 100755 index 00000000..536b7708 --- /dev/null +++ b/conf/type/__package_yum/gencode-remote @@ -0,0 +1,52 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Manage packages with Pacman (mostly archlinux) +# + +# Debug +# exec >&2 +# set -x + +pacopts="--noconfirm --noprogressbar" + +if [ -f "$__object/parameter/name" ]; then + name="$__object/parameter/name" +else + name="$__object_id" +fi + +state="$(cat "$__object/parameter/state")" +pkg_version="$(cat "$__object/explorer/pkg_version")" + +case "$state" in + installed) + + # Empty? Not installed. + if [ -z "$pkg_version" ]; then + echo pacman "$pacopts" -S \"$name\" + fi + ;; + uninstalled) + if [ "$pkg_version" ]; then + echo pacman "$pacopts" -R \"$name\" + fi + ;; +esac diff --git a/conf/type/__package_yum/man.text b/conf/type/__package_yum/man.text new file mode 100644 index 00000000..35a7e44c --- /dev/null +++ b/conf/type/__package_yum/man.text @@ -0,0 +1,53 @@ +cdist-type__package_pacman(7) +============================= +Nico Schottelius + + +NAME +---- +cdist-type__package_pacman - Manage packages with pacman + + +DESCRIPTION +----------- +Pacman is usually used on the Archlinux distribution to manage +packages. + + +REQUIRED PARAMETERS +------------------- +state:: + Either "installed" or "deinstalled". + + +OPTIONAL PARAMETERS +------------------- +name:: + If supplied, use the name and not the object id as the package name. + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Ensure zsh in installed +__package_pacman zsh --state installed + +# If you don't want to follow pythonX packages, but always use python +__package_pacman python --state installed --name python2 + +# Remove obsolete package +__package_pacman puppet --state deinstalled +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) +- cdist-type__package(7) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__package_yum/parameter/optional b/conf/type/__package_yum/parameter/optional new file mode 100644 index 00000000..f121bdbf --- /dev/null +++ b/conf/type/__package_yum/parameter/optional @@ -0,0 +1 @@ +name diff --git a/conf/type/__package_yum/parameter/required b/conf/type/__package_yum/parameter/required new file mode 100644 index 00000000..ff72b5c7 --- /dev/null +++ b/conf/type/__package_yum/parameter/required @@ -0,0 +1 @@ +state From d9e2493eb996e164a27826779477ce93a84cdda3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:13:44 +0200 Subject: [PATCH 0263/5240] add fedora support to __package Signed-off-by: Nico Schottelius --- conf/type/__package/manifest | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/type/__package/manifest b/conf/type/__package/manifest index d8b55814..f41cceac 100755 --- a/conf/type/__package/manifest +++ b/conf/type/__package/manifest @@ -33,6 +33,7 @@ else archlinux) type="pacman" ;; debian|ubuntu) type="apt" ;; gentoo) type="emerge" ;; + fedora) type="yum" ;; *) echo "Don't know how to manage packages on: $os" >&2 exit 1 From 981df12e9a341c38b279726c62832f1150a2e1f0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:15:26 +0200 Subject: [PATCH 0264/5240] document changes Signed-off-by: Nico Schottelius --- doc/changelog | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/changelog b/doc/changelog index c54a5358..fe22e838 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,7 +1,9 @@ 1.6.0: + * New Type __package_yum + * New type __debconf_set_selections + * Type __package gained Fedora support * Removed --preseed support from __package_apt - * New type __debconf_set_selections which allows to preseed debian packages - * Explorer/os: Support Fedora + * explorer/os: gained Fedora support 1.5.0: 2011-04-01 * Add basic cache functionality From bcc7d0e795360489b61568f6ff108f8799ea2488 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:19:30 +0200 Subject: [PATCH 0265/5240] cleanup of gencode-remote Signed-off-by: Nico Schottelius --- conf/type/__package_yum/gencode-remote | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/conf/type/__package_yum/gencode-remote b/conf/type/__package_yum/gencode-remote index 536b7708..e20e0001 100755 --- a/conf/type/__package_yum/gencode-remote +++ b/conf/type/__package_yum/gencode-remote @@ -18,15 +18,9 @@ # along with cdist. If not, see . # # -# Manage packages with Pacman (mostly archlinux) +# Manage packages with yum (mostly Fedora) # -# Debug -# exec >&2 -# set -x - -pacopts="--noconfirm --noprogressbar" - if [ -f "$__object/parameter/name" ]; then name="$__object/parameter/name" else @@ -34,19 +28,17 @@ else fi state="$(cat "$__object/parameter/state")" -pkg_version="$(cat "$__object/explorer/pkg_version")" +opts="--assumeyes --quiet" case "$state" in installed) - - # Empty? Not installed. - if [ -z "$pkg_version" ]; then - echo pacman "$pacopts" -S \"$name\" + if grep -q "is not installed\$" "$__object/explorer/pkg_version"; then + echo yum $opts install \"$name\" fi ;; uninstalled) - if [ "$pkg_version" ]; then - echo pacman "$pacopts" -R \"$name\" + if ! grep -q "is not installed\$" "$__object/explorer/pkg_version"; then + echo yum $opts remove \"$name\" fi ;; esac From a778dee9fcdbc4d97f15b6a1832e3e1fe97b4ed1 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:19:47 +0200 Subject: [PATCH 0266/5240] use rpm -q to get status Signed-off-by: Nico Schottelius --- conf/type/__package_yum/explorer/pkg_version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__package_yum/explorer/pkg_version b/conf/type/__package_yum/explorer/pkg_version index 4f612423..66f76f12 100755 --- a/conf/type/__package_yum/explorer/pkg_version +++ b/conf/type/__package_yum/explorer/pkg_version @@ -27,4 +27,4 @@ else name="$__object_id" fi -pacman -Q "$name" 2>/dev/null | awk '{ print $2 }' +rpm -q "$name" 2>/dev/null || true From 740d279753e09c9178cdcc43f4302a86a1d331ba Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:20:19 +0200 Subject: [PATCH 0267/5240] add fedora to readme Signed-off-by: Nico Schottelius --- README | 1 + 1 file changed, 1 insertion(+) diff --git a/README b/README index 26cd1ef2..e8f6e0bf 100644 --- a/README +++ b/README @@ -59,6 +59,7 @@ cdist was tested or is know to run on at least * [Archlinux](http://www.archlinux.org/) * [Debian](http://www.debian.org/) + * [Fedora](http://fedoraproject.org/) * [Gentoo](http://www.gentoo.org/) * [Mac OS X](http://www.apple.com/macosx/) * [OpenBSD](http://www.openbsd.org) From c532a2ccd3d19ebd36466be9231c68be7a68bbb7 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:22:08 +0200 Subject: [PATCH 0268/5240] remove one Error of Error: Error: /home/users/nico/oeffentlich/rechner/projekte/cdist-used/conf/type/__nico_desktop/manifest exited non-zero. Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index fac1b5c6..026d8419 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -158,7 +158,7 @@ __cdist_debug_echo() __cdist_exec_fail_on_error() { sh -e "$@" - [ "$?" -eq 0 ] || __cdist_exit_err "Error: $1 exited non-zero." + [ "$?" -eq 0 ] || __cdist_exit_err "$1 exited non-zero." } __cdist_exit_err() From 13f4140b3df9e6204451d444bdb6f504fd81771b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:26:42 +0200 Subject: [PATCH 0269/5240] update manpage for __package_yum Signed-off-by: Nico Schottelius --- conf/type/__package_yum/man.text | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/conf/type/__package_yum/man.text b/conf/type/__package_yum/man.text index 35a7e44c..262068c6 100644 --- a/conf/type/__package_yum/man.text +++ b/conf/type/__package_yum/man.text @@ -1,17 +1,16 @@ -cdist-type__package_pacman(7) -============================= +cdist-type__package_yum(7) +========================== Nico Schottelius NAME ---- -cdist-type__package_pacman - Manage packages with pacman +cdist-type__package_yum - Manage packages with yum DESCRIPTION ----------- -Pacman is usually used on the Archlinux distribution to manage -packages. +Yum is usually used on the Fedora distribution to manage packages. REQUIRED PARAMETERS @@ -31,13 +30,13 @@ EXAMPLES -------------------------------------------------------------------------------- # Ensure zsh in installed -__package_pacman zsh --state installed +__package_yum zsh --state installed # If you don't want to follow pythonX packages, but always use python -__package_pacman python --state installed --name python2 +__package_yum python --state installed --name python2 # Remove obsolete package -__package_pacman puppet --state deinstalled +__package_yum puppet --state deinstalled -------------------------------------------------------------------------------- From 44b11b99198ecdef188fb6819a9ff3a3de7b9d8b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:34:35 +0200 Subject: [PATCH 0270/5240] yum is funny Signed-off-by: Nico Schottelius --- doc/dev/logs/2011-04-02.yum | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 doc/dev/logs/2011-04-02.yum diff --git a/doc/dev/logs/2011-04-02.yum b/doc/dev/logs/2011-04-02.yum new file mode 100644 index 00000000..dd3687c8 --- /dev/null +++ b/doc/dev/logs/2011-04-02.yum @@ -0,0 +1,9 @@ +Fun with yum: + +[root@brett ~]# yum --assumeyes --quiet install "vim" +Package 2:vim-enhanced-7.3.056-1.fc14.x86_64 already installed and latest version +[root@brett ~]# rpm -q vim +package vim is not installed +[root@brett ~]# + +(Me || yum) == dumb? From aedbc263d7325381a8bed03e24c31dbcf810e7d0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:49:57 +0200 Subject: [PATCH 0271/5240] need to use --whatprovides This ensure we also check for other packages which are used instead of the requested one, which does not work with rpm -q: [root@brett ~]# rpm -q vim package vim is not installed [root@brett ~]# yum --assumeyes --quiet install "vim" Package 2:vim-enhanced-7.3.056-1.fc14.x86_64 already installed and latest version [root@brett ~]# rpm -q --whatprovides vim vim-enhanced-7.3.056-1.fc14.x86_64 Signed-off-by: Nico Schottelius --- conf/type/__package_yum/explorer/pkg_version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__package_yum/explorer/pkg_version b/conf/type/__package_yum/explorer/pkg_version index 66f76f12..0e078f68 100755 --- a/conf/type/__package_yum/explorer/pkg_version +++ b/conf/type/__package_yum/explorer/pkg_version @@ -27,4 +27,4 @@ else name="$__object_id" fi -rpm -q "$name" 2>/dev/null || true +rpm -q --whatprovides "$name" 2>/dev/null || true From 0b7024a2cc3449e2610fdd63dd57731ad1ebded5 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:53:07 +0200 Subject: [PATCH 0272/5240] adjust grep string Signed-off-by: Nico Schottelius --- conf/type/__package_yum/gencode-remote | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/conf/type/__package_yum/gencode-remote b/conf/type/__package_yum/gencode-remote index e20e0001..7d0d60b8 100755 --- a/conf/type/__package_yum/gencode-remote +++ b/conf/type/__package_yum/gencode-remote @@ -29,15 +29,20 @@ fi state="$(cat "$__object/parameter/state")" +cat "$__object/explorer/pkg_version" + opts="--assumeyes --quiet" + +not_installed="^no package provides" + case "$state" in installed) - if grep -q "is not installed\$" "$__object/explorer/pkg_version"; then + if grep -q "$not_installed" "$__object/explorer/pkg_version"; then echo yum $opts install \"$name\" fi ;; uninstalled) - if ! grep -q "is not installed\$" "$__object/explorer/pkg_version"; then + if ! grep -q "$not_installed" "$__object/explorer/pkg_version"; then echo yum $opts remove \"$name\" fi ;; From 4ab1fdceff36c983f07960d2a151560d668ecb60 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 02:57:02 +0200 Subject: [PATCH 0273/5240] remove evil debug Signed-off-by: Nico Schottelius --- conf/type/__package_yum/gencode-remote | 2 -- 1 file changed, 2 deletions(-) diff --git a/conf/type/__package_yum/gencode-remote b/conf/type/__package_yum/gencode-remote index 7d0d60b8..033298b1 100755 --- a/conf/type/__package_yum/gencode-remote +++ b/conf/type/__package_yum/gencode-remote @@ -29,8 +29,6 @@ fi state="$(cat "$__object/parameter/state")" -cat "$__object/explorer/pkg_version" - opts="--assumeyes --quiet" not_installed="^no package provides" From 5f0ecb0831157bf0b5112afc6c4344adfc05cc3a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 03:12:31 +0200 Subject: [PATCH 0274/5240] yum confuses me, document it, so others are saved Signed-off-by: Nico Schottelius --- conf/type/__package_yum/man.text | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conf/type/__package_yum/man.text b/conf/type/__package_yum/man.text index 262068c6..b2f57606 100644 --- a/conf/type/__package_yum/man.text +++ b/conf/type/__package_yum/man.text @@ -11,6 +11,8 @@ cdist-type__package_yum - Manage packages with yum DESCRIPTION ----------- Yum is usually used on the Fedora distribution to manage packages. +If you specify an unknown package, yum will display the +slightly confusing error message "Error: Nothing to do". REQUIRED PARAMETERS From 762fa52638c2bd6c080396121377ab3eec005ac4 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 03:30:35 +0200 Subject: [PATCH 0275/5240] fixup cdist-reference: match only on .7 now, otherwise .html and .text is shown in manpage Signed-off-by: Nico Schottelius --- doc/man/cdist-reference.text.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/man/cdist-reference.text.sh b/doc/man/cdist-reference.text.sh index 6358db9c..936e0bba 100755 --- a/doc/man/cdist-reference.text.sh +++ b/doc/man/cdist-reference.text.sh @@ -187,7 +187,7 @@ SEE ALSO -------- - cdist(7) eof -for type in man7/cdist-type__*; do +for type in man7/cdist-type__*.7; do name_1="${type#man7/}" name_2="${name_1%.7}" From 21aacd44b44c70e319c2c4991f9ee998666dfa92 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 03:36:41 +0200 Subject: [PATCH 0276/5240] remove double information from reference Signed-off-by: Nico Schottelius --- doc/man/cdist-reference.text.sh | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/doc/man/cdist-reference.text.sh b/doc/man/cdist-reference.text.sh index 936e0bba..8fb24362 100755 --- a/doc/man/cdist-reference.text.sh +++ b/doc/man/cdist-reference.text.sh @@ -135,19 +135,8 @@ tmp_dir:: TYPES ----- -The following types are available: - -eof -for type in man7/cdist-type__*; do - name_1="${type#man7/cdist-type}" - name_2="${name_1%.7}" - - name="$name_2" - echo "- $name" -done - -cat << eof - +The available types are listed in the SEE ALSO section +and are referenced as cdist-type__TYPENAME. VARIABLES --------- From 18e433dd859644a8d69c07ff2a22e14c2091d963 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 14:24:20 +0200 Subject: [PATCH 0277/5240] import corrected __group from nico/nico Signed-off-by: Nico Schottelius --- conf/type/__group/gencode-remote | 45 ++++++++++++++++---------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/conf/type/__group/gencode-remote b/conf/type/__group/gencode-remote index 527a6079..ac7e0ebb 100755 --- a/conf/type/__group/gencode-remote +++ b/conf/type/__group/gencode-remote @@ -1,6 +1,7 @@ #!/bin/sh # # 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# 2011 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -23,16 +24,6 @@ name="$__object_id" -command= -if grep -q "^$name" "$__object/explorer/group"; then - # group exists - command="groupmod" -else - # group does not exist - command="groupadd" -fi - - get_current_value() { local key="$1" local index @@ -46,21 +37,29 @@ get_current_value() { cut -d':' -f $index "$__object/explorer/group" } - set -- "$@" cd "$__object/parameter" -for property in $(ls .); do - current_value=$(get_current_value "$property") - new_value="$(cat "$property")" - if [ "$new_value" != "$current_value" ]; then - # Shedule changed properties for update - set -- "$@" "--$property" \"$new_value\" + +if grep -q "^$name" "$__object/explorer/group"; then + # group exists, only change changed values + for property in $(ls .); do + current_value=$(get_current_value "$property") + new_value="$(cat "$property")" + if [ "$new_value" != "$current_value" ]; then + # Shedule changed properties for update + set -- "$@" "--$property" \"$new_value\" + fi + done + + if [ $# -gt 0 ]; then + # Update changed properties + echo groupmod $@ $name fi -done +else + for property in $(ls .); do + new_value="$(cat "$property")" + set -- "$@" "--$property" \"$new_value\" + done - -if [ $# -gt 0 ]; then - # Update changed properties - echo $command $@ $name + echo groupadd "$@" "$name" fi - From 69a17d0b0e6d9f12cbf743ce739aaef3caf93d65 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 14:25:00 +0200 Subject: [PATCH 0278/5240] remove unecessary set -- "$@" Signed-off-by: Nico Schottelius --- conf/type/__group/gencode-remote | 2 -- 1 file changed, 2 deletions(-) diff --git a/conf/type/__group/gencode-remote b/conf/type/__group/gencode-remote index ac7e0ebb..35df5424 100755 --- a/conf/type/__group/gencode-remote +++ b/conf/type/__group/gencode-remote @@ -37,9 +37,7 @@ get_current_value() { cut -d':' -f $index "$__object/explorer/group" } -set -- "$@" cd "$__object/parameter" - if grep -q "^$name" "$__object/explorer/group"; then # group exists, only change changed values for property in $(ls .); do From 252b511da7c4157b8950364cebc0ad6747965463 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 14:31:50 +0200 Subject: [PATCH 0279/5240] done++ Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index fe22e838..a1f218e8 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,6 +1,7 @@ 1.6.0: * New Type __package_yum * New type __debconf_set_selections + * Fix Type __group in case of __group NAME syntax * Type __package gained Fedora support * Removed --preseed support from __package_apt * explorer/os: gained Fedora support From 1310a1e42b3f0af84e7e5b8bb3299bd928ea60a8 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 2 Apr 2011 14:40:31 +0200 Subject: [PATCH 0280/5240] ++todo Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 7a8c4583..ad6561a6 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -26,13 +26,14 @@ CORE TYPES ------ -Types to be written/extended: - - __ssh-keys (host/user) - - Think about __service - necessary? - - __file_edit - - regexp replace (can probably cover all?) - -> aka sed. - - __cron +- __ssh-keys (host/user) +- __file_edit + - regexp replace (can probably cover all?) + -> aka sed. +- __cron +- __user: + add option to include --create-home + fix __user NAME case (same issue as __group) DOCUMENTATION -------------- From de879bf5215db28d82631fc3ec495233aad84c8f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 09:45:25 +0200 Subject: [PATCH 0281/5240] emphasise SSH Signed-off-by: Nico Schottelius --- README | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README b/README index e8f6e0bf..aba67707 100644 --- a/README +++ b/README @@ -31,7 +31,7 @@ Here are some features that makes it unique: Keywords | Description Simplicity | There is only one type to extend cdist called ***type*** Design | Type and core cleanly seperated -Design | cdist sticks completly to the KISS (keep it simple and stupid) paradigma +Design | Sticks completly to the KISS (keep it simple and stupid) paradigma Design | Meaningful error messages - do not lose time debugging error messages Design | Consistency in behaviour, naming and documentation Design | No surprise factor: Only do what is obviously clear, no magic @@ -40,8 +40,8 @@ Small core | cdist's core is very small - less code, less bugs Fast development | Focus on straightforwardness of type creation is a main development objective Requirements, Scalability | No central server needed, cdist operates in push mode and can be run from any computer Requirements, Scalability, Upgrade | cdist only needs to be updated on the master, not on the target hosts -Requirements | cdist requires only SSH and a shell on the target -Requirements | +Requirements, Security | Uses well-know [SSH](http://www.openssh.com/) as transport protocol +Requirements, Simplicity | Requires only shell and SSH server on the target UNIX | Reuse of existing tools like cat, find, mv, ... UNIX, familar environment, documentation | Is available as manpages and HTML UNIX, simplicity, familar environment | cdist is written in POSIX shell From 674e1f58f8ff8924efe5d322d062451a1fa4b1e2 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 09:45:52 +0200 Subject: [PATCH 0282/5240] todo for 1.6 Signed-off-by: Nico Schottelius --- doc/dev/todo/1.6 | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/dev/todo/1.6 diff --git a/doc/dev/todo/1.6 b/doc/dev/todo/1.6 new file mode 100644 index 00000000..1be7274f --- /dev/null +++ b/doc/dev/todo/1.6 @@ -0,0 +1 @@ +- adjust documentation / stages From 4b76d8a7e087fe280cc11d8d91b99359b6fbac89 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 10:45:41 +0200 Subject: [PATCH 0283/5240] __user: remove =~, cleanup and beautify, replace cut with awk Signed-off-by: Nico Schottelius --- conf/type/__user/gencode-remote | 96 +++++++++++++++------------------ 1 file changed, 43 insertions(+), 53 deletions(-) diff --git a/conf/type/__user/gencode-remote b/conf/type/__user/gencode-remote index c53d8c40..c7dbac41 100755 --- a/conf/type/__user/gencode-remote +++ b/conf/type/__user/gencode-remote @@ -23,60 +23,50 @@ name="$__object_id" -command= -if grep -q "^$name" "$__object/explorer/passwd"; then - # user exists - command="usermod" -else - # user does not exist - command="useradd" -fi - - -get_current_value() { - local key="$1" - local new_value="$2" - - local explorer="$__object/explorer/passwd" - local index - case "$key" in - password) - explorer="$__object/explorer/shadow" - index=2 - ;; - uid) index=3;; - gid) - if [[ $new_value =~ ^[0-9]+$ ]]; then - # numeric gid - index=4 - else - # group name - explorer="$__object/explorer/group" - index=1 - fi - ;; - comment) index=5;; - home) index=6;; - shell) index=7;; - esac - cut -d':' -f $index "$explorer" -} - - -set -- "$@" cd "$__object/parameter" -for property in $(ls .); do - new_value="$(cat "$property")" - current_value=$(get_current_value "$property" "$new_value") - if [ "$new_value" != "$current_value" ]; then - # Shedule changed properties for update - set -- "$@" "--$property" \"$new_value\" +if grep -q "^${name}:" "$__object/explorer/passwd"; then + for property in $(ls .); do + new_value="$(cat "$property")" + + file="$__object/explorer/passwd" + + case "$key" in + password) + field=3 + file="$__object/explorer/shadow" + ;; + gid) + if $(echo "$new_value" | grep -q '^[0-9][0-9]*$'); then + field=4 + else + # group name + file="$__object/explorer/group" + field=1 + fi + ;; + uid) field=3 ;; + comment) field=5 ;; + home) field=6 ;; + shell) field=7 ;; + esac + + current_value="$(awk -F: '{ print $ENVIRON["field"] }' < "$file")" + + if [ "$new_value" != "$current_value" ]; then + # Shedule changed properties for update + set -- "$@" "--$property" \"$new_value\" + fi + done + + if [ $# -gt 0 ]; then + # Update changed properties + echo usermod "$@" "$name" fi -done +else + for property in $(ls .); do + new_value="$(cat "$property")" + set -- "$@" "--$property" \"$new_value\" + done - -if [ $# -gt 0 ]; then - # Update changed properties - echo $command $@ $name + echo useradd "$@" "$name" fi - From db425d39254c35c8fa8ba85678dafced87ef64ba Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 10:59:04 +0200 Subject: [PATCH 0284/5240] use property, not key anymore Signed-off-by: Nico Schottelius --- conf/type/__user/gencode-remote | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/conf/type/__user/gencode-remote b/conf/type/__user/gencode-remote index c7dbac41..8f4222c3 100755 --- a/conf/type/__user/gencode-remote +++ b/conf/type/__user/gencode-remote @@ -1,6 +1,7 @@ #!/bin/sh # # 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# 2011 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -30,7 +31,7 @@ if grep -q "^${name}:" "$__object/explorer/passwd"; then file="$__object/explorer/passwd" - case "$key" in + case "$property" in password) field=3 file="$__object/explorer/shadow" @@ -50,18 +51,15 @@ if grep -q "^${name}:" "$__object/explorer/passwd"; then shell) field=7 ;; esac + export field current_value="$(awk -F: '{ print $ENVIRON["field"] }' < "$file")" if [ "$new_value" != "$current_value" ]; then - # Shedule changed properties for update set -- "$@" "--$property" \"$new_value\" fi done - if [ $# -gt 0 ]; then - # Update changed properties - echo usermod "$@" "$name" - fi + [ $# -gt 0 ] && echo usermod "$@" "$name" else for property in $(ls .); do new_value="$(cat "$property")" From d49e481a87d920fab6dc157e663cdf6d324c61fd Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 11:00:15 +0200 Subject: [PATCH 0285/5240] match on name: not name, may be invalid Signed-off-by: Nico Schottelius --- conf/type/__group/gencode-remote | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__group/gencode-remote b/conf/type/__group/gencode-remote index 35df5424..a8a8397d 100755 --- a/conf/type/__group/gencode-remote +++ b/conf/type/__group/gencode-remote @@ -38,7 +38,7 @@ get_current_value() { } cd "$__object/parameter" -if grep -q "^$name" "$__object/explorer/group"; then +if grep -q "^${name}:" "$__object/explorer/group"; then # group exists, only change changed values for property in $(ls .); do current_value=$(get_current_value "$property") From e464c5aaa223f3cfe80f20c3d42a1eb2b928adad Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 11:04:00 +0200 Subject: [PATCH 0286/5240] simplify Signed-off-by: Nico Schottelius --- conf/type/__group/gencode-remote | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/conf/type/__group/gencode-remote b/conf/type/__group/gencode-remote index a8a8397d..4cb05762 100755 --- a/conf/type/__group/gencode-remote +++ b/conf/type/__group/gencode-remote @@ -24,35 +24,26 @@ name="$__object_id" -get_current_value() { - local key="$1" - local index - case "$key" in - password) - cut -d':' -f 2 "$__object/explorer/gshadow" - break - ;; - gid) index=3;; - esac - cut -d':' -f $index "$__object/explorer/group" -} - cd "$__object/parameter" if grep -q "^${name}:" "$__object/explorer/group"; then - # group exists, only change changed values for property in $(ls .); do - current_value=$(get_current_value "$property") new_value="$(cat "$property")" + + case "$key" in + password) + current_value="$(awk -F: '{ print $2 }' < "$__object/explorer/gshadow")" + ;; + gid) + current_value="$(awk -F: '{ print $3 }' < "$__object/explorer/group")" + ;; + esac + if [ "$new_value" != "$current_value" ]; then - # Shedule changed properties for update set -- "$@" "--$property" \"$new_value\" fi done - if [ $# -gt 0 ]; then - # Update changed properties - echo groupmod $@ $name - fi + [ $# -gt 0 ] && echo groupmod $@ $name else for property in $(ls .); do new_value="$(cat "$property")" From 324fc13927b06ab201042e0e19912dd2e025dcd6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 11:07:15 +0200 Subject: [PATCH 0287/5240] +changes Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index a1f218e8..f0641509 100644 --- a/doc/changelog +++ b/doc/changelog @@ -5,6 +5,7 @@ * Type __package gained Fedora support * Removed --preseed support from __package_apt * explorer/os: gained Fedora support + * Simplified types __user and __group 1.5.0: 2011-04-01 * Add basic cache functionality From a60e2838e324fe92e0bac7c12f46dc81d6509eff Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 4 Apr 2011 11:54:42 +0200 Subject: [PATCH 0288/5240] update .gitignore to match new man page locations Signed-off-by: Steven Armstrong --- .gitignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 68f829dc..778fc944 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,12 @@ # Ignore generated manpages doc/man/.marker -doc/man/man*/ +doc/man/man*/*.1 +doc/man/man*/*.7 +doc/man/man*/*.html +doc/man/man*/*.xml +# Ignore type manpages +doc/man/man*/*__*.text # Ignore cache for version control cache/ From fc1000994677ff1aeeea30a6fa5c5cee03003e0a Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Mon, 4 Apr 2011 11:59:30 +0200 Subject: [PATCH 0289/5240] update and merge ignore files Signed-off-by: Steven Armstrong --- .gitignore | 1 + doc/man/.gitignore | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) delete mode 100644 doc/man/.gitignore diff --git a/.gitignore b/.gitignore index 778fc944..15be6dc2 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ doc/man/man*/*.1 doc/man/man*/*.7 doc/man/man*/*.html doc/man/man*/*.xml +doc/man/man*/cdist-reference.text # Ignore type manpages doc/man/man*/*__*.text diff --git a/doc/man/.gitignore b/doc/man/.gitignore deleted file mode 100644 index 8ed9d1e1..00000000 --- a/doc/man/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -cdist.7 -*.html -cdist-design.7 -cdist-reference.text From 74e3447c40cb0497f13ec22f2faf38f80a5be7fe Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 12:04:10 +0200 Subject: [PATCH 0290/5240] add example multi branch .git/config Signed-off-by: Nico Schottelius --- doc/man/man7/cdist-best-practice.text | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/doc/man/man7/cdist-best-practice.text b/doc/man/man7/cdist-best-practice.text index aa499790..5ec01d5f 100644 --- a/doc/man/man7/cdist-best-practice.text +++ b/doc/man/man7/cdist-best-practice.text @@ -102,6 +102,39 @@ git checkout private git merge common -------------------------------------------------------------------------------- +The following **.git/config** is taken from a a real world scenario: +-------------------------------------------------------------------------------- +# Track upstream, merge from time to time +[remote "upstream"] + url = git://git.schottelius.org/cdist + fetch = +refs/heads/*:refs/remotes/upstream/* + +# Same as upstream, but works when being offline +[remote "local"] + fetch = +refs/heads/*:refs/remotes/local/* + url = /home/users/nico/p/cdist + +# Remote containing various ETH internal branches +[remote "eth"] + url = sans.ethz.ch:/home/services/sans/git/cdist-eth + fetch = +refs/heads/*:refs/remotes/eth/* + +# Public remote that contains my private changes to cdist upstream +[remote "nico"] + url = git.schottelius.org:/home/services/git/cdist-nico + fetch = +refs/heads/*:refs/remotes/nico/* + +# The "nico" branch will be synced with the remote nico, branch master +[branch "nico"] + remote = nico + merge = refs/heads/master + +# ETH stable contains rock solid configurations used in various places +[branch "eth-stable"] + remote = eth + merge = refs/heads/stable +-------------------------------------------------------------------------------- + Have a look at git-remote(1) to adjust the remote configuration, which allows you to push certain branches to certain remotes. From a28ac9bedca9581b1c28d8af44f66bf8280094a8 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 12:15:13 +0200 Subject: [PATCH 0291/5240] ++todo 1.6 Signed-off-by: Nico Schottelius --- doc/dev/todo/1.6 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/dev/todo/1.6 b/doc/dev/todo/1.6 index 1be7274f..12a83e93 100644 --- a/doc/dev/todo/1.6 +++ b/doc/dev/todo/1.6 @@ -1 +1,3 @@ -- adjust documentation / stages +Documentation: + - update stages + - go through all manpages and ensure __ and co are correct From 09bf63ffca43d10320f20fd41dfb0943275ccf9f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 12:19:02 +0200 Subject: [PATCH 0292/5240] [DOC] remove some formatting issues in cdist-reference Signed-off-by: Nico Schottelius --- doc/man/cdist-reference.text.sh | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/doc/man/cdist-reference.text.sh b/doc/man/cdist-reference.text.sh index 8fb24362..a5d1698a 100755 --- a/doc/man/cdist-reference.text.sh +++ b/doc/man/cdist-reference.text.sh @@ -45,9 +45,11 @@ cdist-reference - Variable, path and type reference for cdist DESCRIPTION ----------- -Various scripts which are not in the core need information on how -to find information. This manpage summarises the available environment -variables, types and paths and clearifies with part may access which variables. +This reference summarises + +- environment variables +- paths +- types PATHS @@ -62,7 +64,6 @@ conf/manifest/init:: It is an executable (+x bit set) shell script that can use values from the explorers to decide which configuration to create for the specified target host. - It should be primary used to define mapping from configurations to hosts. conf/manifest/*:: @@ -103,15 +104,12 @@ conf/type//parameters/optional:: conf/type//explorer:: Location of the type specific explorers. - This directory is referenced by the variable __type_explorer (see below). - See cdist-explorer(7). out/:: This directory contains output of cdist and is usually located in a temporary directory and thus will be removed after the run. - This directory is referenced by the variable __global (see below). out/explorer:: @@ -122,7 +120,6 @@ out/object:: out/object/:: Contains all object specific information. - This directory is referenced by the variable __object (see below). out/object//explorers:: @@ -138,8 +135,8 @@ TYPES The available types are listed in the SEE ALSO section and are referenced as cdist-type__TYPENAME. -VARIABLES ---------- +ENVIRONMENT VARIABLES +--------------------- __explorer:: Directory that contains all explorers. Available for: explorer From 785ec3f36ff7315012cf0ac037a5e01d8a2210cd Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 13:20:22 +0200 Subject: [PATCH 0293/5240] sort fields by alphabet Signed-off-by: Nico Schottelius --- conf/type/__user/gencode-remote | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/conf/type/__user/gencode-remote b/conf/type/__user/gencode-remote index 8f4222c3..7670b943 100755 --- a/conf/type/__user/gencode-remote +++ b/conf/type/__user/gencode-remote @@ -32,10 +32,6 @@ if grep -q "^${name}:" "$__object/explorer/passwd"; then file="$__object/explorer/passwd" case "$property" in - password) - field=3 - file="$__object/explorer/shadow" - ;; gid) if $(echo "$new_value" | grep -q '^[0-9][0-9]*$'); then field=4 @@ -45,10 +41,14 @@ if grep -q "^${name}:" "$__object/explorer/passwd"; then field=1 fi ;; - uid) field=3 ;; + password) + field=3 + file="$__object/explorer/shadow" + ;; comment) field=5 ;; home) field=6 ;; shell) field=7 ;; + uid) field=3 ;; esac export field From 654512c2096cedff06aa696e407f995034572397 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 23:50:48 +0200 Subject: [PATCH 0294/5240] add template for __package_openbsd_pkg Signed-off-by: Nico Schottelius --- .../explorer/pkg_version | 30 +++++++++++ .../type/__package_openbsd_pkg/gencode-remote | 52 ++++++++++++++++++ conf/type/__package_openbsd_pkg/man.text | 53 +++++++++++++++++++ .../__package_openbsd_pkg/parameter/optional | 1 + .../__package_openbsd_pkg/parameter/required | 1 + 5 files changed, 137 insertions(+) create mode 100755 conf/type/__package_openbsd_pkg/explorer/pkg_version create mode 100755 conf/type/__package_openbsd_pkg/gencode-remote create mode 100644 conf/type/__package_openbsd_pkg/man.text create mode 100644 conf/type/__package_openbsd_pkg/parameter/optional create mode 100644 conf/type/__package_openbsd_pkg/parameter/required diff --git a/conf/type/__package_openbsd_pkg/explorer/pkg_version b/conf/type/__package_openbsd_pkg/explorer/pkg_version new file mode 100755 index 00000000..4f612423 --- /dev/null +++ b/conf/type/__package_openbsd_pkg/explorer/pkg_version @@ -0,0 +1,30 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Retrieve the status of a package - parsed dpkg output +# + +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" +else + name="$__object_id" +fi + +pacman -Q "$name" 2>/dev/null | awk '{ print $2 }' diff --git a/conf/type/__package_openbsd_pkg/gencode-remote b/conf/type/__package_openbsd_pkg/gencode-remote new file mode 100755 index 00000000..536b7708 --- /dev/null +++ b/conf/type/__package_openbsd_pkg/gencode-remote @@ -0,0 +1,52 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Manage packages with Pacman (mostly archlinux) +# + +# Debug +# exec >&2 +# set -x + +pacopts="--noconfirm --noprogressbar" + +if [ -f "$__object/parameter/name" ]; then + name="$__object/parameter/name" +else + name="$__object_id" +fi + +state="$(cat "$__object/parameter/state")" +pkg_version="$(cat "$__object/explorer/pkg_version")" + +case "$state" in + installed) + + # Empty? Not installed. + if [ -z "$pkg_version" ]; then + echo pacman "$pacopts" -S \"$name\" + fi + ;; + uninstalled) + if [ "$pkg_version" ]; then + echo pacman "$pacopts" -R \"$name\" + fi + ;; +esac diff --git a/conf/type/__package_openbsd_pkg/man.text b/conf/type/__package_openbsd_pkg/man.text new file mode 100644 index 00000000..35a7e44c --- /dev/null +++ b/conf/type/__package_openbsd_pkg/man.text @@ -0,0 +1,53 @@ +cdist-type__package_pacman(7) +============================= +Nico Schottelius + + +NAME +---- +cdist-type__package_pacman - Manage packages with pacman + + +DESCRIPTION +----------- +Pacman is usually used on the Archlinux distribution to manage +packages. + + +REQUIRED PARAMETERS +------------------- +state:: + Either "installed" or "deinstalled". + + +OPTIONAL PARAMETERS +------------------- +name:: + If supplied, use the name and not the object id as the package name. + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Ensure zsh in installed +__package_pacman zsh --state installed + +# If you don't want to follow pythonX packages, but always use python +__package_pacman python --state installed --name python2 + +# Remove obsolete package +__package_pacman puppet --state deinstalled +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) +- cdist-type__package(7) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__package_openbsd_pkg/parameter/optional b/conf/type/__package_openbsd_pkg/parameter/optional new file mode 100644 index 00000000..f121bdbf --- /dev/null +++ b/conf/type/__package_openbsd_pkg/parameter/optional @@ -0,0 +1 @@ +name diff --git a/conf/type/__package_openbsd_pkg/parameter/required b/conf/type/__package_openbsd_pkg/parameter/required new file mode 100644 index 00000000..ff72b5c7 --- /dev/null +++ b/conf/type/__package_openbsd_pkg/parameter/required @@ -0,0 +1 @@ +state From 02da74e4374732ba4e8060ed446e5960ac70d811 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 4 Apr 2011 23:57:36 +0200 Subject: [PATCH 0295/5240] add explorer os_version supporting openbsd Signed-off-by: Nico Schottelius --- conf/explorer/os_version | 97 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100755 conf/explorer/os_version diff --git a/conf/explorer/os_version b/conf/explorer/os_version new file mode 100755 index 00000000..d4dd2bc9 --- /dev/null +++ b/conf/explorer/os_version @@ -0,0 +1,97 @@ +#!/bin/sh +# +# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# All os variables are lower case +# +# + +case "$($__explorer/os)" in + openbsd) + uname -r + ;; +esac + +exit 0 + +# Ubuntu is also Debian, thus return if Ubuntu was found +if grep -q ^DISTRIB_ID=Ubuntu /etc/lsb-release 2>/dev/null; then + echo ubuntu + exit 0 +fi + +if [ -f /etc/arch-release ]; then + echo archlinux + exit 0 +fi + +if [ -f /etc/debian_version ]; then + echo debian + exit 0 +fi + +if [ -f /etc/gentoo-release ]; then + echo gentoo + exit 0 +fi + +# Fedora is also Redhat, thus return before redhat! +if grep -q ^Fedora /etc/redhat-release 2>/dev/null; then + echo fedora + exit 0 +fi + +if [ -f /etc/redhat-release ]; then + echo redhat + exit 0 +fi + +if [ -f /etc/SuSE-release ]; then + echo suse + exit 0 +fi + +uname_s="$(uname -s)" + +# Assume there is no tr on the client -> do lower case ourselves +case "$uname_s" in + Darwin) + echo macosx + exit 0 + ;; + NetBSD) + echo netbsd + exit 0 + ;; + FreeBSD) + echo freebsd + exit 0 + ;; + OpenBSD) + echo openbsd + exit 0 + ;; + SunOS) + echo solaris + exit 0 + ;; +esac + +echo "Unknown OS" >&2 +exit 1 From b474960774607c03e96b967374478a1bb8c79e6e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 00:03:23 +0200 Subject: [PATCH 0296/5240] explorer os_version supports macosx Signed-off-by: Nico Schottelius --- conf/explorer/os_version | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/conf/explorer/os_version b/conf/explorer/os_version index d4dd2bc9..02e2e2cd 100755 --- a/conf/explorer/os_version +++ b/conf/explorer/os_version @@ -23,7 +23,11 @@ # case "$($__explorer/os)" in - openbsd) + archlinux) + # empty, but well... + cat /etc/arch-release + ;; + macosx|openbsd) uname -r ;; esac @@ -36,11 +40,6 @@ if grep -q ^DISTRIB_ID=Ubuntu /etc/lsb-release 2>/dev/null; then exit 0 fi -if [ -f /etc/arch-release ]; then - echo archlinux - exit 0 -fi - if [ -f /etc/debian_version ]; then echo debian exit 0 @@ -71,10 +70,6 @@ uname_s="$(uname -s)" # Assume there is no tr on the client -> do lower case ourselves case "$uname_s" in - Darwin) - echo macosx - exit 0 - ;; NetBSD) echo netbsd exit 0 From edfedc5c064d38157f2abe5306297866e7e74b91 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 00:10:26 +0200 Subject: [PATCH 0297/5240] in theory finish os_version Signed-off-by: Nico Schottelius --- conf/explorer/os_version | 73 +++++++++------------------------------- 1 file changed, 16 insertions(+), 57 deletions(-) diff --git a/conf/explorer/os_version b/conf/explorer/os_version index 02e2e2cd..5f7120c0 100755 --- a/conf/explorer/os_version +++ b/conf/explorer/os_version @@ -27,66 +27,25 @@ case "$($__explorer/os)" in # empty, but well... cat /etc/arch-release ;; - macosx|openbsd) + debian) + cat /etc/debian_version + ;; + fedora) + cat /etc/fedora-release + ;; + gentoo) + cat /etc/gentoo-release + ;; + macosx|*bsd|solaris) uname -r ;; -esac - -exit 0 - -# Ubuntu is also Debian, thus return if Ubuntu was found -if grep -q ^DISTRIB_ID=Ubuntu /etc/lsb-release 2>/dev/null; then - echo ubuntu - exit 0 -fi - -if [ -f /etc/debian_version ]; then - echo debian - exit 0 -fi - -if [ -f /etc/gentoo-release ]; then - echo gentoo - exit 0 -fi - -# Fedora is also Redhat, thus return before redhat! -if grep -q ^Fedora /etc/redhat-release 2>/dev/null; then - echo fedora - exit 0 -fi - -if [ -f /etc/redhat-release ]; then - echo redhat - exit 0 -fi - -if [ -f /etc/SuSE-release ]; then - echo suse - exit 0 -fi - -uname_s="$(uname -s)" - -# Assume there is no tr on the client -> do lower case ourselves -case "$uname_s" in - NetBSD) - echo netbsd - exit 0 + redhat) + cat /etc/redhat-release ;; - FreeBSD) - echo freebsd - exit 0 + suse) + cat /etc/SuSE-release ;; - OpenBSD) - echo openbsd - exit 0 - ;; - SunOS) - echo solaris - exit 0 + ubuntu) + lsb_release -sr ;; esac - -echo "Unknown OS" >&2 -exit 1 From 1a9901989133203d9552b027d66383660efb8148 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 00:11:19 +0200 Subject: [PATCH 0298/5240] more stuff todo Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index ad6561a6..3adf4561 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -24,6 +24,7 @@ CORE - probably remove or improve cdist-type-template + TYPES ------ - __ssh-keys (host/user) @@ -40,6 +41,7 @@ DOCUMENTATION - asciidoc interprets __, which we use for variables names -> seek through docs and replace with \_\_! - check all all internal variables are prefixed with __cdist +- reference explorers in cdist-reference! Cache: - add example how to use From 5710d9a60690656e5d820ef24acce7f104c842a1 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 14:57:22 +0200 Subject: [PATCH 0299/5240] delay __package_openbsd_pkg / wait for input of justastudent Signed-off-by: Nico Schottelius --- .../explorer/pkg_version | 30 ----------- .../type/__package_openbsd_pkg/gencode-remote | 52 ------------------ conf/type/__package_openbsd_pkg/man.text | 53 ------------------- .../__package_openbsd_pkg/parameter/optional | 1 - .../__package_openbsd_pkg/parameter/required | 1 - 5 files changed, 137 deletions(-) delete mode 100755 conf/type/__package_openbsd_pkg/explorer/pkg_version delete mode 100755 conf/type/__package_openbsd_pkg/gencode-remote delete mode 100644 conf/type/__package_openbsd_pkg/man.text delete mode 100644 conf/type/__package_openbsd_pkg/parameter/optional delete mode 100644 conf/type/__package_openbsd_pkg/parameter/required diff --git a/conf/type/__package_openbsd_pkg/explorer/pkg_version b/conf/type/__package_openbsd_pkg/explorer/pkg_version deleted file mode 100755 index 4f612423..00000000 --- a/conf/type/__package_openbsd_pkg/explorer/pkg_version +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# -# 2011 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Retrieve the status of a package - parsed dpkg output -# - -if [ -f "$__object/parameter/name" ]; then - name="$(cat "$__object/parameter/name")" -else - name="$__object_id" -fi - -pacman -Q "$name" 2>/dev/null | awk '{ print $2 }' diff --git a/conf/type/__package_openbsd_pkg/gencode-remote b/conf/type/__package_openbsd_pkg/gencode-remote deleted file mode 100755 index 536b7708..00000000 --- a/conf/type/__package_openbsd_pkg/gencode-remote +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# -# 2011 Nico Schottelius (nico-cdist at schottelius.org) -# -# This file is part of cdist. -# -# cdist is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cdist is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cdist. If not, see . -# -# -# Manage packages with Pacman (mostly archlinux) -# - -# Debug -# exec >&2 -# set -x - -pacopts="--noconfirm --noprogressbar" - -if [ -f "$__object/parameter/name" ]; then - name="$__object/parameter/name" -else - name="$__object_id" -fi - -state="$(cat "$__object/parameter/state")" -pkg_version="$(cat "$__object/explorer/pkg_version")" - -case "$state" in - installed) - - # Empty? Not installed. - if [ -z "$pkg_version" ]; then - echo pacman "$pacopts" -S \"$name\" - fi - ;; - uninstalled) - if [ "$pkg_version" ]; then - echo pacman "$pacopts" -R \"$name\" - fi - ;; -esac diff --git a/conf/type/__package_openbsd_pkg/man.text b/conf/type/__package_openbsd_pkg/man.text deleted file mode 100644 index 35a7e44c..00000000 --- a/conf/type/__package_openbsd_pkg/man.text +++ /dev/null @@ -1,53 +0,0 @@ -cdist-type__package_pacman(7) -============================= -Nico Schottelius - - -NAME ----- -cdist-type__package_pacman - Manage packages with pacman - - -DESCRIPTION ------------ -Pacman is usually used on the Archlinux distribution to manage -packages. - - -REQUIRED PARAMETERS -------------------- -state:: - Either "installed" or "deinstalled". - - -OPTIONAL PARAMETERS -------------------- -name:: - If supplied, use the name and not the object id as the package name. - - -EXAMPLES --------- - --------------------------------------------------------------------------------- -# Ensure zsh in installed -__package_pacman zsh --state installed - -# If you don't want to follow pythonX packages, but always use python -__package_pacman python --state installed --name python2 - -# Remove obsolete package -__package_pacman puppet --state deinstalled --------------------------------------------------------------------------------- - - -SEE ALSO --------- -- cdist-type(7) -- cdist-type__package(7) - - -COPYING -------- -Copyright \(C) 2011 Nico Schottelius. Free use of this software is -granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__package_openbsd_pkg/parameter/optional b/conf/type/__package_openbsd_pkg/parameter/optional deleted file mode 100644 index f121bdbf..00000000 --- a/conf/type/__package_openbsd_pkg/parameter/optional +++ /dev/null @@ -1 +0,0 @@ -name diff --git a/conf/type/__package_openbsd_pkg/parameter/required b/conf/type/__package_openbsd_pkg/parameter/required deleted file mode 100644 index ff72b5c7..00000000 --- a/conf/type/__package_openbsd_pkg/parameter/required +++ /dev/null @@ -1 +0,0 @@ -state From 33e792540e38168b6f730ead3840809406a3a5bc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 14:57:50 +0200 Subject: [PATCH 0300/5240] more stuff for 1.6.0 Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index f0641509..cec4a11a 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,6 +1,7 @@ 1.6.0: * New Type __package_yum * New type __debconf_set_selections + * New explorer os_version * Fix Type __group in case of __group NAME syntax * Type __package gained Fedora support * Removed --preseed support from __package_apt From 1fc90b2d8c5d5f09f14a951d0c21ad3adfcc4cfe Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 14:58:40 +0200 Subject: [PATCH 0301/5240] +obsd pkg tests Signed-off-by: Nico Schottelius --- doc/dev/logs/2011-04-04.openbsd | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 doc/dev/logs/2011-04-04.openbsd diff --git a/doc/dev/logs/2011-04-04.openbsd b/doc/dev/logs/2011-04-04.openbsd new file mode 100644 index 00000000..df1732c2 --- /dev/null +++ b/doc/dev/logs/2011-04-04.openbsd @@ -0,0 +1,24 @@ + +Some openbsd experiements: + +# pkg_add foo +Can't find foo +# echo $? +0 +# +# pkg_info foo +# echo $? +0 + +# pkg_add -s vim +Ambiguous: vim could be vim-7.2.444-gtk2 vim-7.2.444-no_x11 +# pkg_add -s vim--no_x11 +# echo $? +0 +# pkg_add -s vimfooooooooo +Can't find vimfooooooooo +# pkg_add -s vim--foooooooo +Can't find vim--foooooooo +# echo $? +0 + From 231d6a49868f7d7d63a1c6959b52a6e7980ed3a8 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 15:19:33 +0200 Subject: [PATCH 0302/5240] more ideas for stuff todo Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 3adf4561..ebf506d4 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -23,6 +23,9 @@ CORE [20:22] kr:bin% - probably remove or improve cdist-type-template +- add $__tmp? + - for use in manifest, code, etc.? + - for creating temporary files, etc. TYPES From 4ebcdc3ef1d1126ab7f7b0d1d64f9ce45b297b2f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 16:25:13 +0200 Subject: [PATCH 0303/5240] find __package* -type f -exec sed -i 's/deinstalled/removed/g' {} \; Signed-off-by: Nico Schottelius --- conf/type/__package_apt/man.text | 4 ++-- conf/type/__package_pacman/man.text | 4 ++-- conf/type/__package_yum/man.text | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/conf/type/__package_apt/man.text b/conf/type/__package_apt/man.text index 0780124d..905bfb5f 100644 --- a/conf/type/__package_apt/man.text +++ b/conf/type/__package_apt/man.text @@ -17,7 +17,7 @@ manage packages. REQUIRED PARAMETERS ------------------- state:: - Either "installed" or "deinstalled". + Either "installed" or "removed". OPTIONAL PARAMETERS @@ -37,7 +37,7 @@ __package_apt zsh --state installed __package_apt webserver --state installed --name nginx # Remove obsolete package -__package_apt puppet --state deinstalled +__package_apt puppet --state removed -------------------------------------------------------------------------------- diff --git a/conf/type/__package_pacman/man.text b/conf/type/__package_pacman/man.text index 35a7e44c..28766581 100644 --- a/conf/type/__package_pacman/man.text +++ b/conf/type/__package_pacman/man.text @@ -17,7 +17,7 @@ packages. REQUIRED PARAMETERS ------------------- state:: - Either "installed" or "deinstalled". + Either "installed" or "removed". OPTIONAL PARAMETERS @@ -37,7 +37,7 @@ __package_pacman zsh --state installed __package_pacman python --state installed --name python2 # Remove obsolete package -__package_pacman puppet --state deinstalled +__package_pacman puppet --state removed -------------------------------------------------------------------------------- diff --git a/conf/type/__package_yum/man.text b/conf/type/__package_yum/man.text index b2f57606..c9cad340 100644 --- a/conf/type/__package_yum/man.text +++ b/conf/type/__package_yum/man.text @@ -18,7 +18,7 @@ slightly confusing error message "Error: Nothing to do". REQUIRED PARAMETERS ------------------- state:: - Either "installed" or "deinstalled". + Either "installed" or "removed". OPTIONAL PARAMETERS @@ -38,7 +38,7 @@ __package_yum zsh --state installed __package_yum python --state installed --name python2 # Remove obsolete package -__package_yum puppet --state deinstalled +__package_yum puppet --state removed -------------------------------------------------------------------------------- From ac976c9f703ad319ff246ae0e2778a3f668ed2db Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 16:25:27 +0200 Subject: [PATCH 0304/5240] find __package* -type f -exec sed -i 's/uninstalled/removed/g' {} \; Signed-off-by: Nico Schottelius --- conf/type/__package/man.text | 2 +- conf/type/__package_apt/gencode-remote | 2 +- conf/type/__package_pacman/gencode-remote | 2 +- conf/type/__package_yum/gencode-remote | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/conf/type/__package/man.text b/conf/type/__package/man.text index eeeceba0..46af7b3d 100644 --- a/conf/type/__package/man.text +++ b/conf/type/__package/man.text @@ -17,7 +17,7 @@ It dispatches the actual work to the package system dependant types. REQUIRED PARAMETERS ------------------- state:: - The state the package should be in, either "installed" or "uninstalled" + The state the package should be in, either "installed" or "removed" OPTIONAL PARAMETERS diff --git a/conf/type/__package_apt/gencode-remote b/conf/type/__package_apt/gencode-remote index e38653e9..aac9beb1 100755 --- a/conf/type/__package_apt/gencode-remote +++ b/conf/type/__package_apt/gencode-remote @@ -46,7 +46,7 @@ case "$state" in echo $aptget install \"$name\" fi ;; - uninstalled) + removed) # Remove only if existent if [ -n "$is_installed" ]; then echo $aptget remove \"$name\" diff --git a/conf/type/__package_pacman/gencode-remote b/conf/type/__package_pacman/gencode-remote index 536b7708..b31d097a 100755 --- a/conf/type/__package_pacman/gencode-remote +++ b/conf/type/__package_pacman/gencode-remote @@ -44,7 +44,7 @@ case "$state" in echo pacman "$pacopts" -S \"$name\" fi ;; - uninstalled) + removed) if [ "$pkg_version" ]; then echo pacman "$pacopts" -R \"$name\" fi diff --git a/conf/type/__package_yum/gencode-remote b/conf/type/__package_yum/gencode-remote index 033298b1..215a1ae5 100755 --- a/conf/type/__package_yum/gencode-remote +++ b/conf/type/__package_yum/gencode-remote @@ -39,7 +39,7 @@ case "$state" in echo yum $opts install \"$name\" fi ;; - uninstalled) + removed) if ! grep -q "$not_installed" "$__object/explorer/pkg_version"; then echo yum $opts remove \"$name\" fi From 1687d82c9d88874bda757da031ce32b5379e1a31 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 16:26:56 +0200 Subject: [PATCH 0305/5240] ++changes in 1.6.0 Signed-off-by: Nico Schottelius --- doc/changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/changelog b/doc/changelog index cec4a11a..9672814f 100644 --- a/doc/changelog +++ b/doc/changelog @@ -3,6 +3,8 @@ * New type __debconf_set_selections * New explorer os_version * Fix Type __group in case of __group NAME syntax + * Fix __package* types: consistently name --state removed instead of + uninstalled or deinstalled * Type __package gained Fedora support * Removed --preseed support from __package_apt * explorer/os: gained Fedora support From 249977cca66bcff51778cf336ff377c076074016 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 16:49:09 +0200 Subject: [PATCH 0306/5240] document upcoming changes for 1.6 Signed-off-by: Nico Schottelius --- README | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/README b/README index aba67707..52471068 100644 --- a/README +++ b/README @@ -106,14 +106,15 @@ how to use cdist. There are at least the following branches available: * master: the development branch - * 1.5: Focus on object orientation instead of global stage orientation + * 1.6: New types, cleaned up \_\_package* types, internal cleanup Old versions: + * 1.5: Focus on object orientation instead of global stage orientation * 1.4: Support for redefiniton of objects (if equal) * 1.3: Support for local and remote code execution (current stable) * 1.2: Dependencies supported - * 1.1: __file to __file, __directory, __link migration + * 1.1: \_\_file to \_\_file, \_\_directory, \_\_link migration * 1.0: First official release Other branches may be available for features or bugfixes, but they @@ -123,7 +124,7 @@ may vanish at any point. To select a specific branch use git checkout -b origin/ # Stay on a specific version - version=1.5 + version=1.6 git checkout -b $version origin/$version ### Mirrors @@ -145,6 +146,14 @@ If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break. The master branch on the other hand is the development branch and may not be working, break your setup or eat the tree in your garden. +### Upgrading from 1.5 to 1.6 + +* If you used **\_\_package_apt --preseed**, you need to use the new + type **\_\_debconf_set_selections** instead. +* The **\_\_package** types accepted either --state deinstalled or + --state uninstaaled. Starting with 1.6, it was made consistently + to --state removed. + ### Upgrading from 1.3 to 1.5 No incompatiblities. From 519212e39684bc3d18e8ba6446496584365d02ca Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 16:53:56 +0200 Subject: [PATCH 0307/5240] error out if state given is unknown Signed-off-by: Nico Schottelius --- conf/type/__package_apt/gencode-remote | 4 ++++ conf/type/__package_pacman/gencode-remote | 4 ++++ conf/type/__package_yum/gencode-remote | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/conf/type/__package_apt/gencode-remote b/conf/type/__package_apt/gencode-remote index aac9beb1..df8fd823 100755 --- a/conf/type/__package_apt/gencode-remote +++ b/conf/type/__package_apt/gencode-remote @@ -52,4 +52,8 @@ case "$state" in echo $aptget remove \"$name\" fi ;; + *) + echo "Unknown state: $state" >&2 + exit 1 + ;; esac diff --git a/conf/type/__package_pacman/gencode-remote b/conf/type/__package_pacman/gencode-remote index b31d097a..347b037d 100755 --- a/conf/type/__package_pacman/gencode-remote +++ b/conf/type/__package_pacman/gencode-remote @@ -49,4 +49,8 @@ case "$state" in echo pacman "$pacopts" -R \"$name\" fi ;; + *) + echo "Unknown state: $state" >&2 + exit 1 + ;; esac diff --git a/conf/type/__package_yum/gencode-remote b/conf/type/__package_yum/gencode-remote index 215a1ae5..8bd81ca0 100755 --- a/conf/type/__package_yum/gencode-remote +++ b/conf/type/__package_yum/gencode-remote @@ -44,4 +44,8 @@ case "$state" in echo yum $opts remove \"$name\" fi ;; + *) + echo "Unknown state: $state" >&2 + exit 1 + ;; esac From c5925ff33153803ec50d718decf1dd4d6fced462 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 17:43:10 +0200 Subject: [PATCH 0308/5240] prepare version change Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index 026d8419..2e5c63b1 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -19,7 +19,7 @@ # # -__cdist_version="1.5.0" +__cdist_version="1.6.0pre" # Fail if something bogus is going on set -u From 4fc181273a0d56faaeef18fb762cdbd08cb061c1 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 17:58:09 +0200 Subject: [PATCH 0309/5240] ++todo Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index ebf506d4..abae0dcb 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -27,6 +27,7 @@ CORE - for use in manifest, code, etc.? - for creating temporary files, etc. +- How to cleanly implement "restart service if config file changed" TYPES ------ From 8ec728fd4bb24d7de7dd115cc513384c1b743942 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Tue, 5 Apr 2011 19:28:18 +0200 Subject: [PATCH 0310/5240] Type pkg_openbsd --- .../explorer/pkg_version | 31 +++++++++ .../type/__package_pkg_openbsd/gencode-remote | 64 +++++++++++++++++++ conf/type/__package_pkg_openbsd/man.text | 58 +++++++++++++++++ .../__package_pkg_openbsd/parameter/optional | 2 + .../__package_pkg_openbsd/parameter/required | 1 + 5 files changed, 156 insertions(+) create mode 100755 conf/type/__package_pkg_openbsd/explorer/pkg_version create mode 100755 conf/type/__package_pkg_openbsd/gencode-remote create mode 100644 conf/type/__package_pkg_openbsd/man.text create mode 100644 conf/type/__package_pkg_openbsd/parameter/optional create mode 100644 conf/type/__package_pkg_openbsd/parameter/required diff --git a/conf/type/__package_pkg_openbsd/explorer/pkg_version b/conf/type/__package_pkg_openbsd/explorer/pkg_version new file mode 100755 index 00000000..bc23a85d --- /dev/null +++ b/conf/type/__package_pkg_openbsd/explorer/pkg_version @@ -0,0 +1,31 @@ +#!/bin/sh +# +# 2011 Andi Brönnimann (andi-cdist at v-net.ch) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Retrieve the status of a package - parsed dpkg output +# + +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" +else + name="$__object_id" +fi + +#TODO: Is there a better way? +pkg_info | grep "$name" | sed 's .*\(-[0-9.][0-9.]*\).* \1 ' | sed 's/-//' diff --git a/conf/type/__package_pkg_openbsd/gencode-remote b/conf/type/__package_pkg_openbsd/gencode-remote new file mode 100755 index 00000000..a5756c8d --- /dev/null +++ b/conf/type/__package_pkg_openbsd/gencode-remote @@ -0,0 +1,64 @@ +#!/bin/sh +# +# 2011 Andi Brönnimann (andi-cdist at v-net.ch) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Manage packages with Pacman (mostly archlinux) +# + +# Debug +# exec >&2 +# set -x + +os_version="$(cat "$__global/explorer/os_version")" +platform="$(cat "$__global/explorer/platform")" + + +if [ -f "$__object/parameter/flavor" ]; then + flavor="$(cat "$__object/parameter/flavor")" +fi + +# do not show progress bar +pkgopts="-x" + +if [ -f "$__object/parameter/name" ]; then + name="$__object/parameter/name" +else + name="$__object_id" +fi + +state="$(cat "$__object/parameter/state")" +pkg_version="$(cat "$__object/explorer/pkg_version")" + +# TODO: Shouldn't be hardcoded +echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$platform/ + +case "$state" in + installed) + + # Empty? Not installed. + if [ -z "$pkg_version" ]; then + echo pkg_add "$pkgopts" \"$name--$flavor\" + fi + ;; + uninstalled) + if [ "$pkg_version" ]; then + echo pkg_delete "$pkgopts" \"$name--$flavor\" + fi + ;; +esac diff --git a/conf/type/__package_pkg_openbsd/man.text b/conf/type/__package_pkg_openbsd/man.text new file mode 100644 index 00000000..613c9045 --- /dev/null +++ b/conf/type/__package_pkg_openbsd/man.text @@ -0,0 +1,58 @@ +cdist-type__package_pkg(7) +============================= +Andreas Brönnimann + + +NAME +---- +cdist-type__package_pkg_openbsd - Manage OpenBSD packages + + +DESCRIPTION +----------- +This type is usually used on OpenBSD to manage packages. + + +REQUIRED PARAMETERS +------------------- +state:: + Either "installed" or "uninstalled". + + +OPTIONAL PARAMETERS +------------------- +name:: + If supplied, use the name and not the object id as the package name. + +flavor:: + If supplied, use to avoid ambigous + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Ensure zsh is installed +__package_pkg_openbsd zsh --state installed + +# Ensure vim is installed, use flavor no_x11 +__package_pkg_openbsd vim --state installed --flavor no_x11 + +# If you don't want to follow pythonX packages, but always use python +__package_pkg_openbsd python --state installed --name python2 + +# Remove obsolete package +__package_pkg_openbsd puppet --state uninstalled +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) +- cdist-type__package(7) + + +COPYING +------- +Copyright \(C) 2011 Andi Brönnimann. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__package_pkg_openbsd/parameter/optional b/conf/type/__package_pkg_openbsd/parameter/optional new file mode 100644 index 00000000..29b123ef --- /dev/null +++ b/conf/type/__package_pkg_openbsd/parameter/optional @@ -0,0 +1,2 @@ +name +flavor diff --git a/conf/type/__package_pkg_openbsd/parameter/required b/conf/type/__package_pkg_openbsd/parameter/required new file mode 100644 index 00000000..ff72b5c7 --- /dev/null +++ b/conf/type/__package_pkg_openbsd/parameter/required @@ -0,0 +1 @@ +state From aebf05001afd4a192bb49d228c7bae21b8c2540c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Tue, 5 Apr 2011 19:40:54 +0200 Subject: [PATCH 0311/5240] Add platform explorer --- conf/explorer/platform | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 conf/explorer/platform diff --git a/conf/explorer/platform b/conf/explorer/platform new file mode 100755 index 00000000..a28f6d08 --- /dev/null +++ b/conf/explorer/platform @@ -0,0 +1,34 @@ +#!/bin/sh +# +# 2010-2011 Andi Brönnimann (andi-cdist at v-net.ch) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# All os variables are lower case +# +# + +os="$(cat "$__global/explorer/os")" + +case "$os" in + archlinux) + echo $(uname -m) + ;; + openbsd) + echo $(uname -m) + ;; +esac From 52fb8d5661d8a1004fcfa2cb45af31f5354bec04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Tue, 5 Apr 2011 19:50:45 +0200 Subject: [PATCH 0312/5240] Change platform to hardware_type --- conf/explorer/{platform => hardware_type} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename conf/explorer/{platform => hardware_type} (100%) diff --git a/conf/explorer/platform b/conf/explorer/hardware_type similarity index 100% rename from conf/explorer/platform rename to conf/explorer/hardware_type From 864d25bd8cb2488be8f6e7964bfe9d7077bdb98e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 20:26:00 +0200 Subject: [PATCH 0313/5240] reorder todos Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index abae0dcb..7e9d2d5d 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -29,6 +29,14 @@ CORE - How to cleanly implement "restart service if config file changed" +- Cache + - add example how to use + - export variable $__cache + -> for current host + -> add function to cdist-config, import from cdist-cache + +- check all all internal variables are prefixed with __cdist + TYPES ------ - __ssh-keys (host/user) @@ -36,19 +44,12 @@ TYPES - regexp replace (can probably cover all?) -> aka sed. - __cron -- __user: +- __user add option to include --create-home - fix __user NAME case (same issue as __group) DOCUMENTATION -------------- - asciidoc interprets __, which we use for variables names -> seek through docs and replace with \_\_! -- check all all internal variables are prefixed with __cdist - reference explorers in cdist-reference! -Cache: - - add example how to use - - export variable $__cache - -> for current host - -> add function to cdist-config, import from cdist-cache From c5675bc35240ba2711bc9e2cc00851ecdc068c90 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 20:38:22 +0200 Subject: [PATCH 0314/5240] add hint on asciidoc errors and how to fix Signed-off-by: Nico Schottelius --- doc/man/man7/cdist-hacker.text | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/man/man7/cdist-hacker.text b/doc/man/man7/cdist-hacker.text index d55f1c2f..03a348ed 100644 --- a/doc/man/man7/cdist-hacker.text +++ b/doc/man/man7/cdist-hacker.text @@ -59,7 +59,8 @@ HOW TO SUBMIT A NEW TYPE Submitting a type works as described above, with the additional requirement that a corresponding manpage named man.text in asciidoc format with the manpage-name "cdist-type__NAME" is included in the type directory -AND asciidoc is able to compile it. +AND asciidoc is able to compile it (i.e. do NOT have to many "=" in the second +line). SEE ALSO From 4701c14045b20681b05a41fb9266ad406e43822f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 20:55:35 +0200 Subject: [PATCH 0315/5240] new todo Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index e7f2c72f..1f01ff44 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,2 +1,3 @@ -remove --preseed from package_apt and add debconf_set_selection or similar - -> much cleaner! +Cleanup documentation: + type reference -> add types + manpages + add explorer reference From d8eccddad089c3e07728c706f68805a5e21dcc95 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 5 Apr 2011 21:08:09 +0200 Subject: [PATCH 0316/5240] list types in type section Signed-off-by: Nico Schottelius --- doc/man/cdist-reference.text.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/man/cdist-reference.text.sh b/doc/man/cdist-reference.text.sh index a5d1698a..be9c3bbf 100755 --- a/doc/man/cdist-reference.text.sh +++ b/doc/man/cdist-reference.text.sh @@ -132,8 +132,17 @@ tmp_dir:: TYPES ----- -The available types are listed in the SEE ALSO section -and are referenced as cdist-type__TYPENAME. +The following types are available: +eof + +for type in man7/cdist-type__*.text; do + name_1="${type#man7/}"; man="${name_1%.text}(7)" + name_2="${name_1%.7}"; + name="$name_2" + echo "- $name" "($man)" +done + +cat << eof ENVIRONMENT VARIABLES --------------------- @@ -172,16 +181,7 @@ __type_explorers:: SEE ALSO -------- - cdist(7) -eof -for type in man7/cdist-type__*.7; do - name_1="${type#man7/}" - name_2="${name_1%.7}" - name="$name_2" - echo "- ${name}(7)" -done - -cat < Date: Tue, 5 Apr 2011 22:46:51 +0200 Subject: [PATCH 0317/5240] import man pages changes Signed-off-by: Steven Armstrong --- doc/man/man1/cdist-object-all.text | 31 ++++++++++++++++++++++++++++++ doc/man/man7/cdist-stages.text | 22 ++++++++++----------- 2 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 doc/man/man1/cdist-object-all.text diff --git a/doc/man/man1/cdist-object-all.text b/doc/man/man1/cdist-object-all.text new file mode 100644 index 00000000..06d45268 --- /dev/null +++ b/doc/man/man1/cdist-object-all.text @@ -0,0 +1,31 @@ +cdist-object-all(1) +=================== +Steven Armstrong + + +NAME +---- +cdist-object-all - Run the given command on all objects + + +SYNOPSIS +-------- +cdist-object-all HOSTNAME COMMAND + + +DESCRIPTION +----------- +Iterates over all defined objects and executes the given command on each +of them. + + +SEE ALSO +-------- +- cdist(7) +- cdist-type(1) + + +COPYING +------- +Copyright \(C) 2011 Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/doc/man/man7/cdist-stages.text b/doc/man/man7/cdist-stages.text index e2eef3da..b95b58d2 100644 --- a/doc/man/man7/cdist-stages.text +++ b/doc/man/man7/cdist-stages.text @@ -11,8 +11,8 @@ DESCRIPTION ----------- Starting the execution of deployment with cdist-deploy-to(1), cdist passes through different stages, each can be triggered and debugged on its own. -Reading the source of the cdist-deploy-to and cdist-object-run-all executables -shows the scripts responsible for each stage. +Reading the source of the cdist-deploy-to executable shows the scripts +responsible for each stage. STAGE 0: INTERNAL PREPERATION @@ -56,7 +56,7 @@ STAGE 3: OBJECT INFORMATION RETRIEVAL ------------------------------------- Every object is checked whether its type has explorers and if so, these are transfered to the target host and executed. The results are transfered back -and can be used in the following stages to decide what changes need to made +and can be used in the following stages to decide what changes need to be made on the target to implement the desired state. Related documentation: @@ -68,10 +68,9 @@ Related documentation: STAGE 4: RUN THE OBJECT MANIFEST -------------------------------- -Every object is checked whether its type has a manifest file. If the type has -a manifest file and it is executable, it will be executed. The manifest script -may generate and change the created objects. In other words, one type can reuse -other types. +Every object is checked whether its type has a executable manifest. The +manifest script may generate and change the created objects. In other words, +one type can reuse other types. For instance the object __apache/www.test.ch is of type __apache, which may contain a manifest script, which creates new objects of type __file. @@ -88,11 +87,10 @@ Related documentation: STAGE 5: CODE GENERATION ------------------------ -In this stage for every created objects its type is checked whether it has a -gencode script. If the type has a gencode script and it is executable it will -be executed. This executable should create code to be executed on the target -on stdout. If the gencode executable fails, it must print diagnostic messages -on stderr and exit non-zero. +In this stage for every created objects its type is checked for executable +gencode whether scripts. The gencode scripts generate the code to be executed +on the target on stdout. If the gencode executables fail, they must print +diagnostic messages on stderr and exit non-zero. Related documentation: - cdist-object-gencode-run(1) From 3e46d593ae480599342f4a2aa906a921900c9df7 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 5 Apr 2011 22:48:24 +0200 Subject: [PATCH 0318/5240] remove obsolete man page Signed-off-by: Steven Armstrong --- doc/man/man1/cdist-object-run-all.text | 33 -------------------------- 1 file changed, 33 deletions(-) delete mode 100644 doc/man/man1/cdist-object-run-all.text diff --git a/doc/man/man1/cdist-object-run-all.text b/doc/man/man1/cdist-object-run-all.text deleted file mode 100644 index 9e36b3d4..00000000 --- a/doc/man/man1/cdist-object-run-all.text +++ /dev/null @@ -1,33 +0,0 @@ -cdist-object-run-all(1) -======================= -Nico Schottelius - - -NAME ----- -cdist-object-run-all - Run all created objects on the target host - - -SYNOPSIS --------- -cdist-object-run-all HOSTNAME - - -DESCRIPTION ------------ -Transfers type explorers to the target then runs cdist-object-run(1) -for each created object. - - -SEE ALSO --------- -- cdist(7) -- cdist-type-explorer-push(1) -- cdist-object-run(1) -- cdist-type(1) - - -COPYING -------- -Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is -granted under the terms of the GNU General Public License version 3 (GPLv3). From 13ce077e8e5395a137a9935161b548aded6223c5 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 5 Apr 2011 22:50:38 +0200 Subject: [PATCH 0319/5240] docfix Signed-off-by: Steven Armstrong --- doc/man/man7/cdist-stages.text | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/man/man7/cdist-stages.text b/doc/man/man7/cdist-stages.text index b95b58d2..294dffc7 100644 --- a/doc/man/man7/cdist-stages.text +++ b/doc/man/man7/cdist-stages.text @@ -87,10 +87,10 @@ Related documentation: STAGE 5: CODE GENERATION ------------------------ -In this stage for every created objects its type is checked for executable -gencode whether scripts. The gencode scripts generate the code to be executed -on the target on stdout. If the gencode executables fail, they must print -diagnostic messages on stderr and exit non-zero. +In this stage for every created object its type is checked for executable +gencode scripts. The gencode scripts generate the code to be executed on the +target on stdout. If the gencode executables fail, they must print diagnostic +messages on stderr and exit non-zero. Related documentation: - cdist-object-gencode-run(1) From 71765210bb8ac5bf9605abf0e9d9dac564cf831b Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 5 Apr 2011 22:55:46 +0200 Subject: [PATCH 0320/5240] rename cdist-object-process to cdist-object-prepare Signed-off-by: Steven Armstrong --- bin/cdist-config | 6 +++--- bin/cdist-deploy-to | 2 +- bin/{cdist-object-process => cdist-object-prepare} | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) rename bin/{cdist-object-process => cdist-object-prepare} (85%) diff --git a/bin/cdist-config b/bin/cdist-config index 2e5c63b1..e1e82f28 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -55,7 +55,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" : ${__cdist_name_manifest:=manifest} : ${__cdist_name_object:=object} : ${__cdist_name_object_finished:=done} -: ${__cdist_name_object_processed:=processed} +: ${__cdist_name_object_prepared:=prepared} : ${__cdist_name_object_id:=object_id} : ${__cdist_name_object_source:=source} : ${__cdist_name_objects_created:=.objects_created} @@ -210,9 +210,9 @@ __cdist_object_code() echo "$(__cdist_object_dir "$1")/${__cdist_name_code}" } -__cdist_object_processed() +__cdist_object_prepared() { - echo "$(__cdist_object_dir "$1")/${__cdist_name_object_processed}" + echo "$(__cdist_object_dir "$1")/${__cdist_name_object_prepared}" } __cdist_object_finished() diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index 02fd34fa..dab5d9a5 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -49,7 +49,7 @@ cdist-dir push "$__cdist_target_host" \ "${__cdist_abs_mydir}" "${__cdist_remote_bin_dir}" cdist-explorer-run-global "$__cdist_target_host" cdist-manifest-run-init "$__cdist_target_host" -cdist-object-all "$__cdist_target_host" cdist-object-process +cdist-object-all "$__cdist_target_host" cdist-object-prepare cdist-object-all "$__cdist_target_host" cdist-object-run cdist-cache "$__cdist_target_host" diff --git a/bin/cdist-object-process b/bin/cdist-object-prepare similarity index 85% rename from bin/cdist-object-process rename to bin/cdist-object-prepare index 777d2c88..8c92ff73 100755 --- a/bin/cdist-object-process +++ b/bin/cdist-object-prepare @@ -36,13 +36,13 @@ __cdist_object_dir="$(__cdist_object_dir "$__cdist_object")" # Export to non-core for use in manifest and gencode scripts export $__cdist_name_var_self=$__cdist_object -__cdist_object_processed="$(__cdist_object_processed "$__cdist_object")" -if [ ! -f "$__cdist_object_processed" ]; then +__cdist_object_prepared="$(__cdist_object_prepared "$__cdist_object")" +if [ ! -f "$__cdist_object_prepared" ]; then echo - echo "Processing object $__cdist_object" + echo "Preparing object $__cdist_object" cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" - # Mark this object as processed - touch "$__cdist_object_processed" + # Mark this object as prepared + touch "$__cdist_object_prepared" fi From b226b30dbad977bac321a0b23741584cedd6d1d2 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 5 Apr 2011 23:02:34 +0200 Subject: [PATCH 0321/5240] add man page for cdist-object-prepare Signed-off-by: Steven Armstrong --- doc/man/man1/cdist-object-prepare.text | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 doc/man/man1/cdist-object-prepare.text diff --git a/doc/man/man1/cdist-object-prepare.text b/doc/man/man1/cdist-object-prepare.text new file mode 100644 index 00000000..c91a7b2e --- /dev/null +++ b/doc/man/man1/cdist-object-prepare.text @@ -0,0 +1,35 @@ +cdist-object-prepare(1) +======================= +Steven Armstrong + + +NAME +---- +cdist-object-prepare - Prepare an object + + +SYNOPSIS +-------- +cdist-object-prepare HOSTNAME OBJECT + + +DESCRIPTION +----------- +Prepare the given object by running it through stage 3 (object information +retrieval) and stage 4 (run the object manifest). +See related man pages for details. + + +SEE ALSO +-------- +- cdist(7) +- cdist-stages(7) +- cdist-object-explorer-run(1) +- cdist-object-manifest-run(1) +- cdist-type(1) + + +COPYING +------- +Copyright \(C) 2011 Steven Armstrong. Free use of this software is granted +under the terms of the GNU General Public License version 3 (GPLv3). From 40d4b4d1be7a49fed88323bf71644e8062a594df Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 5 Apr 2011 23:10:58 +0200 Subject: [PATCH 0322/5240] update man page for cdist-object-run Signed-off-by: Steven Armstrong --- doc/man/man1/cdist-object-run.text | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/man/man1/cdist-object-run.text b/doc/man/man1/cdist-object-run.text index fca6db91..fc85a05f 100644 --- a/doc/man/man1/cdist-object-run.text +++ b/doc/man/man1/cdist-object-run.text @@ -1,6 +1,6 @@ cdist-object-run(1) =================== -Nico Schottelius +Steven Armstrong NAME @@ -15,15 +15,15 @@ cdist-object-run HOSTNAME OBJECT DESCRIPTION ----------- -Runs the given object on the given target host. -The different subtasks are dispatched to specialized exectuables. +Applies the given object on the target host by running it through stage 5 +(code generation) and stage 6 (code execution). See related man pages for details. SEE ALSO -------- - cdist(7) -- cdist-object-explorer-run(1) +- cdist-stages(7) - cdist-object-gencode-run(1) - cdist-object-push(1) - cdist-object-code-run(1) @@ -32,5 +32,5 @@ SEE ALSO COPYING ------- -Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is +Copyright \(C) 2011 Steven Armstrong. Free use of this software is granted under the terms of the GNU General Public License version 3 (GPLv3). From aeb7d34a8e81d829fd8af9c66707a8ebacefdaef Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 5 Apr 2011 23:11:31 +0200 Subject: [PATCH 0323/5240] -todo Signed-off-by: Steven Armstrong --- doc/dev/todo/TAKEME | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 7e9d2d5d..0fcced96 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -16,7 +16,6 @@ CORE - cdist-object-gencode: remove code if output empty? - also take care of that in cdist-code-run! -- cdist-object-process -> cdist-object-prepare - Remove cdist-object-push, covers only one line and is used only once: [20:22] kr:bin% grep cdist-object-push * cdist-object-run: cdist-object-push "$__cdist_target_host" "$__cdist_object" From ab741197ba7f22634090d6fec7b679e7aeaeca1b Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 5 Apr 2011 23:17:37 +0200 Subject: [PATCH 0324/5240] docfix: /etc/cdist is no more Signed-off-by: Steven Armstrong --- doc/man/man1/cdist-deploy-to.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/man/man1/cdist-deploy-to.text b/doc/man/man1/cdist-deploy-to.text index acbb915a..93417a77 100644 --- a/doc/man/man1/cdist-deploy-to.text +++ b/doc/man/man1/cdist-deploy-to.text @@ -23,7 +23,7 @@ called stages. It is intented to run either from the command line or from cron. ENVIRONMENT ----------- If the environment variable **__cdist_conf_dir** is not set, the -configuration is read from /etc/cdist. The local output directory can +configuration is read from /conf. The local output directory can be changed by the variable **__cdist_local_base_dir**. All environment variables are handled by cdist-config. From ff2581a25fe1ce9197ddbc97e811ef6c058c3262 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 5 Apr 2011 23:21:26 +0200 Subject: [PATCH 0325/5240] /cdist-object-run-all/cdist-object-run/ Signed-off-by: Steven Armstrong --- doc/man/man1/cdist-object-code-run.text | 2 +- doc/man/man1/cdist-object-gencode-run.text | 2 +- doc/man/man1/cdist-object-push.text | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/man/man1/cdist-object-code-run.text b/doc/man/man1/cdist-object-code-run.text index a055fc97..f8bae6a4 100644 --- a/doc/man/man1/cdist-object-code-run.text +++ b/doc/man/man1/cdist-object-code-run.text @@ -21,7 +21,7 @@ Execute the local and remote code for the given object. SEE ALSO -------- - cdist(7) -- cdist-object-run-all(1) +- cdist-object-run(1) - cdist-code-run(1) - cdist-run-remote(1) diff --git a/doc/man/man1/cdist-object-gencode-run.text b/doc/man/man1/cdist-object-gencode-run.text index be2d3448..7705815c 100644 --- a/doc/man/man1/cdist-object-gencode-run.text +++ b/doc/man/man1/cdist-object-gencode-run.text @@ -22,7 +22,7 @@ SEE ALSO -------- - cdist(7) - cdist-code-run(1) -- cdist-object-run-all(1) +- cdist-object-run(1) - cdist-object-gencode(1) diff --git a/doc/man/man1/cdist-object-push.text b/doc/man/man1/cdist-object-push.text index 5bff71cf..4c960eaa 100644 --- a/doc/man/man1/cdist-object-push.text +++ b/doc/man/man1/cdist-object-push.text @@ -21,7 +21,7 @@ Transfers the given object to the target host. SEE ALSO -------- - cdist(7) -- cdist-object-run-all(1) +- cdist-object-run(1) - cdist-type(1) From 836c2ae7b8ef412888fc596b6ee38cd32fbb2bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Tue, 5 Apr 2011 23:23:24 +0200 Subject: [PATCH 0326/5240] Add error output to __package_pkg_openbsd --- conf/explorer/hardware_type | 7 ++-- .../type/__package_pkg_openbsd/gencode-remote | 35 +++++++++++++++---- conf/type/__package_pkg_openbsd/man.text | 6 ++-- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/conf/explorer/hardware_type b/conf/explorer/hardware_type index a28f6d08..5966b11e 100755 --- a/conf/explorer/hardware_type +++ b/conf/explorer/hardware_type @@ -22,13 +22,10 @@ # # -os="$(cat "$__global/explorer/os")" +os="$($__explorer/os)" case "$os" in - archlinux) - echo $(uname -m) - ;; - openbsd) + archlinux|*bsd) echo $(uname -m) ;; esac diff --git a/conf/type/__package_pkg_openbsd/gencode-remote b/conf/type/__package_pkg_openbsd/gencode-remote index a5756c8d..0ad85458 100755 --- a/conf/type/__package_pkg_openbsd/gencode-remote +++ b/conf/type/__package_pkg_openbsd/gencode-remote @@ -18,7 +18,7 @@ # along with cdist. If not, see . # # -# Manage packages with Pacman (mostly archlinux) +# Manage packages with pkg on OpenBSD # # Debug @@ -26,7 +26,7 @@ # set -x os_version="$(cat "$__global/explorer/os_version")" -platform="$(cat "$__global/explorer/platform")" +hardware_type="$(cat "$__global/explorer/hardware_type")" if [ -f "$__object/parameter/flavor" ]; then @@ -46,19 +46,40 @@ state="$(cat "$__object/parameter/state")" pkg_version="$(cat "$__object/explorer/pkg_version")" # TODO: Shouldn't be hardcoded -echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$platform/ +echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$hardware_type/ case "$state" in installed) - # Empty? Not installed. if [ -z "$pkg_version" ]; then - echo pkg_add "$pkgopts" \"$name--$flavor\" + # use this because pkg_add doesn't properly handle errors + cat << eof + status=\$(pkg_add "$pkgopts" "$name--$flavor") + + # no error + if [ -n "\$status" ]; then + echo "Error: \$status" + exit 1 + fi +eof fi ;; - uninstalled) + removed) if [ "$pkg_version" ]; then - echo pkg_delete "$pkgopts" \"$name--$flavor\" + # use this because pkg_add doesn't properly handle errors + cat << eof + status=\$(pkg_delete "$pkgopts" "$name--$flavor") + + # no error + if [ -n "\$status" ]; then + echo "Error: \$status" + exit 1 + fi +eof fi ;; + *) + echo "Unknown state: $state" >&2 + exit 1 + ;; esac diff --git a/conf/type/__package_pkg_openbsd/man.text b/conf/type/__package_pkg_openbsd/man.text index 613c9045..32501ba8 100644 --- a/conf/type/__package_pkg_openbsd/man.text +++ b/conf/type/__package_pkg_openbsd/man.text @@ -1,6 +1,6 @@ cdist-type__package_pkg(7) ============================= -Andreas Brönnimann +Andi Brönnimann NAME @@ -16,7 +16,7 @@ This type is usually used on OpenBSD to manage packages. REQUIRED PARAMETERS ------------------- state:: - Either "installed" or "uninstalled". + Either "installed" or "removed". OPTIONAL PARAMETERS @@ -42,7 +42,7 @@ __package_pkg_openbsd vim --state installed --flavor no_x11 __package_pkg_openbsd python --state installed --name python2 # Remove obsolete package -__package_pkg_openbsd puppet --state uninstalled +__package_pkg_openbsd puppet --state removed -------------------------------------------------------------------------------- From dcd96c04d40b3aed414c94fae0c327d26135fbeb Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Tue, 5 Apr 2011 23:27:51 +0200 Subject: [PATCH 0327/5240] explicitly delete generated cdist-reference.text man page Signed-off-by: Steven Armstrong --- build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sh b/build.sh index 2df76539..e033c007 100755 --- a/build.sh +++ b/build.sh @@ -99,6 +99,7 @@ case "$1" in ;; clean) + rm -f ${MAN7DSTDIR}/cdist-reference.text find "${MANDIR}" -mindepth 2 -type l \ -o -name "*.1" \ -o -name "*.7" \ From d3a376545f291d72323659930a8ee3bac4e0bf27 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 09:32:11 +0200 Subject: [PATCH 0328/5240] generate new type listing Signed-off-by: Nico Schottelius --- doc/man/cdist-reference.text.sh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/doc/man/cdist-reference.text.sh b/doc/man/cdist-reference.text.sh index be9c3bbf..67e16989 100755 --- a/doc/man/cdist-reference.text.sh +++ b/doc/man/cdist-reference.text.sh @@ -21,6 +21,8 @@ # Generate manpage that lists available types # +FIXME: __ breaks again in asciidoc! + __cdist_pwd="$(pwd -P)" __cdist_mydir="${0%/*}"; __cdist_abs_mydir="$(cd "$__cdist_mydir" && pwd -P)" @@ -133,12 +135,15 @@ tmp_dir:: TYPES ----- The following types are available: + eof for type in man7/cdist-type__*.text; do - name_1="${type#man7/}"; man="${name_1%.text}(7)" - name_2="${name_1%.7}"; - name="$name_2" + no_dir="${type#man7/}"; + no_type="${no_dir#cdist-type}"; + name="${no_type%.text}"; + man="${no_dir%.text}(7)" + echo "- $name" "($man)" done From 7496639e1fbba99fe98a38916eaffb7541c8346b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 13:56:16 +0200 Subject: [PATCH 0329/5240] add template for cdist-mass-deploy Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 56 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 bin/cdist-mass-deploy diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy new file mode 100755 index 00000000..dab5d9a5 --- /dev/null +++ b/bin/cdist-mass-deploy @@ -0,0 +1,56 @@ +#!/bin/sh +# +# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Deploy configuration to a host +# + +. cdist-config +[ $# -eq 1 ] || __cdist_usage "" +set -eu + +__cdist_target_host="$1" + +# Make target host available for non-core +export $__cdist_name_var_target_host="$__cdist_target_host" +export $__cdist_name_var_target_user="$__cdist_remote_user" + +# Export variables for core, which others do not reset +export __cdist_local_base_dir + +echo "cdist $__cdist_version: Configuring $__cdist_target_host" + +################################################################################ +# See cdist-stages(7) +# + +# Prepare local and remote directories +__cdist_init_deploy "$__cdist_target_host" + +# Transfer cdist executables +echo "Transferring cdist binaries to $__cdist_target_host ..." +cdist-dir push "$__cdist_target_host" \ + "${__cdist_abs_mydir}" "${__cdist_remote_bin_dir}" +cdist-explorer-run-global "$__cdist_target_host" +cdist-manifest-run-init "$__cdist_target_host" +cdist-object-all "$__cdist_target_host" cdist-object-prepare +cdist-object-all "$__cdist_target_host" cdist-object-run +cdist-cache "$__cdist_target_host" + +echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" From e84ab9e14c4d86209c3bc63ec7ad177eca83f5ed Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 13:58:00 +0200 Subject: [PATCH 0330/5240] in theory finish cdist-mass-deploy Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 39 +++++++-------------------------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index dab5d9a5..3adb166c 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -1,6 +1,6 @@ #!/bin/sh # -# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) +# 2011 Nico Schottelius (nico-cdist at schottelius.org) # # This file is part of cdist. # @@ -18,39 +18,14 @@ # along with cdist. If not, see . # # -# Deploy configuration to a host +# Deploy configuration to many hosts # . cdist-config -[ $# -eq 1 ] || __cdist_usage "" +[ $# -lt 1 ] || __cdist_usage " [target host ...]" set -eu -__cdist_target_host="$1" - -# Make target host available for non-core -export $__cdist_name_var_target_host="$__cdist_target_host" -export $__cdist_name_var_target_user="$__cdist_remote_user" - -# Export variables for core, which others do not reset -export __cdist_local_base_dir - -echo "cdist $__cdist_version: Configuring $__cdist_target_host" - -################################################################################ -# See cdist-stages(7) -# - -# Prepare local and remote directories -__cdist_init_deploy "$__cdist_target_host" - -# Transfer cdist executables -echo "Transferring cdist binaries to $__cdist_target_host ..." -cdist-dir push "$__cdist_target_host" \ - "${__cdist_abs_mydir}" "${__cdist_remote_bin_dir}" -cdist-explorer-run-global "$__cdist_target_host" -cdist-manifest-run-init "$__cdist_target_host" -cdist-object-all "$__cdist_target_host" cdist-object-prepare -cdist-object-all "$__cdist_target_host" cdist-object-run -cdist-cache "$__cdist_target_host" - -echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" +while [ $# -ge 1 ]; do + cdist-deploy-to "$1" + shift +done From 32c261293488196dc8f5c28c3fcc0d9bad46452e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 13:59:34 +0200 Subject: [PATCH 0331/5240] ge vs lt Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index 3adb166c..84e4376d 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -22,7 +22,7 @@ # . cdist-config -[ $# -lt 1 ] || __cdist_usage " [target host ...]" +[ $# -ge 1 ] || __cdist_usage " [target host ...]" set -eu while [ $# -ge 1 ]; do From 86a6b10ae9dcb2386154e2ba1feb19529f4e2c6b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 14:00:41 +0200 Subject: [PATCH 0332/5240] more stuff for the next wonderful release Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 9672814f..0ba6b2f0 100644 --- a/doc/changelog +++ b/doc/changelog @@ -9,6 +9,7 @@ * Removed --preseed support from __package_apt * explorer/os: gained Fedora support * Simplified types __user and __group + * New helper binary: cdist-mass-deploy 1.5.0: 2011-04-01 * Add basic cache functionality From b9ef12b48d20c284e3cbf986f7ba4ec824a7ee81 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 14:05:47 +0200 Subject: [PATCH 0333/5240] enhance cdist-mass-deploy and add parallel execution Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index 84e4376d..f5790c03 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -22,10 +22,25 @@ # . cdist-config -[ $# -ge 1 ] || __cdist_usage " [target host ...]" +[ $# -ge 1 ] || __cdist_usage "[-p] [target host ...]" set -eu +if [ "$1" = "-p" ]; then + parallel=yes +else + parallel="" +fi + while [ $# -ge 1 ]; do - cdist-deploy-to "$1" + if [ "$parallel" ]; then + cdist-deploy-to "$1" & + else + cdist-deploy-to "$1" + fi shift done + +if [ "$parallel" ]; then + echo "Waiting for cdist-deploy-to jobs to finish..." + wait +fi From 5aa32fa42d042e82dc9a69f26ac8fba18ba27f2b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 14:16:33 +0200 Subject: [PATCH 0334/5240] beautify parallel mode Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index f5790c03..f3e526cc 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -25,21 +25,22 @@ [ $# -ge 1 ] || __cdist_usage "[-p] [target host ...]" set -eu +parallel="" if [ "$1" = "-p" ]; then parallel=yes -else - parallel="" + shift fi while [ $# -ge 1 ]; do - if [ "$parallel" ]; then - cdist-deploy-to "$1" & - else - cdist-deploy-to "$1" - fi + # always assume we run parallel + cdist-deploy-to "$1" | awk -v host=$1 '{ print "[" host "]" $0 }"' & shift + + # if not, wait for it _now_ + [ "$parallel" ] || fg done +# else wait after all are started if [ "$parallel" ]; then echo "Waiting for cdist-deploy-to jobs to finish..." wait From 75509dc8a53396dc3af2fb839e0c0163e1b98f9a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 14:18:14 +0200 Subject: [PATCH 0335/5240] PLUS whitespace (not only, but also for Steven) Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index f3e526cc..1bd6939e 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -33,7 +33,7 @@ fi while [ $# -ge 1 ]; do # always assume we run parallel - cdist-deploy-to "$1" | awk -v host=$1 '{ print "[" host "]" $0 }"' & + cdist-deploy-to "$1" | awk -v host=$1 '{ print "[" host "] " $0 }' & shift # if not, wait for it _now_ From 1973ac0787d70f4b164a0f3349a2965c2621ecca Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 14:22:44 +0200 Subject: [PATCH 0336/5240] use wait instead of fg Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index 1bd6939e..2753bcab 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -37,7 +37,7 @@ while [ $# -ge 1 ]; do shift # if not, wait for it _now_ - [ "$parallel" ] || fg + [ "$parallel" ] || wait done # else wait after all are started From 7e1b7614b1b07acacc578a430f5040daf5e8bc5a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 14:44:19 +0200 Subject: [PATCH 0337/5240] finish manpage for cdist-mass-deploy Signed-off-by: Nico Schottelius --- doc/man/man1/cdist-mass-deploy.text | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 doc/man/man1/cdist-mass-deploy.text diff --git a/doc/man/man1/cdist-mass-deploy.text b/doc/man/man1/cdist-mass-deploy.text new file mode 100644 index 00000000..ac495b21 --- /dev/null +++ b/doc/man/man1/cdist-mass-deploy.text @@ -0,0 +1,41 @@ +cdist-mass-deploy(1) +==================== +Nico Schottelius + + +NAME +---- +cdist-mass-deploy - Deploy configuration to many hosts + + +SYNOPSIS +-------- +cdist-mass-deploy [-p] HOSTNAME [HOSTNAME ...] + + +DESCRIPTION +----------- +cdist-mass-deploy is essentially a wrapper around cdist-deploy-to to +be able to deploy to many hosts on one command line. + + +EXAMPLES +-------- +Deploy in parallel to all hosts specfied in the dsh group configuration ikr, +which is prefixed by "root@": + +-------------------------------------------------------------------------------- +cdist-mass-deploy -p $(cat ~/.dsh/group/ikr | sed 's/^root@//') +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist(7) +- cdist-deploy-to(1) + + +COPYING +------- +Copyright \(C) 2010-2011 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). From 9c1d6061616af161fc9343a0c59be80201840cac Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 14:47:39 +0200 Subject: [PATCH 0338/5240] -fixme, __ issue needs to be fixed globally Signed-off-by: Nico Schottelius --- doc/man/cdist-reference.text.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/man/cdist-reference.text.sh b/doc/man/cdist-reference.text.sh index 67e16989..51ae2a55 100755 --- a/doc/man/cdist-reference.text.sh +++ b/doc/man/cdist-reference.text.sh @@ -21,8 +21,6 @@ # Generate manpage that lists available types # -FIXME: __ breaks again in asciidoc! - __cdist_pwd="$(pwd -P)" __cdist_mydir="${0%/*}"; __cdist_abs_mydir="$(cd "$__cdist_mydir" && pwd -P)" From 4aa0d803109f52054d97e5e65dd1c1a4d79b1dfa Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 19:36:57 +0200 Subject: [PATCH 0339/5240] prepare files for 1.6.0 release Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- doc/changelog | 2 +- doc/dev/todo/1.6 | 3 --- 3 files changed, 2 insertions(+), 5 deletions(-) delete mode 100644 doc/dev/todo/1.6 diff --git a/bin/cdist-config b/bin/cdist-config index e1e82f28..96de4664 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -19,7 +19,7 @@ # # -__cdist_version="1.6.0pre" +__cdist_version="1.6.0" # Fail if something bogus is going on set -u diff --git a/doc/changelog b/doc/changelog index 0ba6b2f0..9dda1806 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,4 +1,4 @@ -1.6.0: +1.6.0: 2011-04-06 * New Type __package_yum * New type __debconf_set_selections * New explorer os_version diff --git a/doc/dev/todo/1.6 b/doc/dev/todo/1.6 deleted file mode 100644 index 12a83e93..00000000 --- a/doc/dev/todo/1.6 +++ /dev/null @@ -1,3 +0,0 @@ -Documentation: - - update stages - - go through all manpages and ensure __ and co are correct From 4165b4fe15605d0fddac6f998b9d8d11e4dd1c75 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 19:40:42 +0200 Subject: [PATCH 0340/5240] rephrase introduction Signed-off-by: Nico Schottelius --- README | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README b/README index 52471068..54f792a7 100644 --- a/README +++ b/README @@ -15,17 +15,16 @@ "P' "" "" -[[!toc levels=2]] +[[!toc levels=2]] ## Introduction -cdist configures your system and is similar to -other configuration management systems like +cdist is an alternative to other configuration management systems like [cfengine](http://www.cfengine.org/), [bcfg2](http://trac.mcs.anl.gov/projects/bcfg2), [chef](http://wiki.opscode.com/display/chef/) -and [puppet](http://www.puppetlabs.com/), but it ticks differently. -Here are some features that makes it unique: +and [puppet](http://www.puppetlabs.com/). +But cdist ticks differently, here is the feature set that makes it unique: [[!table data=""" Keywords | Description From 723046fdd2756bd7a3ed4905b71b3bca40f654d9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:00:36 +0200 Subject: [PATCH 0341/5240] introduce and use __cdist_echo Signed-off-by: Nico Schottelius --- bin/cdist-config | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 96de4664..efb8c3c0 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -148,22 +148,37 @@ __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") ################################################################################ # Internal functions # -__cdist_debug_echo() +__cdist_echo() { - if [ "$__cdist_debug" ]; then - echo "Debug: $@" - fi + __cdist_echo_type="$1"; shift + + case "$__cdist_echo_type" in + debug) + if [ "$__cdist_debug" ]; then + echo "Debug: $@" + fi + ;; + info) + echo "$@" + ;; + error) + echo "Error: $@" >&2 + ;; + esac } __cdist_exec_fail_on_error() { sh -e "$@" - [ "$?" -eq 0 ] || __cdist_exit_err "$1 exited non-zero." + if [ "$?" -ne 0 ]; then + __cdist_echo error "$1 exited non-zero." + __cdist_exit_err "$1 exited non-zero." + fi } __cdist_exit_err() { - echo "Error: $@" >&2 + __cdist_echo error "$@" exit 1 } From aad8070d266b4efa68310c9151b6ba8bab1e0b55 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:00:53 +0200 Subject: [PATCH 0342/5240] todo/nico++ Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 1f01ff44..5df1cb61 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,3 +1,5 @@ +Introduce better logging + Cleanup documentation: type reference -> add types + manpages add explorer reference From 90f5d4716445cdfc6adc18d210344508dfb494ee Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:04:34 +0200 Subject: [PATCH 0343/5240] add warning level Signed-off-by: Nico Schottelius --- bin/cdist-config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/cdist-config b/bin/cdist-config index efb8c3c0..8195a304 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -161,6 +161,9 @@ __cdist_echo() info) echo "$@" ;; + warning) + echo "Warning: $@" + ;; error) echo "Error: $@" >&2 ;; From 08d18ec1ec029307e988a63137eefe38675226a3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:05:58 +0200 Subject: [PATCH 0344/5240] show broken code Signed-off-by: Nico Schottelius --- bin/cdist-config | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 8195a304..b5e1fe10 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -174,8 +174,9 @@ __cdist_exec_fail_on_error() { sh -e "$@" if [ "$?" -ne 0 ]; then - __cdist_echo error "$1 exited non-zero." - __cdist_exit_err "$1 exited non-zero." + __cdist_echo error "$1 exited non-zero, showing code:" + cat "$1" + __cdist_exit_err "Aborting due to non-zero exit code." fi } From 813b4e1f2be440b960c90c28e7bf62c7c8cc4ca7 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:11:39 +0200 Subject: [PATCH 0345/5240] use __cdist_exec_fail_on_error in bin/cdist-code-run Signed-off-by: Nico Schottelius --- bin/cdist-code-run | 2 +- bin/cdist-config | 12 ++++++++---- bin/cdist-object-code-run | 6 ++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index 54cb312f..cf7e8e8d 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -40,7 +40,7 @@ if [ -e "$code" ]; then if [ -f "$code" ]; then if [ -x "$code" ]; then echo "Executing code-${__cdist_gencode_type} for $__cdist_object ..." - "$code" + __cdist_exec_fail_on_error "$code" else __cdist_exit_err "$code exists, but is not executable." fi diff --git a/bin/cdist-config b/bin/cdist-config index b5e1fe10..8678d205 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -152,20 +152,24 @@ __cdist_echo() { __cdist_echo_type="$1"; shift + if [ "$__cdist_object_self" ]; then + __cdist_echo_prefix="$__cdist_object_self" + fi + case "$__cdist_echo_type" in debug) if [ "$__cdist_debug" ]; then - echo "Debug: $@" + echo $__cdist_echo_prefix "Debug: $@" fi ;; info) - echo "$@" + echo $__cdist_echo_prefix "$@" ;; warning) - echo "Warning: $@" + echo $__cdist_echo_prefix "Warning: $@" ;; error) - echo "Error: $@" >&2 + echo $__cdist_echo_prefix "Error: $@" >&2 ;; esac } diff --git a/bin/cdist-object-code-run b/bin/cdist-object-code-run index 97cb58ac..fa63aaba 100755 --- a/bin/cdist-object-code-run +++ b/bin/cdist-object-code-run @@ -31,10 +31,8 @@ __cdist_object="$1"; shift # Code local export __cdist_out_object_dir="$__cdist_out_object_dir" -cdist-code-run "$__cdist_object" "${__cdist_name_gencode_local}" \ - || __cdist_exit_err "Local code failed for $__cdist_object" +cdist-code-run "$__cdist_object" "${__cdist_name_gencode_local}" # Code remote cdist-run-remote "$__cdist_target_host" \ - "cdist-code-run" "$__cdist_object" "${__cdist_name_gencode_remote}" \ - || __cdist_exit_err "Remote code failed for $__cdist_object" + "cdist-code-run" "$__cdist_object" "${__cdist_name_gencode_remote}" From d31833a78ebe1f23062b4729edaeb02fcb5ce62a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:16:16 +0200 Subject: [PATCH 0346/5240] begin use of __cdist_echo Signed-off-by: Nico Schottelius --- bin/cdist-code-run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index cf7e8e8d..3259fb1b 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -34,7 +34,7 @@ fi code="$(__cdist_object_code "$__cdist_object")-${__cdist_gencode_type}" -echo "Checking code-${__cdist_gencode_type} for $__cdist_object ..." +__cdist_echo info "Checking code-${__cdist_gencode_type}" if [ -e "$code" ]; then if [ -f "$code" ]; then From e28923558920bbe9bb8461c1710c00a1318c8131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Wed, 6 Apr 2011 20:16:36 +0200 Subject: [PATCH 0347/5240] Fix typo --- conf/type/__package_pkg_openbsd/man.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__package_pkg_openbsd/man.text b/conf/type/__package_pkg_openbsd/man.text index 32501ba8..c0fae241 100644 --- a/conf/type/__package_pkg_openbsd/man.text +++ b/conf/type/__package_pkg_openbsd/man.text @@ -25,7 +25,7 @@ name:: If supplied, use the name and not the object id as the package name. flavor:: - If supplied, use to avoid ambigous + If supplied, use to avoid ambiguity. EXAMPLES From 3c7a226e0f256f0e825feb1d85b326ffbaf21c3f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:17:00 +0200 Subject: [PATCH 0348/5240] stuff for 1.6.1 Signed-off-by: Nico Schottelius --- doc/changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/changelog b/doc/changelog index 9dda1806..0ca26837 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,3 +1,6 @@ +1.6.1: + * Logging restructured + 1.6.0: 2011-04-06 * New Type __package_yum * New type __debconf_set_selections From a23c926df75749b18dca1f90e199600f1cd79bfd Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:17:28 +0200 Subject: [PATCH 0349/5240] add reference to cdist-mass-deploy in cdist-deploy-to manpage Signed-off-by: Nico Schottelius --- doc/man/man1/cdist-deploy-to.text | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/man/man1/cdist-deploy-to.text b/doc/man/man1/cdist-deploy-to.text index 93417a77..f42a0509 100644 --- a/doc/man/man1/cdist-deploy-to.text +++ b/doc/man/man1/cdist-deploy-to.text @@ -32,6 +32,7 @@ SEE ALSO -------- - cdist(7) - cdist-config(1) +- cdist-mass-deploy(1) - cdist-reference(7) - cdist-stages(7) From e4390da300a87ce4a97ed18985145b2b4adaf41b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:18:31 +0200 Subject: [PATCH 0350/5240] requiring set +e in __cdist_exec_fail_on_error to catch error ourselves Signed-off-by: Nico Schottelius --- bin/cdist-config | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/cdist-config b/bin/cdist-config index 8678d205..82d94753 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -176,6 +176,7 @@ __cdist_echo() __cdist_exec_fail_on_error() { + set +e sh -e "$@" if [ "$?" -ne 0 ]; then __cdist_echo error "$1 exited non-zero, showing code:" From e5d8843eddd5b961c5d9ef9c4da06a1908e0d393 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:21:36 +0200 Subject: [PATCH 0351/5240] [DOC] add hint on FIXME tag Signed-off-by: Nico Schottelius --- doc/man/man7/cdist-hacker.text | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/man/man7/cdist-hacker.text b/doc/man/man7/cdist-hacker.text index 03a348ed..27f92a4a 100644 --- a/doc/man/man7/cdist-hacker.text +++ b/doc/man/man7/cdist-hacker.text @@ -27,6 +27,11 @@ read the scripts bin/cdist-deploy-to calls. The magnificent HACKERS_README may be of great help as well. +CODING CONVENTIONS (EVERYWHERE) +------------------------------- +If something should be better done or needs to fixed, add the word FIXME +nearby, so grepping for FIXME gives all positions that need to be fixed. + CODING CONVENTIONS (CORE) ------------------------- - All variables exported by cdist are prefixed with a double underscore (__) From a4933344311c47dea957396a1da4800c8011ad51 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:24:01 +0200 Subject: [PATCH 0352/5240] [DOC] fixup manpage for type __package_pkg_openbsd Signed-off-by: Nico Schottelius --- conf/type/__package_pkg_openbsd/man.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__package_pkg_openbsd/man.text b/conf/type/__package_pkg_openbsd/man.text index c0fae241..98aeaccf 100644 --- a/conf/type/__package_pkg_openbsd/man.text +++ b/conf/type/__package_pkg_openbsd/man.text @@ -1,5 +1,5 @@ cdist-type__package_pkg(7) -============================= +========================== Andi Brönnimann From a76a9970a6c45e948ec4edb27bdb35acfb4e625f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:24:18 +0200 Subject: [PATCH 0353/5240] more stuff for 1.6.1 Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 0ca26837..eb3f2184 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,5 +1,6 @@ 1.6.1: * Logging restructured + * New Type __package_pkg_openbsd 1.6.0: 2011-04-06 * New Type __package_yum From e3f27f1794e5b1cbae87055ce751c470a4be57d3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:31:19 +0200 Subject: [PATCH 0354/5240] allow empty $__cdist_object_self Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/cdist-config b/bin/cdist-config index 82d94753..a19fdc01 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -152,9 +152,11 @@ __cdist_echo() { __cdist_echo_type="$1"; shift + set +u if [ "$__cdist_object_self" ]; then __cdist_echo_prefix="$__cdist_object_self" fi + set -u case "$__cdist_echo_type" in debug) From 290915ee647c8451066b1abba6cdb572be7b9827 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:34:07 +0200 Subject: [PATCH 0355/5240] __cdist_echo++ Signed-off-by: Nico Schottelius --- bin/cdist-cache | 2 +- bin/cdist-deploy-to | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/cdist-cache b/bin/cdist-cache index f9480162..5ba51442 100755 --- a/bin/cdist-cache +++ b/bin/cdist-cache @@ -32,6 +32,6 @@ __cdist_ddir="$(__cdist_host_cache_dir "$__cdist_target_host")" # Create base to move into mkdir -p "$(__cdist_cache_dir)" -echo "Saving cache to $__cdist_ddir ..." +__cdist_echo info "Saving cache to $__cdist_ddir ..." rm -rf "$__cdist_ddir" mv "$__cdist_local_base_dir" "$__cdist_ddir" diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index dab5d9a5..ddb36fca 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -34,7 +34,7 @@ export $__cdist_name_var_target_user="$__cdist_remote_user" # Export variables for core, which others do not reset export __cdist_local_base_dir -echo "cdist $__cdist_version: Configuring $__cdist_target_host" +__cdist_echo info "cdist $__cdist_version: Configuring $__cdist_target_host ..." ################################################################################ # See cdist-stages(7) @@ -44,7 +44,7 @@ echo "cdist $__cdist_version: Configuring $__cdist_target_host" __cdist_init_deploy "$__cdist_target_host" # Transfer cdist executables -echo "Transferring cdist binaries to $__cdist_target_host ..." +__cdist_echo info "Transferring cdist binaries to the target host ..." cdist-dir push "$__cdist_target_host" \ "${__cdist_abs_mydir}" "${__cdist_remote_bin_dir}" cdist-explorer-run-global "$__cdist_target_host" @@ -53,4 +53,4 @@ cdist-object-all "$__cdist_target_host" cdist-object-prepare cdist-object-all "$__cdist_target_host" cdist-object-run cdist-cache "$__cdist_target_host" -echo "cdist $__cdist_version: Successfully finished run on $__cdist_target_host" +__cdist_echo info "cdist $__cdist_version: Successfully finished run" From 9d5d0b8cdd9b0572bcda496079e6e6ff0a7b2fca Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:34:46 +0200 Subject: [PATCH 0356/5240] always setup __cdist_echo_prefix Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/cdist-config b/bin/cdist-config index a19fdc01..755a3e60 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -155,6 +155,8 @@ __cdist_echo() set +u if [ "$__cdist_object_self" ]; then __cdist_echo_prefix="$__cdist_object_self" + else + __cdist_echo_prefix="" fi set -u From f08a9eaaa93f0624785382906000461de252bff1 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:35:27 +0200 Subject: [PATCH 0357/5240] +: after object_self Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index 755a3e60..ba45e927 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -154,7 +154,7 @@ __cdist_echo() set +u if [ "$__cdist_object_self" ]; then - __cdist_echo_prefix="$__cdist_object_self" + __cdist_echo_prefix="${__cdist_object_self}:" else __cdist_echo_prefix="" fi From d000de2be904d4c947a693584da9e70c62dcf073 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:36:21 +0200 Subject: [PATCH 0358/5240] code, not gencode Signed-off-by: Nico Schottelius --- bin/cdist-code-run | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index 3259fb1b..2aeefddd 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -26,20 +26,20 @@ set -ue __cdist_object="$1"; shift -__cdist_gencode_type="$1"; shift +__cdist_code_type="$1"; shift if [ ! -d "$(__cdist_object_dir "$__cdist_object")" ]; then __cdist_exit_err "Object $__cdist_object is missing." fi -code="$(__cdist_object_code "$__cdist_object")-${__cdist_gencode_type}" +code="$(__cdist_object_code "$__cdist_object")-${__cdist_code_type}" -__cdist_echo info "Checking code-${__cdist_gencode_type}" +__cdist_echo info "Checking code-${__cdist_code_type}" if [ -e "$code" ]; then if [ -f "$code" ]; then if [ -x "$code" ]; then - echo "Executing code-${__cdist_gencode_type} for $__cdist_object ..." + echo "Executing code-${__cdist_code_type} for $__cdist_object ..." __cdist_exec_fail_on_error "$code" else __cdist_exit_err "$code exists, but is not executable." From d75f2d4d29cfa2f7e84aff29dee896fbbc1e3703 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:38:31 +0200 Subject: [PATCH 0359/5240] ++__cdist_echo Signed-off-by: Nico Schottelius --- bin/cdist-code-run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index 2aeefddd..8a121a08 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -39,7 +39,7 @@ __cdist_echo info "Checking code-${__cdist_code_type}" if [ -e "$code" ]; then if [ -f "$code" ]; then if [ -x "$code" ]; then - echo "Executing code-${__cdist_code_type} for $__cdist_object ..." + __cdist_echo info "Executing code-${__cdist_code_type}" __cdist_exec_fail_on_error "$code" else __cdist_exit_err "$code exists, but is not executable." From 9610dbf10f53f247485dcb52fbb59ef6cee5c85f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:40:18 +0200 Subject: [PATCH 0360/5240] __debconf_set_selections: cat the file referenced, not the parameter! Signed-off-by: Nico Schottelius --- conf/type/__debconf_set_selections/gencode-remote | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__debconf_set_selections/gencode-remote b/conf/type/__debconf_set_selections/gencode-remote index 156fc9f3..62be6a12 100755 --- a/conf/type/__debconf_set_selections/gencode-remote +++ b/conf/type/__debconf_set_selections/gencode-remote @@ -22,5 +22,5 @@ # echo "debconf-set-selections << __file-eof" -cat "$__object/parameter/file" +cat "$(cat "$__object/parameter/file")" echo "__file-eof" From af0afcb55fdd395e7f9982065a40c5ed6b0c8c82 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:41:25 +0200 Subject: [PATCH 0361/5240] 1.6.1 contains __debconf_set_selections bugfix Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index eb3f2184..7b4052c2 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,6 +1,7 @@ 1.6.1: * Logging restructured * New Type __package_pkg_openbsd + * Bugfix: Type __debconf_set_selections used wrong contens for selection 1.6.0: 2011-04-06 * New Type __package_yum From cc67dfbfa1c32ddcbc4c45a7685d5b76c1db0cae Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:44:20 +0200 Subject: [PATCH 0362/5240] improved logging Signed-off-by: Nico Schottelius --- doc/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/changelog b/doc/changelog index 7b4052c2..edc797b9 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,5 +1,5 @@ 1.6.1: - * Logging restructured + * Improved logging: Show code responsible for abort * New Type __package_pkg_openbsd * Bugfix: Type __debconf_set_selections used wrong contens for selection From 88a6ee385b87f31e1ce550742e87827296ceb106 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:46:21 +0200 Subject: [PATCH 0363/5240] always use uname -m, until it breaks Signed-off-by: Nico Schottelius --- conf/explorer/hardware_type | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/conf/explorer/hardware_type b/conf/explorer/hardware_type index 5966b11e..25fc76a9 100755 --- a/conf/explorer/hardware_type +++ b/conf/explorer/hardware_type @@ -22,10 +22,4 @@ # # -os="$($__explorer/os)" - -case "$os" in - archlinux|*bsd) - echo $(uname -m) - ;; -esac +uname -m From d0434ea56b70e4c62886fdd3c002990499c3275b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:46:40 +0200 Subject: [PATCH 0364/5240] 1.6.1++ Signed-off-by: Nico Schottelius --- bin/cdist-explorer-run-global | 2 +- doc/changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/cdist-explorer-run-global b/bin/cdist-explorer-run-global index 7a06a982..4b901964 100755 --- a/bin/cdist-explorer-run-global +++ b/bin/cdist-explorer-run-global @@ -27,7 +27,7 @@ set -ue __cdist_target_host="$1"; shift -echo "Running global explorers ..." +__cdist_info "Running global explorers ..." # copy the explorers cdist-dir push "$__cdist_target_host" \ diff --git a/doc/changelog b/doc/changelog index edc797b9..5f47e19f 100644 --- a/doc/changelog +++ b/doc/changelog @@ -2,6 +2,7 @@ * Improved logging: Show code responsible for abort * New Type __package_pkg_openbsd * Bugfix: Type __debconf_set_selections used wrong contens for selection + * New explorer: hardware_type 1.6.0: 2011-04-06 * New Type __package_yum From cb5fc962b3d11f69c82583e110df516baad44f3b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:50:09 +0200 Subject: [PATCH 0365/5240] use __cdist prefix Signed-off-by: Nico Schottelius --- bin/cdist-object-explorer-run | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index 4d8e2321..49480bfd 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -29,7 +29,7 @@ set -eu __cdist_target_host="$1"; shift __cdist_object="$1"; shift -__object_id="$(__cdist_object_id_from_object "$__cdist_object")" +__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" __cdist_type="$(__cdist_type_from_object "$__cdist_object")" # Check if type of object has >= 1 explorer @@ -53,7 +53,7 @@ if [ "$__cdist_has_explorer" ]; then # Execute explorers cdist-run-remote "$__cdist_target_host" \ "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object")\"" \ - "$__cdist_name_var_object_id=\"$__object_id\"" \ + "$__cdist_name_var_object_id=\"$__cdist_object_id\" \ "$__cdist_name_var_self=\"$__cdist_object\"" \ cdist-remote-explorer-run \ "$__cdist_name_var_type_explorer" \ From ec513eae49ad3a13c6758ee8664fc6dd9ee84b33 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:51:17 +0200 Subject: [PATCH 0366/5240] ++__cdist_echo Signed-off-by: Nico Schottelius --- bin/cdist-manifest-run-init | 2 +- bin/cdist-mass-deploy | 2 +- bin/cdist-object-explorer-run | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/cdist-manifest-run-init b/bin/cdist-manifest-run-init index 9f10c12c..da7af6ba 100755 --- a/bin/cdist-manifest-run-init +++ b/bin/cdist-manifest-run-init @@ -30,5 +30,5 @@ __cdist_target_host="$1"; shift eval export $__cdist_name_var_manifest=\"\$__cdist_manifest_dir\" -echo "Running initial manifest for $__cdist_target_host ..." +__cdist_echo info "Running initial manifest for $__cdist_target_host ..." cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest_init" diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index 2753bcab..fae9e633 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -42,6 +42,6 @@ done # else wait after all are started if [ "$parallel" ]; then - echo "Waiting for cdist-deploy-to jobs to finish..." + __cdist_echo info "Waiting for cdist-deploy-to jobs to finish..." wait fi diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index 49480bfd..1e0fc36f 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -31,6 +31,7 @@ __cdist_object="$1"; shift __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" __cdist_type="$(__cdist_type_from_object "$__cdist_object")" +__cdist_object_self="$__cdist_type/$__cdist_object_id" # Check if type of object has >= 1 explorer __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" From 8924a9583d4390c997ece244641ef1581d4e113e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:52:14 +0200 Subject: [PATCH 0367/5240] ++__cdist_echo Signed-off-by: Nico Schottelius --- bin/cdist-config | 4 ++++ bin/cdist-object-explorer-run | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index ba45e927..4bf08511 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -175,6 +175,10 @@ __cdist_echo() error) echo $__cdist_echo_prefix "Error: $@" >&2 ;; + *) + echo "CORE BUG, who created the broken commit?" >&2 + exit 23 + ;; esac } diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index 1e0fc36f..7a5068e4 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -40,7 +40,7 @@ if [ "$__cdist_has_explorer" ]; then if ! __cdist_type_explorer_pushed "$__cdist_type"; then src_dir="$(__cdist_type_explorer_dir "$__cdist_type")" dst_dir="$(__cdist_remote_type_explorer_dir "$__cdist_type")" - echo "Transfering explorers for $__cdist_type ..." + __cdist_echo info "Transfering explorers for $__cdist_type ..." cdist-dir push "$__cdist_target_host" "$src_dir" "$dst_dir" __cdist_type_explorer_pushed_add "$__cdist_type" fi From 1f4e8fe5648e8688d465304b2114800a4bc4b4eb Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:54:34 +0200 Subject: [PATCH 0368/5240] do not create code if there is no gencode Signed-off-by: Nico Schottelius --- bin/cdist-object-gencode | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-object-gencode b/bin/cdist-object-gencode index 1ba1116b..465d6f1e 100755 --- a/bin/cdist-object-gencode +++ b/bin/cdist-object-gencode @@ -44,14 +44,14 @@ export __global="$__cdist_out_dir" cd "$__cdist_local_base_dir" -cat << eof +if [ -x "$gencode" ]; then + cat << eof # # The following code is imported from output of $gencode # eof -if [ -x "$gencode" ]; then __cdist_exec_fail_on_error "$gencode" else if [ -f "$gencode" ]; then From 2162d444b3fd211a26af3c282544c41168402681 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:55:53 +0200 Subject: [PATCH 0369/5240] better logging in __cdist_exec_fail_on_error 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 4bf08511..789f41a8 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -187,7 +187,8 @@ __cdist_exec_fail_on_error() set +e sh -e "$@" if [ "$?" -ne 0 ]; then - __cdist_echo error "$1 exited non-zero, showing code:" + __cdist_echo error "$1 exited non-zero" + __cdist_echo info "Faulty code:" cat "$1" __cdist_exit_err "Aborting due to non-zero exit code." fi From caed694dee937a5302caf5416fb79bd9b22fd3d8 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:58:34 +0200 Subject: [PATCH 0370/5240] ++__cdist_echo + FIXME Signed-off-by: Nico Schottelius --- bin/cdist-object-explorer-run | 2 +- bin/cdist-object-gencode-run | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index 7a5068e4..b782de55 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -45,7 +45,7 @@ if [ "$__cdist_has_explorer" ]; then __cdist_type_explorer_pushed_add "$__cdist_type" fi - echo "Running explorers for $__cdist_object ..." + __cdist_echo info "Running explorers for $__cdist_object ..." # Copy object parameters cdist-dir push "$__cdist_target_host" \ "$(__cdist_object_parameter_dir "$__cdist_object")" \ diff --git a/bin/cdist-object-gencode-run b/bin/cdist-object-gencode-run index 4d21fec9..a24d78bc 100755 --- a/bin/cdist-object-gencode-run +++ b/bin/cdist-object-gencode-run @@ -32,11 +32,14 @@ __cdist_object="$1"; shift __cdist_code_local="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_local}" __cdist_code_remote="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_remote}" -echo "Generating local code for $__cdist_object ..." +# FIXME: check that no file is created if there is no gencode +# probably move output code to cdist-object-gencode + +__cdist_echo info "Generating local code for $__cdist_object ..." cdist-object-gencode "$__cdist_target_host" "$__cdist_object" \ "${__cdist_name_gencode_local}" > "${__cdist_code_local}" -echo "Generating remote code for $__cdist_object ..." +__cdist_echo info "Generating remote code for $__cdist_object ..." cdist-object-gencode "$__cdist_target_host" "$__cdist_object" \ "${__cdist_name_gencode_remote}" > "${__cdist_code_remote}" From a08bd18f4ec8b51fa7aea2df9385335a992ae2cc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 20:59:57 +0200 Subject: [PATCH 0371/5240] make first real use of new __cdist_echo with __cdist_object_self setup Signed-off-by: Nico Schottelius --- bin/cdist-object-gencode-run | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/bin/cdist-object-gencode-run b/bin/cdist-object-gencode-run index a24d78bc..375b7cc1 100755 --- a/bin/cdist-object-gencode-run +++ b/bin/cdist-object-gencode-run @@ -27,20 +27,19 @@ set -eu __cdist_target_host="$1"; shift -__cdist_object="$1"; shift +__cdist_object_self="$1"; shift -__cdist_code_local="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_local}" -__cdist_code_remote="$(__cdist_object_code "$__cdist_object")-${__cdist_name_gencode_remote}" +__cdist_code_local="$(__cdist_object_code "$__cdist_object_self")-${__cdist_name_gencode_local}" +__cdist_code_remote="$(__cdist_object_code "$__cdist_object_self")-${__cdist_name_gencode_remote}" # FIXME: check that no file is created if there is no gencode # probably move output code to cdist-object-gencode - -__cdist_echo info "Generating local code for $__cdist_object ..." -cdist-object-gencode "$__cdist_target_host" "$__cdist_object" \ +__cdist_echo info "Generating local code ..." +cdist-object-gencode "$__cdist_target_host" "$__cdist_object_self" \ "${__cdist_name_gencode_local}" > "${__cdist_code_local}" -__cdist_echo info "Generating remote code for $__cdist_object ..." -cdist-object-gencode "$__cdist_target_host" "$__cdist_object" \ +__cdist_echo info "Generating remote code ..." +cdist-object-gencode "$__cdist_target_host" "$__cdist_object_self" \ "${__cdist_name_gencode_remote}" > "${__cdist_code_remote}" chmod u+x "${__cdist_code_local}" "${__cdist_code_remote}" From dfd0eefb917018d5653c2641ddf762d292505ecd Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:01:27 +0200 Subject: [PATCH 0372/5240] include version in html directory on web Signed-off-by: Nico Schottelius --- build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sh b/build.sh index e033c007..d94b7a5d 100755 --- a/build.sh +++ b/build.sh @@ -88,6 +88,7 @@ case "$1" in cp README ${WEBDIR}/${WEBPAGE} rm -rf ${WEBDIR}/${WEBBASE}/man && mkdir ${WEBDIR}/${WEBBASE}/man cp ${MAN1DSTDIR}/*.html ${MAN7DSTDIR}/*.html ${WEBDIR}/${WEBBASE}/man + git describe > ${WEBDIR}/${WEBBASE}/man/VERSION cd ${WEBDIR} && git add ${WEBBASE}/man cd ${WEBDIR} && git commit -m "cdist update" ${WEBBASE} ${WEBPAGE} cd ${WEBDIR} && make pub From df58c4e5f5a3d6e28899d9fc98bd5f1e71167268 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:03:37 +0200 Subject: [PATCH 0373/5240] echo, not info Signed-off-by: Nico Schottelius --- bin/cdist-explorer-run-global | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-explorer-run-global b/bin/cdist-explorer-run-global index 4b901964..17bc3d79 100755 --- a/bin/cdist-explorer-run-global +++ b/bin/cdist-explorer-run-global @@ -27,7 +27,7 @@ set -ue __cdist_target_host="$1"; shift -__cdist_info "Running global explorers ..." +__cdist_echo info "Running global explorers ..." # copy the explorers cdist-dir push "$__cdist_target_host" \ From 96c4024a51eaff1e16474fe636076fe90a91b0d5 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:07:39 +0200 Subject: [PATCH 0374/5240] bugfix + real use of __cdist_echo Signed-off-by: Nico Schottelius --- bin/cdist-object-explorer-run | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index b782de55..ac39755b 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -27,11 +27,10 @@ set -eu __cdist_target_host="$1"; shift -__cdist_object="$1"; shift +__cdist_object_self="$1"; shift __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" __cdist_type="$(__cdist_type_from_object "$__cdist_object")" -__cdist_object_self="$__cdist_type/$__cdist_object_id" # Check if type of object has >= 1 explorer __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" @@ -45,7 +44,7 @@ if [ "$__cdist_has_explorer" ]; then __cdist_type_explorer_pushed_add "$__cdist_type" fi - __cdist_echo info "Running explorers for $__cdist_object ..." + __cdist_echo info "Running explorers ..." # Copy object parameters cdist-dir push "$__cdist_target_host" \ "$(__cdist_object_parameter_dir "$__cdist_object")" \ @@ -53,9 +52,9 @@ if [ "$__cdist_has_explorer" ]; then # Execute explorers cdist-run-remote "$__cdist_target_host" \ - "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object")\"" \ - "$__cdist_name_var_object_id=\"$__cdist_object_id\" \ - "$__cdist_name_var_self=\"$__cdist_object\"" \ + "$__cdist_name_var_object=\"$(__cdist_remote_object_dir "$__cdist_object_self")\"" \ + "$__cdist_name_var_object_id=\"$__cdist_object_id\"" \ + "$__cdist_name_var_self=\"$__cdist_object_self\"" \ cdist-remote-explorer-run \ "$__cdist_name_var_type_explorer" \ "$(__cdist_remote_type_explorer_dir "$__cdist_type")" \ From 0580406ff2d35fa4b7ca150f8c25004466adcad2 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:08:40 +0200 Subject: [PATCH 0375/5240] there is no __cdist_object in this context Signed-off-by: Nico Schottelius --- bin/cdist-object-explorer-run | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index ac39755b..ed001e83 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -29,8 +29,8 @@ set -eu __cdist_target_host="$1"; shift __cdist_object_self="$1"; shift -__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" -__cdist_type="$(__cdist_type_from_object "$__cdist_object")" +__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")" +__cdist_type="$(__cdist_type_from_object "$__cdist_object_self")" # Check if type of object has >= 1 explorer __cdist_has_explorer="$(__cdist_type_has_explorer "$__cdist_type")" @@ -47,8 +47,8 @@ if [ "$__cdist_has_explorer" ]; then __cdist_echo info "Running explorers ..." # Copy object parameters cdist-dir push "$__cdist_target_host" \ - "$(__cdist_object_parameter_dir "$__cdist_object")" \ - "$(__cdist_remote_object_parameter_dir "$__cdist_object")" + "$(__cdist_object_parameter_dir "$__cdist_object_self")" \ + "$(__cdist_remote_object_parameter_dir "$__cdist_object_self")" # Execute explorers cdist-run-remote "$__cdist_target_host" \ @@ -58,10 +58,10 @@ if [ "$__cdist_has_explorer" ]; then cdist-remote-explorer-run \ "$__cdist_name_var_type_explorer" \ "$(__cdist_remote_type_explorer_dir "$__cdist_type")" \ - "$(__cdist_remote_object_type_explorer_dir "$__cdist_object")" + "$(__cdist_remote_object_type_explorer_dir "$__cdist_object_self")" # Copy back results cdist-dir pull "$__cdist_target_host" \ - "$(__cdist_remote_object_type_explorer_dir "$__cdist_object")" \ - "$(__cdist_object_type_explorer_dir "$__cdist_object")" + "$(__cdist_remote_object_type_explorer_dir "$__cdist_object_self")" \ + "$(__cdist_object_type_explorer_dir "$__cdist_object_self")" fi From afdecb883686619cca5b39829a91745aa253b4e0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:10:34 +0200 Subject: [PATCH 0376/5240] ++__cdist_echo Signed-off-by: Nico Schottelius --- bin/cdist-object-manifest-run | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run index ce44cbbc..56aec782 100755 --- a/bin/cdist-object-manifest-run +++ b/bin/cdist-object-manifest-run @@ -27,14 +27,15 @@ set -eu __cdist_target_host="$1"; shift -__cdist_object="$1"; shift +__cdist_object_self="$1"; shift -__cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object")" -__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" +# FIXME: rename to __cdist_object_dir (everywhere!) +__cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object_self")" +__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")" -echo "Checking manifest for $__cdist_object ..." +__cdist_echo info "Checking manifest ..." -__cdist_type="$(__cdist_type_from_object "$__cdist_object")" +__cdist_type="$(__cdist_type_from_object "$__cdist_object_self")" __cdist_manifest="$(__cdist_type_manifest "$__cdist_type")" if [ -f "$__cdist_manifest" ]; then @@ -42,7 +43,7 @@ if [ -f "$__cdist_manifest" ]; then # Make __cdist_manifest available for cdist-type-emulator export __cdist_manifest - echo "Executing manifest ${__cdist_manifest} ..." + __cdist_echo "Executing manifest ${__cdist_manifest} ..." 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")" From 4a7c6c2738a7427c01ba607a50333ab7e2b794f3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:12:00 +0200 Subject: [PATCH 0377/5240] ++__cdist_echo Signed-off-by: Nico Schottelius --- bin/cdist-object-prepare | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/bin/cdist-object-prepare b/bin/cdist-object-prepare index 8c92ff73..d21d8a63 100755 --- a/bin/cdist-object-prepare +++ b/bin/cdist-object-prepare @@ -29,19 +29,18 @@ set -eu __cdist_target_host="$1"; shift -__cdist_object="$1"; shift -__cdist_object_dir="$(__cdist_object_dir "$__cdist_object")" -[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined: $__cdist_object" +__cdist_object_self="$1"; shift +__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" +[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined" # Export to non-core for use in manifest and gencode scripts -export $__cdist_name_var_self=$__cdist_object +export $__cdist_name_var_self=$__cdist_object_self -__cdist_object_prepared="$(__cdist_object_prepared "$__cdist_object")" +__cdist_object_prepared="$(__cdist_object_prepared "$__cdist_object_self")" if [ ! -f "$__cdist_object_prepared" ]; then - echo - echo "Preparing object $__cdist_object" - cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object" - cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object" + __cdist_echo info "Preparing object" + cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object_self" + cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object_self" # Mark this object as prepared touch "$__cdist_object_prepared" From 35d4760c13c2532110417f7e318f3bd31f78847f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:15:11 +0200 Subject: [PATCH 0378/5240] ++__cdist_echo ++todo Signed-off-by: Nico Schottelius --- bin/cdist-object-push | 8 ++++---- bin/cdist-object-run | 16 +++++++--------- doc/dev/todo/TAKEME | 2 ++ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/bin/cdist-object-push b/bin/cdist-object-push index f7d46be4..9fda2cea 100755 --- a/bin/cdist-object-push +++ b/bin/cdist-object-push @@ -27,9 +27,9 @@ set -eu __cdist_target_host="$1"; shift -__cdist_object="$1"; shift +__cdist_object_self="$1"; shift -echo "Transferring object $__cdist_object to $__cdist_target_host ..." +__cdist_echo info "Transferring object $__cdist_target_host ..." cdist-dir push "$__cdist_target_host" \ - "$(__cdist_object_dir "$__cdist_object")" \ - "$(__cdist_remote_object_dir "$__cdist_object")" + "$(__cdist_object_dir "$__cdist_object_self")" \ + "$(__cdist_remote_object_dir "$__cdist_object_self")" diff --git a/bin/cdist-object-run b/bin/cdist-object-run index 667bf386..c5f738ca 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -32,17 +32,17 @@ set -eu __cdist_target_host="$1"; shift -__cdist_object="$1"; shift -__cdist_object_dir="$(__cdist_object_dir "$__cdist_object")" -[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Requested object is not defined: $__cdist_object" +__cdist_object_self="$1"; shift +__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" +[ -d "$__cdist_object_dir" ] || __cdist_exit_err "Object undefined" # Export to non-core for use in manifest and gencode scripts -export $__cdist_name_var_self=$__cdist_object +export $__cdist_name_var_self=$__cdist_object_self -__cdist_object_finished="$(__cdist_object_finished "$__cdist_object")" +__cdist_object_finished="$(__cdist_object_finished "$__cdist_object_self")" if [ ! -f "$__cdist_object_finished" ]; then # Resolve dependencies, if any - __cdist_object_require="$(__cdist_object_require "$__cdist_object")" + __cdist_object_require="$(__cdist_object_require "$__cdist_object_self")" if [ -f "$__cdist_object_require" ]; then echo # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP @@ -52,13 +52,11 @@ if [ ! -f "$__cdist_object_finished" ]; then while [ $# -gt 0 ]; do __cdist_requirement="$1"; shift - echo "Resolving dependency $__cdist_requirement for $__cdist_object ..." + echo "Resolving dependency $__cdist_requirement" cdist-object-run "$__cdist_target_host" "$__cdist_requirement" done fi - echo - echo "Running object $__cdist_object" cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" cdist-object-push "$__cdist_target_host" "$__cdist_object" cdist-object-code-run "$__cdist_target_host" "$__cdist_object" diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index 0fcced96..d456ae35 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -5,6 +5,8 @@ Feel free to pick one! CORE ---- +- Inconsistent error messages if object is not existing! + -> always use "Object undefined" - Add echo function / beautify output __cdist_echo [level] [messages...] level := syslog alike: From 838d43d74c70a301d76a47e271efd1cab2181049 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:17:11 +0200 Subject: [PATCH 0379/5240] do not fail if code is missing, but inform Signed-off-by: Nico Schottelius --- bin/cdist-code-run | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index 8a121a08..6389a060 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -29,7 +29,7 @@ __cdist_object="$1"; shift __cdist_code_type="$1"; shift if [ ! -d "$(__cdist_object_dir "$__cdist_object")" ]; then - __cdist_exit_err "Object $__cdist_object is missing." + __cdist_exit_err "Object undefined" fi code="$(__cdist_object_code "$__cdist_object")-${__cdist_code_type}" @@ -48,5 +48,5 @@ if [ -e "$code" ]; then __cdist_exit_err "$code exists, but is not a file." fi else - __cdist_exit_err "Missing code for ${__cdist_object}." + __cdist_echo info "No code-${__cdist_code_type}" fi From fb0dafba5c6131ade0f841b22163c86f5d672b6d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:18:15 +0200 Subject: [PATCH 0380/5240] make faulty code a warning 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 789f41a8..273569a6 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -169,7 +169,7 @@ __cdist_echo() info) echo $__cdist_echo_prefix "$@" ;; - warning) + warn) echo $__cdist_echo_prefix "Warning: $@" ;; error) @@ -188,7 +188,7 @@ __cdist_exec_fail_on_error() sh -e "$@" if [ "$?" -ne 0 ]; then __cdist_echo error "$1 exited non-zero" - __cdist_echo info "Faulty code:" + __cdist_echo warn "Faulty code:" cat "$1" __cdist_exit_err "Aborting due to non-zero exit code." fi From 05c8634f8b3dc20fce2a9cc878deb7abefd8d4a4 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:19:21 +0200 Subject: [PATCH 0381/5240] correctly use __cdist_echo Signed-off-by: Nico Schottelius --- bin/cdist-object-manifest-run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run index 56aec782..bf50fc2c 100755 --- a/bin/cdist-object-manifest-run +++ b/bin/cdist-object-manifest-run @@ -43,7 +43,7 @@ if [ -f "$__cdist_manifest" ]; then # Make __cdist_manifest available for cdist-type-emulator export __cdist_manifest - __cdist_echo "Executing manifest ${__cdist_manifest} ..." + __cdist_echo info "Executing manifest ${__cdist_manifest} ..." 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")" From bb96163315172a1195cb240e713b5dd8ecb4add6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:19:47 +0200 Subject: [PATCH 0382/5240] blame on the right file Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-config b/bin/cdist-config index 273569a6..ca8525ea 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -176,7 +176,7 @@ __cdist_echo() echo $__cdist_echo_prefix "Error: $@" >&2 ;; *) - echo "CORE BUG, who created the broken commit?" >&2 + echo "CORE BUG, who created the broken commit in $0?" >&2 exit 23 ;; esac From 49e8efdaf5e62d04f0c7bcdf3f97f24abad3deb0 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:20:58 +0200 Subject: [PATCH 0383/5240] object self, not object Signed-off-by: Nico Schottelius --- bin/cdist-object-run | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/cdist-object-run b/bin/cdist-object-run index c5f738ca..3eb301f3 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -57,9 +57,9 @@ if [ ! -f "$__cdist_object_finished" ]; then done fi - cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object" - cdist-object-push "$__cdist_target_host" "$__cdist_object" - cdist-object-code-run "$__cdist_target_host" "$__cdist_object" + cdist-object-gencode-run "$__cdist_target_host" "$__cdist_object_self" + cdist-object-push "$__cdist_target_host" "$__cdist_object_self" + cdist-object-code-run "$__cdist_target_host" "$__cdist_object_self" # Mark this object as done touch "$__cdist_object_finished" From c0a83f9d854096ccbdd338e8bc35f6b643cfba0b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:22:44 +0200 Subject: [PATCH 0384/5240] ++__cdist_exit_err Signed-off-by: Nico Schottelius --- bin/cdist-object-run | 2 +- bin/cdist-remote-explorer-run | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/bin/cdist-object-run b/bin/cdist-object-run index 3eb301f3..5224637e 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -52,7 +52,7 @@ if [ ! -f "$__cdist_object_finished" ]; then while [ $# -gt 0 ]; do __cdist_requirement="$1"; shift - echo "Resolving dependency $__cdist_requirement" + __cdist_echo info "Resolving dependency $__cdist_requirement" cdist-object-run "$__cdist_target_host" "$__cdist_requirement" done fi diff --git a/bin/cdist-remote-explorer-run b/bin/cdist-remote-explorer-run index cef91e0d..d95913ba 100755 --- a/bin/cdist-remote-explorer-run +++ b/bin/cdist-remote-explorer-run @@ -55,16 +55,14 @@ for explorer in "$__cdist_explorer_dir/"*; do if [ -f "$explorer" ]; then if [ ! -x "$explorer" ]; then - echo "Explorer \"$explorer\" exists, but is not executable." >&2 - exit 1 + __cdist_exit_err "Explorer \"$explorer\" exists, but is not executable." fi # Execute explorers and save results in remote destination directory "$explorer" > "${__cdist_my_out_dir}/$explorer_name" else if [ -e "$explorer" ]; then - echo "Explorer \"$explorer\" exists, but is not a file." >&2 - exit 1 + __cdist_exit_err "Explorer \"$explorer\" exists, but is not a file." fi fi done From 74c1147ec3f89df6eb9619a3f8a6dec761e387da Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:26:10 +0200 Subject: [PATCH 0385/5240] nicotodo++ Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 5df1cb61..2e5a179b 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,5 +1,8 @@ + Introduce better logging +Fix bin/cdist-type-template + Cleanup documentation: type reference -> add types + manpages add explorer reference From b86d3ba26a3a47c2a10c8997585c8f1f3f46cc15 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:38:41 +0200 Subject: [PATCH 0386/5240] remove ugly OBJECT messages Signed-off-by: Nico Schottelius --- bin/cdist-type-emulator | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-type-emulator b/bin/cdist-type-emulator index 2dcb47b3..8ff190ad 100755 --- a/bin/cdist-type-emulator +++ b/bin/cdist-type-emulator @@ -99,7 +99,7 @@ done set +u for requirement in $require; do echo $requirement >> "$(__cdist_object_require "$__cdist_object_self")" - echo Object $__cdist_object_self requires $requirement + __cdist_echo info "Recording requirement $requirement" done set -u From 315de6fe159853c17f65f4e52cb6a3d18335b311 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:41:40 +0200 Subject: [PATCH 0387/5240] log improvements Signed-off-by: Nico Schottelius --- bin/cdist-object-gencode | 10 +++++----- bin/cdist-object-run | 3 +-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/bin/cdist-object-gencode b/bin/cdist-object-gencode index 465d6f1e..2c89ce7c 100755 --- a/bin/cdist-object-gencode +++ b/bin/cdist-object-gencode @@ -27,12 +27,12 @@ set -eu __cdist_target_host="$1"; shift -__cdist_object="$1"; shift +__cdist_object_self="$1"; shift __cdist_gencode_type="$1"; shift -__cdist_object_dir="$(__cdist_object_dir "$__cdist_object")" -__cdist_type="$(__cdist_type_from_object "$__cdist_object")" -__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object")" +__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")" +__cdist_type="$(__cdist_type_from_object "$__cdist_object_self")" +__cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")" # Full path to where the executable of the type should exist, if the type has one gencode="$(__cdist_type_gencode "$__cdist_type")-${__cdist_gencode_type}" @@ -55,7 +55,7 @@ eof __cdist_exec_fail_on_error "$gencode" else if [ -f "$gencode" ]; then - echo "Warning: $gencode exists, but is not executable" >&2 + __cdist_exit_err "$gencode exists, but is not executable" fi # No gencode? also fine! Ensure we exit 0 diff --git a/bin/cdist-object-run b/bin/cdist-object-run index 5224637e..4f40e7c1 100755 --- a/bin/cdist-object-run +++ b/bin/cdist-object-run @@ -44,7 +44,6 @@ if [ ! -f "$__cdist_object_finished" ]; then # Resolve dependencies, if any __cdist_object_require="$(__cdist_object_require "$__cdist_object_self")" if [ -f "$__cdist_object_require" ]; then - echo # NEED TO CREATE ARRAY, SSH DESTROYS WHILE READ LOOP while read __cdist_requirement; do set -- "$@" "$__cdist_requirement" @@ -52,7 +51,7 @@ if [ ! -f "$__cdist_object_finished" ]; then while [ $# -gt 0 ]; do __cdist_requirement="$1"; shift - __cdist_echo info "Resolving dependency $__cdist_requirement" + __cdist_echo info "Resolving requirement $__cdist_requirement" cdist-object-run "$__cdist_target_host" "$__cdist_requirement" done fi From e7ad5987e425873c30752fe059f90d1dcad7cab3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:43:32 +0200 Subject: [PATCH 0388/5240] + self variable Signed-off-by: Nico Schottelius --- bin/cdist-code-run | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/cdist-code-run b/bin/cdist-code-run index 6389a060..17b7c4a1 100755 --- a/bin/cdist-code-run +++ b/bin/cdist-code-run @@ -25,14 +25,14 @@ [ $# -eq 2 ] || __cdist_usage " " set -ue -__cdist_object="$1"; shift +__cdist_object_self="$1"; shift __cdist_code_type="$1"; shift -if [ ! -d "$(__cdist_object_dir "$__cdist_object")" ]; then +if [ ! -d "$(__cdist_object_dir "$__cdist_object_self")" ]; then __cdist_exit_err "Object undefined" fi -code="$(__cdist_object_code "$__cdist_object")-${__cdist_code_type}" +code="$(__cdist_object_code "$__cdist_object_self")-${__cdist_code_type}" __cdist_echo info "Checking code-${__cdist_code_type}" From 31164be1d0c8c1b289c3525f8e36cd9a578e0b93 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:44:41 +0200 Subject: [PATCH 0389/5240] remove full path to manifest in logging (will be presented on error anyway) Signed-off-by: Nico Schottelius --- bin/cdist-object-manifest-run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run index bf50fc2c..3b1b5254 100755 --- a/bin/cdist-object-manifest-run +++ b/bin/cdist-object-manifest-run @@ -43,7 +43,7 @@ if [ -f "$__cdist_manifest" ]; then # Make __cdist_manifest available for cdist-type-emulator export __cdist_manifest - __cdist_echo info "Executing manifest ${__cdist_manifest} ..." + __cdist_echo info "Executing manifest ..." 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")" From bc1c7f104eb30193df526e5761e3ee048ffb35e6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:50:49 +0200 Subject: [PATCH 0390/5240] core prefix Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- bin/cdist-object-push | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index ca8525ea..a36af881 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -156,7 +156,7 @@ __cdist_echo() if [ "$__cdist_object_self" ]; then __cdist_echo_prefix="${__cdist_object_self}:" else - __cdist_echo_prefix="" + __cdist_echo_prefix="core: " fi set -u diff --git a/bin/cdist-object-push b/bin/cdist-object-push index 9fda2cea..62b00cb2 100755 --- a/bin/cdist-object-push +++ b/bin/cdist-object-push @@ -29,7 +29,7 @@ set -eu __cdist_target_host="$1"; shift __cdist_object_self="$1"; shift -__cdist_echo info "Transferring object $__cdist_target_host ..." +__cdist_echo info "Transferring object" cdist-dir push "$__cdist_target_host" \ "$(__cdist_object_dir "$__cdist_object_self")" \ "$(__cdist_remote_object_dir "$__cdist_object_self")" From 0a3a434269bbc00bcdf21556dc9e92c9a520951f Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 21:51:43 +0200 Subject: [PATCH 0391/5240] remove ... dots ... make ... me ...feel ... weired Signed-off-by: Nico Schottelius --- bin/cdist-cache | 2 +- bin/cdist-config | 2 +- bin/cdist-deploy-to | 4 ++-- bin/cdist-explorer-run-global | 2 +- bin/cdist-manifest-run-init | 2 +- bin/cdist-mass-deploy | 4 ++-- bin/cdist-object-explorer-run | 4 ++-- bin/cdist-object-gencode-run | 4 ++-- bin/cdist-object-manifest-run | 4 ++-- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/bin/cdist-cache b/bin/cdist-cache index 5ba51442..bfb1a5b3 100755 --- a/bin/cdist-cache +++ b/bin/cdist-cache @@ -32,6 +32,6 @@ __cdist_ddir="$(__cdist_host_cache_dir "$__cdist_target_host")" # Create base to move into mkdir -p "$(__cdist_cache_dir)" -__cdist_echo info "Saving cache to $__cdist_ddir ..." +__cdist_echo info "Saving cache to $__cdist_ddir " rm -rf "$__cdist_ddir" mv "$__cdist_local_base_dir" "$__cdist_ddir" diff --git a/bin/cdist-config b/bin/cdist-config index a36af881..4346c0cb 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -207,7 +207,7 @@ __cdist_usage() __cdist_init_deploy() { - echo "Creating clean directory structure ..." + __cdist_echo info "Creating clean directory structure " # Ensure there is no old stuff, neither local nor remote rm -rf "$__cdist_local_base_dir" diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to index ddb36fca..138248d6 100755 --- a/bin/cdist-deploy-to +++ b/bin/cdist-deploy-to @@ -34,7 +34,7 @@ export $__cdist_name_var_target_user="$__cdist_remote_user" # Export variables for core, which others do not reset export __cdist_local_base_dir -__cdist_echo info "cdist $__cdist_version: Configuring $__cdist_target_host ..." +__cdist_echo info "cdist $__cdist_version: Configuring $__cdist_target_host " ################################################################################ # See cdist-stages(7) @@ -44,7 +44,7 @@ __cdist_echo info "cdist $__cdist_version: Configuring $__cdist_target_host ..." __cdist_init_deploy "$__cdist_target_host" # Transfer cdist executables -__cdist_echo info "Transferring cdist binaries to the target host ..." +__cdist_echo info "Transferring cdist binaries to the target host " cdist-dir push "$__cdist_target_host" \ "${__cdist_abs_mydir}" "${__cdist_remote_bin_dir}" cdist-explorer-run-global "$__cdist_target_host" diff --git a/bin/cdist-explorer-run-global b/bin/cdist-explorer-run-global index 17bc3d79..b0c024f2 100755 --- a/bin/cdist-explorer-run-global +++ b/bin/cdist-explorer-run-global @@ -27,7 +27,7 @@ set -ue __cdist_target_host="$1"; shift -__cdist_echo info "Running global explorers ..." +__cdist_echo info "Running global explorers " # copy the explorers cdist-dir push "$__cdist_target_host" \ diff --git a/bin/cdist-manifest-run-init b/bin/cdist-manifest-run-init index da7af6ba..28acc623 100755 --- a/bin/cdist-manifest-run-init +++ b/bin/cdist-manifest-run-init @@ -30,5 +30,5 @@ __cdist_target_host="$1"; shift eval export $__cdist_name_var_manifest=\"\$__cdist_manifest_dir\" -__cdist_echo info "Running initial manifest for $__cdist_target_host ..." +__cdist_echo info "Running initial manifest for $__cdist_target_host " cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest_init" diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index fae9e633..8a555411 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -22,7 +22,7 @@ # . cdist-config -[ $# -ge 1 ] || __cdist_usage "[-p] [target host ...]" +[ $# -ge 1 ] || __cdist_usage "[-p] [target host ]" set -eu parallel="" @@ -42,6 +42,6 @@ done # else wait after all are started if [ "$parallel" ]; then - __cdist_echo info "Waiting for cdist-deploy-to jobs to finish..." + __cdist_echo info "Waiting for cdist-deploy-to jobs to finish" wait fi diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index ed001e83..79cd2865 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -39,12 +39,12 @@ if [ "$__cdist_has_explorer" ]; then if ! __cdist_type_explorer_pushed "$__cdist_type"; then src_dir="$(__cdist_type_explorer_dir "$__cdist_type")" dst_dir="$(__cdist_remote_type_explorer_dir "$__cdist_type")" - __cdist_echo info "Transfering explorers for $__cdist_type ..." + __cdist_echo info "Transfering explorers for $__cdist_type " cdist-dir push "$__cdist_target_host" "$src_dir" "$dst_dir" __cdist_type_explorer_pushed_add "$__cdist_type" fi - __cdist_echo info "Running explorers ..." + __cdist_echo info "Running explorers " # Copy object parameters cdist-dir push "$__cdist_target_host" \ "$(__cdist_object_parameter_dir "$__cdist_object_self")" \ diff --git a/bin/cdist-object-gencode-run b/bin/cdist-object-gencode-run index 375b7cc1..bada6aee 100755 --- a/bin/cdist-object-gencode-run +++ b/bin/cdist-object-gencode-run @@ -34,11 +34,11 @@ __cdist_code_remote="$(__cdist_object_code "$__cdist_object_self")-${__cdist_nam # FIXME: check that no file is created if there is no gencode # probably move output code to cdist-object-gencode -__cdist_echo info "Generating local code ..." +__cdist_echo info "Generating local code " cdist-object-gencode "$__cdist_target_host" "$__cdist_object_self" \ "${__cdist_name_gencode_local}" > "${__cdist_code_local}" -__cdist_echo info "Generating remote code ..." +__cdist_echo info "Generating remote code " cdist-object-gencode "$__cdist_target_host" "$__cdist_object_self" \ "${__cdist_name_gencode_remote}" > "${__cdist_code_remote}" diff --git a/bin/cdist-object-manifest-run b/bin/cdist-object-manifest-run index 3b1b5254..34d4f867 100755 --- a/bin/cdist-object-manifest-run +++ b/bin/cdist-object-manifest-run @@ -33,7 +33,7 @@ __cdist_object_self="$1"; shift __cdist_cur_object_dir="$(__cdist_object_dir "$__cdist_object_self")" __cdist_object_id="$(__cdist_object_id_from_object "$__cdist_object_self")" -__cdist_echo info "Checking manifest ..." +__cdist_echo info "Checking manifest " __cdist_type="$(__cdist_type_from_object "$__cdist_object_self")" __cdist_manifest="$(__cdist_type_manifest "$__cdist_type")" @@ -43,7 +43,7 @@ if [ -f "$__cdist_manifest" ]; then # Make __cdist_manifest available for cdist-type-emulator export __cdist_manifest - __cdist_echo info "Executing manifest ..." + __cdist_echo info "Executing manifest " 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")" From b0391ac0c9b8041c59d7aa8b2349bca1e0fbbb7d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 22:09:04 +0200 Subject: [PATCH 0392/5240] BUGFIX: do not fail, if cache/ is missing Signed-off-by: Nico Schottelius --- bin/cdist-cache | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bin/cdist-cache b/bin/cdist-cache index bfb1a5b3..ee27ffb4 100755 --- a/bin/cdist-cache +++ b/bin/cdist-cache @@ -27,10 +27,12 @@ set -u __cdist_target_host="$1"; shift -__cdist_ddir="$(__cdist_host_cache_dir "$__cdist_target_host")" # Create base to move into -mkdir -p "$(__cdist_cache_dir)" +mkdir -p "${__cdist_local_base_cache_dir}" + +# Now determine absolute path +__cdist_ddir="$(__cdist_host_cache_dir "$__cdist_target_host")" __cdist_echo info "Saving cache to $__cdist_ddir " rm -rf "$__cdist_ddir" From d39457b0a740bff5f2059b9344887d62939a1c01 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 22:13:30 +0200 Subject: [PATCH 0393/5240] document how to report bugs Signed-off-by: Nico Schottelius --- doc/man/man7/cdist-hacker.text | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/man/man7/cdist-hacker.text b/doc/man/man7/cdist-hacker.text index 27f92a4a..f9f08e31 100644 --- a/doc/man/man7/cdist-hacker.text +++ b/doc/man/man7/cdist-hacker.text @@ -19,6 +19,13 @@ twice before merging or implementing a feature: Less features with good usability are far better than the opposite. +REPORTING BUGS +-------------- +If you believe you've found a bug and verified that it is +in the latest version, drop a mail to the cdist mailing list, +subject prefixed with "[BUG] ". + + UNDERSTANDING CDIST INTERNALS ----------------------------- IF you are interested in how cdist internally works, you can open @@ -32,6 +39,7 @@ CODING CONVENTIONS (EVERYWHERE) If something should be better done or needs to fixed, add the word FIXME nearby, so grepping for FIXME gives all positions that need to be fixed. + CODING CONVENTIONS (CORE) ------------------------- - All variables exported by cdist are prefixed with a double underscore (__) From ad9cac5fb604b7cd910e66ea23a90a7b8412b209 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 22:22:52 +0200 Subject: [PATCH 0394/5240] 1.6.1 has another bugfix Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 5f47e19f..4a9cb2a8 100644 --- a/doc/changelog +++ b/doc/changelog @@ -2,6 +2,7 @@ * Improved logging: Show code responsible for abort * New Type __package_pkg_openbsd * Bugfix: Type __debconf_set_selections used wrong contens for selection + * Bugfix: Don't fail, if cache directory is not existing * New explorer: hardware_type 1.6.0: 2011-04-06 From 3c37ac0b0f9746e3524c009027efd8377a1db609 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 22:24:11 +0200 Subject: [PATCH 0395/5240] do not fail if nothing todo (__user and __group) Signed-off-by: Nico Schottelius --- conf/type/__group/gencode-remote | 6 +++++- conf/type/__user/gencode-remote | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/conf/type/__group/gencode-remote b/conf/type/__group/gencode-remote index 4cb05762..5d43a054 100755 --- a/conf/type/__group/gencode-remote +++ b/conf/type/__group/gencode-remote @@ -43,7 +43,11 @@ if grep -q "^${name}:" "$__object/explorer/group"; then fi done - [ $# -gt 0 ] && echo groupmod $@ $name + if [ $# -gt 0 ]; then + echo groupmod "$@" "$name" + else + true + fi else for property in $(ls .); do new_value="$(cat "$property")" diff --git a/conf/type/__user/gencode-remote b/conf/type/__user/gencode-remote index 7670b943..31c93655 100755 --- a/conf/type/__user/gencode-remote +++ b/conf/type/__user/gencode-remote @@ -59,7 +59,11 @@ if grep -q "^${name}:" "$__object/explorer/passwd"; then fi done - [ $# -gt 0 ] && echo usermod "$@" "$name" + if [ $# -gt 0 ]; then + echo usermod "$@" "$name" + else + true + fi else for property in $(ls .); do new_value="$(cat "$property")" From 152efae913292e80a76c6af8b9a82990000291fb Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 22:24:57 +0200 Subject: [PATCH 0396/5240] document bugfix of __user and __group Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 4a9cb2a8..1a38a2bd 100644 --- a/doc/changelog +++ b/doc/changelog @@ -3,6 +3,7 @@ * New Type __package_pkg_openbsd * Bugfix: Type __debconf_set_selections used wrong contens for selection * Bugfix: Don't fail, if cache directory is not existing + * Bugfix: __user and __group exited non-zero if no change was necessary * New explorer: hardware_type 1.6.0: 2011-04-06 From 6648535c6d61755fe95c259da29862a63d97c9ee Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 22:39:00 +0200 Subject: [PATCH 0397/5240] --nicotodo Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index 2e5a179b..db1ba10a 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,6 +1,3 @@ - -Introduce better logging - Fix bin/cdist-type-template Cleanup documentation: From b29538a78486b9aac975427c48f110255e3ed1b6 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 6 Apr 2011 23:26:28 +0200 Subject: [PATCH 0398/5240] new types: __autofs_map, __autofs_master Signed-off-by: Steven Armstrong --- conf/type/__autofs_map/man.text | 60 +++++++++++++++++++ conf/type/__autofs_map/manifest | 42 +++++++++++++ conf/type/__autofs_map/parameter/optional | 3 + conf/type/__autofs_map/parameter/required | 1 + .../__autofs_master/files/auto.master.header | 3 + conf/type/__autofs_master/gencode-local | 26 ++++++++ conf/type/__autofs_master/man.text | 47 +++++++++++++++ conf/type/__autofs_master/manifest | 31 ++++++++++ conf/type/__autofs_master/parameter/optional | 1 + conf/type/__autofs_master/singleton | 0 10 files changed, 214 insertions(+) create mode 100644 conf/type/__autofs_map/man.text create mode 100755 conf/type/__autofs_map/manifest create mode 100644 conf/type/__autofs_map/parameter/optional create mode 100644 conf/type/__autofs_map/parameter/required create mode 100644 conf/type/__autofs_master/files/auto.master.header create mode 100755 conf/type/__autofs_master/gencode-local create mode 100644 conf/type/__autofs_master/man.text create mode 100755 conf/type/__autofs_master/manifest create mode 100644 conf/type/__autofs_master/parameter/optional create mode 100644 conf/type/__autofs_master/singleton diff --git a/conf/type/__autofs_map/man.text b/conf/type/__autofs_map/man.text new file mode 100644 index 00000000..fbbd15d6 --- /dev/null +++ b/conf/type/__autofs_map/man.text @@ -0,0 +1,60 @@ +cdist-type__autofs_map(7) +======================== +Steven Armstrong + + +NAME +---- +cdist-type__autofs_map - Manage autofs maps + + +DESCRIPTION +----------- +This cdist type allows you to define maps for autofs. + + +OBJECT ID +--------- +The object_id Is used as the mount-point as described in auto.master(5). + + +REQUIRED PARAMETERS +------------------- +map:: + Name of the map to use. See auto.master(5). + + +OPTIONAL PARAMETERS +------------------- +type:: + Type of map used for this mount point. Defaults to 'file'. + See map-type in auto.master(5) for possible values. +options:: + See auto.master(5). +comment:: + A comment describing this map. Is added to the generated entry in + auto.master. + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Add auto mounter at /net +__autofs_map /net --map /etc/auto.net --type program + +# Add auto mounter at /pub +__autofs_map /pub --map /etc/auto.pub \ + --type file --options nosuid,rw,bg,hard,intr --ghost +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Copyright \(C) 2011 Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__autofs_map/manifest b/conf/type/__autofs_map/manifest new file mode 100755 index 00000000..74672e46 --- /dev/null +++ b/conf/type/__autofs_map/manifest @@ -0,0 +1,42 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +name="/$__object_id" +map="$(cat "$__object/parameter/map")" + +if [ -f "$__object/parameter/type" ]; then + type="$(cat "$__object/parameter/type")" +else + type="file" + echo "$type" > "$__object/parameter/type" +fi + +# Generate entry for use in auto.master +entry="${name} ${type}:${map}" +if [ -f "$__object/parameter/options" ]; then + entry="$entry $(cat "$__object/parameter/options")" +fi +if [ -f "$__object/parameter/comment" ]; then + echo "# $(cat "$__object/parameter/comment")" > "$__object/parameter/entry" +fi +echo "$entry" >> "$__object/parameter/entry" + +require="$__self" __autofs_master + diff --git a/conf/type/__autofs_map/parameter/optional b/conf/type/__autofs_map/parameter/optional new file mode 100644 index 00000000..b1aa3a7e --- /dev/null +++ b/conf/type/__autofs_map/parameter/optional @@ -0,0 +1,3 @@ +type +options +comment diff --git a/conf/type/__autofs_map/parameter/required b/conf/type/__autofs_map/parameter/required new file mode 100644 index 00000000..b4a284c5 --- /dev/null +++ b/conf/type/__autofs_map/parameter/required @@ -0,0 +1 @@ +map diff --git a/conf/type/__autofs_master/files/auto.master.header b/conf/type/__autofs_master/files/auto.master.header new file mode 100644 index 00000000..53590257 --- /dev/null +++ b/conf/type/__autofs_master/files/auto.master.header @@ -0,0 +1,3 @@ +# Generated from cdist __autofs_master +# Do not change this file. Changes will be overwritten. + diff --git a/conf/type/__autofs_master/gencode-local b/conf/type/__autofs_master/gencode-local new file mode 100755 index 00000000..701f97a8 --- /dev/null +++ b/conf/type/__autofs_master/gencode-local @@ -0,0 +1,26 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Generate auto.master config based on all defined __autofs_map ojbects. +# + +auto_master="$__object/files/auto.master" +cat "$(cat "$__object/parameter/header")" > "$auto_master" +find "$__global/object/__autofs_map" -path "*.cdist/parameter/entry" | xargs cat >> "$auto_master" diff --git a/conf/type/__autofs_master/man.text b/conf/type/__autofs_master/man.text new file mode 100644 index 00000000..d889b1f6 --- /dev/null +++ b/conf/type/__autofs_master/man.text @@ -0,0 +1,47 @@ +cdist-type__autofs_master(7) +======================== +Steven Armstrong + + +NAME +---- +cdist-type__autofs_master - Generate the auto.master file + + +DESCRIPTION +----------- +This cdist type generates a auto.master configuration from given __autofs_map +definitions. See cdist-type__auto_map(7). + + +REQUIRED PARAMETERS +------------------- +None + +OPTIONAL PARAMETERS +------------------- +header:: + Absolute path to a file used as the header for the generated auto.master + file. + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# auto.master with default header +__autofs_master + +# auto.master with custom header +__autofs_master --header /path/to/header +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Copyright \(C) 2011 Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__autofs_master/manifest b/conf/type/__autofs_master/manifest new file mode 100755 index 00000000..e37a5d34 --- /dev/null +++ b/conf/type/__autofs_master/manifest @@ -0,0 +1,31 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + + +if [ ! -f "$__object/parameter/header" ]; then + echo "$__type/files/auto.master.header" > "$__object/parameter/header" +fi + +[ -d "$__object/files" ] || mkdir "$__object/files" +require="$__self" __file /etc/auto.master --source "$__object/files/auto.master" \ + --mode 644 \ + --owner root \ + --group root + diff --git a/conf/type/__autofs_master/parameter/optional b/conf/type/__autofs_master/parameter/optional new file mode 100644 index 00000000..8e83f898 --- /dev/null +++ b/conf/type/__autofs_master/parameter/optional @@ -0,0 +1 @@ +header diff --git a/conf/type/__autofs_master/singleton b/conf/type/__autofs_master/singleton new file mode 100644 index 00000000..e69de29b From 6784d4ca167902c978346f3f999058a88ef56990 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 6 Apr 2011 23:29:52 +0200 Subject: [PATCH 0399/5240] docfix: add missing = Signed-off-by: Steven Armstrong --- conf/type/__autofs_map/man.text | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/type/__autofs_map/man.text b/conf/type/__autofs_map/man.text index fbbd15d6..1584c16b 100644 --- a/conf/type/__autofs_map/man.text +++ b/conf/type/__autofs_map/man.text @@ -1,5 +1,5 @@ cdist-type__autofs_map(7) -======================== +========================= Steven Armstrong @@ -15,7 +15,7 @@ This cdist type allows you to define maps for autofs. OBJECT ID --------- -The object_id Is used as the mount-point as described in auto.master(5). +The object_id is used as the mount-point as described in auto.master(5). REQUIRED PARAMETERS From df6c2909cb1932364f3b19a2811576d7ba5fac9e Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 6 Apr 2011 23:31:38 +0200 Subject: [PATCH 0400/5240] bow infront of the whitespace nazi Signed-off-by: Steven Armstrong --- conf/type/__autofs_map/man.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__autofs_map/man.text b/conf/type/__autofs_map/man.text index 1584c16b..941e22da 100644 --- a/conf/type/__autofs_map/man.text +++ b/conf/type/__autofs_map/man.text @@ -41,7 +41,7 @@ EXAMPLES -------------------------------------------------------------------------------- # Add auto mounter at /net -__autofs_map /net --map /etc/auto.net --type program +__autofs_map /net --map /etc/auto.net --type program # Add auto mounter at /pub __autofs_map /pub --map /etc/auto.pub \ From 88a667b17fcddaaaba00d232636e51e340f4ef6a Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 6 Apr 2011 23:42:22 +0200 Subject: [PATCH 0401/5240] docfix: add missing = Signed-off-by: Steven Armstrong --- conf/type/__autofs_master/man.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__autofs_master/man.text b/conf/type/__autofs_master/man.text index d889b1f6..641c8393 100644 --- a/conf/type/__autofs_master/man.text +++ b/conf/type/__autofs_master/man.text @@ -1,5 +1,5 @@ cdist-type__autofs_master(7) -======================== +============================ Steven Armstrong From 9c5e7f516164ef9b9caa4030a1ca598911ac872a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 23:43:22 +0200 Subject: [PATCH 0402/5240] much more fun with 1.6.1 Signed-off-by: Nico Schottelius --- doc/changelog | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/changelog b/doc/changelog index 1a38a2bd..b88705f8 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,10 +1,13 @@ 1.6.1: * Improved logging: Show code responsible for abort - * New Type __package_pkg_openbsd + * Improved logging: Consistently prefix with current object or core * Bugfix: Type __debconf_set_selections used wrong contens for selection * Bugfix: Don't fail, if cache directory is not existing * Bugfix: __user and __group exited non-zero if no change was necessary - * New explorer: hardware_type + * New Explorer: hardware_type + * New Type __package_pkg_openbsd (Andi Brönnimann) + * New Type: __autofs_map (Steven Armstrong) + * New Type: __autofs_master (Steven Armstrong) 1.6.0: 2011-04-06 * New Type __package_yum From ff184006cb540b49feb12400a784dd828b280c96 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 6 Apr 2011 23:46:15 +0200 Subject: [PATCH 0403/5240] colon gangster attack Signed-off-by: Nico Schottelius --- doc/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/changelog b/doc/changelog index b88705f8..0560dee0 100644 --- a/doc/changelog +++ b/doc/changelog @@ -5,7 +5,7 @@ * Bugfix: Don't fail, if cache directory is not existing * Bugfix: __user and __group exited non-zero if no change was necessary * New Explorer: hardware_type - * New Type __package_pkg_openbsd (Andi Brönnimann) + * New Type: __package_pkg_openbsd (Andi Brönnimann) * New Type: __autofs_map (Steven Armstrong) * New Type: __autofs_master (Steven Armstrong) From c3341df08d5406bcbd1f49870765d3bb23d49577 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 7 Apr 2011 09:56:59 +0200 Subject: [PATCH 0404/5240] Upgrade to 1.6.1 Signed-off-by: Nico Schottelius --- bin/cdist-config | 2 +- doc/changelog | 82 ++++++++++++++++++++++++------------------------ 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 4346c0cb..5d19f854 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -19,7 +19,7 @@ # # -__cdist_version="1.6.0" +__cdist_version="1.6.1" # Fail if something bogus is going on set -u diff --git a/doc/changelog b/doc/changelog index 0560dee0..2fef50ca 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,30 +1,30 @@ -1.6.1: +1.6.1: 2011-04-07 * Improved logging: Show code responsible for abort * Improved logging: Consistently prefix with current object or core * Bugfix: Type __debconf_set_selections used wrong contens for selection * Bugfix: Don't fail, if cache directory is not existing * Bugfix: __user and __group exited non-zero if no change was necessary - * New Explorer: hardware_type - * New Type: __package_pkg_openbsd (Andi Brönnimann) - * New Type: __autofs_map (Steven Armstrong) - * New Type: __autofs_master (Steven Armstrong) + * New Explorer hardware_type + * New Type __package_pkg_openbsd (Andi Brönnimann) + * New Type __autofs_map (Steven Armstrong) + * New Type __autofs_master (Steven Armstrong) 1.6.0: 2011-04-06 - * New Type __package_yum - * New type __debconf_set_selections - * New explorer os_version - * Fix Type __group in case of __group NAME syntax - * Fix __package* types: consistently name --state removed instead of + * New Type: __package_yum + * New type: __debconf_set_selections + * New explorer: os_version + * Bugfix: Type __group failed in case of __group NAME syntax + * Bugfix: __package* types: consistently name --state removed instead of uninstalled or deinstalled - * Type __package gained Fedora support - * Removed --preseed support from __package_apt - * explorer/os: gained Fedora support + * Type __package: Added Fedora support + * Type __package_apt: Removed --preseed support + * Explorer os gained Fedora support * Simplified types __user and __group * New helper binary: cdist-mass-deploy 1.5.0: 2011-04-01 * Add basic cache functionality - * New type __process + * New type: __process * Restructured execution: (Steven Armstrong) Orientate processing on objects, resolve dependencies and ensure correct execution order. @@ -32,8 +32,8 @@ * Documentation: Remove legacy man pages (Steven Armstrong) 1.4.1: 2011-03-25 - * New type __key_value (Steven Armstrong) - * New type __apt_ppa (Steven Armstrong) + * New type: __key_value (Steven Armstrong) + * New type: __apt_ppa (Steven Armstrong) * Documentation: Manpage generation cleanup * Documentation: Manpage fix for __apt_ppa @@ -48,9 +48,9 @@ * Include HTML documentation of manpages and publish them 1.3.1: 2011-03-21 - * Document cdist-type-build-emulation - * Document cdist-type-emulator - * Document cdist-remote-explorer-run + * Document: cdist-type-build-emulation + * Document: cdist-type-emulator + * Document: cdist-remote-explorer-run * Fix dependencies in cdist-code-run * Fix dependencies in cdist-manifest-run-all * Add --source to __issue and fix os check @@ -62,33 +62,33 @@ 1.2.0: 2011-03-19 * Added dependencies (see cdist-type(7)) - * New type __removeline (Daniel Roth) - * New type __group (Steven Armstrong) - * New type __user (Steven Armstrong) - * Document cdist-run-remote - * Document cdist-code-run-all - * Document cdist-object-gencode - * Document cdist-explorer-run-global - * Document cdist-manifest-run-init - * Document cdist-manifest-run-all - * Document cdist-object-gencode-all - * Document cdist-manifest-run + * New type: __removeline (Daniel Roth) + * New type: __group (Steven Armstrong) + * New type: __user (Steven Armstrong) + * Documentation: cdist-run-remote + * Documentation: cdist-code-run-all + * Documentation: cdist-object-gencode + * Documentation: cdist-explorer-run-global + * Documentation: cdist-manifest-run-init + * Documentation: cdist-manifest-run-all + * Documentation: cdist-object-gencode-all + * Documentation: cdist-manifest-run 1.1.0: 2011-03-16 * Replace type __file with __file, __directory, __link - * Document cdist-env - * Document cdist-config - * Document cdist-dir - * Document cdist-quickstart + * Documentation: cdist-env + * Documentation: cdist-config + * Documentation: cdist-dir + * Documentation: cdist-quickstart 1.0.4: 2011-03-15 - * New type __motd - * New type __addifnosuchline (Daniel Roth) - * Document type __issue - * New type __user - * Document type __package - * Document type __package_pacman - * Document type __package_apt + * New type: __motd + * New type: __addifnosuchline (Daniel Roth) + * New type: __user + * Document type: __issue + * Document type: __package + * Document type: __package_pacman + * Document type: __package_apt * New parameter for __file: --owner and --group 1.0.3: 2011-03-11 From 965e80b0ef28d8dbb9ad6e5f0d464c167db7b2fe Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 7 Apr 2011 10:28:08 +0200 Subject: [PATCH 0405/5240] more stuff running in the systems group Signed-off-by: Nico Schottelius --- README | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README b/README index 54f792a7..75b36581 100644 --- a/README +++ b/README @@ -211,13 +211,14 @@ Yes, I'm actually eating my own dogfood and currently managing * [moinmoin](http://moinmo.in/) (wiki) * [apache](http://httpd.apache.org/) (webserver) * [kerberos (mit)](http://web.mit.edu/kerberos/) (authentication) + * [nss-pam-ldapd](http://arthurdejong.org/nss-pam-ldapd/) * [ircd-hybrid](http://www.ircd-hybrid.org/) (chat) * [stunnel](http://stunnel.mirt.net/) (SSL tunnel) * [mercurial-server](http://www.lshift.net/mercurial-server.html) (version control) * [xfce](http://www.xfce.org/) (lightweight desktop environment) * [slim](http://slim.berlios.de/) (graphical login manager for X11) -with cdist on a total of **20** production machines of the +with cdist on a total of **50** production machines of the [Systems Group](http://www.systems.ethz.ch) at the [ETH Zurich](http://www.ethz.ch) as well at home. From bc77a637a986f41653e72224580b1920bf8a4f02 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 7 Apr 2011 11:57:50 +0200 Subject: [PATCH 0406/5240] more cdist on more nodes = more fun Signed-off-by: Nico Schottelius --- README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README b/README index 75b36581..350cd3e1 100644 --- a/README +++ b/README @@ -211,14 +211,14 @@ Yes, I'm actually eating my own dogfood and currently managing * [moinmoin](http://moinmo.in/) (wiki) * [apache](http://httpd.apache.org/) (webserver) * [kerberos (mit)](http://web.mit.edu/kerberos/) (authentication) - * [nss-pam-ldapd](http://arthurdejong.org/nss-pam-ldapd/) + * [nss-pam-ldapd](http://arthurdejong.org/nss-pam-ldapd/) (authentication) * [ircd-hybrid](http://www.ircd-hybrid.org/) (chat) * [stunnel](http://stunnel.mirt.net/) (SSL tunnel) * [mercurial-server](http://www.lshift.net/mercurial-server.html) (version control) * [xfce](http://www.xfce.org/) (lightweight desktop environment) * [slim](http://slim.berlios.de/) (graphical login manager for X11) -with cdist on a total of **50** production machines of the +with cdist on more than **60** production machines of the [Systems Group](http://www.systems.ethz.ch) at the [ETH Zurich](http://www.ethz.ch) as well at home. From 4895a92d95c4d2d842100dadace9956634f81fc7 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 7 Apr 2011 12:01:55 +0200 Subject: [PATCH 0407/5240] ++doc todo (funny item) Signed-off-by: Nico Schottelius --- doc/dev/todo/TAKEME | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME index d456ae35..871045f2 100644 --- a/doc/dev/todo/TAKEME +++ b/doc/dev/todo/TAKEME @@ -53,4 +53,5 @@ DOCUMENTATION - asciidoc interprets __, which we use for variables names -> seek through docs and replace with \_\_! - reference explorers in cdist-reference! - +- compare running times: + one, 5, 10, 50, 100, 1000 hosts => how does cdist scale? From 59ec60ba0bbe6134609c9bf5571ba7be022475af Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Thu, 7 Apr 2011 12:07:06 +0200 Subject: [PATCH 0408/5240] ++todo Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index db1ba10a..a02d7013 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -3,3 +3,6 @@ Fix bin/cdist-type-template Cleanup documentation: type reference -> add types + manpages add explorer reference + +Catch broken instances in cdist-mass-deploy -p and report +broken deployements at the end! From 4873b046ba45527b2fe6685ff6fbfec5cee6b3fd Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 8 Apr 2011 10:51:27 +0200 Subject: [PATCH 0409/5240] allow user to change __cdist_tmp_base_dir to avoid using /tmp 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 5d19f854..44a95f01 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -98,7 +98,8 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname" ################################################################################ # Tempfiles # -__cdist_tmp_dir=$(mktemp -d "/tmp/cdist.XXXXXXXXXXXX") +: ${__cdist_tmp_base_dir=/tmp} +__cdist_tmp_dir=$(mktemp -d "$__cdist_tmp_base_dir/cdist.XXXXXXXXXXXX") __cdist_tmp_file=$(mktemp "$__cdist_tmp_dir/cdist.XXXXXXXXXXXX") ################################################################################ From a4c0b3df1fb23d02b7eaaf1c32be93cbdf764ec1 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 8 Apr 2011 10:56:53 +0200 Subject: [PATCH 0410/5240] [DOC] explain and document __cdist_tmp_base_dir Signed-off-by: Nico Schottelius --- doc/man/man1/cdist-config.text | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/doc/man/man1/cdist-config.text b/doc/man/man1/cdist-config.text index 9d147988..0c8b0735 100644 --- a/doc/man/man1/cdist-config.text +++ b/doc/man/man1/cdist-config.text @@ -15,6 +15,28 @@ types, manifests, etc. Generally speaking, it's just usable from within the core and is only of interest for cdist-developers. +ENVIRONMENT VARIABLES +--------------------- +The following list contains environment variables that are known +to be changed by users in various situations. To change the variable, +use your current shell and export it, so all cdist-binaries know about it. + +__cdist_tmp_base_dir:: + Normally this points to /tmp. In case /tmp is not suitable for + cdist (i.e. has noexec flag setup) you can change this variable + to point to a better location. + + +EXAMPLES +-------- + +If /tmp has the noexec flag, you can use $HOME/.tmp for instance: + +-------------------------------------------------------------------------------- +export __cdist_tmp_base_dir=$HOME/.tmp +-------------------------------------------------------------------------------- + + SEE ALSO -------- cdist(7) From 10cc25330c7e397bf3788d5c49aaafafc4cbbbfb Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 8 Apr 2011 10:57:18 +0200 Subject: [PATCH 0411/5240] remove space at the end of the line Signed-off-by: Nico Schottelius --- bin/cdist-object-explorer-run | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-object-explorer-run b/bin/cdist-object-explorer-run index 79cd2865..b65c5cc1 100755 --- a/bin/cdist-object-explorer-run +++ b/bin/cdist-object-explorer-run @@ -44,7 +44,7 @@ if [ "$__cdist_has_explorer" ]; then __cdist_type_explorer_pushed_add "$__cdist_type" fi - __cdist_echo info "Running explorers " + __cdist_echo info "Running explorers" # Copy object parameters cdist-dir push "$__cdist_target_host" \ "$(__cdist_object_parameter_dir "$__cdist_object_self")" \ From bdb1c6e7a65e856bf6df121b26bd34d2dc6d065a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Fri, 8 Apr 2011 11:01:57 +0200 Subject: [PATCH 0412/5240] stuff for 1.6.2 Signed-off-by: Nico Schottelius --- doc/changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/changelog b/doc/changelog index 2fef50ca..83b2b6e3 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,3 +1,6 @@ +1.6.2: + * Core: Introduce __cdist_tmp_base_dir + 1.6.1: 2011-04-07 * Improved logging: Show code responsible for abort * Improved logging: Consistently prefix with current object or core From 08f37578fc1a685f60dfb69f14ec96f03b8dfe0d Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 11 Apr 2011 11:13:06 +0200 Subject: [PATCH 0413/5240] +linklist Signed-off-by: Nico Schottelius --- doc/dev/logs/linklist | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 doc/dev/logs/linklist diff --git a/doc/dev/logs/linklist b/doc/dev/logs/linklist new file mode 100644 index 00000000..4ec144cb --- /dev/null +++ b/doc/dev/logs/linklist @@ -0,0 +1,2 @@ +http://groups.google.com/group/puppet-users/browse_thread/thread/83801a03c0fea665 +http://lists.debian.org/debian-user/2011/04/msg00818.html From 64826ca5ce29e913ce04ba3628a69bfbbc9a2429 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 12 Apr 2011 12:18:46 +0200 Subject: [PATCH 0414/5240] +links Signed-off-by: Nico Schottelius --- doc/dev/logs/linklist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/dev/logs/linklist b/doc/dev/logs/linklist index 4ec144cb..29d5ab96 100644 --- a/doc/dev/logs/linklist +++ b/doc/dev/logs/linklist @@ -1,2 +1,4 @@ http://groups.google.com/group/puppet-users/browse_thread/thread/83801a03c0fea665 http://lists.debian.org/debian-user/2011/04/msg00818.html +http://sans.ethz.ch/projects/puppet/ +http://www.nico.schottelius.org/eth/puppet/ From 0e42e98bb93ad5361cfd0b56142bb708b804c5c6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 16 Apr 2011 23:27:01 +0200 Subject: [PATCH 0415/5240] begin to cleanup bin/cdist-type-template Signed-off-by: Nico Schottelius --- bin/cdist-type-template | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/cdist-type-template b/bin/cdist-type-template index dc853614..335a0ed9 100755 --- a/bin/cdist-type-template +++ b/bin/cdist-type-template @@ -26,9 +26,11 @@ set -eu __cdist_type="$1"; shift +__cdist_type_dir="$(__cdist_type_dir "$__cdist_type")" +echo "Creating type $__cdist_type in $__cdist_type_dir ..." # Base -mkdir -p "$(__cdist_type_dir "$__cdist_type")" +mkdir -p "$__cdist_type_dir" # Parameter mkdir -p "$(__cdist_type_parameter_dir "$__cdist_type")" From 10ebdd87d4e21c599dc29db6b604ed6e8d0fff0b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 16 Apr 2011 23:31:15 +0200 Subject: [PATCH 0416/5240] fixes + local and remote gencode Signed-off-by: Nico Schottelius --- bin/cdist-type-template | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/bin/cdist-type-template b/bin/cdist-type-template index 335a0ed9..772b7486 100755 --- a/bin/cdist-type-template +++ b/bin/cdist-type-template @@ -26,11 +26,11 @@ set -eu __cdist_type="$1"; shift -__cdist_type_dir="$(__cdist_type_dir "$__cdist_type")" +__cdist_my_type_dir="$(__cdist_type_dir "$__cdist_type")" -echo "Creating type $__cdist_type in $__cdist_type_dir ..." +echo "Creating type $__cdist_type in $__cdist_my_type_dir ..." # Base -mkdir -p "$__cdist_type_dir" +mkdir -p "$__cdist_my_type_dir" # Parameter mkdir -p "$(__cdist_type_parameter_dir "$__cdist_type")" @@ -38,11 +38,11 @@ touch "$(__cdist_type_parameter_dir "$__cdist_type")/${__cdist_name_parameter_re touch "$(__cdist_type_parameter_dir "$__cdist_type")/${__cdist_name_parameter_optional}" # Manifest -cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$(__cdist_type_dir "$__cdist_type")/${__cdist_name_manifest}" +cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$__cdist_my_type_dir/${__cdist_name_manifest}" # # This is the manifest, which can be used to create other objects like this: -# __file /path/to/destination --source /from/where/ --type file +# __file /path/to/destination --source /from/where/ # # To tell cdist to make use of it, you need to make it executable (chmod +x) # @@ -50,8 +50,8 @@ cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$(__cdist_type_dir "$__cd eof -# Gencode -cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$(__cdist_type_dir "$__cdist_type")/${__cdist_name_gencode}" +# Gencode remote +cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$(__cdist_type_dir "$__cdist_type")/${__cdist_name_gencode}-${__cdist_name_gencode_remote}" # # This file should generate code on stdout, which will be collected by cdist @@ -63,5 +63,17 @@ cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$(__cdist_type_dir "$__cd eof +cat "$__cdist_abs_mydir/../doc/dev/header" - << eof > "$(__cdist_type_dir "$__cdist_type")/${__cdist_name_gencode}-${__cdist_name_gencode_local}" + +# +# This file should generate code on stdout, which will be collected by cdist +# and run on the same machine cdist-deploy-to is executed. +# +# To tell cdist to make use of it, you need to make it executable (chmod +x) +# +# + +eof + # Explorer -mkdir -p "$(__cdist_type_dir "$__cdist_type")/${__cdist_name_explorer}" +mkdir -p "$__cdist_my_type_dir/${__cdist_name_explorer}" From 231eb1214c4de9b284edc84124ba8480901f5aa3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 16 Apr 2011 23:33:48 +0200 Subject: [PATCH 0417/5240] refuse to try to recreate a type Signed-off-by: Nico Schottelius --- bin/cdist-type-template | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/cdist-type-template b/bin/cdist-type-template index 772b7486..6d8a3f15 100755 --- a/bin/cdist-type-template +++ b/bin/cdist-type-template @@ -28,6 +28,10 @@ set -eu __cdist_type="$1"; shift __cdist_my_type_dir="$(__cdist_type_dir "$__cdist_type")" +if [ -d "$__cdist_my_type_dir" ]; then + __cdist_usage "Type $__cdist_type already exists" +fi + echo "Creating type $__cdist_type in $__cdist_my_type_dir ..." # Base mkdir -p "$__cdist_my_type_dir" From 24428b2070c22e96a8a19c878638610b4f3856bc Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 16 Apr 2011 23:35:07 +0200 Subject: [PATCH 0418/5240] more stuff for 1.6.2 Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 83b2b6e3..2da35ad8 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,5 +1,6 @@ 1.6.2: * Core: Introduce __cdist_tmp_base_dir + * Core: Cleanup and enhance cdist-type-template 1.6.1: 2011-04-07 * Improved logging: Show code responsible for abort From da1d3fbc0469c56b393ee0df1d33096f2cfdb1e4 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 16 Apr 2011 23:51:24 +0200 Subject: [PATCH 0419/5240] begin new error catching code and make filter a function Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index 8a555411..294e1ca1 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -25,23 +25,38 @@ [ $# -ge 1 ] || __cdist_usage "[-p] [target host ]" set -eu +filter() +{ + awk -v host=$1 '{ print "[" host "] " $0 }' +} + parallel="" if [ "$1" = "-p" ]; then parallel=yes shift fi +i=0 while [ $# -ge 1 ]; do - # always assume we run parallel - cdist-deploy-to "$1" | awk -v host=$1 '{ print "[" host "] " $0 }' & - shift + if [ "$parallel" ]; then + cdist-deploy-to "$1" | filter + # Record pid and host for use later + eval pid_$i=$! + eval host_$i=\$1 + i=$((i+1)) + else + cdist-deploy-to "$1" | filter + fi - # if not, wait for it _now_ - [ "$parallel" ] || wait + shift done # else wait after all are started if [ "$parallel" ]; then __cdist_echo info "Waiting for cdist-deploy-to jobs to finish" + while [ $i -gt 0 ]; do + + done + wait fi From 0122ccc3eedabb8fcd07a9eacfe40dff5a7ec001 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 16 Apr 2011 23:56:10 +0200 Subject: [PATCH 0420/5240] in theory finish new error catching + displaying code Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index 294e1ca1..b78c032b 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -39,7 +39,7 @@ fi i=0 while [ $# -ge 1 ]; do if [ "$parallel" ]; then - cdist-deploy-to "$1" | filter + cdist-deploy-to "$1" | filter & # Record pid and host for use later eval pid_$i=$! eval host_$i=\$1 @@ -47,16 +47,20 @@ while [ $# -ge 1 ]; do else cdist-deploy-to "$1" | filter fi - shift done # else wait after all are started if [ "$parallel" ]; then __cdist_echo info "Waiting for cdist-deploy-to jobs to finish" - while [ $i -gt 0 ]; do - + while [ "$i" -gt 0 ]; do + eval pid=\$pid_$i + eval host=\$host_$i + wait "$pid" + if [ $? -ne 0 ]; then + __cdist_echo error "Configuration of host $host failed." + fi + i=$((i-1)) + shift done - - wait fi From 9c60a81d8a9ced7f9266602bc8a53b5ff226f661 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 16 Apr 2011 23:57:20 +0200 Subject: [PATCH 0421/5240] decrease first, last number is unused Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index b78c032b..3d497436 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -53,14 +53,14 @@ done # else wait after all are started if [ "$parallel" ]; then __cdist_echo info "Waiting for cdist-deploy-to jobs to finish" - while [ "$i" -gt 0 ]; do + while [ "$i" -ge 0 ]; do + i=$((i-1)) eval pid=\$pid_$i eval host=\$host_$i wait "$pid" if [ $? -ne 0 ]; then __cdist_echo error "Configuration of host $host failed." fi - i=$((i-1)) shift done fi From 471b8a73088d0141cba6d59cd5cf04232b1e691b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sat, 16 Apr 2011 23:57:46 +0200 Subject: [PATCH 0422/5240] pass hostname to filter Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index 3d497436..b4ccc8ff 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -39,13 +39,13 @@ fi i=0 while [ $# -ge 1 ]; do if [ "$parallel" ]; then - cdist-deploy-to "$1" | filter & + cdist-deploy-to "$1" | filter "$1" & # Record pid and host for use later eval pid_$i=$! eval host_$i=\$1 i=$((i+1)) else - cdist-deploy-to "$1" | filter + cdist-deploy-to "$1" | filter "$1" fi shift done From a51267356297bacf3e90354bf672c246234a0610 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 17 Apr 2011 00:00:55 +0200 Subject: [PATCH 0423/5240] more small things for 1.6.2 Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 2da35ad8..1d2c3565 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,6 +1,7 @@ 1.6.2: * Core: Introduce __cdist_tmp_base_dir * Core: Cleanup and enhance cdist-type-template + * Core: cdist-mass-deploy: Report failed cdist-deploy-to instances 1.6.1: 2011-04-07 * Improved logging: Show code responsible for abort From 01a541d0176ff3d584d4ddc16b1ff85b2fc0366a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 17 Apr 2011 00:10:07 +0200 Subject: [PATCH 0424/5240] use different count to ignore case of 0 hosts Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index b4ccc8ff..bd6bd406 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -41,26 +41,33 @@ while [ $# -ge 1 ]; do if [ "$parallel" ]; then cdist-deploy-to "$1" | filter "$1" & # Record pid and host for use later + i=$((i+1)) eval pid_$i=$! eval host_$i=\$1 - i=$((i+1)) else cdist-deploy-to "$1" | filter "$1" fi shift done -# else wait after all are started +e=0 if [ "$parallel" ]; then __cdist_echo info "Waiting for cdist-deploy-to jobs to finish" - while [ "$i" -ge 0 ]; do - i=$((i-1)) + while [ "$i" -gt 0 ]; do eval pid=\$pid_$i - eval host=\$host_$i wait "$pid" if [ $? -ne 0 ]; then - __cdist_echo error "Configuration of host $host failed." + e=$((e+1)) + eval e_host_$e=\$host_$i fi + i=$((i-1)) shift done fi + +# Display all failed hosts after all runs are done +while [ "$e" -gt 0 ]; do + eval host=\$host_$e + __cdist_echo error "Configuration of host $host failed." + e=$((e-1)) +done From 91106ba0af4f7be86cfe25f3be62d6892eee8bd3 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 17 Apr 2011 00:11:23 +0200 Subject: [PATCH 0425/5240] comment for sysadmins Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index bd6bd406..1c6baa69 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -65,7 +65,7 @@ if [ "$parallel" ]; then done fi -# Display all failed hosts after all runs are done +# Display all failed hosts after all runs are done, so the sysadmin gets them while [ "$e" -gt 0 ]; do eval host=\$host_$e __cdist_echo error "Configuration of host $host failed." From 20f0a788b143c45b19c09ae73293e76df3cffaa9 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Sun, 17 Apr 2011 11:32:11 +0200 Subject: [PATCH 0426/5240] use -gt consistently Signed-off-by: Nico Schottelius --- bin/cdist-mass-deploy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy index 1c6baa69..e8e2594f 100755 --- a/bin/cdist-mass-deploy +++ b/bin/cdist-mass-deploy @@ -37,7 +37,7 @@ if [ "$1" = "-p" ]; then fi i=0 -while [ $# -ge 1 ]; do +while [ $# -gt 0 ]; do if [ "$parallel" ]; then cdist-deploy-to "$1" | filter "$1" & # Record pid and host for use later From 14cb98b4f980832d19ff193b777aa018e815de48 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 18 Apr 2011 08:35:52 +0200 Subject: [PATCH 0427/5240] seperate branches for more than one feature, please Signed-off-by: Nico Schottelius --- doc/man/man7/cdist-hacker.text | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/man/man7/cdist-hacker.text b/doc/man/man7/cdist-hacker.text index f9f08e31..027f28aa 100644 --- a/doc/man/man7/cdist-hacker.text +++ b/doc/man/man7/cdist-hacker.text @@ -55,12 +55,16 @@ There are though some requirements to ensure your changes don't break others work nor kill the authors brain: - Code submission must be done via git -- Code to be included should be branched of the upstream "master" branch - - Exception: Bugfixes to a version branch -- Code submissions must be in your master branch - - Exception: If you only want a comment on your code, but not an inclusion. - Do not add conf/manifest/init - This file should only be touched in your private branch! +- Code to be included should be branched of the upstream "master" branch + - Exception: Bugfixes to a version branch +- Code submissions should be in your master branch + - Other branches are fine as well, but you need to tell me which branch + your work is in! +- If you developed more than **one** feature, consider submitting them in + seperate branches. This way one feature can already be included, even if + the other needs to be improved. As soon as your work meets these requirements, you can contact me (IRC, Mailinglist, Phone, RFC 1149) and I'll check your code before From c929ce09776e0b335ef1de3bb24ca74e8ac3199e Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 13:42:14 +0200 Subject: [PATCH 0428/5240] begin logfile for today Signed-off-by: Nico Schottelius --- doc/dev/logs/2011-04-19 | 67 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 doc/dev/logs/2011-04-19 diff --git a/doc/dev/logs/2011-04-19 b/doc/dev/logs/2011-04-19 new file mode 100644 index 00000000..65b9550b --- /dev/null +++ b/doc/dev/logs/2011-04-19 @@ -0,0 +1,67 @@ +Meeting with: Steven, Thorsten, Nico + +Problem: execute my code only if somebody else's changed something. + +Proposals: + +1) Introduce new binary (Steven) + +gencode: + +if has_changed __file/etc/nginx.conf; then + echo mycode +fi + +2) Use -f plus new variable to cover .cdist/has_code: + +if [ -f $global/objects/__file/etc/nginx.conf/$has_code ]; then + echo mycode +fi + +And $has_code resolves to .cdist/has_code to cover the .cdist +directory. + +3) Create a new tree that contains changed objects + +if [ -e $global/changed/__file/etc/nginx.conf ]; then + echo mycode +fi + +4) Use a \n seperated list + +if grep -q __file/etc/nginx.conf $global/changed; then + echo mycode +fi + +X) General problem (add to FAQ): + + When having "do something only if somebody else did something" + it is possible that users get confused, because code will not + be executed. + + This may especially happen in code development: + + a) User creates __file/etc/nginx.conf + b) User creates a new type __nginx that restarts + nginx, only if __file/etc/nginx.conf changed. + But __file/etc/nginx.conf has already been deployed + and thus will never be restarted. +-------------------------------------------------------------------------------- + +Introduce exclude/conflicts attribute for types? + + Handling in cdist vs. handling in the types themselves? + + Examples: __file, __link, __directory + + Need to handle errors on low level for those anyway. + + Conclusion: Wait until we need exclude in a different type. + + Pro: + Throw error as soon as possible without touching the target. + + Contra: + No needod for most cases. + Very controversal for stuff like __package and __package_gem + for instance: rails; Should those two conflict or not? From 0e5cb9b11f1c2609214711b22691b47b92101545 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 13:43:03 +0200 Subject: [PATCH 0429/5240] cdist type template works Signed-off-by: Nico Schottelius --- doc/dev/todo/niconext | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext index a02d7013..887856d5 100644 --- a/doc/dev/todo/niconext +++ b/doc/dev/todo/niconext @@ -1,5 +1,3 @@ -Fix bin/cdist-type-template - Cleanup documentation: type reference -> add types + manpages add explorer reference From 4d244e9ea2ff10521a9216166bacf53598f02d20 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 22:30:06 +0200 Subject: [PATCH 0430/5240] =?UTF-8?q?import=20=5F=5Fssh=5Fauthorized=5Fkey?= =?UTF-8?q?=20from=20Aur=C3=A9lien's=20tree?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nico Schottelius --- conf/type/__ssh_authorized_key/man.text | 46 ++++++++++++++++ conf/type/__ssh_authorized_key/manifest | 55 +++++++++++++++++++ .../__ssh_authorized_key/parameter/optional | 2 + 3 files changed, 103 insertions(+) create mode 100644 conf/type/__ssh_authorized_key/man.text create mode 100755 conf/type/__ssh_authorized_key/manifest create mode 100644 conf/type/__ssh_authorized_key/parameter/optional diff --git a/conf/type/__ssh_authorized_key/man.text b/conf/type/__ssh_authorized_key/man.text new file mode 100644 index 00000000..af0c2017 --- /dev/null +++ b/conf/type/__ssh_authorized_key/man.text @@ -0,0 +1,46 @@ +cdist-type__ssh_authorized_key(7) +================================= +Aurélien Bondis - aurelien.bondis AT gmail DOT com + + +NAME +---- +cdist-type__ssh_authorized_key - Sends a user's public key to another user's authorized_keys + + +DESCRIPTION +----------- +This type sends a rsa key. By default uses root's key and sends it to root's authorized_keys + + +REQUIRED PARAMETERS +------------------- +None. + + +OPTIONAL PARAMETERS +------------------- +srcuser:: the user to take the rsa public key from +dstuser:: the user to give the rsa public key to + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +#deploy root's public key +__ssh_authorized_key admin +#deploy bob's public key to alice's authorized_keys +__ssh_authorized_key --srcuser bob --dstuser alice +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__ssh_authorized_key/manifest b/conf/type/__ssh_authorized_key/manifest new file mode 100755 index 00000000..efadc3f6 --- /dev/null +++ b/conf/type/__ssh_authorized_key/manifest @@ -0,0 +1,55 @@ +#!/bin/sh +# +# 2011 Aurélien Bondis aurelien.bondis AT gmail DOT com +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# This type allows to send a public ssh key from a user to the +# authorized_keys of another +# +#require="__package openssh-server --state installed" +# Get option srcuser if defined +if [ -f "$__object/parameter/srcuser" ]; then + srcuser=`cat "$__object/parameter/srcuser"` +fi +# Get option dstuser if defined +if [ -f "$__object/parameter/dstuser" ]; then + dstuser=`cat "$__object/parameter/dstuser"` +fi + +# if a source user is defined, use it's public key +if [ "$srcuser" ]; then + srcrsa="/home/${srcuser}/.ssh/id_rsa.pub" +# if no source user is defined we use root's public key +else + srcrsa="/root/.ssh/id_rsa.pub" +fi +# if a destination user is defined, insert in it's authorized_keys +if [ "$dstuser" ]; then + sshpath="/home/$dstuser/.ssh" +# if no destination user is defined we use root's home +else + sshpath="/root/.ssh" +fi +rsa=`cat $srcrsa` +__directory $sshpath +# the file authorized_keys depends on the .ssh folder +require="__directory${sshpath}" __file "$sshpath/authorized_keys" --mode 640 +# the line added depends on authorized_keys existence +require="__file${sshpath}/authorized_keys" __addifnosuchline sshkey --file \ + "$sshpath/authorized_keys" --line "$rsa" + diff --git a/conf/type/__ssh_authorized_key/parameter/optional b/conf/type/__ssh_authorized_key/parameter/optional new file mode 100644 index 00000000..4903f5be --- /dev/null +++ b/conf/type/__ssh_authorized_key/parameter/optional @@ -0,0 +1,2 @@ +srcuser +dstuser From c6d7ad31243fd65a0e5127b80a9e87acabfecb27 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 22:30:56 +0200 Subject: [PATCH 0431/5240] =?UTF-8?q?++changes=20for=201.6.2:=20Imported?= =?UTF-8?q?=20=5F=5Fssh=5Fauthorized=5Fkey=20from=20Aur=C3=A9lien?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nico Schottelius --- doc/changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog b/doc/changelog index 1d2c3565..be175ffd 100644 --- a/doc/changelog +++ b/doc/changelog @@ -2,6 +2,7 @@ * Core: Introduce __cdist_tmp_base_dir * Core: Cleanup and enhance cdist-type-template * Core: cdist-mass-deploy: Report failed cdist-deploy-to instances + * New Type __ssh_authorized_key (Aurélien Bondis) 1.6.1: 2011-04-07 * Improved logging: Show code responsible for abort From 08db913134d6c3274c76f9b59cafb7434a1ebd98 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 22:34:13 +0200 Subject: [PATCH 0432/5240] add releasechecklist Signed-off-by: Nico Schottelius --- doc/dev/releasechecklist | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 doc/dev/releasechecklist diff --git a/doc/dev/releasechecklist b/doc/dev/releasechecklist new file mode 100644 index 00000000..aefbfe4d --- /dev/null +++ b/doc/dev/releasechecklist @@ -0,0 +1,16 @@ +# Stuff to take care of when doing a release + +# adjust version +vi bin/cdist-config + +# adjust release date +vi doc/changelog + +# Import into current version branch +git checkout 1.6 +git merge master + +# Ensure documentation builds cleanly +./build.sh clean && ./build.sh man + + From 458126e700c2211d3b43409bce46d5d28d522716 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 22:34:47 +0200 Subject: [PATCH 0433/5240] begin to make checklist a script Signed-off-by: Nico Schottelius --- doc/dev/releasechecklist | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/dev/releasechecklist b/doc/dev/releasechecklist index aefbfe4d..cbb5bb72 100644 --- a/doc/dev/releasechecklist +++ b/doc/dev/releasechecklist @@ -1,4 +1,7 @@ +#!/bin/sh + # Stuff to take care of when doing a release +echo "Preparing next release" # adjust version vi bin/cdist-config From 7a8559fe52104feaa1a3453ac6ffa6214d28a4ad Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 22:40:51 +0200 Subject: [PATCH 0434/5240] in theory finish releasechecklistscript Signed-off-by: Nico Schottelius --- doc/dev/releasechecklist | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) mode change 100644 => 100755 doc/dev/releasechecklist diff --git a/doc/dev/releasechecklist b/doc/dev/releasechecklist old mode 100644 new mode 100755 index cbb5bb72..379954e7 --- a/doc/dev/releasechecklist +++ b/doc/dev/releasechecklist @@ -1,19 +1,31 @@ -#!/bin/sh +#!/bin/sh -e + +files="bin/cdist-config doc/changelog" # Stuff to take care of when doing a release echo "Preparing next release" -# adjust version -vi bin/cdist-config - -# adjust release date -vi doc/changelog - -# Import into current version branch -git checkout 1.6 -git merge master - # Ensure documentation builds cleanly ./build.sh clean && ./build.sh man +# get version +version=$(awk -F'=' '/^__cdist_version/ { print $2 }' bin/cdist-config | sed 's/"//g') +# get target branch +branch=${version%.?} + +# adjust version and release date +vi $files + +# Commit stuff +git commit $files + +# Import into current version branch +git checkout $branch +git merge master + +# Publish manpages and sourcecode +./build.sh web +./build.sh pub + +# FIXME: add tagging somewhere! From efe1d3db7984f3715b8b657a2bca7a61ae83d31a Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 22:43:18 +0200 Subject: [PATCH 0435/5240] Prepare files for the next release --- bin/cdist-config | 2 +- doc/changelog | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/cdist-config b/bin/cdist-config index 44a95f01..366b7993 100755 --- a/bin/cdist-config +++ b/bin/cdist-config @@ -19,7 +19,7 @@ # # -__cdist_version="1.6.1" +__cdist_version="1.6.2" # Fail if something bogus is going on set -u diff --git a/doc/changelog b/doc/changelog index be175ffd..e2d6bb49 100644 --- a/doc/changelog +++ b/doc/changelog @@ -1,4 +1,4 @@ -1.6.2: +1.6.2: 2011-04-19 * Core: Introduce __cdist_tmp_base_dir * Core: Cleanup and enhance cdist-type-template * Core: cdist-mass-deploy: Report failed cdist-deploy-to instances From c2454b645b5be1b40c61dceb04a5e2e4f32ca7ba Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 22:43:49 +0200 Subject: [PATCH 0436/5240] add tag support Signed-off-by: Nico Schottelius --- doc/dev/releasechecklist | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/dev/releasechecklist b/doc/dev/releasechecklist index 379954e7..098ead06 100755 --- a/doc/dev/releasechecklist +++ b/doc/dev/releasechecklist @@ -20,6 +20,11 @@ vi $files # Commit stuff git commit $files +# add tag +printf "Enter description for %s>" "$version" +read tagmessage +git tag "$version" "$tagmessage" + # Import into current version branch git checkout $branch git merge master @@ -27,5 +32,3 @@ git merge master # Publish manpages and sourcecode ./build.sh web ./build.sh pub - -# FIXME: add tagging somewhere! From 3de78bfaed74cc64be364825cf6e20ab4546c583 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 22:45:05 +0200 Subject: [PATCH 0437/5240] + push architecture in readme Signed-off-by: Nico Schottelius --- README | 1 + 1 file changed, 1 insertion(+) diff --git a/README b/README index 350cd3e1..2d97f20c 100644 --- a/README +++ b/README @@ -35,6 +35,7 @@ Design | Meaningful error messages - do not lose time debugging error messages Design | Consistency in behaviour, naming and documentation Design | No surprise factor: Only do what is obviously clear, no magic Design | Define target state, do not focus on methods or scripts +Design | Push architecture: Instantly apply your changes Small core | cdist's core is very small - less code, less bugs Fast development | Focus on straightforwardness of type creation is a main development objective Requirements, Scalability | No central server needed, cdist operates in push mode and can be run from any computer From 6d5962826a9bfda60ab914de59cd4d2f15404678 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 22:48:28 +0200 Subject: [PATCH 0438/5240] change back to master after everything is done Signed-off-by: Nico Schottelius --- doc/dev/releasechecklist | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/dev/releasechecklist b/doc/dev/releasechecklist index 098ead06..5568ee35 100755 --- a/doc/dev/releasechecklist +++ b/doc/dev/releasechecklist @@ -28,6 +28,7 @@ git tag "$version" "$tagmessage" # Import into current version branch git checkout $branch git merge master +git checkout master # Publish manpages and sourcecode ./build.sh web From 5cc626a2a10e771e34b2b5a78347ccc4f3a76bea Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 19 Apr 2011 23:47:26 +0200 Subject: [PATCH 0439/5240] add a video showing a cdist installation in less than 60 seconds Signed-off-by: Nico Schottelius --- ...st-installation-in-less-than-60-seconds.mp4 | Bin 0 -> 590996 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/video/cdist-installation-in-less-than-60-seconds.mp4 diff --git a/doc/video/cdist-installation-in-less-than-60-seconds.mp4 b/doc/video/cdist-installation-in-less-than-60-seconds.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..cdccbe43406af40fa498799ffcd727acbba85201 GIT binary patch literal 590996 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 z z8HIex>{TrN7#-~N3h#D_%94I&sCAr>gwYiT<`(GU062M!HQ6Q)t{AR?zx*f&%ah>F zw^|*(6d~_)jmx5SSN0Bl+bBlQcjRo?gj}V1LUa>liq%v-$!t?sThxVF`eQ$kURCz= zTQFE}1iWdSbV87u7)R2l6Lh>fa3)+ge`i#av?k(hkcMWWZvDKip{?$n_QYe7?x#x;lbZc{utSg9_PcGF5#N$`d2lO%*EVczIl_&$fQ1EHEBF z8lj})Z_ibx-Xk}!;anox>-!^De>K>~>d4J7SxkdI2wayV^2CItN|z2YPzOq^+4c9H zFAS-S%O8Tx(XY@{-nZOYSOJMpn!)s9D;k3_MqG16heMn(!ORFusf3JsoH{&n?Wb>$ z4v5E@TJ1wYPbcGes8iZwlI5;$3~O;vV+CUze0?G2i^j9+p@dHT6?1M38f!MrREDa^8V&cEOJyZU z4XGFR(Icyag^+{IXZ%#=IolX}WA?!(LK|#|R%K&$hQr+? zZXY4MX1@NwEEUcVy~)6*8#-1ullbIY^qn^5%T*@ip|Y(d>@6_GBz}A?>Rr(^Pq(`u ziO)j_kwK*DKm_-tzLSU+%Cfvd`FTm(iS^&F4(G@jnS}G- zp16k)RStKPicj8!mg06X*)N0{598`U3xRO0K*^%<45%-iUu?Pq3}DnH)1Ry^=R7{j zB-1@kdj1;#y1Tv@r)j-~`zlY>Hh$L-R6c=TK?eDmpCeRwz5NYDS;3@U@6D=@9N1(x zrZhJh%RdZD5K^(yFNVFc-pzgVJB{~DY+0Md%$yCvLcah2?732ti{Tx^RBY9g^+3it z@pDgFNy6$iBD#Q2;Z z*L&K;v}IUf&Bu?5Ri z3&xWh4v(l5sn%Tc@S*0WNOW4eu7pB`Xugr&G(itz=mH9gTHvV*dZ z=ZSyuoquF(WHd3?;~#fV|GjH#F~}FX!QO+Rh~B2FYOhk?`xN>&Ju@PrB8g@Z&|Mc$ zBi7CqgH7UR&DmNrlC>0f1KrgB-77KB$9R+o9G;zoa=O2AmE1|$Lp@cSO|O7<9QsWS z`3f$}On-1;b${i*{AYG6MTce0)?fUvQH zcd1j5%Ka9e|Iw}^=4<-`AIC?s?V(a{udmAEjvz$kLLdVle#B_y@_oh@Udt#MfBT?* z5#&o7_1TRo#6S9Gil>%_N5c@MftdX+{^3;qvYhgwcmuKe+!MyViU485;7%H+>m!z3 z@IbkKW=X>R5 zOUg{i)nECCb3A|+NOzOAhL)g+?+7Z<0<@pjU`=^S-qM<_01AW4T!NZD`F8hpw*$k7 z!U3=@7p5dbSl*})j8>YY#e}uc_>Iu94M5^1^%8-jiiR1wDZWb@Fr`ZOhm|z`CxCw! zcSHkKf{>7hfRpJtfF0Zypn$CPn>84DZlP$)wld*hbNQq^h=RgenK-7?o2g~uN9yFg zBRSx~x-NJi&=bdGa1x~WVkq?rSnB{>X{JOa zTfCQ*+UftwFYr+1&qJ;3<{{4Nz@oacs;uNGF=+FCwPVN%aD1_MKq}q07x1GNaRkIg zKCrnQTz3ubGO`dK&n&%T7f&dS7!i+mZGVuLd(o05(k)7PIbzWCjc=H(-Uy@s8~_Q1 z85MoU%;Y)R-59PA^F*EWyGpAv3K_Xv=3qKA70$JM{By79(w+L!be?^d0SAaa%TjY8 zQY>+p)?~w0<2Q*bQ;~<2d^lb~4U=})-i8jIkfMTpdm_pXQM4pll5y2RkLtbz1`{`~ z;-bEvFdPvZb#;BS$isC5SH2l-j92F5;88}1AXFX#M#Qf-5Mtu!1}fJ*lYO&`N$`{I$%aW*hf!2El6-W~oS5^jw z!A1ChnhkO;l`S9MxI*@tCAu`0J4gBo5HX0Vckzpth6=q>AKwEe12GreA-a3Qlj$J^ z0_;#noppZ*9Bw`FVwTV%!nbsrr<&W9a?M5VZ=v#m|S&TI-p(`H_gnRlGRZkjqMj^`Izhy)K z&<;Bf!&%t$=wrKo5N-oB4vkZa{OL-=chSG5Pu@waSw2C}z<0oc+Zqq!{G64^ckGLwb*_jYy`z9^0)~6g!#GbYT$PJ5ah+De?%RG+LZ3 z2vK;1BW(Uw0a?j%l=f1nglJq^M{*B_%9#Okx;90CgAlqgxVMfc-Rm=&gAB{7UWP9` z-1IxWz*JPEHnF^zf0m$uk1y0?YWcLsb{7x)6J@+phTgVOu>1h*sx}sukf#xyNsWbP zqIMi1Oj4@s1*Au0j;>S1c8)Xv4J$90E2Z$z<65`wG>u!Jl{l*PA&=h;T-r=XKKH3NPS7Kt+Ik;ULk5LK@ zwmm)%oZZ{JMX^BJ@;0*DA}8#+t~np2H_cKnCet+#)jwv| zQsRs6KKn5REEgu{B1g*p+ptM?+A5KfDc)s>nOJ?$<0K2d` z*o_j*u&fhTTknSEDH7_kSSW1EXmrKZIb%hCvIZ3Dk{_ky{Rv`rG|3f7F7LW464WGI0tGFQkA_;AE5Ubb2?aIQGviRsmMG>k(xt&{l<@F z;U7uJE*ddd2Y)VD73jiz2mR`tE%^(4I8Z&z?g!r3EEh$mQrXPmVA@BuXTwt_^r0PO zcrTo&Yl*wlIS#iKBkI*J5WXB3K;@SFuROnck>CX%lL1P4ldO->0=08{Sgk8^Odn`E zr;F);PNuU(Ou((m1TUHnbg!=^?pj_grlXTb}kIkG$_pXGJDZ6e!_ZbT_}Qs z$S>V@@q=79RD%3%D=@a71s5K{iM8M8xu@G*W5Dh=xTa-xm24~g2j0V&*g|TrV;kMQ z$$&sFoS7_-ZL>Zm{Q^Y`I~P zdADYF@tZa#03q{u=5~e3m^auvI&=@@>!S-8;b3RC)~N`D3a+A)HKzFKvvE{|DH1L( z;-s~_8P<{N&N6&b!M)dhIm@j}d{U?^JdekgFQM!=CMG(2FK-jGorAUyER&=QGP71D z%yL>3Q^4dXS`mqjtG%VWf9E0l#GlbE&&stFt1R0t0#s4kS@{?dMk?+e&*>M5WYoqv zW5M$Q`^B-=_L{<$!@N0;!bVnnvFg!B%xSKBjtzYVhz}5xOS|QH2P$IqhIFA~ENICh_ zH=pS)(b#C*LN+xC$kS44#z^B+IouR|uK(fC)Ex=3$U{KXAZEcEg_KFjbcg~CbJnE@ zc7$id_g2~ZzQ9F&rG}#30qZb@?xDxbyfh^93-we`tdW3+%>iq$0H{$YRyVd>*3)FT zdHn^2wl0}z(be_%HNoW)B*ctcDG9Sls*&vK_-HqFHb`WqeLBmckQI_P8n%cBErY?^ z5Kmem&sGC(J)SG*cL8vvcX6@h6P8mie|fueyf6xg(u#mb%+@t98(ucdX5*JbgeWsN z{*3JkWS13L19AVnx!rBmx>Ou9zA2)p!Nz(nC>Vn z30nR*28r5=TTY6kuJ+I-=N@lNXk$Dhp!&il$y10p!d0I9y;{ytSxwN0Acy&fKrS6p zZ4=vy%tGU+Mj3Qx&F8BHgf;;bp&lWQYXh_LJB!$LwFk9;pW#(-Z|cg);ej18Arob+yS5A9{2m}K>38*s+jKIf`g0nU z5LL*y7%Jms$-!KAZ*xwUnbe4Vu=xHApoOBg?l5u9k-rV=4T&)mn8iGxVmbDg`S#R{ zkr4nTg_{nJ?Pr%JC9{=PVUI&~ifrIaF}Y2KeZ5pa%_;tu-pb6UBu1`r*VS79?a0YZjXX=D`IbpB|B zU;ua1UFBBT*ELH^`wJujzX3_q(mBE!Gndr?;`M~}7!X6aG8o3&3m+)FT;Bwz{1okBAR1Lw$+>Y)dz z7)?o%tkjnXzqTVsY&N!otbU3{)=H^l|3NnPvA1LbUzTUl4jR1js404Qhc4t1zIexg z-dIfSOetUtV$+oFSuh$=3vtN2-sYP3{@sWnSf?|0Fk(yt zTBIg}XA=y3u^K2i7351(XRY$1rbxYGYl|tNQ~8|!6totTy>5=ZCLHB>JB?&?YYlxi zl?qR-h$)0W3|hBlP-UB;@k|DQz=kkeB2T-UI0&NCR3kzrX72Y})yPUNK;@zA4%ioQ z&kXvvO6vjKp?&Yewz`poxh}iYw({x5=f&rE;ec7EA4W>dy4r#{>WRGK&&>`p%}E{1 z0NH+ZCP6~j?E_l#_jEi#YY@OCp3E<|>zUL()E1ros;qzsG_xTIYUFFpdCuEfO^cM& zSlMbOO%d-s5vPp}_o}bW;QwOot)u#Awrx=ePH+hxToNF-ySoH;4ekMgThQPV+}+*X zHMqOGyTk8g2hRDD?47)E?z{JmI|hFMvrFb&tJbQjuI`SSj5gE^FQo5{+sGPuIwV{D z&mk@#1e}3~$4iRfnk0zyP}+78-U+{D@Z$cVZuu_ZZcG#5hEDcPRIW;5*;K$usileL z;L15JAdK!YTLF2)I8HdD4w4K@6W<4?3|<}IcM3fD1I)w;I*T$Gq0+qI8wCy*x*AHZ zxoARoIBe3~J8kt4M6LDD3y~a|rc^m)^BC=ZmM`LEF)pIk>T}w~*6at$j*V^h+I#{N zJKv7f3=*QlDgVD%#gU8l++<#_T<`S2-D$IlbZr9 zPJH~l4;2m;u#+S^ff6EGO)@}AqXyJT0cv5RC3LfSy{YcDzU`?p!W=+#Qc~Ps^&xXS z+M!N=5HPoQ3Tn2fFUffHMc5V^oY(}Vfsgr!M#NEYJw1rBHC9x$e&`0W>J#``=wz`; z*uB+*Y0_HPC+yQR?y;WZxQT_V;~YZ@ZWT49R~{U~RRf?O;)rZbfdV$8zTZHg(Ld82 z@v64v3B`kMi`C56Yx*cDQiNSJfb4YKPD)&nla`YPN)dD$$FK_my?Iy>?idrGeRv+! z!I)=nX|_OM8Y$F7Yo{7y9x0+cZTXl^mYiiOgx(#SMX|$bls5Z@6Bt-i&s70r_^dHc zrnQoa7sM9L#vwU(ENs&6TBr*jTl*DZK6_%7=D{#eHZs-XHS<90!{O9hhF424%XSpU z3h1J>o$Zh?2AWmb%sSJ+;eI$0w=Q#K?ManiHOa5Zuc6V!Z!Eql!CfhYv+hoP6f@jK z=+Y2m<`4MNy-CKQr%);7QVlO5n}Rxej3&Z)%wK&Ct$fkRc3p3a@GmXiq*x*tE8@xhnCL^Z{pc zgXQ#cn1bVII&L7^xfkUKz$IZ*onUt!O}~$OdnA+`Ch5N4S>6nuzN7{$k5$05rTq0B zch}vUiRp;7jcJ=9=Qr4nuu_LDw$(}_ol%0N!NwX`!f?pLB@!Ns$(QPUYL=6rt~?LmYKIY2#Q{@Nhb{~CX>{12N2*5q{($OGwQE!QV47RA@FIvB z#K90KUBSm*0UGK7NviRq$mxW6=88B#_9h0{SZhL*;K3Ub1+2*xrl3G}^9=PgGT}yW z#2ZQw^ZfF=_hrFx9}Ikoe6rMHbn#D=e5uRUq+s{ov%)m&I$*^jW%`K&Ar-7UuCYT@L)G4p045=;sbUH+l6F44S&dgo&&6U+?}95Ocf7>xNOL^6|mz!leV;u`GLSdq&} z60%sIfiv!obt828J{6&^|Ujm%L z$`%3$!wht{9{30&puiHX2Q=?s|2)ArKyP4LJTw9d^Z3GscVZ6s%qxIzaxm2r;UEGm zJRgCvG&~mp(TG&-4K(#HE+>8B`43rVyUDmccGV?Q`f`K!LG=~)46pYJucVEH{Cm{&QHc?q z{vG$EE<5xRG;ily3nyx0aj)Jhmkw^G^zb_RlP&qm>+u@quk}~5aaE#*M#}VJu#;jf zd2S`G15ntJP!96hsf-<}U7}rZXLzFN$D(}>?SzkxL{zJ$kvZRAZ*ibB8kp~*M^@t{ z{xAh&Re>zdj-Nyl8sBASUm_o?xs_iBC1I{~P@4WZ_9eaO4AVY^F!^QO*U87#!(&HtbQ3ic{^zombfF?fS~?PWcC3^%8TVn8J+NBc#?J-61{qlY`ZEtwex80@=-N|Fhdk!2B%nJQWY-3oHP{GE4gxtSA=D9LMyh%XzXeX zI#X|Mj;O+go#3^_PB84t{ddrM%40-0-@mqbUKse2qLHxg9-GK>SSQ?eTCtL{whea0 zCPq@^#EV83075@zwgo!^%JN2zBsQ1^*X@;8Cn)9VYvWVRJSx@_M_Q@`X?E5DDx;;(U`b;=F=M&cwYF+^*{W)DKaf(zVLcRJ9oVpmGCiwvWq> zRRn2X2dOCjkapy%RxPifsvjms?n+0Famf}p?p^Qlu;X^5J?TsC7?-#8Sqk3fmCmiL zxS_Qb2zbRf(+77HhBTR70AFX8oOggQU5$e23xsp2W>A_7H=7d1X4&ZtQOJI^UFaY< zL|C^u(3RhbBC$=~pFJI*DNF&3^f~a^^aA3$Dwl<>Gq~z@ zM7|kta);{?G=WD{K$mnm`!j(jrqjGH*%Ml`kF-;(!}Ef>=Dh9AcHNqKUt1_bcJ5^x zj0b&&x^8o*^+uV5qnk2y%>xw`5zx~I@(`7pu*4)> zq*;6nli7>*)D=4Q$FL*Mf&ju;8FhL8^4h>hxko0Y`;n$pcj{ehq=dFWjH#klhm+tn9Ei$~$} zlzceV8e7GkD(%#SI%{>9Wx|K{xBaNd&E{f@CI_R+mZ+l_M+X@A9LjZzJtfx1 z4~FSCN}&2mkEyAjtiph6UowTz!HQ854mzdr$f0_9)I&hzXNXuRPK!gB)~a5DtI}ZJ znb8^md(kYq=}o^>JzYnT=EbB%wpS2tCeInEd3=X*n?@zVlJBKLNfGi1#=*1ZJtww( z=!U`hb6D2-A3u`%OBQ-cQgMnuMeU!1`ZH|zcR2d*aP`kHNIe?6C#;5H{*=-i?;3@@ zfh&#_gf&EmgO5}F$)`d~VT_#u{QGDCju8OV796UWI5M%4G)oQ+o9A@nG}m&E^yE4U z|HT#l*2l)20)VE_y`l%gOZ)K8bT3ZT`EK?4PEs{Myu^1{z{~L;n7pC&DTCJYJ4fbK zC)L-ksu}ykAU-F14E1WSuxE{4hmD0K+IgdMVWw@ZhxjKGqN(#RQ!1TJe0PDVGYnEw(@Qp;R0y-j4*yZ% z_{Lz}4baS{FZJ2o-Wu|V%G%8tm#(~Ns~1#z`g)_$qW5k?Z0It9hZupXU$id<`rfj^ z(xn9Qf#qrxauO!S(lD$90dJ=%CKG7vI!nxCV!INRo&TkUHl~yc@{TX7I z{asC093ZwB7d^<{TmT*BqR*N2>Ap*>9u-BHn#w2c`o_J$qI=}UOh}}Q87?DIABlyC z8*WKfZt)4?DnX0KLt>&Tw8hBbQu{y5en8SEHo0ljt0KQY%5%bm{tXYxWrPgxs$VEq z^}_{X%6|z)4>2+b|qDN3^?$}fRP7PxIMXT0p>FI~-cNC;j;d&+A_YdG9qGnmja zDM~5tyM@JeN0E-H(6}))YBAyN^?XZg)^296$$L3Ask2efPBiFPHeTc^?$l@z)neU&F39>j_%?qBFFKK!UnH9vGJQ^nYZ zB>TB0`zDY2j+wFcS|#bgK}bc{kI9q(7wVyga8F;te$%!^NzC&uB0`P!{F4|YtcvY+ zLx90YR1Tn;98fxXefF;!0bzDTYNO^0l733pG2-Cq%TZwlEz_)8#xZ3#pQ8W6V!K$F;msnI{6x%ka zQ$RQl2npR-!oyN1dX4VaR)-N$NW@kM@>~>PIs2rut{#1dHNA9*Y|Tyx1mWyh6L0Gg zh0}>)<`p}>66g5J0Sgq!YQSgk#)9S%^5$WU2D{}O1M+ZbzC--$dN0X5{0`wZPr+U5Otd6OQFclIWi~|GOmBKf@rOsP^!^$ok&4 zI8S`;Zyxa+%n2&IA5knSk$vg+Zojb}dbG~9n^sf2fW|uovjmk7>frO5Phd(tOuWcv zRKjUd?x!}Vey;SVHvhw<90bH*vKL~06Zan8pHt~L0Vp z^}R#o8@=JlCjTBJoyur$P7gWr@)-tQ#h{>x)($)F0k$6AVx8;Hcrn6)rnn66<%YJ| z%-}*$M)Du+_c@o2{o9lR;mByz*fFs(65(TFJJKjHNz<&1lOAx7Ip3hhet;tdGQQIv zgEuvlO7CD~Fl{ix+!eV_1h_y-=nLU5H~t{?KX}W+FDdOg{wn?~3CM@iO>TNhiIjTe ztI|bnr#IZh@%TxfZ31>xYgM+-8fG~etx)2=ii;IE60T$`1Q*M!lijBguorZyz^Ju2(QmYvvRTd(S6 z4Q{!PMn_y!sr!W#;s=*{FEIB3Ry)!`j8x z6HyotXY|lVppOQC9{&$5RSzOs`zANY#F@J?gp8=Atji4;3(bt1#ED5C)RW75i<=KI zZ;ETT*CT0|F_<4d-z10|8wMzVrdi7m7t#Y=!_TdTa> z|I!C{HWs0&i1mPKC+tN`xcRVY$&%?tHEqRFNh3}*vT7lv27ab-9j6lO~Y0=1k)(iuq|F~45(ews*}UU zAWAkD+hLwN0%5CQ`^vW`#OE+F;#@Ib=bDY2MaV*15%s32Z4-+gm(%P%9cr<$O!Jwo z7Ej#^uJbkZt3?mUbLBfNsaKJb)`zI8z7`hsF%A!9^_AERPq8CR`zG(NeH~rfHi;MmP z{5*fE{yRMN2lzkDBz|i9ImV*>we-(lTL1z9VJ}^QYLCw33(W+yT&tq%g;aJZlb)Em z-8~R~mFjD?+W?nP657b}5FY}Zyg8_H(|>Lcdgdw6DE^_b=f2qe0e+4{(SL`l{{TN% zKJ^FqKLxpelj(mHO+a{>Uc(>sKfd9K3 z0;ZwCY?$EDOyOk!d-Yz#p5hBHO#wbGVg5`eXPJpFp$o-BTuy5)vWp+SUJpV`u$&t% zpkzK%5Ks97=9oG;5a1FEXY32{`yTF@M}LXR$I(W1gP~lKlG*$&<1hH#o2{~+^zROO zO&wy%c?Y5A4C8WR>=Ej%2&Rx-xWU3-tl+g5K(9|WVeea#27TT0q6uXb}Q zlWsg{5-#XW(Smi$TkKg+P-@9td~Z6`w^Pht^EH`aW`P6MzG?4;NrE^3u2-yn0EzPK!~YXJ?(OxPDGhPfJz&s4t1<>6Nn130=gh=r>C(iF>4Wy+GyodJVZ8+W0 zNw*6%azXW2RH(|moI6Okxj^~(QInetq{i8 z;^y0j5d}l7fdtO4(o7`N<#eD8bTMy%IQ@Z;< zDVSKM97SvyaK#5dt`nyq=AfTeCqWK(LR|$CI%H9pk0f_J{WKSZBzsqiV&Y_SBT!GU`H1Eg9nAIu-+UUawWUNxO>+LNpmXeayP zE=@kfnfrqB4!!nz#f=`R{i*2Ybg%N{P1%7pBkaRtd$>O|FH;@AwRbEk!-LU{s2nXEOatF8aC7K)C3xCsGf6qV(;Jt4?`RnKf) zt-xZ`t~BKGQ;5G-!jP?9twf!-kp$$DN)iO3bB}W5Lh$hDM_K=AAv^FEl+hqWF-@%X z9Aj*}OIHn2cD|{+_uXvhr9G6}+=-+1E87nH=iv+cN}KL(?fcvSR-Ka7bdrO6g9!s? zz~v$A^$mW8;0H#kxKa5RdE9NLicQ@~eUv1sDYb=m{m5k*bZQoOwtD&izSY^U+ExV{ zu0Bm^>s8eoUrY#za1%;!NBu+9)-Ho3>NL!FD(HAawg}1>&>`!MWU-|Ax%fM1$?AFa zRl!WXlhBQ2wa3#(Xcf^pe5k?(ldlKwUbT7B-20c z-x@f=E5B0_h!YD4P<-uq6OkYd1B{3043q)D9hXO2WA`#w`P7qUz5wcfQBMg)Sm1fd zEzQRb)=$P}`O;fD%J5bGK5=$vnPNW%&1FjD$IabqdK{}XO>AY$QE>%p zNNe2`PTyh6CNY?b;8w-zGW`wgomZC-dKDSDWDk>c#WXZ!p|2FD%UWA(luc=N?!mdN z#2CH#gnSuD_@H(4FiEC*&{W2_%De(SU9c6CF`B2ARyQtA8u1YhrHhkA@8qg3YMG^z z6pQPqjb1QC)I$=|n%6w#Yo?z=-A_sJIcF;V0e%jYc7KPX{|;CG0e)_K>hJK?FK~28oNr>*5p$p4KET9&}1O{s?}^>U~i~Om*D2Ns1Tz?owQ|=4Ze!b z8#eX*A{8g@FILHlXj>l)?Q?t1?U3pBa0hWCe&*RZps3;19=$gQn1(#0gMY9_{7)mW z0lSEZau`Y+YLnS}L-*6!K*R)2OLl&k8F>ec(8j~oJ~K%flCFBmQ(2~8l>ObK{(sz; z{x^4x`@2v4y1)BV>HlwI;o0F7|0>JRpH})VS$$mQ+GD(Xh)h1dv?V9mjc!|gm)XWv z+bYWpynrP7-DNeB6Pv0`s2;rkOpybxirnMq0fQ*xgZ7tP_0C*;t^x{?A@Z^^dRsy? zt*K5N8Dusco)D26uX82@UQd)vSM}@ubM*+HXO1tZepoI(`tMz={sa6>@K-U&nD^8`@mmi2kY^WyR-P`kI`kjc-?YVA93Z zSyN}#q)E4%V_CC0wADt@uFH=Y2rOae$Tmwvc-J1<9}~+un9!%266Zrw&=B>wPM_tW zh1FP_dp53xCtr#(QP76z?Q-p03QuO?>FM}W zVDvSXla_vMt}XYQgtOkBG&uVJ*UL)OHo5M=k!PT@J};b1SY~X2*g`{C=3?)L*G9xV4nqy{zai`%xKzu zDUTE3f^T@Hqg#i`TBr=}OD;o;L6ok_E{`F%ArYr0jwo>kq;gJc#eW7#3j$KJ64 z!MQddl#jD5oO2eqNjOV!lb`2av(bn#f+HC zG8!GhgqMv(N26`XWpIZwn0yg}Q^_L6#}R_G_6N!_SYe@$@TVKH4Gt*cMPZK|N7nIR zI>STA6vRc95_@g#{ir(QMQ#pkT_(9G@d}e~82Fe~_JDKG8^-ZleKgF}RSWfS?;d*H zQQY<;^0yOlTE=H5$vg9psWf^LO>#`)kNUrvICx>s_>3!sB3|QUEggpw6|&=m$9;?W zu+cFXt5a-!L)o?K9($_ApSJX*X7w*}mAkkxP)bY(Fr4e&JB)wG0PhlTGrm8Gh_62G zD4QT)afDb~cAN>k6})cFx1vYqv6amCkrSGPJN*8lSy#TH34Ku)5)2I{_zL8{0}COT zx5?qfXrS*$m-TuV)E zo}Zs|EL?(cRpLKibJR?TiGzME_Il(91#8(HcV;)`hbF&nK>`&$xG_+)zC)UqqD>T9 zTg0S+SvrDguoh+mc$^4Ky+&<5vmoz7gD>J@p~>~4B#!K%DSdhNO>Eiu9h7(@7dRVt zr%N_Kq4e!iIk0g!{w8~Dl&d|WQ`k}9V0v4$zh>hDym%!obXySh3CGptFofksH^FE3 zPj^F>dtPL?86A0|2{W+c?{8^!j=!u@KP=Krv9ogP=N!us8j!?>o6;7#R1XAvlSyjc z#A6i8?&e34KU$~MyrpZmwo{o^lmB{SRM$D7xrLk7?QZ`Zku7+hcq;zgxOTt5dA1hC zJAm)Um4T5E7jA67zZ`*ilD4~_Tw4MD{_wL42I1pb{giMfrpW6OqGr9%kqc;gL1tu43yaCrYoSi^+-|uSwE15+9(zncjNYui&VUYlk)iC8K z?wQP?B?9O8NiD5D{>S!vX$i5EFM4wY!4P5%=k8A$07E?0Q~gUl|G59Ne^31aXFgbi z+c9pYm=sCc`ftobO{Oe@T}R7BuPj}^E_Cmr6G4|ry?VFx8rbQ`f(Df2Vi|=TBI+Hv z^nK$z+zLj&$~+zGdf9ZG4b2KiUKqV~@GAetUg*Hcs z5O1Bi_prUssCybqfXb()N<3C#c?DZ-S7f2}rEM#|7N8PJn3Xlx0%2cwjE}zwFM>M? zJVK!n(eAYKtRoP%+;+{BAw_oh8s`o1fR=SR7?Md4`$Qc^>52K(FVuc#{@XG&)wVgP zfZ`?udd9J^RQj5}>ZPrQcNzxqajLbq8TQI&AVat1#}bIyq-rsxyrupTJV~O`_+i08 z5ea_&$Jc)6?pCFEC6Z)h2o?S}g^+eVC=14!hfh5^H&IpH)7bVw)RI#v#{eRx#Fbn;nip3uL_pWF} z4xbUIf;7S*KOBZRqsKTlA52>BUdUpl^;ecZ`#je058A)YBfj(UrUz`Yle>R`+#kgc z*Mvr6Ru~yX9YuoQqVdB0XNI>w{enXv5CLc>=_3b9G;#ya~X57(pPwRGe_l^r2`9 zMg`&_zX2`;@tzMaMtPItMil_vU42)ZYE@pk(HON~xe`@wnx<-u<*KnOKWrZD0DDlC z9@i}2t!cWQ4jsUVsJPSJh>`J3@Xq6jpyDrfO*rSegtPt7F^eaZslCBA0g=iJHe#w?`lxVH5uvisMS|`2qa--&wP(O52W#%nUh1lw4uW!0$uwFa1qrrW zJT@{1ErHN+PA)ROYpanmK0%uTOO&_*>lf^Rpo3vXf{llH<^^W<#H;$Zj-M9Q`lT&M z^PO*c(W*aozwwIVnBNLqncq8)6C5Lo6Ec-@3yAbRyl^|_Bpc^zd8!R$^Qp3_Un=`Y zr2m-Mzuw_;!#a`mFCDQszP$0$2@da@j?>Y&3hEdt#=$}C-K80H@)sA9xo)eUI?t{K z_tYMwH`{RFEoCAxlzk*q=%=yDa^q{$0}bnj`W7D$X?0>9sBlhni=r@xn30&p_zqzA z2>hj-ATdK1xW5s>0y+N9y?nTMoyV&>R&|{u=i~j=ys+UmQ)bX$rk-_2QJp0V05A`8 zk^#zYCSz?UzJOV5#U@kRrHvHP3)cDAPJ;Ee2H;OGagMm{mek)NM(^tJ(VxFAvvgsn z^auUljxmQ)d5uRYbc`Wg)oHTIQoer+K-USXc&!~{jg;(hR7Xc{GheL*{wjNLbgOS6 z!MdotuYVYca2M$|2DnR4>-49bth=GyTH4fX$)!ef)UPWdfkQPmsVn z=Oi*Sw6|zhUg}ieP*70sV3T)@{W@NcS4IFa0EcRc=q6y$iG|>s=KbzFJP~#Bg_$a@ z?^C%JYtHpX;d{oKVRo2(TefMHTvA|4IaJ!B(=oamq5IzVm&8IVx{+KhSV-{C&hmVm z>$geD@Ai#X{Kfo%ceqBE+27+_m@FTI3|QH>T(DM`2@nm7%dhrr5U03FY_6A~Aj{$X z>E7hCyr7%GDyNB|GB{iBU0SQOCaBVZeHd)2oCvvIhpnkf#mZJyz85*V>cU9Kjif&e zdJ^33mj?go&vPb?{sj&sD)7lvnJ35TLWaf7Eb_KGE6QOXGJ&}W zj4~Y>rQWk>K!WdJLLloBTj|f`xx~h0vlR3Pw@2=dENM~AVkM*iC`;=3BtP3x^fW*$ zfivV;PMt$;xX=J&83|4Zb)P3pKU&o^#fDci*>d}1Y4aig_>3G;q`?r6?!D4i?k@c{ z`PB?jD_$|Zw69GHHX5XahU)0oa;j^u{mq@(JbXUg~1YmN*U z_kMw>GyKh#Q&`k${WCWPo~9Yt)<8G+54%2xw)pB_Wb$I!?mn{@xOJVIVlF8&BtW;O zdizLL4aE8QK?!Q8rY3<9$bcgEVMZEM&tN1V-Qb}!d~uc#Ma}`y*9*b9=2oQ%3QzT8 zYrm4#v-8k=|K(rPr>S3>`NvpK!Qp?lRQGx~y;nr$*K^wLZWpXN%K}Nd1P_KNR~A}! zroN)BmiYFPN<&N$Ls1`6F<7Ba!wcsv8!sI)KgUG#5DOR<;Cw!T*5@^kV+DJOuyYPi zoUf#gaZ}NIY=T@MF!W-KiCwl33%*UJ0md3-UNwaz^qvn=Va~kJjH&*ZxYRMrHBoxQ z$2!Qc^V}Ub;7jWCZ#mr)rZ0@3%j`#^kcmuL7?CL zHMi_y zA?K?KH(j$=M*>BoY0ZUpRAhnB57ls?Q#BXn!{psi*R*fWzpq<=9P7egeqy5d2NOSy z$N$-Gf%6K8ni412BSa_W8ij|A1|JUxc+`3RF!vF5Ri2zm-L;E2!CIUj_+!K9f+CBj zT~XU$;I)By7Y?M=ME=|+P!U^}XOMWlHfn?oV7!};XO!K z;rPs(1jn@ZuJMWSuVd#Qr+#MqtIxa8TW*lAQhlfNs+j!HAw+i@Gf>r!#+uO;s{i;C z3)kvdtf=0ktE|*AMXRwbMTs3Y>tP4vO@G;h?Y9+?9O1YA;2gmuP}2O$k0&qOuI}eG zU^f#Wv*m}bBtVp0>vIK}Rwcl7;@@o`1PeiW%YP#Q2+dn*?2QSm#ODp~zw)+G8TzT~0;p$&t$0pyp2*&V1 z+A|~_nhNx>V{u<@Gn=D8;M>YM#ZA#@kj6JL^L0D01rvlShEDE<3Ehvp?@urxzOF{l zKT86)^FxyVtpV$I#eN&~|G>|V^LNF58%Y*SUk7IU!mx8HmMNY$=pb*N%=#zoo}2ki zyXx*+esh9mx0dU4HN8+eV2I52O{mWsGqH*j6KS_m9jkOmG@OBdRJ zpt=$DQq2QvpJiLvzzjLc4~@)-OgwT8V5XZ~r$`}w!|d58u_@2W+HpViYU&r0{X_oA z;QtrhHfT|-(WEoN0I^WfGUoyuwi;GKTEe7-BtlT0R!L3e=bjqWs)zPDMpH61ZoH5X znd0zoTOIj!38D_4=}pS+kc&M2&W;?_2Z1oehp2E|*;^;D86cB1JL&9pG*9*ENLBzK z3MCYmCwz!D^wow4kTy1%ZeS9l&X(?R5o+94R+Pns7;`MXa_ANiVsWu4 z)W<+VTfF31RYa>Fs{Xb=VYRwfvtsw%lIkvyRDh;E49KRfZ^|EFI%?qURA*`h@&md* z&7LhR6z7zNA>Sgjpe>j07kj;X5AL{|+|{|c&6V?GX1+s`#}B#g{?ruk(|Ygc83PLZ zm(c2CYr;tX#YQd$3m`%b!@NWnbYIqdi-9-tci1UHX06w%lWZkuQTogx8|wTSjH%zI zV64n=%5xYNx(wbQ`VpW&%L zl>R?Df}h&{ZJF_V*M7V4_YeHkwckd`zrodiAokq$-+BMfCb7S_{l7IQ{8Ra}#r_xV z{cO;`^ZvgmV*k$jkM@2x=%4KU>@9!i{eQ^b&zdX#)fIo61N_7Lxpeg3OaF=Yv$y=i z8@M|lnAdL8ztQ${jH*)Ytt)+T?Y=5V0v#dG;l+&L=RQj2X-ezItR)RroPxkzV-rT} zR@?GAS$Sa49)L~+6}5pBig*9dS%MHpo&w-SBIy;nX_O}Lb*4Tx_ZdVB-6z* z<2|iQ8;t4J2Ko3-(`}9Z`;i_SdS^1bdtYl0p-Nqpss*UoD50beGPb&faq+>_2#~vm z9Eq;hYcgABkTO7_ANRIMyUlJac3JPY-tiVM)!%P?x;qNPbDep%-}m z{oX;~ZgLL@WfHWu-RRaX2plEkS-=;q^R$UEPqN1d2GB3aDlcuIiqv+&MB@>ZG0&q$ zDd$j_B~&@)@+|+=67aXD9L4nC`u+GX4-+lbstj{>jr+g;1m$?TNb$Fes9yCne_@-T zyZvs2@3V@v=j?9x%VqyUe*8S27W?CXdLA*=zm#rK>>HqPjZQ~4NPT@HWXI|a(0z-L z(y`5%^CgM3kvB^*X^))8pH1}BRA+E$>g`tY^;v-z*xYwB#|X((mG+GC1|@w`yL!;cYJT)^bz2a zFQAi;HHz>}yeA4}=`bf3%$lC(SzRjH-nJFoagIT%d4VZpIFVlwf-G&uEmNS0g$Lq- z*St`Zh4=QnMuy3IS(A;uS7IYPUiZV@?yOW`to-|e_zW65nTKXb!wXA8(pm+wnc_s8 zZTG54BGbwN%`~x$v<7}lB9BBLKE9UQmEZsovv0?iMyay?h{k#_H^VxnbfnqA*Up?{ zftV=hl9l~^TVNeM)@=q~b-%}_nv=}|88QgkWP99Sk7uOYMGa!jVFN;s!Pl{D7lGc0 z64fZCs1tmt0VaehKLo;`V)S7H-(=rQ198;PA;1muI`x}3mt?4Bvkh9&UWnT_nrWZy zleoG?Tc=7gdOmO{LI*FyHm*$dX+}T6GO-Vrpm?21WqzS-$uMA5XgG$;`ppP#`7D`u z5+)mSvZSz!Lkd9i=(co@fIM>X3j8`iPz~EoqWW-F7uVi-8greW)=W<10$h*J0Ml~a z;`cYx>S&bh8emZu9DtTr*WBUKyWZnly|#;vN4z|#s<0xmU0ttC*qkmMYu*R=kHBqn zn;KMy8hB~(7^5=r%*o~{M&b22I)1(F!*2{fCegD@qw@J8|;Q2Pt7Zq~OfISk!x@NHDQ$t3^*y^a7 zGY*`afmeD}VahPKUq zl6FYpBL&RHd({bZF~(4Hk=1Eb3MP$szu>7*y$WaQJ67t`^)7`Z3jW)5B%bwP8A4;#2;NShwuplangqUHL*+^v_wA_WlEpJ z5xgFOU7A2BIwLVZpf8bv&jUfIe2C-J1xIt2>ytkyD~nlD#q7m(>c;frI7b>w`OIM_ zZL(jok};<|gA<*8BYWL_kMSOHn1-%C4TsoVUcuEOZ?7iN-<4=BiJpd$JD5tx{}8G5 z-J!RDNd!VH1&f@7=J{5uc)blJ5!oag6$ga+fdo#CtiFT*$U3MW`-wiy+b_%p=92cM zG`Z|`tcOXq=r;JRY$az$Jufcg^n3|gxO-w$6Ld}R|})^`up$`)LGUn017u5B)!Po!Yh%|TQLrsK8_#yX_c*xjQa9%xz_ z^=5t;Kgb@;#|;K`L7^@k`UJVi7(CwKW|l~5QFotQA}atw7KVjK*=9_(xhu34L8=N= zM`Fb#5Pax9x=46U=|)#!IW`-1xs%)z%%I)YEtAPpPNV`?AvIRRd|Bqr*$_UIXHdhE z@$m80@!PNA9IK?%@=e$^T*n5+_O}h^zRYYkIMg&B(EFeM&*Q zBW#bP1P~+heEW|VNixf~TYUAAB;WY50bOjxpIF7#3Hx8|k(gxFbZULAd!y@+oSxn^ zyPk63S?77r*@JJl9Vlh}aHv{fTsn51ae=E+ma@H;?Fsv_70py&OmPQ=%0<_F4B{QtF4& z(n)vu-^w15B8IqiyK8JNfESNF4(GZQNSd8d=XuYGGxaEJ%#U=0?z$4>PV(q%D{)MA zS(oi3clsw*$)k`m2n?%ih$~Fq77Uh`jCLMXN|r~xg$dGV*CwRSMuxy@0#RmhyM38o zV+48|*78;zqgqz7doMjBenWC=Lew#}X{r+~7_ne)^~_8@CJaUaU<+&}=aVLO(E!Sg z_XbS@BDhchS8;qp$$kPz&%YW3`ywFVQBq`7z0lqcce&ZA#z}d51+?ZB1fYnR3e&g(sxb;vcS;z~9urW)!FYDve` z&mU9~fDO|akLvX{-+vzsnT1)k^#hY`W7Uk0Y+E7o)=PHhL~z^8ukeG#(`}tEeD2Nf zQ1l%pM0y6PwLsmhXF6wYy-3IAZ<`?k9JAWJUnGI%4_T^-=*uW`et#%oBUSz8VB(0e zGAMax__B4vA)Rq*T%)qW90hE6dQop@mtI}&3+3i1itIb(yPgNl9`Q4O0)M3bAs$BO z{GgD)9zRfa%*i=ZDh#Ic44R=m7GN6Dm~wf}Q2vdhroa%rP!~o%)+1L(!q@Jm>Zpc` z5EYK^sPdd6d3b`THpb-Dag{^q&T3;4^6QsvdgNJ23sG!d4`A&j&9m2KhP;dSkAOT=n0@p94Z7IU}m#EDlG6FK{_?)re76z~#}J673@kd$Snw zt}fX15TbctkN9HSx<~^e=xY%CJl>s8b$s=;q3TUf(Ar?G%L6uDM`d{&DaJis}=XX#8zd4WpEaQ zgA1Bs-nAhe1V$6g2w#Tq;bMUzQGQfmX+Js4O-T(U+U5Qrmq7aVG;NbxcAf(xvZHCe zufy52MRM(e32kxyg*+R>dZ!CxK_SZ}gf+1K77*-a{i8Si+kLrioRG34mqrYpsw07d z_VWd3k8m!gxGxgKiOK*#J?Zd;`6pls0m)(@^`w_1v!>y7NZZmaON@_hACt8?K*Mrt7%e+48)W%;a zbiAiY>5V~IG|c%3p^^fL7YqnwWkTW#%4R_lKO|>CZ9bZm{fK51U~0S%kBTiPN+uJ- zrN;Sg>T83OmycXFac%_Rt=PhVaHUctO*_~v11_~+^SG6A&vJiuzk+-EgKE&x*V4?Y z&nM#5v+Gew3uo;Jaar}4UYCICPyFw~?*^f0aYa>$K?ggyj)CU-q+qNQxwd9-%XdOR zOuh4Jicg}c_r|`e9>`Lz6{{n&U0MRkmiem4L{fyZOWS|eBpPKMg3d3$5nrgrdR~W3 z{j!q!w{_UnFYp_#Lu4p5UlOeBB(VNLj-n_`)vc9=7x!r4sh~d=a9K~a{2dg1aeRMU{*Z$qU`pfbV-(3vivMjQ;o*lF{r=Ra zQi{Ly=${Th?S_5dAnok7x;}}Y8&I?Kj)A3%C#UbUQu&{A#6ycB$0h{ zxHYNE$qxkweyRP|2xZQrbNi51Hy#;?{A$Q12!608%D+AD{EWWHlz%pCrfG4fE4b4= zkiL2l?}ti|%ujr;erfY}zVT>(fS(u2On-+Je}R89Z-KIJj_#eHx)Ig)V>oqdEvzh6 zNr0D<7%p*~321T~`nU<{ZJNCN%(8Y-(>Y&QdXI4}j_Y}Px*x7Bnr{^cIqT#wVBo(* zx^FlrfkHDMP)2f7k(~`d>`-G&R){i2+2Hdh0*D%gx`|(nCV#ADwuY*-%=8vvhLpyD z9+)s9jj8hpv^_r^(Sc$d6YG?J|K557e{yY5>LYu!DQD? zn}zc-VrWgke}b3u!v41KBs|D}9ig=QMI17Mz@WK*w>H-_djjKU`*g~!oub{eB5rh0 zO0V1uS#t=q^qSsaQwg<%mo8i@bek8da^K!CS>E`qe9;*aCX-l|1r;p=k(9cpUO;w; z>kpzMG}`m%tCD~@E5(18VUU44jP+JLlADek1juGh)?D4^nmZ~>synkHM>5|M zfQ&0z`GqlqekVLp1Q+h1_=bCxbgd-;6&nD!0F@D=Ie;x|j>AMU4&`Q`Q((sWwr$(C zcGWq(n`^G3`LOEC$?<8&2s$6h9f)>j)EMmm zyl&gs0#JJz)K?VCb_DIoOo_vfBWo5&M*LtOW{n_gH{=(LBO1(lFp+4T{4O7{-JUHQ;C4v_Ql$WNEye+aj<*&ts_$&ty)>3wT+a{!nnGly9XY6H|YwB$#WBva-T}l65 z|Ib7da>yN_PgVvpk;;YRn|q%>hwdg@%$>joQ8hf&eka@0&NM;3nRge+(gmZd@+?LS z5!2NN0|0RD#RtBm2hilUHmj`p)Yk}5Y4J@=aQxET&WXpit-erAgUq4SyPU3kywvNd z_iP0F^t-16UZSGj!ah#0@+Hm4zR}{vRF7=*Z)3iCGM(>|5$t$~VTcN_e|3$U`GZ3T@eNJj* zoSEMQj5BB%;IE;2zdvBV1Ursh{6`?qq(ACnFxQjIUk3{$Y|Q&&oj6pK@e7`ZwVkVA zO3Ii0P~9F>qK%@<;2J&P(08fsDI#OP2m+4T4X&oVpU6vigTu1-4MFnqtOoNdILXyB zJMtQ@_Dbc~M@D=)Pgl>I8p%2U3pQcw>qQlkQUBOeM~EG zC?J)(R2t7UCdxvtv^Cs}1AX%2rsTb7#YfMq574V)b>m~b7; z$0{L#!X{<;y5Aj5xG1Oa=|cae7R1de8%~Ag7zs>yPVWWpH_i=WCDAG*JA0rfyUYZ! zp?`w`vBfOs?9*{=aq@Kbt7Ots;C~_>koFwxqqkhsdT8Ge6rf3)u0xc0)(C#=q@4vkf_Pk~<_bMXjn>B7%JBl^t^fM6B2 z_|;Hy8dQ=UdJw#F&4(G>!pLBUq`_FimQ+!@4eeU<T z;aGInq7y$wt_na|4UPazsY^lpz&xW^$b^IV$itd3(~=L;!YE z#wJyQs7O|UHli2B5$GI4rCht=UwZ}WiG}LtbDx<#uk2mFulx_gkNleX=km1N_9*{=&W^}ah@LaW+iXYX(5v3gf-^XQb^3Y=X~ z_f*lTmzNlov{J7o;8I1YD73D9+R5F$`B$m0^!xEa8B5^8Roi8a(dq%ycq<( zF393`e~(yLVjb0*{g^psGXi`OE9=Cc3&CaJb4f)r(0Tb6 zWBosfXkgcqkB3`^BkwS*bk3)Mv$;N4Owmj_m({c7`jFHb}}?N!DE5R5$P* zp^?U{K&<($b1TrS%n?-8qT=GbEW>HwRj?>*S9G1!i%ra9cF5P)Tm$oTBaLZ6R=5CW-)sW6sX1fH^xV6YMu2bJ3#oYss>61FwOfvLU z1J+Nr=`tt4=%bcSc6beQDPgUS%Qo3HM0O$a8Y9MNM?e7CpxKnoji~mf#-i~yZ(V2y znNFcwl5;r@&XL|=3%nyws(f_~S4oU%c9t~~sHo1{rbaq{Yl%qE5@Y>rGv5mNe>b1b zfCfLiP>Lq6>wr^44_!uY*<=R)$+*Kr>WCUR5mbkwOO~S*5TFsZwo+6| z**8D;1W^Qr<_U#IZVNTQZabnfXY@+2GWKd5KfZ&m8dQH{Y_yEJB6;8Wo63Tg6h=Ph zGgn`s$!jJFSL=KJ9L(t7sXfJ*Xh0yf1~}`z__GCCeAl+RG*d(z6wZTCJXj*8!m{*Q zzz(Fur`0YlfURgD8p?*;nrU4Iw-G zJS?z)6oVK(j*GN)e+K5!^>%G!tWcdyBv(hI-WI;(-PB&Bqa1ugo~?h`xflYWo2K3=6GG+ zKiChCw|MI}mh7M)8AEh#x@b@v29M(Es2x?U&G+;l=}x;rbIeSllbWaSjx~PG-z^RT|vi}iHTxPL>aLjcd~ntai$gI;B81RtrIwO zfOq*tz(G0h=Pt%4|J0voTwzyaGa0c*S`{PPrqKw-kZdNy^Z_`Y%s{W-YlsvrF^Tcf zlZ!_Bz^Okag{YpjD7GRCs`{2U^J^jE4!K^HwvzkM(6jrG@+QxIva@;>KCc&_{>aaG zb(LKZ2gLWt(yNTTk{4ZaW=cYF%b%g1-{tD|>lwbE;RVTAbud*41|*14lUA`q=2t#$ zr1lbwak1%kK~M^dKhtzAh5U#$h`7Qy;i zkLy`s$AYTEoK6|5TNI1RPQUW zj#q(CPkDfh4-{LR6~|g2{B{NmwxrQfN}v{YZ&K}6{pEfrSQ=H6uBd$l0wBbK6E&I0*dAxAU}SaS)Vr z>jS}l;QJC=?<&4J*F>odWUT6J?MPf(nBdPjg8k4dj2zD0~!b5X1F3v?R%}) zsB*z3oMG{)0Z(y6`*_W-!KueIveJ?ZvIJwraI?^3eB0M(&zSV=Z&05yfGYX;`;>YX zgV$*h{I(}+(xixur`=CJRr+) zI>>g@#@wYy6T+ZGldS20&Nf?Z`udw2i8c)pQp)_pVFBWnyl*qdhEaod|L&EnHLLUa z0O~4mmfm^8N#)<4Zqgu2^GR$oPZ7Oz@J9jRrzgHk?A1xQQzfS;Ifnes!`ULy6yiX% z*hF#$p}F#rUpEY9sD0rU6nD=XAzO>)p*)Zca{K9AykF@3Cz9^m~s{a?f@w+RJ3h_m)7XPg-)e~y(|9b4pCz7<{`DDwta;Jx3vTy-5 zZqz{ctT$htuR+Aw1@PfN+3*D40)P$}9zR~~X^4uZ2>E861tA$PSz&PQrs*hX83z{! zLhC4I?bO_>ipRZkyA@1%2jnh_5H=rF|k3WPWdGaHqc$ z+MEDjQ}LGx(jkVVHYHee$hY4iV6)bHAXBBu-*;#zhN-+PFy;L0Pz7vaB0q#M=q;l} zm~FfuCgHu?=(}RlavGTu$v(PW&dZZdNSU1J3Z%M&=DaDyLj=Tnkh!{ce4}vZOFpEV z4bHyehXyc1s{g=F?_zGW+GFS-k<@{M+)8U>tukJlF{B7+6}kFT5;CL`1Eas(bSytt zqr!e}zeiVXOZ?Sk5H_3e%XbPx=oQs{PIVxDJ~a5qj%|~zdRU?YADKOA#g(_%G8Jgd z;1*pEe|>Ph?O-i>qzgdUBNW-tZN2LFL$Q2}tM{)=ZdtkgFtOf_af$@!ex0j4g*=J6-njlYU~{jFFK%v(q*sGad|^dnEVkr zA7Fv{Bt5w}mVGH47KezB0iEcI0X@PWBUi`32AL*lbl%(NaQvilU#hA)gDm5U?J$mv|(o<$_JkuXwE%rT?OW3LA7Ovh9(~990Fgab?Jzu%+*t9wYw-Z0o3*AiuYy}z)a3TvbJj_?{4V4b>w2fV$r@5kl)$W<#r#`bi)+*c zDb`#AI)NYbr6W<$a%d2XtQ;zLd&>LJZ|i5`Mi~4Bt9M?`Xjwq;t!jf`f_Y(jHHSto z%GM)F>@Q8&THo?~$tKN59d!xHJukVP04Kibd)IxydC?+WVm(FKe>=*bjGLY9@?f=C zv4-?;B*gUJr@+TW6NroS6+;lu5|u;r)Z0Zn>LpDzweqt3=_Ki>F@CK87awf|V2pZ& z_0+bl*v87oGN@c*Vhwl!n`~Et;E{%&HXt*6JjS_RAN>50i+up{VkHt%@F@qyB#@;! zC9nAs#1AKMbea4{=~`j#ATh~VR;N)fQk)6WOm8laY^R{$neDC4I*lK}u0GV?BJMT+|91;`KPOlLxP-e_u5!B=OQ z+IF;zo($8A!-3w{0sC))8HuJIIBkB`RCG72s5y$~f*g`Vs?%tK(=s+8&DStuYz^gpzJfxQ1yM5RjomrihaWb+rop2wu&>-V*lt`x_HZNPg*rL!z)ax>a! z2`N^lI8cUruJdrI6+wod$027pV<*mPPa_b1`u5}Ld(N<0o=fMy#(K%SU|{#PB;0Ov zgwnI30ad7<(?=|R#QSO6gd-w!LH|J%Q*Z3rZ3>b;P7RjFvORYR@26~S9))3o;wDfPgC?Z}_x zlD3@eB}#B(WQ^_S`7xtkJy z6K5D(YgucY;;3acG%bWKeGyM*vzns;D($F%`gY(_8=V`FOw0O@-DfP`fK7`_bi^cz zD}4=Y>cD7)f-&5pmkyGFX27f-yWZ%#_1vmZJ89_GB-@rLqiZa?+*p-S%eo78;`iM{ zjNbZdB!u6UE3X5BD_M4^DsOrR;)qYfO%*^3m*%dLjxy@Ufpgc@=$tcgz}oTBNM< znefiO=d&okaAOGQ9=A5xxjy6S5FSJsNKoUe*v?<8kREMBBRcC4mYeRvkAXgyiEWNf z!WTwAT1nkjbdVRaijyk*0cB}{Za5%*s7LCg?dE7TqnQ3#+WBFqMC8(~f+c@qoN!bW zxE?MmSN@`CY3z1sh&HX>uSj=R@DuXhO#(n}cvYBIn*}uJEzoliq&)wB9#sMw3vn+%#OGeQ2De=YP2!Y8bTkM$?uKa+R7j z@=f>jH3-sxx<~1L4E%9N!O8(5*ye?@5?d`xw_J}$NhHY8=bh6QVFdeBvYg7~E=>?F zPUKXsT>reej5&HMSb{JheZNGp&Vuu+ir(7^ep$w^dWrX{I!u}+ZC!;+e~(XR|C&>g zJy`}?GcG#Ia~_T#-m|D_DjaUz3eQ7oPtu@A;@WC`ZePJ@8kUHuzD76_&_+ zLzJ`%?UP>n>(j%nwB{}i9IqoRu5qc9ZMKu6nE9>f;|slyQt92EWr4ehUQ645eMv2Y z@s{_zbe~TN+cUbz%iyjLbC{s%g@kxn@5TgzW|Fu6cF*Z1H+F|(Z3gHZIQ`(~YhzgI z0++=@S|A)AJ_I*rkAl}C4HzL{9NBc3M@d=VCj1U`O9~q%#r3y3-|-6_EhxUu!+T(& z>nqu50WNqDKr#k+j8d5?$)U-~7;6E3hED>nrUjCD*Ip0QB^5$#T(aK2GuO`0KYu(XugkYGhH0x0e2bnmuRW&vMs#VEuIs8V8Y+ zAwOJ|i2($o&0i)ACO##`6gSD=7I{x(GdBL@n)_GtIi9qsb-G_e)`SLOfQo+xVT`B{ zN5y%yi|#|ob7Qve*Vh~FD>sN@p5LiZc$zz#pFrALan$ms@3LKPT0niK*FQk@DR21s za$)=7K(o?w?%Tcyi|%~L5bAczthA3-g6odBmbJTrgGxdQ^#aj4aOPqQKvgJ{0xY#V z-NH06MMYDFed*jCvI6FBeNJD|u`}*>)1RhGAkMVs_n3E$-8WW_$+3hAyn-TVlj z2OPp0_1^DHRL}5a(AVKO*|!K`6|i)U{_MQuxcUitmJUc zRpf2VHhEK;bF-iVQzqkC)WTv{Q#ESoDA^754p>-`jqE1}GCM7KR1#|(>Xz_zpcm#H z{igT7N2MPuQ0TgsL^1DwG})zPjnQ=RXy{Lix57XKY}2vp${u37nkp%R!`XIM6Gv@o z0%u4+A^Z_j)&*wjE>>wXV6;{$Ay1K6UpkoAhC0&q7nA#X-Nl>LHVIqHwK&^Dp0(M2 z>ZCL+*nw9Q(ZRHYC}M)wNs9aynOz?2xl55<~>6jXui< zRMplvVCC)3aEb9_CoR*=sE!K zL5A%;sY9DL>6Wo6=d<2T@(@3aj~ zv35A?3^e~rd;Bz&HQ)Xckum`5ji{2GWL5%x?e$J|U zn;00|fFzN2dCpU_oyoMB9ibiKgrkea5iDCCL5nP5)(+wH0s@YSpz7b(NPn)L3@f`F z+9-Z3Ma@K{o(2m2*<{spp$pS{JP@np%}wJ2-KQQvUT%JpufAWqy}6A5BQJe+tn8Q* z60U8XKb|pJ=g8e1%5AwzdgBhDBsdjJ@;IM4_9uR9HIHp3?(>D;Q6U)b(SE6wJ0OaR zu9F{gwnRdVhH9@|giWsLdm69wTd(a2LQ^JgS2+xWDhk-+ik}*kq%Z^L{3!)Gl#fE5kNLXOfLr8Be}p?ekj$+J54;I1*wV`8UL zGxx@4d~%0=*zAA^2lHJ5X1PMWlXcx#rKHtpPAP8Yx%{O=RwV(Bdk2qJ;(Mh8<^q@Nh$A>_Cs$wp{82(N6Z! z7g<84dsBSBHYw?Qo7^$@_-C0KTL&xFJS$j#Mb6689Idnfa|Vyv0np;>{z}x<8+UdN z>`V-!?Ru_kJERQ%b)l;nV9Kp_IEx1d1+GN-z2b(EZOS{*u-SM-aXTyew~C-hzH@FJ zTjBh<>GMynBP_UN40v0rJ^6@un%8a7e(}6|vwJ>k*j;OMO4xF|R1?*6zGvL|d#>`RyFcCY3kU8<@!!@l?|5R#~pm^ye*!a*5f!DK0$pEDc z`+OMBfOzpyO=ynN0457i1s4xX?O@f}%}}~Vubz8jTSvGsHv78V-QG#9DF|ExkxM4g znu&ggxcU(Xaet4folnb?JpJ1SFlj|E|G%B}%g|jGfSe(oP}{Pb2I||tICC~Gk>IHC zu+mGu+nt;xu(Fh3RpB%~#Ms-1gHFi^lopIu-wqDauOQMI(@^}2> z)yJ@zW#k{P=T~y{@kTq5n>RB;l6Go%j0759a4w*2L{crUW>0W{np;o&ab}D7PFT3T z{UuD-ey$(le-PUBln|;knpZq&hDHOJ!C60Cx&XfTS! zxGOw>Ut?9QwgC-lJB+JD5u9)$m9@WN3iRgv;J+N*?TrGf=vG!VX=D5pzlx1o_nY4At)v!hT9vDY6Sxtu zOJ$#yWpwegrR>g_MIIx&xJaUOTM44_9pnlSJYi2KQZvK&#(mfyP-{SmrZ)3e{fVf&`xzVS1=8eKM_( zb4L!^^j51jFR0-zzf`NmRFaFT^1OiRBvq=Z8Ov)wU4Kj zpOT9+@4cO84*+LjgwBK9ac7=&x8Dizy7CQ(P!}Z~+IcKafmP=K#d;zq)*L)tolhhK zcBM@rMjF>!JhJ)&SOn9%Q6@WD44xcccTp{Qd4q6sNUxo(u7_E?(F%db%4FbsI8KKy z6@RL9R0w~&DgrMET2AgVgOHGEq%{-_rHHlqPRbj9hcA{}+4&2R^|q6=Mg=@Jd!m z1f-sSbNk+)FL&i?m$BC@&3#hIPJV|(<}g=mbHwnmp+FoIlhfT+lUQqRsrJB_{g1Ui z{m38@fikL2=b|&CXqvLGw%%Z(=dBj!ryPzxiDhDX>>koe-=_p$7D(1BU$b?i3flnzQP^ zlKHF2ptSHKE7L#d8=eciS0g#)s(6G!BE_EuLb=vd0G+o(moue9JL^KtVqT$pHBX=O ztDhSg#~qk(_BfVppW@w)-IYKguH-_KM$!GK&N1Q5yKN??UbY`TLdFBy`uQ`#zxLc9 zP$j8E!bM1R-f<%PdQIa0<2Vh6uC0O4nFGL$2;rgo=vS6!K^``WoXvi?#V~Rc{RHY^ z#WSvi`wY)NbFLrSK9f)F7|6(S1dt#{xoU)$CN%jDm!0W1LpMcf$@0IZU#^&Mr)%39wCpMBos}6J_JhbB z-XGa>MAZlPGC0JVhsY@W7jor*HWy-y7ejA{P4@z& zl8#<~Md)SnKrAl>ojBxESKE{vP{rX5nkV-*H<~ycLFtem&WbD9jPd6$<{j}Kzo`SG zpWF0yV-EdMT@oM(eGk`_fy)`?=68@Zz?obhMVcs_$*hc*BbUgUyVOwl!taMTzCNU_ z{Ue1{K*x_kQ95%BLXQTIfV4G;=lOAtv8(2-gxZT=owDi~?hy%dJkp+=Nr17eUD&c9 zc`8h%Q<)n7;BAMAxDC|L$*AYM_~LzO6%ZQ?VH<{WUYRinsU(xdMtJSUy#P`$&pOq` zFuxPfdG!4FRV1b`R3#{TELw_W0nHM~xfR}=%duEMDX=F_u22j5u$ z*+s(`andf5`Ia@zbus@kMlvfH~eVFJr^O2$6y@r4Oo60FrGas2hFV z^v?y3G56f7&&lr-al5ZWevw0b8K|~`q{^A;C*lC@LgOXlO|e#XXt18Mm3*u)1oX>;NvQJ74$2ybla$!0>=$L;5w zteLw2>wf3M-jxsC899AsJ5AD4LXU`~(bhMwLqR?diQfyywC;zPTxjSFh&tK~*z~M{ zM$q%wMlfWv5O)k;{J0$%CrS!}V>ZAa;C|SRNqncg*~45PkssaaT@I}>-Aq#xN`#EQ zLJmF)qV|g*ncNU_CS0KA2)*w@cemJg10a03N#X3KXx6WujP7wCg%qNBmW980o?PeR z&&*94MjQUw;5TlS?R@C5pBrm~uv^(e``zo^HORkH_nZI7HWbpn^1v|9ce52K^TEB4 zBZ8`r8m6*yZ{EB|8& z@T<$OV$t05d*KJl)etQk@y?mkfO>%E@jA*73EC=Zottk46CB7b^=8i~E|l;ySmqZ=Ja&y)8J zN3E+k=hi!G3ok%4+z1gj!Qw1E-#eLi8a{-0($Rm1Z%>Bac#!urilm? z_P67ev243bw^z!#Y|IgMUDOH}gBMF*aSA4-X-ZBpp$CM2lGsSz-70x<`j>)ppi){g zB24fx^xP@k6t6YP*#uW*Tq_zU6V2-ct09Ktx{DYil(eneL-Bfnde2z4J`g@(w#jDb zm|o!~w^SW`HULF!oLZ~eJP;tbs9OtTN6}#j=t|CGqjr6H@JG0y;`aS5B3uqzQ=0!d zT?FyO^T$Kf7wX|BH(1Bp@?FJmz5!)AD>u`92X&Qq+Y77=1&8pS$N&{yMZ4gPN;w{+ z($OD;&Q1?{G_@b~J+g?Q&{w_=OKcZDn|1fA?Ic4?n(ke3pjdy<`H$AEfmHUHk87w@buYN=R6 zOB8*VnNA*QHeP32*wQD{OYE1>nb!&iGElsR94=T_-%R3JfT2{-FOZhuZ^1qPBiVo6 z;!g2Fwvn2&j104?i;9Nw@97r-;fSOx-Zf@e!*jF@o2N436L4tD( z36S{De0!uF2Ef+`l1~Q0Knopw=~AkOGEbUicDJeqw9eD1O~5DQa+Lf$VKgn(S%8-0 z&!)s}J^tq91VHGqxD1x9;Sz`8aHz1UQw~-k2-~@dw<LZ%f%4f@)W8Q1pxMab0YXn|D-7}RTaye00w+pXRQVzF#{Hhm zvhRTym`>4D1r0y-WC-Hxy>~S=*_-}CX+IYd0K4nsG6QKmj8O@M1tIc?nJ4XyWfL^` z0L-Lwnr4yqT`zWh5Vj{=O)Hwb*K!H+7wt?iHBQ&A?GVIzgn90$CxEH!C@X-={#o6( zFlMENZbaNW5SBQ~oekc~EQqVNFomJg^0WVad{HFbP8cb~Q9pM{WEH7WRB0^keE+n? zqAApsm|5CTMM(gRC>&MzVCzbDn#&Gy^6gY^4uJqdQN5l|KBbZb=clV&G=Uhjnl+uu;H+~QAh1X)|t&ezI+B*30m(@gMbY) z>im}s1hDOwLeTDl%$wsrvU|48Wv0q2dSiReUvZZV-D6|+iQ4VbZWhw&^d!9J3g#Ul z+;&`vvUa|arD8=_G5l7Sof4${JfFcm=Bbq88cP4!xugWIs)$qXlb1Gl2M3zyUUhOK z_MP=Sr4CSu4IhDlXUow#SE!CV#Bp(pB9RQCTE2gO5UL5+SMxdyrfUzk;z33}J*~Wk zc%JFX4^vh!n0$V2a0a3G_))PV(p?jT0j-uMu;M4lC>;^zh%80=&)L zR>QJL9>?FkH_#c5?2U5dl}}9C)yo`A8O z6_+H=NgY*HbknkOw6CJRoyjPcA<-B^8ukYYv%%QpRAJ6xh7&d!_dt2x1EGcKIubTq zeg%mqm~U7`qV1cf_8Kt*W%=)PRPCBqD-)Bii3p%0^w+G(Zq#+P4*zXHkxN< zkZOoYi;I{PmYw^VITcz!N;$QjC3xd)Q0#6WBRwQ5I!_w;V#dnM>v0%8x8JVx62I3& z9;^|m=G`fyQL({10Vrc+)?G=FPXj`d9#c5a*89udilB!BPznOt{Zb4b4|YW8S!7!m zE-$uJM_xbad^mA;5q)zQ02pB9kId?svY)@5dvcS-a~!Y^vX!?X;q)R^`Bb>!lUw@p z&r9V1z*y+#AG(S-D?;%23BUNx$f^BWmGJYIH`y1UiHJeeHDCGFC-n+4nS8!wz9M`~ zbXO_5Re?Tfj@lH}O(a#DR+3seqzIgb%eu+o#*z0Y*Y+i#NI)#*%9*lsltGoRxopaY zv)aHkY1?5-aAOCIT)F~pqyFmxRjeT9i*WUTGQvz;(7Y?7!yJ~x?j$O!CY8Wk!jZPQ^!uwBZq8q2Ca#|Nwsrjx0S^cjtx2+~7izA8~c%hT_ zw5t5)6V5lqOc#IaZ+H1jfyprW0+dvPa2D z?#lG62(5VPW(8>MMUs|Y_+s9z(GT)Wus?!(Zxu8bYBa#TBFt{7;2qqJc!tG$I|y0E zyODri1{#%kIjo;-8zzz-G9&UW~u*(oPh&BG_)3k_mYTz z#?{IcIxAoR;oK7b%vnS#WT?0ibDv&^I{Y-5)&R=6@$puzU%cJ?DT)E8bT)ENY6?7p z%{jw*cN`!9hDZU%j7^=k@z4rs@Manpk&FN$^F-=Y22h zGfZGXtgx}WL%zbJuo8d-uWO4^CbX>LOSAN7lz*`Byew2wH&_CG!-lhYY3yZ=4^ZY3 zWb68h&~}dSi0V{B@M_1a%8T7vloGYpdXZ5k`7~q?eQed)MI@R>S#6bzLFQ)-?NrZp zmCI|S{*E%DQKb;FVh#!12y`Eh3HuJ5H)82~65T(sGL!Vm`ay&G9xNnxkxNs@kjqDo z4Rc5MyV@f$(bpd+_L&BCfD;+cQLly7=7B~#8)Lkg<)m8a0wENc-XI7!fr~9OH}AO6 ze*UMNdl5w;@DJ)jc5SMQao4g&jK=bBh==)A{Z#st6hSs{2seJDtpnP(s%g>QVF7m- z+l}n7kx6JL^5yFS?1c0uNEJ!Pgki3_1E?V0n(m9V%0Y^qk16@gVh0Z#A*iYD^RIFT zWDXM|*YmJmde8I3z2VD?7Pu!KbFVn0KUv+7Y*tNWgV_M_CcZJ%zw0OX&eJI`kXS40 z&8~;pa_y}$A*AVT^Y0>P1&y{?T2tEHTu;trNYuPpy{v${d@q(gdM*px{0mhu1viP? zsH%<^2LK^Y%ne$8MPNJ_)cMHYxfJ%ZsA**&L^5WHQR%nGT8xeKD&U5HH1W`DAw{zlw;R8>0DNdgYDvi8+|@00!omoD|Bm!CF;}Z&fWxo9v7e#L&X~v;rpO#X3vPDf6`OK zSqfuTLvVwfb0%B8!Vo@7v@!{X0Q6-V3VPgz?H%y&aMH?0l(dD^Q(p?Ow#dO{vd>TM zVWZCM(tGa!Q?yE!Q|%$Gb!#~eR=RJAGc9NukB4;^M76&QdB-f0i`FY?VHRle{dYwT zDZk{eKjSYkow|SjzHS~&_t!69yDTP%J4R*an_ln$>-3KY?TZ_)9oe^$fI>jMq!QPz zY+2}%a)MJr**M56eqU0YpmzIu4;&ZjfE~41NLn6n7uTB`02byc4r|==+vws&*+Y{{ z_krPBp0OJ@;)t)j_o`guer1)m{J@52K7c&KS-6Sm>2BjMl?l2i}8^_}y=k69T2jE2Tf4k4tb#H=brH@zPv10VGl7mB^A1GZLE^+jW?pkk?88yyLwaM?1;`an z6HA0e1v8dK{|&JV8AcMVe*qyR`MIa0{jn=q)5NrBGpn7y3J_GRJTM?6u+M|+)bS@j z7CFr3C-x7aZGSeHM_$RgL{vK(PR(#%^V1%o;;^|F7Mh@bod2zi@7%LMDYG}CPjg@$ zcZx@37iDTu%gI_zC&4@0_W@O zi{{lnoQm5lBKXH>)`|}m1w4Vl8Bn8J=*XY{9JF3N3LKx6LgIf@Zd3822 zX7pTk+-R^<*~YG1?A5RI_ec}hKS_)a2#&Iok2gSo+T_1tV(*Z%dqwggx7-5n;PFpCD- zl7Sv?!tj?zQ%?(EgQd?5Wz;%Dj~U>8p;j*}AZ|XK%&KpHJw&+|ZFQzcz}^0`FUOx{ z!OxTJl)-egCwo^ash1>ZG~{vLiDk)a&q3#9+c|3yAtE>-JavQ%Q3z)m3`pHtoUefS zQHBBTA+d(g5mi)hQ`P!`;3rm|av z@K!y-i!6UqE$C>`FWic3=VJh6bt#QwwC-f4vF?f-m><`Fu|!SzyE`l9703Q1EjOOW zW;>Vi7&%qvYWsr69fK;Chc6O8Rr7xb;(#NyQiNdj2#1W$s$ZAQmT^C)VnK&|${ERl zUVq}(V>N*Gx~WOba=idtz2>?g9grCWR>G8deZ4hVPLwhg2G{}e8akgy>EVfAtDS1X z=Aj#{M&c+(4lcQGJr-H-_Kf?)Zz}~_&YnOosFwHLM@gX(&r&5w=czEQ^dl~&&{9Y4 zP&p#b%IkjZLi`>IB3mfcsFJ$0A-L|D0nEM-U^q|u!zQ6R{p5>#B^2%mnW@vP=oNor0Ey)IV7IAc9W5=S7(0>X`sofB<7bIs1KBjTCA(z=5IfC5L_xYA6L|(qI@jnYa)n< z9`T01@K?q?wUtFq;dZ|DId}K_u!$=(92%gJ0iy-7Pzzi_No1F}S&HANYWDAtDOhP3kJ{A>SXmt}!Ys;VGOUM!a#JEK_?()IW2x!JJ%6nv!cQ@mF;@X|dQtw7;a!U4tSlO(e zrA^sAM3Pj%w9zJ!`dKQl+S=+Y>GCz{^PABMpQ*GXLvizj#Q!!lB#cw~&ibGD5|m1f zF|e_*rw#wjWUzH`Vmlfpj>LonZ9L)udHfA8x1P`=(%AiGHr;r;l2;@(DhsS zcKKwercjLWVZPPTGM)uFQb{B?jpBzhr>vRxqDVa)wm;z!y6m(hClAJ_WecwA1#wc? zvzF;pGhfRaD&Pu}$u+>v~I%{>8TL_nr?{QwORHVTZ(X++M}(BO)Y6W*&2( zWLu;hNTdrXyqp2xs8t+8E*(dE5j66a;OE6LiCYksM@<6=xP-%JTC~mY>vgu~{0*IE zyCgR5k*f%pp?7xl0;Iqi$QhXQft<#Qa07i9a|n7NSLN*=ST+TMKn3*2&{BV`s!C?Ix?@p1a3T*A$&$3zA2;)V#2Yl>Q|Ua;>M6aPAd+uyncVn-5W2_e76DNj;Z%Y{ z!jB#4PmIJq-cFN!h6-HvRDk`Qm#vaW2JTOCY}em;bklyfDY2Hx>m!m<$p3)=i(bRJ zaqE^QR`X7l$GbldP`1S1?3+JTOn+qnTcwuxnn8$}wM>eg;eL}<)N_d8;y+4zXn(T; zPa(mh(>Scj38^NBg7F5q0%bv?zVaWrb47~Ve8jx3rI zP>D@m+?WLt=-_hoWLxN17;cj~VWE9z0}G zR2MIHh@O?leIVsMUAdAQYUdEHO|9jy2BvfaQ{=yRaN+qSjjULUwIQ?tC~E(hDI_k` zQ+#9k4ehv%IaOx?@DX9wce@)^N>(BADs9vTRg7mNw-2Ow7YO1-;=l2_jKmF$hZP6a zIoYDt?$82@adXGL$>LX@Pvm49)0l`Za%#SHAb9sg^QjBHQB93Bq5oYfJvbJwbY8wE z!8e?zZ!HurU?0HibGWupQNzC=?|+mBseES*kP39Q5PiJkT&(dt^kef{sm#UL0;#l*G@ZNo}6} z?hQN0zq`| z5i6hhST(zRw6ZgvWdczW^IJbG{C_da{6MMZN4#RSE~aGw6xY}uuC#s?+$qDK_I*)J z%5v(>b6e2cOCPY}+0ONsak+pJ?G}h~S@Y4|(*Jv#ZO7U>0*)(GKj4hYyv!SfB+TYb z2e&!Ula&1OQvPzWBhuGXx8-b`J7gK9(&F8QGrXYZi^cPUnN^t69GGDfc~_8g>D^#^ zb+>%pLch*%rguAKLYevzsf?rHrqd2B5zf;=1#U?Jf>o|||3{Zc2I-ooOcbPZ)+IlhwL7heK<-YpvmIqmUad=zPfZI&V%8J4kn6ajNJZjZl@^N zAYNYW4hks}zeu_Thw!(U&We&>Ar&#`3tqhoH|~aoI4b3z+va#$^68)>D4hOGv#|iO zZ~2__a*F>lxZOEZde!_~@pu#gg3x#Qh=310n#nTB22FJwaf>oauKD}vLK#F$sl@Gq zbI(wvq2Z?}NIGY#|44YAyHvN(c^mO+7?}_RB5FKFEHlTh*@PtH*`vZ&AI&9JT?9#L zI%OfS#xXu?<^xmz17%u2Ssp-Oj$=IqD4b3g(XKzLOe*w=@ShEFEZU^_9)Zp&l_}@r zr0`+$jnGih4iC-oupzcjU_iuQP0`hzp}DM%jZ0g2Ibn5FT^cwJp7hN6$(R$D7ct+p z?G#g_5vc)NmA0gyDATg$7+4u5%L~_}9Opxk9N?SfIAls_ z9JP)2=ewK}ZnliaaLQd3*5bUrUt^nsVTcJ;FT_(65fKv7C^1cv0;R)05d8O#IpV=; zJf|yZ@~>47)}?(Eh{`P(Dp4 zpR7f!NMCGvpxiOThpLHNT_X^~qhl8gL&t7#>6Y zFsd0_1C5p+I(&yuM)k?e9@4bUE5&c>v3&|S#+DsB`C=C^sWbGC(g&h#YjP9x?6osD=|&#ism`=}x} zMS;cTQjy~B4Y#+tO!*59w{#ndfb)iokS3&840$lfmulZ;Cx*nOcnByo0?$cPi(tPy zWOv*^+!|`N3%Q8T{6QkT(r#|+o@T9k;o`YzvZC?JjkIcB30C}C00>ws*SYc zjq2+gEg6gq)F?%mASvGY4e=Fq4>&u*>=D>sT2FRt)==!z3XUMkYK(Bzyh)nk!&K2&r%*k6)CVE-Nx$dti*7MR4Yv2?`_+mAZ-70n&q#3-mp;k-@Okfbu7e~{u~MUudnG>HigyzQ@@m(P#4d9)L%C+9%Az%s!Z9Y z^&vzAq_CF@2qAk9{_=f|&lWuM=qxo{B@5t=JO?{_G8`izvCL%vcYgJhV$X5qfjL5* zPrkKfEKSdRd^!PB18@RpDK`-Uwh2z|>aKzZFL8GglJu5Z$4(V%PDa5TZ!1cuY;ICm zsv=52j8Y^ozXTrqzLefniIpj0 zC;9P%>g4@@1$iW_^Yh_PQ8B5hDMG!7_87q4E9xk}F!V;xoM3N@;t%KlSbmNilh$L9 zhPTX9x+~0i``6$`iO;e_3YhA!2hxM`Wnkz&ugg$nT;5z`77;dw;kD-5c;$^e{!Fdf z$#Bh@|0iLn<&rp<8Go@g|D-r*L&~pcI)KrTqG6^u&uIfG+M<6IQG@2p?dynqI&W+JmCBwC|{W|1%53Pu}-5EjP{)%;FK<{>k~yEp3P~zg1<-1?grhAqc_1#Lge>9VODj5X2fy)Sm=R zs^$1oh^^ao1Y!Py4O?LiPU%dKcVHMQ+=HR@kZnhf4=Jhg3;r8xT%f5h=_a<+!bh5- zKB;fBAmzjmZHiaT?-hX{IUZuXaOdg!3wF#O#NmQhf(`b9>o(eRC2S{C2|YerUB6D| zY9^{H)x`l1(FlqyJN)TqMR1QdJA;G4Hlkf5{h>oa980}(qUczy9`Jf<2D*OgiiuKe zbD=J|W!F!D9+UL(5Ed~BXqyk71-<9<3`>Cl%dZA|`7ySMPSGpTP!7YjF|KK&wSrWy zn0_ydu|`Acz&FtGpH;#Zlht^Vs}Tb7inW5|^T}|Fo`Z9_%Gouy1VTe6Q?VR!$laWI zGNmq!u3!L1(#~+_Ei`TI6zep)+TswEt1O#Y+-;bu;_!;axChyQ( zHL<6J_Qqnb?bWuYMow0TBsZT$;uI6Ma~pb%zio z>xeGZ^cR@K(Ku&8!lHQ_JmgIZvIB{0)sie8fWX_2pF|P+*0o-Eb!ziHv3fAJx3}}% zYh6p*?~$B0iat$hUF)hCGtP0Y7H<2-aVa-b081la>|y7x$p!R~B%%KfghG1zMm`Eg z-SZN|oneM&UlD9s_iyx&!Q_Nu;wLjho^MBWJJ0M~?^Cu!z|*%#F&7&$FC9^ToNL0Y zCJWN?7e8C1w!46T# z((o~lW}LnOS?ujJYUGIV^Qd&Wz)^kco$^aYvqO^Yv7O1b*zmWp^0MZ@KwL``fI`Rf z1EiBYP=?+P?+5S7xY%WIHu5$_+ws=f%o=Ube1aG<(oLdBSvuVDMN!ZHkqlC)=c16~ zgj~7WaNI#EDeWo5q|X(Ysj=FBs-&4vk5mLb9k43+Mxvu&FnjzEy=;JgblSAa!`N*; zqBHAG>&?%3ILDbb;vPwMk#VfN0z$yF-1HZ6K1!Q^(KNK!G=ZyD;Y1c1tMU!I@bzgM zxAv#Rf~bkW6x>I|kZ+%c0rFuwN+GTyQ z3=x3zpY?s)Zy}1s27qFBD`j&@Z7R%>O2ymd%iOVOEXE%wTWQ5m{k$49x*n8X1nv!; znNESU?1_w@*3-bNF8hj1KG;luL9B++q?djZu1Qyq$;aO=6KnS2V1;RmtZSNLaJ?4I z|8k~}y7Z#FTjJPVwHASb_EN@3I5KJckfoU}uzzB9glca&$v557=a`Uz2u*C)?s+SX zuE7IZT6jf6dK(2inj(mo3tio1Ko!Y11w=oN_;`v)w3rFfVIPNSF1r^ny#p1y29}V? zw@St!g9vvY*2b_5Z~TBL+&)AyQget0$8wQw%lH@pt!E7YbPTl8B@oL_O-z)MDD-x0 z+7Kef7wVa7ClyWu&p(1ohw9G1oOT6=oDZKh>v3LTD;HSoy5BU=VMa;hzinlCknxg# z6yGju-(T;&l8-?ROo_O=(iw6c@cWAhS>`i&Ft+?dsz1E*B8P z7wS2ctBv*3&;42xn^CL6-9F5qEivz|Sb`c?6N=oi(A)grSLG@MS9-r5bevun$$>T| zv_)YqH?(NmCqeCZ zD>}{J208BaUhGfJRcn|AO|d#oFa~leUgV%tpQC4UxZD5?{LGPV z69ArYo*&1Ndupp;Oj~IacX@Zah#)n&kMCQYJj-w7-0J?=pc<(mYs}~u?RiwBs028> zrPW2&vmYyEGSQnHIYmd z7T6Pzv+b5j3^hQoZjfJ?V&N2&OKLZ>TehFZKN~}F3i~Hq*ZY~jw=c6(PKy>9w(;$I zdGum4%F1ATP&9sG2F6(jw5283>(*~gTd80Iwkct3^YCtFM}>?$;)ik2Z&d1hue*{X zK@)CC%R2?Px7KfKH3&^N=IAdNTSul zc{lMYrkoSo2&&0g>SWLaSAITElxfqFa0aj!YcjC9zjo)+mM70hwT@q5saYsa?nbNj zberQuRWmY=#q@PE2rYJ~aMG=4253?@MFN!!E&nt=tF z<7QO^q(+#BLF(eQK4ak`&c}HLP3LZq`!$|+1{Fj1I;4`d=JFCs(8I!~FsJcg7S$mJ zu?0;G=M;+Rk?fQs!a3DKZuz}!xsH!q$z09ga}rhJsEV{@SFgtPjTl&t43{hT>FC{( zUU%2vI%Xcq+Kd6c(hV7f-&1z6K4lcsk#7+$*f!ucR{)wLQ#Zfj4KcOm_AGJx{og`G z+$$c?ozVWcstSis_jL}AdehxtdESA9Pp z79;>qnRz4N5%wJn$1`eGnF$a#9gWi(uB+cPUx$1RuBe?v?>y$>Ov+7A^+^Mu6V5 zWcOUVf?g7NJktI7DE`3Gi=M&Pv~K( zx2TSgJ|es33aY=VB`l!_*`U!~b{iX45vzXch+?vARaWR)yLv!A`?k4qOyus^fKjd4 zpva0?Qr|3t9Ym~gx>wTo3)SJ7oM+7?vB=w?dq%T@56$v7V6ijy+nfb?>lyJ}e=oe< z_LPLWt4q9gDN=MjkzTAoXaal|*@o^!z}qqqj2lmK$GDbKLa=RYo?b{%163hW9`~f zJSj@Dw$`61Lx1281AoWytb!*u^$V3;GMX&iBFF}o9RUbB`JCiCj&&-QKB9=3s zvMu8{fkkHf9vQGSACT?M{Ua;YdlqI_;IoFF?@^XW4)V6QX^a~<^;3!^S?5*}4^0~0 zpR@#`0V5U&TSF#g)G>Eb$Mhq*WFuz%#SU3P^{uB>=2g)Ia> z5F98Pp*s)pzkxt(H8hmhQ%l^-p6j2m#eKuLQ6q%?CU*g`DBA^tlZht#&vN&7dG6A` z+{o2jNdJd6c1H~j_n3na^%^xt?j>ek^r&r->!%5cB_DQ^T5(p+T%Y&Aqq|0GCv!Py zvY}OgPzUlXuIi)}YT6uB+;mtJRhkYiU++)?cV((8$8*Zt?rYk$iA9^oJLq9v{1Qmi zc(&Ar`Z#SbHE`*URl;?0DLf$28Od$>z|wAtY!7~ZOtkGu6Hnt_2_UniaM$&-eV9!6 zBkdXzLdsXRzr@G8=;GU4`FV$B!$;f`H-1s3sMRKF!;^f`&o$`sFd-l%JZzFSN5bAvbwLG6(Zu^VAVHZwmk66PKLwCOGq)2xE27Z z&EHUVZtps{Ip*zfR}B4FLDdKqUAyx0C%^;?GOA@UFJ@ngJN~4Qvv$MQ@j!BVv99T?K$-^r=>+r`rgF+>Vsu2sr%O44_8I4m)N36hw7UtMx2x#P zE*q~NiU@a>mzoN{kk-3C{Yu$U{ny;zdO{Lnr-}q+2H(Z@jRcM7?A4b-~{-Qw2IN=sED?%L2N-nVSx*Qjq{s)rQ5OI*i6B8KQ*MNZ-c;MmhR zaSR3d!em6VLS=`KFuGGSM~zT)NmH0}RApe%@rARR6^NtJ=aDj7yYBHBEXk#vO-J`3 zLF*R|)^SKR2vVadSa9!Dw;;hfFj(8rZ8a5ri|+?P0ib5!MG#t zX5hy4i&HU`lQ7Hb@=W7OI@?GLeS9`*Avjlg_JvN{2qWNVIRR3SdHe<~#7kNkLNl&V z871%Knlk%|t8r%GarZzZFk4ntkY-D@1`PD{w|8cl8*;saUS=hRNIJh~jQBAJ=W7EnV@9esdu!GC)O7`j$V zMxg$JlwnH!gcY9u9lwP{J}-W^!$oEHEN7cp0RK^uhN= z9_3)T3$4KS?0ZN~LTudFkHf1OSVB(gQ9=B1-^kLx*pKX8XoB2)%~}x8_seF|8PJ;$ z-1+)yhlEQqV$(zypydxgK%NWGdkb(E@9cB=sIIpdFs}|78B_E8}grl!AcKTrmuI8$;zwQjLm92!ogtz}6ahw9Ml4mV^Zr%dY(gv4^&&DMR+L!~w9R3Ti8 zCPi}c^`yEq*`of?fqAPAo6n4wBa@`-;IBLA#dmZm+jQyx0;~>7=CQYsU%8DC402r6 zaN%zW)gdY`*^AzK442U`^mdBu$1D*oK)G&2M0gs(r~IJMB_}_}Gr=jz*P+Tt1T_Hd zQQ^BKs|QKoVkNz=>q>kws4#m6Gx~G_L8#n=y1`EDUIm7~8b^7N6BoVuVyc8UuNyex zb<#~Z*ml2}g(d={zD$j-j7e%ym{YBcYqxH9?kJl@Lx!AkB7}SAx8SJ$6bYV{2!dcl zS*b~Oz}7P!kFC;oDoL&OWt}QH?)Fs)jv3tNHfY}ckhJGIjnKf(99+&TMmCx_c`m!X zZ6FaEp~Cepd^9s;ChTT|w9ZPu{<7vs!0K7T)*{b^p+)sgD1qj->TzUFyS6Y~+&;w! z!#OUtPp>@FGpQL`q-%VPAd;ejA>>&G-Q~Q?Y#_@9d}6LB$AgHF1B`LJQG?#0GM+4H zdsP(UhdXiw!~W&XL=o$-+DaXk1_iDj6tmHqL1oTj#!d$?Qe?G7Uw})aQ$0mEucF8w zVN~Xtd2WawfwNvkgLV#6TMr$w9mHp}?-vaubptQAeWWwUIqhIzG9bDojTJV~z6_I) z#S?*pjVNX(g;vYct=%~-H(>}RYz@|r*P~$F+TJz}?Mx}Mo8xwM=f&VQ(SLc31Oyn(PAw1Dha8ga~bq<@>^Ya9w1ubl!ZGXi5jEEuOpn0jjKL{|26 z@bmY!1*l)7d&=Y>kEEw2Y7*hR|tJtlzBJJPhSDWWC z+ZDQ}(2AR_ok`v}S+BQpNK|MtUQ>f}0@aF`7mc-B7WtK9Z5Iqc6Xw}@eVVBWDH4T^ zA{4Nq;sduv@`P7f^}$|ynFe=Mw+tH8|3&b=?-vmQAN{sDZNU9CxaK9q12;G;5+q9pW^k#S5E52o(I?+LyOvA~EaAJ#$kNBU#G$zTfv5apJq62G|0n$@~{3ed&g4W<`<#{YYe@O6M8)2_F2 zGE^}-2DNQHiV_k3W!3ln41eZxOqkwtu%6HSinX2L&>|2q9$$`XMGq$e^-^wlo?V7cw}vjNlA$n{-gZ2`NjF=pHa#UDv)7-b(5Z#TU)V4wP>3kVmEoK>>Tr5J%0B1DkFb8Y-}!8 zQ;h2eAtJlOonIOB$j3*Uh13w9HBVAqY@CqE4sOJB;19aZ&-*{(n-{0oe&P&<4@oyD zk{#kjx`$9I3aFi;R(8bm4q_|p?05otS^H3^T%yCuqFEHWdtSkBZAp-dSz{;tRI8W)F?xm$02S4#D=M+-sX8A?In ztcHK7(jI}zQE()dRLtqcvYPkZw85cAHHZjsQlUwQ**xnm+Es&6? zs0J82A@UWS1r0C#I>P4Ca@agrchBJ|Tkjs6GcSQ~s%5|=o-6`Mm z%4vi*s5eB?O3|@#6WD9zd`U z?YM^D@d!l}FWG{E^`p&^ZBK+`T7IQ-a(4n3^O?Yv1AMq~wM_g&7h=1wp;e4OG9{1+*7zK&1y%-AP!>&q&BW2v9jxnKJ-c9;*uu~ve96`rLc z;Sf6hbjnl2fAh$bKdUs!{|GChX~)o7ha!z8q2@4JEe#2}X!71^ne5%RZIbWA#N*ou zu(-s+spX3}HefxkUEDI~DqlQamlkV6wcR1HV2#M^_crZpgrPSQ%g7Yac^N)!09NbC zq))@+-j|10!y*VZ)r+a117HK?j^yKd#=0VORg5L?&nh4=~kh5JH>`|S1h>$`#!r-I9Yb6wD-i3aXCbtt3B z4+UCyQUZ_JASFeRpfTT+yMjIXYVu8UEG@JF;_77MD_0N97`|fUA84&${cZpPdw