Attempting to manage and existing volume in cinder using taskflow 1.32.0 will produce the below traceback in the c-api.log
http://paste.openstack.org/show/497120/
2016-05-13 18:29:45.025 ERROR cinder.api.middleware.fault [req-f6e70f8a-c164-4db3-962f-2f896b10d7eb tempest-NetAppCDOTManageUnmanageTest-1390677315] Caught error: <class 'taskflow.exceptions.MissingDependencies'> 'linear_flow.Flow: volume_manage_existing_api(len=2)' requires ['optional_args'] but no other entity produces said requirements
MissingDependencies: 'cinder.volume.flows.api.manage_existing.EntryCreateTask;volume:manage_existing==1.0' requires ['optional_args'] but no other entity produces said requirements
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault Traceback (most recent call last):
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/opt/stack/new/cinder/cinder/api/middleware/fault.py", line 79, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return req.get_response(self.application)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1299, in send
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault application, catch_exc_info=False)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1263, in call_application
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault app_iter = application(self.environ, start_response)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return resp(environ, start_response)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault resp = self.call_func(req, *args, **self.kwargs)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return self.func(req, *args, **kwargs)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/osprofiler/web.py", line 108, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return request.get_response(self.application)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1299, in send
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault application, catch_exc_info=False)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1263, in call_application
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault app_iter = application(self.environ, start_response)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault resp = self.call_func(req, *args, **self.kwargs)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return self.func(req, *args, **kwargs)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 467, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault response = req.get_response(self._app)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1299, in send
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault application, catch_exc_info=False)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1263, in call_application
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault app_iter = application(self.environ, start_response)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return resp(environ, start_response)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return resp(environ, start_response)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 141, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault response = self.app(environ, start_response)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return resp(environ, start_response)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault resp = self.call_func(req, *args, **self.kwargs)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return self.func(req, *args, **kwargs)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/opt/stack/new/cinder/cinder/api/openstack/wsgi.py", line 841, in __call__
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault content_type, body, accept)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/opt/stack/new/cinder/cinder/api/openstack/wsgi.py", line 903, in _process_stack
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault action_result = self.dispatch(meth, request, action_args)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/opt/stack/new/cinder/cinder/api/openstack/wsgi.py", line 998, in dispatch
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return method(req=request, **action_args)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/opt/stack/new/cinder/cinder/api/contrib/volume_manage.py", line 140, in create
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault **kwargs)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/opt/stack/new/cinder/cinder/volume/api.py", line 1585, in manage_existing
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault flow_engine.run()
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/taskflow/engines/action_engine/engine.py", line 246, in run
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault for _state in self.run_iter(timeout=timeout):
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/taskflow/engines/action_engine/engine.py", line 272, in run_iter
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault self.validate()
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/fasteners/lock.py", line 306, in wrapper
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return f(self, *args, **kwargs)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/taskflow/engines/action_engine/engine.py", line 79, in wrapper
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault return meth(self, *args, **kwargs)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault File "/usr/local/lib/python2.7/dist-packages/taskflow/engines/action_engine/engine.py", line 428, in validate
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault cause=last_cause)
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault MissingDependencies: 'linear_flow.Flow: volume_manage_existing_api(len=2)' requires ['optional_args'] but no other entity produces said requirements
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault MissingDependencies: 'cinder.volume.flows.api.manage_existing.EntryCreateTask;volume:manage_existing==1.0' requires ['optional_args'] but no other entity produces said requirements
2016-05-13 18:29:45.025 27301 ERROR cinder.api.middleware.fault
You can get it to work again by installing taskflow 1.31.0 or lower
Some notes from IRC discussion:
14:53 < jimbobhickville> so, revert and execute have always required the same argument list, it was just never enforced
during compilation previously. this code: /github. com/openstack/ cinder/ blob/9567844f0e 180a7278767fdcd 4378b19913933be /cinder/ volume/ flows/api/ manage_ existing. py#L86
somehow, so we verify that all the required arguments *are* provided as part of the flow
compilation
*was* reverted, the revert would have failed because it wouldn't pass in anything for
`optional_ args`. and if a revert of a task blows up, taskflow stops processing reverts, so any
tasks prior to this task would not be reverted, which is generally undesirable (and fun to debug)
https:/
14:53 < jimbobhickville> `optional_args` will never have a value because it isn't required by the `execute` method
14:54 < jimbobhickville> we fixed it so that `revert` *can* take additional arguments, so long as the flow provides them
14:57 < jimbobhickville> so, basically, this was a bug in cinder that taskflow just let slide previously, but if this task