)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0a952f313a976c9a313ece4f848b7a6e77807563","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Including:"},{"line_number":13,"context_line":"  * Updating who is working on the spec"},{"line_number":14,"context_line":"  * Changing names of decorators and context managers to be more sane"},{"line_number":15,"context_line":"  * Reflect that we\u0027re no longer using an external library for metrics."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I75cca69c97f10bafbdc8cf662836fb7502db6f39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9abb7d3a_868e6925","line":14,"updated":"2016-06-03 00:53:46.000000000","message":"as well as the other methods to send_*. (No big deal though).","commit_id":"a6d627c01d04720e17fdedf43a662b82145c835a"}],"specs/approved/add-pluggable-metrics-backend-for-ironic-and-ipa.rst":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"afe4c8a828ae6e27eb95c723f49fc8a1548e2f98","unresolved":false,"context_lines":[{"line_number":69,"context_line":"      METRICS.gauge(\"one.fish\", 1)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"      # Increment counter metric by two"},{"line_number":72,"context_line":"      METRICS.counter(\"two.fish\", 2)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"      # Decrement counter metric by one"},{"line_number":75,"context_line":"      METRICS.counter(\"red.fish\", -1)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bab6814e_27ff7302","line":72,"updated":"2016-05-25 18:20:48.000000000","message":"I wonder if we should have asked for all the methods to be documented in the spec, with the parameters etc. Dunno.\n\nI assume this increments and emits? Or is there some other way to emit counter information? No worries, I\u0027ll ask when I look at the code :)","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"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":"051c3659c5bc676b684d306c6f076d05975128f8","unresolved":false,"context_lines":[{"line_number":69,"context_line":"      METRICS.gauge(\"one.fish\", 1)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"      # Increment counter metric by two"},{"line_number":72,"context_line":"      METRICS.counter(\"two.fish\", 2)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"      # Decrement counter metric by one"},{"line_number":75,"context_line":"      METRICS.counter(\"red.fish\", -1)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bab6814e_78b8b9c8","line":72,"in_reply_to":"bab6814e_27ff7302","updated":"2016-05-26 20:47:59.000000000","message":"I\u0027m not sure I understand the question?","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61f858c7a117a4bc0539595f41b75c8a37e9d4b1","unresolved":false,"context_lines":[{"line_number":69,"context_line":"      METRICS.gauge(\"one.fish\", 1)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"      # Increment counter metric by two"},{"line_number":72,"context_line":"      METRICS.counter(\"two.fish\", 2)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"      # Decrement counter metric by one"},{"line_number":75,"context_line":"      METRICS.counter(\"red.fish\", -1)"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bab6814e_beb20904","line":72,"in_reply_to":"bab6814e_78b8b9c8","updated":"2016-05-26 21:39:24.000000000","message":"The description is \u0027Increment counter metric by two\u0027. I\u0027m guessing that it increments AND emits that counter value. That\u0027s what I was mumbling about.","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"de9d64378e6f27d8adcc11aecb27af0246cc52b4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"      with METRICS.context_mgr.counter(\"func3.thing_one.count\", sample_rate\u003d0.25):"},{"line_number":95,"context_line":"        thing_one()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"      with METRICS.context_mgr.timer(\"func3.thing_two.time\"):"},{"line_number":98,"context_line":"        thing_two()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_02ba456e","line":97,"updated":"2016-05-30 12:45:45.000000000","message":"It\u0027s a bit too detailed to my test, but as it\u0027s here, I suggest making it even more simple:\n\n with METRICS.timer(\u0027...\u0027)\n @METRICS.timer(\u0027...\u0027)\n\nit\u0027s not hard to do (and some stdlib objects support it iirc): __call__ decorates a function, __enter__ creates a context manager. Will save us a lot of typing.","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"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":"98da9e857d41e1cc4ef40ab12ad27a891c4e0367","unresolved":false,"context_lines":[{"line_number":94,"context_line":"      with METRICS.context_mgr.counter(\"func3.thing_one.count\", sample_rate\u003d0.25):"},{"line_number":95,"context_line":"        thing_one()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"      with METRICS.context_mgr.timer(\"func3.thing_two.time\"):"},{"line_number":98,"context_line":"        thing_two()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_3f30f8e7","line":97,"in_reply_to":"9abb7d3a_02ba456e","updated":"2016-05-31 16:28:55.000000000","message":"This is way better than any other new idea, I didn\u0027t know it was possible.","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d36b108f92142f212f5f68d069f4c57794174b46","unresolved":false,"context_lines":[{"line_number":94,"context_line":"      with METRICS.context_mgr.counter(\"func3.thing_one.count\", sample_rate\u003d0.25):"},{"line_number":95,"context_line":"        thing_one()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"      with METRICS.context_mgr.timer(\"func3.thing_two.time\"):"},{"line_number":98,"context_line":"        thing_two()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_0f122109","line":97,"in_reply_to":"9abb7d3a_241e2c5f","updated":"2016-05-31 18:09:39.000000000","message":"METRICS.send_XX() works for me. Good idea!","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"748d14921994eddc894246c239b98ebc0ebe5775","unresolved":false,"context_lines":[{"line_number":94,"context_line":"      with METRICS.context_mgr.counter(\"func3.thing_one.count\", sample_rate\u003d0.25):"},{"line_number":95,"context_line":"        thing_one()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"      with METRICS.context_mgr.timer(\"func3.thing_two.time\"):"},{"line_number":98,"context_line":"        thing_two()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_fff79088","line":97,"in_reply_to":"9abb7d3a_3f30f8e7","updated":"2016-05-31 16:35:13.000000000","message":"Oh, I didn\u0027t think about that, totally agree!\n\nThat doesn\u0027t solve for just calling METRICS.timer() on its own, though... hm.","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"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":"2d933e26ab925c19885b2374faad56dc5c0dd9d9","unresolved":false,"context_lines":[{"line_number":94,"context_line":"      with METRICS.context_mgr.counter(\"func3.thing_one.count\", sample_rate\u003d0.25):"},{"line_number":95,"context_line":"        thing_one()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"      with METRICS.context_mgr.timer(\"func3.thing_two.time\"):"},{"line_number":98,"context_line":"        thing_two()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_241e2c5f","line":97,"in_reply_to":"9abb7d3a_dbd45f21","updated":"2016-05-31 17:42:10.000000000","message":"how about something as simple as METRICS.send_timer(\u00273.14\u0027, \u0027pi\u0027) for the raw value version?","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"799201e6826ba95045c9123092a4877b35972cef","unresolved":false,"context_lines":[{"line_number":94,"context_line":"      with METRICS.context_mgr.counter(\"func3.thing_one.count\", sample_rate\u003d0.25):"},{"line_number":95,"context_line":"        thing_one()"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"      with METRICS.context_mgr.timer(\"func3.thing_two.time\"):"},{"line_number":98,"context_line":"        thing_two()"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_dbd45f21","line":97,"in_reply_to":"9abb7d3a_fff79088","updated":"2016-05-31 16:52:15.000000000","message":"So what if we renamed that to something like METRICS.timing() or .time()? It isn\u0027t actually a timer anyway. It just emits some number as if it were timing data.\n\n@Dmitry. I didn\u0027t even know that was possible! I need to become a python expert. One day...","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"de9d64378e6f27d8adcc11aecb27af0246cc52b4","unresolved":false,"context_lines":[{"line_number":229,"context_line":"  prepend_host_reverse\u003dfalse"},{"line_number":230,"context_line":"  global_prefix\u003d\"\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"  # Backend options are \"statsd\" and \"noop\""},{"line_number":233,"context_line":"  agent_backend\u003d\"noop\""},{"line_number":234,"context_line":"  agent_statsd_host\u003d\"localhost\""},{"line_number":235,"context_line":"  agent_statsd_port\u003d8125"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9abb7d3a_62b1918f","line":232,"updated":"2016-05-30 12:45:45.000000000","message":"+1 for maybe making a clear separation what goes where","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"afe4c8a828ae6e27eb95c723f49fc8a1548e2f98","unresolved":false,"context_lines":[{"line_number":229,"context_line":"  prepend_host_reverse\u003dfalse"},{"line_number":230,"context_line":"  global_prefix\u003d\"\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"  # Backend options are \"statsd\" and \"noop\""},{"line_number":233,"context_line":"  agent_backend\u003d\"noop\""},{"line_number":234,"context_line":"  agent_statsd_host\u003d\"localhost\""},{"line_number":235,"context_line":"  agent_statsd_port\u003d8125"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bab6814e_acd18afd","line":232,"updated":"2016-05-25 18:20:48.000000000","message":"You should probably delete all these agent_* ones.","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61f858c7a117a4bc0539595f41b75c8a37e9d4b1","unresolved":false,"context_lines":[{"line_number":229,"context_line":"  prepend_host_reverse\u003dfalse"},{"line_number":230,"context_line":"  global_prefix\u003d\"\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"  # Backend options are \"statsd\" and \"noop\""},{"line_number":233,"context_line":"  agent_backend\u003d\"noop\""},{"line_number":234,"context_line":"  agent_statsd_host\u003d\"localhost\""},{"line_number":235,"context_line":"  agent_statsd_port\u003d8125"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bab6814e_1efd15b1","line":232,"in_reply_to":"bab6814e_38ac718b","updated":"2016-05-26 21:39:24.000000000","message":"UGH. This spec doesn\u0027t describe what goes in ironic-lib, and what goes in ironic.","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"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":"051c3659c5bc676b684d306c6f076d05975128f8","unresolved":false,"context_lines":[{"line_number":229,"context_line":"  prepend_host_reverse\u003dfalse"},{"line_number":230,"context_line":"  global_prefix\u003d\"\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"  # Backend options are \"statsd\" and \"noop\""},{"line_number":233,"context_line":"  agent_backend\u003d\"noop\""},{"line_number":234,"context_line":"  agent_statsd_host\u003d\"localhost\""},{"line_number":235,"context_line":"  agent_statsd_port\u003d8125"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bab6814e_38ac718b","line":232,"in_reply_to":"bab6814e_acd18afd","updated":"2016-05-26 20:47:59.000000000","message":"They will be used by the conductor when implementing the work done in ironic-lib. See: https://review.openstack.org/#/c/301919/ for prototype code.","commit_id":"61e42194ffad87d9760a464a068074b2827323eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"0765ce22cb95f042b4b8811772c533bd8964e60d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  class Foo(object):"},{"line_number":67,"context_line":"    def func1(self):"},{"line_number":68,"context_line":"      # Emit gauge metric with value 1"},{"line_number":69,"context_line":"      METRICS.send_gauge(\"one.fish\", 1)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"      # Increment counter metric by two"},{"line_number":72,"context_line":"      METRICS.send_counter(\"two.fish\", 2)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_23c6ab16","line":69,"updated":"2016-06-02 15:07:58.000000000","message":"++ for \u0027send_*\u0027","commit_id":"b411709a896c1b92e23381de6bfc1abbb0088ddf"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7b00c25dc0df24848d25e13a31785178f193bd4b","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"These options will be set in the ironic-lib metrics library, and will be used"},{"line_number":219,"context_line":"by any ironic service implementing metrics:"},{"line_number":220,"context_line":".. code::"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"  [metrics]"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_74f21d08","line":220,"updated":"2016-06-02 18:27:49.000000000","message":"This doesn\u0027t render properly. Does it need a blank line before it?","commit_id":"b411709a896c1b92e23381de6bfc1abbb0088ddf"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7b00c25dc0df24848d25e13a31785178f193bd4b","unresolved":false,"context_lines":[{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Additionally, the following options will be added to the ironic-conductor and"},{"line_number":236,"context_line":"used to configure the ironic-python-agent for metrics on lookup:"},{"line_number":237,"context_line":".. code::"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"  # Backend options are \"statsd\" and \"noop\""},{"line_number":240,"context_line":"  agent_backend\u003d\"noop\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_54f719f5","line":237,"updated":"2016-06-02 18:27:49.000000000","message":"ditto","commit_id":"b411709a896c1b92e23381de6bfc1abbb0088ddf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"0765ce22cb95f042b4b8811772c533bd8964e60d","unresolved":false,"context_lines":[{"line_number":252,"context_line":"configure statsd, as well as any other metrics software that they wish to use"},{"line_number":253,"context_line":"(such as Graphite [3]). Additionally, if deployers wish to emit metrics from"},{"line_number":254,"context_line":"ironic-python-agent as well, the statsd backend must be accessible from the"},{"line_number":255,"context_line":"provisioning network."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"Developer impact"},{"line_number":258,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_e3578324","line":255,"updated":"2016-06-02 15:07:58.000000000","message":"Nit: I\u0027d say \"networks that agents run on\", because cleaning could be a different network.","commit_id":"b411709a896c1b92e23381de6bfc1abbb0088ddf"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7b00c25dc0df24848d25e13a31785178f193bd4b","unresolved":false,"context_lines":[{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Primary assignee:"},{"line_number":270,"context_line":"  alineb"},{"line_number":271,"context_line":"  JayF"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"Other contributors:"},{"line_number":274,"context_line":"  None"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9abb7d3a_74405d08","line":271,"updated":"2016-06-02 18:27:49.000000000","message":"this renders as \u0027alineb JayF\u0027. Don\u0027t know if folks will think that is one person or not.","commit_id":"b411709a896c1b92e23381de6bfc1abbb0088ddf"}]}
