Add osprofiler support
OpenStack profiling can be enabled by setting parameter --os-profile. The feature requires osprofiler library. If library is not present a warning message is shown. Change-Id: I2c1b0cbd99450236b3720e19700f99cfdc14e378 Closes-Bug: 1666585
This commit is contained in:
parent
0609e02559
commit
6fc8d21b3b
@ -21,6 +21,7 @@ usage: shaker-all-in-one [-h] [--agent-join-timeout AGENT_JOIN_TIMEOUT]
|
|||||||
[--nowatch-log-file] [--os-auth-url <auth-url>]
|
[--nowatch-log-file] [--os-auth-url <auth-url>]
|
||||||
[--os-cacert <auth-cacert>] [--os-insecure]
|
[--os-cacert <auth-cacert>] [--os-insecure]
|
||||||
[--os-password <auth-password>]
|
[--os-password <auth-password>]
|
||||||
|
[--os-profile <hmac-key>]
|
||||||
[--os-project-name <auth-project-name>]
|
[--os-project-name <auth-project-name>]
|
||||||
[--os-region-name <auth-region-name>]
|
[--os-region-name <auth-region-name>]
|
||||||
[--os-tenant-name <auth-tenant-name>]
|
[--os-tenant-name <auth-tenant-name>]
|
||||||
@ -148,6 +149,9 @@ optional arguments:
|
|||||||
defaults to env[OS_INSECURE].
|
defaults to env[OS_INSECURE].
|
||||||
--os-password <auth-password>
|
--os-password <auth-password>
|
||||||
Authentication password, defaults to env[OS_PASSWORD].
|
Authentication password, defaults to env[OS_PASSWORD].
|
||||||
|
--os-profile <hmac-key>
|
||||||
|
HMAC key for encrypting profiling context data,
|
||||||
|
defaults to env[OS_PROFILE].
|
||||||
--os-project-name <auth-project-name>
|
--os-project-name <auth-project-name>
|
||||||
Authentication project name. This option is mutually
|
Authentication project name. This option is mutually
|
||||||
exclusive with --os-tenant-name. Defaults to
|
exclusive with --os-tenant-name. Defaults to
|
||||||
|
@ -10,6 +10,7 @@ usage: shaker-cleanup [-h] [--cleanup] [--cleanup-on-error] [--config-dir DIR]
|
|||||||
[--nouse-syslog] [--nowatch-log-file]
|
[--nouse-syslog] [--nowatch-log-file]
|
||||||
[--os-auth-url <auth-url>] [--os-cacert <auth-cacert>]
|
[--os-auth-url <auth-url>] [--os-cacert <auth-cacert>]
|
||||||
[--os-insecure] [--os-password <auth-password>]
|
[--os-insecure] [--os-password <auth-password>]
|
||||||
|
[--os-profile <hmac-key>]
|
||||||
[--os-project-name <auth-project-name>]
|
[--os-project-name <auth-project-name>]
|
||||||
[--os-region-name <auth-region-name>]
|
[--os-region-name <auth-region-name>]
|
||||||
[--os-tenant-name <auth-tenant-name>]
|
[--os-tenant-name <auth-tenant-name>]
|
||||||
@ -86,6 +87,9 @@ optional arguments:
|
|||||||
defaults to env[OS_INSECURE].
|
defaults to env[OS_INSECURE].
|
||||||
--os-password <auth-password>
|
--os-password <auth-password>
|
||||||
Authentication password, defaults to env[OS_PASSWORD].
|
Authentication password, defaults to env[OS_PASSWORD].
|
||||||
|
--os-profile <hmac-key>
|
||||||
|
HMAC key for encrypting profiling context data,
|
||||||
|
defaults to env[OS_PROFILE].
|
||||||
--os-project-name <auth-project-name>
|
--os-project-name <auth-project-name>
|
||||||
Authentication project name. This option is mutually
|
Authentication project name. This option is mutually
|
||||||
exclusive with --os-tenant-name. Defaults to
|
exclusive with --os-tenant-name. Defaults to
|
||||||
|
@ -19,6 +19,7 @@ usage: shaker-image-builder [-h] [--cleanup-on-error] [--config-dir DIR]
|
|||||||
[--os-auth-url <auth-url>]
|
[--os-auth-url <auth-url>]
|
||||||
[--os-cacert <auth-cacert>] [--os-insecure]
|
[--os-cacert <auth-cacert>] [--os-insecure]
|
||||||
[--os-password <auth-password>]
|
[--os-password <auth-password>]
|
||||||
|
[--os-profile <hmac-key>]
|
||||||
[--os-project-name <auth-project-name>]
|
[--os-project-name <auth-project-name>]
|
||||||
[--os-region-name <auth-region-name>]
|
[--os-region-name <auth-region-name>]
|
||||||
[--os-tenant-name <auth-tenant-name>]
|
[--os-tenant-name <auth-tenant-name>]
|
||||||
@ -116,6 +117,9 @@ optional arguments:
|
|||||||
defaults to env[OS_INSECURE].
|
defaults to env[OS_INSECURE].
|
||||||
--os-password <auth-password>
|
--os-password <auth-password>
|
||||||
Authentication password, defaults to env[OS_PASSWORD].
|
Authentication password, defaults to env[OS_PASSWORD].
|
||||||
|
--os-profile <hmac-key>
|
||||||
|
HMAC key for encrypting profiling context data,
|
||||||
|
defaults to env[OS_PROFILE].
|
||||||
--os-project-name <auth-project-name>
|
--os-project-name <auth-project-name>
|
||||||
Authentication project name. This option is mutually
|
Authentication project name. This option is mutually
|
||||||
exclusive with --os-tenant-name. Defaults to
|
exclusive with --os-tenant-name. Defaults to
|
||||||
|
@ -11,7 +11,7 @@ usage: shaker [-h] [--agent-join-timeout AGENT_JOIN_TIMEOUT]
|
|||||||
[--noos-insecure] [--nouse-journal] [--nouse-syslog]
|
[--noos-insecure] [--nouse-journal] [--nouse-syslog]
|
||||||
[--nowatch-log-file] [--os-auth-url <auth-url>]
|
[--nowatch-log-file] [--os-auth-url <auth-url>]
|
||||||
[--os-cacert <auth-cacert>] [--os-insecure]
|
[--os-cacert <auth-cacert>] [--os-insecure]
|
||||||
[--os-password <auth-password>]
|
[--os-password <auth-password>] [--os-profile <hmac-key>]
|
||||||
[--os-project-name <auth-project-name>]
|
[--os-project-name <auth-project-name>]
|
||||||
[--os-region-name <auth-region-name>]
|
[--os-region-name <auth-region-name>]
|
||||||
[--os-tenant-name <auth-tenant-name>]
|
[--os-tenant-name <auth-tenant-name>]
|
||||||
@ -112,6 +112,9 @@ optional arguments:
|
|||||||
defaults to env[OS_INSECURE].
|
defaults to env[OS_INSECURE].
|
||||||
--os-password <auth-password>
|
--os-password <auth-password>
|
||||||
Authentication password, defaults to env[OS_PASSWORD].
|
Authentication password, defaults to env[OS_PASSWORD].
|
||||||
|
--os-profile <hmac-key>
|
||||||
|
HMAC key for encrypting profiling context data,
|
||||||
|
defaults to env[OS_PROFILE].
|
||||||
--os-project-name <auth-project-name>
|
--os-project-name <auth-project-name>
|
||||||
Authentication project name. This option is mutually
|
Authentication project name. This option is mutually
|
||||||
exclusive with --os-tenant-name. Defaults to
|
exclusive with --os-tenant-name. Defaults to
|
||||||
|
@ -147,6 +147,10 @@
|
|||||||
# Authentication region name, defaults to env[OS_REGION_NAME]. (string value)
|
# Authentication region name, defaults to env[OS_REGION_NAME]. (string value)
|
||||||
#os_region_name = RegionOne
|
#os_region_name = RegionOne
|
||||||
|
|
||||||
|
# HMAC key for encrypting profiling context data, defaults to env[OS_PROFILE].
|
||||||
|
# (string value)
|
||||||
|
#os_profile =
|
||||||
|
|
||||||
# Name or ID of external network, defaults to env[SHAKER_EXTERNAL_NET]. If no
|
# Name or ID of external network, defaults to env[SHAKER_EXTERNAL_NET]. If no
|
||||||
# value provided then Shaker picks any of available external networks. (string
|
# value provided then Shaker picks any of available external networks. (string
|
||||||
# value)
|
# value)
|
||||||
|
@ -115,6 +115,11 @@ OPENSTACK_OPTS = [
|
|||||||
default=utils.env('OS_REGION_NAME') or 'RegionOne',
|
default=utils.env('OS_REGION_NAME') or 'RegionOne',
|
||||||
help='Authentication region name, defaults to '
|
help='Authentication region name, defaults to '
|
||||||
'env[OS_REGION_NAME].'),
|
'env[OS_REGION_NAME].'),
|
||||||
|
cfg.StrOpt('os-profile', metavar='<hmac-key>',
|
||||||
|
default=utils.env('OS_PROFILE'),
|
||||||
|
sample_default='',
|
||||||
|
help='HMAC key for encrypting profiling context data, '
|
||||||
|
'defaults to env[OS_PROFILE].'),
|
||||||
|
|
||||||
cfg.StrOpt('external-net',
|
cfg.StrOpt('external-net',
|
||||||
default=utils.env('SHAKER_EXTERNAL_NET'),
|
default=utils.env('SHAKER_EXTERNAL_NET'),
|
||||||
|
@ -275,6 +275,8 @@ def pack_openstack_params(conf):
|
|||||||
params['auth']['tenant_name'] = conf.os_tenant_name
|
params['auth']['tenant_name'] = conf.os_tenant_name
|
||||||
if conf.os_project_name:
|
if conf.os_project_name:
|
||||||
params['auth']['project_name'] = conf.os_project_name
|
params['auth']['project_name'] = conf.os_project_name
|
||||||
|
if conf.os_profile:
|
||||||
|
params['os_profile'] = conf.os_profile
|
||||||
return params
|
return params
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
import os_client_config
|
import os_client_config
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
from oslo_utils import importutils
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -24,10 +24,25 @@ class OpenStackClientException(Exception):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def init_profiling(os_profile):
|
||||||
|
if os_profile:
|
||||||
|
osprofiler_profiler = importutils.try_import("osprofiler.profiler")
|
||||||
|
|
||||||
|
if osprofiler_profiler: # lib is present
|
||||||
|
osprofiler_profiler.init(os_profile)
|
||||||
|
trace_id = osprofiler_profiler.get().get_base_id()
|
||||||
|
LOG.info('Profiling is enabled, trace id: %s', trace_id)
|
||||||
|
else: # param is set, but lib is not present
|
||||||
|
LOG.warning('Profiling could not be enabled. To enable profiling '
|
||||||
|
'please install "osprofiler" library')
|
||||||
|
|
||||||
|
|
||||||
class OpenStackClient(object):
|
class OpenStackClient(object):
|
||||||
def __init__(self, openstack_params):
|
def __init__(self, openstack_params):
|
||||||
LOG.debug('Establishing connection to OpenStack')
|
LOG.debug('Establishing connection to OpenStack')
|
||||||
|
|
||||||
|
init_profiling(openstack_params.get('os_profile'))
|
||||||
|
|
||||||
config = os_client_config.OpenStackConfig()
|
config = os_client_config.OpenStackConfig()
|
||||||
cloud_config = config.get_one_cloud(**openstack_params)
|
cloud_config = config.get_one_cloud(**openstack_params)
|
||||||
if openstack_params['os_insecure']:
|
if openstack_params['os_insecure']:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user