)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"37029b572aa180e20d4f7b583a615968cb12dc2d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix MetricWeigher to use MonitorMetricList"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The commit e7dab9975bcbe3bb40cb9723b0deaed985b904c changes"},{"line_number":10,"context_line":"\u0027HostState.metrics\u0027 to \u0027objects.MonitorMetricList\u0027. But MetricWeigher"},{"line_number":11,"context_line":"still use the old dictionary of \u0027host_manager.MetricItem\u0027. This patch"},{"line_number":12,"context_line":"corrects the behavior of MetricWeigher with related tests, and delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba15a1d1_994b822b","line":9,"updated":"2015-09-22 11:35:22.000000000","message":"Would have been far better if you rather mentioned the changeID because it would create an hook, ie. I4dfbea27ce6c3eecc1a8658b1f9dc0feb2298705","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":15648,"name":"Yingxin","email":"yingxin.cheng@intel.com","username":"Yingxin"},"change_message_id":"4249226e6587dc24e4f266416b1c3e1e1c7a5101","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix MetricWeigher to use MonitorMetricList"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The commit e7dab9975bcbe3bb40cb9723b0deaed985b904c changes"},{"line_number":10,"context_line":"\u0027HostState.metrics\u0027 to \u0027objects.MonitorMetricList\u0027. But MetricWeigher"},{"line_number":11,"context_line":"still use the old dictionary of \u0027host_manager.MetricItem\u0027. This patch"},{"line_number":12,"context_line":"corrects the behavior of MetricWeigher with related tests, and delete"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba15a1d1_11adde83","line":9,"in_reply_to":"ba15a1d1_994b822b","updated":"2015-09-23 04:13:21.000000000","message":"Thanks, done.","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"}],"nova/scheduler/weights/metrics.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"729acf4526a6fbdfd0165675111682275184cca2","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        value \u003d 0.0"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":88,"context_line":"            target \u003d None"},{"line_number":89,"context_line":"            for metric in host_state.metrics:"},{"line_number":90,"context_line":"                if metric.name \u003d\u003d name:"},{"line_number":91,"context_line":"                    target \u003d metric"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_7c53fc39","line":88,"updated":"2015-09-22 11:36:33.000000000","message":"An alternate way of writing this could be:\n\ntarget \u003d next((m.value for m in host_state.metrics), None)","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"a10ec53bd9a86cebb50c2853310b5c34234d14f1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        value \u003d 0.0"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":88,"context_line":"            target \u003d None"},{"line_number":89,"context_line":"            for metric in host_state.metrics:"},{"line_number":90,"context_line":"                if metric.name \u003d\u003d name:"},{"line_number":91,"context_line":"                    target \u003d metric"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_685016d5","line":88,"in_reply_to":"ba15a1d1_08d07a52","updated":"2015-09-22 12:00:03.000000000","message":"s/before/below","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":15648,"name":"Yingxin","email":"yingxin.cheng@intel.com","username":"Yingxin"},"change_message_id":"4249226e6587dc24e4f266416b1c3e1e1c7a5101","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        value \u003d 0.0"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":88,"context_line":"            target \u003d None"},{"line_number":89,"context_line":"            for metric in host_state.metrics:"},{"line_number":90,"context_line":"                if metric.name \u003d\u003d name:"},{"line_number":91,"context_line":"                    target \u003d metric"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_eb0abd25","line":88,"in_reply_to":"ba15a1d1_685016d5","updated":"2015-09-23 04:13:21.000000000","message":"Good to know, its better to use list comprehension and iteration in python :)","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4af087a019e061ae70979d566096883cdad9d134","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        value \u003d 0.0"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":88,"context_line":"            target \u003d None"},{"line_number":89,"context_line":"            for metric in host_state.metrics:"},{"line_number":90,"context_line":"                if metric.name \u003d\u003d name:"},{"line_number":91,"context_line":"                    target \u003d metric"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_8d4b3c2b","line":88,"in_reply_to":"ba15a1d1_7c53fc39","updated":"2015-09-22 11:46:22.000000000","message":"Sounds a nitpick (because it\u0027s a regression, and I don\u0027t want to wait for modifying that) but if you want to modify, then rather :\n\n  target \u003d next((m.name for m in host_state.metrics if m.name \u003d\u003d name), None)","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"ebed7021bd6b56d69042b28860989d04f3ad2091","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        value \u003d 0.0"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":88,"context_line":"            target \u003d None"},{"line_number":89,"context_line":"            for metric in host_state.metrics:"},{"line_number":90,"context_line":"                if metric.name \u003d\u003d name:"},{"line_number":91,"context_line":"                    target \u003d metric"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_ad3c00c0","line":88,"in_reply_to":"ba15a1d1_7c53fc39","updated":"2015-09-22 11:39:41.000000000","message":"target \u003d next((m.value for m in host_state.metrics if m.name \u003d\u003d name), None)\n\nSorry, i had left it incomplete.","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"56051361dffc14b61240d285348bce8e2ef4ae88","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        value \u003d 0.0"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":88,"context_line":"            target \u003d None"},{"line_number":89,"context_line":"            for metric in host_state.metrics:"},{"line_number":90,"context_line":"                if metric.name \u003d\u003d name:"},{"line_number":91,"context_line":"                    target \u003d metric"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_08d07a52","line":88,"in_reply_to":"ba15a1d1_8d4b3c2b","updated":"2015-09-22 11:59:10.000000000","message":"Yeah, i mean - then the target.value before is not required. But a nitpick none the less. :)","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8bc1646a520252142d8354197e8969bbd4f85ae7","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        value \u003d 0.0"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":88,"context_line":"            target \u003d next((m for m in host_state.metrics if m.name \u003d\u003d name),"},{"line_number":89,"context_line":"                          None)"},{"line_number":90,"context_line":"            if not target:"},{"line_number":91,"context_line":"                if CONF.metrics.required:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_48b2c4e6","line":88,"updated":"2015-09-23 09:59:25.000000000","message":"Nit: That feels like a performance regression to me, but its better than it not working at all.","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd40675220d8af1974f9c3854a2ce98ad4ac6821","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        value \u003d 0.0"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":88,"context_line":"            target \u003d next((m for m in host_state.metrics if m.name \u003d\u003d name),"},{"line_number":89,"context_line":"                          None)"},{"line_number":90,"context_line":"            if not target:"},{"line_number":91,"context_line":"                if CONF.metrics.required:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_c348f55e","line":88,"in_reply_to":"ba15a1d1_48b2c4e6","updated":"2015-09-23 10:12:25.000000000","message":"Good point, but since we now have a list instead of a dict, it would need to provide a way to key it. Given the size of the list, I think the O(n) complexity is quite okay here.","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"14b3082a1bc49521a098a91994ff54df50f38cd8","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                    # Do nothing if ratio or weight_multiplier is 0."},{"line_number":101,"context_line":"                    if ratio * self.weight_multiplier() !\u003d 0:"},{"line_number":102,"context_line":"                        return CONF.metrics.weight_of_unavailable"},{"line_number":103,"context_line":"            value +\u003d target.value * ratio"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_3aa22f9a","line":103,"updated":"2015-09-23 11:01:46.000000000","message":"so we still have chance to reach at here when target\u003d\u003dNone, right? Then \u0027None.value\u0027 will broke.","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"77f3376915efdb23ac236b01bc1cd206f0e14dfb","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                    # Do nothing if ratio or weight_multiplier is 0."},{"line_number":101,"context_line":"                    if ratio * self.weight_multiplier() !\u003d 0:"},{"line_number":102,"context_line":"                        return CONF.metrics.weight_of_unavailable"},{"line_number":103,"context_line":"            value +\u003d target.value * ratio"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_2379aac8","line":103,"in_reply_to":"ba15a1d1_236a0ab4","updated":"2015-09-23 11:32:04.000000000","message":"Well technically - if target is None - then either the if or else part inside - wil return - so I don\u0027t think the code will reach a situation where Nova.value occurs?","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"a219c21d2d2349da55253bd5a0dac31de79a8b1f","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                    # Do nothing if ratio or weight_multiplier is 0."},{"line_number":101,"context_line":"                    if ratio * self.weight_multiplier() !\u003d 0:"},{"line_number":102,"context_line":"                        return CONF.metrics.weight_of_unavailable"},{"line_number":103,"context_line":"            value +\u003d target.value * ratio"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_e9171343","line":103,"in_reply_to":"ba15a1d1_2379aac8","updated":"2015-09-23 11:54:15.000000000","message":"I missed the inside if again inside the else. So yeah UT + code fix is needed.","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"62599ef970f3adc54dc06520884f617f1fb22668","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                    # Do nothing if ratio or weight_multiplier is 0."},{"line_number":101,"context_line":"                    if ratio * self.weight_multiplier() !\u003d 0:"},{"line_number":102,"context_line":"                        return CONF.metrics.weight_of_unavailable"},{"line_number":103,"context_line":"            value +\u003d target.value * ratio"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_236a0ab4","line":103,"in_reply_to":"ba15a1d1_3aa22f9a","updated":"2015-09-23 11:24:48.000000000","message":"+1 - i think the indentation of this code should move inside the bigger else.","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"42f6039c3ee6e582794e2df65f73001a40e98aaa","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                    # Do nothing if ratio or weight_multiplier is 0."},{"line_number":101,"context_line":"                    if ratio * self.weight_multiplier() !\u003d 0:"},{"line_number":102,"context_line":"                        return CONF.metrics.weight_of_unavailable"},{"line_number":103,"context_line":"            value +\u003d target.value * ratio"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_1d972549","line":103,"in_reply_to":"ba15a1d1_3aa22f9a","updated":"2015-09-23 11:09:20.000000000","message":"This also mean we are missing a unittest for this case.","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7d7925aa991721ebafccba0064f52f1f26cf1cde","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                    # Do nothing if ratio or weight_multiplier is 0."},{"line_number":101,"context_line":"                    if ratio * self.weight_multiplier() !\u003d 0:"},{"line_number":102,"context_line":"                        return CONF.metrics.weight_of_unavailable"},{"line_number":103,"context_line":"            value +\u003d target.value * ratio"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        return value"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_942d4a48","line":103,"in_reply_to":"ba15a1d1_e9171343","updated":"2015-09-23 12:27:25.000000000","message":"Dammit, missed L101... Okay, will respin the change now","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6ad6030685c327a48e6d82d39c80a14cb61d3894","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        metrics_dict \u003d {m.name: m for m in host_state.metrics}"},{"line_number":90,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":91,"context_line":"            try:"},{"line_number":92,"context_line":"                value \u003d metrics_dict[name].value * ratio"},{"line_number":93,"context_line":"            except KeyError:"},{"line_number":94,"context_line":"                if CONF.metrics.required:"},{"line_number":95,"context_line":"                    raise exception.ComputeHostMetricNotFound("}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_af691bfb","line":92,"updated":"2015-09-23 13:09:16.000000000","message":"we should use \u0027+\u003d\u0027 at here","commit_id":"ac058a677e3646afed23ac5e1ddd00f41575881d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1933905c4594ad09646a8bc60f6464b776b880f5","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        metrics_dict \u003d {m.name: m for m in host_state.metrics}"},{"line_number":90,"context_line":"        for (name, ratio) in self.setting:"},{"line_number":91,"context_line":"            try:"},{"line_number":92,"context_line":"                value \u003d metrics_dict[name].value * ratio"},{"line_number":93,"context_line":"            except KeyError:"},{"line_number":94,"context_line":"                if CONF.metrics.required:"},{"line_number":95,"context_line":"                    raise exception.ComputeHostMetricNotFound("}],"source_content_type":"text/x-python","patch_set":6,"id":"ba15a1d1_c100e303","line":92,"in_reply_to":"ba15a1d1_af691bfb","updated":"2015-09-23 13:12:45.000000000","message":"maaaan, typo here","commit_id":"ac058a677e3646afed23ac5e1ddd00f41575881d"}],"nova/tests/unit/scheduler/fakes.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"729acf4526a6fbdfd0165675111682275184cca2","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            self.instances \u003d {inst.uuid: inst for inst in instances}"},{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            self.instances \u003d {}"},{"line_number":97,"context_line":"        for (key, val) in six.iteritems(attribute_dict):"},{"line_number":98,"context_line":"            setattr(self, key, val)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_1263c71b","line":97,"updated":"2015-09-22 11:36:33.000000000","message":"The FakeHostState object essentially hides the need for reading the metrics value from an object as opposed to a dict of key value pairs and what\u0027s concerning is - if there\u0027s a change in the MetricsObject - this code would still function well - because it\u0027s quite self contained in nature.","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"}],"nova/tests/unit/scheduler/weights/test_weights_metrics.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"37029b572aa180e20d4f7b583a615968cb12dc2d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def _get_all_hosts(self):"},{"line_number":38,"context_line":"        def fake_metric(name, value):"},{"line_number":39,"context_line":"            return fakes.FakeMetric(name, value,"},{"line_number":40,"context_line":"                                    \u0027fake-time\u0027, \u0027fake-source\u0027)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        host_values \u003d ["},{"line_number":43,"context_line":"            (\u0027host1\u0027, \u0027node1\u0027, {\u0027metrics\u0027: [fake_metric(\u0027foo\u0027, 512),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_32bfeb61","line":40,"updated":"2015-09-22 11:35:22.000000000","message":"I would prefer to return a MetricsList NovaObject rather than a fake one, in order to make sure that we don\u0027t miss again to modify the weigher...","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"362603a348050ed7eab6724cf0b22588a5a20e94","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def _get_all_hosts(self):"},{"line_number":38,"context_line":"        def fake_metric(name, value):"},{"line_number":39,"context_line":"            return fakes.FakeMetric(name, value,"},{"line_number":40,"context_line":"                                    \u0027fake-time\u0027, \u0027fake-source\u0027)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        host_values \u003d ["},{"line_number":43,"context_line":"            (\u0027host1\u0027, \u0027node1\u0027, {\u0027metrics\u0027: [fake_metric(\u0027foo\u0027, 512),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_d211cf5e","line":40,"in_reply_to":"ba15a1d1_32bfeb61","updated":"2015-09-22 11:37:14.000000000","message":"+1","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":15648,"name":"Yingxin","email":"yingxin.cheng@intel.com","username":"Yingxin"},"change_message_id":"4249226e6587dc24e4f266416b1c3e1e1c7a5101","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def _get_all_hosts(self):"},{"line_number":38,"context_line":"        def fake_metric(name, value):"},{"line_number":39,"context_line":"            return fakes.FakeMetric(name, value,"},{"line_number":40,"context_line":"                                    \u0027fake-time\u0027, \u0027fake-source\u0027)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        host_values \u003d ["},{"line_number":43,"context_line":"            (\u0027host1\u0027, \u0027node1\u0027, {\u0027metrics\u0027: [fake_metric(\u0027foo\u0027, 512),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_31f582ec","line":40,"in_reply_to":"ba15a1d1_d211cf5e","updated":"2015-09-23 04:13:21.000000000","message":"Done","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"729acf4526a6fbdfd0165675111682275184cca2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                                    \u0027fake-time\u0027, \u0027fake-source\u0027)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        host_values \u003d ["},{"line_number":43,"context_line":"            (\u0027host1\u0027, \u0027node1\u0027, {\u0027metrics\u0027: [fake_metric(\u0027foo\u0027, 512),"},{"line_number":44,"context_line":"                                            fake_metric(\u0027bar\u0027, 1)]}),"},{"line_number":45,"context_line":"            (\u0027host2\u0027, \u0027node2\u0027, {\u0027metrics\u0027: [fake_metric(\u0027foo\u0027, 1024),"},{"line_number":46,"context_line":"                                            fake_metric(\u0027bar\u0027, 2)]}),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_9254b754","line":43,"updated":"2015-09-22 11:36:33.000000000","message":"Prefer converting these to real MonitorMetricList objects as opposed to a dummy list of FakeMetricObjects? \n\nI can\u0027t think of any immediate benefit to it - but it might help us (yet not the most robust way) - to determine errors better if the MonitorMetricList goes through any change in the future.","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":15648,"name":"Yingxin","email":"yingxin.cheng@intel.com","username":"Yingxin"},"change_message_id":"4249226e6587dc24e4f266416b1c3e1e1c7a5101","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                                    \u0027fake-time\u0027, \u0027fake-source\u0027)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        host_values \u003d ["},{"line_number":43,"context_line":"            (\u0027host1\u0027, \u0027node1\u0027, {\u0027metrics\u0027: [fake_metric(\u0027foo\u0027, 512),"},{"line_number":44,"context_line":"                                            fake_metric(\u0027bar\u0027, 1)]}),"},{"line_number":45,"context_line":"            (\u0027host2\u0027, \u0027node2\u0027, {\u0027metrics\u0027: [fake_metric(\u0027foo\u0027, 1024),"},{"line_number":46,"context_line":"                                            fake_metric(\u0027bar\u0027, 2)]}),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_51903643","line":43,"in_reply_to":"ba15a1d1_9254b754","updated":"2015-09-23 04:13:21.000000000","message":"Done","commit_id":"2c84269eada8f728585836d37c2c97d05a35efb8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8427adbb6c4b8e68a52c4edd333ad70e027438fd","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"foo \u003d fields.MonitorMetricType.CPU_IDLE_TIME"},{"line_number":26,"context_line":"bar \u003d fields.MonitorMetricType.CPU_KERNEL_TIME"},{"line_number":27,"context_line":"zot \u003d fields.MonitorMetricType.CPU_USER_TIME"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class MetricsWeigherTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_88645cb9","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":3},"updated":"2015-09-23 09:53:19.000000000","message":"I\u0027d rather have preferred metric types more explicit, but given the criticity of the bug wrt RC1 cut, we can modify that in a second change later.","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8bc1646a520252142d8354197e8969bbd4f85ae7","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"foo \u003d fields.MonitorMetricType.CPU_IDLE_TIME"},{"line_number":26,"context_line":"bar \u003d fields.MonitorMetricType.CPU_KERNEL_TIME"},{"line_number":27,"context_line":"zot \u003d fields.MonitorMetricType.CPU_USER_TIME"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class MetricsWeigherTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_6890e843","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":3},"in_reply_to":"ba15a1d1_88645cb9","updated":"2015-09-23 09:59:25.000000000","message":"+1 to both comments","commit_id":"d4f58b3254099c9016165852d588e428e4a771b2"}]}
