]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Add tracing facility for drivers
authorAlex Meade <mr.alex.meade@gmail.com>
Mon, 6 Jul 2015 14:17:43 +0000 (10:17 -0400)
committerAlex Meade <mr.alex.meade@gmail.com>
Tue, 7 Jul 2015 19:05:18 +0000 (15:05 -0400)
commitba86efba8f4f25e007407ba74a17e158ee94fa29
tree533d0762351a055df06ce4baeab1eb5b892535c2
parent2cd5904eb809c117e849d4e5c1794ac8079ee14c
Add tracing facility for drivers

It is useful for engineering to be able to see the API traffic
to and from the storage controllers, as well as to see the
progression of method calls through the driver.

This work will add a simple config option to enable various
debug tracing types to be written to the debug log at runtime.
Use of the decorator has been added to NetApp drivers.

Drivers can make use of this facility by adding the
@cinder.utils.trace_method decorator to any method
calls they would like to allow tracing for or use trace_flags
for any other developer targeted debug logs. The trace_method
decorator can easily be added to every function of a class by
using the cinder.utils.TraceWrapperMetaclass or
cinder.utils.TraceWrapperWithABCMetaclass metaclasses. It is
advised to use the added decorators as the outer most decorator
for a function in order to avoid side-effects with other
decorators.

The @cinder.utils.trace_api method should be used to log
requests to storage backends by wrapping a method that
has the request as an argument and returns the response.

For example:
@six.add_metaclass(cinder.utils.TraceWrapperMetaclass)
class MyClass(object):
    pass

DocImpact
Change-Id: Ib9b9d3f40a272bb9c7ebccd1dc63df68a555eac5
cinder/tests/unit/test_utils.py
cinder/utils.py
cinder/volume/driver.py