)]}'
{"nova/api/openstack/compute/hypervisors.py":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"11eba98334ad110ba22d69f8e54d28d94e689cd2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.servicegroup_api \u003d servicegroup.API()"},{"line_number":42,"context_line":"        super(HypervisorsController, self).__init__()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @wsgi.Controller.api_version(\"2.32\")  # noqa"},{"line_number":45,"context_line":"    @extensions.expected_errors((400))"},{"line_number":46,"context_line":"    def index(self, req):"},{"line_number":47,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_713b2339","line":44,"range":{"start_line":44,"start_character":34,"end_line":44,"end_character":38},"updated":"2016-08-09 13:15:45.000000000","message":"I think this is incorrect, it should be 2.33","commit_id":"17c9a7a1fd366869d6c8a4703eaead19d361d989"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fdd0666f5bee74b40a276b5a06bc9fdc5fe8ff97","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.servicegroup_api \u003d servicegroup.API()"},{"line_number":42,"context_line":"        super(HypervisorsController, self).__init__()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @wsgi.Controller.api_version(\"2.32\")  # noqa"},{"line_number":45,"context_line":"    @extensions.expected_errors((400))"},{"line_number":46,"context_line":"    def index(self, req):"},{"line_number":47,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_ab21764f","line":44,"range":{"start_line":44,"start_character":34,"end_line":44,"end_character":38},"in_reply_to":"9ad45d7e_713b2339","updated":"2016-08-10 09:28:37.000000000","message":"No test failed. Does it mean that we have some missing test coverage?","commit_id":"17c9a7a1fd366869d6c8a4703eaead19d361d989"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"dd0ee9dd4b3a02e474feafc2b637083fd391776f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.servicegroup_api \u003d servicegroup.API()"},{"line_number":42,"context_line":"        super(HypervisorsController, self).__init__()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @wsgi.Controller.api_version(\"2.32\")  # noqa"},{"line_number":45,"context_line":"    @extensions.expected_errors((400))"},{"line_number":46,"context_line":"    def index(self, req):"},{"line_number":47,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_2bc3988a","line":44,"range":{"start_line":44,"start_character":34,"end_line":44,"end_character":38},"in_reply_to":"9ad45d7e_ab21764f","updated":"2016-08-11 00:57:40.000000000","message":"It does has functional test coverage[1], because minimum version is \u00272.32\u0027 here, the 233 version request will call this with no error.\n\n[1]: https://github.com/openstack/nova/blob/master/nova/tests/functional/api_sample_tests/test_hypervisors.py#L158","commit_id":"17c9a7a1fd366869d6c8a4703eaead19d361d989"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a8d81270d971b317e013a098373b84edd872085e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.servicegroup_api \u003d servicegroup.API()"},{"line_number":41,"context_line":"        super(HypervisorsController, self).__init__()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @wsgi.Controller.api_version(\"2.32\")  # noqa"},{"line_number":44,"context_line":"    @extensions.expected_errors((400))"},{"line_number":45,"context_line":"    def index(self, req):"},{"line_number":46,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_e0c0da7e","line":43,"range":{"start_line":43,"start_character":34,"end_line":43,"end_character":38},"updated":"2017-01-20 19:43:13.000000000","message":"Here should be 2.33, not 2.32 as the original.","commit_id":"3988ba148e9a7356688c4539e49944b15beb3023"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"d74a2e9b61c8562ba5477f89c6fd9e9f15684be2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.servicegroup_api \u003d servicegroup.API()"},{"line_number":41,"context_line":"        super(HypervisorsController, self).__init__()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @wsgi.Controller.api_version(\"2.32\")  # noqa"},{"line_number":44,"context_line":"    @extensions.expected_errors((400))"},{"line_number":45,"context_line":"    def index(self, req):"},{"line_number":46,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_755493fe","line":43,"range":{"start_line":43,"start_character":34,"end_line":43,"end_character":38},"in_reply_to":"5a3905b3_e0c0da7e","updated":"2017-01-22 01:24:31.000000000","message":"Done","commit_id":"3988ba148e9a7356688c4539e49944b15beb3023"}],"nova/api/openstack/compute/views/hypervisors.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27e67340ec59d7c4d68584032fb4613847ffc951","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            hyp_dict[\u0027servers\u0027] \u003d [dict(name\u003dserv[\u0027name\u0027], uuid\u003dserv[\u0027uuid\u0027])"},{"line_number":57,"context_line":"                                   for serv in servers]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Add any additional info"},{"line_number":60,"context_line":"        if kwargs:"},{"line_number":61,"context_line":"            hyp_dict.update(kwargs)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        return hyp_dict"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_b0b1e391","line":61,"range":{"start_line":59,"start_character":1,"end_line":61,"end_character":35},"updated":"2016-08-10 09:30:24.000000000","message":"I think it can be simply written like:\n\n    hyp_dict.update(kwargs)\n\nas that will also work if kwargs is empty","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"a6104d13806f292d3f69f503f700a196fdab4d70","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            hyp_dict[\u0027servers\u0027] \u003d [dict(name\u003dserv[\u0027name\u0027], uuid\u003dserv[\u0027uuid\u0027])"},{"line_number":57,"context_line":"                                   for serv in servers]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # Add any additional info"},{"line_number":60,"context_line":"        if kwargs:"},{"line_number":61,"context_line":"            hyp_dict.update(kwargs)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        return hyp_dict"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_b0537516","line":61,"range":{"start_line":59,"start_character":1,"end_line":61,"end_character":35},"in_reply_to":"9ad45d7e_b0b1e391","updated":"2016-08-11 00:54:09.000000000","message":"Done","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27e67340ec59d7c4d68584032fb4613847ffc951","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":90,"context_line":"        hypervisors_list \u003d ["},{"line_number":91,"context_line":"            self._view_hypervisor("},{"line_number":92,"context_line":"            hyp, host_api.service_get_by_compute_host(context, hyp.host),"},{"line_number":93,"context_line":"            True, req, servicegroup_api) for hyp in hypervisors]"},{"line_number":94,"context_line":"        hypervisors_dict \u003d dict(hypervisors\u003dhypervisors_list)"},{"line_number":95,"context_line":"        if links:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_700dab8f","line":92,"updated":"2016-08-10 09:30:24.000000000","message":"could you indent this a bit for readability?","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"a6104d13806f292d3f69f503f700a196fdab4d70","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":90,"context_line":"        hypervisors_list \u003d ["},{"line_number":91,"context_line":"            self._view_hypervisor("},{"line_number":92,"context_line":"            hyp, host_api.service_get_by_compute_host(context, hyp.host),"},{"line_number":93,"context_line":"            True, req, servicegroup_api) for hyp in hypervisors]"},{"line_number":94,"context_line":"        hypervisors_dict \u003d dict(hypervisors\u003dhypervisors_list)"},{"line_number":95,"context_line":"        if links:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_d0754998","line":92,"in_reply_to":"9ad45d7e_700dab8f","updated":"2016-08-11 00:54:09.000000000","message":"Done","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27e67340ec59d7c4d68584032fb4613847ffc951","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        hypervisors_list \u003d ["},{"line_number":91,"context_line":"            self._view_hypervisor("},{"line_number":92,"context_line":"            hyp, host_api.service_get_by_compute_host(context, hyp.host),"},{"line_number":93,"context_line":"            True, req, servicegroup_api) for hyp in hypervisors]"},{"line_number":94,"context_line":"        hypervisors_dict \u003d dict(hypervisors\u003dhypervisors_list)"},{"line_number":95,"context_line":"        if links:"},{"line_number":96,"context_line":"            hypervisors_links \u003d self._get_links("}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_9022dfff","line":93,"range":{"start_line":93,"start_character":12,"end_line":93,"end_character":16},"updated":"2016-08-10 09:30:24.000000000","message":"Can we use detail\u003dTrue instead for readability?","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"a6104d13806f292d3f69f503f700a196fdab4d70","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        hypervisors_list \u003d ["},{"line_number":91,"context_line":"            self._view_hypervisor("},{"line_number":92,"context_line":"            hyp, host_api.service_get_by_compute_host(context, hyp.host),"},{"line_number":93,"context_line":"            True, req, servicegroup_api) for hyp in hypervisors]"},{"line_number":94,"context_line":"        hypervisors_dict \u003d dict(hypervisors\u003dhypervisors_list)"},{"line_number":95,"context_line":"        if links:"},{"line_number":96,"context_line":"            hypervisors_links \u003d self._get_links("}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_b07a5586","line":93,"range":{"start_line":93,"start_character":12,"end_line":93,"end_character":16},"in_reply_to":"9ad45d7e_9022dfff","updated":"2016-08-11 00:54:09.000000000","message":"Done","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27e67340ec59d7c4d68584032fb4613847ffc951","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        service \u003d host_api.service_get_by_compute_host("},{"line_number":105,"context_line":"            context, hypervisor.host)"},{"line_number":106,"context_line":"        return dict(hypervisor\u003dself._view_hypervisor("},{"line_number":107,"context_line":"            hypervisor, service, True, req, servicegroup_api))"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def uptime(self, req, hypervisor, uptime, host_api, servicegroup_api):"},{"line_number":110,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_f04fdbba","line":107,"range":{"start_line":107,"start_character":33,"end_line":107,"end_character":37},"updated":"2016-08-10 09:30:24.000000000","message":"detail\u003dTrue","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"a6104d13806f292d3f69f503f700a196fdab4d70","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        service \u003d host_api.service_get_by_compute_host("},{"line_number":105,"context_line":"            context, hypervisor.host)"},{"line_number":106,"context_line":"        return dict(hypervisor\u003dself._view_hypervisor("},{"line_number":107,"context_line":"            hypervisor, service, True, req, servicegroup_api))"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def uptime(self, req, hypervisor, uptime, host_api, servicegroup_api):"},{"line_number":110,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_705d7d14","line":107,"range":{"start_line":107,"start_character":33,"end_line":107,"end_character":37},"in_reply_to":"9ad45d7e_f04fdbba","updated":"2016-08-11 00:54:09.000000000","message":"Done","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27e67340ec59d7c4d68584032fb4613847ffc951","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        service \u003d host_api.service_get_by_compute_host(context,"},{"line_number":112,"context_line":"                                                       hypervisor.host)"},{"line_number":113,"context_line":"        return dict(hypervisor\u003dself._view_hypervisor(hypervisor, service,"},{"line_number":114,"context_line":"                                                     False, req,"},{"line_number":115,"context_line":"                                                     servicegroup_api,"},{"line_number":116,"context_line":"                                                     uptime\u003duptime))"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_70d2cbd3","line":114,"range":{"start_line":114,"start_character":53,"end_line":114,"end_character":58},"updated":"2016-08-10 09:30:24.000000000","message":"detail\u003dFalse","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"a6104d13806f292d3f69f503f700a196fdab4d70","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        service \u003d host_api.service_get_by_compute_host(context,"},{"line_number":112,"context_line":"                                                       hypervisor.host)"},{"line_number":113,"context_line":"        return dict(hypervisor\u003dself._view_hypervisor(hypervisor, service,"},{"line_number":114,"context_line":"                                                     False, req,"},{"line_number":115,"context_line":"                                                     servicegroup_api,"},{"line_number":116,"context_line":"                                                     uptime\u003duptime))"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_d09c29c2","line":114,"range":{"start_line":114,"start_character":53,"end_line":114,"end_character":58},"in_reply_to":"9ad45d7e_70d2cbd3","updated":"2016-08-11 00:54:09.000000000","message":"Done","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27e67340ec59d7c4d68584032fb4613847ffc951","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def search(self, req, hypervisors, host_api, servicegroup_api):"},{"line_number":119,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":120,"context_line":"        return dict(hypervisors\u003d[self._view_hypervisor("},{"line_number":121,"context_line":"                                 hyp,"},{"line_number":122,"context_line":"                                 host_api.service_get_by_compute_host("},{"line_number":123,"context_line":"                                    context, hyp.host),"},{"line_number":124,"context_line":"                                 False, req, servicegroup_api)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_8babd2d5","line":121,"updated":"2016-08-10 09:30:24.000000000","message":"can we indent this for readability?","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"a6104d13806f292d3f69f503f700a196fdab4d70","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def search(self, req, hypervisors, host_api, servicegroup_api):"},{"line_number":119,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":120,"context_line":"        return dict(hypervisors\u003d[self._view_hypervisor("},{"line_number":121,"context_line":"                                 hyp,"},{"line_number":122,"context_line":"                                 host_api.service_get_by_compute_host("},{"line_number":123,"context_line":"                                    context, hyp.host),"},{"line_number":124,"context_line":"                                 False, req, servicegroup_api)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_9053d1e1","line":121,"in_reply_to":"9ad45d7e_8babd2d5","updated":"2016-08-11 00:54:09.000000000","message":"Done","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27e67340ec59d7c4d68584032fb4613847ffc951","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                                 hyp,"},{"line_number":122,"context_line":"                                 host_api.service_get_by_compute_host("},{"line_number":123,"context_line":"                                    context, hyp.host),"},{"line_number":124,"context_line":"                                 False, req, servicegroup_api)"},{"line_number":125,"context_line":"                                 for hyp in hypervisors])"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def servers(self, req, hypervisors, host_api, servicegroup_api):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_2b83c657","line":124,"range":{"start_line":124,"start_character":33,"end_line":124,"end_character":38},"updated":"2016-08-10 09:30:24.000000000","message":"detail\u003dFalse","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"a6104d13806f292d3f69f503f700a196fdab4d70","unresolved":false,"context_lines":[{"line_number":121,"context_line":"                                 hyp,"},{"line_number":122,"context_line":"                                 host_api.service_get_by_compute_host("},{"line_number":123,"context_line":"                                    context, hyp.host),"},{"line_number":124,"context_line":"                                 False, req, servicegroup_api)"},{"line_number":125,"context_line":"                                 for hyp in hypervisors])"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def servers(self, req, hypervisors, host_api, servicegroup_api):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_5074b966","line":124,"range":{"start_line":124,"start_character":33,"end_line":124,"end_character":38},"in_reply_to":"9ad45d7e_2b83c657","updated":"2016-08-11 00:54:09.000000000","message":"Done","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"27e67340ec59d7c4d68584032fb4613847ffc951","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                hypervisor.host)"},{"line_number":133,"context_line":"            service \u003d host_api.service_get_by_compute_host("},{"line_number":134,"context_line":"                context, hypervisor.host)"},{"line_number":135,"context_line":"            hyp \u003d self._view_hypervisor(hypervisor, service, False, req,"},{"line_number":136,"context_line":"                                        servicegroup_api, instances)"},{"line_number":137,"context_line":"            compute_nodes.append(hyp)"},{"line_number":138,"context_line":"        return dict(hypervisors\u003dcompute_nodes)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_cb8caa81","line":135,"range":{"start_line":135,"start_character":61,"end_line":135,"end_character":66},"updated":"2016-08-10 09:30:24.000000000","message":"detail\u003dFalse","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"a6104d13806f292d3f69f503f700a196fdab4d70","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                hypervisor.host)"},{"line_number":133,"context_line":"            service \u003d host_api.service_get_by_compute_host("},{"line_number":134,"context_line":"                context, hypervisor.host)"},{"line_number":135,"context_line":"            hyp \u003d self._view_hypervisor(hypervisor, service, False, req,"},{"line_number":136,"context_line":"                                        servicegroup_api, instances)"},{"line_number":137,"context_line":"            compute_nodes.append(hyp)"},{"line_number":138,"context_line":"        return dict(hypervisors\u003dcompute_nodes)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_70673db7","line":135,"range":{"start_line":135,"start_character":61,"end_line":135,"end_character":66},"in_reply_to":"9ad45d7e_cb8caa81","updated":"2016-08-11 00:54:09.000000000","message":"Done","commit_id":"9d79d58b0d54191ded7a809ea6c698db275e976b"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"f7ba0e770caa5bba57d9f3fb36ec92e9e61f5111","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \u0027hypervisor_hostname\u0027: hypervisor.hypervisor_hostname,"},{"line_number":32,"context_line":"            \u0027state\u0027: \u0027up\u0027 if alive else \u0027down\u0027,"},{"line_number":33,"context_line":"            \u0027status\u0027: (\u0027disabled\u0027 if service.disabled"},{"line_number":34,"context_line":"                       else \u0027enabled\u0027),"},{"line_number":35,"context_line":"            }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if detail and not servers:"},{"line_number":38,"context_line":"            for field in (\u0027vcpus\u0027, \u0027memory_mb\u0027, \u0027local_gb\u0027, \u0027vcpus_used\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_a94a1a81","line":35,"range":{"start_line":34,"start_character":38,"end_line":35,"end_character":12},"updated":"2016-09-02 11:47:53.000000000","message":"is \u0027,\u0027 needed?\nis it good indentation at the end?","commit_id":"25d157355e945d1745925655f9d80e491c964d6f"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"9cb572cb5a310e498a30f78a389b924c610fdd51","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \u0027hypervisor_hostname\u0027: hypervisor.hypervisor_hostname,"},{"line_number":32,"context_line":"            \u0027state\u0027: \u0027up\u0027 if alive else \u0027down\u0027,"},{"line_number":33,"context_line":"            \u0027status\u0027: (\u0027disabled\u0027 if service.disabled"},{"line_number":34,"context_line":"                       else \u0027enabled\u0027),"},{"line_number":35,"context_line":"            }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        if detail and not servers:"},{"line_number":38,"context_line":"            for field in (\u0027vcpus\u0027, \u0027memory_mb\u0027, \u0027local_gb\u0027, \u0027vcpus_used\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a89bdaa_83f91983","line":35,"range":{"start_line":34,"start_character":38,"end_line":35,"end_character":12},"in_reply_to":"fa7ab95a_a94a1a81","updated":"2016-09-06 02:51:24.000000000","message":"Done","commit_id":"25d157355e945d1745925655f9d80e491c964d6f"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"f7ba0e770caa5bba57d9f3fb36ec92e9e61f5111","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                \u0027id\u0027: service.id,"},{"line_number":47,"context_line":"                \u0027host\u0027: hypervisor.host,"},{"line_number":48,"context_line":"                \u0027disabled_reason\u0027: service.disabled_reason,"},{"line_number":49,"context_line":"                }"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.28\u0027):"},{"line_number":52,"context_line":"                if hypervisor.cpu_info:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_e940a261","line":49,"updated":"2016-09-02 11:47:53.000000000","message":"the same","commit_id":"25d157355e945d1745925655f9d80e491c964d6f"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"9cb572cb5a310e498a30f78a389b924c610fdd51","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                \u0027id\u0027: service.id,"},{"line_number":47,"context_line":"                \u0027host\u0027: hypervisor.host,"},{"line_number":48,"context_line":"                \u0027disabled_reason\u0027: service.disabled_reason,"},{"line_number":49,"context_line":"                }"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"            if api_version_request.is_supported(req, min_version\u003d\u00272.28\u0027):"},{"line_number":52,"context_line":"                if hypervisor.cpu_info:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a89bdaa_a3f45d87","line":49,"in_reply_to":"fa7ab95a_e940a261","updated":"2016-09-06 02:51:24.000000000","message":"Done","commit_id":"25d157355e945d1745925655f9d80e491c964d6f"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a8d81270d971b317e013a098373b84edd872085e","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        hypervisors_dict \u003d dict(hypervisors\u003dhypervisors_list)"},{"line_number":121,"context_line":"        if links:"},{"line_number":122,"context_line":"            hypervisors_links \u003d self._get_links("},{"line_number":123,"context_line":"                req, hypervisors_list, detail\u003dTrue)"},{"line_number":124,"context_line":"            if hypervisors_links:"},{"line_number":125,"context_line":"                hypervisors_dict[\u0027hypervisors_links\u0027] \u003d hypervisors_links"},{"line_number":126,"context_line":"        return hypervisors_dict"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_803c76e3","line":123,"range":{"start_line":123,"start_character":39,"end_line":123,"end_character":50},"updated":"2017-01-20 19:43:13.000000000","message":"When I see this patch first, I was curious why this patch makes more lines of code before even if this commit message says a cleanup.\n\nThis detail() and the above index() have duplicated code and the difference is just here \"detail\u003dTrue\" only.\n\nSo how about defining the index() like\n\n def index(self, req, hypervisors, host_api, servicegroup_api, links\u003dFalse, detail\u003dFalse):\n\n     ...\n     if links:\n         hypervisors_links \u003d self._get_links(\n             req, hypervisors_list, detail\u003ddetail)\n     ...\n\nand detail() could be like\n\n detail(self, req, hypervisors, host_api, servicegroup_api, links\u003dFalse)\n     return self.index(req, hypervisors, host_api, servicegroup_api, links\u003dlinks, detail\u003dTrue)\n\n?\n\nor just call index() with detail\u003dTrue from nova/api/openstack/compute/hypervisors.py without this detail() definition.","commit_id":"3988ba148e9a7356688c4539e49944b15beb3023"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"d74a2e9b61c8562ba5477f89c6fd9e9f15684be2","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        hypervisors_dict \u003d dict(hypervisors\u003dhypervisors_list)"},{"line_number":121,"context_line":"        if links:"},{"line_number":122,"context_line":"            hypervisors_links \u003d self._get_links("},{"line_number":123,"context_line":"                req, hypervisors_list, detail\u003dTrue)"},{"line_number":124,"context_line":"            if hypervisors_links:"},{"line_number":125,"context_line":"                hypervisors_dict[\u0027hypervisors_links\u0027] \u003d hypervisors_links"},{"line_number":126,"context_line":"        return hypervisors_dict"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a3905b3_b5235ba6","line":123,"range":{"start_line":123,"start_character":39,"end_line":123,"end_character":50},"in_reply_to":"5a3905b3_803c76e3","updated":"2017-01-22 01:24:31.000000000","message":"Done","commit_id":"3988ba148e9a7356688c4539e49944b15beb3023"}],"nova/tests/unit/api/openstack/compute/test_hypervisors.py":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"f7ba0e770caa5bba57d9f3fb36ec92e9e61f5111","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            self.TEST_SERVICES[0],"},{"line_number":252,"context_line":"            req,"},{"line_number":253,"context_line":"            self.controller.servicegroup_api,"},{"line_number":254,"context_line":"            detail\u003dTrue,"},{"line_number":255,"context_line":"            servers\u003dself.TEST_SERVERS)"},{"line_number":256,"context_line":"        expected_dict \u003d copy.deepcopy(self.INDEX_HYPER_DICTS[0])"},{"line_number":257,"context_line":"        expected_dict.update({\u0027servers\u0027: ["}],"source_content_type":"text/x-python","patch_set":12,"id":"fa7ab95a_c9f3de71","line":254,"range":{"start_line":254,"start_character":19,"end_line":254,"end_character":23},"updated":"2016-09-02 11:47:53.000000000","message":"this was False, yes?","commit_id":"25d157355e945d1745925655f9d80e491c964d6f"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"9cb572cb5a310e498a30f78a389b924c610fdd51","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            self.TEST_SERVICES[0],"},{"line_number":252,"context_line":"            req,"},{"line_number":253,"context_line":"            self.controller.servicegroup_api,"},{"line_number":254,"context_line":"            detail\u003dTrue,"},{"line_number":255,"context_line":"            servers\u003dself.TEST_SERVERS)"},{"line_number":256,"context_line":"        expected_dict \u003d copy.deepcopy(self.INDEX_HYPER_DICTS[0])"},{"line_number":257,"context_line":"        expected_dict.update({\u0027servers\u0027: ["}],"source_content_type":"text/x-python","patch_set":12,"id":"9a89bdaa_83d2f9fe","line":254,"range":{"start_line":254,"start_character":19,"end_line":254,"end_character":23},"in_reply_to":"fa7ab95a_c9f3de71","updated":"2016-09-06 02:51:24.000000000","message":"Yes, Done","commit_id":"25d157355e945d1745925655f9d80e491c964d6f"}]}
