Files
python-observabilityclient/observabilityclient/v1/client.py
Jaromir Wysoglad e81c54e497 Retrieve prometheus information from keystone
This adds the possibility to retrieve prometheus or aetos endpoint
information from keystone. Aetos is expected to have the endpoint
registered (Aetos's devstack plugin already does this) and admins
can register plain prometheus in Keystone with a simple command.

Previous functionality with using /etc/openstack/prometheus.yaml or
env variables is kept unchanged.

Change-Id: I20eb5858244f1202ab8bc1fa26bb46b41d927ac0
2025-05-30 06:54:50 -04:00

49 lines
1.7 KiB
Python

# Copyright 2023 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import keystoneauth1.session
from observabilityclient import rbac
from observabilityclient.utils.metric_utils import get_prometheus_client
from observabilityclient.v1 import python_api
class Client(object):
"""Client for the observabilityclient api."""
def __init__(self, session=None, adapter_options=None,
session_options=None, disable_rbac=False):
"""Initialize a new client for the Observabilityclient v1 API."""
session_options = session_options or {}
adapter_options = adapter_options or {}
adapter_options.setdefault('service_type', "prometheus")
if session is None:
session = keystoneauth1.session.Session(**session_options)
else:
if session_options:
raise ValueError("session and session_options are exclusive")
self.session = session
self.prometheus_client = get_prometheus_client(
session, adapter_options
)
self.query = python_api.QueryManager(self)
self.rbac = rbac.PromQLRbac(
self.prometheus_client,
self.session.get_project_id()
)