summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-09-22 13:34:50 +0000
committerGerrit Code Review <review@openstack.org>2014-09-22 13:34:50 +0000
commit33bb032e32157e4179e711962b869323983e2d9f (patch)
treef82b751c7602e10577805094ac2071e00c61dea7
parent22a8654c5cc68599bee0e2a884dbb192939199a7 (diff)
parent72d65777962a2b93e80f7e17ce6602caa6a79bed (diff)
downloadceilometer-33bb032e32157e4179e711962b869323983e2d9f.tar.gz
Merge "Enable to get service types from configuration file"
-rw-r--r--ceilometer/energy/kwapi.py12
-rw-r--r--ceilometer/image/glance.py9
-rw-r--r--ceilometer/network/floatingip.py7
-rw-r--r--ceilometer/network/services/discovery.py21
-rw-r--r--ceilometer/neutron_client.py11
-rw-r--r--ceilometer/nova_client.py11
-rw-r--r--ceilometer/objectstore/swift.py16
-rw-r--r--ceilometer/tests/energy/test_kwapi.py8
-rw-r--r--ceilometer/tests/image/test_glance.py4
-rw-r--r--ceilometer/tests/network/test_floatingip.py3
-rw-r--r--doc/source/configuration.rst17
11 files changed, 102 insertions, 17 deletions
diff --git a/ceilometer/energy/kwapi.py b/ceilometer/energy/kwapi.py
index a77f3f49..8eb9a333 100644
--- a/ceilometer/energy/kwapi.py
+++ b/ceilometer/energy/kwapi.py
@@ -17,6 +17,7 @@
import datetime
from keystoneclient import exceptions
+from oslo.config import cfg
import requests
import six
@@ -25,8 +26,17 @@ from ceilometer.openstack.common.gettextutils import _
from ceilometer.openstack.common import log
from ceilometer import sample
+
LOG = log.getLogger(__name__)
+service_types_opts = [
+ cfg.StrOpt('kwapi',
+ default='energy',
+ help='Kwapi service type.'),
+]
+
+cfg.CONF.register_opts(service_types_opts, group='service_types')
+
class KwapiClient(object):
"""Kwapi API client."""
@@ -56,7 +66,7 @@ class _Base(plugin.CentralPollster):
@property
def default_discovery(self):
- return 'endpoint:energy'
+ return 'endpoint:%s' % cfg.CONF.service_types.kwapi
@staticmethod
def get_kwapi_client(ksclient, endpoint):
diff --git a/ceilometer/image/glance.py b/ceilometer/image/glance.py
index 4868afd8..d444f489 100644
--- a/ceilometer/image/glance.py
+++ b/ceilometer/image/glance.py
@@ -39,14 +39,21 @@ OPTS = [
"(default value in glanceclient is used)."),
]
+service_types_opts = [
+ cfg.StrOpt('glance',
+ default='image',
+ help='Glance service type.'),
+]
+
cfg.CONF.register_opts(OPTS)
+cfg.CONF.register_opts(service_types_opts, group='service_types')
class _Base(plugin.CentralPollster):
@property
def default_discovery(self):
- return 'endpoint:image'
+ return 'endpoint:%s' % cfg.CONF.service_types.glance
@staticmethod
def get_glance_client(ksclient, endpoint):
diff --git a/ceilometer/network/floatingip.py b/ceilometer/network/floatingip.py
index 4ea1c67d..132e0fe7 100644
--- a/ceilometer/network/floatingip.py
+++ b/ceilometer/network/floatingip.py
@@ -17,6 +17,8 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
+
+from oslo.config import cfg
from oslo.utils import timeutils
from ceilometer.central import plugin
@@ -25,8 +27,11 @@ from ceilometer.openstack.common.gettextutils import _
from ceilometer.openstack.common import log
from ceilometer import sample
+
LOG = log.getLogger(__name__)
+cfg.CONF.import_group('service_types', 'ceilometer.nova_client')
+
class FloatingIPPollster(plugin.CentralPollster):
@@ -43,7 +48,7 @@ class FloatingIPPollster(plugin.CentralPollster):
@property
def default_discovery(self):
- return 'endpoint:compute'
+ return 'endpoint:%s' % cfg.CONF.service_types.nova
def get_samples(self, manager, cache, resources):
for endpoint in resources:
diff --git a/ceilometer/network/services/discovery.py b/ceilometer/network/services/discovery.py
index 87e646de..55df01f5 100644
--- a/ceilometer/network/services/discovery.py
+++ b/ceilometer/network/services/discovery.py
@@ -15,11 +15,16 @@
# License for the specific language governing permissions and limitations
# under the License.
+from oslo.config import cfg
+
from ceilometer.central import plugin
from ceilometer import neutron_client
from ceilometer import plugin as base_plugin
+cfg.CONF.import_group('service_types', 'ceilometer.neutron_client')
+
+
class _BaseServicesDiscovery(base_plugin.DiscoveryBase):
def __init__(self):
@@ -28,7 +33,7 @@ class _BaseServicesDiscovery(base_plugin.DiscoveryBase):
class LBPoolsDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network')
+ @plugin.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@@ -38,7 +43,7 @@ class LBPoolsDiscovery(_BaseServicesDiscovery):
class LBVipsDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network')
+ @plugin.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@@ -48,7 +53,7 @@ class LBVipsDiscovery(_BaseServicesDiscovery):
class LBMembersDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network')
+ @plugin.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@@ -58,7 +63,7 @@ class LBMembersDiscovery(_BaseServicesDiscovery):
class LBHealthMonitorsDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network')
+ @plugin.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@@ -67,7 +72,7 @@ class LBHealthMonitorsDiscovery(_BaseServicesDiscovery):
class VPNServicesDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network')
+ @plugin.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@@ -77,7 +82,7 @@ class VPNServicesDiscovery(_BaseServicesDiscovery):
class IPSecConnectionsDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network')
+ @plugin.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@@ -86,7 +91,7 @@ class IPSecConnectionsDiscovery(_BaseServicesDiscovery):
class FirewallDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network')
+ @plugin.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
@@ -96,7 +101,7 @@ class FirewallDiscovery(_BaseServicesDiscovery):
class FirewallPolicyDiscovery(_BaseServicesDiscovery):
- @plugin.check_keystone('network')
+ @plugin.check_keystone(cfg.CONF.service_types.neutron)
def discover(self, manager, param=None):
"""Discover resources to monitor."""
diff --git a/ceilometer/neutron_client.py b/ceilometer/neutron_client.py
index 4c73b0e4..930d7eab 100644
--- a/ceilometer/neutron_client.py
+++ b/ceilometer/neutron_client.py
@@ -21,6 +21,14 @@ from oslo.config import cfg
from ceilometer.openstack.common import log
+
+service_types_opts = [
+ cfg.StrOpt('neutron',
+ default='network',
+ help='Neutron service type.'),
+]
+
+cfg.CONF.register_opts(service_types_opts, group='service_types')
cfg.CONF.import_group('service_credentials', 'ceilometer.service')
LOG = log.getLogger(__name__)
@@ -51,7 +59,8 @@ class Client(object):
'password': conf.os_password,
'auth_url': conf.os_auth_url,
'region_name': conf.os_region_name,
- 'endpoint_type': conf.os_endpoint_type
+ 'endpoint_type': conf.os_endpoint_type,
+ 'service_type': cfg.CONF.service_types.neutron
}
if conf.os_tenant_id:
diff --git a/ceilometer/nova_client.py b/ceilometer/nova_client.py
index e6a3c845..41d37beb 100644
--- a/ceilometer/nova_client.py
+++ b/ceilometer/nova_client.py
@@ -21,12 +21,22 @@ from oslo.config import cfg
from ceilometer.openstack.common import log
+
nova_opts = [
cfg.BoolOpt('nova_http_log_debug',
default=False,
help='Allow novaclient\'s debug log output.'),
]
+
+service_types_opts = [
+ cfg.StrOpt('nova',
+ default='compute',
+ help='Nova service type.'),
+]
+
cfg.CONF.register_opts(nova_opts)
+cfg.CONF.register_opts(service_types_opts, group='service_types')
+
cfg.CONF.import_group('service_credentials', 'ceilometer.service')
LOG = log.getLogger(__name__)
@@ -60,6 +70,7 @@ class Client(object):
auth_token=auth_token,
region_name=conf.os_region_name,
endpoint_type=conf.os_endpoint_type,
+ service_type=cfg.CONF.service_types.nova,
bypass_url=bypass_url,
cacert=conf.os_cacert,
insecure=conf.insecure,
diff --git a/ceilometer/objectstore/swift.py b/ceilometer/objectstore/swift.py
index d87f9954..2708fd92 100644
--- a/ceilometer/objectstore/swift.py
+++ b/ceilometer/objectstore/swift.py
@@ -40,7 +40,14 @@ OPTS = [
"reseller_prefix in proxy-server.conf."),
]
+service_types_opts = [
+ cfg.StrOpt('swift',
+ default='object-store',
+ help='Swift service type.'),
+]
+
cfg.CONF.register_opts(OPTS)
+cfg.CONF.register_opts(service_types_opts, group='service_types')
class _Base(plugin.CentralPollster):
@@ -62,11 +69,10 @@ class _Base(plugin.CentralPollster):
# only ever called once
if _Base._ENDPOINT is None:
try:
- endpoint_type = cfg.CONF.service_credentials.os_endpoint_type
- endpoint = ksclient.service_catalog.url_for(
- service_type='object-store',
- endpoint_type=endpoint_type)
- _Base._ENDPOINT = endpoint
+ conf = cfg.CONF.service_credentials
+ _Base._ENDPOINT = ksclient.service_catalog.url_for(
+ service_type=cfg.CONF.service_types.swift,
+ endpoint_type=conf.os_endpoint_type)
except exceptions.EndpointNotFound:
LOG.debug(_("Swift endpoint not found"))
return _Base._ENDPOINT
diff --git a/ceilometer/tests/energy/test_kwapi.py b/ceilometer/tests/energy/test_kwapi.py
index f659e30d..4e5dd470 100644
--- a/ceilometer/tests/energy/test_kwapi.py
+++ b/ceilometer/tests/energy/test_kwapi.py
@@ -98,6 +98,10 @@ class TestEnergyPollster(base.BaseTestCase):
probe_dict['id'] = key
yield probe_dict
+ def test_default_discovery(self):
+ pollster = kwapi.EnergyPollster()
+ self.assertEqual('endpoint:energy', pollster.default_discovery)
+
def test_sample(self):
cache = {}
samples = list(kwapi.EnergyPollster().get_samples(
@@ -161,6 +165,10 @@ class TestPowerPollster(base.BaseTestCase):
probe_dict['id'] = key
yield probe_dict
+ def test_default_discovery(self):
+ pollster = kwapi.PowerPollster()
+ self.assertEqual('endpoint:energy', pollster.default_discovery)
+
def test_sample(self):
cache = {}
samples = list(kwapi.PowerPollster().get_samples(
diff --git a/ceilometer/tests/image/test_glance.py b/ceilometer/tests/image/test_glance.py
index 6f60311b..f5bd398f 100644
--- a/ceilometer/tests/image/test_glance.py
+++ b/ceilometer/tests/image/test_glance.py
@@ -181,6 +181,10 @@ class TestImagePollster(base.BaseTestCase):
glance._Base, 'get_glance_client',
side_effect=self.fake_get_glance_client))
+ def test_default_discovery(self):
+ pollster = glance.ImagePollster()
+ self.assertEqual('endpoint:image', pollster.default_discovery)
+
def test_iter_images(self):
# Tests whether the iter_images method returns a unique image
# list when there is nothing in the cache
diff --git a/ceilometer/tests/network/test_floatingip.py b/ceilometer/tests/network/test_floatingip.py
index 29fbfb5a..3248b164 100644
--- a/ceilometer/tests/network/test_floatingip.py
+++ b/ceilometer/tests/network/test_floatingip.py
@@ -56,6 +56,9 @@ class TestFloatingIPPollster(base.BaseTestCase):
ips.append(ip)
return ips
+ def test_default_discovery(self):
+ self.assertEqual('endpoint:compute', self.pollster.default_discovery)
+
# FIXME(dhellmann): Is there a useful way to define this
# test without a database?
#
diff --git a/doc/source/configuration.rst b/doc/source/configuration.rst
index bdcef7b9..972ac1da 100644
--- a/doc/source/configuration.rst
+++ b/doc/source/configuration.rst
@@ -67,6 +67,23 @@ pecan_debug The value of DEFAULT.debug Toggle Pe
processes with mod_wsgi.
=============================== ==================================== ===============================================================
+Service polling configuration
+==============================
+
+The following options must be placed under a [service_types] section
+and will be used by Ceilometer to retrieve information from OpenStack
+components.
+
+=============================== ==================================== ==============================================================
+Parameter Default Note
+=============================== ==================================== ==============================================================
+nova compute The service type for nova
+neutron network The service type for neutron
+glance image The service type for glance
+swift object-store The service type for swift
+kwapi energy The service type for kwapi
+=============================== ==================================== ==============================================================
+
Service polling authentication
==============================