Story #2872
Updated by dkliban@redhat.com over 7 years ago
For an API user to create a Content unit, Pulp 3 needs to have the following: - the ContentArtifact "through" model[0] for Content and Artifact. It contains a ForeignKey The only field pointing to Artifact and another one pointing to Content. It also it contains is a relative path. The relative path char field. All three are required and can not cannot be null. The combination of 3 is a uniqueness constraint. - the Content model with an artifacts ManyToManyField pointing to Artifact through ContentArtifact. - viewset that can handle CRD operations for Content. - serializer for the viewset which will return all serialized fields of the Content model including the artifacts. - API endpoint at /api/v3/content/units/ - POST request to the /api/v3/content/units/ endpoint creates Content. The body of the request contains a dictionary that looks like the following: <pre><code class="json"> { "artifacts": [{ "< artifact >": "< relative_path >" }, { "< artifact2 >": "< relative_path2 >" }], "notes": {} } </code></pre> First a new Content instance is created with notes from the payload. Then the 'artifacts' from the payload are used to create ContentArtifact instances that reference the new Content. - GET request to the /api/v3/content/units/<content unit id> returns serialized Content - DELETE request to the /api/v3/content/units/<content unit id>/ raises an exception if the Artifact is still associated with any Repository. The exception should provide a list of Repositories still associated with the Artifact. If an exception is not raised, Artifact is removed from the database. - PUT/PATCH requests to the /api/v3/content/units/<content unit id>/ raises an exception (409 unsupported method) [0] https://docs.djangoproject.com/en/1.9/topics/db/models/#intermediary-manytomany