)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a3dca5a870767f91d76a3b917b4847372968647","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c41261e3_34b7b395","updated":"2023-01-04 20:40:50.000000000","message":"Jay, Adding you as a reviewer since we talked about this before the holidays. I *think* this is in good shape at this point.","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"3e24bdf7875a3404aa5ec6b43abef30f9529b739","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ba35c6d2_91707057","updated":"2023-01-06 04:29:23.000000000","message":"Looks good, but I agree with what JayF said","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1c9b60336b00f7236a057fc7ada9e7d74e29004f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a5cae158_379bf4c4","updated":"2023-01-04 20:58:36.000000000","message":"Nothing code-wrong afaict; but I don\u0027t want this to merge with an invalid docstring unless you feel strongly about it. ","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"9634d8ccecc1194c3ecd4dd0a40bbc783b67a106","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e5675988_9ec2984b","updated":"2023-01-16 21:11:53.000000000","message":"looks good, thanks","commit_id":"71e06086b09a7455d13b268aafc8978705f3a283"}],"ironic_lib/metrics_collector.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"846c4c0b2c3b5884bd964cf5f9ac094cec1f1c7e","unresolved":true,"context_lines":[{"line_number":67,"context_line":"                # NOTE(TheJulia): Value is hard coded for counter"},{"line_number":68,"context_line":"                # data types as a value of 1."},{"line_number":69,"context_line":"                STATISTIC_DATA[name] \u003d STATISTIC_DATA[name] + value"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _gauge(self, name, value):"},{"line_number":72,"context_line":"        return self._send(name, value, self.GAUGE_TYPE)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"847568d6_7ab9ed91","line":70,"updated":"2022-11-23 16:29:29.000000000","message":"So we disregard ms timer values because there really is not a good way to handle it, although maybe add up total time spent perhaps?\n\nOne thought that comes to mind, we should likely be triggering a counter value for each time *as well*.","commit_id":"b6c291ae86d2e87687fcd93550b23c8ebc10fc1e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94c22e3d58628fa9e216856824c2217c782e03d6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                # NOTE(TheJulia): Value is hard coded for counter"},{"line_number":68,"context_line":"                # data types as a value of 1."},{"line_number":69,"context_line":"                STATISTIC_DATA[name] \u003d STATISTIC_DATA[name] + value"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def _gauge(self, name, value):"},{"line_number":72,"context_line":"        return self._send(name, value, self.GAUGE_TYPE)"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f53deee1_571bb600","line":70,"in_reply_to":"847568d6_7ab9ed91","updated":"2023-01-04 20:39:56.000000000","message":"Done","commit_id":"b6c291ae86d2e87687fcd93550b23c8ebc10fc1e"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1c9b60336b00f7236a057fc7ada9e7d74e29004f","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    TIMER_TYPE \u003d \u0027ms\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def __init__(self, prefix, delimiter\u003d\u0027.\u0027):"},{"line_number":33,"context_line":"        \"\"\"Initialize a StatsdMetricLogger"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        The logger uses the given prefix list, delimiter, host, and port."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7635ab03_b5e31702","line":33,"updated":"2023-01-04 20:58:36.000000000","message":"This whole docstring needs edits.","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"65e1e780f562093355f4e36e48e83f59f8a4730b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    TIMER_TYPE \u003d \u0027ms\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def __init__(self, prefix, delimiter\u003d\u0027.\u0027):"},{"line_number":33,"context_line":"        \"\"\"Initialize a StatsdMetricLogger"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        The logger uses the given prefix list, delimiter, host, and port."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bb38e377_97d6a436","line":33,"in_reply_to":"7635ab03_b5e31702","updated":"2023-01-06 16:52:59.000000000","message":"Done","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1c9b60336b00f7236a057fc7ada9e7d74e29004f","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        This memory updates the internal dictionary to facilitate"},{"line_number":48,"context_line":"        collection of statistics, and the retrieval of them for"},{"line_number":49,"context_line":"        consumers or plugins in Ironic to retrieve the statistic"},{"line_number":50,"context_line":"        dat utilizing the `get_metrics_data` method."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        :param name: Metric name"},{"line_number":53,"context_line":"        :param value: Metric value"}],"source_content_type":"text/x-python","patch_set":2,"id":"dc9747c2_ed6b9998","line":50,"updated":"2023-01-04 20:58:36.000000000","message":"nit: data","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"65e1e780f562093355f4e36e48e83f59f8a4730b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        This memory updates the internal dictionary to facilitate"},{"line_number":48,"context_line":"        collection of statistics, and the retrieval of them for"},{"line_number":49,"context_line":"        consumers or plugins in Ironic to retrieve the statistic"},{"line_number":50,"context_line":"        dat utilizing the `get_metrics_data` method."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        :param name: Metric name"},{"line_number":53,"context_line":"        :param value: Metric value"}],"source_content_type":"text/x-python","patch_set":2,"id":"c9dcb242_8d1b7713","line":50,"in_reply_to":"dc9747c2_ed6b9998","updated":"2023-01-06 16:52:59.000000000","message":"Done","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"71a560a34c423a9c2f65ddffeb2a7ca70f00bfbe","unresolved":true,"context_lines":[{"line_number":43,"context_line":"        super(DictCollectionMetricLogger, self).__init__("},{"line_number":44,"context_line":"            prefix, delimiter\u003ddelimiter)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @lockutils.synchronized(\u0027statistics-update\u0027)"},{"line_number":47,"context_line":"    def _send(self, name, value, metric_type, sample_rate\u003dNone):"},{"line_number":48,"context_line":"        \"\"\"Send the metrics to be stored in memory."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bbaa778e_3999527c","line":46,"updated":"2023-01-27 21:26:16.000000000","message":"downside here, the use of a lock *does* mean we\u0027re going to be a bit noisy log wise. Short of adding an option to lockutils to disable it, it is kind of unavoidable.","commit_id":"71e06086b09a7455d13b268aafc8978705f3a283"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"94bff4d4a6baf15798cda2769427103c4259754f","unresolved":true,"context_lines":[{"line_number":43,"context_line":"        super(DictCollectionMetricLogger, self).__init__("},{"line_number":44,"context_line":"            prefix, delimiter\u003ddelimiter)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @lockutils.synchronized(\u0027statistics-update\u0027)"},{"line_number":47,"context_line":"    def _send(self, name, value, metric_type, sample_rate\u003dNone):"},{"line_number":48,"context_line":"        \"\"\"Send the metrics to be stored in memory."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1c49c364_d082a355","line":46,"in_reply_to":"64ebfc89_549ca85e","updated":"2023-02-02 23:23:24.000000000","message":"EBUG oslo_concurrency.lockutils [None req-72304c77-3ac1-4f4b-9b34-5224442a20eb None None] Acquiring lock \"statistics-update\" by \"ironic_lib.metrics_collector.DictCollectionMetricLogger._send\" {{(pid\u003d2723152) inner /usr/local/lib/python3.10/dist-packages/oslo_concurrency/lockutils.py:404}}\nDEBUG oslo_concurrency.lockutils [None req-72304c77-3ac1-4f4b-9b34-5224442a20eb None None] Lock \"statistics-update\" acquired by \"ironic_lib.metrics_collector.DictCollectionMetricLogger._send\" :: waited 0.000s {{(pid\u003d2723152) inner /usr/local/lib/python3.10/dist-packages/oslo_concurrency/lockutils.py:409}}\nDEBUG oslo_concurrency.lockutils [None req-72304c77-3ac1-4f4b-9b34-5224442a20eb None None] Lock \"statistics-update\" \"released\" by \"ironic_lib.metrics_collector.DictCollectionMetricLogger._send\" :: held 0.000s {{(pid\u003d2723152) inner /usr/local/lib/python3.10/dist-packages/oslo_concurrency/lockutils.py:423}}\n\n\nYeay... just not record debug logging by default.","commit_id":"71e06086b09a7455d13b268aafc8978705f3a283"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"7e6bc2aeba00ecbf6bd6f31b117f8ce0d0c0e52e","unresolved":true,"context_lines":[{"line_number":43,"context_line":"        super(DictCollectionMetricLogger, self).__init__("},{"line_number":44,"context_line":"            prefix, delimiter\u003ddelimiter)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @lockutils.synchronized(\u0027statistics-update\u0027)"},{"line_number":47,"context_line":"    def _send(self, name, value, metric_type, sample_rate\u003dNone):"},{"line_number":48,"context_line":"        \"\"\"Send the metrics to be stored in memory."},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"64ebfc89_549ca85e","line":46,"in_reply_to":"bbaa778e_3999527c","updated":"2023-02-01 23:58:29.000000000","message":"We could consider adding oslo_concurrency to https://opendev.org/openstack/ironic/src/branch/master/ironic/conf/opts.py#L73","commit_id":"71e06086b09a7455d13b268aafc8978705f3a283"}],"ironic_lib/metrics_utils.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1c9b60336b00f7236a057fc7ada9e7d74e29004f","unresolved":true,"context_lines":[{"line_number":24,"context_line":"metrics_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027backend\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027noop\u0027,"},{"line_number":27,"context_line":"               choices\u003d[\u0027noop\u0027, \u0027statsd\u0027, \u0027collector\u0027],"},{"line_number":28,"context_line":"               help\u003d\u0027Backend to use for the metrics system.\u0027),"},{"line_number":29,"context_line":"    cfg.BoolOpt(\u0027prepend_host\u0027,"},{"line_number":30,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":2,"id":"09680e41_5d9996b8","line":27,"updated":"2023-01-04 20:58:36.000000000","message":"Wouldn\u0027t hurt to maybe give a little more help here. Indicate that collector means (x), because I don\u0027t think it\u0027s obvious.","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"be906d4b4a0a6549eb4bd9ba77d3f6e264170c60","unresolved":true,"context_lines":[{"line_number":24,"context_line":"metrics_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027backend\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027noop\u0027,"},{"line_number":27,"context_line":"               choices\u003d[\u0027noop\u0027, \u0027statsd\u0027, \u0027collector\u0027],"},{"line_number":28,"context_line":"               help\u003d\u0027Backend to use for the metrics system.\u0027),"},{"line_number":29,"context_line":"    cfg.BoolOpt(\u0027prepend_host\u0027,"},{"line_number":30,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3498dbc8_7c2a9814","line":27,"in_reply_to":"09680e41_5d9996b8","updated":"2023-01-05 18:21:33.000000000","message":"Yeah, we need to add the choices description text\n\nCurrently we render:\n\n# Backend to use for the metrics system. (string value)\n# Possible values:\n# noop - \u003cNo description provided\u003e\n# statsd - \u003cNo description provided\u003e\n#backend \u003d noop\n\nin the eaxmple\n\nnote to self:\n\n[metrics]\nbackend \u003d collector","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"65e1e780f562093355f4e36e48e83f59f8a4730b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"metrics_opts \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027backend\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027noop\u0027,"},{"line_number":27,"context_line":"               choices\u003d[\u0027noop\u0027, \u0027statsd\u0027, \u0027collector\u0027],"},{"line_number":28,"context_line":"               help\u003d\u0027Backend to use for the metrics system.\u0027),"},{"line_number":29,"context_line":"    cfg.BoolOpt(\u0027prepend_host\u0027,"},{"line_number":30,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfef723f_f406ad2f","line":27,"in_reply_to":"3498dbc8_7c2a9814","updated":"2023-01-06 16:52:59.000000000","message":"Added descriptive text.","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"}],"releasenotes/notes/add-metrics-collection-b9549ec62ce4feda.yaml":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1c9b60336b00f7236a057fc7ada9e7d74e29004f","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Adds a new metrics collection backend, ``collector``, to collect"},{"line_number":5,"context_line":"    counter and gauge metrics and adds a new metrics method"},{"line_number":6,"context_line":"    ``get_metrics_data`` to allow the dictionary structure containing"},{"line_number":7,"context_line":"    the metrics data."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3c211432_6c0d755f","line":7,"updated":"2023-01-04 20:58:36.000000000","message":"We need docs somewhere on how to configure and use this. If it\u0027s as simple as I think it is, maybe just two or three sentences here on how to enable and use it?","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"65e1e780f562093355f4e36e48e83f59f8a4730b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Adds a new metrics collection backend, ``collector``, to collect"},{"line_number":5,"context_line":"    counter and gauge metrics and adds a new metrics method"},{"line_number":6,"context_line":"    ``get_metrics_data`` to allow the dictionary structure containing"},{"line_number":7,"context_line":"    the metrics data."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9620bf74_6cc8a86f","line":7,"in_reply_to":"3c211432_6c0d755f","updated":"2023-01-06 16:52:59.000000000","message":"Revised to include how to use it and enable it.","commit_id":"6e67b6900a67356a17b548a6854971df347f15d3"}]}
