)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36393,"name":"Callum Dickinson","email":"callum.dickinson@catalystcloud.nz","username":"Callum027","status":"Catalyst Cloud"},"change_message_id":"c5963465e921329ae149937cb2976890e7d46b67","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"32df44bf_e85a1a4c","updated":"2026-05-25 19:50:05.000000000","message":"Is a Gnocchi implementation going to be done separately?","commit_id":"6e1984b71f34f8f2edcbce017d91a134d72731d4"},{"author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"change_message_id":"03c3a7176a4aed71cc040727d7e7287a819b4de1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3f7ffac8_03297dec","updated":"2026-05-25 18:42:10.000000000","message":"recheck got some unreachable addresses, assuming it\u0027s an intermittent issue","commit_id":"6e1984b71f34f8f2edcbce017d91a134d72731d4"},{"author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"change_message_id":"b7d1df4a2baed9e2b2d92858e4c3a4f4389ebb2d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2e8e1265_97f634de","in_reply_to":"32df44bf_e85a1a4c","updated":"2026-05-26 12:05:10.000000000","message":"I planned to start with prometheus, but add in the scaffolding for gnocchi with the base class, rather than just having it support prometheus and needing to refactor later to make room for other metric storages.\n\nMy focus initially is getting the tests written and verified with prometheus as the backend, and then consider a second job later to support gnocchi, (unless there is a practical way to actually run both in the same job). The additional gnocchi support is a complication I wanted to put off until a later stage of this project.\n\nIf you want to collaborate and add the gnocchi parts, I would welcome that! \nPerhaps we should take this to the mailing list to discuss, so we have some chart of the progress!","commit_id":"6e1984b71f34f8f2edcbce017d91a134d72731d4"}],"telemetry_tempest_plugin/ceilometer/api/base.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"28390417ff8af67dbab775e8d44818088821e718","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                except Exception as e:"},{"line_number":134,"context_line":"                    if metric not in first_errors:"},{"line_number":135,"context_line":"                        first_errors[metric] \u003d True"},{"line_number":136,"context_line":"                        LOG.warning(\"Error querying metric %s (will retry): %s\","},{"line_number":137,"context_line":"                                    metric, e)"},{"line_number":138,"context_line":"                    else:"},{"line_number":139,"context_line":"                        LOG.debug(\"Error querying metric %s: %s\", metric, e)"}],"source_content_type":"text/x-python","patch_set":6,"id":"8092493e_4c08d4d3","line":136,"updated":"2026-06-08 16:56:44.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"fdbe77a4051d9d7d152fa76fc7023499fbc27375"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"28390417ff8af67dbab775e8d44818088821e718","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        \"\"\"Assert a single metric exists, with automatic resource_id handling."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        Uses DEFAULT_RESOURCE_ATTR or METRIC_RESOURCE_MAP to determine which"},{"line_number":187,"context_line":"        resource_id to use. Automatically skips if metric not in polling config."},{"line_number":188,"context_line":"        \"\"\""},{"line_number":189,"context_line":"        if metric_name not in self.configured_metrics:"},{"line_number":190,"context_line":"            self.skipTest(\u0027%s not in polling config\u0027 % metric_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"a2fe2a3a_a1f1137f","line":187,"updated":"2026-06-08 16:56:44.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"fdbe77a4051d9d7d152fa76fc7023499fbc27375"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"28390417ff8af67dbab775e8d44818088821e718","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        \"\"\"Check a single optional metric, with automatic resource_id handling."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        Uses DEFAULT_RESOURCE_ATTR or METRIC_RESOURCE_MAP to determine which"},{"line_number":200,"context_line":"        resource_id to use. Automatically skips if metric not in polling config."},{"line_number":201,"context_line":"        \"\"\""},{"line_number":202,"context_line":"        if metric_name not in self.configured_optional_metrics:"},{"line_number":203,"context_line":"            self.skipTest(\u0027%s not in polling config\u0027 % metric_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"e8b95713_ce11399b","line":200,"updated":"2026-06-08 16:56:44.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"fdbe77a4051d9d7d152fa76fc7023499fbc27375"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"28390417ff8af67dbab775e8d44818088821e718","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    @classmethod"},{"line_number":221,"context_line":"    def _service_request(cls, service_type, method, url,"},{"line_number":222,"context_line":"                         body\u003dNone):"},{"line_number":223,"context_line":"        # TODO: Migrate to tempest.lib.common.rest_client.RestClient"},{"line_number":224,"context_line":"        # Currently uses requests directly for simplicity, but RestClient"},{"line_number":225,"context_line":"        # provides better integration with Tempest\u0027s auth/credential system"},{"line_number":226,"context_line":"        endpoint \u003d cls._get_service_endpoint(service_type)"}],"source_content_type":"text/x-python","patch_set":6,"id":"215183a0_a40e3441","line":223,"updated":"2026-06-08 16:56:44.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"fdbe77a4051d9d7d152fa76fc7023499fbc27375"}],"telemetry_tempest_plugin/ceilometer/service/metric_client.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"28390417ff8af67dbab775e8d44818088821e718","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    \"\"\"Create a metric client from a Tempest auth_provider."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    Args:"},{"line_number":141,"context_line":"        auth_provider: A Tempest auth provider (from cls.os_admin.auth_provider)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    Returns:"},{"line_number":144,"context_line":"        A MetricClient instance (PrometheusMetricClient or GnocchiMetricClient)"}],"source_content_type":"text/x-python","patch_set":6,"id":"92070161_d9056b71","line":141,"updated":"2026-06-08 16:56:44.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"fdbe77a4051d9d7d152fa76fc7023499fbc27375"}]}
