Bug #6095
closed
[SDKs] Make arv-copy preserve pipeline template component order
Added by Brett Smith over 9 years ago.
Updated over 9 years ago.
Description
Implementation steps:
- Add an OrderedJsonModel class to arvados.api. This is a subclass of googleapiclient.model.JsonModel. It overrides the de/serialize methods. When it calls a json load/dump method, it passes in collections.OrderedDict as the object_hook to preserve order (refer to the json module documentation).
- Ensure that whenever arv-copy instantiates an API client, it passes in an OrderedJsonModel instance as the
model
keyword argument. Refer to the apiclient.discovery PyDoc.
This will make arv-copy do the right thing with pipeline templates, and give us the right API hooks to extend this functionality to other Python clients easily.
We should not make OrderedJsonModel the default model because the space overhead is noticeable, and not necessary for most applications.
- Description updated (diff)
- Subject changed from [DRAFT] [SDKs] Make arv-copy preserve pipeline template component order to [SDKs] Make arv-copy preserve pipeline template component order
- Assigned To set to Brett Smith
- Status changed from New to In Progress
6095-arv-copy-preserve-object-order-wip is up for review. A couple of notes:
- If you look at the original JsonModel source, you may wonder about the whole simplejson module business. If you follow the source all the way down, you'll find that it uses the standard json module whenever that's available. Since we're pretty heavily committed to Python 2.7 at this point, I went ahead and hardcoded that for simplicity.
- Suggested test by hand:
arv-copy --src [instance --dst [same] --no-recursive --project-uuid [project uuid] [pipeline template uuid]
- Status changed from In Progress to Resolved
- % Done changed from 0 to 100
Applied in changeset arvados|commit:872cc3d79d99f5fc4b26b970c3d269ca363ea27c.
Also available in: Atom
PDF