Issue #827
Updated by ipanova@redhat.com about 9 years ago
Currently we have Views that are sharing more than one url, this causes the situation when url accepts other methods than the allowed one. One of the solution would be to slpit and have one url per View. <pre> $ curl -i -H "Accept: application/json" -H "WebFrameworkSwitch: django" -X GET -k -u admin:admin "https://localhost/pulp/api/v2/content/sources/" HTTP/1.1 200 OK Date: Tue, 31 Mar 2015 11:33:03 GMT Server: Apache/2.4.10 (Fedora) OpenSSL/1.0.1e-fips mod_wsgi/3.5 Python/2.7.5 Content-Length: 694 Content-Type: application/json [{"name": "Content World", "url": "/x86_64/os/", "max_concurrent": "10", "ssl_validation": "true", "expires": "3d", "enabled": "1", "base_url": "http://repos.fedorapeople.org/repos/pulp/pulp/demo_repos/zoo/", "priority": "0", "max_speed": "1000", "source_id": "content-zoo222", "type": "yum", "_href": "/pulp/api/v2/content/sources/content-zoo222/"}, {"name": "Content World", "url": "/x86_64/os/", "max_concurrent": "10", "ssl_validation": "true", "expires": "3d", "enabled": "1", "base_url": "http://repos.fedorapeople.org/repos/pulp/pulp/demo_repos/zoo/", "priority": "0", "max_speed": "1000", "source_id": "content-zoo", "type": "yum", "_href": "/pulp/api/v2/content/sources/content-zoo/"}][ipanova@ina pulp]$ $ curl -i -H "Accept: application/json" -H "WebFrameworkSwitch: django" -X PUT -k -u admin:admin "https://localhost/pulp/api/v2/content/sources/" HTTP/1.1 405 METHOD NOT ALLOWED Date: Tue, 31 Mar 2015 11:33:13 GMT Server: Apache/2.4.10 (Fedora) OpenSSL/1.0.1e-fips mod_wsgi/3.5 Python/2.7.5 Allow: GET, POST, HEAD, OPTIONS Content-Length: 0 Content-Type: text/html; charset=utf-8 [ipanova@ina pulp]$ curl -i -H "Accept: application/json" -H "WebFrameworkSwitch: django" -X POST -k -u admin:admin "https://localhost/pulp/api/v2/content/sources/" HTTP/1.1 500 INTERNAL SERVER ERROR Date: Tue, 31 Mar 2015 11:33:25 GMT Server: Apache/2.4.10 (Fedora) OpenSSL/1.0.1e-fips mod_wsgi/3.5 Python/2.7.5 Content-Encoding: utf-8 Content-Length: 1275 Connection: close Content-Type: application/json {"http_request_method": "POST", "exception": ["TypeError: post() takes exactly 3 arguments (2 given)\n"], "error_message": "post() takes exactly 3 arguments (2 given)", "_href": "/pulp/api/v2/content/sources/", "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 \"/home/ipanova/pulp_development/pulp/server/pulp/server/webservices/controllers/decorators.py\", line 241, in _auth_decorator\n return _verify_auth(self, operation, super_user_only, method, *args, **kwargs)\n", " File \"/home/ipanova/pulp_development/pulp/server/pulp/server/webservices/controllers/decorators.py\", line 195, in _verify_auth\n value = method(self, *args, **kwargs)\n", " File \"/home/ipanova/pulp_development/pulp/server/pulp/server/webservices/views/util.py\", line 83, in wrapper\n return func(*args, **kwargs)\n"]} </pre> *_pulp/api/v2/content/sources/ and pulp/api/v2/content/action/refresh share same View pulp/api/v2/content/sources/<source_id/ and pulp/api/v2/content/sources/<source-id>/action/refresh share same View_*