"disk_read_bytes": "disk.device.read.bytes",
"disk_write_bytes": "disk.device.write.bytes",
"packets_received": "network.incoming.packets",
- "packets_sent": "network.outgoing.packets"
+ "packets_sent": "network.outgoing.packets",
}
METRIC_MULTIPLIERS = {"cpu": 0.0000001}
INSTANCE = "instance"
INTERFACE_ALL = "interface_all"
INTERFACE_ONE = "interface_one"
- INSTANCEDISK = 'instancedisk'
+ INSTANCEDISK = "instancedisk"
class OpenstackCollector(BaseVimCollector):
metric_type, openstack_metric_name, resource_id
)
- if value is None and metric_name in METRIC_MAPPINGS_FOR_ROCKY_AND_NEWER_RELEASES and type(self.backend) is not PrometheusTSBDBackend:
+ if (
+ value is None
+ and metric_name
+ in METRIC_MAPPINGS_FOR_ROCKY_AND_NEWER_RELEASES
+ and type(self.backend) is not PrometheusTSBDBackend
+ ):
# Reattempting metric collection with new metric names.
# Some metric names have changed in newer Openstack releases
log.info(
"Reattempting metric collection for type: %s and name: %s and resource_id %s",
metric_type,
metric_name,
- resource_id
+ resource_id,
+ )
+ openstack_metric_name = (
+ METRIC_MAPPINGS_FOR_ROCKY_AND_NEWER_RELEASES[
+ metric_name
+ ]
)
- openstack_metric_name = METRIC_MAPPINGS_FOR_ROCKY_AND_NEWER_RELEASES[metric_name]
value = self.backend.collect_metric(
metric_type, openstack_metric_name, resource_id
)
def _build_prometheus_client(self, vim_account: dict) -> prometheus_client:
url = vim_account["prometheus-config"]["prometheus_url"]
- return prometheus_client(url, disable_ssl = True)
+ return prometheus_client(url, disable_ssl=True)
def collect_metric(
self, metric_type: MetricType, metric_name: str, resource_id: str
- ):
+ ):
metric = self.query_metric(metric_name, resource_id)
return metric["value"][1] if metric else None
def map_metric(self, metric_name: str):
return self.map[metric_name]
- def query_metric(self, metric_name, resource_id = None):
- metrics = self.client.get_current_metric_value(metric_name = metric_name)
+ def query_metric(self, metric_name, resource_id=None):
+ metrics = self.client.get_current_metric_value(metric_name=metric_name)
if resource_id:
- metric = next(filter(lambda x: resource_id in x["metric"]["resource_id"], metrics))
+ metric = next(
+ filter(lambda x: resource_id in x["metric"]["resource_id"], metrics)
+ )
return metric
return metrics
self.client = self._build_gnocchi_client(vim_account, vim_session)
self.neutron = self._build_neutron_client(vim_account, vim_session)
- def _build_gnocchi_client(self, vim_account: dict, vim_session: object) -> gnocchi_client.Client:
+ def _build_gnocchi_client(
+ self, vim_account: dict, vim_session: object
+ ) -> gnocchi_client.Client:
return gnocchi_client.Client(session=vim_session)
- def _build_neutron_client(self, vim_account: dict, vim_session: object) -> neutron_client.Client:
+ def _build_neutron_client(
+ self, vim_account: dict, vim_session: object
+ ) -> neutron_client.Client:
return neutron_client.Client(session=vim_session)
def collect_metric(
def _collect_instance_disk_metric(self, openstack_metric_name, resource_id):
value = None
instances = self.client.resource.search(
- resource_type='instance_disk',
- query={'=': {'instance_id': resource_id}},
+ resource_type="instance_disk",
+ query={"=": {"instance_id": resource_id}},
)
for instance in instances:
try:
measures = self.client.metric.get_measures(
- openstack_metric_name, resource_id=instance['id'], limit=1
+ openstack_metric_name, resource_id=instance["id"], limit=1
)
if measures:
value = measures[-1][2]
except gnocchiclient.exceptions.NotFound as e:
- log.debug("No metric %s found for instance disk %s: %s", openstack_metric_name,
- instance['id'], e)
+ log.debug(
+ "No metric %s found for instance disk %s: %s",
+ openstack_metric_name,
+ instance["id"],
+ e,
+ )
return value
def _collect_instance_metric(self, openstack_metric_name, resource_id):
def __init__(self, vim_account: dict, vim_session: object):
self.client = self._build_ceilometer_client(vim_account, vim_session)
- def _build_ceilometer_client(self, vim_account: dict, vim_session: object) -> ceilometer_client.Client:
+ def _build_ceilometer_client(
+ self, vim_account: dict, vim_session: object
+ ) -> ceilometer_client.Client:
return ceilometer_client.Client("2", session=vim_session)
def collect_metric(