Regarding @gpdf’s butler request:
We need to understand how put()/writing works when multiple repositories are made visible through a single Butler. For get()/reading a single search order makes sense. For put() it may be desirable to support alternative destinations (local disk, user workspace, Level 3 DB) or even multiple destinations for a single put().
Having one repository is good for provenance. @ktl proposed this solution for Gregory’s butler request:
Expand configuration for a given dataset type so that it has multiple locations (template+storage+pythonType). The locations could be added to or overridden by setting the policy (we will make this configurable at butler-instantiation time, also n.b. policy files can be in the repo now). These locations will be markable as read-only, write-only, or read+write.
This would allow multiple locations within one repository. When writing, butler would write to all of the writeable destinations. Similarly, reading would read from all the readable destinations. (The C++ daf_persistence code allowed serialized reading from multiple locations. We’ll have to bring this in from the C++ code).
@gpdf, can you comment on this - is it ok?