Hi,

 

I've got an issue with calling bundles with a loop - variables and
classes set on the first call to the bundle don't seem to get cleared on
the second and subsequent calls.

 

So for example:

 

body common control {

   version => "1.0.0";

 

   bundlesequence => {

       "example"

  };

   inputs => {

      "cfengine_stdlib.cf"

   };

}

 

bundle agent example {

 

vars:

   "names" slist => { "paul", "george", "ringo", "john" };

 

methods:

  "any" usebundle => echoname("$(names)");

}

 

 

bundle agent echoname(name) {

 

commands:

  !echo_run::

   "/usr/bin/echo $(name)"

     classes => if_repaired("echo_run");

}

 

 

The only promise it seems to keep is 

 

"/usr/bin/echo paul"

 

I'm thinking that the issue is that whilst it looks like I can call a
bundle just like it was a subroutine with "usebundle", and the variables
and classes remain local in scope, that the variables and classes are
persistent between calls, so that once the first call sets "echo_run" to
true, it remains true for subsequent calls.

 

If this indeed the case, is there any way of clearing the namespace of a
bundle before it's entered with a "usebundle" call (or on exit), so that
it behaves a little more intuitively?

 

Thanks,

 

Simon

 

 

PS: Stuck on cfengine 3.0.4 / 3.0.5p1 for this exercise, due to a slew
of QA requirements.

--

Simon Oxwell

ControlCircle

Senior Server Engineer

The Datacentre People

        Hertsmere House, 2 Hertsmere Road,

simon.oxw...@controlcircle.com <mailto:simon.oxw...@controlcircle.com> 

London, E14 4AB

 

 

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to