Switch kaminario to use standard trace decorator

We have a standard debug tracing decorator in utils. We missed that
Kaminario added their own version of the same thing. This removes that
custom trace decorator in favor of our more standardized decorator.

Change-Id: Ic118cfc943008e869893a229c5267d045a21b570
This commit is contained in:
Sean McGinnis 2017-11-07 16:41:57 -06:00
parent fb27334719
commit 2127e55093
3 changed files with 36 additions and 57 deletions

View File

@ -105,28 +105,6 @@ if krest:
self.krestlock.release() self.krestlock.release()
def kaminario_logger(func):
"""Return a function wrapper.
The wrapper adds log for entry and exit to the function.
"""
def func_wrapper(*args, **kwargs):
LOG.debug('Entering %(function)s of %(class)s with arguments: '
' %(args)s, %(kwargs)s',
{'class': args[0].__class__.__name__,
'function': func.__name__,
'args': args[1:],
'kwargs': kwargs})
ret = func(*args, **kwargs)
LOG.debug('Exiting %(function)s of %(class)s '
'having return value: %(ret)s',
{'class': args[0].__class__.__name__,
'function': func.__name__,
'ret': ret})
return ret
return func_wrapper
class Replication(object): class Replication(object):
def __init__(self, config, *args, **kwargs): def __init__(self, config, *args, **kwargs):
self.backend_id = config.get('backend_id') self.backend_id = config.get('backend_id')
@ -148,7 +126,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
k2_lock_sfx = self.configuration.safe_get('san_ip') k2_lock_sfx = self.configuration.safe_get('san_ip')
self.k2_lock_name = "%s-%s" % (K2_LOCK_PREFIX, k2_lock_sfx) self.k2_lock_name = "%s-%s" % (K2_LOCK_PREFIX, k2_lock_sfx)
@kaminario_logger @utils.trace
def check_for_setup_error(self): def check_for_setup_error(self):
if krest is None: if krest is None:
msg = _("Unable to import 'krest' python module.") msg = _("Unable to import 'krest' python module.")
@ -197,12 +175,12 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
raise exception.InvalidInput(reason=msg) raise exception.InvalidInput(reason=msg)
self.replica = Replication(replica[0]) self.replica = Replication(replica[0])
@kaminario_logger @utils.trace
def do_setup(self, context): def do_setup(self, context):
super(KaminarioCinderDriver, self).do_setup(context) super(KaminarioCinderDriver, self).do_setup(context)
self._check_ops() self._check_ops()
@kaminario_logger @utils.trace
def create_volume(self, volume): def create_volume(self, volume):
"""Volume creation in K2 needs a volume group. """Volume creation in K2 needs a volume group.
@ -236,7 +214,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
if self._get_is_replica(volume.volume_type) and self.replica: if self._get_is_replica(volume.volume_type) and self.replica:
self._create_volume_replica(volume, vg, vol, self.replica.rpo) self._create_volume_replica(volume, vg, vol, self.replica.rpo)
@kaminario_logger @utils.trace
def _create_volume_replica(self, volume, vg, vol, rpo): def _create_volume_replica(self, volume, vg, vol, rpo):
"""Volume replica creation in K2 needs session and remote volume. """Volume replica creation in K2 needs session and remote volume.
@ -294,7 +272,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
self._delete_by_ref(self.client, "volume_groups", vg.name, "vg") self._delete_by_ref(self.client, "volume_groups", vg.name, "vg")
raise exception.KaminarioCinderDriverException(reason=ex) raise exception.KaminarioCinderDriverException(reason=ex)
@kaminario_logger @utils.trace
def _create_failover_volume_replica(self, volume, vg_name, vol_name): def _create_failover_volume_replica(self, volume, vg_name, vol_name):
"""Volume replica creation in K2 needs session and remote volume. """Volume replica creation in K2 needs session and remote volume.
@ -349,14 +327,14 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
self._delete_by_ref(self.client, "volume_groups", vg_name, "vg") self._delete_by_ref(self.client, "volume_groups", vg_name, "vg")
raise exception.KaminarioCinderDriverException(reason=ex) raise exception.KaminarioCinderDriverException(reason=ex)
@kaminario_logger @utils.trace
def _delete_by_ref(self, device, url, name, msg): def _delete_by_ref(self, device, url, name, msg):
rs = device.search(url, name=name) rs = device.search(url, name=name)
for result in rs.hits: for result in rs.hits:
result.delete() result.delete()
LOG.debug("Deleting %(msg)s: %(name)s", {'msg': msg, 'name': name}) LOG.debug("Deleting %(msg)s: %(name)s", {'msg': msg, 'name': name})
@kaminario_logger @utils.trace
def _failover_volume(self, volume): def _failover_volume(self, volume):
"""Promoting a secondary volume to primary volume.""" """Promoting a secondary volume to primary volume."""
session_name = self.get_session_name(volume.id) session_name = self.get_session_name(volume.id)
@ -369,7 +347,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
LOG.debug("The target session: %s state is " LOG.debug("The target session: %s state is "
"changed to failed_over ", rsession_name) "changed to failed_over ", rsession_name)
@kaminario_logger @utils.trace
def failover_host(self, context, volumes, secondary_id=None, groups=None): def failover_host(self, context, volumes, secondary_id=None, groups=None):
"""Failover to replication target.""" """Failover to replication target."""
volume_updates = [] volume_updates = []
@ -523,7 +501,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
back_end_ip = self.replica.backend_id back_end_ip = self.replica.backend_id
return back_end_ip, volume_updates, [] return back_end_ip, volume_updates, []
@kaminario_logger @utils.trace
def _create_volume_replica_user_snap(self, k2, sess): def _create_volume_replica_user_snap(self, k2, sess):
snap = k2.new("snapshots") snap = k2.new("snapshots")
snap.is_application_consistent = "False" snap.is_application_consistent = "False"
@ -552,7 +530,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
self.snap_updates.remove(l) self.snap_updates.remove(l)
eventlet.sleep(1) eventlet.sleep(1)
@kaminario_logger @utils.trace
def create_volume_from_snapshot(self, volume, snapshot): def create_volume_from_snapshot(self, volume, snapshot):
"""Create volume from snapshot. """Create volume from snapshot.
@ -617,7 +595,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
"failed", {"vol": vol_name, "view": view_name}) "failed", {"vol": vol_name, "view": view_name})
raise exception.KaminarioCinderDriverException(reason=ex) raise exception.KaminarioCinderDriverException(reason=ex)
@kaminario_logger @utils.trace
def create_cloned_volume(self, volume, src_vref): def create_cloned_volume(self, volume, src_vref):
"""Create a clone from source volume. """Create a clone from source volume.
@ -662,7 +640,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
LOG.exception("Create a clone: %s failed.", clone_name) LOG.exception("Create a clone: %s failed.", clone_name)
raise exception.KaminarioCinderDriverException(reason=ex) raise exception.KaminarioCinderDriverException(reason=ex)
@kaminario_logger @utils.trace
def delete_volume(self, volume): def delete_volume(self, volume):
"""Volume in K2 exists in a volume group. """Volume in K2 exists in a volume group.
@ -687,7 +665,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
LOG.exception("Deletion of volume %s failed.", vol_name) LOG.exception("Deletion of volume %s failed.", vol_name)
raise exception.KaminarioCinderDriverException(reason=ex) raise exception.KaminarioCinderDriverException(reason=ex)
@kaminario_logger @utils.trace
def _delete_volume_replica(self, volume, vg_name, vol_name): def _delete_volume_replica(self, volume, vg_name, vol_name):
rvg_name = self.get_rep_name(vg_name) rvg_name = self.get_rep_name(vg_name)
rvol_name = self.get_rep_name(vol_name) rvol_name = self.get_rep_name(vol_name)
@ -721,7 +699,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
self._delete_by_ref(self.target, "volume_groups", self._delete_by_ref(self.target, "volume_groups",
rvg_name, "remote vg") rvg_name, "remote vg")
@kaminario_logger @utils.trace
def _delete_failover_volume_replica(self, volume, vg_name, vol_name): def _delete_failover_volume_replica(self, volume, vg_name, vol_name):
rvg_name = self.get_rep_name(vg_name) rvg_name = self.get_rep_name(vg_name)
rvol_name = self.get_rep_name(vol_name) rvol_name = self.get_rep_name(vol_name)
@ -746,7 +724,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
obj.refresh() obj.refresh()
eventlet.sleep(1) eventlet.sleep(1)
@kaminario_logger @utils.trace
def get_volume_stats(self, refresh=False): def get_volume_stats(self, refresh=False):
if refresh: if refresh:
self.update_volume_stats() self.update_volume_stats()
@ -768,7 +746,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
def remove_export(self, context, volume): def remove_export(self, context, volume):
pass pass
@kaminario_logger @utils.trace
def create_snapshot(self, snapshot): def create_snapshot(self, snapshot):
"""Create a snapshot from a volume_group.""" """Create a snapshot from a volume_group."""
vg_name = self.get_volume_group_name(snapshot.volume_id) vg_name = self.get_volume_group_name(snapshot.volume_id)
@ -786,7 +764,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
LOG.exception("Creation of snapshot: %s failed.", snap_name) LOG.exception("Creation of snapshot: %s failed.", snap_name)
raise exception.KaminarioCinderDriverException(reason=ex) raise exception.KaminarioCinderDriverException(reason=ex)
@kaminario_logger @utils.trace
def delete_snapshot(self, snapshot): def delete_snapshot(self, snapshot):
"""Delete a snapshot.""" """Delete a snapshot."""
snap_name = self.get_snap_name(snapshot.id) snap_name = self.get_snap_name(snapshot.id)
@ -799,7 +777,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
LOG.exception("Deletion of snapshot: %s failed.", snap_name) LOG.exception("Deletion of snapshot: %s failed.", snap_name)
raise exception.KaminarioCinderDriverException(reason=ex) raise exception.KaminarioCinderDriverException(reason=ex)
@kaminario_logger @utils.trace
def extend_volume(self, volume, new_size): def extend_volume(self, volume, new_size):
"""Extend volume.""" """Extend volume."""
vol_name = self.get_volume_name(volume.id) vol_name = self.get_volume_name(volume.id)
@ -878,7 +856,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
"""Return the corresponding replication names.""" """Return the corresponding replication names."""
return "r{0}".format(name) return "r{0}".format(name)
@kaminario_logger @utils.trace
def _delete_host_by_name(self, name): def _delete_host_by_name(self, name):
"""Deleting host by name.""" """Deleting host by name."""
host_rs = self.client.search("hosts", name=name) host_rs = self.client.search("hosts", name=name)
@ -922,7 +900,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
def initialize_connection(self, volume, connector): def initialize_connection(self, volume, connector):
pass pass
@kaminario_logger @utils.trace
def terminate_connection(self, volume, connector): def terminate_connection(self, volume, connector):
"""Terminate connection of volume from host.""" """Terminate connection of volume from host."""
# Get volume object # Get volume object
@ -953,7 +931,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
else: else:
LOG.warning("Host: %s not found on K2.", host_name) LOG.warning("Host: %s not found on K2.", host_name)
@kaminario_logger @utils.trace
def k2_initialize_connection(self, volume, connector): def k2_initialize_connection(self, volume, connector):
# Get volume object. # Get volume object.
if type(volume).__name__ != 'RestObject': if type(volume).__name__ != 'RestObject':
@ -1012,7 +990,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
return True return True
return False return False
@kaminario_logger @utils.trace
def manage_existing(self, volume, existing_ref): def manage_existing(self, volume, existing_ref):
vol_name = existing_ref['source-name'] vol_name = existing_ref['source-name']
new_name = self.get_volume_name(volume.id) new_name = self.get_volume_name(volume.id)
@ -1063,7 +1041,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
vg.save() vg.save()
raise raise
@kaminario_logger @utils.trace
def manage_existing_get_size(self, volume, existing_ref): def manage_existing_get_size(self, volume, existing_ref):
vol_name = existing_ref['source-name'] vol_name = existing_ref['source-name']
v_rs = self.client.search("volumes", name=vol_name) v_rs = self.client.search("volumes", name=vol_name)
@ -1076,7 +1054,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
existing_ref=existing_ref, existing_ref=existing_ref,
reason=_('Unable to get size of manage volume.')) reason=_('Unable to get size of manage volume.'))
@kaminario_logger @utils.trace
def after_volume_copy(self, ctxt, volume, new_volume, remote=None): def after_volume_copy(self, ctxt, volume, new_volume, remote=None):
self.delete_volume(volume) self.delete_volume(volume)
vg_name_old = self.get_volume_group_name(volume.id) vg_name_old = self.get_volume_group_name(volume.id)
@ -1090,7 +1068,7 @@ class KaminarioCinderDriver(cinder.volume.driver.ISCSIDriver):
vol_new.name = vol_name_old vol_new.name = vol_name_old
vol_new.save() vol_new.save()
@kaminario_logger @utils.trace
def retype(self, ctxt, volume, new_type, diff, host): def retype(self, ctxt, volume, new_type, diff, host):
old_type = volume.get('volume_type') old_type = volume.get('volume_type')
vg_name = self.get_volume_group_name(volume.id) vg_name = self.get_volume_group_name(volume.id)

