)]}'
{"README.md":[{"author":{"_account_id":12443,"name":"David Schroeder","email":"openstack@a7n.net","username":"dschroeder"},"change_message_id":"ed5623f09defe59096c24fb3cfed3c4dfe11c7b4","unresolved":false,"context_lines":[{"line_number":426,"context_line":"* metric: The name of the metric"},{"line_number":427,"context_line":"* value: The value for the metric (defaults to 1 on increment, -1 on decrement)"},{"line_number":428,"context_line":"* dimensions: (optional) A list of dimensions (name:value pairs) to associate with this metric"},{"line_number":429,"context_line":"* hostname: (optional) A hostname to associate with this metric. Defaults to the current host"},{"line_number":430,"context_line":"* device_name: (optional) A device name to associate with this metric"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"These methods may be called from anywhere within your check logic. At the end of your check function, all metrics that were submitted will be collected and flushed out with the other Agent metrics."}],"source_content_type":"text/x-gfm","patch_set":2,"id":"9aa7fdbe_6f4a9bc6","line":429,"updated":"2014-10-22 23:11:34.000000000","message":"Should \"device_name\" be changed to \"device\"?","commit_id":"12d6ef5c89951379a808e860a66ffdb40e8844b0"},{"author":{"_account_id":12108,"name":"Gary Hessler","email":"gary.hessler@hp.com","username":"garyh"},"change_message_id":"427be2cda05da5046be45ce5e51f01146db8ee29","unresolved":false,"context_lines":[{"line_number":426,"context_line":"* metric: The name of the metric"},{"line_number":427,"context_line":"* value: The value for the metric (defaults to 1 on increment, -1 on decrement)"},{"line_number":428,"context_line":"* dimensions: (optional) A list of dimensions (name:value pairs) to associate with this metric"},{"line_number":429,"context_line":"* hostname: (optional) A hostname to associate with this metric. Defaults to the current host"},{"line_number":430,"context_line":"* device_name: (optional) A device name to associate with this metric"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"These methods may be called from anywhere within your check logic. At the end of your check function, all metrics that were submitted will be collected and flushed out with the other Agent metrics."}],"source_content_type":"text/x-gfm","patch_set":2,"id":"9aa7fdbe_816061d0","line":429,"in_reply_to":"9aa7fdbe_6f4a9bc6","updated":"2014-10-23 15:30:59.000000000","message":"Done","commit_id":"12d6ef5c89951379a808e860a66ffdb40e8844b0"}],"monagent/collector/checks/check.py":[{"author":{"_account_id":12443,"name":"David Schroeder","email":"openstack@a7n.net","username":"dschroeder"},"change_message_id":"ed5623f09defe59096c24fb3cfed3c4dfe11c7b4","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"\"\"(Abstract) class for all checks with the ability to:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    * store 1 (and only 1) sample for dimenss per metric/tag combination"},{"line_number":41,"context_line":"    * compute rates for counters"},{"line_number":42,"context_line":"    * only log error messages once (instead of each time they occur)"},{"line_number":43,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_cf08e793","line":40,"updated":"2014-10-22 23:11:34.000000000","message":"dimenss?","commit_id":"12d6ef5c89951379a808e860a66ffdb40e8844b0"},{"author":{"_account_id":12108,"name":"Gary Hessler","email":"gary.hessler@hp.com","username":"garyh"},"change_message_id":"427be2cda05da5046be45ce5e51f01146db8ee29","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"\"\"(Abstract) class for all checks with the ability to:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    * store 1 (and only 1) sample for dimenss per metric/tag combination"},{"line_number":41,"context_line":"    * compute rates for counters"},{"line_number":42,"context_line":"    * only log error messages once (instead of each time they occur)"},{"line_number":43,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_c1eb4911","line":40,"in_reply_to":"9aa7fdbe_cf08e793","updated":"2014-10-23 15:30:59.000000000","message":"Looks like I had started typing in the wrong window.  Changing back to the original comment.","commit_id":"12d6ef5c89951379a808e860a66ffdb40e8844b0"},{"author":{"_account_id":12443,"name":"David Schroeder","email":"openstack@a7n.net","username":"dschroeder"},"change_message_id":"ed5623f09defe59096c24fb3cfed3c4dfe11c7b4","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                    if dimensions_list:"},{"line_number":272,"context_line":"                        attributes[\u0027dimensions\u0027] \u003d dimensions"},{"line_number":273,"context_line":"                    if hostname:"},{"line_number":274,"context_line":"                        attributes[\u0027host_name\u0027] \u003d hostname"},{"line_number":275,"context_line":"                    if device_name:"},{"line_number":276,"context_line":"                        attributes[\u0027device\u0027] \u003d device_name"},{"line_number":277,"context_line":"                    metrics.append((m, int(ts), val, attributes))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_2f4093a4","line":274,"updated":"2014-10-22 23:11:34.000000000","message":"Should we use \"hostname\" here instead of \"host_name\"?","commit_id":"12d6ef5c89951379a808e860a66ffdb40e8844b0"},{"author":{"_account_id":12108,"name":"Gary Hessler","email":"gary.hessler@hp.com","username":"garyh"},"change_message_id":"427be2cda05da5046be45ce5e51f01146db8ee29","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                    if dimensions_list:"},{"line_number":272,"context_line":"                        attributes[\u0027dimensions\u0027] \u003d dimensions"},{"line_number":273,"context_line":"                    if hostname:"},{"line_number":274,"context_line":"                        attributes[\u0027host_name\u0027] \u003d hostname"},{"line_number":275,"context_line":"                    if device_name:"},{"line_number":276,"context_line":"                        attributes[\u0027device\u0027] \u003d device_name"},{"line_number":277,"context_line":"                    metrics.append((m, int(ts), val, attributes))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_015711cb","line":274,"in_reply_to":"9aa7fdbe_2f4093a4","updated":"2014-10-23 15:30:59.000000000","message":"Done","commit_id":"12d6ef5c89951379a808e860a66ffdb40e8844b0"},{"author":{"_account_id":12443,"name":"David Schroeder","email":"openstack@a7n.net","username":"dschroeder"},"change_message_id":"723d97bc9d886d3c91cbc7ab9a4f52da4e53cadf","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"\"\"(Abstract) class for all checks with the ability to:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    * store 1 (and only 1) sample for guages per metric/tag combination"},{"line_number":41,"context_line":"    * compute rates for counters"},{"line_number":42,"context_line":"    * only log error messages once (instead of each time they occur)"},{"line_number":43,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa7fdbe_87ae9596","line":40,"updated":"2014-10-24 15:14:21.000000000","message":"Dare I complain about a couple transposed letters?  Hrm, I guess so.","commit_id":"c4b32aebf91ffee7ae429e1b12f93d0d468ed8b5"},{"author":{"_account_id":12512,"name":"Deklan Dieterly","email":"deklan.dieterly@hpe.com","username":"deklan"},"change_message_id":"97a1d6e830e80c874d9bdda5a92984d786af368e","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                new_dimensions[\u0027component\u0027] \u003d \u0027monasca-agent\u0027"},{"line_number":167,"context_line":"            if \u0027service\u0027 not in dimensions:"},{"line_number":168,"context_line":"                new_dimensions[\u0027service\u0027] \u003d \u0027monitoring\u0027"},{"line_number":169,"context_line":"        return new_dimensions"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    @classmethod"},{"line_number":172,"context_line":"    def _rate(cls, sample1, sample2):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a8c0949_af7111e2","line":169,"updated":"2014-11-03 17:39:06.000000000","message":"I\u0027d prefer this idiom all over the code where merging dicts is done.\n\nreturn dict({\u0027component\u0027: \u0027monasca-agent\u0027, \u0027service\u0027: \u0027monitoring\u0027}, **dimensions)\n\nor\n\nreturn {\u0027component\u0027: \u0027monasca-agent\u0027, \u0027service\u0027: \u0027monitoring\u0027}.upate(dimensions)\n\n(not sure if this is exactly correct, but that is the idea)","commit_id":"46d0a9684dbbd588d6b76047df13ac5f49b5db77"},{"author":{"_account_id":12108,"name":"Gary Hessler","email":"gary.hessler@hp.com","username":"garyh"},"change_message_id":"5ae172964a461135eadcbb421b1289044edbbf3f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                new_dimensions[\u0027component\u0027] \u003d \u0027monasca-agent\u0027"},{"line_number":167,"context_line":"            if \u0027service\u0027 not in dimensions:"},{"line_number":168,"context_line":"                new_dimensions[\u0027service\u0027] \u003d \u0027monitoring\u0027"},{"line_number":169,"context_line":"        return new_dimensions"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    @classmethod"},{"line_number":172,"context_line":"    def _rate(cls, sample1, sample2):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a8c0949_e08966cb","line":169,"in_reply_to":"7a8c0949_af7111e2","updated":"2014-11-04 15:58:23.000000000","message":"From your Stack Overflow reference:\nYour first example will fail (producing a TypeError) in Python 3.2 or greater, and in current versions of Jython, PyPy and IronPython: for those versions of Python, when passing a dict with the ** notation, all the keys of that dict should be strings.\nIn this case we are using strings, so it would probably work.  Also, we are not using Python 3 yet but probably will at some point.\nThe .update() seems to be the more universal way to do this.  I will update the code to use .update() style.","commit_id":"46d0a9684dbbd588d6b76047df13ac5f49b5db77"}],"monagent/collector/checks_d/process.py":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"9b756a7fd6e91e5e525f11a469a903145cdfb37f","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                if extended_metrics_0_5_0_unix:"},{"line_number":132,"context_line":"                    try:"},{"line_number":133,"context_line":"                        open_file_descriptors +\u003d p.get_num_fds()"},{"line_number":134,"context_line":"                        open_file_descriptors_perc \u003d float((open_file_descriptors / p.rlimit(psutil.RLIMIT_NOFILE)) * 100)"},{"line_number":135,"context_line":"                    except psutil.AccessDenied:"},{"line_number":136,"context_line":"                        got_denied \u003d True"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_012ba330","line":134,"updated":"2014-10-23 01:27:05.000000000","message":"Just wondering if psutil.RLIMIT_NOFILE could \u003d 0 resulting in a divide by zero which results in an exception in Python.","commit_id":"12d6ef5c89951379a808e860a66ffdb40e8844b0"},{"author":{"_account_id":12108,"name":"Gary Hessler","email":"gary.hessler@hp.com","username":"garyh"},"change_message_id":"427be2cda05da5046be45ce5e51f01146db8ee29","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                if extended_metrics_0_5_0_unix:"},{"line_number":132,"context_line":"                    try:"},{"line_number":133,"context_line":"                        open_file_descriptors +\u003d p.get_num_fds()"},{"line_number":134,"context_line":"                        open_file_descriptors_perc \u003d float((open_file_descriptors / p.rlimit(psutil.RLIMIT_NOFILE)) * 100)"},{"line_number":135,"context_line":"                    except psutil.AccessDenied:"},{"line_number":136,"context_line":"                        got_denied \u003d True"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_212a552c","line":134,"in_reply_to":"9aa7fdbe_012ba330","updated":"2014-10-23 15:30:59.000000000","message":"It doesn\u0027t make sense that it would be 0 but I will add a check for that case.","commit_id":"12d6ef5c89951379a808e860a66ffdb40e8844b0"}]}
