Hi, Jerome. I suggest using cf-promises to check the syntax on your policy:
[cfengine00 ~]# cf-promises -f ./test.cf Arguments to function readfile(.) do not tally. Expect 2 not 1 Promise (version not specified) belongs to bundle 'g' in file './test.cf' near line 5 [cfengine00 ~]# You have to tell readfile max number of bytes to read from the file. If you want to explicitly make a class (rather than just use ifvarclass to create the class), you can do it with a classes type promise as Seva suggested. {{{ bundle common g { vars: "temp" string => readfile( "/tmp/test.txt", "99" ); classes: "$(temp)" expression => "any"; } bundle agent animal { commands: "/bin/echo $(g.temp)" ifvarclass => canonify("$(g.temp)"); reports: DOG:: "I have a pet dog."; } }}} How's that? Aleksey On Tue, Sep 13, 2011 at 11:36 AM, Jerome Yanga <jya...@esri.com> wrote: > Aleksey, > > I came up with the following but I seem to be misinterpreting the reference > manual. I have also used canonify to no avail. Help. > > $ cat /tmp/test.txt > DOG > > bundle common g > { > vars: > > "temp" string => readfile( "/tmp/test.txt" ); > } > > bundle agent animal > { > commands: > "/bin/echo $(g.temp)" > ifvarclass => "$(g.temp)"; > reports: > DOG:: > "I have a pet dog."; > } > > Regards, > j > > -----Original Message----- > From: Aleksey Tsalolikhin [mailto:atsaloli.t...@gmail.com] > Sent: Tuesday, September 13, 2011 11:20 AM > To: Jerome Yanga > Cc: help-cfengine@cfengine.org > Subject: Re: CFEngine Help: how to convert vars to a class > > Yes, you can do it using the ifvarclass, which converts a variable to > a class. Could you please read the ifvarclass section of the > reference manual, and let me know if you have any questions. > > Best, > Aleksey > > > On Tue, Sep 13, 2011 at 11:13 AM, Jerome Yanga <jya...@esri.com> wrote: >> Is it possible to do what I am attempting to? >> >> Regards, >> j >> >> -----Original Message----- >> From: Jerome Yanga >> Sent: Monday, September 12, 2011 4:27 PM >> To: 'Aleksey Tsalolikhin' >> Cc: 'help-cfengine@cfengine.org' >> Subject: RE: CFEngine Help: how to convert vars to a class >> >> Aleksey, >> >> Thank you for the quick response. >> >> My main objective is to make the contents of /tmp/test.txt into a class. >> Hence, I would like to do the reporting. >> >> bundle agent animal >> { >> reports: >> DOG:: >> "I have a pet dog."; >> } >> >> Regards, >> j >> >> -----Original Message----- >> From: Aleksey Tsalolikhin [mailto:atsaloli.t...@gmail.com] >> Sent: Monday, September 12, 2011 4:15 PM >> To: Jerome Yanga >> Cc: help-cfengine@cfengine.org >> Subject: Re: CFEngine Help: how to convert vars to a class >> >> On Mon, Sep 12, 2011 at 3:58 PM, Jerome Yanga <jya...@esri.com> wrote: >>> I saw another post on how to do this but it does not seem to work for me. >>> Please correct my syntax >> >> How's this? >> >> [cfengine00 ~]# cat /tmp/test.txt >> DOG >> [cfengine00 ~]# cat test.cf >> body common control { >> bundlesequence => { "animal" }; >> } >> >> bundle common g >> { >> vars: >> >> "temp" string => readfile("/tmp/test.txt", "4" ); >> } >> >> bundle agent animal >> { >> commands: "/bin/echo $(g.temp)"; >> commands: >> "/bin/echo I have a pet dog." >> ifvarclass => "$(g.temp)"; >> } >> [cfengine00 ~]# cf-agent -f ./test.cf >> Q: ".../bin/echo DOG": DOG >> I: Last 1 quoted lines were generated by promiser "/bin/echo DOG" >> [cfengine00 ~]# >> >> Note the use of ifvarclass attribute to use a variable as a class; and >> the full name of the variable (including the bundle name) in g.temp. >> CFEngine bundles have scope, so you have to use the full name to call >> a variable from another bundle (even a global variable). >> >> Yours, >> -at >> >> > > _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine