Classes defined in common bodies are global, classes defined in agent- or
other-bundles are local to that bundle.

-Dan

> Ok, so it also doesn't appear to work if I move the
> curl_command_exists:: check to right before the usebundle
> _verify_asset_command call, with basically the same verbose output. I
> would say it's either a bug or, more likely, a misunderstanding on my
> part about how usebundle methods work. If no one has any suggestions in
> the next couple of hours, I'll open a ticket with Cfengine.
> 
> 
> -----Original Message-----
> From: help-cfengine-boun...@cfengine.org
> [mailto:help-cfengine-boun...@cfengine.org] On Behalf Of Justin Lloyd
> Sent: Tuesday, March 09, 2010 12:34 PM
> To: help-cfengine@cfengine.org
> Subject: soft class not visible across bundles
> 
> I should be able to define a class in one bundle and use it in another.
> However, in the following example, the "curl_command_exists" class I
> define in the _verify_curl_command bundle doesn't appear to be available
> to the _verify_asset_command bundle.
> 
> [r...@gdcscf3lgmt01 masterfiles.devel]# cf-agent -Kf ./test.asset.cf 
> R: /usr/bin/curl exists
> [r...@gdcscf3lgmt01 masterfiles.devel]# cf-agent -vKf ./test.asset.cf
> ...<snipped for brevity>...
> nova>    =========================================================
> nova>    classes in bundle _verify_curl_command (1)
> nova>    =========================================================
> nova> 
> nova> 
> nova>      +  Private classes augmented:
> nova>      +       curl_command_exists
> ...<snipped for brevity>...
> nova>    =========================================================
> nova>    vars in bundle _verify_asset_command (1)
> nova>    =========================================================
> nova> 
> nova> 
> nova> . . . . . . . . . . . . . . . . . . . . . . . . . . . .
> nova> Skipping whole next promise (asset_command), as context
> curl_command_exists is not relevant
> ...<snipped for brevity>...
> [r...@gdcscf3lgmt01 masterfiles.devel]# 
> 
> Here is the contents of test.asset.cf, which is pretty simple. Can
> anyone see if I'm doing something wrong? I realize I should probably
> check for the command before even calling the _verify_asset_command
> bundle, and I may take that approach, but I'm wondering why what I'm
> trying is not working. 
> 
> #----- begin test.asset.cf -----
> body common control {
>     bundlesequence => { "asset" };
>             inputs => { "cfengine_stdlib.cf" };
> }
> 
> bundle agent asset {
>     methods:
>          "verify_curl" usebundle => _verify_curl_command;
>         "verify_asset" usebundle => _verify_asset_command;
> }
> 
> bundle agent _verify_curl_command {
>     vars:
>         linux::
>             "curl_command" string => "/usr/bin/curl";
>         solaris::
>             "curl_command" string => "/usr/local/bin/curl";
> 
>     classes:
>         "curl_command_exists" expression =>
> fileexists("$(curl_command)");
> 
>     reports:
>         curl_command_exists::
>             "$(curl_command) exists";
> }
> 
> bundle agent _verify_asset_command {
>     vars:
>         curl_command_exists::
>             "asset_command" string => "/usr/local/bin/asset";
> 
>     classes:
>         "asset_command_exists" expression =>
> fileexists("$(asset_command)");
> 
>     reports:
>         asset_command_exists::
>             "$(asset_command) exists";
> }
> #----- end test.asset.cf -----
> 
> -- 
> Justin C. Lloyd 
> Unix Infrastructure Engineer 
> DigitalGlobe, An Imaging and Information Company
> 
> 
> 
> This electronic communication and any attachments may contain
> confidential and proprietary 
> information of DigitalGlobe, Inc. If you are not the intended recipient,
> or an agent or employee 
> responsible for delivering this communication to the intended recipient,
> or if you have received 
> this communication in error, please do not print, copy, retransmit,
> disseminate or 
> otherwise use the information. Please indicate to the sender that you
> have received this 
> communication in error, and delete the copy you received. DigitalGlobe
> reserves the 
> right to monitor any electronic communication sent or received by its
> employees, agents 
> or representatives.
> 
> _______________________________________________
> Help-cfengine mailing list
> Help-cfengine@cfengine.org
> https://cfengine.org/mailman/listinfo/help-cfengine
> _______________________________________________
> Help-cfengine mailing list
> Help-cfengine@cfengine.org
> https://cfengine.org/mailman/listinfo/help-cfengine
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to