View File

@ -19,12 +19,12 @@ from cinder import coordination
from cinder import exception from cinder import exception
from cinder.i18n import _ from cinder.i18n import _
from cinder.objects import fields from cinder.objects import fields
from cinder import utils
from cinder.volume.drivers.kaminario import kaminario_common as common from cinder.volume.drivers.kaminario import kaminario_common as common
from cinder.zonemanager import utils as fczm_utils from cinder.zonemanager import utils as fczm_utils
K2_REP_FAILED_OVER = fields.ReplicationStatus.FAILED_OVER K2_REP_FAILED_OVER = fields.ReplicationStatus.FAILED_OVER
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
kaminario_logger = common.kaminario_logger
class KaminarioFCDriver(common.KaminarioCinderDriver): class KaminarioFCDriver(common.KaminarioCinderDriver):
@ -43,14 +43,14 @@ class KaminarioFCDriver(common.KaminarioCinderDriver):
# ThirdPartySystems wiki page name # ThirdPartySystems wiki page name
CI_WIKI_NAME = "Kaminario_K2_CI" CI_WIKI_NAME = "Kaminario_K2_CI"
@kaminario_logger @utils.trace
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(KaminarioFCDriver, self).__init__(*args, **kwargs) super(KaminarioFCDriver, self).__init__(*args, **kwargs)
self._protocol = 'FC' self._protocol = 'FC'
self.lookup_service = fczm_utils.create_lookup_service() self.lookup_service = fczm_utils.create_lookup_service()
@fczm_utils.add_fc_zone @fczm_utils.add_fc_zone
@kaminario_logger @utils.trace
@coordination.synchronized('{self.k2_lock_name}') @coordination.synchronized('{self.k2_lock_name}')
def initialize_connection(self, volume, connector): def initialize_connection(self, volume, connector):
"""Attach K2 volume to host.""" """Attach K2 volume to host."""
@ -83,7 +83,7 @@ class KaminarioFCDriver(common.KaminarioCinderDriver):
"initiator_target_map": init_target_map}} "initiator_target_map": init_target_map}}
@fczm_utils.remove_fc_zone @fczm_utils.remove_fc_zone
@kaminario_logger @utils.trace
@coordination.synchronized('{self.k2_lock_name}') @coordination.synchronized('{self.k2_lock_name}')
def terminate_connection(self, volume, connector, **kwargs): def terminate_connection(self, volume, connector, **kwargs):
# To support replication failback # To support replication failback
@ -124,7 +124,7 @@ class KaminarioFCDriver(common.KaminarioCinderDriver):
raise exception.KaminarioCinderDriverException(reason=msg) raise exception.KaminarioCinderDriverException(reason=msg)
return target_wwpns return target_wwpns
@kaminario_logger @utils.trace
def _get_host_object(self, connector): def _get_host_object(self, connector):
host_name = self.get_initiator_host_name(connector) host_name = self.get_initiator_host_name(connector)
LOG.debug("Searching initiator hostname: %s in K2.", host_name) LOG.debug("Searching initiator hostname: %s in K2.", host_name)

