diff --git a/ceilometer/agent/discovery/tenant.py b/ceilometer/agent/discovery/tenant.py index 6754b85726..c7615f64d5 100644 --- a/ceilometer/agent/discovery/tenant.py +++ b/ceilometer/agent/discovery/tenant.py @@ -12,8 +12,12 @@ # License for the specific language governing permissions and limitations # under the License. +from oslo_log import log + from ceilometer.agent import plugin_base as plugin +LOG = log.getLogger(__name__) + class TenantDiscovery(plugin.DiscoveryBase): """Discovery that supplies keystone tenants. @@ -24,5 +28,17 @@ class TenantDiscovery(plugin.DiscoveryBase): """ def discover(self, manager, param=None): - tenants = manager.keystone.projects.list() + domains = manager.keystone.domains.list() + LOG.debug('Found %s keystone domains', len(domains)) + if domains: + tenants = [] + for domain in domains: + domain_tenants = manager.keystone.projects.list(domain) + LOG.debug("Found %s tenants in domain %s", len(domain_tenants), + domain.name) + tenants = tenants + domain_tenants + else: + tenants = manager.keystone.projects.list() + LOG.debug("No domains - found %s tenants in default domain", + len(tenants)) return tenants or [] diff --git a/releasenotes/notes/scan-domains-for-tenants-8f8c9edcb74cc173.yaml b/releasenotes/notes/scan-domains-for-tenants-8f8c9edcb74cc173.yaml new file mode 100644 index 0000000000..8da87a3a52 --- /dev/null +++ b/releasenotes/notes/scan-domains-for-tenants-8f8c9edcb74cc173.yaml @@ -0,0 +1,4 @@ +--- +features: + - The tenant (project) discovery code in the polling agent now scans for + tenants in all available domains.