Project

Profile

Help

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

Back