On 17 jun 2011, at 15:07, Seva Gluschenko wrote:

> I'd rather rewrote it as follows:
> 
> classes:
>       'PBS_reg'  expression => regcmp(".*r[0-9]+n[0-9].*");
>       'PBS_ok'    not => classify("gb-r7n1.irc.sara.nl");
>       'PBS_MOM'  and => { "PBS_ok", "PBS_reg", "${sys.host}" };
> 
> 2011/6/17 Jesse Becker <becker...@mail.nih.gov>:
>> On Fri, Jun 17, 2011 at 05:25:44AM -0400, Bas van der Vlies wrote:
>>> I want to define a classs like this:
>>>      classes:
>>>         "PBS_MOM"   and => { !classify("gb-r7n1.irc.sara.nl"), regcmp(
>>> ".*r[0-9]+n[0-9].*", "$(sys.host)" ) };
>>> 
>>> This is not a valid syntax. Is it possible to set a class and use the 'not'
>>> operator? For me it would be useful or are there other ways to accomplish 
>>> this?
>>> 
>>> PS) I used this syntax a lot in cf2 to define classes.
>> 
>> I had to do something similar, and I think that I wound up breaking it
>> into what I consider "interstitial classes" (i.e. classes that aren't
>> used for anything other than constructing other classes, in order to get
>> around syntax limitations).
>> 
>> In your example, I think that this would achive what you want (untested):
>> 
>> classes:
>>        'PBS_dom' expression => classify("gb-r7n1.irc.sara.nl");
>>        'PBS_reg' expression => regcmp(".*r[0-9]+n[0-9].*");
>>        'PBS_MOM' expression => "!PBS_dom.PBS_reg.${sys.host}"
>> 
>> Of course, the ability to nest the various and{}, or{}, not{}, xor{}
>> expressions would be nice.
>> 
>> Alternately, implement a "not()" function, independent of the "not{}"
>> classes construct.
>> 

Thanks for the answers. I will do some experiments and post the solution.  I 
still have some old syntax from cf1/cf2 in my head. Have to get rid of it ;-)

PS) The regcmp is against $(sys.host) .  

--
Bas van der Vlies
b...@sara.nl



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

Reply via email to