)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"307928ffb899c9864a5e19ae43024e5319cd127f","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Vladislav Terekhov \u003cVlSTerekhov@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-09-03 15:57:18 +0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"stats: Fix prometheus histogram units and add custom bucket support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Record response time in seconds instead of milliseconds to match"},{"line_number":10,"context_line":"default prometheus_client histogram bucket boundaries."},{"line_number":11,"context_line":"Add metrics.prometheus.buckets option in clouds.yaml for"},{"line_number":12,"context_line":"configuring custom histogram bucket boundaries. When not specified,"},{"line_number":13,"context_line":"the prometheus_client library defaults are used."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #2069431"},{"line_number":16,"context_line":"Change-Id: Ic29bff0601bc184abd4de54c76be358a7c6dfe09"},{"line_number":17,"context_line":"Signed-off-by: Vladislav Terekhov \u003cVlSTerekhov@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"71b6d650_d300ad83","line":14,"range":{"start_line":7,"start_character":67,"end_line":14,"end_character":1},"updated":"2026-09-03 13:30:03.000000000","message":"I suspect there are two patches here: once to change the default response times (bugfix), and another to add the feature. Can you split this?","commit_id":"67cb9da81deef7d3b2e8b71f0d101c24e0e57e66"},{"author":{"_account_id":39399,"name":"Vladislav Terekhov","display_name":"Vladislav Terekhov","email":"VlSTerekhov@gmail.com","username":"tepex"},"change_message_id":"5a12a41a60dc769296a5eb6834e1163d58c51a55","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Vladislav Terekhov \u003cVlSTerekhov@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-09-03 15:57:18 +0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"stats: Fix prometheus histogram units and add custom bucket support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Record response time in seconds instead of milliseconds to match"},{"line_number":10,"context_line":"default prometheus_client histogram bucket boundaries."},{"line_number":11,"context_line":"Add metrics.prometheus.buckets option in clouds.yaml for"},{"line_number":12,"context_line":"configuring custom histogram bucket boundaries. When not specified,"},{"line_number":13,"context_line":"the prometheus_client library defaults are used."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #2069431"},{"line_number":16,"context_line":"Change-Id: Ic29bff0601bc184abd4de54c76be358a7c6dfe09"},{"line_number":17,"context_line":"Signed-off-by: Vladislav Terekhov \u003cVlSTerekhov@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fd49cfee_98018dcd","line":14,"range":{"start_line":7,"start_character":67,"end_line":14,"end_character":1},"in_reply_to":"71b6d650_d300ad83","updated":"2026-09-04 05:53:49.000000000","message":"Done","commit_id":"67cb9da81deef7d3b2e8b71f0d101c24e0e57e66"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"21112fc4627e48531a6f012db556912bd98eedc1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4fb8f3ce_dc587c67","updated":"2026-09-04 11:28:15.000000000","message":"lgtm. I\u0027d like @artem.goncharov@gmail.com to take a look also","commit_id":"fd6cb07844e6fbb1f8cf34058e5e8f4bd87243e2"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"493c4f746e673bed88ddc6e7f3d824c6424efda6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ee3b97b1_09d94362","updated":"2026-09-04 14:29:59.000000000","message":"please add a precise code comment (nobody will go through RNs when doing code refactoring or similar). There is a big difference that for statsd we need to report ms since it only support int, influxdb by design considers ms. You introduce a calculation deviation which somebody may interpret as a bug","commit_id":"fd6cb07844e6fbb1f8cf34058e5e8f4bd87243e2"},{"author":{"_account_id":39399,"name":"Vladislav Terekhov","display_name":"Vladislav Terekhov","email":"VlSTerekhov@gmail.com","username":"tepex"},"change_message_id":"8cec21eaf5fc679a1cd925fea74748e54a56a90b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bb93daed_6d432738","in_reply_to":"ee3b97b1_09d94362","updated":"2026-09-04 16:15:34.000000000","message":"Done. Also added test to cover this case","commit_id":"fd6cb07844e6fbb1f8cf34058e5e8f4bd87243e2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dcb693c104d19c5a72bb0012042438b58c472bf6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"865e7d96_9c8dcf08","updated":"2026-09-04 16:16:50.000000000","message":"Going to leave +W to gtema","commit_id":"d07f3585294e3b980d2c874ed16186f92e67afc9"}],"openstack/config/cloud_config.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"307928ffb899c9864a5e19ae43024e5319cd127f","unresolved":true,"context_lines":[{"line_number":53,"context_line":"        statsd_port: str | None \u003d None,"},{"line_number":54,"context_line":"        statsd_prefix: str | None \u003d None,"},{"line_number":55,"context_line":"        # TODO(stephenfin): Add better types"},{"line_number":56,"context_line":"        influxdb_config: dict[str, Any] | None \u003d None,"},{"line_number":57,"context_line":"        collector_registry: Optional["},{"line_number":58,"context_line":"            \u0027prometheus_client.CollectorRegistry\u0027"},{"line_number":59,"context_line":"        ] \u003d None,"},{"line_number":60,"context_line":"        prometheus_buckets: list[float] | None \u003d None,"},{"line_number":61,"context_line":"        cache_auth: bool \u003d False,"},{"line_number":62,"context_line":"    ) -\u003e None:"},{"line_number":63,"context_line":"        warnings.warn("}],"source_content_type":"text/x-python","patch_set":1,"id":"390135a8_4e06db5c","line":60,"range":{"start_line":56,"start_character":54,"end_line":60,"end_character":54},"updated":"2026-09-03 13:30:03.000000000","message":"Let\u0027s not add this here. This class is deprecated for removal","commit_id":"67cb9da81deef7d3b2e8b71f0d101c24e0e57e66"},{"author":{"_account_id":39399,"name":"Vladislav Terekhov","display_name":"Vladislav Terekhov","email":"VlSTerekhov@gmail.com","username":"tepex"},"change_message_id":"5a12a41a60dc769296a5eb6834e1163d58c51a55","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        statsd_port: str | None \u003d None,"},{"line_number":54,"context_line":"        statsd_prefix: str | None \u003d None,"},{"line_number":55,"context_line":"        # TODO(stephenfin): Add better types"},{"line_number":56,"context_line":"        influxdb_config: dict[str, Any] | None \u003d None,"},{"line_number":57,"context_line":"        collector_registry: Optional["},{"line_number":58,"context_line":"            \u0027prometheus_client.CollectorRegistry\u0027"},{"line_number":59,"context_line":"        ] \u003d None,"},{"line_number":60,"context_line":"        prometheus_buckets: list[float] | None \u003d None,"},{"line_number":61,"context_line":"        cache_auth: bool \u003d False,"},{"line_number":62,"context_line":"    ) -\u003e None:"},{"line_number":63,"context_line":"        warnings.warn("}],"source_content_type":"text/x-python","patch_set":1,"id":"cac578bd_208a7822","line":60,"range":{"start_line":56,"start_character":54,"end_line":60,"end_character":54},"in_reply_to":"390135a8_4e06db5c","updated":"2026-09-04 05:53:49.000000000","message":"Done","commit_id":"67cb9da81deef7d3b2e8b71f0d101c24e0e57e66"}],"openstack/config/cloud_region.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"307928ffb899c9864a5e19ae43024e5319cd127f","unresolved":true,"context_lines":[{"line_number":363,"context_line":"        collector_registry: Optional["},{"line_number":364,"context_line":"            \u0027prometheus_client.CollectorRegistry\u0027"},{"line_number":365,"context_line":"        ] \u003d None,"},{"line_number":366,"context_line":"        prometheus_buckets: list[float] | None \u003d None,"},{"line_number":367,"context_line":"        cache_auth: bool \u003d False,"},{"line_number":368,"context_line":"    ) -\u003e None:"},{"line_number":369,"context_line":"        self._name \u003d name"}],"source_content_type":"text/x-python","patch_set":1,"id":"57c3722a_1f2a16b5","line":366,"updated":"2026-09-03 13:30:03.000000000","message":"I have a WIP series to have the three sets of metrics configuration options gathered into three individual settings. This patch was motivation for me to finish that and push it. You can find it here:\n\nhttps://review.opendev.org/c/openstack/openstacksdk/+/1003771\n\nI\u0027d like us to build on that approach rather than add a new, top-level knob here. Does this work/make sense for you?\n\nAlso, [the Prometheus Python client docs](https://prometheus.github.io/client_python/instrumenting/histogram/) say this is a more generic `Sequence[float]` (i.e. they accept ordered collections like tuples also)","commit_id":"67cb9da81deef7d3b2e8b71f0d101c24e0e57e66"},{"author":{"_account_id":39399,"name":"Vladislav Terekhov","display_name":"Vladislav Terekhov","email":"VlSTerekhov@gmail.com","username":"tepex"},"change_message_id":"5a12a41a60dc769296a5eb6834e1163d58c51a55","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        collector_registry: Optional["},{"line_number":364,"context_line":"            \u0027prometheus_client.CollectorRegistry\u0027"},{"line_number":365,"context_line":"        ] \u003d None,"},{"line_number":366,"context_line":"        prometheus_buckets: list[float] | None \u003d None,"},{"line_number":367,"context_line":"        cache_auth: bool \u003d False,"},{"line_number":368,"context_line":"    ) -\u003e None:"},{"line_number":369,"context_line":"        self._name \u003d name"}],"source_content_type":"text/x-python","patch_set":1,"id":"47ea76ff_9639e8c1","line":366,"in_reply_to":"57c3722a_1f2a16b5","updated":"2026-09-04 05:53:49.000000000","message":"Didn\u0027t see your WIP series. Great work. I\u0027ll remove all configuration from this MR","commit_id":"67cb9da81deef7d3b2e8b71f0d101c24e0e57e66"}],"openstack/config/schema.json":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"307928ffb899c9864a5e19ae43024e5319cd127f","unresolved":true,"context_lines":[{"line_number":369,"context_line":"      },"},{"line_number":370,"context_line":"      \"additionalProperties\": false"},{"line_number":371,"context_line":"    },"},{"line_number":372,"context_line":"    \"prometheus\": {"},{"line_number":373,"context_line":"      \"name\": \"Prometheus\","},{"line_number":374,"context_line":"      \"description\": \"Configuration for reporting metrics to Prometheus\","},{"line_number":375,"context_line":"      \"type\": \"object\","},{"line_number":376,"context_line":"      \"properties\": {"},{"line_number":377,"context_line":"        \"buckets\": {"},{"line_number":378,"context_line":"          \"description\": \"Custom histogram bucket boundaries in seconds\","},{"line_number":379,"context_line":"          \"type\": \"array\","},{"line_number":380,"context_line":"          \"items\": { \"type\": \"number\" }"},{"line_number":381,"context_line":"        }"},{"line_number":382,"context_line":"      }"},{"line_number":383,"context_line":"    },"},{"line_number":384,"context_line":"    \"statsd\": {"},{"line_number":385,"context_line":"      \"name\": \"statsd\","},{"line_number":386,"context_line":"      \"description\": \"Configuration for reporting metrics to statsd\","}],"source_content_type":"application/json","patch_set":1,"id":"78e09ce5_651a92f7","line":383,"range":{"start_line":372,"start_character":0,"end_line":383,"end_character":6},"updated":"2026-09-03 13:30:03.000000000","message":"Is this something you envision people setting in their `clouds.yaml`, rather than being explicitly passed when creating a server? If not, you probably don\u0027t need this.","commit_id":"67cb9da81deef7d3b2e8b71f0d101c24e0e57e66"},{"author":{"_account_id":39399,"name":"Vladislav Terekhov","display_name":"Vladislav Terekhov","email":"VlSTerekhov@gmail.com","username":"tepex"},"change_message_id":"5a12a41a60dc769296a5eb6834e1163d58c51a55","unresolved":false,"context_lines":[{"line_number":369,"context_line":"      },"},{"line_number":370,"context_line":"      \"additionalProperties\": false"},{"line_number":371,"context_line":"    },"},{"line_number":372,"context_line":"    \"prometheus\": {"},{"line_number":373,"context_line":"      \"name\": \"Prometheus\","},{"line_number":374,"context_line":"      \"description\": \"Configuration for reporting metrics to Prometheus\","},{"line_number":375,"context_line":"      \"type\": \"object\","},{"line_number":376,"context_line":"      \"properties\": {"},{"line_number":377,"context_line":"        \"buckets\": {"},{"line_number":378,"context_line":"          \"description\": \"Custom histogram bucket boundaries in seconds\","},{"line_number":379,"context_line":"          \"type\": \"array\","},{"line_number":380,"context_line":"          \"items\": { \"type\": \"number\" }"},{"line_number":381,"context_line":"        }"},{"line_number":382,"context_line":"      }"},{"line_number":383,"context_line":"    },"},{"line_number":384,"context_line":"    \"statsd\": {"},{"line_number":385,"context_line":"      \"name\": \"statsd\","},{"line_number":386,"context_line":"      \"description\": \"Configuration for reporting metrics to statsd\","}],"source_content_type":"application/json","patch_set":1,"id":"960e6920_fe544441","line":383,"range":{"start_line":372,"start_character":0,"end_line":383,"end_character":6},"in_reply_to":"78e09ce5_651a92f7","updated":"2026-09-04 05:53:49.000000000","message":"Yes, I initially envisioned this in clouds.yaml - statsd and InfluxDB are already there and the histogram singleton can only be configured at init time. But I agree it\u0027s not needed for this change, so I\u0027m removing it.","commit_id":"67cb9da81deef7d3b2e8b71f0d101c24e0e57e66"}]}
