I have the following promises.cf to handle multiple clusters. It used to work 
with cfengine community versions before 3.1.4:

This is a simplified example:
{{{
body common control

{
#version         => "$Revision: 4450 $ $Author: bas $";
version         => "1.3.0";
ignore_missing_bundles => "true";

any::

    bundlesequence  => {
        @(g.sara_bundles)
    };

    inputs          => {
        @(g.common_inputs),
        "$(g.cluster_name)/change_management.cf",
        "$(g.cluster_name)/quarterly.cf",
        "$(g.cluster_name)/hourly.cf",
        "$(g.cluster_name)/daily.cf",

    };
}

bundle common g
{
    vars:
                any::
                        "common_inputs" slist => {
                                "update.cf"
                        }

                        "node_status"       string  => "/etc/node_status";

                LISA_CLUSTER::
                         "cluster_name" string => "lisa",
                                             policy => "overridable";

     classes:
        "LISA_CLUSTER"      expression  => regline(".*lisa.*", 
"$(node_status)/cluster");
        "INTERNE_SERVERS"   expression  => regline(".*interne-servers.*", 
"$(node_status)/cluster"); 
}

}}}

If run this on a node in the lisa cluster everything works as expected, output:
{{{
community>   > Parsing file /var/lib/cfengine3/inputs/promises.cf
community> Initiate variable convergence...
community>  -> Checking common class promises...
community>  ?> defining additional global class LISA_CLUSTER
community>  ?> defining additional global class Production
community>  ?> defining additional global class debian_squeeze
community>  ?> defining additional global class all
.....
Initiate variable convergence...
community>  -> Checking common class promises...
community>  -> Checking common class promises...
community> SET ignore_missing_bundles true
community>   > Parsing file /var/lib/cfengine3/inputs/lisa/quarterly.cf
community> Initiate variable convergence...
community>  -> Checking common class promises...
community>  -> Checking common class promises...
community> SET ignore_missing_bundles true
community>   > Parsing file /var/lib/cfengine3/inputs/lisa/hourly.cf
community> Initiate variable convergence...
community>  -> Checking common class promises...
community>  -> Checking common class promises...
community> SET ignore_missing_bundles true
community>   > Parsing file /var/lib/cfengine3/inputs/lisa/daily.cf
}}}

But when i change the regline order to:
{{{
     classes:
        "INTERNE_SERVERS"   expression  => regline(".*interne-servers.*", 
"$(node_status)/cluster"); 
        "LISA_CLUSTER"      expression  => regline(".*lisa.*", 
"$(node_status)/cluster");
}}}

The class LISA_CLUSTER is set too late:
{{{
....
community> SET ignore_missing_bundles true
community>   > Parsing file /var/lib/cfengine3/inputs/undefined/global.cf
community> Initiate variable convergence...
community>  -> Checking common class promises...
community>  -> Checking common class promises...
community> SET ignore_missing_bundles true
community>   > Parsing file 
/var/lib/cfengine3/inputs/undefined/change_management.cf
community> Initiate variable convergence...
community>  -> Checking common class promises...
community>  -> Checking common class promises...
community> SET ignore_missing_bundles true
community>   > Parsing file /var/lib/cfengine3/inputs/undefined/quarterly.cf
community> Initiate variable convergence...
community>  -> Checking common class promises...
community>  -> Checking common class promises...
community> SET ignore_missing_bundles true
community>   > Parsing file /var/lib/cfengine3/inputs/undefined/hourly.cf
community> Initiate variable convergence...
community>  -> Checking common class promises...
community>  -> Checking common class promises...
community> SET ignore_missing_bundles true
community>   > Parsing file /var/lib/cfengine3/inputs/undefined/daily.cf
community> Initiate variable convergence...
community>  -> Checking common class promises...
community>  ?> defining additional global class LISA_CLUSTER
}}}


Is this a locking problem in regline? Or is there another problem.  

regards,


--
Bas van der Vlies
[email protected]



_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to