diff options
| author | Josh Gachnang <josh@pcsforeducation.com> | 2014-09-08 20:26:51 -0700 |
|---|---|---|
| committer | Jay Faulkner <jay@jvf.cc> | 2016-08-03 11:24:54 -0700 |
| commit | fd874652e3558cc2f9a3512f0c7b4e2f4170ec22 (patch) | |
| tree | b3612e57e460469972460393aa05a1f5df00d00b /ironic_python_agent/agent.py | |
| parent | ad60806f93c7d4cc9eec61ff24486db091ecb215 (diff) | |
| download | ironic-python-agent-fd874652e3558cc2f9a3512f0c7b4e2f4170ec22.tar.gz | |
Add metrics support to IPA
This utilizes the new metrics support in ironic-lib to allow the agent to
report timing metrics for agent API methods as configured in ironic-lib.
Additionally, this adds developer docs on how to use metrics in IPA,
including some caveats specific to ironic-lib.metrics use in IPA.
Co-Authored-By: Jay Faulkner <jay@jvf.cc>
Co-Authored-By: Alex Weeks <alex.weeks@gmail.com>
Change-Id: Ic08d4ff78b6fb614b474b956a32eac352a14262a
Partial-bug: #1526219
Diffstat (limited to 'ironic_python_agent/agent.py')
| -rw-r--r-- | ironic_python_agent/agent.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/ironic_python_agent/agent.py b/ironic_python_agent/agent.py index 0a1799aa..8c7d3347 100644 --- a/ironic_python_agent/agent.py +++ b/ironic_python_agent/agent.py @@ -20,6 +20,7 @@ import threading import time from oslo_concurrency import processutils +from oslo_config import cfg from oslo_log import log import pkg_resources from six.moves.urllib import parse as urlparse @@ -35,7 +36,6 @@ from ironic_python_agent import inspector from ironic_python_agent import ironic_api_client from ironic_python_agent import utils - LOG = log.getLogger(__name__) # Time(in seconds) to wait for any of the interfaces to be up @@ -45,6 +45,9 @@ NETWORK_WAIT_TIMEOUT = 60 # Time(in seconds) to wait before reattempt NETWORK_WAIT_RETRY = 5 +cfg.CONF.import_group('metrics', 'ironic_lib.metrics_utils') +cfg.CONF.import_group('metrics_statsd', 'ironic_lib.metrics_statsd') + def _time(): """Wraps time.time() for simpler testing.""" @@ -340,6 +343,15 @@ class IronicPythonAgent(base.ExecuteCommandMixin): hardware.cache_node(self.node) self.heartbeat_timeout = content['heartbeat_timeout'] + # Update config with values from Ironic + config = content.get('config', {}) + if config.get('metrics'): + for opt, val in config.items(): + setattr(cfg.CONF.metrics, opt, val) + if config.get('metrics_statsd'): + for opt, val in config.items(): + setattr(cfg.CONF.metrics_statsd, opt, val) + wsgi = simple_server.make_server( self.listen_address[0], self.listen_address[1], |
