Hide Forgot
Description of problem: Looks like puppet repo sync cancel is not working Version-Release number of selected component (if applicable): [root@dell-pe2950-01 ~]# rpm -qa |grep pulp-server pulp-server-2.3.0-0.36.beta.el6.noarch [root@dell-pe2950-01 ~]# How reproducible: Steps to Reproduce: 1. Try to cancel a running puppet sync 2. 3. Actual results: [root@dell-pe2950-01 ~]# pulp-admin tasks cancel --task-id ca847b74-8317-484d-b7f6-ebb6c13fbc76 The requested task does not support cancellation. Expected results: Additional info: from pulp.log 2013-11-19 10:10:45,869 pulp.server.dispatch.task:ERROR: cancel() takes exactly 2 arguments (1 given) Traceback (most recent call last): File "/usr/lib/python2.6/site-packages/pulp/server/dispatch/task.py", line 263, in cancel self._call_cancel_control_hook() File "/usr/lib/python2.6/site-packages/pulp/server/dispatch/task.py", line 283, in _call_cancel_control_hook cancel_hook(self.call_request, self.call_report) File "/usr/lib/python2.6/site-packages/pulp_puppet/plugins/importers/importer.py", line 82, in cancel_sync_repo sync_runner.cancel_sync() File "/usr/lib/python2.6/site-packages/pulp_puppet/plugins/importers/sync.py", line 94, in cancel_sync downloader.cancel() TypeError: cancel() takes exactly 2 arguments (1 given) 2013-11-19 10:10:45,870 pulp.server.webservices.middleware.exception:ERROR: Cancel Not Implemented for Task: ca847b74-8317-484d-b7f6-ebb6c13fbc76 Traceback (most recent call last): File "/usr/lib/python2.6/site-packages/pulp/server/webservices/middleware/exception.py", line 44, in __call__ return self.app(environ, start_response) File "/usr/lib/python2.6/site-packages/pulp/server/webservices/middleware/postponed.py", line 39, in __call__ return self.app(environ, start_response) File "/usr/lib/python2.6/site-packages/web/application.py", line 279, in wsgi result = self.handle_with_processors() File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 26, in _handle_with_processors return process(self.processors) File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 23, in process return p(lambda : process(processors)) File "/usr/lib/python2.6/site-packages/web/application.py", line 566, in processor return handler() File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 23, in <lambda> return p(lambda : process(processors)) File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 23, in process return p(lambda : process(processors)) File "/usr/lib/python2.6/site-packages/web/application.py", line 581, in processor result = handler() File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 23, in <lambda> return p(lambda : process(processors)) File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 25, in process return self.handle() File "/usr/lib/python2.6/site-packages/web/application.py", line 230, in handle return self._delegate(fn, self.fvars, args) File "/usr/lib/python2.6/site-packages/web/application.py", line 422, in _delegate return f() File "/usr/lib/python2.6/site-packages/web/application.py", line 430, in <lambda> f = lambda: self._delegate_sub_application(pat, what) File "/usr/lib/python2.6/site-packages/web/application.py", line 455, in _delegate_sub_application return app.handle_with_processors() File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 26, in _handle_with_processors return process(self.processors) File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 23, in process return p(lambda : process(processors)) File "/usr/lib/python2.6/site-packages/web/application.py", line 566, in processor return handler() File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 23, in <lambda> return p(lambda : process(processors)) File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 23, in process return p(lambda : process(processors)) File "/usr/lib/python2.6/site-packages/web/application.py", line 581, in processor result = handler() File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 23, in <lambda> return p(lambda : process(processors)) File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 25, in process return self.handle() File "/usr/lib/python2.6/site-packages/web/application.py", line 230, in handle return self._delegate(fn, self.fvars, args) File "/usr/lib/python2.6/site-packages/web/application.py", line 405, in _delegate return handle_class(f) File "/usr/lib/python2.6/site-packages/web/application.py", line 396, in handle_class return tocall(*args) File "/usr/lib/python2.6/site-packages/pulp/server/webservices/controllers/decorators.py", line 227, in _auth_decorator value = method(self, *args, **kwargs) File "/usr/lib/python2.6/site-packages/pulp/server/webservices/controllers/dispatch.py", line 104, in DELETE raise TaskCancelNotImplemented(call_request_id) TaskCancelNotImplemented: Cancel Not Implemented for Task: ca847b74-8317-484d-b7f6-ebb6c13fbc76
The bug is here: https://github.com/pulp/pulp_puppet/blob/9be8c67/pulp_puppet_plugins/pulp_puppet/plugins/importers/sync.py#L94 This call to cancel() requires an argument that isn't being passed. It's worth noting that the cancel method that requires an argument does not actually use that argument. That should be resolved by either removing it or adding the missing logic to use it. It's confusing that there are different kinds of downloaders with slightly different APIs. The nectar downloaders have a "cancel()" method that takes no arguments, but now the puppet importer apparently has its own objects called "downloaders". They have a cancel method that does take an argument. It might be less confusing if the "downloaders" in the puppet import had a different name, like DownloadCoordinator. They don't actually do any downloading, but rather are a layer between the importer and the nectar downloaders.
Awaiting review: https://github.com/pulp/pulp_puppet/pull/88
build: pulp-2.3.0-0.38.beta.
puppet-sync gets cancelled now. It does not give a message. But that was the same behavior in 2.2 as well. So I will write up another bug on it. [root@pulp-v2-server ~]# rpm -qa pulp-server pulp-server-2.3.0-0.38.beta.el6.noarch [root@pulp-v2-server ~]# [root@pulp-v2-server ~]# pulp-admin puppet repo sync run --repo-id puppet-repo +----------------------------------------------------------------------+ Synchronizing Repository [puppet-repo] +----------------------------------------------------------------------+ This command may be exited by pressing ctrl+c without affecting the actual operation on the server. Downloading metadata... [==================================================] 100% Metadata Query: 1/1 items ... completed Downloading new modules... [= ] 2% Module: 45/1813 items
Pulp 2.3 released.