Forum: CFEngine Help
Subject: Re: False report of "no constrants" in constrained classes promises.
Author: mark
Link to topic: https://cfengine.com/forum/read.php?3,27501,27506#msg-27506

On 09/23/2012 02:42 AM, Aleksey Tsalolikhin wrote:
> Situation:  I want to target a promise to a certain group of servers.
> However I want to
> abstract the elements of that group from the promises that target that
> group, so that
> when I add an element to that group, I only need to update *one*
> promise, the one
> enumerating that group.
>
>
> (Let's assume my hosname is "web01".  The list is { "web01", "web02", "web03" 
> }:
>
>
> {{{
>
>
> bundle common global_vars {
>
>       vars:
>          "webservers"
>             slist => { "web01", "web02", "web03" };
>
> }
>
>
> }}}
>
>


Hi Aleksey, here are my suggestions.

>
> Attempt 1:  Loop over the list of server names, checking if any match
> the current context.
> FAIL.  3.3.5 complains "No constraints for class promise webfarm":
>
> {{{
> bundle common global_classes {
>
>     classes:
>
>         "webfarm"
>
>             ifvarclass => canonify("$(global_vars.webservers)");
>
> }
>
> }}}
>
> The body of a promise details and constrains its nature.  This promise
> is constrained by the ifvarclass attribute.

That's true but there are no constraints that determine the class. It's like 
writing

 classes:

    solaris::

       "webfarm";  # missing right hand side definition


I think what you are trying to write is this:


vars:
        "webservers" slist => { "web01", "web02", "web03" };

classes:

           "webclass" or => { "@(webservers)" };


Then, e.g.

reports:

  webclass:: "something or other";

or

  "something or other"    ifvarclass => "webclass";

This satisfies all of the points above. You slipped into thinking imperatively, 
I think, but there is no need to struggle with this.

M

-- 

CTO and Founder
CFEngine

http://www.cfengine.com
http://www.markburgess.org
Twitter: @markburgess_osl, @CFEngine_news

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

Reply via email to