View File

@ -20,12 +20,13 @@ from cinder import exception
from cinder.i18n import _ from cinder.i18n import _
from cinder import interface from cinder import interface
from cinder.objects import fields from cinder.objects import fields
from cinder import utils
from cinder.volume.drivers.kaminario import kaminario_common as common from cinder.volume.drivers.kaminario import kaminario_common as common
ISCSI_TCP_PORT = "3260" ISCSI_TCP_PORT = "3260"
K2_REP_FAILED_OVER = fields.ReplicationStatus.FAILED_OVER K2_REP_FAILED_OVER = fields.ReplicationStatus.FAILED_OVER
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
kaminario_logger = common.kaminario_logger utils.trace = common.utils.trace
@interface.volumedriver @interface.volumedriver
@ -45,12 +46,12 @@ class KaminarioISCSIDriver(common.KaminarioCinderDriver):
# ThirdPartySystems wiki page name # ThirdPartySystems wiki page name
CI_WIKI_NAME = "Kaminario_K2_CI" CI_WIKI_NAME = "Kaminario_K2_CI"
@kaminario_logger @utils.trace
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(KaminarioISCSIDriver, self).__init__(*args, **kwargs) super(KaminarioISCSIDriver, self).__init__(*args, **kwargs)
self._protocol = 'iSCSI' self._protocol = 'iSCSI'
@kaminario_logger @utils.trace
@coordination.synchronized('{self.k2_lock_name}') @coordination.synchronized('{self.k2_lock_name}')
def initialize_connection(self, volume, connector): def initialize_connection(self, volume, connector):
"""Attach K2 volume to host.""" """Attach K2 volume to host."""
@ -80,7 +81,7 @@ class KaminarioISCSIDriver(common.KaminarioCinderDriver):
target_luns=[lun] * len(target_iqns)) target_luns=[lun] * len(target_iqns))
return result return result
@kaminario_logger @utils.trace
@coordination.synchronized('{self.k2_lock_name}') @coordination.synchronized('{self.k2_lock_name}')
def terminate_connection(self, volume, connector, **kwargs): def terminate_connection(self, volume, connector, **kwargs):
# To support replication failback # To support replication failback
@ -119,7 +120,7 @@ class KaminarioISCSIDriver(common.KaminarioCinderDriver):
raise exception.KaminarioCinderDriverException(reason=msg) raise exception.KaminarioCinderDriverException(reason=msg)
return iscsi_portals, target_iqns return iscsi_portals, target_iqns
@kaminario_logger @utils.trace
def _get_host_object(self, connector): def _get_host_object(self, connector):
host_name = self.get_initiator_host_name(connector) host_name = self.get_initiator_host_name(connector)
LOG.debug("Searching initiator hostname: %s in K2.", host_name) LOG.debug("Searching initiator hostname: %s in K2.", host_name)