[Pulp-dev] proposing changes to pulp 3 upload API

Dennis Kliban dkliban at redhat.com
Thu Jun 29 12:47:25 UTC 2017


On Thu, Jun 29, 2017 at 7:40 AM, Michael Hrivnak <mhrivnak at redhat.com>
wrote:

>
> On Thu, Jun 29, 2017 at 7:22 AM, Dennis Kliban <dkliban at redhat.com> wrote:
>
>>
>> The many to many relationship is between Artifact and ContentArtifact.
>> This allows a content unit to have multiple Artifacts associated with it.
>>
>
> Could you elaborate on this? A content unit can have multiple artifacts
> just by artifact having a foreign key to a content unit. That's the
> one-to-many relationship we have on the model now in 3.0-dev.
>
> Also, what is a ContentArtifact?
>
>
Here are some definitions for the new proposal:

   - Artifact - a file stored in pulp
   - Content - a named collection of 0 or more Artifacts that can be
   associated with a repository as a single unit
   - ContentArtifact - a relationship between an Artifact and Content.
   There is 0 or more ContentArtifacts for each Content.
   - Repository - A named collection of content.
   - RepositoryContent - a relationship between Content and Repository.


In the proposal we have in the MVP we have the following:

   - FileUpload - Uploaded file that is used to create Artifacts and is
   then removed (definition for this is not present in the glossary of MVP)
   - Artifact - A file associated with one content (unit). Artifacts are
   not shared between content (units). Create a content unit using an uploaded
   file ID as the source for its metadata. Create Artifacts associated with
   the content unit using an uploaded file ID for each; commit as a single
   transaction.
   - Content (unit) - A single piece of content manged by Pulp. Each file
   associated with a content (unit) is called an Artifact. Each content (unit)
   may have zero or many Artifacts.
   - Repository - A named collection of content.
   - RepositoryContent - a relationship between Content and Repository
   (also not in the glossary of the MVP)

In the MVP in order to add a unit to a repository, a user would:

   1. Create a FileUpload by uploading a file
   2. Create an Artifact and a Content with one API call
   3. Associate a Content with a Repository
   4. Delete the FileUpload (or some cleanup job would do that for the user)

The newly proposed workflow:

   1. Create an Artifact by uploading a file
   2. Create a Content by specifying which Artifact(s) belongs to the
   Content and their relative paths inside the unit. This creates
   ContentArtifacts for each relationship.
   3. Associate a Content with a repository.

In the MVP workflow, once an FileUpload is deleted, it's hard to create
another Content from that file. I am sure we can come up with a way to do
it, but it won't be as straight forward as the above workflow.



>
> --
>
> Michael Hrivnak
>
> Principal Software Engineer, RHCE
>
> Red Hat
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/pulp-dev/attachments/20170629/e391b2a9/attachment.htm>


More information about the Pulp-dev mailing list