Skip to content

RFC: DSS Bundle Enumeration#101

Open
xbrianh wants to merge 3 commits intomasterfrom
bhannafi-dss-bundle-enumeration.md
Open

RFC: DSS Bundle Enumeration#101
xbrianh wants to merge 3 commits intomasterfrom
bhannafi-dss-bundle-enumeration.md

Conversation

@xbrianh
Copy link
Member

@xbrianh xbrianh commented Aug 9, 2019

Proposed addition to the DSS API to enumerate bundles independently of the DSS Elasticsearch metadata index.

Last call for community review: Sept 24

@diekhans
Copy link
Contributor

Since there is no filtering mechanism, other than whatever the prefix does, it seems like the only functional use cases it get a very larger list of all bundles. If might be nice to state that more explicitly if true.

@brianraymor
Copy link
Collaborator

@kislyuk - not sure why this is tagged rfc-community-review if it's not actually in community review?

@xbrianh xbrianh force-pushed the bhannafi-dss-bundle-enumeration.md branch from 68fa2d5 to aebf3d3 Compare September 10, 2019 16:31

## Detailed Design

A new bundle enumeration endpoint, `GET /bundles`, will be introduced, taking replica and prefix parameters. A listing
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe call this "UUID prefix"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've updated the text to better reflect the usage of prefix as a "uuid prefix".

all all bundles having UUIDs beginning with `prefix` will be returned directly from object storage. The prefix
parameter is intended to facilitate parallelized listings. Pagination semantics and all other semantics of this route
will be in line with the established conventions of the DSS API.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Without some kind of filtering, this seems like a very heavyweight endpoint to use. A couple of things come to mind:

  • Filter by update date/time. This would allow only obtaining bundles that have changes since the last time the query was run.
  • Filter by bundle type. Well, first we have to have bundle types.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This endpoint is intended for heavyweight use by downstream indexers.

Also, an incremental approach seems preferable: if filtering becomes desirable in the future, it can be added to the endpoint.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed that this is easy to add downstream. Assuming a full dump is what existing users want, then my speculative use is not a real use case ;-)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@diekhans you raise a good point, but as @xbrianh pointed out, the use case here is an unfiltered bulk pull of all bundle IDs for external indexing. We did look for a way to use a "lightweight" database to do filtering using our established filter language process (JMESpath), but didn't find any suitable database/indexing engine for such a task.


* As a downstream service developer, I would like to check if my index contains all the bundles in the DSS.

## Detailed Design
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was expecting something a bit more swagger-y rather than a narrative description in Detailed Design for a API.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@brianraymor It's not clear to me how to address your comment. Perhaps you have something in mind similar to the API endpoint descriptions found in the Deletion RFC.

However, those additions will not necessarily improve the clarity and actionability of this document, which defines a simple extension to the DSS API in language that I believe is clear to the developers who will implement it. Do you feel there are technical details missing, or that there is ambiguity that needs to be cleared up?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Deletion RFC more closely meets my expectations for a RFC as design document. Another approach is how Azure defines their REST APIs. Any reviewer/developer should be able to read this RFC and understand the DSS API in detail - not just the implementers. This currently reads more like what we called one pagers at Microsoft.

@brianraymor brianraymor mentioned this pull request Sep 18, 2019
@xbrianh xbrianh self-assigned this Sep 18, 2019
@xbrianh xbrianh force-pushed the bhannafi-dss-bundle-enumeration.md branch from 91785bf to 18ddfca Compare September 19, 2019 15:20
Copy link

@samanehsan samanehsan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Should this be re-labeled with oversight-review now that the community-review date has passed?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants