I saw the bug you commented on about the missing docs. That's definitely a fault on our end; it got missed, it happens.

Try checking out http://www.pulpproject.org/2012/01/10/unit-associations/ It still should be in our formal docs, but that should help in the interim.

Another option is to use our CLI to do the query. The in and out bound REST calls are logged to ~/.pulp/server_calls.log, so you can see what the client generates in terms of the query.

Seems like it should be a pretty simple API call, but I can't figure
out how to do it for the life of me. I was able to get a response that
includes the entire metadata for each rpm in a given repo. I don't
need or want that, just a list of rpm filenames.

body = { 'criteria': { 'limit': 1, 'fields': { 'association' : []}}}

The RPM filename is part of the unit metadata, not the association. The association tracks the when and how of its addition to the database. The unit metadata is all the meaty stuff about the unit itself.

Doing what you're looking for in the CLI:

$ pulp-admin rpm repo content rpm --repo-id test --fields filename

Showed the criteria in server_calls.log as:

{"criteria": {"fields": {"unit": ["filename"]}, "type_ids": ["rpm"], "filters": {"unit": {}}}}

You can omit the "filters" section entirely. That'll still return the association information, but inside of the metadata field you'll only have filename. Here's a snippet from the returned result:

"metadata": {
  "_id": "dd52c734-ec59-4734-9bb4-fc10007c8663",
  "filename": "bear-4.1-1.noarch.rpm"
}

I'd have to look closer to see if you specify something like:

{"fields": {"unit": ["filename"], "association" : []}}

That might remove the association information as well. Either way, the structure will remain the same and you'll need to look into the metadata section to find the filename under that key.

I'll see what I can do about bumping up that docs bug, we have a pretty full plate for 2.2 already and while just a docs bug, still takes time to do correctly.


r = requests.post('https://pulp/pulp/api/v2/repositories/repo/search/units/', 
auth=('admin', 'removed'), verify=False, data=json.dumps(body))

pprint.pprint(r.json())[{u'_id': {u'$oid': u'51818a5aee95994a2d0000cd'},
   u'metadata': {u'_content_type_id': u'rpm',
                 u'_id': u'faa52d6a-1f5c-41e1-9ad8-c200aa3d3278',
                 u'_ns': u'units_rpm',
                 u'_storage_path':......REMOVED FOR BREVITY


Please for the love of all that is holy can someone share with me how
to retrieve a list of RPMs for a given repo? Possibly updating the
pulp 2.1 API documentation with this example as I'm sure this is a
pretty common ask.

Please don't RTFM me, I've read:

http://pulp-dev-guide.readthedocs.org/en/latest/integration/rest-api/repo/retrieval.html
http://pulp-dev-guide.readthedocs.org/en/latest/conventions/criteria.html#search-api

None the wiser after doing so. Tailing logs after running pulp-admin
and those docs only got me this far.

Thanks,
Ryan

_______________________________________________
Pulp-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/pulp-list



--
Jay Dobies
Freenode: jdob @ #pulp
http://pulpproject.org

_______________________________________________
Pulp-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/pulp-list

Reply via email to