From 59043506d4ee71e39e89fc3216c2bb5cde92604e Mon Sep 17 00:00:00 2001 From: Jason Kincl Date: Fri, 30 Aug 2013 14:35:32 -0400 Subject: Client: Add entries processed as important to list of entries when determining if a bundle has been modified --- src/lib/Bcfg2/Client/Frame.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/Bcfg2/Client/Frame.py b/src/lib/Bcfg2/Client/Frame.py index 1b26450a6..2eb41e837 100644 --- a/src/lib/Bcfg2/Client/Frame.py +++ b/src/lib/Bcfg2/Client/Frame.py @@ -329,11 +329,13 @@ class Frame(object): if bundle.tag != 'Bundle': continue bmodified = len([item for item in bundle - if item in self.whitelist]) + if item in self.whitelist or + item in self.modified]) actions = [a for a in bundle.findall('./Action') if (a.get('timing') != 'post' and (bmodified or a.get('when') == 'always'))] - # now we process all "always actions" + # now we process all "pre" and "both" actions that are either + # always or the bundle has been modified if self.setup['interactive']: self.promptFilter(iprompt, actions) self.DispatchInstallCalls(actions) -- cgit v1.2.3-1-g7c22 From 05542e5ff0366fb2a7bdf9530cf716c530253fa1 Mon Sep 17 00:00:00 2001 From: Jason Kincl Date: Fri, 30 Aug 2013 14:35:51 -0400 Subject: doc: Updated Client Actions doc to include BoundActions and another example schemas: Fixed Action `when` attribute description --- doc/client/tools/actions.txt | 24 ++++++++++++++++++++---- schemas/types.xsd | 9 +++++---- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/doc/client/tools/actions.txt b/doc/client/tools/actions.txt index 81486ecd1..e5fdb1f39 100644 --- a/doc/client/tools/actions.txt +++ b/doc/client/tools/actions.txt @@ -31,10 +31,11 @@ central reporting of action failure is desired, set this attribute to 'check'. Also note that Action entries included in Base will not be executed. -Actions cannot be completely defined inside of a bundle; they are a bound -entry, much like Packages, Services or Paths. The Rules plugin can bind -these entries. For example to include the above action in a bundle, -first the Action entry must be included in the bundle: +Actions may be completely defined inside of a bundle with the use of +:ref:`server-configurationentries`, much like Packages, Services or Paths. +The Rules plugin can also bind these entries. For example to include the +above action in a bundle, first the Action entry must be included in the +bundle: .. code-block:: xml @@ -70,3 +71,18 @@ requires this key. + +Example BoundAction (add RPM GPG keys) +====================================== + +This example will add the RPM-GPG-KEY-redhat-release key to the RPM +GPG keyring **before** Package entries are handled on the client run. + +.. code-block:: xml + + + + + + + diff --git a/schemas/types.xsd b/schemas/types.xsd index 4e3dfd70f..17b7f05f0 100644 --- a/schemas/types.xsd +++ b/schemas/types.xsd @@ -122,7 +122,10 @@ - When the action is run. + When the action is run. Actions with "pre" timing are run + after important entries have been installed and before + bundle entries are installed. Actions with "post" timing + are run after bundle entries are installed. @@ -130,9 +133,7 @@ If the action is always run, or is only run when a bundle - has been modified. Actions that run before bundle - installation ("pre" and "both") ignore the setting of - ``when`` and are always run regardless. + has been modified. -- cgit v1.2.3-1-g7c22 From 730179b581e0dcdaa93a4819acbeb207db6980ef Mon Sep 17 00:00:00 2001 From: Jason Kincl Date: Fri, 30 Aug 2013 14:57:32 -0400 Subject: Fix pep8 errors --- src/lib/Bcfg2/Client/Frame.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/Bcfg2/Client/Frame.py b/src/lib/Bcfg2/Client/Frame.py index 2eb41e837..ad718749e 100644 --- a/src/lib/Bcfg2/Client/Frame.py +++ b/src/lib/Bcfg2/Client/Frame.py @@ -329,12 +329,12 @@ class Frame(object): if bundle.tag != 'Bundle': continue bmodified = len([item for item in bundle - if item in self.whitelist or - item in self.modified]) + if item in self.whitelist or + item in self.modified]) actions = [a for a in bundle.findall('./Action') if (a.get('timing') != 'post' and (bmodified or a.get('when') == 'always'))] - # now we process all "pre" and "both" actions that are either + # now we process all "pre" and "both" actions that are either # always or the bundle has been modified if self.setup['interactive']: self.promptFilter(iprompt, actions) -- cgit v1.2.3-1-g7c22