Project

Profile

Help

Task #2823

Updated by mhrivnak almost 7 years ago

Recent work has concluded that we can use drf-nested-routers to have nested paths in Pulp 3. 

 https://github.com/alanjds/drf-nested-routers/ 

 This task is to: 
 - introduce a dependency on the above library 
 - nest importers and publishers under the path for individual repositories as shown below 
 - rework the flow [0] of viewsets being registered to the DRF router, given that there will now be multiple routers 

 Since we need to support nesting with the master/detail approach, importers and publishers make a natural starting point for nesting. Paths will look like this: 

 <pre> 
 /api/v3/repositories/ 
 /api/v3/repositories/<repo_name>/ 
 /api/v3/repositories/<repo_name>/importers/<type>/ 
 /api/v3/repositories/<repo_name>/importers/<type>/<importer_id>/ 
 </pre> 

 As an example, if you had a repo with name "r1" and a file importer with name "i1", and you were to  

 <pre> 
 GET http://192.168.121.135:8000/api/v3/repositories/r1/ 
 </pre> 

 you would see 

 <pre><code class="json"> 
 { 
     "_href": "http://192.168.121.135:8000/api/v3/repositories/r1/", 
     "description": "", 
     "notes": {}, 
     "scratchpad": {}, 
     "last_content_added": null, 
     "last_content_removed": null, 
     "importers": [ 
         "http://192.168.121.135:8000/api/v3/repositories/r1/importers/file/i1/" 
     ], 
     "publishers": [], 
     "content": "http://192.168.121.135:8000/api/v3/repositories/r1/content/" 
 } 
 </code></pre> 

 Or if you 

 <pre> 
 GET http://192.168.121.135:8000/api/v3/repositories/r1/importers/file/ 
 </pre> 

 you would see all importers of type file: 

 <pre><code class="json"> 
 [ 
     { 
         "_href": "http://192.168.121.135:8000/api/v3/repositories/r1/importers/file/i1/", 
         "type": "file", 
         "name": "i1", 
         "last_updated": "2017-06-08T03:00:53.361829Z", 
         "feed_url": "", 
         "validate": true, 
         "ssl_validation": true, 
         "proxy_url": "", 
         "download_policy": "", 
         "last_sync": null, 
         "repository": "http://192.168.121.135:8000/api/v3/repositories/r1/" 
     } 
 ] 
 </code></pre> 


 [0] https://github.com/pulp/pulp/blob/64741860/platform/pulpcore/app/urls.py#L20

Back