Dang, you guys were all "flat name space!" at the hackathon.
As you can see from my example, I did clean up the name space a bit and removed a "config" from those (e.g. "proxy.config.http.cache" is the current name). We could remove "proxy" as well.
Pretty sure I would not have agreed to keep the existing name space. I don’t consider the one we have “flat” though, it’s definitely a hierarchy. However, that hierarchy is not well designed, definitely not well maintained and absolutely not consistent.
My suggestion is, when we do this, lets also clean this up. As a bonus, it’s likely that the same hierarchy could be incorporated into how we use Debug(), to make it a lot more easy to trace on some particular portion of the feature/configuration hierarchy, and have it do so reliably. The bonus here then is that we have one name space to maintain, and document.
Sudheer's question is a good one that I"ve been pondering.
1) This would only be "records.config". It's too much to convert everything to YAML, but every file we change is one step closer to full YAML. ("Never go full YAML" - Leif)
2) Overrides would need to use the full name. For the flat style this is trivial because that's the same as the key name. For the tree, we'd need a notation to indicate descent along the objects. A simple rule would be to forbid a name to contain "." and then use "." as a separator that indicates to descend. Then the names would again be exactly as they are now and no changes would be needed. This isn't really any different from file system paths or FQDNs, so I don't think it will be a large hurdle for ATS ops people.
IF we are going down this path, we should restructure the configuration name space now too. A lot of things makes no sense any more, including the proxy. prefix.
I do agree with Randal though, we should use proper YAML structure for the name spaces, for both configurations and metrics.
I vote for #2, though I could live with either.
If "records.config" is changed to be YAML for ATS 10, there are two reasonable approaches to changing it.
Option 1) Use a flat namespace. The file would look something like
# .... etc.
Option 2) Use a tree. The file would look something like
From an automation point of view these are not really different - there is an obvious isomorphism between them such that converting between them is trivial.