Hi Richard Thanks a lot that's a great tip, I was able to piece together what I needed from the output.
Cheers Paul On Thu, 11 May 2017 at 10:35 Richard Grainger <[email protected]> wrote: > One thing I find useful when working with the API, is to run the > pulp-admin client with '-vv': > > > pulp-admin -vv rpm repo content rpm --fields=created --repo-id=foo > > > This will display the exact API calls and responses. In this case, I got > the error: > > Invalid properties: ['Field: <created> does not exist on objects in the > <units_rpm> collection'] > > > I think this is because the "created" field is actually part of "repodata", > so you need to do: > > > pulp-admin -vv rpm repo content rpm --fields=repodata --repo-id=foo > > > ...and then extract the "created" field from the resulting data using your > client code. > > Best > Rchard. > On Thu, May 11, 2017 at 10:07 AM, Paul Urwin <[email protected]> > wrote: > >> Hello Pulp community, >> >> I've been banging my head against this. I'm trying to get a list of RPMs >> in a repository, which I've done by structuring the URL, but I can't seem >> to get any filters or field limits to work... >> >> Here's my call that works, and returns all fields associated with the >> first unit: >> search = { >> "criteria": {}, >> "limit":1 >> } >> response = requests.post(API_URL + >> '/repositories/test_repo/search/units/'. cert=blah, data=json.dumps(search)) >> >> Similarly it works in get format too: >> >> response = requests.get(API_URL + >> '/repositories/test_repo/search/units/?limit=1'. cert=blah)) >> >> Now, if I try to specify the "field" argument to only retrieve a specific >> field ("created") I get a trackback from the call: >> >> response = requests.get(API_URL + >> '/repositories/test_repo/search/units/?field=created&limit=1'. cert=blah)) >> >> { >> "_href": >> "/pulp/api/v2/repositories/test_repo/search/units/?limit=1&field=created", >> "error_message": "pop() takes at most 1 argument (2 given)", >> "exception": [ >> "TypeError: pop() takes at most 1 argument (2 given)\n" >> ], >> "http_request_method": "GET", >> "http_status": 500, >> "traceback": [ >> " File >> \"/usr/lib/python2.7/site-packages/django/core/handlers/base.py\", line >> 112, in get_response\n response = wrapped_callback(request, >> *callback_args, **callback_kwargs)\n", >> " File >> \"/usr/lib/python2.7/site-packages/django/views/generic/base.py\", line 69, >> in view\n return self.dispatch(request, *args, **kwargs)\n", >> " File >> \"/usr/lib/python2.7/site-packages/django/views/generic/base.py\", line 87, >> in dispatch\n return handler(request, *args, **kwargs)\n", >> " File >> \"/usr/lib/python2.7/site-packages/pulp/server/webservices/views/decorators.py\", >> line 241, in _auth_decorator\n return _verify_auth(self, operation, >> super_user_only, method, *args, **kwargs)\n", >> " File >> \"/usr/lib/python2.7/site-packages/pulp/server/webservices/views/decorators.py\", >> line 195, in _verify_auth\n value = method(self, *args, **kwargs)\n", >> " File >> \"/usr/lib/python2.7/site-packages/pulp/server/webservices/views/search.py\", >> line 108, in get\n return self._generate_response(query, options, *args, >> **kwargs)\n", >> " File >> \"/usr/lib/python2.7/site-packages/pulp/server/webservices/views/repositories.py\", >> line 285, in _generate_response\n criteria = >> UnitAssociationCriteria.from_client_input(query)\n", >> " File >> \"/usr/lib/python2.7/site-packages/pulp/server/db/model/criteria.py\", line >> 286, in from_client_input\n association_fields = >> _validate_fields(fields.pop('association', None))\n" >> ] >> } >> >> I also can't work out how to get it to accept a filter to restrict the >> results by a field value: >> >> e.g. >> search = { >> "criteria": { "filters": {"created": { "gt": {"$date": >> "2015-01-01T00:00:00Z"}}}}, >> "limit":1 >> } >> response = requests.post(API_URL + >> '/repositories/test_repo/search/units/'. cert=blah, data=json.dumps(search)) >> >> Result: 400 error with description: "Invalid properties: ['created'] >> >> or even simpler: >> >> search = { >> "criteria": { "filters": {"repo_id": "test_repo"}}, >> "limit":1 >> } >> response = requests.post(API_URL + >> '/repositories/test_repo/search/units/'. cert=blah, data=json.dumps(search)) >> >> Result: 400 error with description: "Invalid properties: ['repo_id'] >> >> (obviously I wouldn't actually try to limit by repo_id given it's already >> limited by that in the URL) >> >> Clearly I'm doing something wrong, any help is appreciated! >> >> Thanks >> >> Paul >> >> _______________________________________________ >> Pulp-list mailing list >> [email protected] >> https://www.redhat.com/mailman/listinfo/pulp-list >> > _______________________________________________ > Pulp-list mailing list > [email protected] > https://www.redhat.com/mailman/listinfo/pulp-list
_______________________________________________ Pulp-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/pulp-list
