Hello community,

here is the log from the commit of package cfengine-masterfiles for 
openSUSE:Factory checked in at 2014-10-18 09:08:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cfengine-masterfiles (Old)
 and      /work/SRC/openSUSE:Factory/.cfengine-masterfiles.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cfengine-masterfiles"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/cfengine-masterfiles/cfengine-masterfiles.changes    
    2014-08-07 12:38:02.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.cfengine-masterfiles.new/cfengine-masterfiles.changes
   2014-10-18 09:08:44.000000000 +0200
@@ -1,0 +2,17 @@
+Thu Oct  9 07:21:46 UTC 2014 - [email protected]
+
+- Update to 3.6.2
+  Bugfix release
+
+-------------------------------------------------------------------
+Tue Sep 16 12:16:41 UTC 2014 - [email protected]
+
+- Update to 3.6.2-build5 pre-release
+
+-------------------------------------------------------------------
+Thu Aug  7 18:02:29 UTC 2014 - [email protected]
+
+- fix build for SLE 11
+  add cfengine-masterfiles-rpmlintrc
+
+-------------------------------------------------------------------

Old:
----
  masterfiles-3.6.1.tar.gz

New:
----
  cfengine-masterfiles-rpmlintrc
  masterfiles-3.6.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cfengine-masterfiles.spec ++++++
--- /var/tmp/diff_new_pack.uo5bAR/_old  2014-10-18 09:08:45.000000000 +0200
+++ /var/tmp/diff_new_pack.uo5bAR/_new  2014-10-18 09:08:45.000000000 +0200
@@ -26,7 +26,7 @@
 Summary:        CFEngine promises master files
 License:        MIT and LGPL-3.0+
 Group:          Productivity/Networking/System
-Version:        3.6.1
+Version:        3.6.2
 Release:        0
 %define srcname masterfiles-%{version}
 Url:            http://www.cfengine.org/
@@ -42,6 +42,11 @@
 BuildRequires:  automake
 BuildRequires:  findutils
 BuildRequires:  unzip
+# wtf? SLE_11 does not honor rpmlintrc
+Source1:        %{name}-rpmlintrc
+%if 0%{?suse_version} <= 1130
+BuildRequires:  -post-build-checks
+%endif
 
 %description
 Masterfiles are the pristine version of the CFEngine promises. These

++++++ cfengine-masterfiles-rpmlintrc ++++++
addFilter(".* is not allowed anymore in FHS 2.2.");++++++ 
masterfiles-3.6.1.tar.gz -> masterfiles-3.6.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/cfe_internal/CFE_cfengine.cf 
new/masterfiles-3.6.2/cfe_internal/CFE_cfengine.cf
--- old/masterfiles-3.6.1/cfe_internal/CFE_cfengine.cf  2014-07-24 
11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/cfe_internal/CFE_cfengine.cf  2014-10-01 
16:04:11.000000000 +0200
@@ -39,10 +39,6 @@
       handle => "cfe_internal_management_setup_knowledge",
       comment => "Manage CFE Knowledge Map";
 
-      "hub" usebundle => cfe_internal_hub_maintain,
-      handle => "cfe_internal_management_hub_maintain",
-      comment => "Start the hub maintenance process";
-
       "hub" usebundle => cfe_internal_apache_sudoer,
       handle => "cfe_internal_management_apache_sudoer",
       comment => "Permit Apache user to run passwordless sudo cf-runagent";
@@ -55,6 +51,13 @@
       handle => "cfe_internal_management_php_runalerts",
       comment => "To run PHP runalerts to check bundle status on SQL and 
Sketch";
 
+    # As passive hub is supposed to run read-only PostgreSQL instance 
+    # doing maintenance makes no sense and is not possible at all.
+    (am_policy_hub.enterprise.!ha_enabled)||(ha_enabled.hub_active)::
+
+      "hub" usebundle => cfe_internal_hub_maintain,
+      handle => "cfe_internal_management_hub_maintain",
+      comment => "Start the hub maintenance process";
       "hub" usebundle => cfe_internal_truncate_events,
       handle => "cfe_internal_truncate_events",
       comment => "To run CFE truncate to pending";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/cfe_internal/CFE_hub_specific.cf 
new/masterfiles-3.6.2/cfe_internal/CFE_hub_specific.cf
--- old/masterfiles-3.6.1/cfe_internal/CFE_hub_specific.cf      2014-07-24 
11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/cfe_internal/CFE_hub_specific.cf      2014-10-01 
16:04:11.000000000 +0200
@@ -358,7 +358,8 @@
 
   processes:
 
-    kill_script::
+    # Make sure to kill script on non active hub(s).
+    kill_script||(ha_enabled.!hub_active)::
 
       "$(runalerts_script)"
       comment => "kill the php runalerts script because it is stale for some 
reason",
@@ -366,7 +367,8 @@
       signals => { "term" },
       classes => if_repaired("run_script");
 
-    any::
+    # Run script only on active hub to not send duplicated alert emails.
+    !ha_enabled||(ha_enabled.hub_active)::
 
       "$(runalerts_script)"
       comment => "check if the php runalerts script is running or not",
@@ -377,7 +379,8 @@
 
   commands:
 
-    run_script::
+    # Run script only on active hub to not send duplicated alert emails.
+    (run_script.!ha_enabled)||(run_script.ha_enabled.hub_active)::
 
       "$(runalerts_script) > /dev/null < /dev/null 2>&1 &"
       comment => "to run php alerts script",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/cfe_internal/ha/ha.cf 
