hello,
----- "Luke Kanies" <[email protected]> wrote:
> * Alessandro's presentation caused someone to point out to me
> afterward that case statements of this ilk:
>
> case $operatingsytem {
> debian: { ... }
> redhat: { ... }
> }
>
> make a module difficult to extend with support for new operating
> system types - you have to modify the module itself in this case.
extlookup exist specifically to avoid this and the resulting:
find . -name \*.pp | xargs grep -l operatingsystem
> So, the questions become, what should we do here, and are any of the
> solutions we have right now good enough to ship today?
> extlookup currently uses CSV for external data, and I don't think most
> users will want to use that. At the least, any long-term answer needs
> to support something more user-friendly like YAML. It also doesn't
> support multiple data sources (e.g., YAML and external node) nor does
> it (AFAIK) support data in the module plus a central data directory.
CSV is a path of least resistance approach to me, i dont need to teach any
new person on irc anything at all to use them. I agree for real work they
are not the way to go and should be replaced.
>
> From what I can tell, it's well suited to filling out things like IP
> addresses, host names, etc., but not as useful for providing module
> portability by filling in different values for different operating
> systems or something.
you can very easily use it for this, see below.
> I also don't like the idea of just relying on a function - I'd like a
> class to be able to declare that it relies on external data, so that
> users know what they can configure in their class.
ditto, all for this, this is my main concern with merging it the result while
pleasing is the best I could come up with as a function but not I think the
best solution. If PL is going to throw resources at this specific problem
space I would like to see it improved past what I can do in a function.
> Fortunately, extlookup is a very short function, so it should be
> straightforward to extend it if we decide to do that.
>
> I'm thinking that we should ship something simple for rowlf, but I
> think it should avoid CSV (probably using yaml instead) and it should,
> at the least, support a global data directly and per-module data
> directories. It should also allow multiple files for searching (e.g.,
this is easy to do - per module stuff, Ohad has a fork/similar tool that
achieves that
> search $os-$osver.yaml, $os.yaml, and default.yaml) rather than having
> all of the values in a single file.
that's exactly what it does now.
a user configure that in their case they search:
fqdn, data center, country, client, operatingsytem, common
another user configures it to search on:
fqdn, operatingsytem, common
the code does:
extlookup("http_pkg_name")
and gets back an answer that gets resolved in however the user configured his
data.
Thats the main beauty of it for me, I can write on set of code and when I share
that module
with another user how the module resolves data depends on that users local
setup and not
code in the module.
--
You received this message because you are subscribed to the Google Groups
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-dev?hl=en.