)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"5f75a2ff5e490a4e73e3054c692e5abe1ccb2bf9","unresolved":false,"context_lines":[{"line_number":11,"context_line":"2012 R2 can collect those metrics. This patch adds a disk latency"},{"line_number":12,"context_line":"metrics implementation for the Hyper-V Inspector as well as disk latency"},{"line_number":13,"context_line":"and per device latency pollsters."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I1621fc7d4226ae1f46cdfca878e8b52487ca4379"},{"line_number":16,"context_line":"Implements: blueprint hyper-v-disk-latency-metrics"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa81d914_175750cb","line":14,"updated":"2015-01-30 14:19:06.000000000","message":"Needs DocImpact","commit_id":"72f5acbcade12b4ebe54b3a0cf4c52a97b549e36"}],"ceilometer/compute/pollsters/disk.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"5f75a2ff5e490a4e73e3054c692e5abe1ccb2bf9","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                       \u0027write_requests_rate\u0027,"},{"line_number":43,"context_line":"                                       \u0027per_disk_rate\u0027])"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"DiskLatencyData \u003d collections.namedtuple(\u0027DiskRateData\u0027,"},{"line_number":46,"context_line":"                                         [\u0027disk_latency\u0027,"},{"line_number":47,"context_line":"                                          \u0027per_disk_latency\u0027])"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa81d914_d70778c8","line":45,"updated":"2015-01-30 14:19:06.000000000","message":"It is not DiskRateData, but DiskLatencyData","commit_id":"72f5acbcade12b4ebe54b3a0cf4c52a97b549e36"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"5f75a2ff5e490a4e73e3054c692e5abe1ccb2bf9","unresolved":false,"context_lines":[{"line_number":472,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":473,"context_line":"class _DiskLatencyPollsterBase(pollsters.BaseComputePollster):"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    CACHE_KEY_DISK_LATENCY \u003d \u0027disklat-rate\u0027"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def _populate_cache(self, inspector, cache, instance):"},{"line_number":478,"context_line":"        i_cache \u003d cache.setdefault(self.CACHE_KEY_DISK_LATENCY, {})"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa81d914_37eb74b1","line":475,"updated":"2015-01-30 14:19:06.000000000","message":"no rate... disk-lat or disk-latency should be fine.","commit_id":"72f5acbcade12b4ebe54b3a0cf4c52a97b549e36"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b9275efca61bfa0dc13f01418afc06b1d83c515b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                                       \u0027write_requests_rate\u0027,"},{"line_number":43,"context_line":"                                       \u0027per_disk_rate\u0027])"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"DiskLatencyData \u003d collections.namedtuple(\u0027DiskRateData\u0027,"},{"line_number":46,"context_line":"                                         [\u0027disk_latency\u0027,"},{"line_number":47,"context_line":"                                          \u0027per_disk_latency\u0027])"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_d3f9b24e","line":45,"updated":"2015-02-02 13:58:05.000000000","message":"Still should be DiskLatencyData","commit_id":"2fb3c18fa2be246f01f3dd8b85939c747ece4265"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"b9275efca61bfa0dc13f01418afc06b1d83c515b","unresolved":false,"context_lines":[{"line_number":472,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":473,"context_line":"class _DiskLatencyPollsterBase(pollsters.BaseComputePollster):"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    CACHE_KEY_DISK_LATENCY \u003d \u0027disklat-rate\u0027"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def _populate_cache(self, inspector, cache, instance):"},{"line_number":478,"context_line":"        i_cache \u003d cache.setdefault(self.CACHE_KEY_DISK_LATENCY, {})"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_b3935ef9","line":475,"updated":"2015-02-02 13:58:05.000000000","message":"no rate... disk-lat or disk-latency should be fine.","commit_id":"2fb3c18fa2be246f01f3dd8b85939c747ece4265"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"5f4f73a69b89b1d7959751df43394d1582743b76","unresolved":false,"context_lines":[{"line_number":530,"context_line":"            instance,"},{"line_number":531,"context_line":"            name\u003d\u0027disk.latency\u0027,"},{"line_number":532,"context_line":"            type\u003dsample.TYPE_GAUGE,"},{"line_number":533,"context_line":"            unit\u003d\u0027mus\u0027,"},{"line_number":534,"context_line":"            volume\u003ddisk_latency_info.disk_latency"},{"line_number":535,"context_line":"        )]"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_bc1de6bf","line":533,"updated":"2015-02-02 15:57:26.000000000","message":"I\u0027m confused by the unit specifier here.\n\nA more conventional abbreviation for milliseconds would be ms, or for microseconds would be µs.\n\nIs \u0027mus\u0027 intended as a kind of phonetic, with mu\u003d\u003dµ?\n\nIt seems there may be some potential to misread as ms?\n\nWould be clearer to convert the native representation to either millis or nanos?","commit_id":"f6589f971f9a563f20b687ebb7c2125467a16cf3"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"fa4266a9b41d4ed108974bdd7e7c45a0ba5be704","unresolved":false,"context_lines":[{"line_number":530,"context_line":"            instance,"},{"line_number":531,"context_line":"            name\u003d\u0027disk.latency\u0027,"},{"line_number":532,"context_line":"            type\u003dsample.TYPE_GAUGE,"},{"line_number":533,"context_line":"            unit\u003d\u0027mus\u0027,"},{"line_number":534,"context_line":"            volume\u003ddisk_latency_info.disk_latency"},{"line_number":535,"context_line":"        )]"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_7a860567","line":533,"in_reply_to":"da86d52c_26739dea","updated":"2015-02-02 18:28:12.000000000","message":"1/1000ms seems to be the easiest to understand.","commit_id":"f6589f971f9a563f20b687ebb7c2125467a16cf3"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"f5840f87dfc3ed04c71062ecc27bb9e27e3140ae","unresolved":false,"context_lines":[{"line_number":530,"context_line":"            instance,"},{"line_number":531,"context_line":"            name\u003d\u0027disk.latency\u0027,"},{"line_number":532,"context_line":"            type\u003dsample.TYPE_GAUGE,"},{"line_number":533,"context_line":"            unit\u003d\u0027mus\u0027,"},{"line_number":534,"context_line":"            volume\u003ddisk_latency_info.disk_latency"},{"line_number":535,"context_line":"        )]"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_7108f091","line":533,"in_reply_to":"da86d52c_26739dea","updated":"2015-02-02 17:46:37.000000000","message":"Yes, you could take the reported value from the hypervisor and either:\n\n* divide it by 1000 and use \u0027ms\u0027 as the sample unit, or\n* multiply it by 1000 and use \u0027ns\u0027 as the sample unit","commit_id":"f6589f971f9a563f20b687ebb7c2125467a16cf3"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"b781af58f94f781fb158b89f8b3f96181047162e","unresolved":false,"context_lines":[{"line_number":530,"context_line":"            instance,"},{"line_number":531,"context_line":"            name\u003d\u0027disk.latency\u0027,"},{"line_number":532,"context_line":"            type\u003dsample.TYPE_GAUGE,"},{"line_number":533,"context_line":"            unit\u003d\u0027mus\u0027,"},{"line_number":534,"context_line":"            volume\u003ddisk_latency_info.disk_latency"},{"line_number":535,"context_line":"        )]"},{"line_number":536,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_26739dea","line":533,"in_reply_to":"da86d52c_bc1de6bf","updated":"2015-02-02 17:19:09.000000000","message":"Yes, it\u0027s meant to be \u0027µ\u0027. From a previous comment on this patch I understood that \"mu\" as the phonetic representation for \u0027µ\u0027 would be ok. I could replace this with 1/1000 ms. Would you say that would make things clearer?","commit_id":"f6589f971f9a563f20b687ebb7c2125467a16cf3"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"514475c6218517ec9100af1686bc0c71119ddbe2","unresolved":false,"context_lines":[{"line_number":525,"context_line":""},{"line_number":526,"context_line":"class DiskLatencyPollster(_DiskLatencyPollsterBase):"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    def _get_samples(self, instance, disk_latency_info):"},{"line_number":529,"context_line":"        return [util.make_sample_from_instance("},{"line_number":530,"context_line":"            instance,"},{"line_number":531,"context_line":"            name\u003d\u0027disk.latency\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_cd4f1ebd","line":528,"updated":"2015-02-03 10:27:26.000000000","message":"@staticmethod","commit_id":"ef6f21ada72973d00f36f23e7ff30996f60e6094"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"514475c6218517ec9100af1686bc0c71119ddbe2","unresolved":false,"context_lines":[{"line_number":537,"context_line":""},{"line_number":538,"context_line":"class PerDeviceDiskLatencyPollster(_DiskLatencyPollsterBase):"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    def _get_samples(self, instance, disk_latency_info):"},{"line_number":541,"context_line":"        samples \u003d []"},{"line_number":542,"context_line":"        for disk, value in six.iteritems(disk_latency_info.per_disk_latency["},{"line_number":543,"context_line":"                \u0027disk_latency\u0027]):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_0d4a16ac","line":540,"updated":"2015-02-03 10:27:26.000000000","message":"@staticmethod","commit_id":"ef6f21ada72973d00f36f23e7ff30996f60e6094"}],"ceilometer/compute/virt/hyperv/utilsv2.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"5f75a2ff5e490a4e73e3054c692e5abe1ccb2bf9","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            yield {"},{"line_number":158,"context_line":"                \u0027disk_latency\u0027: metric_values[0],"},{"line_number":159,"context_line":"                \u0027instance_id\u0027: disk.InstanceID,"},{"line_number":160,"context_line":"                \u0027host_resource\u0027: host_resource"},{"line_number":161,"context_line":"            }"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa81d914_f751dc36","line":160,"updated":"2015-01-30 14:19:06.000000000","message":"host_resource isn\u0027t used in the Inspector, so there is no reason to return it.\n\nI know the other methods return it as well, but they aren\u0027t used either. I guess some cleanup would be necessary.","commit_id":"72f5acbcade12b4ebe54b3a0cf4c52a97b549e36"}],"ceilometer/tests/compute/pollsters/test_diskio.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"5f75a2ff5e490a4e73e3054c692e5abe1ccb2bf9","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        cache \u003d {}"},{"line_number":297,"context_line":"        samples \u003d list(pollster.get_samples(mgr, cache, self.instance))"},{"line_number":298,"context_line":"        self.assertIsNotEmpty(samples)"},{"line_number":299,"context_line":"        self.assertIsNotNone(samples)"},{"line_number":300,"context_line":"        self.assertIn(pollster.CACHE_KEY_DISK_LATENCY, cache)"},{"line_number":301,"context_line":"        for instance in self.instance:"},{"line_number":302,"context_line":"            self.assertIn(instance.id, cache[pollster.CACHE_KEY_DISK_LATENCY])"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa81d914_a2e56039","line":299,"updated":"2015-01-30 14:19:06.000000000","message":"I think those aserts should be reversed. First you check if  it is not None, then if it isn\u0027t empty.","commit_id":"72f5acbcade12b4ebe54b3a0cf4c52a97b549e36"}],"ceilometer/tests/compute/virt/hyperv/test_utilsv2.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"5f75a2ff5e490a4e73e3054c692e5abe1ccb2bf9","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        disk_metrics \u003d list(self._utils.get_disk_latency_metrics(fake_vm_name))"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        self.assertEqual(1, len(disk_metrics))"},{"line_number":173,"context_line":"        self.assertEqual(fake_latency, disk_metrics[0][\u0027disk_latency\u0027])"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def test_get_metric_value_instances(self):"},{"line_number":176,"context_line":"        mock_el1 \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa81d914_62fb68c1","line":173,"updated":"2015-01-30 14:19:06.000000000","message":"can you also add the assert for instance_id?","commit_id":"72f5acbcade12b4ebe54b3a0cf4c52a97b549e36"}],"doc/source/measurements.rst":[{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"309e7386466fc5a579caa1354472136b6cff6fb6","unresolved":false,"context_lines":[{"line_number":83,"context_line":"disk.read.bytes.rate             g      B/s        inst ID   p         1, 2, 3, 4     Average rate of reads"},{"line_number":84,"context_line":"disk.write.bytes                 c      B          inst ID   p         1, 2           Volume of writes"},{"line_number":85,"context_line":"disk.write.bytes.rate            g      B/s        inst ID   p         1, 2, 3, 4     Average volume of writes"},{"line_number":86,"context_line":"disk.latency                     g      us         inst ID   p         2              Average disk latency"},{"line_number":87,"context_line":"disk.device.read.requests        c      request    disk ID   p         1, 2           Number of read requests"},{"line_number":88,"context_line":"disk.device.read.requests.rate   g      request/s  disk ID   p         1, 2, 3        Average rate of read requests"},{"line_number":89,"context_line":"disk.device.write.requests       c      request    disk ID   p         1, 2           Number of write requests"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa81d914_450e6be6","line":86,"updated":"2015-01-30 16:13:31.000000000","message":"Did you want to express this as the microseconds using the greek \"mu\" character? Either makes sure that this is represented correctly or change it with 1/1000 ms","commit_id":"1c505620ac17d7b0f71b28e8b26622c3cdca80ef"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"309e7386466fc5a579caa1354472136b6cff6fb6","unresolved":false,"context_lines":[{"line_number":92,"context_line":"disk.device.read.bytes.rate      g      B/s        disk ID   p         1, 2, 3        Average rate of reads"},{"line_number":93,"context_line":"disk.device.write.bytes          c      B          disk ID   p         1, 2           Volume of writes"},{"line_number":94,"context_line":"disk.device.write.bytes.rate     g      B/s        disk ID   p         1, 2, 3        Average volume of writes"},{"line_number":95,"context_line":"disk.device.latency              g      us         disk ID   p         2              Average disk latency per device"},{"line_number":96,"context_line":"disk.root.size                   g      GB         inst ID   n         1, 2           Size of root disk"},{"line_number":97,"context_line":"disk.ephemeral.size              g      GB         inst ID   n         1, 2           Size of ephemeral disk"},{"line_number":98,"context_line":"network.incoming.bytes           c      B          iface ID  p         1, 2           Number of incoming bytes"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa81d914_85fb03c0","line":95,"updated":"2015-01-30 16:13:31.000000000","message":"Same as above","commit_id":"1c505620ac17d7b0f71b28e8b26622c3cdca80ef"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"01a0be407f35ae597b3ded76e8a056fb0fea1f2b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"disk.read.bytes.rate             g      B/s        inst ID   p         1, 2, 3, 4     Average rate of reads"},{"line_number":84,"context_line":"disk.write.bytes                 c      B          inst ID   p         1, 2           Volume of writes"},{"line_number":85,"context_line":"disk.write.bytes.rate            g      B/s        inst ID   p         1, 2, 3, 4     Average volume of writes"},{"line_number":86,"context_line":"disk.latency                     g      ms         inst ID   p         2              Average disk latency"},{"line_number":87,"context_line":"disk.device.read.requests        c      request    disk ID   p         1, 2           Number of read requests"},{"line_number":88,"context_line":"disk.device.read.requests.rate   g      request/s  disk ID   p         1, 2, 3        Average rate of read requests"},{"line_number":89,"context_line":"disk.device.write.requests       c      request    disk ID   p         1, 2           Number of write requests"}],"source_content_type":"text/x-rst","patch_set":8,"id":"da86d52c_e2f23e99","line":86,"updated":"2015-02-03 01:20:55.000000000","message":"if this is express is microseconds you cannot use the millisecond unit of measure. Please change in 1/1000 ms","commit_id":"ef6f21ada72973d00f36f23e7ff30996f60e6094"},{"author":{"_account_id":12604,"name":"Adelina Tuvenie","email":"atuvenie@cloudbasesolutions.com","username":"atuvenie"},"change_message_id":"192860d0b87194698ca1c4796110343878bf2b9b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"disk.read.bytes.rate             g      B/s        inst ID   p         1, 2, 3, 4     Average rate of reads"},{"line_number":84,"context_line":"disk.write.bytes                 c      B          inst ID   p         1, 2           Volume of writes"},{"line_number":85,"context_line":"disk.write.bytes.rate            g      B/s        inst ID   p         1, 2, 3, 4     Average volume of writes"},{"line_number":86,"context_line":"disk.latency                     g      ms         inst ID   p         2              Average disk latency"},{"line_number":87,"context_line":"disk.device.read.requests        c      request    disk ID   p         1, 2           Number of read requests"},{"line_number":88,"context_line":"disk.device.read.requests.rate   g      request/s  disk ID   p         1, 2, 3        Average rate of read requests"},{"line_number":89,"context_line":"disk.device.write.requests       c      request    disk ID   p         1, 2           Number of write requests"}],"source_content_type":"text/x-rst","patch_set":8,"id":"da86d52c_e2e5dea8","line":86,"in_reply_to":"da86d52c_e2f23e99","updated":"2015-02-03 01:27:53.000000000","message":"The value reported by the hypervisor is in microseconds. I divided that value by 1000 in the pollster.","commit_id":"ef6f21ada72973d00f36f23e7ff30996f60e6094"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"01a0be407f35ae597b3ded76e8a056fb0fea1f2b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"disk.device.read.bytes.rate      g      B/s        disk ID   p         1, 2, 3        Average rate of reads"},{"line_number":93,"context_line":"disk.device.write.bytes          c      B          disk ID   p         1, 2           Volume of writes"},{"line_number":94,"context_line":"disk.device.write.bytes.rate     g      B/s        disk ID   p         1, 2, 3        Average volume of writes"},{"line_number":95,"context_line":"disk.device.latency              g      ms         disk ID   p         2              Average disk latency per device"},{"line_number":96,"context_line":"disk.root.size                   g      GB         inst ID   n         1, 2           Size of root disk"},{"line_number":97,"context_line":"disk.ephemeral.size              g      GB         inst ID   n         1, 2           Size of ephemeral disk"},{"line_number":98,"context_line":"network.incoming.bytes           c      B          iface ID  p         1, 2           Number of incoming bytes"}],"source_content_type":"text/x-rst","patch_set":8,"id":"da86d52c_02ee72b4","line":95,"updated":"2015-02-03 01:20:55.000000000","message":"as above","commit_id":"ef6f21ada72973d00f36f23e7ff30996f60e6094"}]}