new/masterfiles-3.6.2/cfe_internal/ha/ha.cf
--- old/masterfiles-3.6.1/cfe_internal/ha/ha.cf 1970-01-01 01:00:00.000000000 
+0100
+++ new/masterfiles-3.6.2/cfe_internal/ha/ha.cf 2014-10-01 16:04:11.000000000 
+0200
@@ -0,0 +1,152 @@
+bundle agent ha_main
+{
+ vars:
+  ha_enabled::
+   "policy_servers" slist => { @(ha_def.ips) };
+   "connected_servers" slist => filter("$(sys.policy_hub)", policy_servers, 
false, true, 10);
+
+ classes:
+   ha_enabled::
+    "ha_master_valid" expression => isvariable("sys.hub_active_ip");
+
+ methods:
+  policy_server.enterprise::
+    "manage_mp_ha_enabled_file" usebundle => ha_manage_mp_status_file;
+
+  policy_server.ha_enabled::
+    "sync_client_keys" usebundle => ha_hub_sync_clients_keys;
+    "copy_hubs_keys" usebundle => ha_hub_copy_hubs_keys;
+
+  policy_server.ha_enabled.!hub_active::
+    "sync_config_data" usebundle => ha_hub_sync_config_data;
+
+  policy_server.keys_staged::
+    "establish trust" usebundle => ha_update_staged_ppkeys;
+
+  !policy_server.ha_enabled::
+    "Copy hub keys to clients" usebundle => ha_node_sync_hub_keys;
+    "Write new master IP on hub" usebundle => update_master_ip_server;
+}
+
+# ha_enabled file is used by MP as a first test to figure out if
+# HA functionality is switched on or not. Based on existence of this 
+# file further actions are performed.
+bundle agent ha_manage_mp_status_file
+{
+ files:
+  policy_server.!ha_enabled::
+    "$(sys.workdir)/httpd/htdocs/ha_enabled"
+      delete => tidy;
+
+  policy_server.ha_enabled::
+    "$(sys.workdir)/httpd/htdocs/ha_enabled"
+     create => "true",
+     perms => mog("0644",$(def.cf_apache_user),$(def.cf_apache_group));
+}
+
+bundle agent ha_hub_sync_config_data
+{
+ files:
+  "$(sys.workdir)/httpd/htdocs/application/config/cf_robot.php"
+     copy_from => 
no_backup_scp("$(sys.workdir)/httpd/htdocs/application/config/cf_robot.php", 
$(sys.hub_active_ip)),
+     comment => "Synchronize cf_robot configuration",
+     handle => "ha_sync_robot_config";
+
+  "$(sys.workdir)/share/GUI/application/config/appsettings.php"
+     copy_from => 
no_backup_scp("$(sys.workdir)/share/GUI/application/config/appsettings.php", 
$(sys.hub_active_ip)),
+     comment => "Synchronize appsetings configuration",
+     handle => "ha_sync_appsettings_config";
+
+  "/opt/cfengine/notification_scripts"
+      copy_from => no_backup_scp("/opt/cfengine/notification_scripts", 
$(sys.hub_active_ip)),
+      comment => "Copy MP notification scripts",
+      handle => "ha_copy_notification_scripts",
+      depth_search => recurse("1");
+}
+
+bundle agent ha_hub_copy_hubs_keys
+{
+ files:
+   "$(ha_def.ppkeys_hubs)"
+      copy_from => no_backup_cp("$(sys.workdir)/ppkeys"),
+      file_select => hubs_keys_select,
+      comment => "Copy all hubs keys to directory accessible by clients",
+      handle => "ha_copy_hubs_keys",
+      depth_search => recurse("1"),
+      classes => if_repaired("hubs_keys_staged");
+}
+
+
+bundle agent update_master_ip_server
+{
+ files:
+ !policy_server::
+  "$(sys.workdir)/policy_server.dat"
+     copy_from => u_rcp("$(sys.workdir)/state/master_hub.dat", 
@(def.policy_servers)),
+     comment => "Update master hub IP on CFEngine node",
+     handle => "ha_cfengine_node_update_master";
+}
+
+bundle agent ha_hub_sync_clients_keys
+{
+ vars:
+   "exclude_files" slist => {"localhost.priv", "localhost.pub", 
@(ha_def.hub_shas)};
+ files:
+   "$(ha_def.ppkeys_staging)"
+      copy_from => no_backup_scp("$(sys.workdir)/ppkeys", 
@(ha_main.connected_servers)),
+      file_select => ex_list(@(exclude_files)),
+      comment => "Distribute all client keys between replica set servers",
+      handle => "ha_copy_client_keys_between_replica_set_servers",
+      depth_search => recurse("1"),
+      classes => if_repaired("keys_staged");
+}
+
+bundle agent ha_update_staged_ppkeys
+{
+ files:
+   "$(sys.workdir)/ppkeys"
+      copy_from => no_backup_cp("$(ha_def.ppkeys_staging)"),
+      file_select => plain,
+      comment => "Copy staged client keys to ppkeys",
+      handle => "ha_copy_staged_client_keys",
+      depth_search => recurse("1"),
+      classes => if_repaired("ppkeys_updated");
+}
+
+bundle agent ha_node_sync_hub_keys
+{
+  files:
+   !policy_server::
+    "$(sys.workdir)/ppkeys"
+      copy_from => no_backup_scp("$(ha_def.ppkeys_hubs)", 
@(def.policy_servers)),
+      file_select => hub_all_keys,
+      depth_search => u_recurse("inf"),
+      comment => "Distribute all hub keys to clients",
+      handle => "ha_copy_hub_keys_to_nodes",
+      classes => if_repaired("keys_copied_clients");
+}
+
+body file_select hub_all_keys
+{
+  leaf_name => {".*.pub"};
+  file_result => "leaf_name";
+}
+
+body file_select hubs_keys_select
+{
+ search_size => irange("426", "426");
+ leaf_name => 
{escape("root-SHA=$(ha_def.config[$(ha_main.connected_servers)][sha]).pub")};
+ file_result => "leaf_name";
+}
+
+
+body copy_from no_backup_scp(from,server)
+{
+ servers     => { "$(server)" };
+ source      => "$(from)";
+ compare     => "digest";
+ copy_backup => "false";
+ encrypt     => "true";
+ trustkey    => "true";
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/cfe_internal/ha/ha_def.cf 
new/masterfiles-3.6.2/cfe_internal/ha/ha_def.cf
--- old/masterfiles-3.6.1/cfe_internal/ha/ha_def.cf     1970-01-01 
01:00:00.000000000 +0100
+++ new/masterfiles-3.6.2/cfe_internal/ha/ha_def.cf     2014-10-01 
16:04:11.000000000 +0200
@@ -0,0 +1,32 @@
+bundle common ha_def
+{
+ classes:
+   any::
+   "ha_enabled" expression => "!any";
+   #"ha_enabled" expression => "enterprise";
+
+ vars:
+  ha_enabled::
+   "config_file" string => "$(this.promise_dirname)/ha_info.json";
+   "ppkeys_staging" string => "$(sys.workdir)/ppkeys_staging";
+   "ppkeys_hubs" string => "$(sys.workdir)/ppkeys_hubs";
+
+   "config" data => readjson("$(config_file)", "4k");
+
+   "ips" slist => getindices("config");
+
+   "hub_sha[$(ips)]"
+      string => escape("root-SHA=$(config[$(ips)][sha]).pub"),
+      comment => "We need to construct an intermediary array so that we can
+                  extract a combined list of all hub keys.";
+
+   "hub_shas"
+     slist => getvalues("hub_sha"),
+     comment => "We use the list of hub key files for restricting clients 
access only to those";
+
+  reports:
+    verbose_mode::
+      "HA hub $(ips) $(config[$(ips)][sha])";
+}
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/cfe_internal/ha/ha_info.json 
new/masterfiles-3.6.2/cfe_internal/ha/ha_info.json
--- old/masterfiles-3.6.1/cfe_internal/ha/ha_info.json  1970-01-01 
01:00:00.000000000 +0100
+++ new/masterfiles-3.6.2/cfe_internal/ha/ha_info.json  2014-10-01 
16:04:11.000000000 +0200
@@ -0,0 +1,15 @@
+{
+ "192.168.100.10":
+ {
+  "sha": "3e9df4ec8c9826eaa2c397f99eeae22e0a35a22307474d56f7fdedadff7dd485",
+  "internal_ip": "192.168.100.10",
+  "tags": ["node1"]
+ },
+ "192.168.100.11":
+ {
+  "sha": "37baa6f2f18a907131dadbf3e255d4ed0eda2f403e2123bab2c5f82f7ac8cd79",
+  "internal_ip": "192.168.100.11",
+  "tags": ["node2"]
+ }
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/cfe_internal/host_info_report.cf 
new/masterfiles-3.6.2/cfe_internal/host_info_report.cf
--- old/masterfiles-3.6.1/cfe_internal/host_info_report.cf      2014-07-24 
11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/cfe_internal/host_info_report.cf      2014-10-01 
16:04:11.000000000 +0200
@@ -140,7 +140,7 @@
 
   reports:
     host_info_report_output_repaired::
-      "Host info report generated and avilable at 
'$(host_info_report.host_info_report_output)'";
+      "Host info report generated and available at 
'$(host_info_report.host_info_report_output)'";
 
     host_info_report_output_not_ok::
       "There was a problem generating your host info report at 
'$(host_info_report.host_info_report_output)'";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/controls/cf_serverd.cf 
new/masterfiles-3.6.2/controls/cf_serverd.cf
--- old/masterfiles-3.6.1/controls/cf_serverd.cf        2014-07-24 
11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/controls/cf_serverd.cf        2014-10-01 
16:04:11.000000000 +0200
@@ -92,34 +92,76 @@
       comment => "Grant access to plugins directory",
       admit => { @(def.acl) };
 
+    !windows::
       "$(def.cf_runagent_shell)"
       handle => "server_access_grant_access_shell_cmd",
       comment => "Grant access to shell for cfruncommand",
-      admit => { "$(sys.policy_hub)" };
+      admit => { @(def.policy_servers) };
+
+    policy_server.ha_enabled::
+      "$(sys.workdir)/ppkeys"
+      handle => "server_access_grant_access_ppkeys_hubs",
+      comment => "Grant access to ppkeys for HA hubs",
+      admit => { @(def.policy_servers) };
+
+      # Allow slave hub to synchronize cf_robot and appsettings content.
+      # Files are containing configuration that must be the same on all hubs.
+      "$(sys.workdir)/httpd/htdocs/application/config/cf_robot.php"
+      handle => "server_access_grant_access_cf_robot",
+      comment => "Grant access to cf_robot file for HA hubs",
+      admit => { @(def.policy_servers) };
+
+      "$(sys.workdir)/share/GUI/application/config/appsettings.php"
+      handle => "server_access_grant_access_appsettings",
+      comment => "Grant access to appsettings for HA hubs",
+      admit => { @(def.policy_servers) };
+      
+      # Allow access to notification_scripts directory so passive hub
+      # will be able to synchronize its content. Once passive hub will
+      # be promoted to act as a master all the custom scripts will be
+      # accessible.
+      "/opt/cfengine/notification_scripts"
+      handle => "server_access_grant_access_notification scripts",
+      comment => "Grant access tonotification scripts",
+      admit => { @(def.policy_servers) };
+
+      # When HA is enabled clients are updating active hub IP address
+      # using data stored in master_hub.dat file.
+      "$(sys.workdir)/state/master_hub.dat"
+      handle => "server_access_grant_access_policy_server_dat",
+      comment => "Grant access to policy_server.dat",
+      admit => { @(def.acl) };
+
+      # Hubs keys working in HA configuration are stored in ppkeys_hubs 
directory.
+      # In order to perform failover while active hub is down clients needs to
+      # have all hubs keys. This gives ability to connect to slave hub 
promoted to active role
+      # once active is down.
+      "$(sys.workdir)/ppkeys_hubs"
+      handle => "server_access_grant_access_to_clients",
+      comment => "Grant access to hubs' keys to clients",
+      admit => { @(def.acl) };
 
     windows::
       "c:\program files\cfengine\bin\cf-agent.exe"
       handle => "server_access_grant_access_agent",
       comment => "Grant access to the agent (for cf-runagent)",
-      admit   => { @(def.acl) };
+      admit   => { @(def.policy_servers) };
 
     !policy_server.enterprise::
-
       "$(query_types)"
       handle => "server_access_grant_$(query_types)_for_hosts",
       comment => "Grant $(query_types) reporting query for the hub on the 
hosts",
       resource_type => "query",
       report_data_select => default_data_select_host,
-      admit => { "$(sys.policy_hub)" };
+      admit => { @(def.policy_servers) };
 
     policy_server.enterprise::
-
       "$(query_types)"
       handle => "server_access_grant_$(query_types)_for_hub",
       comment => "Grant $(query_types) reporting query for the hub on the 
policy server",
       resource_type => "query",
       report_data_select => default_data_select_policy_hub,
-      admit => { "$(sys.policy_hub)" };
+      admit => { @(def.policy_servers) };
 
   roles:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/def.cf new/masterfiles-3.6.2/def.cf
--- old/masterfiles-3.6.1/def.cf        2014-07-24 11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/def.cf        2014-10-01 16:04:11.000000000 +0200
@@ -152,6 +152,15 @@
         "$(sys.workdir)/reports",
       };
 
+    # ha_enabled is defined in WORKDIR/cfe_internal/ha/ha_def.cf
+    # Disabled by default
+
+    ha_enabled::
+      "policy_servers" slist => {"$(sys.policy_hub)", @(ha_def.ips)};
+
+    !ha_enabled::
+      "policy_servers" slist => {"$(sys.policy_hub)"};
+
   classes:
 
       ### Enable special features policies. Set to "any" to enable.
@@ -193,6 +202,11 @@
       # sketch activations on a host.
       "cfengine_internal_sudoers_editing_enable" expression => "!any";
 
+      # Class defining which versions of cfengine are (not) supported
+      # by this policy version.
+      # Also note that this policy will only be run on enterprise policy_server
+      "postgresql_maintenance_supported" expression => 
"(policy_server.enterprise.!cfengine_3_5.!ha_enabled)|(policy_server.enterprise.ha_enabled.hub_active)";
+
       # This class is for PosgreSQL maintenance
       # pre-defined to every Sunday at 2 a.m.
       # This can be changed later on.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/inventory/any.cf 
new/masterfiles-3.6.2/inventory/any.cf
--- old/masterfiles-3.6.1/inventory/any.cf      2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/inventory/any.cf      2014-10-01 16:04:11.000000000 
+0200
@@ -63,7 +63,7 @@
 # default, as it runs instantly and has no side effects.
 {
   vars:
-      "ports" slist => { @(mon.listening_ports) },
+      "ports" slist => sort( "mon.listening_ports", "int"),
       meta => { "inventory", "attribute_name=Ports listening" };
 }
 
@@ -324,14 +324,45 @@
                                              "useshell"),
       meta => { "inventory", "attribute_name=$(dmidefs[$(dmivars)])" };
 
