On Wed, 14 Dec 2011 14:54:02 +0000 (GMT) Mark Dixon <m.c.di...@leeds.ac.uk> 
wrote: 

MD> How would you cleanly do an if..elif..else ? The example you give
MD> appears to be an if..else.

cfengine doesn't have that.  It has a switch statement, really, but it
will spin through the switch until it's settled (up to 3 passes I
think).  Run cf-agent with -v and watch how it evaluates the conditions
on each pass.

MD> What I'm trying to avoid is the situation, like in the example below,
MD> where the "no_file_exists" class expression has to be rewritten
MD> everytime I need to test for another file:

I understand.  Try this, I think it will do what you want.

Ted

#+begin_src cfengine3
body common control
{
  bundlesequence => { "g" };
}

bundle common g 
{
  classes:
    "my_file_exists"   expression => fileexists("/myfile");
    "your_file_exists" expression => fileexists("/yourfile");

  vars:
    any::
      "root"       string => "myroot3", policy => "overridable";
    my_file_exists::
      "root"       string => "myroot1", policy => "overridable";
    your_file_exists::
      "root"       string => "myroot2", policy => "overridable";

  reports:
    agent:: # note you can't use "any" class in reports
      "Root is $(root)";
}
#+end_src
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to