brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Heneveld <alex.henev...@cloudsoftcorp.com>
Subject Re: "using variable later in postprovisionscript or any other script"
Date Fri, 23 Jan 2015 08:41:49 GMT

Hi Azhar,

The ${config.myVarA} syntax is for Freemarker templates.  It looks a lot 
like scripts -- both use the ${...} syntax -- but they are treated 
differently.  Because Freemarker is evaluated in Brooklyn then sent to 
the box we have access to all config etc there.  OTOH scripts are simply 
uploaded and evaluated and the only injection mechanism used is the 
`shell.env` map (because we don't want to send all config there).  So in 
your shell you have to continue to use the ${myvar1} style.

Best
Alex


On 22/01/2015 23:51, Azhar I Hashmi wrote:
>
> Thanks Alex,
>
> If i can refer to *${config.myvarA}* in my script then why would I 
> define *myvar1 *in*env.shell *other then what you described 
> *type-define *vs*non-type-defined *keys and their *scope. *Also*, 
> myvar1 or env.myvarA *are set as environment variables only for*that 
> session* during installation or can I access them later by logging 
> into the box? I tried to see the value of these variables as 
> predefined environment variables but I could not find them in *env* or 
> *printenv *on linux machine.
>
> So I can use alias like this*env.myvar1 *? Do not need 
> **prefix*config.* or *env.shell.* right in the script ?
>
> Thanks
> Azhar
>
>
>
> Inactive hide details for Alex Heneveld ---01/22/2015 05:29:30 
> PM---Azhar- What you propose I think could work. But I think itAlex 
> Heneveld ---01/22/2015 05:29:30 PM---Azhar- What you propose I think 
> could work. But I think it would also work and
>
> From: Alex Heneveld <alex.heneveld@cloudsoftcorp.com>
> To: dev@brooklyn.incubator.apache.org
> Date: 01/22/2015 05:29 PM
> Subject: Re: "using variable later in postprovisionscript or any other 
> script"
>
> ------------------------------------------------------------------------
>
>
>
>
> Azhar-
>
> What you propose I think could work.  But I think it would also work and
> be cleaner to split out your config, e.g.
>
>   brooklyn.config:
>     myvarA:
> $brooklyn:component("machine").attributeWhenReady("host.address")
>   shell.env:
>     myvar1: $brooklyn:config("myvarA")
>
> and then in templates refer to ${config.myvarA}.
>
> Only subtlety is that "myvarA" *must* be in `brooklyn.config` because it
> is not a type-defined config key.  `shell.env` could be put under
> `brooklyn.config` or at the top level because it *is* a config key known
> at the type.  (It has a flag/alias "env" so you could also just call it
> `env`.)
>
> HTH + thanks for the nice comments on the new docs!
>
> --A
>
>
> On 22/01/2015 22:59, Azhar I Hashmi wrote:
> >
> > Thanks a lot Svet!
> >
> > Actually, I figured that there is files.runtime that I can use exactly
> > as you described and also came to know env.shell after our call and I
> > love the new documentation related to Entity's config, sensor etc.....
> >
> > Couple of questions:
> > Instead of hard coding the path like this: I saw in the doc that there
> > is a config to get to that path i.e. "*expandedinstall.dir". *Do you
> > think I can use config variable to get that value?
> >
> > files.install:
> >
> > 
>  "http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar":

>
> > apache-tomcat-7.0.56/lib/tomcat-dbcp-7.0.30.jar
> >
> > Can I do this for example:
> >
> > files.install:
> >
> > 
>  "http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar":

>
> > *${expandedinstal.dir}*/lib/tomcat-dbcp-7.0.30.jar
> > (OR)
> >
> > 
> "http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar":

>
> > *${config.expandedinstal.dir}*/lib/tomcat-dbcp-7.0.30.jar
> >
> > Also:
> >
> >
> > According to the definition it takes a java map. So in your example:
> >
> > shell.env:
> >    myvar:
> > $brooklyn:component("machine").attributeWhenReady("host.address")
> > - type: brooklyn.entity.machine.MachineEntity
> >  id: machine
> > I can have multiple vars like this:
> >
> > shell.env:
> > *myvar1:
> > $brooklyn:component("machine").attributeWhenReady("host.address")*
> > *    myvar2:
> > $brooklyn:component("TOMCAT_ID").attributeWhenReady("host.address")*
> > *    myvar3:
> > 
> $brooklyn:component("MY_SQLID").attributeWhenReady("host.subnet.address")*
> > - type: brooklyn.entity.machine.MachineEntity
> >
> >
> > Also, in my */tmp/script.sh*
> >
> > Can I do this *${config.shell.env.myvar1} ,
> > ${config.shell.env.myvar2},* and *${config.shell.env.myvar3}* to get
> > their values that are set by brooklyn? Is my understanding correct? If
> > not please correct me.
> >
> >
> > Thanks a lot!
> >
> > Azhar


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message