+    windows::
+      "dmi[bios-vendor]" string => $(bios_array[1]),
+      meta => { "inventory", "attribute_name=BIOS vendor" };
+
+      "dmi[system-serial-number]" string => $(bios_array[2]),
+      meta => { "inventory", "attribute_name=System serial number" };
+
+      "dmi[bios-version]" string => $(bios_array[3]),
+      meta => { "inventory", "attribute_name=BIOS version" };
+
+      "dmi[system-version]" string => $(bios_array[4]),
+      meta => { "inventory", "attribute_name=System version" };
+
+      "dmi[processor-version]" string => $(processor_array[1]),
+      meta => { "inventory", "attribute_name=CPU model" };
+ 
+      "split_pscomputername"
+        slist => string_split($(system_array[1]), "PSComputerName\s.*", 2),
+        comment => "Work around weird appearance of PSComputerName into System 
manufacturer";
 
-
-      "_canonified_var[$(dmivars)]" string => canonify($(dmivars));
-      "_canonified[$(dmivars)]" string => canonify("$(dmi[$(dmivars)])");
+      "dmi[system-manufacturer]" string => nth(split_pscomputername, 0),
+      meta => { "inventory", "attribute_name=System manufacturer" };
 
   classes:
       "have_dmidecode" expression => 
fileexists($(inventory_control.dmidecoder));
 
+    windows::
+      "bios_match" expression => regextract(".*Manufacturer\s+:\s([a-zA-Z0-9 
]+)\n.*SerialNumber\W+([a-zA-Z0-9 ]+).*SMBIOSBIOSVersion\W+([a-zA-Z0-9 
]+).*Version\W+([a-zA-Z0-9 -]+)",
+                                            execresult("gwmi -query 'SELECT 
SMBIOSBIOSVersion, Manufacturer, SerialNumber, Version FROM WIN32_BIOS'", 
"powershell"),
+                                            "bios_array");
+
+      "processor_match" expression => regextract(".*Name\W+(.*)",
+                                                 execresult("gwmi -query 
'SELECT Name FROM WIN32_PROCESSOR'", "powershell"),
+                                                 "processor_array");
+
+      "system_match" expression => regextract(".*Manufacturer\W+(.*)",
+                                              execresult("gwmi -query 'SELECT 
Manufacturer FROM WIN32_COMPUTERSYSTEM'", "powershell"),
+                                              "system_array");
+
   reports:
     inform_mode::
       "$(this.bundle): Obtained $(dmidefs[$(dmivars)]) = '$(dmi[$(dmivars)])'";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/inventory/lsb.cf 
new/masterfiles-3.6.2/inventory/lsb.cf
--- old/masterfiles-3.6.1/inventory/lsb.cf      2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/inventory/lsb.cf      2014-10-01 16:04:11.000000000 
+0200
@@ -6,7 +6,8 @@
   classes:
       "have_lsb" expression => fileexists($(lsb_exec));
 
-      "_inventory_lsb_found" expression => regcmp("^[1-9][0-9]*$", $(dim));
+      "_inventory_lsb_found" expression => regcmp("^[1-9][0-9]*$", $(dim)),
+                                  scope => "namespace";
 
     _inventory_lsb_found::
       "lsb_$(os)" expression => "any",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/inventory/os.cf 
new/masterfiles-3.6.2/inventory/os.cf
--- old/masterfiles-3.6.1/inventory/os.cf       1970-01-01 01:00:00.000000000 
+0100
+++ new/masterfiles-3.6.2/inventory/os.cf       2014-10-01 16:04:11.000000000 
+0200
@@ -0,0 +1,17 @@
+bundle common inventory_os
+{
+vars:
+
+_inventory_lsb_found::
+  "description" string => "$(inventory_lsb.os) $(inventory_lsb.release)",
+                  meta => { "inventory", "attribute_name=OS" };
+
+!_inventory_lsb_found.windows::
+  "description" string => "$(sys.release)",
+                  meta => { "inventory", "attribute_name=OS" };
+
+!_inventory_lsb_found.!windows::
+  "description" string => "$(sys.flavor) (LSB missing)",
+                  meta => { "inventory", "attribute_name=OS" };
+
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/lib/3.5/common.cf 
new/masterfiles-3.6.2/lib/3.5/common.cf
--- old/masterfiles-3.6.1/lib/3.5/common.cf     2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/lib/3.5/common.cf     2014-10-01 16:04:11.000000000 
+0200
@@ -213,9 +213,9 @@
 # Define x prefixed/suffixed with promise outcome
 {
       promise_repaired => { "promise_repaired_$(x)", "$(x)_repaired", 
"$(x)_ok", "$(x)_reached" };
-      repair_failed => { "repair_failed_$(x)", "$(x)_failed", "$(x)_not_ok", 
"$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" };
-      repair_denied => { "repair_denied_$(x)", "$(x)_denied", "$(x)_not_ok", 
"$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" };
-      repair_timeout => { "repair_timeout_$(x)", "$(x)_timeout", 
"$(x)_not_ok", "$(x)_not_kept", "$(x)_not_repaired", "$(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" };
 }
 
@@ -224,9 +224,9 @@
 {
       scope => "$(scope)";
       promise_repaired => { "promise_repaired_$(x)", "$(x)_repaired", 
"$(x)_ok", "$(x)_reached" };
-      repair_failed => { "repair_failed_$(x)", "$(x)_failed", "$(x)_not_ok", 
"$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" };
-      repair_denied => { "repair_denied_$(x)", "$(x)_denied", "$(x)_not_ok", 
"$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" };
-      repair_timeout => { "repair_timeout_$(x)", "$(x)_timeout", 
"$(x)_not_ok", "$(x)_not_kept", "$(x)_not_repaired", "$(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" };
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/lib/3.5/packages.cf 
new/masterfiles-3.6.2/lib/3.5/packages.cf
--- old/masterfiles-3.6.1/lib/3.5/packages.cf   2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/lib/3.5/packages.cf   2014-10-01 16:04:11.000000000 
+0200
@@ -1016,8 +1016,8 @@
 {
       package_changes => "bulk";
       package_list_command => "/opt/local/bin/pkgin list";
-      package_list_name_regex    => "(.*)\-[0-9]+.*";
-      package_list_version_regex => ".*\-([0-9][^\s]+).*";
+      package_list_name_regex => "([^\s]+)\-[0-9]+.*\s";
+      package_list_version_regex => "[^\s]+\-([0-9][^\s]+)\s";
 
       package_installed_regex => ".*"; # all reported are installed
 
@@ -1027,10 +1027,10 @@
       package_add_command => "/opt/local/bin/pkgin -y install";
 
       package_delete_command => "/opt/local/bin/pkgin -y remove";
-      
+
       # pkgin update doesn't do what you think it does. pkgin install against 
and
       # already installed package will upgrade it however.
-      
+
       package_update_command =>  "/opt/local/bin/pkgin -y install";
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/lib/3.5/paths.cf 
new/masterfiles-3.6.2/lib/3.5/paths.cf
--- old/masterfiles-3.6.1/lib/3.5/paths.cf      2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/lib/3.5/paths.cf      2014-10-01 16:04:11.000000000 
+0200
@@ -103,6 +103,7 @@
       "path[dmidecode]"         string => "/usr/bin/dmidecode";
       "path[echo]"              string => "/usr/bin/echo";
       "path[egrep]"             string => "/usr/bin/egrep";
+      "path[ethtool]"           string => "/usr/bin/ethtool";
       "path[find]"              string => "/usr/bin/find";
       "path[free]"              string => "/usr/bin/free";
       "path[grep]"              string => "/usr/bin/grep";
@@ -184,6 +185,10 @@
       "path[sort]"     string => "/usr/bin/sort";
       "path[tr]"       string => "/usr/bin/tr";
 
+    smartos::
+      "path[npm]"      string => "/opt/local/bin/npm";
+      "path[pip]"      string => "/opt/local/bin/pip";
+
     solaris::
 
       "path[awk]"      string => "/usr/bin/awk";
@@ -243,6 +248,7 @@
       "path[domainname]"    string => "/bin/domainname";
       "path[echo]"          string => "/bin/echo";
       "path[egrep]"         string => "/bin/egrep";
+      "path[ethtool]"       string => "/usr/sbin/ethtool";
       "path[find]"          string => "/usr/bin/find";
       "path[grep]"          string => "/bin/grep";
       "path[hostname]"      string => "/bin/hostname";
@@ -330,6 +336,7 @@
       "path[domainname]"    string => "/bin/domainname";
       "path[echo]"          string => "/bin/echo";
       "path[egrep]"         string => "/bin/egrep";
+      "path[ethtool]"       string => "/sbin/ethtool";
       "path[find]"          string => "/usr/bin/find";
       "path[grep]"          string => "/bin/grep";
       "path[hostname]"      string => "/bin/hostname";
@@ -396,6 +403,7 @@
       "path[domainname]"    string => "/bin/domainname";
       "path[echo]"          string => "/bin/echo";
       "path[egrep]"         string => "/usr/bin/egrep";
+      "path[ethtool]"       string => "/usr/sbin/ethtool";
       "path[find]"          string => "/usr/bin/find";
       "path[free]"          string => "/usr/bin/free";
       "path[grep]"          string => "/usr/bin/grep";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/lib/3.6/cfe_internal.cf 
new/masterfiles-3.6.2/lib/3.6/cfe_internal.cf
--- old/masterfiles-3.6.1/lib/3.6/cfe_internal.cf       2014-07-24 
11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/lib/3.6/cfe_internal.cf       2014-10-01 
16:04:11.000000000 +0200
@@ -127,7 +127,7 @@
                                                      },
                                                      {
                                                          "report": 
"diagnostics",
-                                                         "table": 
"__Diagnostics",
+                                                         "table": 
"Diagnostics",
                                                          
"history_length_days": 1,
                                                          "time_key": 
"TimeStamp"
                                                      }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/lib/3.6/common.cf 
new/masterfiles-3.6.2/lib/3.6/common.cf
--- old/masterfiles-3.6.1/lib/3.6/common.cf     2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/lib/3.6/common.cf     2014-10-01 16:04:11.000000000 
+0200
@@ -257,9 +257,9 @@
 # @param x The unique part of the classes to be defined
 {
       promise_repaired => { "promise_repaired_$(x)", "$(x)_repaired", 
"$(x)_ok", "$(x)_reached" };
-      repair_failed => { "repair_failed_$(x)", "$(x)_failed", "$(x)_not_ok", 
"$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" };
-      repair_denied => { "repair_denied_$(x)", "$(x)_denied", "$(x)_not_ok", 
"$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" };
-      repair_timeout => { "repair_timeout_$(x)", "$(x)_timeout", 
"$(x)_not_ok", "$(x)_not_kept", "$(x)_not_repaired", "$(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" };
 }
 
@@ -273,9 +273,9 @@
 {
       scope => "$(scope)";
       promise_repaired => { "promise_repaired_$(x)", "$(x)_repaired", 
"$(x)_ok", "$(x)_reached" };
-      repair_failed => { "repair_failed_$(x)", "$(x)_failed", "$(x)_not_ok", 
"$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" };
-      repair_denied => { "repair_denied_$(x)", "$(x)_denied", "$(x)_not_ok", 
"$(x)_not_kept", "$(x)_not_repaired", "$(x)_reached" };
-      repair_timeout => { "repair_timeout_$(x)", "$(x)_timeout", 
"$(x)_not_ok", "$(x)_not_kept", "$(x)_not_repaired", "$(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" };
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/lib/3.6/files.cf 
new/masterfiles-3.6.2/lib/3.6/files.cf
--- old/masterfiles-3.6.1/lib/3.6/files.cf      2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/lib/3.6/files.cf      2014-10-01 16:04:11.000000000 
+0200
@@ -1348,6 +1348,17 @@
       preserve    => "true";
 }
 
+body copy_from perms_dcp(from)
+# @brief Copy a local file if it is different from the existing copy and
+# preserve file permissions on the local copy.
+#
+# @param from The path to the source file.
+{
+      source      => "$(from)";
+      preserve    => "true";
+      compare     => "digest";
+}
+
 body copy_from backup_local_cp(from)
 # @brief Copy a local file and  keep a backup of old versions.
 #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/lib/3.6/packages.cf 
new/masterfiles-3.6.2/lib/3.6/packages.cf
--- old/masterfiles-3.6.1/lib/3.6/packages.cf   2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/lib/3.6/packages.cf   2014-10-01 16:04:11.000000000 
+0200
@@ -1195,8 +1195,8 @@
 {
       package_changes => "bulk";
       package_list_command => "/opt/local/bin/pkgin list";
-      package_list_name_regex    => "(.*)\-[0-9]+.*";
-      package_list_version_regex => ".*\-([0-9][^\s]+).*";
+      package_list_name_regex => "([^\s]+)\-[0-9]+.*\s";
+      package_list_version_regex => "[^\s]+\-([0-9][^\s]+)\s";
 
       package_installed_regex => ".*"; # all reported are installed
 
@@ -1206,10 +1206,10 @@
       package_add_command => "/opt/local/bin/pkgin -y install";
 
       package_delete_command => "/opt/local/bin/pkgin -y remove";
-      
+
       # pkgin update doesn't do what you think it does. pkgin install against 
and
       # already installed package will upgrade it however.
-      
+
       package_update_command =>  "/opt/local/bin/pkgin -y install";
 }
 
@@ -1832,19 +1832,19 @@
     debian::
       "$(package)"
       package_policy => "addupdate",
-      package_version => "9999999999",
+      package_version => "999999999",
       package_method => apt_get_permissive;
 
     redhat::
       "$(package)"
       package_policy => "addupdate",
-      package_version => "9999999999",
+      package_version => "999999999",
       package_method => yum_rpm_permissive;
 
     suse::
       "$(package)"
       package_policy => "addupdate",
-      package_version => "9999999999",
+      package_version => "999999999",
       package_method => zypper;
 
     !debian.!redhat.!suse::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/lib/3.6/paths.cf 
new/masterfiles-3.6.2/lib/3.6/paths.cf
--- old/masterfiles-3.6.1/lib/3.6/paths.cf      2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/lib/3.6/paths.cf      2014-10-01 16:04:11.000000000 
+0200
@@ -141,6 +141,7 @@
       "path[dmidecode]"         string => "/usr/bin/dmidecode";
       "path[echo]"              string => "/usr/bin/echo";
       "path[egrep]"             string => "/usr/bin/egrep";
+      "path[ethtool]"           string => "/usr/bin/ethtool";
       "path[find]"              string => "/usr/bin/find";
       "path[free]"              string => "/usr/bin/free";
       "path[grep]"              string => "/usr/bin/grep";
@@ -170,12 +171,11 @@
       "path[journalctl]"        string => "/usr/bin/journalctl";
       "path[netctl]"            string => "/usr/bin/netctl";
 
-    freebsd|netbsd::
+    freebsd|netbsd|openbsd::
 
       "path[awk]"      string => "/usr/bin/awk";
       "path[bc]"       string => "/usr/bin/bc";
       "path[cat]"      string => "/bin/cat";
-      "path[cksum]"    string => "/usr/bin/cksum";
       "path[crontabs]" string => "/var/cron/tabs";
       "path[cut]"      string => "/usr/bin/cut";
       "path[dc]"       string => "/usr/bin/dc";
@@ -194,32 +194,19 @@
       "path[sed]"      string => "/usr/bin/sed";
       "path[sort]"     string => "/usr/bin/sort";
       "path[tr]"       string => "/usr/bin/tr";
+
+    freebsd|netbsd::
+
+      "path[cksum]"    string => "/usr/bin/cksum";
       "path[realpath]" string => "/bin/realpath";
 
     openbsd::
 
-      "path[awk]"      string => "/usr/bin/awk";
-      "path[bc]"       string => "/usr/bin/bc";
-      "path[cat]"      string => "/bin/cat";
       "path[cksum]"    string => "/bin/cksum";
-      "path[crontabs]" string => "/var/cron/tabs";
-      "path[cut]"      string => "/usr/bin/cut";
-      "path[dc]"       string => "/usr/bin/dc";
-      "path[df]"       string => "/bin/df";
-      "path[diff]"     string => "/usr/bin/diff";
-      "path[dig]"      string => "/usr/sbin/dig";
-      "path[echo]"     string => "/bin/echo";
-      "path[egrep]"    string => "/usr/bin/egrep";
-      "path[find]"     string => "/usr/bin/find";
-      "path[grep]"     string => "/usr/bin/grep";
-      "path[ls]"       string => "/bin/ls";
-      "path[netstat]"  string => "/usr/bin/netstat";
-      "path[ping]"     string => "/usr/bin/ping";
-      "path[perl]"     string => "/usr/bin/perl";
-      "path[printf]"   string => "/usr/bin/printf";
-      "path[sed]"      string => "/usr/bin/sed";
-      "path[sort]"     string => "/usr/bin/sort";
-      "path[tr]"       string => "/usr/bin/tr";
+
+    smartos::
+      "path[npm]"      string => "/opt/local/bin/npm";
+      "path[pip]"      string => "/opt/local/bin/pip";
 
     solaris::
 
@@ -280,6 +267,7 @@
       "path[domainname]"    string => "/bin/domainname";
       "path[echo]"          string => "/bin/echo";
       "path[egrep]"         string => "/bin/egrep";
+      "path[ethtool]"       string => "/usr/sbin/ethtool";
       "path[find]"          string => "/usr/bin/find";
       "path[grep]"          string => "/bin/grep";
       "path[hostname]"      string => "/bin/hostname";
@@ -367,6 +355,7 @@
       "path[domainname]"    string => "/bin/domainname";
       "path[echo]"          string => "/bin/echo";
       "path[egrep]"         string => "/bin/egrep";
+      "path[ethtool]"       string => "/sbin/ethtool";
       "path[find]"          string => "/usr/bin/find";
       "path[grep]"          string => "/bin/grep";
       "path[hostname]"      string => "/bin/hostname";
@@ -412,7 +401,7 @@
       "path[sysctl]"        string => "/sbin/sysctl";
 
     !suse::
-      "path[logger]"        string => "/usr/bin/logger"; 
+      "path[logger]"        string => "/usr/bin/logger";
 
     suse::
 
@@ -433,6 +422,7 @@
       "path[domainname]"    string => "/bin/domainname";
       "path[echo]"          string => "/bin/echo";
       "path[egrep]"         string => "/usr/bin/egrep";
+      "path[ethtool]"       string => "/usr/sbin/ethtool";
       "path[find]"          string => "/usr/bin/find";
       "path[free]"          string => "/usr/bin/free";
       "path[grep]"          string => "/usr/bin/grep";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/lib/3.6/reports.cf 
new/masterfiles-3.6.2/lib/3.6/reports.cf
--- old/masterfiles-3.6.1/lib/3.6/reports.cf    2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/lib/3.6/reports.cf    2014-10-01 16:04:11.000000000 
+0200
@@ -56,9 +56,7 @@
 {
       metatags_include => { "inventory", "report" };
       metatags_exclude => { "noreport" };
-      monitoring_include => { "cpu",
-                              "loadavg",
-                              "diskfree" };
+      monitoring_include => { "" };
 }
 
 body report_data_select default_data_select_policy_hub
@@ -70,5 +68,5 @@
 {
       metatags_include => { "inventory", "report" };
       metatags_exclude => { "noreport" };
-
+      monitoring_include => { "" };
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/promises.cf 
new/masterfiles-3.6.2/promises.cf
--- old/masterfiles-3.6.1/promises.cf   2014-07-24 11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/promises.cf   2014-10-01 16:04:11.000000000 +0200
@@ -12,6 +12,7 @@
                         # Common bundle first (Best Practice)
                           inventory_control,
                           @(inventory.bundles),
+                          ha_def,
                           def,
                           cfe_internal_hub_vars,
 
@@ -25,11 +26,13 @@
                          # Agent bundle
                           cfe_internal_management,   # See 
cfe_internal/CFE_cfengine.cf
                           service_catalogue,
+                          ha_main,
 
       };
 
       inputs => {
                  # File definition for global variables and classes
+                  "cfe_internal/ha/ha_def.cf",
                   "def.cf",
 
                 # Inventory policy
@@ -66,10 +69,11 @@
 
                 # List of services here
                   "services/file_change.cf",
+                  "cfe_internal/ha/ha.cf"
 
       };
 
-      version => "CFEngine Promises.cf 3.6.0";
+      version => "CFEngine Promises.cf 3.6.2";
 
       # Uncomment to connect to the hub using latest protocol.
       #protocol_version => "latest";
@@ -97,26 +101,26 @@
   vars:
       # This list is intended to grow as needed
     !(cfengine_3_4|cfengine_3_5).debian::
-      "inputs" slist => { "inventory/any.cf", "inventory/linux.cf", 
"inventory/lsb.cf", "inventory/debian.cf" };
-      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_linux", "inventory_lsb", "inventory_debian" };
+      "inputs" slist => { "inventory/any.cf", "inventory/linux.cf", 
"inventory/lsb.cf", "inventory/debian.cf", "inventory/os.cf" };
+      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_linux", "inventory_lsb", "inventory_debian", 
"inventory_os" };
     !(cfengine_3_4|cfengine_3_5).redhat::
-      "inputs" slist => { "inventory/any.cf", "inventory/linux.cf", 
"inventory/lsb.cf", "inventory/redhat.cf" };
-      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_linux", "inventory_lsb", "inventory_redhat" };
+      "inputs" slist => { "inventory/any.cf", "inventory/linux.cf", 
"inventory/lsb.cf", "inventory/redhat.cf", "inventory/os.cf" };
+      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_linux", "inventory_lsb", "inventory_redhat", 
"inventory_os" };
     !(cfengine_3_4|cfengine_3_5).suse::
-      "inputs" slist => { "inventory/any.cf", "inventory/linux.cf", 
"inventory/lsb.cf", "inventory/suse.cf" };
-      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_linux", "inventory_lsb", "inventory_suse" };
+      "inputs" slist => { "inventory/any.cf", "inventory/linux.cf", 
"inventory/lsb.cf", "inventory/suse.cf", "inventory/os.cf" };
+      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_linux", "inventory_lsb", "inventory_suse", 
"inventory_os" };
     !(cfengine_3_4|cfengine_3_5).windows::
-      "inputs" slist => { "inventory/any.cf", "inventory/windows.cf" };
-      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_windows" };
+      "inputs" slist => { "inventory/any.cf", "inventory/windows.cf", 
"inventory/os.cf" };
+      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_windows", "inventory_os" };
     !(cfengine_3_4|cfengine_3_5).macos::
-      "inputs" slist => { "inventory/any.cf", "inventory/macos.cf" };
-      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_macos" };
+      "inputs" slist => { "inventory/any.cf", "inventory/macos.cf", 
"inventory/os.cf" };
+      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_macos", "inventory_os" };
     !(cfengine_3_4|cfengine_3_5).linux.!specific_linux_os::
-      "inputs" slist => { "inventory/any.cf", "inventory/linux.cf", 
"inventory/lsb.cf" };
-      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_linux", "inventory_lsb" };
+      "inputs" slist => { "inventory/any.cf", "inventory/linux.cf", 
"inventory/lsb.cf", "inventory/os.cf" };
+      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_linux", "inventory_lsb", "inventory_os" };
     !cfengine_3_5.other_unix_os::
-      "inputs" slist => { "inventory/any.cf", "inventory/generic.cf" };
-      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_generic" };
+      "inputs" slist => { "inventory/any.cf", "inventory/generic.cf", 
"inventory/os.cf" };
+      "bundles" slist => { "inventory_control", "inventory_any", 
"inventory_autorun", "inventory_generic", "inventory_os" };
 
     (cfengine_3_4|cfengine_3_5)::
       "inputs" slist => { cf_null };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/update/update_bins.cf 
new/masterfiles-3.6.2/update/update_bins.cf
--- old/masterfiles-3.6.1/update/update_bins.cf 2014-07-24 11:21:34.000000000 
+0200
+++ new/masterfiles-3.6.2/update/update_bins.cf 2014-10-01 16:04:11.000000000 
+0200
@@ -175,7 +175,7 @@
       package_policy => "update",
       package_select => "==",            # picks the newest Nova available
       package_architectures => { "$(pkgarch)" },
-      package_version => "3.6.1-1",         # Install new Nova anyway
+      package_version => "3.6.2-1",         # Install new Nova anyway
       package_method => u_generic( "$(local_software_dir)" ),
       ifvarclass => "nova_edition.have_software_dir",
       classes => u_if_else("bin_update_success", "bin_update_fail");
@@ -188,7 +188,7 @@
       package_policy => "update",
       package_select => "==",            # picks the newest Nova available
       package_architectures => { "$(pkgarch)" },
-      package_version => "3.6.1",         # Install new Nova anyway
+      package_version => "3.6.2",         # Install new Nova anyway
       package_method => u_generic( "$(local_software_dir)" ),
       ifvarclass => "nova_edition.have_software_dir",
       classes => u_if_else("bin_update_success", "bin_update_fail");
@@ -201,7 +201,7 @@
       package_policy => "update",
       package_select => "==",            # picks the newest Nova available
       package_architectures => { "$(pkgarch)" },
-      package_version => "3.6.1.0",       # Install new Nova anyway
+      package_version => "3.6.2.0",       # Install new Nova anyway
       package_method => u_generic( "$(local_software_dir)" ),
       ifvarclass => "nova_edition.have_software_dir",
       classes => u_if_else("bin_update_success", "bin_update_fail");
@@ -214,7 +214,7 @@
       package_policy => "update",
       package_select => "==",            # picks the newest Nova available
       package_architectures => { "$(pkgarch)" },
-      package_version => "3.6.1-1",         # Install new Nova anyway
+      package_version => "3.6.2-1",         # Install new Nova anyway
       package_method => u_generic( "$(local_software_dir)" ),
       ifvarclass => "nova_edition.have_software_dir",
       classes => u_if_else("bin_update_success", "bin_update_fail");
@@ -227,7 +227,7 @@
       package_policy => "update",
       package_select => "==",            # picks the newest Nova available
       package_architectures => { "$(pkgarch)" },
-      package_version => "3.6.1",         # Install new Nova anyway
+      package_version => "3.6.2",         # Install new Nova anyway
       package_method => u_generic( "$(local_software_dir)" ),
       ifvarclass => "nova_edition.have_software_dir",
       classes => u_if_else("bin_update_success", "bin_update_fail");
@@ -240,7 +240,20 @@
       package_policy => "update",
       package_select => "==",            # picks the newest Nova available
       package_architectures => { "$(pkgarch)" },
-      package_version => "3.6.1.0",       # Install new Nova anyway
+      package_version => "3.6.2.0",       # Install new Nova anyway
+      package_method => u_generic( "$(local_software_dir)" ),
+      ifvarclass => "nova_edition.have_software_dir",
+      classes => u_if_else("bin_update_success", "bin_update_fail");
+
+    !am_policy_hub.aix.enterprise::
+
+      "$(novapkg)"
+      comment => "Update Nova package to a newer version (package is there)",
+      handle => 
"cfe_internal_update_bins_packages_nova_update_aix_only_pkg_there",
+      package_policy => "update",
+      package_select => "==",            # picks the newest Nova available
+      package_architectures => { "$(pkgarch)" },
+      package_version => "3.6.2.0",       # Install new Nova anyway
       package_method => u_generic( "$(local_software_dir)" ),
       ifvarclass => "nova_edition.have_software_dir",
       classes => u_if_else("bin_update_success", "bin_update_fail");
@@ -282,14 +295,14 @@
       "$(sys.workdir)/bin/cf-upgrade"
       comment => "Copy cf-upgrade binary from policy hub for i386 linux",
       handle => "cfe_internal_update_bins_files_cf_upgrade_i386_linux",
-      copy_from => 
u_rcp("$(master_software_location)/cf-upgrade/linux.i386/cf-upgrade","$(sys.policy_hub)"),
+      copy_from => 
u_rcp("$(master_software_location)/cf-upgrade/linux.i386/cf-upgrade", 
@(update_def.policy_servers)),
       perms => u_m("0755"),
       ifvarclass => "linux.i686";
 
       "$(sys.workdir)/bin/cf-upgrade"
       comment => "Copy cf-upgrade binary from policy hub for x86_64 linux",
       handle => "cfe_internal_update_bins_files_cf_upgrade_x86_64_linux",
-      copy_from => 
u_rcp("$(master_software_location)/cf-upgrade/linux.x86_64/cf-upgrade","$(sys.policy_hub)"),
+      copy_from => 
u_rcp("$(master_software_location)/cf-upgrade/linux.x86_64/cf-upgrade", 
@(update_def.policy_servers)),
       perms => u_m("0755"),
       ifvarclass => "linux.x86_64";
 
@@ -312,7 +325,7 @@
       "$(local_software_dir)"
       comment => "Copy binary updates from master source on policy server",
       handle => "cfe_internal_update_bins_files_pkg_copy",
-      copy_from => 
u_pcp("$(master_software_location)/$(sys.flavour)_$(sys.arch)","$(sys.policy_hub)"),
+      copy_from => 
u_pcp("$(master_software_location)/$(sys.flavour)_$(sys.arch)", 
@(update_def.policy_servers)),
       depth_search => u_recurse("1"),  # Nova updates should be in root dir
       action => u_immediate,
       classes => u_if_repaired("bin_newpkg");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/update/update_policy.cf 
new/masterfiles-3.6.2/update/update_policy.cf
--- old/masterfiles-3.6.1/update/update_policy.cf       2014-07-24 
11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/update/update_policy.cf       2014-10-01 
16:04:11.000000000 +0200
@@ -156,7 +156,7 @@
       "$(inputs_dir)/cf_promises_validated"
       comment => "Check whether a validation stamp is available for a new 
policy update to reduce the distributed load",
       handle => "cfe_internal_update_policy_check_valid_update",
-      copy_from => 
u_rcp("$(master_location)/cf_promises_validated","$(sys.policy_hub)"),
+      copy_from => u_rcp("$(master_location)/cf_promises_validated", 
@(update_def.policy_servers)),
       action => u_immediate,
       classes => u_if_repaired("validated_updates_ready");
 
@@ -165,7 +165,7 @@
       "$(modules_dir)"
       comment => "Always update modules files on client side",
       handle => "cfe_internal_update_policy_files_update_modules",
-      copy_from => u_rcp("$(modules_dir)","$(sys.policy_hub)"),
+      copy_from => u_rcp("$(modules_dir)", @(update_def.policy_servers)),
       depth_search => u_recurse("inf"),
       perms => u_m("755"),
       action => u_immediate;
@@ -173,7 +173,7 @@
       "$(plugins_dir)"
       comment => "Always update plugins files on client side",
       handle => "cfe_internal_update_policy_files_update_plugins",
-      copy_from => u_rcp("$(plugins_dir)","$(sys.policy_hub)"),
+      copy_from => u_rcp("$(plugins_dir)", @(update_def.policy_servers)),
       depth_search => u_recurse("inf"),
       perms => u_m("755"),
       action => u_immediate;
@@ -183,7 +183,7 @@
       "$(sys.workdir)\modules"
       comment => "Always update modules files on client side (Windows)",
       handle => "cfe_internal_update_policy_files_update_modules_windows",
-      copy_from => u_rcp("$(modules_dir)","$(sys.policy_hub)"),
+      copy_from => u_rcp("$(modules_dir)", @(update_def.policy_servers)),
       depth_search => u_recurse("inf"),
       perms => u_m("755"),
       action => u_immediate;
@@ -191,7 +191,7 @@
       "$(sys.workdir)\plugins"
       comment => "Always update plugins files on client side (Windows)",
       handle => "cfe_internal_update_policy_files_update_plugins_windows",
-      copy_from => u_rcp("$(plugins_dir)","$(sys.policy_hub)"),
+      copy_from => u_rcp("$(plugins_dir)", @(update_def.policy_servers)),
       depth_search => u_recurse("inf"),
       perms => u_m("755"),
       action => u_immediate;
@@ -201,12 +201,20 @@
       "$(inputs_dir)"
       comment => "Copy policy updates from master source on policy server if a 
new validation was acquired",
       handle => "cfe_internal_update_policy_files_inputs_dir",
-      copy_from => u_rcp("$(master_location)","$(sys.policy_hub)"),
+      copy_from => u_rcp("$(master_location)", @(update_def.policy_servers)),
       depth_search => u_recurse("inf"),
       file_select  => u_input_files,
       action => u_immediate,
       classes => u_if_repaired("update_report");
 
+    !policy_server.ha_enabled::
+      "$(sys.workdir)/policy_server.dat"
+      comment => "Copy policy_server.dat file from server",
+      handle => "cfe_internal_update_ha_policy_server",
+      copy_from => u_rcp("$(sys.workdir)/state/master_hub.dat", 
@(update_def.policy_servers)),
+      action => u_immediate,
+      classes => u_if_repaired("replica_failover");  # not needed ?
+
     !windows::
 
       "$(dir_bin)/$(agents)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/update/update_processes.cf 
new/masterfiles-3.6.2/update/update_processes.cf
--- old/masterfiles-3.6.1/update/update_processes.cf    2014-07-24 
11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/update/update_processes.cf    2014-10-01 
16:04:11.000000000 +0200
@@ -142,18 +142,19 @@
       handle => "cfe_internal_maintain_cfe_hub_process_processes_redis",
       ifvarclass => "nova|enterprise";
 
-      "$(cfe_internal_process_knowledge.bindir)/postgres"
-      restart_class => "start_postgres_server",
-      comment => "Monitor postgres process",
-      handle => "cfe_internal_maintain_cfe_hub_process_processes_postgres",
-      ifvarclass => "nova|enterprise";
-
       "$(cfe_internal_process_knowledge.bindir)/cf-consumer"
       restart_class => "start_cf_consumer",
       comment => "Monitor cf-consumer process",
       handle => "cfe_internal_maintain_cfe_hub_process_processes_cf_consumer",
       ifvarclass => "(nova|enterprise).no_vacuumdb";
 
+   am_policy_hub.!ha_enabled::
+      "$(cfe_internal_process_knowledge.bindir)/postgres"
+      restart_class => "start_postgres_server",
+      comment => "Monitor postgres process",
+      handle => "cfe_internal_maintain_cfe_hub_process_processes_postgres",
+      ifvarclass => "nova|enterprise";
+
     am_policy_hub.files_ok.!windows::
       "cf-hub"      restart_class => "start_hub",
       comment => "Monitor cf-hub process",
@@ -182,7 +183,7 @@
       classes => u_kept_successful_command,
       handle => "cfe_internal_maintain_cfe_hub_process_commands_start_redis";
 
-    !windows.am_policy_hub.start_postgres_server::
+    !windows.am_policy_hub.!ha_enabled.start_postgres_server::
      "$(cfe_internal_process_knowledge.bindir)/pg_ctl -D 
$(cfe_internal_update_policy.postgresdb_dir) -l 
$(cfe_internal_update_policy.postgresdb_log) start"
       contain => u_postgres,
       comment => "Start postgres process",
@@ -386,5 +387,5 @@
       repair_failed => { $(theclass) };
       repair_denied => { $(theclass) };
       repair_timeout => { $(theclass) };
-      persist_time => 99999999999;
+      persist_time => 999999999;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/masterfiles-3.6.1/update.cf 
new/masterfiles-3.6.2/update.cf
--- old/masterfiles-3.6.1/update.cf     2014-07-24 11:21:34.000000000 +0200
+++ new/masterfiles-3.6.2/update.cf     2014-10-01 16:04:11.000000000 +0200
@@ -7,6 +7,7 @@
 body common control
 {
       bundlesequence => {
+                          "ha_def",
                           "update_def",
                           "cfe_internal_dc_workflow",
                           "cfe_internal_update_policy",
@@ -14,9 +15,10 @@
                           "cfe_internal_update_processes",
       };
 
-      version => "update.cf 3.6.1";
+      version => "update.cf 3.6.2";
 
       inputs => {
+                  "cfe_internal/ha/ha_def.cf",
                   "update/update_bins.cf",
                   "update/cfe_internal_dc_workflow.cf",
                   "update/cfe_internal_local_git_remote.cf",
@@ -43,7 +45,7 @@
 {
   vars:
       "input_name_patterns" slist => { ".*\.cf",".*\.dat",".*\.txt", 
".*\.conf", ".*\.mustache",
-                                       "cf_promises_release_id" },
+                                       "cf_promises_release_id", ".*\.json" },
       comment => "Filename patterns to match when updating the policy (see 
update/update_policy.cf)",
       handle => "common_def_vars_input_name_patterns";
 
@@ -75,6 +77,15 @@
       comment => "Group that CFEngine Enterprise webserver runs as",
       handle => "common_def_vars_cf_cfapache_group";
 
+    # ha_enabled is defined in WORKDIR/cfe_internal/ha/ha_def.cf
+    # Disabled by default
+
+    ha_enabled::
+      "policy_servers" slist => {"$(sys.policy_hub)", @(ha_def.ips)};
+
+    !ha_enabled::
+      "policy_servers" slist => {"$(sys.policy_hub)"};
+
   classes:
 
       # Trigger binary upgrade from policy hub

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to