)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12542,"name":"Johannes Grassler","email":"jgr-launchpad@btw23.de","username":"jgrassler"},"change_message_id":"2f5d5a067fc5b45f57a8e6a4264a3191fa411c35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5f7c97a3_f5750f34","updated":"2018-07-30 12:04:32.000000000","message":"That is one hell of a fine commit message :-)\n\nIt\u0027d be a shame if nobody ever read all that information, though - which is likely if it\u0027s only in the commit message.\n\nCould you add a \"Swift Handoffs\" subsection under \"Swift Checks\" in `docs/Plugins.md` and paste this information in there? Thanks!","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"21c67f3f59b1e1002cbb41a90afe44adafb998e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3f79a3b5_bc75cc9a","in_reply_to":"5f7c97a3_f5750f34","updated":"2018-08-06 13:57:55.000000000","message":"The important part which should land in docs includes list of metrics and dimensions, and configuration options.","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"}],"docs/Plugins.md":[{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"c9c6cd9240acb97a3ae5c9850d86da7b8da1e565","unresolved":false,"context_lines":[{"line_number":2684,"context_line":""},{"line_number":2685,"context_line":"| Metric Name | Dimensions | Semantics |"},{"line_number":2686,"context_line":"| ----------- | ---------- | --------- |"},{"line_number":2687,"context_line":"| swift.partitions.primary_count | service\u003dswift, ring\u003d\u003cringname\u003e, device\u003d\u003cdevice\u003e | The number of partitions of a given ring on the server (or device) |"},{"line_number":2688,"context_line":"| swift.partitions.handoff_count | service\u003dswift, ring\u003d\u003cringname\u003e, device\u003d\u003cdevice\u003e | The number of handoff partitions of a given ring on the server (or device), partitions that should live elsewhere |"},{"line_number":2689,"context_line":""},{"line_number":2690,"context_line":"## TCP Check"}],"source_content_type":"text/x-markdown","patch_set":4,"id":"5fc1f717_a429eff2","line":2687,"range":{"start_line":2687,"start_character":54,"end_line":2687,"end_character":65},"updated":"2019-04-03 11:45:04.000000000","message":"Please remove as it\u0027s not rendered correctly. The value is intuitive anyway.","commit_id":"b58eaa9f83571e2379e906c7c40e7434a2242d72"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"c9c6cd9240acb97a3ae5c9850d86da7b8da1e565","unresolved":false,"context_lines":[{"line_number":2684,"context_line":""},{"line_number":2685,"context_line":"| Metric Name | Dimensions | Semantics |"},{"line_number":2686,"context_line":"| ----------- | ---------- | --------- |"},{"line_number":2687,"context_line":"| swift.partitions.primary_count | service\u003dswift, ring\u003d\u003cringname\u003e, device\u003d\u003cdevice\u003e | The number of partitions of a given ring on the server (or device) |"},{"line_number":2688,"context_line":"| swift.partitions.handoff_count | service\u003dswift, ring\u003d\u003cringname\u003e, device\u003d\u003cdevice\u003e | The number of handoff partitions of a given ring on the server (or device), partitions that should live elsewhere |"},{"line_number":2689,"context_line":""},{"line_number":2690,"context_line":"## TCP Check"}],"source_content_type":"text/x-markdown","patch_set":4,"id":"5fc1f717_243dff2b","line":2687,"range":{"start_line":2687,"start_character":73,"end_line":2687,"end_character":82},"updated":"2019-04-03 11:45:04.000000000","message":"The same here.","commit_id":"b58eaa9f83571e2379e906c7c40e7434a2242d72"}],"monasca_agent/collector/checks_d/swift_handoffs.py":[{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"21c67f3f59b1e1002cbb41a90afe44adafb998e4","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"try:"},{"line_number":18,"context_line":"    from swift.common.ring import Ring"},{"line_number":19,"context_line":"    swift_loaded \u003d True"},{"line_number":20,"context_line":"except ImportError:"},{"line_number":21,"context_line":"    Ring \u003d StubRing"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_069271f7","line":18,"range":{"start_line":18,"start_character":9,"end_line":18,"end_character":14},"updated":"2018-08-06 13:57:55.000000000","message":"You might want to add the dependency to extras section.\n\nhttps://git.openstack.org/cgit/openstack/monasca-agent/tree/setup.cfg#n46","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"83c940cf66595d89dd1fe7a12a89442ee98ad5be","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"try:"},{"line_number":18,"context_line":"    from swift.common.ring import Ring"},{"line_number":19,"context_line":"    swift_loaded \u003d True"},{"line_number":20,"context_line":"except ImportError:"},{"line_number":21,"context_line":"    Ring \u003d StubRing"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_b1b7003b","line":18,"range":{"start_line":18,"start_character":9,"end_line":18,"end_character":14},"in_reply_to":"3f79a3b5_069271f7","updated":"2018-08-21 00:43:57.000000000","message":"Done","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"21c67f3f59b1e1002cbb41a90afe44adafb998e4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                else:"},{"line_number":99,"context_line":"                    handoffs[device_dir].add(part)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        dimensions \u003d {\u0027ring\u0027: ring_name}"},{"line_number":102,"context_line":"        dimensions \u003d self._set_dimensions(dimensions, instance)"},{"line_number":103,"context_line":"        if granularity \u003d\u003d \u0027server\u0027:"},{"line_number":104,"context_line":"            self.gauge(\u0027swift_handoffs.primary\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4197f391","line":101,"updated":"2018-08-06 13:57:55.000000000","message":"Please add {u\u0027service\u0027: u\u0027swift\u0027}","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"83c940cf66595d89dd1fe7a12a89442ee98ad5be","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                else:"},{"line_number":99,"context_line":"                    handoffs[device_dir].add(part)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        dimensions \u003d {\u0027ring\u0027: ring_name}"},{"line_number":102,"context_line":"        dimensions \u003d self._set_dimensions(dimensions, instance)"},{"line_number":103,"context_line":"        if granularity \u003d\u003d \u0027server\u0027:"},{"line_number":104,"context_line":"            self.gauge(\u0027swift_handoffs.primary\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0e8335ab","line":101,"in_reply_to":"3f79a3b5_4197f391","updated":"2018-08-21 00:43:57.000000000","message":"Done","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"21c67f3f59b1e1002cbb41a90afe44adafb998e4","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        dimensions \u003d {\u0027ring\u0027: ring_name}"},{"line_number":102,"context_line":"        dimensions \u003d self._set_dimensions(dimensions, instance)"},{"line_number":103,"context_line":"        if granularity \u003d\u003d \u0027server\u0027:"},{"line_number":104,"context_line":"            self.gauge(\u0027swift_handoffs.primary\u0027,"},{"line_number":105,"context_line":"                       sum(primary_count.values()), dimensions.copy())"},{"line_number":106,"context_line":"            self.gauge(\u0027swift_handoffs.handoffs\u0027,"},{"line_number":107,"context_line":"                       sum(map(len, handoffs.values())), dimensions)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4127f313","line":104,"range":{"start_line":104,"start_character":24,"end_line":104,"end_character":46},"updated":"2018-08-06 13:57:55.000000000","message":"The first part of the metric name should correspond to the monitored service. The name should also indicate the nature of the metric, which is \u0027count\u0027 in that case. Please compare e.g. Ceph plugin [1]\n\nFor these reasons, I would suggest the name: u\u0027swift.partitions.primary_count\u0027\n\n[1] https://github.com/openstack/monasca-agent/blob/master/docs/Plugins.md#ceph","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"83c940cf66595d89dd1fe7a12a89442ee98ad5be","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        dimensions \u003d {\u0027ring\u0027: ring_name}"},{"line_number":102,"context_line":"        dimensions \u003d self._set_dimensions(dimensions, instance)"},{"line_number":103,"context_line":"        if granularity \u003d\u003d \u0027server\u0027:"},{"line_number":104,"context_line":"            self.gauge(\u0027swift_handoffs.primary\u0027,"},{"line_number":105,"context_line":"                       sum(primary_count.values()), dimensions.copy())"},{"line_number":106,"context_line":"            self.gauge(\u0027swift_handoffs.handoffs\u0027,"},{"line_number":107,"context_line":"                       sum(map(len, handoffs.values())), dimensions)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ee5ef943","line":104,"range":{"start_line":104,"start_character":24,"end_line":104,"end_character":46},"in_reply_to":"3f79a3b5_4127f313","updated":"2018-08-21 00:43:57.000000000","message":"Done","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"21c67f3f59b1e1002cbb41a90afe44adafb998e4","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dimensions \u003d self._set_dimensions(dimensions, instance)"},{"line_number":103,"context_line":"        if granularity \u003d\u003d \u0027server\u0027:"},{"line_number":104,"context_line":"            self.gauge(\u0027swift_handoffs.primary\u0027,"},{"line_number":105,"context_line":"                       sum(primary_count.values()), dimensions.copy())"},{"line_number":106,"context_line":"            self.gauge(\u0027swift_handoffs.handoffs\u0027,"},{"line_number":107,"context_line":"                       sum(map(len, handoffs.values())), dimensions)"},{"line_number":108,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c1e8e317","line":105,"range":{"start_line":105,"start_character":62,"end_line":105,"end_character":69},"updated":"2018-08-06 13:57:55.000000000","message":"Do you need to copy here?","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"83c940cf66595d89dd1fe7a12a89442ee98ad5be","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        dimensions \u003d self._set_dimensions(dimensions, instance)"},{"line_number":103,"context_line":"        if granularity \u003d\u003d \u0027server\u0027:"},{"line_number":104,"context_line":"            self.gauge(\u0027swift_handoffs.primary\u0027,"},{"line_number":105,"context_line":"                       sum(primary_count.values()), dimensions.copy())"},{"line_number":106,"context_line":"            self.gauge(\u0027swift_handoffs.handoffs\u0027,"},{"line_number":107,"context_line":"                       sum(map(len, handoffs.values())), dimensions)"},{"line_number":108,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2e139168","line":105,"range":{"start_line":105,"start_character":62,"end_line":105,"end_character":69},"in_reply_to":"3f79a3b5_c1e8e317","updated":"2018-08-21 00:43:57.000000000","message":"I wasn\u0027t sure if the monasca agent did anything the mutable dict and was using it twice. I probably should just have checked. Was just being defensive. This was a monasca learning excersize for me. I\u0027ll just remove it.","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"21c67f3f59b1e1002cbb41a90afe44adafb998e4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        if granularity \u003d\u003d \u0027server\u0027:"},{"line_number":104,"context_line":"            self.gauge(\u0027swift_handoffs.primary\u0027,"},{"line_number":105,"context_line":"                       sum(primary_count.values()), dimensions.copy())"},{"line_number":106,"context_line":"            self.gauge(\u0027swift_handoffs.handoffs\u0027,"},{"line_number":107,"context_line":"                       sum(map(len, handoffs.values())), dimensions)"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            for device in device_dirs:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4124d3c6","line":106,"range":{"start_line":106,"start_character":24,"end_line":106,"end_character":47},"updated":"2018-08-06 13:57:55.000000000","message":"What about u\u0027swift.partitions.handoff_count\u0027?","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"83c940cf66595d89dd1fe7a12a89442ee98ad5be","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        if granularity \u003d\u003d \u0027server\u0027:"},{"line_number":104,"context_line":"            self.gauge(\u0027swift_handoffs.primary\u0027,"},{"line_number":105,"context_line":"                       sum(primary_count.values()), dimensions.copy())"},{"line_number":106,"context_line":"            self.gauge(\u0027swift_handoffs.handoffs\u0027,"},{"line_number":107,"context_line":"                       sum(map(len, handoffs.values())), dimensions)"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            for device in device_dirs:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0e5a554f","line":106,"range":{"start_line":106,"start_character":24,"end_line":106,"end_character":47},"in_reply_to":"3f79a3b5_4124d3c6","updated":"2018-08-21 00:43:57.000000000","message":"Done","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"83c940cf66595d89dd1fe7a12a89442ee98ad5be","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                       sum(map(len, handoffs.values())), dimensions)"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            for device in device_dirs:"},{"line_number":110,"context_line":"                tmp_dimensions \u003d dimensions.copy()"},{"line_number":111,"context_line":"                tmp_dimensions[\u0027device\u0027] \u003d device"},{"line_number":112,"context_line":"                self.gauge(\u0027swift_handoffs.primary\u0027,"},{"line_number":113,"context_line":"                           primary_count[device], tmp_dimensions)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_b134e0df","line":110,"updated":"2018-08-21 00:43:57.000000000","message":"I made a copy here because I would be changing one of the dimensions and then sending the gauge. If I remove the above, I\u0027ll assume it\u0027s safe to not worry about the copy and tmp here too.","commit_id":"b2402056975a039f42aab4611fffc4709857d3cb"}]}
