Project

Profile

Help

Issue #1863

closed

Exception using regex in filters against associate endpoint

Added by martin@hatchlane.com almost 8 years ago. Updated almost 4 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
High
Assignee:
Category:
-
Sprint/Milestone:
-
Start date:
Due date:
Estimated time:
Severity:
3. High
Version:
2.8.2
Platform Release:
2.9.2
OS:
RHEL 7
Triaged:
Yes
Groomed:
No
Sprint Candidate:
No
Tags:
Pulp 2
Sprint:
Sprint 5
Quarter:

Description

Hi,

When using filters, I am seeing exceptions against associate, but not search/units

[root@waterloo ~]# rpm -q pulp-server
pulp-server-2.8.3-0.1.beta.el7.noarch

[root@waterloo ~]# pulp-admin rpm repo content rpm --repo-id centos7-live-debug --fields filename
Filename: ipa-python-4.2.0-15.el7.centos.3.x86_64.rpm
Filename: kernel-debug-3.10.0-327.13.1.el7.x86_64.rpm
Filename: ipa-mincho-fonts-003.03-5.el7.noarch.rpm
Filename: ipa-server-trust-ad-4.2.0-15.0.1.el7.centos.6.x86_64.rpm
Filename: java-1.8.0-openjdk-debug-1.8.0.91-0.b14.el7_2.x86_64.rpm
Filename: ipa-server-trust-ad-4.2.0-15.0.1.el7.centos.6.1.x86_64.rpm
Filename: libblkid-2.23.2-26.el7_2.2.i686.rpm
Filename: ipa-client-4.2.0-15.0.1.el7.centos.6.1.x86_64.rpm
Filename: ipa-pgothic-fonts-003.03-5.el7.noarch.rpm

Using the following filter to avoid any "ipa" packages that are not version 4.1.0:

filters = {
"unit": {
'$or': [
{ "name": { "$not": '^(ipa.*)(?<!fonts)$' } },
{ "version": '4.1.0' }
]
}
}

It succeeds when running against repositories/x/search/units:

[root@waterloo ~]# ./test.py
kernel-debug-3.10.0-327.13.1.el7.x86_64
ipa-mincho-fonts-003.03-5.el7.noarch
java-1.8.0-openjdk-debug-1.8.0.91-0.b14.el7_2.x86_64
libblkid-2.23.2-26.el7_2.2.i686
ipa-pgothic-fonts-003.03-5.el7.noarch

But when I try and use the exact same filter with associate:

{
"exception": [
"EncodeError: <_sre.SRE_Pattern object at 0x7ff5000f0bd0> is not JSON serializable\n"
],
"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/util.py\", line 130, in wrapper\n return func(*args, **kwargs)\n",
" File \"/usr/lib/python2.7/site-packages/pulp/server/webservices/views/repositories.py\", line 1170, in post\n {'criteria': criteria.to_dict(), 'import_config_override': overrides}, tags=task_tags)\n",
" File \"/usr/lib/python2.7/site-packages/pulp/server/async/tasks.py\", line 400, in apply_async_with_reservation\n queue=RESOURCE_MANAGER_QUEUE)\n",
" File \"/usr/lib/python2.7/site-packages/pulp/server/async/tasks.py\", line 95, in apply_async\n return super(PulpTask, self).apply_async(*args, **kwargs)\n",
" File \"/usr/lib/python2.7/site-packages/celery/app/task.py\", line 555, in apply_async\n **dict(self._get_exec_options(), **options)\n",
" File \"/usr/lib/python2.7/site-packages/celery/app/base.py\", line 351, in send_task\n reply_to=reply_to or self.oid, **options\n",
" File \"/usr/lib/python2.7/site-packages/celery/app/amqp.py\", line 305, in publish_task\n **kwargs\n",
" File \"/usr/lib/python2.7/site-packages/kombu/messaging.py\", line 165, in publish\n compression, headers)\n",
" File \"/usr/lib/python2.7/site-packages/kombu/messaging.py\", line 241, in _prepare\n body) = dumps(body, serializer=serializer)\n",
" File \"/usr/lib/python2.7/site-packages/kombu/serialization.py\", line 164, in dumps\n payload = encoder(data)\n",
" File \"/usr/lib64/python2.7/contextlib.py\", line 35, inexit\n self.gen.throw(type, value, traceback)\n",
" File \"/usr/lib/python2.7/site-packages/kombu/serialization.py\", line 59, in _reraise_errors\n reraise(wrapper, wrapper(exc), sys.exc_info()[2])\n",
" File \"/usr/lib/python2.7/site-packages/kombu/serialization.py\", line 55, in _reraise_errors\n yield\n",
" File \"/usr/lib/python2.7/site-packages/kombu/serialization.py\", line 164, in dumps\n payload = encoder(data)\n",
" File \"/usr/lib/python2.7/site-packages/anyjson/
_init__.py\", line 141, in dumps\n return implementation.dumps(value)\n",
" File \"/usr/lib/python2.7/site-packages/anyjson/__init__.py\", line 87, in dumps\n return self._encode(data)\n",
" File \"/usr/lib64/python2.7/site-packages/simplejson/__init__.py\", line 354, in dumps\n return _default_encoder.encode(obj)\n",
" File \"/usr/lib64/python2.7/site-packages/simplejson/encoder.py\", line 262, in encode\n chunks = self.iterencode(o, _one_shot=True)\n",
" File \"/usr/lib64/python2.7/site-packages/simplejson/encoder.py\", line 340, in iterencode\n return _iterencode(o, 0)\n",
" File \"/usr/lib64/python2.7/site-packages/simplejson/encoder.py\", line 239, in default\n raise TypeError(repr(o) + \" is not JSON serializable\")\n"
],
"_href": "/pulp/api/v2/repositories/centos7-development-debug/actions/associate/",
"error_message": "<_sre.SRE_Pattern object at 0x7ff5000f0bd0> is not JSON serializable",
"http_request_method": "POST",
"http_status": 500
}

Please see the attached test.py use case which is equivalent to what I'm trying within our scripts


Files

test.py (1.49 KB) test.py martin@hatchlane.com, 04/25/2016 04:37 PM

Related issues

Copied to Pulp - Issue #2170: Getting a 500 instead of 400 when using a string in criteria instead of dictCLOSED - WONTFIXActions

Also available in: Atom PDF