)]}'
{"watcher/common/nova_helper.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"95aeb56e768393fa4685a5d94562f1e2df63b080","unresolved":false,"context_lines":[{"line_number":649,"context_line":"                self.nova.servers.list(search_opts\u003d{\"all_tenants\": True})"},{"line_number":650,"context_line":"                if self.get_hostname(instance) \u003d\u003d host]"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def get_all_instances(self):"},{"line_number":653,"context_line":"        return [instance for instance in"},{"line_number":654,"context_line":"                self.nova.servers.list(search_opts\u003d{\"all_tenants\": True})]"},{"line_number":655,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_9bdaca15","line":652,"range":{"start_line":652,"start_character":8,"end_line":652,"end_character":25},"updated":"2016-12-16 16:56:04.000000000","message":"should return a hash dict with \u0027node.hostname\u0027 as key","commit_id":"2a167688dff00831c1d29e47665c314af1a27aad"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1497db9c64400063797695f649617fe6a43b847d","unresolved":false,"context_lines":[{"line_number":649,"context_line":"                self.nova.servers.list(search_opts\u003d{\"all_tenants\": True})"},{"line_number":650,"context_line":"                if self.get_hostname(instance) \u003d\u003d host]"},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"    def get_all_instances(self):"},{"line_number":653,"context_line":"        return [instance for instance in"},{"line_number":654,"context_line":"                self.nova.servers.list(search_opts\u003d{\"all_tenants\": True})]"},{"line_number":655,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_cc2cf3ae","line":652,"range":{"start_line":652,"start_character":8,"end_line":652,"end_character":25},"in_reply_to":"1a6eadb0_9bdaca15","updated":"2016-12-21 05:45:14.000000000","message":"Done","commit_id":"2a167688dff00831c1d29e47665c314af1a27aad"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"8665f243e59f0eaa13ceb952226b6abd340b333f","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        for node in self.get_compute_node_list():"},{"line_number":657,"context_line":"            dict[node.hypervisor_hostname] \u003d ("},{"line_number":658,"context_line":"                [instance for instance in instances"},{"line_number":659,"context_line":"                 if self.get_hostname(instance) \u003d\u003d node.hypervisor_hostname])"},{"line_number":660,"context_line":"        return dict"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def get_hostname(self, instance):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_7c8df0d1","line":659,"range":{"start_line":659,"start_character":18,"end_line":659,"end_character":77},"updated":"2017-01-09 08:00:26.000000000","message":"https://github.com/openstack/nova/blob/master/api-ref/source/parameters.yaml#L3245~L3256\n\nOS-EXT-SRV-ATTR:hypervisor_hostname is fit for node.hypervisor_hostname.\n\nSo, I think use this code is more fitting:\nif self.get_nodename(instance) \u003d\u003d node.hypervisor_hostname])\n\ndef get_nodename(self, instance):\n    return str(getattr(instance, \u0027OS-EXT-SRV-ATTR:hypervisor_hostname\u0027))","commit_id":"b95b42cebd26f526648d8a53c17dadfc87087045"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"f1e2f09c106c217a1f92c73b89c71a266cc56bc3","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        for node in self.get_compute_node_list():"},{"line_number":657,"context_line":"            dict[node.hypervisor_hostname] \u003d ("},{"line_number":658,"context_line":"                [instance for instance in instances"},{"line_number":659,"context_line":"                 if self.get_hostname(instance) \u003d\u003d node.hypervisor_hostname])"},{"line_number":660,"context_line":"        return dict"},{"line_number":661,"context_line":""},{"line_number":662,"context_line":"    def get_hostname(self, instance):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_82baff6c","line":659,"range":{"start_line":659,"start_character":18,"end_line":659,"end_character":77},"in_reply_to":"ba5201f7_7c8df0d1","updated":"2017-01-10 06:29:47.000000000","message":"Done","commit_id":"b95b42cebd26f526648d8a53c17dadfc87087045"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"67768a0cbedc8129de5d87e6fadea2614809cebd","unresolved":false,"context_lines":[{"line_number":652,"context_line":"    def get_all_instances(self):"},{"line_number":653,"context_line":"        instances \u003d [instance for instance in"},{"line_number":654,"context_line":"                     self.nova.servers.list(search_opts\u003d{\"all_tenants\": True})]"},{"line_number":655,"context_line":"        dict \u003d {}"},{"line_number":656,"context_line":"        for node in self.get_compute_node_list():"},{"line_number":657,"context_line":"            dict[node.hypervisor_hostname] \u003d ("},{"line_number":658,"context_line":"                [instance for instance in instances"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_cb735fb3","line":655,"range":{"start_line":655,"start_character":8,"end_line":655,"end_character":12},"updated":"2017-01-13 09:21:18.000000000","message":"dict is not good name for this context since it is reserved word.","commit_id":"5cd94014c8c115ff0e15818e54c9cd3e9969ea0e"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"9b237fd80f9a1fedc60eeea35ca8acff8e7457c6","unresolved":false,"context_lines":[{"line_number":652,"context_line":"    def get_all_instances(self):"},{"line_number":653,"context_line":"        instances \u003d [instance for instance in"},{"line_number":654,"context_line":"                     self.nova.servers.list(search_opts\u003d{\"all_tenants\": True})]"},{"line_number":655,"context_line":"        dict \u003d {}"},{"line_number":656,"context_line":"        for node in self.get_compute_node_list():"},{"line_number":657,"context_line":"            dict[node.hypervisor_hostname] \u003d ("},{"line_number":658,"context_line":"                [instance for instance in instances"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_5131b90a","line":655,"range":{"start_line":655,"start_character":8,"end_line":655,"end_character":12},"in_reply_to":"7a3c09a3_cb735fb3","updated":"2017-01-14 02:31:34.000000000","message":"Done","commit_id":"5cd94014c8c115ff0e15818e54c9cd3e9969ea0e"}],"watcher/decision_engine/model/collector/nova.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"95aeb56e768393fa4685a5d94562f1e2df63b080","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            node.state \u003d n.state"},{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            for v in instances:"},{"line_number":93,"context_line":"                if self.wrapper.get_hostname(v) !\u003d str(service.host):"},{"line_number":94,"context_line":"                    continue"},{"line_number":95,"context_line":"                # create VM in cluster_model_collector"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_3828dc32","line":92,"range":{"start_line":92,"start_character":16,"end_line":92,"end_character":17},"updated":"2016-12-16 16:56:04.000000000","message":"for readability, please use another variable name","commit_id":"2a167688dff00831c1d29e47665c314af1a27aad"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1497db9c64400063797695f649617fe6a43b847d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            node.state \u003d n.state"},{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            for v in instances:"},{"line_number":93,"context_line":"                if self.wrapper.get_hostname(v) !\u003d str(service.host):"},{"line_number":94,"context_line":"                    continue"},{"line_number":95,"context_line":"                # create VM in cluster_model_collector"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_0c198b88","line":92,"range":{"start_line":92,"start_character":16,"end_line":92,"end_character":17},"in_reply_to":"1a6eadb0_3828dc32","updated":"2016-12-21 05:45:14.000000000","message":"Done","commit_id":"2a167688dff00831c1d29e47665c314af1a27aad"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"95aeb56e768393fa4685a5d94562f1e2df63b080","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            for v in instances:"},{"line_number":93,"context_line":"                if self.wrapper.get_hostname(v) !\u003d str(service.host):"},{"line_number":94,"context_line":"                    continue"},{"line_number":95,"context_line":"                # create VM in cluster_model_collector"},{"line_number":96,"context_line":"                instance \u003d element.Instance()"},{"line_number":97,"context_line":"                instance.uuid \u003d v.id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_3b7e166a","line":94,"range":{"start_line":93,"start_character":16,"end_line":94,"end_character":28},"updated":"2016-12-16 16:56:04.000000000","message":"I think you should use a dict to filter instances per host, i.e.\n_instances \u003d instances[service.host]\n\nbut instances should be a hashed dict built from self.wrapper.get_all_instance()\n\nIt will be more efficient.","commit_id":"2a167688dff00831c1d29e47665c314af1a27aad"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"a0bae216b113e15c47c880d776917518e58f3546","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            for v in instances:"},{"line_number":93,"context_line":"                if self.wrapper.get_hostname(v) !\u003d str(service.host):"},{"line_number":94,"context_line":"                    continue"},{"line_number":95,"context_line":"                # create VM in cluster_model_collector"},{"line_number":96,"context_line":"                instance \u003d element.Instance()"},{"line_number":97,"context_line":"                instance.uuid \u003d v.id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_d3ba350a","line":94,"range":{"start_line":93,"start_character":16,"end_line":94,"end_character":28},"in_reply_to":"1a6eadb0_3b7e166a","updated":"2016-12-19 11:09:32.000000000","message":"+1","commit_id":"2a167688dff00831c1d29e47665c314af1a27aad"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1497db9c64400063797695f649617fe6a43b847d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            for v in instances:"},{"line_number":93,"context_line":"                if self.wrapper.get_hostname(v) !\u003d str(service.host):"},{"line_number":94,"context_line":"                    continue"},{"line_number":95,"context_line":"                # create VM in cluster_model_collector"},{"line_number":96,"context_line":"                instance \u003d element.Instance()"},{"line_number":97,"context_line":"                instance.uuid \u003d v.id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_2c1e4770","line":94,"range":{"start_line":93,"start_character":16,"end_line":94,"end_character":28},"in_reply_to":"1a6eadb0_3b7e166a","updated":"2016-12-21 05:45:14.000000000","message":"Done","commit_id":"2a167688dff00831c1d29e47665c314af1a27aad"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1497db9c64400063797695f649617fe6a43b847d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            for v in instances:"},{"line_number":93,"context_line":"                if self.wrapper.get_hostname(v) !\u003d str(service.host):"},{"line_number":94,"context_line":"                    continue"},{"line_number":95,"context_line":"                # create VM in cluster_model_collector"},{"line_number":96,"context_line":"                instance \u003d element.Instance()"},{"line_number":97,"context_line":"                instance.uuid \u003d v.id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_6c14bf4c","line":94,"range":{"start_line":93,"start_character":16,"end_line":94,"end_character":28},"in_reply_to":"1a6eadb0_d3ba350a","updated":"2016-12-21 05:45:14.000000000","message":"Done","commit_id":"2a167688dff00831c1d29e47665c314af1a27aad"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"2ce5ccabb7af5e88539eed49f223358c4ac1a5fe","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            node.state \u003d n.state"},{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            instances_in_node \u003d instances[node.hostname]"},{"line_number":93,"context_line":"            for vm in instances_in_node:"},{"line_number":94,"context_line":"                # create VM in cluster_model_collector"},{"line_number":95,"context_line":"                instance \u003d element.Instance()"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_6bb4c6d0","line":92,"range":{"start_line":92,"start_character":32,"end_line":92,"end_character":56},"updated":"2016-12-26 08:14:16.000000000","message":"Does instances use \u0027host\u0027 as key?\nI think the result of self.wrapper.get_all_instances() is like this: {instance1.uuid: instance1, instance2.uuid: instance2}.","commit_id":"b95b42cebd26f526648d8a53c17dadfc87087045"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"308099431ca34565a3c3940729daa1d351712274","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            node.state \u003d n.state"},{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            instances_in_node \u003d instances[node.hostname]"},{"line_number":93,"context_line":"            for vm in instances_in_node:"},{"line_number":94,"context_line":"                # create VM in cluster_model_collector"},{"line_number":95,"context_line":"                instance \u003d element.Instance()"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_a6d7c5bd","line":92,"range":{"start_line":92,"start_character":32,"end_line":92,"end_character":56},"in_reply_to":"da4df55a_6bb4c6d0","updated":"2016-12-26 09:02:04.000000000","message":"get_all_instances() returns like{host1: [instance1, instance2], host2: [instance1, instance2]...}. \nHere we need to know the instances on different hosts","commit_id":"b95b42cebd26f526648d8a53c17dadfc87087045"},{"author":{"_account_id":12813,"name":"Rong Han","email":"han.rong3@zte.com.cn","username":"hanrong-zte"},"change_message_id":"8665f243e59f0eaa13ceb952226b6abd340b333f","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            node.state \u003d n.state"},{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            instances_in_node \u003d instances[node.hostname]"},{"line_number":93,"context_line":"            for vm in instances_in_node:"},{"line_number":94,"context_line":"                # create VM in cluster_model_collector"},{"line_number":95,"context_line":"                instance \u003d element.Instance()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba5201f7_bca038f5","line":92,"range":{"start_line":92,"start_character":32,"end_line":92,"end_character":56},"in_reply_to":"da4df55a_a6d7c5bd","updated":"2017-01-09 08:00:26.000000000","message":"ok.","commit_id":"b95b42cebd26f526648d8a53c17dadfc87087045"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2d21f9a57cb3d2fc932de87c42b584592e1c33fc","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        model.create_resource(disk_capacity)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        flavor_cache \u003d {}"},{"line_number":76,"context_line":"        nodes \u003d self.wrapper.get_compute_node_list()"},{"line_number":77,"context_line":"        instances \u003d self.wrapper.get_all_instances()"},{"line_number":78,"context_line":"        for n in nodes:"},{"line_number":79,"context_line":"            service \u003d self.wrapper.nova.services.find(id\u003dn.service[\u0027id\u0027])"},{"line_number":80,"context_line":"            # create node in cluster_model_collector"},{"line_number":81,"context_line":"            node \u003d element.ComputeNode(n.id)"},{"line_number":82,"context_line":"            node.uuid \u003d service.host"},{"line_number":83,"context_line":"            node.hostname \u003d n.hypervisor_hostname"},{"line_number":84,"context_line":"            # set capacity"},{"line_number":85,"context_line":"            mem.set_capacity(node, n.memory_mb)"},{"line_number":86,"context_line":"            disk.set_capacity(node, n.free_disk_gb)"},{"line_number":87,"context_line":"            disk_capacity.set_capacity(node, n.local_gb)"},{"line_number":88,"context_line":"            num_cores.set_capacity(node, n.vcpus)"},{"line_number":89,"context_line":"            node.state \u003d n.state"},{"line_number":90,"context_line":"            node.status \u003d n.status"},{"line_number":91,"context_line":"            model.add_node(node)"},{"line_number":92,"context_line":"            instances_in_node \u003d instances[node.hostname]"},{"line_number":93,"context_line":"            for vm in instances_in_node:"},{"line_number":94,"context_line":"                # create VM in cluster_model_collector"},{"line_number":95,"context_line":"                instance \u003d element.Instance()"},{"line_number":96,"context_line":"                instance.uuid \u003d vm.id"},{"line_number":97,"context_line":"                # nova/nova/compute/instance_states.py"},{"line_number":98,"context_line":"                instance.state \u003d getattr(vm, \u0027OS-EXT-STS:vm_state\u0027)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"                # set capacity"},{"line_number":101,"context_line":"                self.wrapper.get_flavor_instance(vm, flavor_cache)"},{"line_number":102,"context_line":"                mem.set_capacity(instance, vm.flavor[\u0027ram\u0027])"},{"line_number":103,"context_line":"                # FIXME: update all strategies to use disk_capacity"},{"line_number":104,"context_line":"                # for instances instead of disk"},{"line_number":105,"context_line":"                disk.set_capacity(instance, vm.flavor[\u0027disk\u0027])"},{"line_number":106,"context_line":"                disk_capacity.set_capacity(instance, vm.flavor[\u0027disk\u0027])"},{"line_number":107,"context_line":"                num_cores.set_capacity(instance, vm.flavor[\u0027vcpus\u0027])"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"                model.map_instance(instance, node)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        return model"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_0c73ccb2","line":111,"range":{"start_line":76,"start_character":0,"end_line":111,"end_character":20},"updated":"2017-01-26 15:34:31.000000000","message":"This file has been totally overhauled to introduce the graph model blueprint. So I don\u0027t know if you\u0027ll be able to optimize this.","commit_id":"6ce6e5d9f14cc11c957896471d72762805f048ec"}]}
