bundle agent upgrade_to_latest { methods: hpux.trigger_upgrade:: "any" usebundle => upgrade_cfengine_hpux("3.6.6"); } bundle agent upgrade_cfengine_hpux(new_version) { classes: trigger_upgrade:: "has_new_version" expression => returnszero("/usr/sbin/swlist -v | grep cfengine | grep -q r=$(new_version)", "useshell"); "have_software" expression => fileexists("$(cfe_internal_update_bins.local_software_dir)"); commands: !has_new_version.have_software.trigger_upgrade:: #"/sbin/init.d/cfengine3 stop" # classes => scoped_classes_generic("bundle", "cf3_stopped"); "/usr/sbin/swinstall -s $(cfe_internal_update_bins.local_software_dir)/cfengine-nova-$(new_version)-B.11.23-ia64.depot cfengine-nova" classes => scoped_classes_generic("bundle", "software_version"); #software_upgraded:: #"/sbin/init.d/cfengine3 start"; processes: software_version_repaired:: "/var/cfengine/bin/cf-monitord" signals => { "term", "kill" }; "/var/cfengine/bin/cf-serverd" signals => { "term", "kill" }; "/var/cfengine/bin/cf-execd" signals => { "term", "kill" }; reports: has_new_version.trigger_upgrade:: "Newest version of CFEngine ($(new_version)) is already installed"; !has_new_version.trigger_upgrade:: "Newest version of CFEngine ($(new_version)) was not installed -- installing"; } body classes scoped_classes_generic(scope, x) # @brief Define `x` prefixed/suffixed with promise outcome # # **See also:** [`scope`][Promise Types and Attributes#scope] # # @param scope The scope in which the class should be defined # @param x The unique part of the classes to be defined { scope => "$(scope)"; promise_repaired => { "promise_repaired_$(x)", "$(x)_repaired", "$(x)_ok", "$(x)_reached" }; repair_failed => { "repair_failed_$(x)", "$(x)_failed", "$(x)_not_ok", "$(x)_error", "$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" }; repair_denied => { "repair_denied_$(x)", "$(x)_denied", "$(x)_not_ok", "$(x)_error", "$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" }; repair_timeout => { "repair_timeout_$(x)", "$(x)_timeout", "$(x)_not_ok", "$(x)_error", "$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" }; promise_kept => { "promise_kept_$(x)", "$(x)_kept", "$(x)_ok", "$(x)_not_repaired", "$(x)_reached" }; }