)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23210,"name":"YumengBao","email":"bao.yumeng@zte.com.cn","username":"YumengBao"},"change_message_id":"572767b290ac14774bd8bd4571f4f8f17385b625","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make hypervisor-servers support one host has multi-compute-nodes."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One host may be have multi-compute-nodes, so if query which"},{"line_number":10,"context_line":"instances one compute-node has, we need use"},{"line_number":11,"context_line":"objects.InstanceList.get_by_host_and_node instead."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I577acca5d8c15cb427a757471ea3321951c99aac"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a77a97e_b636ab00","line":10,"range":{"start_line":9,"start_character":42,"end_line":10,"end_character":30},"updated":"2016-11-21 00:46:13.000000000","message":"Maybe the above sentence can be rewritten as \"so if we want to query which instances are running on one compute-node\" which can be more reader-friendly.","commit_id":"9472f890c7ca20887699b80e245c35ac744fb096"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"611bdd2295738ab48c0748002e09960b2862786c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make hypervisor-servers support one host has multi-compute-nodes."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One host may be have multi-compute-nodes, so if query which"},{"line_number":10,"context_line":"instances one compute-node has, we need use"},{"line_number":11,"context_line":"objects.InstanceList.get_by_host_and_node instead."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I577acca5d8c15cb427a757471ea3321951c99aac"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a77a97e_51b8012a","line":10,"range":{"start_line":9,"start_character":42,"end_line":10,"end_character":30},"in_reply_to":"7a77a97e_b636ab00","updated":"2016-11-21 01:22:38.000000000","message":"Done","commit_id":"9472f890c7ca20887699b80e245c35ac744fb096"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2b8e0cf75b1dd1744e24e139497e28b5c721fb8b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One host may be have multi-compute-nodes, so if query which"},{"line_number":10,"context_line":"instances one compute-node has, we need use"},{"line_number":11,"context_line":"objects.InstanceList.get_by_host_and_node instead."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I577acca5d8c15cb427a757471ea3321951c99aac"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a77a97e_4f16ae4c","line":11,"updated":"2016-11-19 01:35:16.000000000","message":"Could you point the corresponding launchpad bug report for this case?\nWe are using qemu as default hypervisor type on the gate testing and that is different from this case. So it would be nice to clarify what hypervisor for this case to understand the problem clearly.","commit_id":"9472f890c7ca20887699b80e245c35ac744fb096"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"611bdd2295738ab48c0748002e09960b2862786c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One host may be have multi-compute-nodes, so if query which"},{"line_number":10,"context_line":"instances one compute-node has, we need use"},{"line_number":11,"context_line":"objects.InstanceList.get_by_host_and_node instead."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I577acca5d8c15cb427a757471ea3321951c99aac"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a77a97e_31ad45e9","line":11,"in_reply_to":"7a77a97e_4f16ae4c","updated":"2016-11-21 01:22:38.000000000","message":"ok, I will report a bug for this case.\n\nFor vmware, one compute host report multiply nodes.","commit_id":"9472f890c7ca20887699b80e245c35ac744fb096"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One host may be have multi-compute-nodes, so if we want to query"},{"line_number":10,"context_line":"which instances are running on one compute-node, we need use"},{"line_number":11,"context_line":"objects.InstanceList.get_by_host_and_node instead."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Close-Bug: #1643384"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a74a57a_31a197aa","line":11,"updated":"2016-11-23 18:22:33.000000000","message":"Can you describe what happened before this change, it looked like previously you would get the same instance listed multiple types, is that correct?","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"0e17352265315b6f29d5a6619b88d0dcf52442aa","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"One host may be have multi-compute-nodes, so if we want to query"},{"line_number":10,"context_line":"which instances are running on one compute-node, we need use"},{"line_number":11,"context_line":"objects.InstanceList.get_by_host_and_node instead."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Close-Bug: #1643384"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a74a57a_ec600b38","line":11,"in_reply_to":"5a74a57a_31a197aa","updated":"2016-11-24 07:32:07.000000000","message":"what do you mean by \" it looked like previously you would get the same instance listed multiple types\"?\n\nI suppose your mean like this example.\n\nOne compute may have multiply ironic nodes for ironic driver, and the compute_nodes tables may be as follow:\n{{\"id\": 1, \"host\": \"hostA\", \"hypervisor_hostname\": \"ironic_host_1\"},\n {{\"id\": 2, \"host\": \"hostA\", \"hypervisor_hostname\": \"ironic_host_2\"},\n {\"id\": 3, \"host\": \"hostA\", \"hypervisor_hostname\": \"ironic_host_3\"}\n}\n\nI deploy three instances as follow:\n{{id: 1, name: \"inst_1\", \"host\": \"hostA\", \"node\": \"ironic_host_1\"},\n {id: 2, name: \"inst_2\", \"host\": \"hostA\", \"node\": \"ironic_host_2\"},\n {id: 3, name: \"inst_3\", \"host\": \"hostA\", \"node\": \"ironic_host_3\"}\n}\n\nThen the result of hypervisor_servers is like as follow:\n{\n{id : 1, \"hypervisor_hostname\": \"ironic_host_1\", \u0027servers\u0027: [\n{name: \"inst_1\"}, {name: \"inst_2\"}, {name: \"inst_3}]},\n{id : 2, \"hypervisor_hostname\": \"ironic_host_2\", \u0027servers\u0027: [\n{name: \"inst_1\"}, {name: \"inst_2\"}, {name: \"inst_3}]},\n{id : 3, \"hypervisor_hostname\": \"ironic_host_3\", \u0027servers\u0027: [\n{name: \"inst_1\"}, {name: \"inst_2\"}, {name: \"inst_3}]}\n}\n\nHowever the correct result should be as follow:\n{\n{id : 1, \"hypervisor_hostname\": \"ironic_host_1\", \u0027servers\u0027: [{name: \"inst_1\"}]},\n{id : 2, \"hypervisor_hostname\": \"ironic_host_2\", \u0027servers\u0027: [{name: \"inst_2\"}]},\n{id : 3, \"hypervisor_hostname\": \"ironic_host_3\", \u0027servers\u0027: [{name: \"inst_3}]}\n}","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"}],"nova/api/openstack/compute/hypervisors.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        hypervisors \u003d []"},{"line_number":226,"context_line":"        for compute_node in compute_nodes:"},{"line_number":227,"context_line":"            instances \u003d self.host_api.instance_get_all_by_host_and_node("},{"line_number":228,"context_line":"                context, compute_node.host, compute_node.hypervisor_hostname)"},{"line_number":229,"context_line":"            service \u003d self.host_api.service_get_by_compute_host("},{"line_number":230,"context_line":"                context, compute_node.host)"},{"line_number":231,"context_line":"            hyp \u003d self._view_hypervisor(compute_node, service, False, req,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_d1794331","line":228,"updated":"2016-11-23 18:22:33.000000000","message":"I had wondered about needing a microversion for this. As the old behaviour is not described its hard to make that call. I believe the problem would be multiple entries of the same instance?","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"0e17352265315b6f29d5a6619b88d0dcf52442aa","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        hypervisors \u003d []"},{"line_number":226,"context_line":"        for compute_node in compute_nodes:"},{"line_number":227,"context_line":"            instances \u003d self.host_api.instance_get_all_by_host_and_node("},{"line_number":228,"context_line":"                context, compute_node.host, compute_node.hypervisor_hostname)"},{"line_number":229,"context_line":"            service \u003d self.host_api.service_get_by_compute_host("},{"line_number":230,"context_line":"                context, compute_node.host)"},{"line_number":231,"context_line":"            hyp \u003d self._view_hypervisor(compute_node, service, False, req,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_ec956be4","line":228,"in_reply_to":"5a74a57a_d1794331","updated":"2016-11-24 07:32:07.000000000","message":"I think it doesn\u0027t need a microversion. This function\u0027s unit is hypervisor, not host, it\u0027s clear.\n\nFor libvirt driver, the value of \"host\" is the same as the value of \"hypversior_hostname\" in compute_nodes table, So the result is correct.\n\nFor vmware and ironic driver, this is bug. \nInstances running on a hypervisor are mapped into the host which hypervisor belongs to.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"}],"nova/compute/api.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":4079,"context_line":"        \"\"\"Return all instances on the given host.\"\"\""},{"line_number":4080,"context_line":"        return objects.InstanceList.get_by_host(context, host_name)"},{"line_number":4081,"context_line":""},{"line_number":4082,"context_line":"    def instance_get_all_by_host_and_node(self, context, host_name, node_name):"},{"line_number":4083,"context_line":"        \"\"\"Return all instances on the given host and node.\"\"\""},{"line_number":4084,"context_line":"        return objects.InstanceList.get_by_host_and_node(context, host_name,"},{"line_number":4085,"context_line":"                                                         node_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_91e26b02","line":4082,"updated":"2016-11-23 18:22:33.000000000","message":"I don\u0027t see any tests for this code? could you please add some.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"0e17352265315b6f29d5a6619b88d0dcf52442aa","unresolved":false,"context_lines":[{"line_number":4079,"context_line":"        \"\"\"Return all instances on the given host.\"\"\""},{"line_number":4080,"context_line":"        return objects.InstanceList.get_by_host(context, host_name)"},{"line_number":4081,"context_line":""},{"line_number":4082,"context_line":"    def instance_get_all_by_host_and_node(self, context, host_name, node_name):"},{"line_number":4083,"context_line":"        \"\"\"Return all instances on the given host and node.\"\"\""},{"line_number":4084,"context_line":"        return objects.InstanceList.get_by_host_and_node(context, host_name,"},{"line_number":4085,"context_line":"                                                         node_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_d74afcab","line":4082,"in_reply_to":"5a74a57a_91e26b02","updated":"2016-11-24 07:32:07.000000000","message":"ok, I will add unit tests for this.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"}],"nova/compute/cells_api.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        if cell_name:"},{"line_number":624,"context_line":"            instances \u003d [i for i in instances"},{"line_number":625,"context_line":"                         if i[\u0027cell_name\u0027] \u003d\u003d cell_name]"},{"line_number":626,"context_line":"        return instances"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"    def task_log_get_all(self, context, task_name, beginning, ending,"},{"line_number":629,"context_line":"                         host\u003dNone, state\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_b1e76711","line":626,"updated":"2016-11-23 18:22:33.000000000","message":"I don\u0027t see any tests for this code? could you please add some.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"0e17352265315b6f29d5a6619b88d0dcf52442aa","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        if cell_name:"},{"line_number":624,"context_line":"            instances \u003d [i for i in instances"},{"line_number":625,"context_line":"                         if i[\u0027cell_name\u0027] \u003d\u003d cell_name]"},{"line_number":626,"context_line":"        return instances"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"    def task_log_get_all(self, context, task_name, beginning, ending,"},{"line_number":629,"context_line":"                         host\u003dNone, state\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_37d250d3","line":626,"in_reply_to":"5a74a57a_b1e76711","updated":"2016-11-24 07:32:07.000000000","message":"ok, I will add unit tests for this.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"}],"nova/tests/unit/api/openstack/compute/test_hypervisors.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"         running_vms\u003d2,"},{"line_number":76,"context_line":"         cpu_info\u003dCPU_INFO,"},{"line_number":77,"context_line":"         disk_available_least\u003d100,"},{"line_number":78,"context_line":"         host_ip\u003dnetaddr.IPAddress(\u00272.2.2.2\u0027))]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"TEST_SERVICES \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_31c7d713","line":78,"updated":"2016-11-23 18:22:33.000000000","message":"Could you not just add your new hypervisor in here?","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"0e17352265315b6f29d5a6619b88d0dcf52442aa","unresolved":false,"context_lines":[{"line_number":75,"context_line":"         running_vms\u003d2,"},{"line_number":76,"context_line":"         cpu_info\u003dCPU_INFO,"},{"line_number":77,"context_line":"         disk_available_least\u003d100,"},{"line_number":78,"context_line":"         host_ip\u003dnetaddr.IPAddress(\u00272.2.2.2\u0027))]"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"TEST_SERVICES \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_926412e6","line":78,"in_reply_to":"5a74a57a_31c7d713","updated":"2016-11-24 07:32:07.000000000","message":"I was also very contradictory, because I didn\u0027t want to affect the unit tests before, thank you for your advice.\n\nok, I will add new hypervisor here.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                dict(name\u003d\"inst3\", uuid\u003duuids.instance_3,"},{"line_number":111,"context_line":"                     host\u003d\"compute1\", node\u003d\u0027hyper1\u0027),"},{"line_number":112,"context_line":"                dict(name\u003d\"inst4\", uuid\u003duuids.instance_4,"},{"line_number":113,"context_line":"                     host\u003d\"compute2\", node\u003d\u0027hyper2\u0027)]"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def fake_compute_node_get_all(context, limit\u003dNone, marker\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_51cc5335","line":113,"updated":"2016-11-23 18:22:33.000000000","message":"Could you not just add the new test server in here?","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"0e17352265315b6f29d5a6619b88d0dcf52442aa","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                dict(name\u003d\"inst3\", uuid\u003duuids.instance_3,"},{"line_number":111,"context_line":"                     host\u003d\"compute1\", node\u003d\u0027hyper1\u0027),"},{"line_number":112,"context_line":"                dict(name\u003d\"inst4\", uuid\u003duuids.instance_4,"},{"line_number":113,"context_line":"                     host\u003d\"compute2\", node\u003d\u0027hyper2\u0027)]"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"def fake_compute_node_get_all(context, limit\u003dNone, marker\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_f29b86c7","line":113,"in_reply_to":"5a74a57a_51cc5335","updated":"2016-11-24 07:32:07.000000000","message":"ok","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        result \u003d self.controller.servers(req, self.TEST_HYPERS_OBJ[0].id)"},{"line_number":462,"context_line":"        self.assertEqual(result, dict(hypervisors\u003dself.INDEX_HYPER_DICTS))"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def convert_to_compute_nodes_object(self, hypervisor_dict):"},{"line_number":465,"context_line":"        return objects.ComputeNode(**hypervisor_dict)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def convert_compute_node_id(self, id):"},{"line_number":468,"context_line":"        return id"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def get_test_hypers_obj(self):"},{"line_number":471,"context_line":"        return TEST_HYPERS_OBJ"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def get_test_servers(self):"},{"line_number":474,"context_line":"        return TEST_SERVERS"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    def convert_to_server(self, server):"},{"line_number":477,"context_line":"        return server"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def test_servers_with_host_has_multi_nodes(self):"},{"line_number":480,"context_line":"        req \u003d self._get_request(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_b1b0478d","line":477,"range":{"start_line":464,"start_character":4,"end_line":477,"end_character":21},"updated":"2016-11-23 18:22:33.000000000","message":"I don\u0027t really like having all these functions here, they don\u0027t seem to help the readability below.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"0e17352265315b6f29d5a6619b88d0dcf52442aa","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        result \u003d self.controller.servers(req, self.TEST_HYPERS_OBJ[0].id)"},{"line_number":462,"context_line":"        self.assertEqual(result, dict(hypervisors\u003dself.INDEX_HYPER_DICTS))"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def convert_to_compute_nodes_object(self, hypervisor_dict):"},{"line_number":465,"context_line":"        return objects.ComputeNode(**hypervisor_dict)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    def convert_compute_node_id(self, id):"},{"line_number":468,"context_line":"        return id"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def get_test_hypers_obj(self):"},{"line_number":471,"context_line":"        return TEST_HYPERS_OBJ"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def get_test_servers(self):"},{"line_number":474,"context_line":"        return TEST_SERVERS"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"    def convert_to_server(self, server):"},{"line_number":477,"context_line":"        return server"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def test_servers_with_host_has_multi_nodes(self):"},{"line_number":480,"context_line":"        req \u003d self._get_request(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_327dfe6e","line":477,"range":{"start_line":464,"start_character":4,"end_line":477,"end_character":21},"in_reply_to":"5a74a57a_b1b0478d","updated":"2016-11-24 07:32:07.000000000","message":"ok.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                    results.append(inst_obj)"},{"line_number":517,"context_line":"            return results"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        self.stubs.Set(self.controller.host_api,"},{"line_number":520,"context_line":"                       \u0027compute_node_search_by_hypervisor\u0027,"},{"line_number":521,"context_line":"                       new_fake_compute_node_search_by_hypervisor)"},{"line_number":522,"context_line":"        self.stubs.Set(self.controller.host_api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_d1f6a3d6","line":519,"range":{"start_line":519,"start_character":8,"end_line":519,"end_character":22},"updated":"2016-11-23 18:22:33.000000000","message":"We don\u0027t allow any new tests to use this function. I can be replaced with self.stub_out\n\nI would rather you used mock instead though.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"0e17352265315b6f29d5a6619b88d0dcf52442aa","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                    results.append(inst_obj)"},{"line_number":517,"context_line":"            return results"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"        self.stubs.Set(self.controller.host_api,"},{"line_number":520,"context_line":"                       \u0027compute_node_search_by_hypervisor\u0027,"},{"line_number":521,"context_line":"                       new_fake_compute_node_search_by_hypervisor)"},{"line_number":522,"context_line":"        self.stubs.Set(self.controller.host_api,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_5280ba46","line":519,"range":{"start_line":519,"start_character":8,"end_line":519,"end_character":22},"in_reply_to":"5a74a57a_d1f6a3d6","updated":"2016-11-24 07:32:07.000000000","message":"ok","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":542,"context_line":"            servers \u003d output[\u0027servers\u0027]"},{"line_number":543,"context_line":"            for server in servers:"},{"line_number":544,"context_line":"                del server[\u0027name\u0027]"},{"line_number":545,"context_line":"        self.assertEqual(result, dict(hypervisors\u003dexpected_dict))"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    def test_statistics(self):"},{"line_number":548,"context_line":"        req \u003d self._get_request(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_91a42b58","line":545,"updated":"2016-11-23 18:22:33.000000000","message":"I am not quite understand why we can\u0027t just add inst5 and hyper3 at the top of this file. This test seems very complicated.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"0e17352265315b6f29d5a6619b88d0dcf52442aa","unresolved":false,"context_lines":[{"line_number":542,"context_line":"            servers \u003d output[\u0027servers\u0027]"},{"line_number":543,"context_line":"            for server in servers:"},{"line_number":544,"context_line":"                del server[\u0027name\u0027]"},{"line_number":545,"context_line":"        self.assertEqual(result, dict(hypervisors\u003dexpected_dict))"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    def test_statistics(self):"},{"line_number":548,"context_line":"        req \u003d self._get_request(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_d2e3ea31","line":545,"in_reply_to":"5a74a57a_91a42b58","updated":"2016-11-24 07:32:07.000000000","message":"host\u003d\"compute2\" has two hypervisor, \"hyper2\" and \"hyper3\".","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dec943a1b22d91cc0f2ff0cc95b5158b19a4ec5e","unresolved":false,"context_lines":[{"line_number":649,"context_line":"        return self.TEST_HYPERS_OBJ"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"    def get_test_servers(self):"},{"line_number":652,"context_line":"        return self.TEST_SERVERS"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"    def setUp(self):"},{"line_number":655,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_9140ab58","line":652,"updated":"2016-11-23 18:22:33.000000000","message":"Oh, so I guess this is why you created those functions, I would still rather look at adding things into the main lists.","commit_id":"8ae8560420bf5e36d42328a2293e8a56854b0f86"}]}
