summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-09-11 15:00:38 +0000
committerGerrit Code Review <review@openstack.org>2014-09-11 15:00:38 +0000
commitc5ce0a703f3caed802a1404906d5506a01546e16 (patch)
tree66c85b135ce28c7f7fc5266d63b0f26e44ca30a9
parentdcf581a445892a994708b8007f9e56893f84fab6 (diff)
parente6f40fb18f99fd8603f895d4985ca3da8ddfb6cd (diff)
downloadceilometer-c5ce0a703f3caed802a1404906d5506a01546e16.tar.gz
Merge "fix network discovery meters"
-rw-r--r--ceilometer/central/plugin.py40
-rw-r--r--ceilometer/network/services/discovery.py16
-rw-r--r--ceilometer/tests/network/services/test_fwaas.py6
-rw-r--r--ceilometer/tests/network/services/test_lbaas.py6
-rw-r--r--ceilometer/tests/network/services/test_vpnaas.py6
5 files changed, 46 insertions, 28 deletions
diff --git a/ceilometer/central/plugin.py b/ceilometer/central/plugin.py
index 60e9b7f8..3ca83370 100644
--- a/ceilometer/central/plugin.py
+++ b/ceilometer/central/plugin.py
@@ -16,11 +16,15 @@
# under the License.
"""Base class for plugins used by the central agent.
"""
+from keystoneclient.v2_0 import client as ksclient
+from oslo.config import cfg
from ceilometer.openstack.common.gettextutils import _
from ceilometer.openstack.common import log
from ceilometer import plugin
+cfg.CONF.import_group('service_credentials', 'ceilometer.service')
+
LOG = log.getLogger(__name__)
@@ -28,32 +32,46 @@ class CentralPollster(plugin.PollsterBase):
"""Base class for plugins that support the polling API."""
-def check_keystone(service_type=None, client=None):
+def _get_keystone():
+ try:
+ return ksclient.Client(
+ username=cfg.CONF.service_credentials.os_username,
+ password=cfg.CONF.service_credentials.os_password,
+ tenant_id=cfg.CONF.service_credentials.os_tenant_id,
+ tenant_name=cfg.CONF.service_credentials.os_tenant_name,
+ cacert=cfg.CONF.service_credentials.os_cacert,
+ auth_url=cfg.CONF.service_credentials.os_auth_url,
+ region_name=cfg.CONF.service_credentials.os_region_name,
+ insecure=cfg.CONF.service_credentials.insecure)
+ except Exception as e:
+ return e
+
+
+def check_keystone(service_type=None):
"""Decorator function to check if manager has valid keystone client.
Also checks if the service is registered/enabled in Keystone.
:param service_type: name of service in Keystone
- :param client: client name if not passed in as function param
"""
def wrapped(f):
def func(self, *args, **kwargs):
- if client:
- manager = getattr(self, client, None)
- else:
- manager = kwargs.get('manager')
+ manager = kwargs.get('manager')
if not manager and len(args) > 0:
manager = args[0]
keystone = getattr(manager, 'keystone', None)
- if not keystone or isinstance(keystone, Exception):
+ if not keystone:
+ keystone = _get_keystone()
+ if isinstance(keystone, Exception):
LOG.error(_('Skip due to keystone error %s'),
str(keystone) if keystone else '')
return iter([])
elif service_type:
- endpoints = keystone.service_catalog.get_endpoints()
- if not endpoints.get(service_type):
- LOG.warning(_('Skipping because service is not'
- 'registered in keystone'))
+ endpoints = keystone.service_catalog.get_endpoints(
+ service_type=service_type)
+ if not endpoints:
+ LOG.warning(_('Skipping because %s service is not '
+ 'registered in keystone') % service_type)
return iter([])
return f(self, *args, **kwargs)
return func
diff --git a/ceilometer/network/services/discovery.py b/ceilometer/network/services/discovery.py
index d16dc6b9..710a9f04 100644
--- a/ceilometer/network/services/discovery.py
+++ b/ceilometer/network/services/discovery.py
@@ -28,7 +28,7 @@ class _BaseServicesDiscovery(base_plugin.DiscoveryBase):
class LBPoolsDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network', 'neutron_cli')
+ @plugin.check_keystone('network')
def discover(self, param=None):
"""Discover resources to monitor."""
@@ -38,7 +38,7 @@ class LBPoolsDiscovery(_BaseServicesDiscovery):
class LBVipsDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network', 'neutron_cli')
+ @plugin.check_keystone('network')
def discover(self, param=None):
"""Discover resources to monitor."""
@@ -48,7 +48,7 @@ class LBVipsDiscovery(_BaseServicesDiscovery):
class LBMembersDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network', 'neutron_cli')
+ @plugin.check_keystone('network')
def discover(self, param=None):
"""Discover resources to monitor."""
@@ -58,7 +58,7 @@ class LBMembersDiscovery(_BaseServicesDiscovery):
class LBHealthMonitorsDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network', 'neutron_cli')
+ @plugin.check_keystone('network')
def discover(self, param=None):
"""Discover resources to monitor."""
@@ -67,7 +67,7 @@ class LBHealthMonitorsDiscovery(_BaseServicesDiscovery):
class VPNServicesDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network', 'neutron_cli')
+ @plugin.check_keystone('network')
def discover(self, param=None):
"""Discover resources to monitor."""
@@ -77,7 +77,7 @@ class VPNServicesDiscovery(_BaseServicesDiscovery):
class IPSecConnectionsDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network', 'neutron_cli')
+ @plugin.check_keystone('network')
def discover(self, param=None):
"""Discover resources to monitor."""
@@ -86,7 +86,7 @@ class IPSecConnectionsDiscovery(_BaseServicesDiscovery):
class FirewallDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network', 'neutron_cli')
+ @plugin.check_keystone('network')
def discover(self, param=None):
"""Discover resources to monitor."""
@@ -96,7 +96,7 @@ class FirewallDiscovery(_BaseServicesDiscovery):
class FirewallPolicyDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network', 'neutron_cli')
+ @plugin.check_keystone('network')
def discover(self, param=None):
"""Discover resources to monitor."""
diff --git a/ceilometer/tests/network/services/test_fwaas.py b/ceilometer/tests/network/services/test_fwaas.py
index 77f4e95e..ee2ad86f 100644
--- a/ceilometer/tests/network/services/test_fwaas.py
+++ b/ceilometer/tests/network/services/test_fwaas.py
@@ -20,9 +20,9 @@ from oslotest import base
from oslotest import mockpatch
from ceilometer.central import manager
+from ceilometer.central import plugin
from ceilometer.network.services import discovery
from ceilometer.network.services import fwaas
-from ceilometer import neutron_client as cli
from ceilometer.openstack.common import context
@@ -34,8 +34,8 @@ class _BaseTestFWPollster(base.BaseTestCase):
self.addCleanup(mock.patch.stopall)
self.context = context.get_admin_context()
self.manager = manager.AgentManager()
- cli.Client.keystone = mock.Mock()
- cli.Client.keystone.service_catalog.get_endpoints = mock.Mock(
+ plugin._get_keystone = mock.Mock()
+ plugin._get_keystone.service_catalog.get_endpoints = mock.MagicMock(
return_value={'network': mock.ANY})
diff --git a/ceilometer/tests/network/services/test_lbaas.py b/ceilometer/tests/network/services/test_lbaas.py
index 7e1def53..60322e56 100644
--- a/ceilometer/tests/network/services/test_lbaas.py
+++ b/ceilometer/tests/network/services/test_lbaas.py
@@ -20,9 +20,9 @@ from oslotest import base
from oslotest import mockpatch
from ceilometer.central import manager
+from ceilometer.central import plugin
from ceilometer.network.services import discovery
from ceilometer.network.services import lbaas
-from ceilometer import neutron_client as cli
from ceilometer.openstack.common import context
@@ -34,8 +34,8 @@ class _BaseTestLBPollster(base.BaseTestCase):
self.addCleanup(mock.patch.stopall)
self.context = context.get_admin_context()
self.manager = manager.AgentManager()
- cli.Client.keystone = mock.Mock()
- cli.Client.keystone.service_catalog.get_endpoints = mock.Mock(
+ plugin._get_keystone = mock.Mock()
+ plugin._get_keystone.service_catalog.get_endpoints = mock.MagicMock(
return_value={'network': mock.ANY})
diff --git a/ceilometer/tests/network/services/test_vpnaas.py b/ceilometer/tests/network/services/test_vpnaas.py
index bce2f35f..228da739 100644
--- a/ceilometer/tests/network/services/test_vpnaas.py
+++ b/ceilometer/tests/network/services/test_vpnaas.py
@@ -20,9 +20,9 @@ from oslotest import base
from oslotest import mockpatch
from ceilometer.central import manager
+from ceilometer.central import plugin
from ceilometer.network.services import discovery
from ceilometer.network.services import vpnaas
-from ceilometer import neutron_client as cli
from ceilometer.openstack.common import context
@@ -34,8 +34,8 @@ class _BaseTestVPNPollster(base.BaseTestCase):
self.addCleanup(mock.patch.stopall)
self.context = context.get_admin_context()
self.manager = manager.AgentManager()
- cli.Client.keystone = mock.Mock()
- cli.Client.keystone.service_catalog.get_endpoints = mock.Mock(
+ plugin._get_keystone = mock.Mock()
+ plugin._get_keystone.service_catalog.get_endpoints = mock.MagicMock(
return_value={'network': mock.ANY})