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: [PROPOSAL] Brooklyn DSL in YAML using custom YAML types
Date Fri, 29 Jul 2016 06:54:01 GMT
The ability to switch between json and yaml (so we only use the
json-isomorphic subset) is nice for working with models eg is js in the
browser, and feels less intimidating to new people. I'd like anywhere we
use !! to be optional. (if it were a more widely used part of yaml I might
think differently).

Best
Alex

On 29 Jul 2016 03:35, "Andrew Kennedy" <andrew.kennedy@cloudsoftcorp.com>
wrote:

> Hi.
>
> The 'formatString' example you quote would normally be written like this,
> though:
>
>   brooklyn.config:
>     brooklyn.example.db.url:
>       $brooklyn:formatString:
>         - "jdbc:%s%s?user=%s\\&password=%s"
>         - $brooklyn:component("db").attributeWhenReady("datastore.url")
>         - "visitors"
>         - "brooklyn"
>         - "br00k11n"
>
> So, I'm not sure what we gain here? I'll have a proper look at the YAML
> spec, though, and see if I can understand it better.
>
> Cheers,
> Andrew.
>
> On Wed, 13 Jul 2016 at 13:35 Thomas Bouron <
> thomas.bouron@cloudsoftcorp.com>
> wrote:
>
> > Hi All
> >
> > The YAML spec[1] has a very nice and standard way of defining custom
> types
> > by prefixing any value or object by a `!!<type_name>`. This seems like a
> > perfect feature for the Brooklyn DSL instead of the
> `$brooklyn:<command>`.
> > Let's me explain why.
> >
> > Right now, a Brooklyn DSL command needs to be written as a string such
> as:
> > $brooklyn:formatString("jdbc:%s%s?user=%s\\&password=%s",
> > component("db").attributeWhenReady("datastore.url"),
> > "visitors", "brooklyn", "br00k11n")
> > However, any good YAML library (such as js-yaml[2]) to parse and dump
> YAML
> > <--> JSON would wrap this string in quotes because it contains quotes or
> > reserved characters. That is the expected behaviour based on the
> > specification[3]. But this is an issue for the Brooklyn parser as the
> value
> > will be treated as a `String` and not as a `DslCommand` object.
> >
> > So my proposal is as follow: support the Brooklyn DSL as a standard
> custom
> > YAML type. We obviously need to avoid any quote or reserved characters.
> > That is relatively simple for commands that takes only one parameter, for
> > instance:
> >
> >    - $brooklyn:component('my-id') could become
> >       - !brooklyn:component my-id
> >    - $brooklyn:entitySpec would become
> >       - !brooklyn:spec
> >
> > For the more complex ones, I created a gist[4] that illustrates how this
> > could work. It is more verbose than the current version but we get a rid
> of
> > the hacky `$brooklyn` and comply fully to the YAML specification.
> >
> > Best.
> >
> > [1] http://yaml.org/spec/1.2/spec.html
> > [2] https://github.com/nodeca/js-yaml
> > [3] http://yaml.org/spec/1.2/spec.html#id2788859
> > [4] https://gist.github.com/tbouron/67527796726e10689d8d3c34784cd7ec
> >
> > --
> >
> > Thomas Bouron • Software Engineer @ Cloudsoft Corporation •
> > http://www.cloudsoftcorp.com/
> > Github: https://github.com/tbouron
> > Twitter: https://twitter.com/eltibouron
> >
> --
>
> Andrew Kennedy ; Founder clocker.io project ; @grkvlt ; Cloudsoft
>

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