It is definitely a cool idea. I am not ENTIRELY sure what the best syntax for the name range would be, but it's definitely something that would be handy for many users.
I'll admit my proposed syntax, mostly in terms of the name range leaves something to be desired. I'm very glad that you appreciate the idea :) I'm sure you've made 1000 identical 10 line entries in some config file before. Yuck! :P :)
What do y'all think? Is there a better way to do this? Something like this would reduce the size of my shop's config file a couple orders of magnitude - in turn, I'd screw things up accordingly less often :)
At the moment, you could PROBABLY use LOOP and friends, but that'd be icky. The whole config file is a chain of macros expanded to code generating configuration objects. On further consideration, no, you can't (yes, I tested, no you're not supposed tio, it seems it worked...).
If I'm understanding what you're saying here correctly: basically that the configuration file is "just Lisp", I think that is a good thing (TM). Certainly if we think we can specify everything our user might ever want to put into a config file, we are just dead wrong (Lisp is better than Jim's config language *unless* Jim's config language is a superset of Lisp or some other reasonably powerful language simply because how can Jim guess what you want to do and what your environment looks like?)
I was actually thinking, the other day, that the current config-nesting only allows a nested macro to use a single context and I was trying to thing of a use-case where one would want stuff nested in more than one and now I have one.
I'll get the changes necessary for defnested sorted before heading off to work. I suspect a workable method for naming the individual hosts would be a "member-name" config stanza, taking (say) a format-string (either C or CL, we should eb able to compile the former to the latter), a start number and an end number. I feel that making sure you do the right thing for something like "l001-l256" is just plain hard in the general case.
Imagine trying t figure out how many hosts and what they SHOULD be called when faced with something like "rtr-f01-001-rtr-f03-999". Is that 999 routers, 333 named "...f01...", 3 routers, named "...f01-001", "f02-500" and "...f03-999" or 2997 routers? I could make a case for all of those. :) I also suspect we only want to support a single range, to make things MUCH easier.
agreed!
I'd actually decided this syntax was pretty problematic about 6 months ago working on the SCAT project. However, since SCAT is a rip-off of X-CAT (IBM's unsupported, not open source, not a product cluster management software (that sucks)) I decided to punt on that one and just use the syntax you rightly note is problematic (and swear to myself I'd never name a host rtr-f01-001). I've gotten so used to this syntax now that .... well... bad habits are hard to break I guess :)
When we come up with a good syntax for this, I can pretty much guarantee I'm going to steal it for SCAT :)
Jim