Merge "fix network discovery meters"
This commit is contained in:
commit
c5ce0a703f
@ -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
|
||||
|
@ -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."""
|
||||
|
||||
|
@ -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})
|
||||
|
||||
|
||||
|
@ -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})
|
||||
|
||||
|
||||
|
@ -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})
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user