from oslo_db import options
from oslo_db.sqlalchemy import session as db_session
from oslo_log import log as logging
+from oslo_utils import importutils
from oslo_utils import timeutils
from oslo_utils import uuidutils
-import osprofiler.sqlalchemy
+osprofiler_sqlalchemy = importutils.try_import('osprofiler.sqlalchemy')
import six
import sqlalchemy
from sqlalchemy import MetaData
CONF.import_group("profiler", "cinder.service")
if CONF.profiler.profiler_enabled:
if CONF.profiler.trace_sqlalchemy:
- osprofiler.sqlalchemy.add_tracing(sqlalchemy,
+ osprofiler_sqlalchemy.add_tracing(sqlalchemy,
_FACADE.get_engine(),
"db")
from oslo_log import log as logging
import oslo_messaging as messaging
from oslo_serialization import jsonutils
-from osprofiler import profiler
+from oslo_utils import importutils
+profiler = importutils.try_import('osprofiler.profiler')
import cinder.context
import cinder.exception
def serialize_context(self, context):
_context = context.to_dict()
- prof = profiler.get()
- if prof:
- trace_info = {
- "hmac_key": prof.hmac_key,
- "base_id": prof.get_base_id(),
- "parent_id": prof.get_id()
- }
- _context.update({"trace_info": trace_info})
+ if profiler is not None:
+ prof = profiler.get()
+ if prof:
+ trace_info = {
+ "hmac_key": prof.hmac_key,
+ "base_id": prof.get_base_id(),
+ "parent_id": prof.get_id()
+ }
+ _context.update({"trace_info": trace_info})
return _context
def deserialize_context(self, context):
trace_info = context.pop("trace_info", None)
if trace_info:
- profiler.init(**trace_info)
+ if profiler is not None:
+ profiler.init(**trace_info)
return cinder.context.RequestContext.from_dict(context)
from oslo_service import service
from oslo_service import wsgi
from oslo_utils import importutils
-import osprofiler.notifier
-from osprofiler import profiler
-import osprofiler.web
+osprofiler_notifier = importutils.try_import('osprofiler.notifier')
+profiler = importutils.try_import('osprofiler.profiler')
+osprofiler_web = importutils.try_import('osprofiler.web')
from cinder import context
from cinder import exception
def setup_profiler(binary, host):
+ if (osprofiler_notifier is None or
+ profiler is None or
+ osprofiler_web is None):
+ LOG.debug('osprofiler is not present')
+ return
+
if CONF.profiler.profiler_enabled:
- _notifier = osprofiler.notifier.create(
+ _notifier = osprofiler_notifier.create(
"Messaging", messaging, context.get_admin_context().to_dict(),
rpc.TRANSPORT, "cinder", binary, host)
- osprofiler.notifier.set(_notifier)
- osprofiler.web.enable(CONF.profiler.hmac_keys)
+ osprofiler_notifier.set(_notifier)
+ osprofiler_web.enable(CONF.profiler.hmac_keys)
LOG.warning(
_LW("OSProfiler is enabled.\nIt means that person who knows "
"any of hmac_keys that are specified in "
"To disable OSprofiler set in cinder.conf:\n"
"[profiler]\nprofiler_enabled=false"))
else:
- osprofiler.web.disable()
+ osprofiler_web.disable()
class Service(service.Service):
from oslo_utils import timeutils
from oslo_utils import units
from oslo_utils import uuidutils
-from osprofiler import profiler
+profiler = importutils.try_import('osprofiler.profiler')
import six
from taskflow import exceptions as tfe
host=self.host,
is_vol_db_empty=vol_db_empty)
- if CONF.profiler.profiler_enabled:
+ if CONF.profiler.profiler_enabled and profiler is not None:
self.driver = profiler.trace_cls("driver")(self.driver)
try:
self.extra_capabilities = jsonutils.loads(