<div dir="ltr"><span style="font-size:12.8px">One thing I find useful when working with the API, is to run the </span><font face="monospace, monospace" style="font-size:12.8px">pulp-admin </font><span style="font-size:12.8px">client with '</span><font face="monospace, monospace" style="font-size:12.8px">-vv</font><span style="font-size:12.8px">':</span><br style="font-size:12.8px"><font face="monospace, monospace" style="font-size:12.8px"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><font face="monospace, monospace"><br></font><font face="monospace, monospace">pulp-admin -vv rpm repo content rpm --fields=created --repo-id=foo</font></blockquote></font><br style="font-size:12.8px"><span style="font-size:12.8px">This will display the exact API calls and responses. In this case, I got the error:</span><br style="font-size:12.8px"><br style="font-size:12.8px"><blockquote style="font-size:12.8px;margin:0px 0px 0px 40px;border:none;padding:0px"><font face="monospace, monospace">Invalid properties: ['Field: <created> does not exist on objects in the<br><units_rpm> collection']</font></blockquote><br style="font-size:12.8px"><span style="font-size:12.8px">I think this is because the "</span><font face="monospace, monospace" style="font-size:12.8px">created</font><span style="font-size:12.8px">" field is actually part of "</span><font face="monospace, monospace" style="font-size:12.8px">repodata</font><span style="font-size:12.8px">", so you need to do:</span><br style="font-size:12.8px"><blockquote style="font-size:12.8px;margin:0px 0px 0px 40px;border:none;padding:0px"><br><font face="monospace, monospace">pulp-admin -vv rpm repo content rpm --fields=repodata --repo-id=foo</font></blockquote><br style="font-size:12.8px"><span style="font-size:12.8px">...and then extract the "created" field from the resulting data using your client code.</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">Best</span><br style="font-size:12.8px"><span style="font-size:12.8px">Rchard.</span><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 11, 2017 at 10:07 AM, Paul Urwin <span dir="ltr"><<a href="mailto:register@paulurwin.com" target="_blank">register@paulurwin.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">Hello Pulp community,<div><br></div><div>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...</div><div><br></div><div>Here's my call that works, and returns all fields associated with the first unit:</div><div><font face="monospace">search = {<br></font></div><div><font face="monospace">  "criteria": {},</font></div><div><font face="monospace">  "limit":1</font></div><div><font face="monospace">}</font></div><div><font face="monospace">response = requests.post(API_URL + '/repositories/test_repo/<wbr>search/units/'. cert=blah, data=json.dumps(search))<br></font></div><div><br></div><div>Similarly it works in get format too:</div><div><br></div><div><font face="monospace">response = requests.get(API_URL + '/repositories/test_repo/<wbr>search/units/?limit=1'. cert=blah))<br></font></div><div><br></div><div>Now, if I try to specify the "field" argument to only retrieve a specific field ("created") I get a trackback from the call:</div><div><br></div><div><span style="font-family:monospace">response = requests.get(API_URL + '/repositories/test_repo/<wbr>search/units/?field=created&<wbr>limit=1'. cert=blah))</span><br></div><div><span style="font-family:monospace"><br></span></div><div><div><font face="monospace">{</font></div><div><font face="monospace">    "_href": "/pulp/api/v2/repositories/<wbr>test_repo/search/units/?limit=<wbr>1&field=created",</font></div><div><font face="monospace">    "error_message": "pop() takes at most 1 argument (2 given)",</font></div><div><font face="monospace">    "exception": [</font></div><div><font face="monospace">        "TypeError: pop() takes at most 1 argument (2 given)\n"</font></div><div><font face="monospace">    ],</font></div><div><font face="monospace">    "http_request_method": "GET",</font></div><div><font face="monospace">    "http_status": 500,</font></div><div><font face="monospace">    "traceback": [</font></div><div><font face="monospace">        "  File \"/usr/lib/python2.7/site-<wbr>packages/django/core/handlers/<wbr>base.py\", line 112, in get_response\n    response = wrapped_callback(request, *callback_args, **callback_kwargs)\n",</font></div><div><font face="monospace">        "  File \"/usr/lib/python2.7/site-<wbr>packages/django/views/generic/<wbr>base.py\", line 69, in view\n    return self.dispatch(request, *args, **kwargs)\n",</font></div><div><font face="monospace">        "  File \"/usr/lib/python2.7/site-<wbr>packages/django/views/generic/<wbr>base.py\", line 87, in dispatch\n    return handler(request, *args, **kwargs)\n",</font></div><div><font face="monospace">        "  File \"/usr/lib/python2.7/site-<wbr>packages/pulp/server/<wbr>webservices/views/decorators.<wbr>py\", line 241, in _auth_decorator\n    return _verify_auth(self, operation, super_user_only, method, *args, **kwargs)\n",</font></div><div><font face="monospace">        "  File \"/usr/lib/python2.7/site-<wbr>packages/pulp/server/<wbr>webservices/views/decorators.<wbr>py\", line 195, in _verify_auth\n    value = method(self, *args, **kwargs)\n",</font></div><div><font face="monospace">        "  File \"/usr/lib/python2.7/site-<wbr>packages/pulp/server/<wbr>webservices/views/search.py\", line 108, in get\n    return self._generate_response(query, options, *args, **kwargs)\n",</font></div><div><font face="monospace">        "  File \"/usr/lib/python2.7/site-<wbr>packages/pulp/server/<wbr>webservices/views/<wbr>repositories.py\", line 285, in _generate_response\n    criteria = UnitAssociationCriteria.from_<wbr>client_input(query)\n",</font></div><div><font face="monospace">        "  File \"/usr/lib/python2.7/site-<wbr>packages/pulp/server/db/model/<wbr>criteria.py\", line 286, in from_client_input\n    association_fields = _validate_fields(fields.pop('<wbr>association', None))\n"</font></div><div><font face="monospace">    ]</font></div><div><font face="monospace">}</font></div><div><br></div><div>I also can't work out how to get it to accept a filter to restrict the results by a field value:</div><div><br></div><div>e.g.<br></div><div><div><font face="monospace">search = {<br></font></div><div><font face="monospace">  "criteria": { "filters": {"created": { "gt": {"$date": "2015-01-01T00:00:00Z"}}}},</font></div><div><font face="monospace">  "limit":1</font></div><div><font face="monospace">}</font></div></div><div><span style="font-family:monospace">response = requests.post(API_URL + '/repositories/test_repo/<wbr>search/units/'. cert=blah, data=json.dumps(search))</span><font face="monospace"><br></font></div><div><span style="font-family:monospace"><br></span></div><div>Result: 400 error with description: <span style="font-family:monospace">"Invalid properties: ['created']</span></div><div><font face="monospace"><br></font></div><div>or even simpler:</div><div><font face="monospace"><br></font></div><div><div><font face="monospace">search = {<br></font></div><div><font face="monospace">  "criteria": { "filters": {"repo_id": "test_repo"}},</font></div><div><font face="monospace">  "limit":1</font></div><div><font face="monospace">}</font></div></div><div><span style="font-family:monospace">response = requests.post(API_URL + '/repositories/test_repo/<wbr>search/units/'. cert=blah, data=json.dumps(search))</span><font face="monospace"><br></font></div><div><span style="font-family:monospace"><br></span></div><div>Result: 400 error with description: <span style="font-family:monospace">"Invalid properties: ['repo_id']</span></div><div><br></div><div>(obviously I wouldn't actually try to limit by repo_id given it's already limited by that in the URL)</div><div><br></div><div>Clearly I'm doing something wrong, any help is appreciated!<br></div><div><br></div><div>Thanks</div></div></div><span class="HOEnZb"><font color="#888888"><div dir="ltr"><div><div><br></div><div>Paul</div></div></div></font></span></div></div>
<br>______________________________<wbr>_________________<br>
Pulp-list mailing list<br>
<a href="mailto:Pulp-list@redhat.com">Pulp-list@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/pulp-list" rel="noreferrer" target="_blank">https://www.redhat.com/<wbr>mailman/listinfo/pulp-list</a><br></blockquote></div><br></div>