Consider the following example bundle agent createfolder {
files: "/home/nicolas/foo/." create => "true", comment => "Creating directory", classes => if_else("foldercreated", "failure"); commands: foldercreated:: "/bin/echo \"Folder created or present\""; failure:: "/bin/echo \"Failure\""; } body classes if_else(if, else) { promise_repaired => {"foldercreated"}; promise_kept => {"foldercreated"}; repair_failed => {"$(else)"}; } It should create the folder foo if it doesn't exist, and set the class foldercreated. But it doesn't (latest trunk build and cf3.0.2) Output if folder doesn't exist : cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 Skipping whole next promise (/bin/echo "Folder created or present"), as context foldercreated is not relevant cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 Skipping whole next promise (/bin/echo "Failure"), as context failure is not relevant cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 cf3 ========================================================= cf3 files in bundle createfolder (1) cf3 ========================================================= cf3 cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 cf3 ......................................................... cf3 Promise handle: cf3 Promise made by: /home/nicolas/foo/. cf3 cf3 Comment: Creating directory cf3 ......................................................... cf3 cf3 -> Using literal pathtype for /home/nicolas/foo/. cf3 cf3 + Private classes augmented: cf3 cf3 - Private classes diminished: cf3 cf3 cf3 cf3 ========================================================= cf3 commands in bundle createfolder (2) cf3 ========================================================= cf3 cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 Skipping whole next promise (/bin/echo "Folder created or present"), as context foldercreated is not relevant cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 Skipping whole next promise (/bin/echo "Failure"), as context failure is not relevant cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Output if folder exists: cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 Skipping whole next promise (/bin/echo "Folder created or present"), as context foldercreated is not relevant cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 Skipping whole next promise (/bin/echo "Failure"), as context failure is not relevant cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 cf3 ========================================================= cf3 files in bundle createfolder (1) cf3 ========================================================= cf3 cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 cf3 ......................................................... cf3 Promise handle: cf3 Promise made by: /home/nicolas/foo/. cf3 cf3 Comment: Creating directory cf3 ......................................................... cf3 cf3 -> Using literal pathtype for /home/nicolas/foo/. cf3 -> File /home/nicolas/foo/. exists as promised cf3 ?> defining promise result class foldercreated cf3 -> Handling file existence constraints on /home/nicolas/foo/. cf3 cf3 + Private classes augmented: cf3 cf3 - Private classes diminished: cf3 cf3 cf3 cf3 ========================================================= cf3 commands in bundle createfolder (2) cf3 ========================================================= cf3 cf3 Verifying SQL table promises is only available with Cfengine Nova or above cf3 -> Promiser string contains a valid executable (/bin/echo) - ok cf3 cf3 ......................................................... cf3 Promise handle: cf3 Promise made by: /bin/echo "Folder created or present" cf3 ......................................................... cf3 cf3 -> Executing '/bin/echo "Folder created or present"' ...(timeout=0,owner=-1,group=-1) cf3 -> (Setting umask to 77) cf3 Q: ".../bin/echo "Fold": Folder created or present cf3 -> Finished script - succeeded /bin/echo "Folder created or present" cf3 I: Last 1 QUOTEed lines were generated by promiser "/bin/echo "Folder created or present"" cf3 I: Report relates to a promise with handle "" cf3 I: Made in version 'not specified' of './createfolder.cf' near line 18 cf3 -> Completed execution of /bin/echo "Folder created or present" cf3 cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . cf3 Skipping whole next promise (/bin/echo "Failure"), as context failure is not relevant cf3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using "/home/nicolas/foo/" as a temporary workaround: it failed for it is not a file, but a folder, and at the next iteration the folder is there, so the promise is kept Regards, Nicolas _______________________________________________ Bug-cfengine mailing list Bug-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/bug-cfengine