)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"1870a4dcddfda7dd6385e65484f32996f09ccf1f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2a48eac8_53e5052b","updated":"2025-12-22 18:54:39.000000000","message":"Would you be able to add a `loadbalancer` resource type to Gnocchi, and update `gnocchi_resources.yml` such that new metrics are published to Gnocchi?\n\nI should also note that Octavia supports [event notifications](https://docs.openstack.org/octavia/latest/admin/event-notifications.html), so `meters.yaml` can have notification meters added that can be equivalent to the pollsters as well.","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"95e427b24e74136c99e50869f87f58cacaa83729","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b802458d_9354655e","in_reply_to":"2a48eac8_53e5052b","updated":"2025-12-23 12:04:14.000000000","message":"I have enabled the Gnocchi resource, which made absolute sense.\n\nThe notifications however, I am more in doubt. Are \"created, deleted, updated\" providing something over just what we are getting through polling? I don\u0027t think so.","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"b08ae7ed62ddbba4670930c38668a348897ea1dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a87a98c3_f920b086","in_reply_to":"2f384f29_58fc106e","updated":"2026-01-09 10:12:09.000000000","message":"Had a look at the possibility of making notification meters for the metrics in this changeset - unfortunately it looks like it is not possible, as the notification payloads for `create.end` and `update.end` notifications [do not contain the operating/provisioning status](https://paste.openstack.org/show/bVnZLRHOXZZupybVrpq6/).\n\n\nFor now at least, it\u0027s not possible to make notification meters unfortunately, so there will be no follow up changeset from me to add them.","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"75d870520b3ad72e5a034977bbe198db28264b98","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c09cdd4c_2e0a9e81","in_reply_to":"37a71ce7_5d562edf","updated":"2026-01-07 15:24:22.000000000","message":"Sorry for the delay, I was out for Christmas holidays. I don\u0027t oppose to the notification metrics, but I am inclined to think that would be better done in a subsequent patch. As described, this is introducing the \"metrics polling\", and it is big enough.","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"e266ff0bb0c098f54475b44a79a784d29507d104","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a97baf33_44224590","in_reply_to":"a87a98c3_f920b086","updated":"2026-01-09 10:14:10.000000000","message":"Then, the latest change that adds content to the event_definitions.yaml is not needed anymore?","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"8464ec2c174a5a0c0e7352372067ef8b0282d28d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b64baf4b_9cedd459","in_reply_to":"a97baf33_44224590","updated":"2026-01-09 10:20:53.000000000","message":"The `event_definitions.yaml` changes are still needed, since that\u0027s required for Ceilometer to auto-end `loadbalancer` resources in Gnocchi when they are deleted in Octavia.","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"642ee29137b332b8dd8d1aba2f9ef5f98b06ba6c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"37a71ce7_5d562edf","in_reply_to":"b802458d_9354655e","updated":"2025-12-23 18:49:27.000000000","message":"Thanks for adding the resource type in Gnocchi.\n\nThere are two main advantages we\u0027ve found by providing notification meters in addition to the pollsters:\n\n* Handling create notifications allows the `loadbalancer` resource and the associated metrics to be created almost immediately after a load balancer is created, essentially eliminating the time lag between resource creation and the resource/metrics appearing in Gnocchi.\n* Similar, handling instance update notifications allow the metadata for a resource to be updated in Gnocchi much earlier than it otherwise would be with polling, making the Gnocchi metadata revisions a more accurate representation of when the metadata was actually changed (useful for billing).\n\nI\u0027d be happy to work on a follow-up change to implement this if you think it\u0027s better handled as a separate commit.","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2f384f29_58fc106e","in_reply_to":"c09cdd4c_2e0a9e81","updated":"2026-01-07 17:10:45.000000000","message":"No worries. I\u0027ll start working on a follow up change for the notification meter.","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"ac3149e6f62a65fa895e6b2bd3a50592a1d48b10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d9ee2703_33105a68","updated":"2026-01-08 10:15:38.000000000","message":"Looks good to me. Thanks for addressing my reviews!","commit_id":"614b13e0221042c6fb82b261a5eb4b04375042ee"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"d202177184b447366ab493d88c11bd97b28d2533","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"74eb1c68_64d8b9ed","updated":"2026-01-09 03:16:22.000000000","message":"Sorry Juan, I was doing some testing of this patch and my upcoming one for notifications in DevStack and I found there is one more thing that needs to be done before everything works.\n\nIn `ceilometer/pipeline/data/event_definitions.yaml`, the following definition needs to be added:\n\n```yaml\n- event_type: \u0027octavia.loadbalancer.*\u0027\n  traits:\n    resource_id:\n      fields: payload.loadbalancer_id\n    project_id:\n      fields: payload.project_id\n    name:\n      fields: payload.name\n    description:\n      fields: payload.description\n    admin_state_up:\n      fields: payload.admin_state_up\n    availability_zone:\n      fields: payload.availability_zone\n    vip_address:\n      fields: payload.vip_address\n    vip_network_id:\n      fields: payload.vip_network_id\n    vip_port_id:\n      fields: payload.vip_port_id\n    vip_qos_policy_id:\n      fields: payload.vip_qos_policy_id\n    vip_subnet_id:\n      fields: payload.vip_subnet_id\n```\n\nWithout this, setting `ended_at` on load balancer resources in Gnocchi will fail with [this error](https://paste.openstack.org/show/830076/).","commit_id":"614b13e0221042c6fb82b261a5eb4b04375042ee"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"9446d77c1e31c65e60ac480a5b07405522cd772c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4c314ccf_7994213a","in_reply_to":"74eb1c68_64d8b9ed","updated":"2026-01-09 08:39:39.000000000","message":"Resolved","commit_id":"614b13e0221042c6fb82b261a5eb4b04375042ee"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"6736056f6492a455ec4fa588917e9237ccb14536","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"25be2b9f_acdfb700","in_reply_to":"d9ee2703_33105a68","updated":"2026-01-08 10:24:10.000000000","message":"Thanks to you for your thorough review. We dont use Gnocchi anymore, so it is always very useful to have directions on that regard.","commit_id":"614b13e0221042c6fb82b261a5eb4b04375042ee"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"be45245ac0fbc8621b9a0f8089cc9e06079d1230","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"27519a07_43467de9","updated":"2026-01-09 10:02:18.000000000","message":"recheck","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"b18d6c6857cd15b2f2a145cf19613f4cf564bbf2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"02df57f3_0be397b1","updated":"2026-01-12 18:32:53.000000000","message":"Small thing. Otherwise it lgtm. Thank you Takashi and Callum for the detailed reviews!","commit_id":"110f79c5fe4b04bb53f8f7096e8745501603f2ff"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"84d2186c3207725c5e915ffcdeacc2ff3aa6883a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"1d0a41ec_da6994f5","updated":"2026-01-14 08:39:28.000000000","message":"Thank you, looks good to me.","commit_id":"e0ffa8c839cb38319a6a3ad90a0a27565ac40840"}],"ceilometer/gnocchi_client.py":[{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":false,"context_lines":[{"line_number":251,"context_line":"     \"data\": [{"},{"line_number":252,"context_line":"         \"attributes\": {"},{"line_number":253,"context_line":"             \"name\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":254,"context_line":"                      \"max_length\": 255, \"required\": False},"},{"line_number":255,"context_line":"             \"vip_address\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":256,"context_line":"                             \"max_length\": 255, \"required\": False},"},{"line_number":257,"context_line":"             \"operating_status\": {\"type\": \"string\", \"min_length\": 0,"}],"source_content_type":"text/x-python","patch_set":8,"id":"a83c1a55_31f0ad78","line":254,"updated":"2026-01-07 17:10:45.000000000","message":"I should note here, according to the [API documentation](https://docs.openstack.org/api-ref/load-balancer/v2/#create-a-load-balancer) names on load balancers are actually optional (questionable design decision IMO, but that is how it is). So the corresponding attribute in Gnocchi having `required\u003dFalse` is correct.","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":true,"context_lines":[{"line_number":254,"context_line":"                      \"max_length\": 255, \"required\": False},"},{"line_number":255,"context_line":"             \"vip_address\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":256,"context_line":"                             \"max_length\": 255, \"required\": False},"},{"line_number":257,"context_line":"             \"operating_status\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":258,"context_line":"                                  \"max_length\": 255, \"required\": False},"},{"line_number":259,"context_line":"             \"provisioning_status\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":260,"context_line":"                                     \"max_length\": 255, \"required\": False},"}],"source_content_type":"text/x-python","patch_set":8,"id":"ead6515a_c8cc2375","line":257,"updated":"2026-01-07 17:10:45.000000000","message":"`operating_status` shouldn\u0027t be a resource metadata field because:\n\n* It\u0027s already being exposed as a metric (which is intended to be used for constantly changing values such as this)\n* This is stored in the indexer instead of the metric storage, and metadata history doesn\u0027t get expired in Gnocchi at the moment so this could lead to ballooning disk usage for the indexer\n\nSince we have a metric for this attribute already, just remove it.","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a4f46058e9b1b37266564e9cd77e97a14ba9c892","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                      \"max_length\": 255, \"required\": False},"},{"line_number":255,"context_line":"             \"vip_address\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":256,"context_line":"                             \"max_length\": 255, \"required\": False},"},{"line_number":257,"context_line":"             \"operating_status\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":258,"context_line":"                                  \"max_length\": 255, \"required\": False},"},{"line_number":259,"context_line":"             \"provisioning_status\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":260,"context_line":"                                     \"max_length\": 255, \"required\": False},"}],"source_content_type":"text/x-python","patch_set":8,"id":"93ef4022_dbebb40b","line":257,"in_reply_to":"ead6515a_c8cc2375","updated":"2026-01-08 09:43:32.000000000","message":"Acknowledged","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":true,"context_lines":[{"line_number":256,"context_line":"                             \"max_length\": 255, \"required\": False},"},{"line_number":257,"context_line":"             \"operating_status\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":258,"context_line":"                                  \"max_length\": 255, \"required\": False},"},{"line_number":259,"context_line":"             \"provisioning_status\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":260,"context_line":"                                     \"max_length\": 255, \"required\": False},"},{"line_number":261,"context_line":"             \"provider\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":262,"context_line":"                          \"max_length\": 255, \"required\": False}"}],"source_content_type":"text/x-python","patch_set":8,"id":"c4a0996b_c197e025","line":259,"updated":"2026-01-07 17:10:45.000000000","message":"`provisioning_status` shouldn\u0027t be a resource metadata field because:\n\n* It\u0027s already being exposed as a metric (which is intended to be used for constantly changing values such as this)\n* This is stored in the indexer instead of the metric storage, and metadata history doesn\u0027t get expired in Gnocchi at the moment so this could lead to ballooning disk usage for the indexer\n\nSince we have a metric for this attribute already, just remove it.","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a4f46058e9b1b37266564e9cd77e97a14ba9c892","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                             \"max_length\": 255, \"required\": False},"},{"line_number":257,"context_line":"             \"operating_status\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":258,"context_line":"                                  \"max_length\": 255, \"required\": False},"},{"line_number":259,"context_line":"             \"provisioning_status\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":260,"context_line":"                                     \"max_length\": 255, \"required\": False},"},{"line_number":261,"context_line":"             \"provider\": {\"type\": \"string\", \"min_length\": 0,"},{"line_number":262,"context_line":"                          \"max_length\": 255, \"required\": False}"}],"source_content_type":"text/x-python","patch_set":8,"id":"82a3d48a_e1169da5","line":259,"in_reply_to":"c4a0996b_c197e025","updated":"2026-01-08 09:43:32.000000000","message":"Acknowledged","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"}],"ceilometer/load_balancer/lbaas.py":[{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"1870a4dcddfda7dd6385e65484f32996f09ccf1f","unresolved":true,"context_lines":[{"line_number":59,"context_line":"    def get_samples(self, manager, cache, resources):"},{"line_number":60,"context_line":"        for lb in resources or []:"},{"line_number":61,"context_line":"            LOG.debug(\"LOAD BALANCER: %s\", lb)"},{"line_number":62,"context_line":"            status \u003d self.get_status_id(lb.operating_status)"},{"line_number":63,"context_line":"            if status \u003d\u003d -1:"},{"line_number":64,"context_line":"                LOG.warning("},{"line_number":65,"context_line":"                    \"Unknown status %(status)s for load balancer \""}],"source_content_type":"text/x-python","patch_set":6,"id":"82b5f13b_4f6f942a","line":62,"updated":"2025-12-22 18:54:39.000000000","message":"It would be useful to have another pollster for provisioning status as well.\n\nWe have internally developed pollsters for Octavia load balancers, and we\u0027re primarily interested in provisioning status as that\u0027s the part we need to monitor for our customers (operating status is primarily up to how the customer configures the LB itself).","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"2f928efc0a5e9d4686fc8815326fec9e1c369add","unresolved":true,"context_lines":[{"line_number":59,"context_line":"    def get_samples(self, manager, cache, resources):"},{"line_number":60,"context_line":"        for lb in resources or []:"},{"line_number":61,"context_line":"            LOG.debug(\"LOAD BALANCER: %s\", lb)"},{"line_number":62,"context_line":"            status \u003d self.get_status_id(lb.operating_status)"},{"line_number":63,"context_line":"            if status \u003d\u003d -1:"},{"line_number":64,"context_line":"                LOG.warning("},{"line_number":65,"context_line":"                    \"Unknown status %(status)s for load balancer \""}],"source_content_type":"text/x-python","patch_set":6,"id":"d16f76a0_2e1c4023","line":62,"in_reply_to":"82b5f13b_4f6f942a","updated":"2025-12-23 09:56:14.000000000","message":"Yeah, that is a good idea, ill work on it.","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"642ee29137b332b8dd8d1aba2f9ef5f98b06ba6c","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def get_samples(self, manager, cache, resources):"},{"line_number":60,"context_line":"        for lb in resources or []:"},{"line_number":61,"context_line":"            LOG.debug(\"LOAD BALANCER: %s\", lb)"},{"line_number":62,"context_line":"            status \u003d self.get_status_id(lb.operating_status)"},{"line_number":63,"context_line":"            if status \u003d\u003d -1:"},{"line_number":64,"context_line":"                LOG.warning("},{"line_number":65,"context_line":"                    \"Unknown status %(status)s for load balancer \""}],"source_content_type":"text/x-python","patch_set":6,"id":"8cb3a5ed_1c28a84a","line":62,"in_reply_to":"d16f76a0_2e1c4023","updated":"2025-12-23 18:49:27.000000000","message":"Looks good, thanks!","commit_id":"76924712f02d8845216f137d281ecee99e19673c"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b3a14714581f979810b3b402e7858aa0d4d0d5f9","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":10,"id":"a1395c0c_7e7996a5","line":1,"updated":"2026-01-09 10:56:12.000000000","message":"Because we moved this out fron neutron, I think we should use the resource name rather than the service name. Can we rename this file to load_balancer.py ?","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"2dd60b0c49275e55bd655a25230acd4bb13ab3f7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":10,"id":"47e977a0_cd4109f5","line":1,"in_reply_to":"1c61cffe_89dacb2e","updated":"2026-01-09 13:52:12.000000000","message":"Done","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"3dbcb0e2e44b0cc0f229d36718396c1f6368e32f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":10,"id":"1c61cffe_89dacb2e","line":1,"in_reply_to":"21ae4b20_38501d7c","updated":"2026-01-09 13:00:53.000000000","message":"Ah, yes. \"octavia\" is better.","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"6e746f4e185a33df38f7ca3a30a8058abde66aab","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":10,"id":"21ae4b20_38501d7c","line":1,"in_reply_to":"a1395c0c_7e7996a5","updated":"2026-01-09 12:37:53.000000000","message":"If we want to follow the same pattern as the rest of the services (outside of networking), I believe this should be called octavia.py. What do you think?","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b3a14714581f979810b3b402e7858aa0d4d0d5f9","unresolved":true,"context_lines":[{"line_number":42,"context_line":"class _BaseLoadBalancerPollster(plugin_base.PollsterBase):"},{"line_number":43,"context_line":"    \"\"\"Base pollster for Octavia load balancer metrics.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    FIELDS \u003d [\u0027name\u0027,"},{"line_number":46,"context_line":"              \u0027vip_address\u0027,"},{"line_number":47,"context_line":"              \u0027vip_port_id\u0027,"},{"line_number":48,"context_line":"              \u0027provisioning_status\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"95894a99_7560cfd8","line":45,"range":{"start_line":45,"start_character":4,"end_line":45,"end_character":10},"updated":"2026-01-09 10:56:12.000000000","message":"I wonder if we want to add availability_zone so that it appears in metadata ?","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"6e746f4e185a33df38f7ca3a30a8058abde66aab","unresolved":true,"context_lines":[{"line_number":42,"context_line":"class _BaseLoadBalancerPollster(plugin_base.PollsterBase):"},{"line_number":43,"context_line":"    \"\"\"Base pollster for Octavia load balancer metrics.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    FIELDS \u003d [\u0027name\u0027,"},{"line_number":46,"context_line":"              \u0027vip_address\u0027,"},{"line_number":47,"context_line":"              \u0027vip_port_id\u0027,"},{"line_number":48,"context_line":"              \u0027provisioning_status\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"b9b3591c_a5706f53","line":45,"range":{"start_line":45,"start_character":4,"end_line":45,"end_character":10},"in_reply_to":"95894a99_7560cfd8","updated":"2026-01-09 12:37:53.000000000","message":"Yeah, AZ seems to be an important field for loadbalancers","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"2dd60b0c49275e55bd655a25230acd4bb13ab3f7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"class _BaseLoadBalancerPollster(plugin_base.PollsterBase):"},{"line_number":43,"context_line":"    \"\"\"Base pollster for Octavia load balancer metrics.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    FIELDS \u003d [\u0027name\u0027,"},{"line_number":46,"context_line":"              \u0027vip_address\u0027,"},{"line_number":47,"context_line":"              \u0027vip_port_id\u0027,"},{"line_number":48,"context_line":"              \u0027provisioning_status\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ac84fd19_d5c147c7","line":45,"range":{"start_line":45,"start_character":4,"end_line":45,"end_character":10},"in_reply_to":"b9b3591c_a5706f53","updated":"2026-01-09 13:52:12.000000000","message":"Done","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"}],"ceilometer/network/services/lbaas.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"20235f9e0c972a5d2d320bfbc0e4bd268aaa8935","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":1,"id":"ac613032_7e4924e6","line":1,"updated":"2025-12-22 09:27:46.000000000","message":"Because octavia is \"independent\" from neutron, I prefer placing this file in ceilometer/load_balancer instead.","commit_id":"d46c30ccb7f80eb0fa965b304edb6a82447b576f"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"0ddc66b9f3609abd39efb8955dd6ebf3f2ba589c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":1,"id":"db3d9005_bbdf3dd4","line":1,"in_reply_to":"ac613032_7e4924e6","updated":"2025-12-22 09:49:09.000000000","message":"Yeah, that is true. I always doubt how much intertwined with networking component is, but I agree that it would be much better to give it its own entity.","commit_id":"d46c30ccb7f80eb0fa965b304edb6a82447b576f"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"db4e4593704dfd871555e6b14ace03154f0c2628","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"# a copy of the License at"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ff8e5a5_f6c74074","line":1,"in_reply_to":"db3d9005_bbdf3dd4","updated":"2025-12-22 10:18:34.000000000","message":"I have also decided to move the name of metric from network.services.lb to loadbalancer.lb, to further separate it from Neutron, and added it to the documentation.","commit_id":"d46c30ccb7f80eb0fa965b304edb6a82447b576f"}],"ceilometer/octavia_client.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"08f1fc08b9b708ebb5b55c055f0375e6a00dbf62","unresolved":true,"context_lines":[{"line_number":17,"context_line":"from ceilometer import keystone_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"SERVICE_OPTS \u003d ["},{"line_number":20,"context_line":"    cfg.StrOpt(\u0027octavia\u0027,"},{"line_number":21,"context_line":"               default\u003d\u0027load-balancer\u0027,"},{"line_number":22,"context_line":"               help\u003d\u0027Octavia service type.\u0027),"},{"line_number":23,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"4643bafb_eb3eafdd","line":20,"range":{"start_line":20,"start_character":16,"end_line":20,"end_character":23},"updated":"2025-12-22 09:31:38.000000000","message":"It seems this is unused ? I guess adding load_balancer_service_type to Connection class should do the trick.","commit_id":"d46c30ccb7f80eb0fa965b304edb6a82447b576f"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"873d2f337f32861642735df0602ea2281daec87e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from ceilometer import keystone_client"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"SERVICE_OPTS \u003d ["},{"line_number":20,"context_line":"    cfg.StrOpt(\u0027octavia\u0027,"},{"line_number":21,"context_line":"               default\u003d\u0027load-balancer\u0027,"},{"line_number":22,"context_line":"               help\u003d\u0027Octavia service type.\u0027),"},{"line_number":23,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":1,"id":"52be500d_cac44882","line":20,"range":{"start_line":20,"start_character":16,"end_line":20,"end_character":23},"in_reply_to":"4643bafb_eb3eafdd","updated":"2025-12-22 09:42:19.000000000","message":"Missed that, fixed.","commit_id":"d46c30ccb7f80eb0fa965b304edb6a82447b576f"}],"ceilometer/polling/prom_exporter.py":[{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"a37694af3ab6aac7e51b892dd002979d91a2c10e","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            labels[\u0027values\u0027].append(resource_metadata[\u0027alarm_state\u0027])"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        # Add availability_zone for loadbalancer metrics"},{"line_number":146,"context_line":"        if sample.get(\u0027counter_name\u0027, \u0027\u0027).startswith(\u0027loadbalancer\u0027):"},{"line_number":147,"context_line":"            labels[\u0027keys\u0027].append(\u0027availability_zone\u0027)"},{"line_number":148,"context_line":"            az \u003d resource_metadata.get(\u0027availability_zone\u0027)"},{"line_number":149,"context_line":"            labels[\u0027values\u0027].append(az if az else \u0027none\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9e1f97cb_2ceadce9","line":146,"updated":"2026-01-09 19:05:24.000000000","message":"Other resource types such as servers can also have an ava8lability zone, but for that case specifically getting the value in polling is not easy because it\u0027s not available in libvirt metadata.\n\nMaybe it\u0027s worth going through all collected metrics and checking whether or not we can enable availability_zone for others. In another changeset, of course.","commit_id":"f244571d0bb0ea803b4fb4c805fed9978f8eeed0"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"bfdf66c126bbe7d96a8ac9a335e58bb4a59dbc14","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        if sample.get(\u0027counter_name\u0027, \u0027\u0027).startswith(\u0027loadbalancer\u0027):"},{"line_number":147,"context_line":"            labels[\u0027keys\u0027].append(\u0027availability_zone\u0027)"},{"line_number":148,"context_line":"            az \u003d resource_metadata.get(\u0027availability_zone\u0027)"},{"line_number":149,"context_line":"            labels[\u0027values\u0027].append(az if az else \u0027none\u0027)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if resource_metadata.get(\u0027flavor\u0027):"},{"line_number":152,"context_line":"            flavor \u003d resource_metadata.get(\u0027flavor\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"c9f2195a_260cb9fd","line":149,"updated":"2026-01-09 21:16:09.000000000","message":"Using `\u0027none\u0027` as the value for undefined AZ here means that availability zones actually named `none` (as unlikely as it is) cannot be distinguished from \"no availability zone\".\n\n[According to the OpenMetrics standard](https://github.com/prometheus/OpenMetrics/blob/main/specification/OpenMetrics.md), it seems like we want to either not add the label at all if there\u0027s no value, or if you want to be more explicit that the key exists but there\u0027s no value, you can set an empty string instead (which also get treated as if the label is not present).","commit_id":"f244571d0bb0ea803b4fb4c805fed9978f8eeed0"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"3f0c573a4ad5570d9291932313abbc4cb325291c","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        if sample.get(\u0027counter_name\u0027, \u0027\u0027).startswith(\u0027loadbalancer\u0027):"},{"line_number":147,"context_line":"            labels[\u0027keys\u0027].append(\u0027availability_zone\u0027)"},{"line_number":148,"context_line":"            az \u003d resource_metadata.get(\u0027availability_zone\u0027)"},{"line_number":149,"context_line":"            labels[\u0027values\u0027].append(az if az else \u0027none\u0027)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if resource_metadata.get(\u0027flavor\u0027):"},{"line_number":152,"context_line":"            flavor \u003d resource_metadata.get(\u0027flavor\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f7b65f1_f73aaa7a","line":149,"in_reply_to":"2a1b076b_388073fa","updated":"2026-01-12 08:56:55.000000000","message":"Looks good to me, thanks.","commit_id":"f244571d0bb0ea803b4fb4c805fed9978f8eeed0"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"c76aeb98c9161765d94e208d98f51409bd9279bf","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        if sample.get(\u0027counter_name\u0027, \u0027\u0027).startswith(\u0027loadbalancer\u0027):"},{"line_number":147,"context_line":"            labels[\u0027keys\u0027].append(\u0027availability_zone\u0027)"},{"line_number":148,"context_line":"            az \u003d resource_metadata.get(\u0027availability_zone\u0027)"},{"line_number":149,"context_line":"            labels[\u0027values\u0027].append(az if az else \u0027none\u0027)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        if resource_metadata.get(\u0027flavor\u0027):"},{"line_number":152,"context_line":"            flavor \u003d resource_metadata.get(\u0027flavor\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"2a1b076b_388073fa","line":149,"in_reply_to":"c9f2195a_260cb9fd","updated":"2026-01-12 08:35:44.000000000","message":"Well, that would be an unlikely use case, but I have to recognize it would be perfectly possible, so I have a new patchset incoming with an empty value.\n\nWhy an empty value and not just remove the label in case the LB does not have az? Because Prometheus does not support that. The prometheus_client library requires all samples of the same metric to have exactly the same labels, so removing it is not technically possible.","commit_id":"f244571d0bb0ea803b4fb4c805fed9978f8eeed0"}],"ceilometer/publisher/data/gnocchi_resources.yaml":[{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"642ee29137b332b8dd8d1aba2f9ef5f98b06ba6c","unresolved":true,"context_lines":[{"line_number":301,"context_line":"      availability_zone: resource_metadata.availability_zone"},{"line_number":302,"context_line":"      protocol: resource_metadata.protocol"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"  - resource_type: loadbalancer"},{"line_number":305,"context_line":"    metrics:"},{"line_number":306,"context_line":"      loadbalancer.operating:"},{"line_number":307,"context_line":"      loadbalancer.provisioning:"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5c1a9a0f_b9c473e5","line":304,"updated":"2025-12-23 18:49:27.000000000","message":"The resource type also needs to be added to [`resources_update_operations`](https://opendev.org/openstack/ceilometer/src/commit/0b3939b3b6d26aa2fd49d036ef6eb69cd26718f6/ceilometer/gnocchi_client.py#L110) in `ceilometer/gnocchi_client.py`.","commit_id":"8a7b9a0621023f8c4ae60e6d7a3b076d9a4b4c6f"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":false,"context_lines":[{"line_number":301,"context_line":"      availability_zone: resource_metadata.availability_zone"},{"line_number":302,"context_line":"      protocol: resource_metadata.protocol"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"  - resource_type: loadbalancer"},{"line_number":305,"context_line":"    metrics:"},{"line_number":306,"context_line":"      loadbalancer.operating:"},{"line_number":307,"context_line":"      loadbalancer.provisioning:"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"313207ca_d2d0a98a","line":304,"in_reply_to":"5c1a9a0f_b9c473e5","updated":"2026-01-07 17:10:45.000000000","message":"Done","commit_id":"8a7b9a0621023f8c4ae60e6d7a3b076d9a4b4c6f"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"642ee29137b332b8dd8d1aba2f9ef5f98b06ba6c","unresolved":true,"context_lines":[{"line_number":310,"context_line":"      vip_address: resource_metadata.vip_address"},{"line_number":311,"context_line":"      operating_status: resource_metadata.operating_status"},{"line_number":312,"context_line":"      provisioning_status: resource_metadata.provisioning_status"},{"line_number":313,"context_line":"      provider: resource_metadata.provider"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"94edf604_9c9b0c0d","line":313,"updated":"2025-12-23 18:49:27.000000000","message":"Add an `event_delete` definition using the `octavia.loadbalancer.delete.end` notification to set `ended_at` on `loadbalancer` resources when a load balancer is deleted in Gnocchi.","commit_id":"8a7b9a0621023f8c4ae60e6d7a3b076d9a4b4c6f"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":false,"context_lines":[{"line_number":310,"context_line":"      vip_address: resource_metadata.vip_address"},{"line_number":311,"context_line":"      operating_status: resource_metadata.operating_status"},{"line_number":312,"context_line":"      provisioning_status: resource_metadata.provisioning_status"},{"line_number":313,"context_line":"      provider: resource_metadata.provider"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"fd3e19ae_b864b621","line":313,"in_reply_to":"94edf604_9c9b0c0d","updated":"2026-01-07 17:10:45.000000000","message":"Done","commit_id":"8a7b9a0621023f8c4ae60e6d7a3b076d9a4b4c6f"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":true,"context_lines":[{"line_number":305,"context_line":"    metrics:"},{"line_number":306,"context_line":"      loadbalancer.operating:"},{"line_number":307,"context_line":"      loadbalancer.provisioning:"},{"line_number":308,"context_line":"      loadbalancer.create:"},{"line_number":309,"context_line":"      loadbalancer.update:"},{"line_number":310,"context_line":"      loadbalancer.delete:"},{"line_number":311,"context_line":"    attributes:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"91831a64_7597df51","line":308,"updated":"2026-01-07 17:10:45.000000000","message":"Remove, not used because there are no notification meters or pollsters that generate this.","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a4f46058e9b1b37266564e9cd77e97a14ba9c892","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    metrics:"},{"line_number":306,"context_line":"      loadbalancer.operating:"},{"line_number":307,"context_line":"      loadbalancer.provisioning:"},{"line_number":308,"context_line":"      loadbalancer.create:"},{"line_number":309,"context_line":"      loadbalancer.update:"},{"line_number":310,"context_line":"      loadbalancer.delete:"},{"line_number":311,"context_line":"    attributes:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9ccedd10_6313d0dc","line":308,"in_reply_to":"91831a64_7597df51","updated":"2026-01-08 09:43:32.000000000","message":"Acknowledged","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":true,"context_lines":[{"line_number":306,"context_line":"      loadbalancer.operating:"},{"line_number":307,"context_line":"      loadbalancer.provisioning:"},{"line_number":308,"context_line":"      loadbalancer.create:"},{"line_number":309,"context_line":"      loadbalancer.update:"},{"line_number":310,"context_line":"      loadbalancer.delete:"},{"line_number":311,"context_line":"    attributes:"},{"line_number":312,"context_line":"      name: resource_metadata.name"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"f410d0c3_9e77a786","line":309,"updated":"2026-01-07 17:10:45.000000000","message":"Remove, not used because there are no notification meters or pollsters that generate this.","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a4f46058e9b1b37266564e9cd77e97a14ba9c892","unresolved":false,"context_lines":[{"line_number":306,"context_line":"      loadbalancer.operating:"},{"line_number":307,"context_line":"      loadbalancer.provisioning:"},{"line_number":308,"context_line":"      loadbalancer.create:"},{"line_number":309,"context_line":"      loadbalancer.update:"},{"line_number":310,"context_line":"      loadbalancer.delete:"},{"line_number":311,"context_line":"    attributes:"},{"line_number":312,"context_line":"      name: resource_metadata.name"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"d67217ff_8cd5dc04","line":309,"in_reply_to":"f410d0c3_9e77a786","updated":"2026-01-08 09:43:32.000000000","message":"Acknowledged","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":true,"context_lines":[{"line_number":307,"context_line":"      loadbalancer.provisioning:"},{"line_number":308,"context_line":"      loadbalancer.create:"},{"line_number":309,"context_line":"      loadbalancer.update:"},{"line_number":310,"context_line":"      loadbalancer.delete:"},{"line_number":311,"context_line":"    attributes:"},{"line_number":312,"context_line":"      name: resource_metadata.name"},{"line_number":313,"context_line":"      vip_address: resource_metadata.vip_address"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"88bf62cd_ff091798","line":310,"updated":"2026-01-07 17:10:45.000000000","message":"Remove, not used because there are no notification meters or pollsters that generate this.","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a4f46058e9b1b37266564e9cd77e97a14ba9c892","unresolved":false,"context_lines":[{"line_number":307,"context_line":"      loadbalancer.provisioning:"},{"line_number":308,"context_line":"      loadbalancer.create:"},{"line_number":309,"context_line":"      loadbalancer.update:"},{"line_number":310,"context_line":"      loadbalancer.delete:"},{"line_number":311,"context_line":"    attributes:"},{"line_number":312,"context_line":"      name: resource_metadata.name"},{"line_number":313,"context_line":"      vip_address: resource_metadata.vip_address"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1173132f_1ef2ae52","line":310,"in_reply_to":"88bf62cd_ff091798","updated":"2026-01-08 09:43:32.000000000","message":"Acknowledged","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":true,"context_lines":[{"line_number":311,"context_line":"    attributes:"},{"line_number":312,"context_line":"      name: resource_metadata.name"},{"line_number":313,"context_line":"      vip_address: resource_metadata.vip_address"},{"line_number":314,"context_line":"      operating_status: resource_metadata.operating_status"},{"line_number":315,"context_line":"      provisioning_status: resource_metadata.provisioning_status"},{"line_number":316,"context_line":"      provider: resource_metadata.provider"},{"line_number":317,"context_line":"    event_delete: octavia.loadbalancer.delete.end"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7c4b84c2_5c4e5253","line":314,"updated":"2026-01-07 17:10:45.000000000","message":"Remove `operating_status` attribute definition, as noted by other comments.","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a4f46058e9b1b37266564e9cd77e97a14ba9c892","unresolved":false,"context_lines":[{"line_number":311,"context_line":"    attributes:"},{"line_number":312,"context_line":"      name: resource_metadata.name"},{"line_number":313,"context_line":"      vip_address: resource_metadata.vip_address"},{"line_number":314,"context_line":"      operating_status: resource_metadata.operating_status"},{"line_number":315,"context_line":"      provisioning_status: resource_metadata.provisioning_status"},{"line_number":316,"context_line":"      provider: resource_metadata.provider"},{"line_number":317,"context_line":"    event_delete: octavia.loadbalancer.delete.end"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"0b0d6597_b3821780","line":314,"in_reply_to":"7c4b84c2_5c4e5253","updated":"2026-01-08 09:43:32.000000000","message":"Acknowledged","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"4cb03ebf2fcb3d4ec1a5f6612ac4302f04ce1bd5","unresolved":true,"context_lines":[{"line_number":312,"context_line":"      name: resource_metadata.name"},{"line_number":313,"context_line":"      vip_address: resource_metadata.vip_address"},{"line_number":314,"context_line":"      operating_status: resource_metadata.operating_status"},{"line_number":315,"context_line":"      provisioning_status: resource_metadata.provisioning_status"},{"line_number":316,"context_line":"      provider: resource_metadata.provider"},{"line_number":317,"context_line":"    event_delete: octavia.loadbalancer.delete.end"},{"line_number":318,"context_line":"    event_attributes:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"2a8ed97f_d0e4a38e","line":315,"updated":"2026-01-07 17:10:45.000000000","message":"Remove `operating_status` attribute definition, as noted by other comments.","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a4f46058e9b1b37266564e9cd77e97a14ba9c892","unresolved":false,"context_lines":[{"line_number":312,"context_line":"      name: resource_metadata.name"},{"line_number":313,"context_line":"      vip_address: resource_metadata.vip_address"},{"line_number":314,"context_line":"      operating_status: resource_metadata.operating_status"},{"line_number":315,"context_line":"      provisioning_status: resource_metadata.provisioning_status"},{"line_number":316,"context_line":"      provider: resource_metadata.provider"},{"line_number":317,"context_line":"    event_delete: octavia.loadbalancer.delete.end"},{"line_number":318,"context_line":"    event_attributes:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"127aad74_2cf470c4","line":315,"in_reply_to":"2a8ed97f_d0e4a38e","updated":"2026-01-08 09:43:32.000000000","message":"Acknowledged","commit_id":"a11f767b227214dba2cc46f037b12296af467ae7"}],"doc/source/admin/telemetry-measurements.rst":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"b3a14714581f979810b3b402e7858aa0d4d0d5f9","unresolved":true,"context_lines":[{"line_number":606,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":607,"context_line":"| Name          | Type  | Unit    | Resource   | Origin    | Note             |"},{"line_number":608,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":609,"context_line":"| **Meters added in the Flamingo release**                                    |"},{"line_number":610,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":611,"context_line":"| loadbalancer\\ | Gauge | status  | lb ID      | Pollster  | Operating status |"},{"line_number":612,"context_line":"| .operating    |       |         |            |           | of a load        |"}],"source_content_type":"text/x-rst","patch_set":10,"id":"2a9a4f22_1530bb7a","line":609,"range":{"start_line":609,"start_character":24,"end_line":609,"end_character":32},"updated":"2026-01-09 10:56:12.000000000","message":"Flamingo is already released. This should be Gazpacho","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"6e746f4e185a33df38f7ca3a30a8058abde66aab","unresolved":true,"context_lines":[{"line_number":606,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":607,"context_line":"| Name          | Type  | Unit    | Resource   | Origin    | Note             |"},{"line_number":608,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":609,"context_line":"| **Meters added in the Flamingo release**                                    |"},{"line_number":610,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":611,"context_line":"| loadbalancer\\ | Gauge | status  | lb ID      | Pollster  | Operating status |"},{"line_number":612,"context_line":"| .operating    |       |         |            |           | of a load        |"}],"source_content_type":"text/x-rst","patch_set":10,"id":"84393294_177abb0c","line":609,"range":{"start_line":609,"start_character":24,"end_line":609,"end_character":32},"in_reply_to":"2a9a4f22_1530bb7a","updated":"2026-01-09 12:37:53.000000000","message":"Absolutely, change incoming.","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"2dd60b0c49275e55bd655a25230acd4bb13ab3f7","unresolved":false,"context_lines":[{"line_number":606,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":607,"context_line":"| Name          | Type  | Unit    | Resource   | Origin    | Note             |"},{"line_number":608,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":609,"context_line":"| **Meters added in the Flamingo release**                                    |"},{"line_number":610,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":611,"context_line":"| loadbalancer\\ | Gauge | status  | lb ID      | Pollster  | Operating status |"},{"line_number":612,"context_line":"| .operating    |       |         |            |           | of a load        |"}],"source_content_type":"text/x-rst","patch_set":10,"id":"a370466b_f18a42a4","line":609,"range":{"start_line":609,"start_character":24,"end_line":609,"end_character":32},"in_reply_to":"84393294_177abb0c","updated":"2026-01-09 13:52:12.000000000","message":"Done","commit_id":"d34610e13e47db9e45e0fb0f0a13b86d4695ee49"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"d185c15b566078872e82a3a3722c31be41fab5bd","unresolved":false,"context_lines":[{"line_number":606,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":607,"context_line":"| Name          | Type  | Unit    | Resource   | Origin    | Note             |"},{"line_number":608,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":609,"context_line":"| **Meters added in the Gazpacho release**                                    |"},{"line_number":610,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":611,"context_line":"| loadbalancer\\ | Gauge | status  | lb ID      | Pollster  | Operating status |"},{"line_number":612,"context_line":"| .operating    |       |         |            |           | of a load        |"}],"source_content_type":"text/x-rst","patch_set":11,"id":"b9037aba_5562f84f","line":609,"updated":"2026-01-09 13:49:37.000000000","message":"Done. Changed Flamingo to Gazpacho.","commit_id":"f244571d0bb0ea803b4fb4c805fed9978f8eeed0"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"b18d6c6857cd15b2f2a145cf19613f4cf564bbf2","unresolved":true,"context_lines":[{"line_number":228,"context_line":"| power.sta\\| Gauge | state| instance | Pollster | Libvirt | virDomainState   |"},{"line_number":229,"context_line":"| te        |       |      | ID       |          |         | of the VM        |"},{"line_number":230,"context_line":"+-----------+-------+------+----------+----------+---------+------------------+"},{"line_number":231,"context_line":"| **Meters added in the Gazpacho release**                                    |"},{"line_number":232,"context_line":"+-----------+-------+------+----------+----------+---------+------------------+"},{"line_number":233,"context_line":"| memory.\\  | Gauge | MiB  | instance | Pollster | Libvirt | Volume of RAM    |"},{"line_number":234,"context_line":"| available |       |      | ID       |          |         | available to the |"}],"source_content_type":"text/x-rst","patch_set":12,"id":"78b310e1_e59d631d","line":231,"updated":"2026-01-12 18:32:53.000000000","message":"This should stay flamingo","commit_id":"110f79c5fe4b04bb53f8f7096e8745501603f2ff"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"76e7950e3775696b3cfb93ee74476315a48b135e","unresolved":false,"context_lines":[{"line_number":228,"context_line":"| power.sta\\| Gauge | state| instance | Pollster | Libvirt | virDomainState   |"},{"line_number":229,"context_line":"| te        |       |      | ID       |          |         | of the VM        |"},{"line_number":230,"context_line":"+-----------+-------+------+----------+----------+---------+------------------+"},{"line_number":231,"context_line":"| **Meters added in the Gazpacho release**                                    |"},{"line_number":232,"context_line":"+-----------+-------+------+----------+----------+---------+------------------+"},{"line_number":233,"context_line":"| memory.\\  | Gauge | MiB  | instance | Pollster | Libvirt | Volume of RAM    |"},{"line_number":234,"context_line":"| available |       |      | ID       |          |         | available to the |"}],"source_content_type":"text/x-rst","patch_set":12,"id":"b8d475fe_1c6642cf","line":231,"in_reply_to":"78b310e1_e59d631d","updated":"2026-01-13 09:23:09.000000000","message":"The magic of mass replacement. Thank you for noticing.","commit_id":"110f79c5fe4b04bb53f8f7096e8745501603f2ff"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"b18d6c6857cd15b2f2a145cf19613f4cf564bbf2","unresolved":true,"context_lines":[{"line_number":625,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":626,"context_line":"| Name          | Type  | Unit    | Resource   | Origin    | Note             |"},{"line_number":627,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":628,"context_line":"| **Meters added in the Gazpacho release**                                    |"},{"line_number":629,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":630,"context_line":"| alarm.evalua\\ | Gauge | evalua\\ | alarm ID   | Pollster  | Total count of   |"},{"line_number":631,"context_line":"| tion_result   |       | tion_r\\ |            |           | evaluation       |"}],"source_content_type":"text/x-rst","patch_set":12,"id":"66c53e7d_b9bc8b92","line":628,"updated":"2026-01-12 18:32:53.000000000","message":"This should stay flamingo","commit_id":"110f79c5fe4b04bb53f8f7096e8745501603f2ff"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"76e7950e3775696b3cfb93ee74476315a48b135e","unresolved":false,"context_lines":[{"line_number":625,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":626,"context_line":"| Name          | Type  | Unit    | Resource   | Origin    | Note             |"},{"line_number":627,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":628,"context_line":"| **Meters added in the Gazpacho release**                                    |"},{"line_number":629,"context_line":"+---------------+-------+---------+------------+-----------+------------------+"},{"line_number":630,"context_line":"| alarm.evalua\\ | Gauge | evalua\\ | alarm ID   | Pollster  | Total count of   |"},{"line_number":631,"context_line":"| tion_result   |       | tion_r\\ |            |           | evaluation       |"}],"source_content_type":"text/x-rst","patch_set":12,"id":"0e2e29b8_c294243f","line":628,"in_reply_to":"66c53e7d_b9bc8b92","updated":"2026-01-13 09:23:09.000000000","message":"Done","commit_id":"110f79c5fe4b04bb53f8f7096e8745501603f2ff"}]}
