)]}'
{"watcher/decision_engine/goal/__init__.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"3075cef92a8e0b2f6cfc1bd2c98f8a00b3b256ff","unresolved":false,"context_lines":[{"line_number":21,"context_line":"ThermalOptimization \u003d goals.ThermalOptimization"},{"line_number":22,"context_line":"Unclassified \u003d goals.Unclassified"},{"line_number":23,"context_line":"WorkloadBalancing \u003d goals.WorkloadBalancing"},{"line_number":24,"context_line":"NoisyNeighbor \u003d goals.NoisyNeighbor"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"__all__ \u003d (\"Dummy\", \"ServerConsolidation\", \"ThermalOptimization\","},{"line_number":27,"context_line":"           \"Unclassified\", \"WorkloadBalancing\", \"NoisyNeighbor\",)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f013ff3_2d7299e4","line":24,"range":{"start_line":24,"start_character":22,"end_line":24,"end_character":35},"updated":"2017-05-16 15:49:06.000000000","message":"IMHO, we should call it NoisyNeighborOptimization as you indicate in the docstring of the next file","commit_id":"8fbf327f3efc39ff0ea9a0bd5cf2b74e489de5bd"}],"watcher/decision_engine/goal/goals.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"3075cef92a8e0b2f6cfc1bd2c98f8a00b3b256ff","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        return specs.Unclassified()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"class NoisyNeighbor(base.Goal):"},{"line_number":172,"context_line":"    \"\"\"NoisyNeighborOptimization"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    This goal is used to identify and migrate a Noisy Neighbor -"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f013ff3_ed7b91bb","line":171,"range":{"start_line":171,"start_character":6,"end_line":171,"end_character":19},"updated":"2017-05-16 15:49:06.000000000","message":"How about NoisyNeighborOptimization as you indicate in the docstring?","commit_id":"8fbf327f3efc39ff0ea9a0bd5cf2b74e489de5bd"}],"watcher/decision_engine/strategy/strategies/__init__.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"3075cef92a8e0b2f6cfc1bd2c98f8a00b3b256ff","unresolved":false,"context_lines":[{"line_number":33,"context_line":"WorkloadBalance \u003d workload_balance.WorkloadBalance"},{"line_number":34,"context_line":"WorkloadStabilization \u003d workload_stabilization.WorkloadStabilization"},{"line_number":35,"context_line":"UniformAirflow \u003d uniform_airflow.UniformAirflow"},{"line_number":36,"context_line":"NoisyNeighbor \u003d noisy_neighbor.NoisyNeighbor"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"__all__ \u003d (\"BasicConsolidation\", \"OutletTempControl\", \"DummyStrategy\","},{"line_number":39,"context_line":"           \"DummyWithScorer\", \"VMWorkloadConsolidation\", \"WorkloadBalance\","}],"source_content_type":"text/x-python","patch_set":1,"id":"1f013ff3_88a51b07","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":13},"updated":"2017-05-16 15:49:06.000000000","message":"Isn\u0027t this algorithm meant to only focus on CPU cache? If so, maybe it should be called something like ComputeNoisyNeighbor to show it\u0027s not really multi-dimensional","commit_id":"8fbf327f3efc39ff0ea9a0bd5cf2b74e489de5bd"}],"watcher/decision_engine/strategy/strategies/noisy_neighbor.py":[{"author":{"_account_id":21361,"name":"Chris Spencer","email":"christopher.m.spencer@intel.com","username":"chrisspencer"},"change_message_id":"5ac4ee1f2e20c2e9c1f3b166174a233f62836af8","unresolved":false,"context_lines":[{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"from oslo_log import log"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from watcher._i18n import _, _LW, _LI"},{"line_number":22,"context_line":"from watcher.common import exception as wexc"},{"line_number":23,"context_line":"from watcher.datasource import ceilometer as ceil"},{"line_number":24,"context_line":"from watcher.decision_engine.strategy.strategies import base"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_dbed088c","line":21,"range":{"start_line":21,"start_character":27,"end_line":21,"end_character":37},"updated":"2017-04-07 14:45:57.000000000","message":"remove","commit_id":"8fbf327f3efc39ff0ea9a0bd5cf2b74e489de5bd"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"3075cef92a8e0b2f6cfc1bd2c98f8a00b3b256ff","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            },"},{"line_number":100,"context_line":"        }"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def find_priority_and_noisy_instances(self):"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        nodes \u003d self.compute_model.get_all_compute_nodes()"},{"line_number":105,"context_line":"        size_cluster \u003d len(nodes)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f013ff3_6812cf0b","line":102,"range":{"start_line":102,"start_character":8,"end_line":102,"end_character":41},"updated":"2017-05-16 15:49:06.000000000","message":"this method is way too big. Can you break it down into smaller ones?\nEach loop looks like it can become a separate function for example.","commit_id":"8fbf327f3efc39ff0ea9a0bd5cf2b74e489de5bd"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"3075cef92a8e0b2f6cfc1bd2c98f8a00b3b256ff","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"                for potential_priority_instance in instance_priority_list:"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"                    instructions_1 \u003d \\"},{"line_number":133,"context_line":"                        self.ceilometer.statistic_aggregation("},{"line_number":134,"context_line":"                            resource_id\u003dpotential_priority_instance.uuid,"},{"line_number":135,"context_line":"                            meter_name\u003dself.meter_name_instructions,"},{"line_number":136,"context_line":"                            period\u003d100,"},{"line_number":137,"context_line":"                            aggregate\u003d\u0027avg\u0027)"},{"line_number":138,"context_line":"                    instructions_2 \u003d 2 * ("},{"line_number":139,"context_line":"                        self.ceilometer.statistic_aggregation("},{"line_number":140,"context_line":"                            resource_id\u003dpotential_priority_instance.uuid,"},{"line_number":141,"context_line":"                            meter_name\u003dself.meter_name_instructions,"},{"line_number":142,"context_line":"                            period\u003d200, aggregate\u003d\u0027avg\u0027)) - \\"},{"line_number":143,"context_line":"                        instructions_1"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"                    instructions_3 \u003d 3 * ("},{"line_number":146,"context_line":"                        self.ceilometer.statistic_aggregation("},{"line_number":147,"context_line":"                            resource_id\u003dpotential_priority_instance.uuid,"},{"line_number":148,"context_line":"                            meter_name\u003dself.meter_name_instructions,"},{"line_number":149,"context_line":"                            period\u003d300, aggregate\u003d\u0027avg\u0027)) - \\"},{"line_number":150,"context_line":"                        instructions_1 - instructions_2"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"                    cpu_cycles_1 \u003d \\"},{"line_number":153,"context_line":"                        self.ceilometer.statistic_aggregation("},{"line_number":154,"context_line":"                            resource_id\u003dpotential_priority_instance.uuid,"},{"line_number":155,"context_line":"                            meter_name\u003dself.meter_name_cpu_cycles, period\u003d100,"},{"line_number":156,"context_line":"                            aggregate\u003d\u0027avg\u0027)"},{"line_number":157,"context_line":"                    cpu_cycles_2 \u003d 2 * ("},{"line_number":158,"context_line":"                        self.ceilometer.statistic_aggregation("},{"line_number":159,"context_line":"                            resource_id\u003dpotential_priority_instance.uuid,"},{"line_number":160,"context_line":"                            meter_name\u003dself.meter_name_cpu_cycles,"},{"line_number":161,"context_line":"                            period\u003d200, aggregate\u003d\u0027avg\u0027)) - cpu_cycles_1"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"                    cpu_cycles_3 \u003d 3 * ("},{"line_number":164,"context_line":"                        self.ceilometer.statistic_aggregation("},{"line_number":165,"context_line":"                            resource_id\u003dpotential_priority_instance.uuid,"},{"line_number":166,"context_line":"                            meter_name\u003dself.meter_name_cpu_cycles,"},{"line_number":167,"context_line":"                            period\u003d300, aggregate\u003d\u0027avg\u0027)) - \\"},{"line_number":168,"context_line":"                        (cpu_cycles_1 + cpu_cycles_2)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"                    if None in ("},{"line_number":171,"context_line":"                        instructions_1, instructions_2,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f013ff3_48ccb369","line":168,"range":{"start_line":132,"start_character":20,"end_line":168,"end_character":53},"updated":"2017-05-16 15:49:06.000000000","message":"IMHO you can factorize this to make it more concise :)","commit_id":"8fbf327f3efc39ff0ea9a0bd5cf2b74e489de5bd"},{"author":{"_account_id":21361,"name":"Chris Spencer","email":"christopher.m.spencer@intel.com","username":"chrisspencer"},"change_message_id":"5ac4ee1f2e20c2e9c1f3b166174a233f62836af8","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                        instructions_1, instructions_2,"},{"line_number":172,"context_line":"                        instructions_3, cpu_cycles_1,"},{"line_number":173,"context_line":"                            cpu_cycles_2, cpu_cycles_3):"},{"line_number":174,"context_line":"                        LOG.warning(_LW(\"Ceilometer unable to pick L3 Cache \""},{"line_number":175,"context_line":"                                        \"or IPC values. Skipping the node\"))"},{"line_number":176,"context_line":"                        break"},{"line_number":177,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_dbd4e8bf","line":174,"range":{"start_line":174,"start_character":36,"end_line":174,"end_character":39},"updated":"2017-04-07 14:45:57.000000000","message":"remove","commit_id":"8fbf327f3efc39ff0ea9a0bd5cf2b74e489de5bd"},{"author":{"_account_id":21361,"name":"Chris Spencer","email":"christopher.m.spencer@intel.com","username":"chrisspencer"},"change_message_id":"5ac4ee1f2e20c2e9c1f3b166174a233f62836af8","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                                noisy_current_cache"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"                            if None in (noisy_current_cache, noisy_prev_cache):"},{"line_number":231,"context_line":"                                LOG.warning(_LW(\"Ceilometer unable to pick \""},{"line_number":232,"context_line":"                                                \"L3 Cache or IPC values. \""},{"line_number":233,"context_line":"                                                \"Skipping the node\"))"},{"line_number":234,"context_line":"                                break_flag \u003d 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_1bcb701e","line":231,"range":{"start_line":231,"start_character":44,"end_line":231,"end_character":47},"updated":"2017-04-07 14:45:57.000000000","message":"remove","commit_id":"8fbf327f3efc39ff0ea9a0bd5cf2b74e489de5bd"},{"author":{"_account_id":21361,"name":"Chris Spencer","email":"christopher.m.spencer@intel.com","username":"chrisspencer"},"change_message_id":"5ac4ee1f2e20c2e9c1f3b166174a233f62836af8","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                                                instance_to_migrate)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        if len(dest_servers) \u003d\u003d 0:"},{"line_number":328,"context_line":"            LOG.info(_LI(\"No proper target host could be found\"))"},{"line_number":329,"context_line":"            return self.solution"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        mig_destination_node \u003d dest_servers[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_bb56c45b","line":328,"range":{"start_line":328,"start_character":21,"end_line":328,"end_character":24},"updated":"2017-04-07 14:45:57.000000000","message":"remove","commit_id":"8fbf327f3efc39ff0ea9a0bd5cf2b74e489de5bd"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"dbdd078a2c60a54171faaea40efb7a47db6de7de","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            },"},{"line_number":83,"context_line":"        }"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def find_priority_and_noisy_instances(self):"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        nodes \u003d self.compute_model.get_all_compute_nodes()"},{"line_number":88,"context_line":"        size_cluster \u003d len(nodes)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_5738f83b","line":85,"range":{"start_line":85,"start_character":3,"end_line":85,"end_character":48},"updated":"2017-05-26 04:37:45.000000000","message":"This function is too complicated, should be broke into few sub-routines. Please also add more comments inline.\nPlease also keep in mind that there are other noisy neighbor scenarios, so find priority should be implemented as a separated function.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"dbdd078a2c60a54171faaea40efb7a47db6de7de","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                for instance in instances_of_node:"},{"line_number":105,"context_line":"                    instance_priority_list.append(instance)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"                instance_priority_list.sort(key\u003dlambda a: a.metadata["},{"line_number":108,"context_line":"                                            \u0027watcher-priority\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"                instance_priority_list_reverse \u003d list(instance_priority_list)"},{"line_number":111,"context_line":"                instance_priority_list_reverse.reverse()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"                for potential_priority_instance in instance_priority_list:"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_f746ecc0","line":111,"range":{"start_line":107,"start_character":0,"end_line":111,"end_character":56},"updated":"2017-05-26 04:37:45.000000000","message":"Is it necessary to have both instance_priority_list and instance_priority_list_reverse?","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"39f14ca7839551649d16a1878e52307def744a19","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                for instance in instances_of_node:"},{"line_number":105,"context_line":"                    instance_priority_list.append(instance)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"                instance_priority_list.sort(key\u003dlambda a: a.metadata["},{"line_number":108,"context_line":"                                            \u0027watcher-priority\u0027])"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"                instance_priority_list_reverse \u003d list(instance_priority_list)"},{"line_number":111,"context_line":"                instance_priority_list_reverse.reverse()"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"                for potential_priority_instance in instance_priority_list:"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_6060adcf","line":111,"range":{"start_line":107,"start_character":0,"end_line":111,"end_character":56},"in_reply_to":"ff0f0b1f_f746ecc0","updated":"2017-05-30 20:02:17.000000000","message":"yes. we need to keep track of both.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0b837f1c4e251a55f90967051949466761aab874","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                    if (current_cache \u003c (1 - (self.cache_threshold / 100)) *"},{"line_number":132,"context_line":"                            previous_cache):"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"                        for potential_noisy_instance in \\"},{"line_number":135,"context_line":"                                instance_priority_list_reverse:"},{"line_number":136,"context_line":"                            if(potential_noisy_instance \u003d\u003d"},{"line_number":137,"context_line":"                               potential_priority_instance):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_695d8a77","line":134,"range":{"start_line":134,"start_character":55,"end_line":134,"end_character":57},"updated":"2017-05-25 02:39:41.000000000","message":"Could you use wrap long lines in parentheses and not a backslash for line continuation?\nSee: https://docs.openstack.org/developer/hacking/#general","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0b837f1c4e251a55f90967051949466761aab874","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                               potential_priority_instance):"},{"line_number":138,"context_line":"                                break"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"                            noisy_current_cache \u003d \\"},{"line_number":141,"context_line":"                                self.ceilometer.statistic_aggregation("},{"line_number":142,"context_line":"                                    resource_id\u003dpotential_noisy_instance.uuid,"},{"line_number":143,"context_line":"                                    meter_name\u003dself.meter_name_l3, period\u003d100,"},{"line_number":144,"context_line":"                                    aggregate\u003d\u0027avg\u0027)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"                            noisy_prev_cache \u003d 2 * ("},{"line_number":147,"context_line":"                                self.ceilometer.statistic_aggregation("}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_e9975a44","line":144,"range":{"start_line":140,"start_character":28,"end_line":144,"end_character":52},"updated":"2017-05-25 02:39:41.000000000","message":"This duplicates L115 - L118. Could you develop get_current_cache method?","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"dbdd078a2c60a54171faaea40efb7a47db6de7de","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                               potential_priority_instance):"},{"line_number":138,"context_line":"                                break"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"                            noisy_current_cache \u003d \\"},{"line_number":141,"context_line":"                                self.ceilometer.statistic_aggregation("},{"line_number":142,"context_line":"                                    resource_id\u003dpotential_noisy_instance.uuid,"},{"line_number":143,"context_line":"                                    meter_name\u003dself.meter_name_l3, period\u003d100,"},{"line_number":144,"context_line":"                                    aggregate\u003d\u0027avg\u0027)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"                            noisy_prev_cache \u003d 2 * ("},{"line_number":147,"context_line":"                                self.ceilometer.statistic_aggregation("}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_7c33e363","line":144,"range":{"start_line":140,"start_character":28,"end_line":144,"end_character":52},"in_reply_to":"ff0f0b1f_e9975a44","updated":"2017-05-26 04:37:45.000000000","message":"+1\nTry to implement subroutines.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0b837f1c4e251a55f90967051949466761aab874","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                                    meter_name\u003dself.meter_name_l3, period\u003d100,"},{"line_number":144,"context_line":"                                    aggregate\u003d\u0027avg\u0027)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"                            noisy_prev_cache \u003d 2 * ("},{"line_number":147,"context_line":"                                self.ceilometer.statistic_aggregation("},{"line_number":148,"context_line":"                                    resource_id\u003dpotential_noisy_instance.uuid,"},{"line_number":149,"context_line":"                                    meter_name\u003dself.meter_name_l3,"},{"line_number":150,"context_line":"                                    period\u003d200, aggregate\u003d\u0027avg\u0027)) - \\"},{"line_number":151,"context_line":"                                noisy_current_cache"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"                            if None in (noisy_current_cache, noisy_prev_cache):"},{"line_number":154,"context_line":"                                LOG.warning(\"Ceilometer unable to pick \""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_09abae74","line":151,"range":{"start_line":146,"start_character":27,"end_line":151,"end_character":51},"updated":"2017-05-25 02:39:41.000000000","message":"This duplicates L120-L124. Could you develop get_prev_cache method?","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0b837f1c4e251a55f90967051949466761aab874","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"                            # This is where we decide if this is noisy vm. Can"},{"line_number":160,"context_line":"                            #  change 20 to any other value."},{"line_number":161,"context_line":"                            # Still deciding whether to take it as a param"},{"line_number":162,"context_line":"                            # from user."},{"line_number":163,"context_line":"                            if (noisy_current_cache \u003e (1 + (20 / 100) *"},{"line_number":164,"context_line":"                                                       noisy_prev_cache)):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_49fc066f","line":161,"range":{"start_line":161,"start_character":30,"end_line":161,"end_character":45},"updated":"2017-05-25 02:39:41.000000000","message":"When do you decide? :)","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"39f14ca7839551649d16a1878e52307def744a19","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"                            # This is where we decide if this is noisy vm. Can"},{"line_number":160,"context_line":"                            #  change 20 to any other value."},{"line_number":161,"context_line":"                            # Still deciding whether to take it as a param"},{"line_number":162,"context_line":"                            # from user."},{"line_number":163,"context_line":"                            if (noisy_current_cache \u003e (1 + (20 / 100) *"},{"line_number":164,"context_line":"                                                       noisy_prev_cache)):"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_a0700574","line":161,"range":{"start_line":161,"start_character":30,"end_line":161,"end_character":45},"in_reply_to":"ff0f0b1f_49fc066f","updated":"2017-05-30 20:02:17.000000000","message":":-)","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"dbdd078a2c60a54171faaea40efb7a47db6de7de","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                            #  change 20 to any other value."},{"line_number":161,"context_line":"                            # Still deciding whether to take it as a param"},{"line_number":162,"context_line":"                            # from user."},{"line_number":163,"context_line":"                            if (noisy_current_cache \u003e (1 + (20 / 100) *"},{"line_number":164,"context_line":"                                                       noisy_prev_cache)):"},{"line_number":165,"context_line":"                                hosts_need_release[node] \u003d {"},{"line_number":166,"context_line":"                                    \u0027priority_vm\u0027: potential_priority_instance,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_373d842c","line":163,"range":{"start_line":163,"start_character":55,"end_line":163,"end_character":68},"updated":"2017-05-26 04:37:45.000000000","message":"1. Please add code comments to explain this key algorithm and criteria of finding noisy neighbor \n2. Avoid hard coded numbers. IMHO this number should be defined as a configurable parameter.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"267de5de9692991c493b7307fef14b9735c84c94","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                            #  change 20 to any other value."},{"line_number":161,"context_line":"                            # Still deciding whether to take it as a param"},{"line_number":162,"context_line":"                            # from user."},{"line_number":163,"context_line":"                            if (noisy_current_cache \u003e (1 + (20 / 100) *"},{"line_number":164,"context_line":"                                                       noisy_prev_cache)):"},{"line_number":165,"context_line":"                                hosts_need_release[node] \u003d {"},{"line_number":166,"context_line":"                                    \u0027priority_vm\u0027: potential_priority_instance,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_e0a39d4e","line":163,"range":{"start_line":163,"start_character":55,"end_line":163,"end_character":68},"in_reply_to":"df140735_c0977990","updated":"2017-05-30 21:09:55.000000000","message":"Susanne, I don\u0027t have a simple threadhold algorithm. :) This is opensource maintained by community. Where do you think it is the best place for the document? I vote for code comments.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"39f14ca7839551649d16a1878e52307def744a19","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                            #  change 20 to any other value."},{"line_number":161,"context_line":"                            # Still deciding whether to take it as a param"},{"line_number":162,"context_line":"                            # from user."},{"line_number":163,"context_line":"                            if (noisy_current_cache \u003e (1 + (20 / 100) *"},{"line_number":164,"context_line":"                                                       noisy_prev_cache)):"},{"line_number":165,"context_line":"                                hosts_need_release[node] \u003d {"},{"line_number":166,"context_line":"                                    \u0027priority_vm\u0027: potential_priority_instance,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_c0977990","line":163,"range":{"start_line":163,"start_character":55,"end_line":163,"end_character":68},"in_reply_to":"ff0f0b1f_373d842c","updated":"2017-05-30 20:02:17.000000000","message":"Bin Zhou: please see the presentation that goes with the algorithm. We cannot explain everything in details because this is not your simple threadhold algorithm. We can take some of the content in our slides and add some information in the documentation but I do not feel this is the right place for a dissertation on the algorithm.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"dbdd078a2c60a54171faaea40efb7a47db6de7de","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                break_flag \u003d 1"},{"line_number":173,"context_line":"                                break"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"                    if break_flag \u003d\u003d 1:"},{"line_number":176,"context_line":"                        break"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            if node not in hosts_need_release:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_173a8033","line":175,"range":{"start_line":175,"start_character":20,"end_line":175,"end_character":39},"updated":"2017-05-26 04:37:45.000000000","message":"what the break_flag means? If possible, please use meaningful name. Should it be a bool type?","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"39f14ca7839551649d16a1878e52307def744a19","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                                break_flag \u003d 1"},{"line_number":173,"context_line":"                                break"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"                    if break_flag \u003d\u003d 1:"},{"line_number":176,"context_line":"                        break"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            if node not in hosts_need_release:"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_4005a9c1","line":175,"range":{"start_line":175,"start_character":20,"end_line":175,"end_character":39},"in_reply_to":"ff0f0b1f_173a8033","updated":"2017-05-30 20:02:17.000000000","message":"Agree on the more meaning full name.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0b837f1c4e251a55f90967051949466761aab874","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            cores_available \u003d host.vcpus - cores_used"},{"line_number":205,"context_line":"            disk_available \u003d host.disk - disk_used"},{"line_number":206,"context_line":"            mem_available \u003d host.memory - mem_used"},{"line_number":207,"context_line":"            if cores_available \u003e\u003d required_cores and disk_available \u003e\u003d \\"},{"line_number":208,"context_line":"                    required_disk and mem_available \u003e\u003d required_memory:"},{"line_number":209,"context_line":"                dest_servers.append(host)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_a91962d7","line":207,"range":{"start_line":207,"start_character":70,"end_line":207,"end_character":72},"updated":"2017-05-25 02:39:41.000000000","message":"Could you use wrap long lines in parentheses and not a backslash for line continuation?\nSee: https://docs.openstack.org/developer/hacking/#general","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"39f14ca7839551649d16a1878e52307def744a19","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            cores_available \u003d host.vcpus - cores_used"},{"line_number":205,"context_line":"            disk_available \u003d host.disk - disk_used"},{"line_number":206,"context_line":"            mem_available \u003d host.memory - mem_used"},{"line_number":207,"context_line":"            if cores_available \u003e\u003d required_cores and disk_available \u003e\u003d \\"},{"line_number":208,"context_line":"                    required_disk and mem_available \u003e\u003d required_memory:"},{"line_number":209,"context_line":"                dest_servers.append(host)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_60bc2d05","line":207,"range":{"start_line":207,"start_character":70,"end_line":207,"end_character":72},"in_reply_to":"ff0f0b1f_a91962d7","updated":"2017-05-30 20:02:17.000000000","message":"+1","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0b837f1c4e251a55f90967051949466761aab874","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        self.cache_threshold \u003d self.input_parameters.cache_threshold"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        LOG.debug(\"Initializing Noisy Neighbor strategy\")"},{"line_number":228,"context_line":"        hosts_need_release, hosts_target \u003d \\"},{"line_number":229,"context_line":"            self.find_priority_and_noisy_instances()"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        if len(hosts_need_release) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_4e29ac34","line":228,"range":{"start_line":228,"start_character":42,"end_line":228,"end_character":44},"updated":"2017-05-25 02:39:41.000000000","message":"Could you use wrap long lines in parentheses and not a backslash for line continuation?\nSee: https://docs.openstack.org/developer/hacking/#general","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"39f14ca7839551649d16a1878e52307def744a19","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        self.cache_threshold \u003d self.input_parameters.cache_threshold"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        LOG.debug(\"Initializing Noisy Neighbor strategy\")"},{"line_number":228,"context_line":"        hosts_need_release, hosts_target \u003d \\"},{"line_number":229,"context_line":"            self.find_priority_and_noisy_instances()"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        if len(hosts_need_release) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_200ab5d1","line":228,"range":{"start_line":228,"start_character":42,"end_line":228,"end_character":44},"in_reply_to":"ff0f0b1f_4e29ac34","updated":"2017-05-30 20:02:17.000000000","message":"+1","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0b837f1c4e251a55f90967051949466761aab874","unresolved":false,"context_lines":[{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        if len(hosts_target) \u003d\u003d 0:"},{"line_number":236,"context_line":"            LOG.debug(\"No hosts available to migrate\")"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        mig_source_node \u003d max(hosts_need_release.iterkeys(), key\u003dlambda a:"},{"line_number":239,"context_line":"                              hosts_need_release[a][\u0027priority_vm\u0027])"},{"line_number":240,"context_line":"        instance_to_migrate \u003d hosts_need_release[mig_source_node][\u0027noisy_vm\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_6e97d03b","line":237,"updated":"2017-05-25 02:39:41.000000000","message":"Why don\u0027t you add return self.solution here?\n\nCertainly, if len(hosts_target) \u003d\u003d 0, len(hosts_target) \u003d\u003d0 and finally return self.solution. But adding \u0027return self.solution\u0027 here is much simpler.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"dbdd078a2c60a54171faaea40efb7a47db6de7de","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":250,"context_line":"            return self.solution"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        mig_destination_node \u003d dest_servers[0]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        if self.compute_model.migrate_instance(instance_to_migrate,"},{"line_number":255,"context_line":"                                               mig_source_node,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_d7ee48b3","line":252,"range":{"start_line":252,"start_character":0,"end_line":252,"end_character":46},"updated":"2017-05-26 04:37:45.000000000","message":"This doesn\u0027t sound a very thoughtful decision to me. The decision may lead to unstable overall cloud performance, e.g. the migration of noisy neighbor will be detected as noisy neighbour again and then constantly bouncing between the servers.\nIMHO, the dest server should have no higher priority VMs than the noisy neighbor.\nMigration the noisy neighbor may not be the best solution. It is better to take the workload priority in to consideration at scheduling stage. For the particular noisy neighbor with catch contention, CPU pining can be a better choice at operation.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"47a565e70808de634f5ba919aefef85b9ad911fb","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":250,"context_line":"            return self.solution"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        mig_destination_node \u003d dest_servers[0]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        if self.compute_model.migrate_instance(instance_to_migrate,"},{"line_number":255,"context_line":"                                               mig_source_node,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_befdaf3b","line":252,"range":{"start_line":252,"start_character":0,"end_line":252,"end_character":46},"in_reply_to":"df140735_9bae942c","updated":"2017-05-31 14:41:49.000000000","message":"Us is Intel here. Bin Zhou I would surprised if somebody would be just deploying a strategy without tweaking it to their needs. This is true with all the other strategies too. We chose the server with the least amount of cache occupancy which gives us a good placement for an aggressor VM.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"ec7a096262f959ec7e401d1579c3bd31f2d6798b","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":250,"context_line":"            return self.solution"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        mig_destination_node \u003d dest_servers[0]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        if self.compute_model.migrate_instance(instance_to_migrate,"},{"line_number":255,"context_line":"                                               mig_source_node,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_7bb284e8","line":252,"range":{"start_line":252,"start_character":0,"end_line":252,"end_character":46},"in_reply_to":"df140735_befdaf3b","updated":"2017-05-31 16:29:33.000000000","message":"Susanne, thanks for clarifying the context of the patch. Choosing the server with least amount of cache occupancy make more sense. Although in the implementation, I don\u0027t see filter_dest_servers() being implemented accordingly. Looks to me, the function apply filters (CPU, RAM, Storage) and selected the first available one.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"267de5de9692991c493b7307fef14b9735c84c94","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":250,"context_line":"            return self.solution"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        mig_destination_node \u003d dest_servers[0]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        if self.compute_model.migrate_instance(instance_to_migrate,"},{"line_number":255,"context_line":"                                               mig_source_node,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_9bae942c","line":252,"range":{"start_line":252,"start_character":0,"end_line":252,"end_character":46},"in_reply_to":"df140735_e0d03d53","updated":"2017-05-30 21:09:55.000000000","message":"Susanne, who are \"us\" here? A user of the codes/algorithm need to know if it works for him/her also. The user also need to know in what situation this algorithm doesn\u0027t work. To me, it is perfect OK to detect the noisy neighbor and let user to decide where to migrate it. But it is not OK, if the migration of VM creates other performance issue. If the current implementation of migrating VM ALWAYS works to EVEVERYONE, then my concerns are not valid. Can you confirm and explain if it is the case? if so, I would be happy change my vote to +1.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":6437,"name":"Susanne Balle","email":"sleipnir012@gmail.com","username":"susanne-balle"},"change_message_id":"39f14ca7839551649d16a1878e52307def744a19","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":250,"context_line":"            return self.solution"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        mig_destination_node \u003d dest_servers[0]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        if self.compute_model.migrate_instance(instance_to_migrate,"},{"line_number":255,"context_line":"                                               mig_source_node,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_e0d03d53","line":252,"range":{"start_line":252,"start_character":0,"end_line":252,"end_character":46},"in_reply_to":"ff0f0b1f_d7ee48b3","updated":"2017-05-30 20:02:17.000000000","message":"Bin Zhou: please remember that this is what works for us. In the future as you need this strategy you can always feel free to add more interesting decision behind where you move the VM. We have the choice of a better destination host as one of our research topics but for now this works for us.","commit_id":"c7bbaacfec1130989751f34d48828c839d2e4a3e"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"efba0c8b25db18b449c364e2a3bfb4ed7ac75225","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        super(NoisyNeighbor, self).__init__(config, osc)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.meter_name_l3 \u003d self.METER_NAME_L3"},{"line_number":47,"context_line":"        self._ceilometer \u003d None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_92cc34bd","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":47},"updated":"2017-06-13 00:32:35.000000000","message":"self.meter_name \u003d self.METER_NAME_L3 is better.\nOtherwise this variable is not necessary.","commit_id":"cb7dd15b7b0e5134ef87c0a1b5649f682abb6dd8"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"defac09e9e052b5f4ba00d00fedb6e864155e594","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        super(NoisyNeighbor, self).__init__(config, osc)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        self.meter_name_l3 \u003d self.METER_NAME_L3"},{"line_number":47,"context_line":"        self._ceilometer \u003d None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_72b998e7","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":47},"in_reply_to":"7f231b9d_92cc34bd","updated":"2017-06-13 00:40:03.000000000","message":"Done","commit_id":"cb7dd15b7b0e5134ef87c0a1b5649f682abb6dd8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"efba0c8b25db18b449c364e2a3bfb4ed7ac75225","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def find_priority_instance(self, instance):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        current_cache \u003d self.ceilometer.statistic_aggregation("},{"line_number":93,"context_line":"            resource_id\u003dinstance.uuid,"},{"line_number":94,"context_line":"            meter_name\u003dself.meter_name_l3, period\u003dself.period,"},{"line_number":95,"context_line":"            aggregate\u003d\u0027avg\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        previous_cache \u003d 2 * ("},{"line_number":98,"context_line":"            self.ceilometer.statistic_aggregation("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_9241d40e","line":95,"range":{"start_line":92,"start_character":24,"end_line":95,"end_character":28},"updated":"2017-06-13 00:32:35.000000000","message":"This logic appears in find_noisy_instance again.\nCould you develop get_current_cache or something?","commit_id":"cb7dd15b7b0e5134ef87c0a1b5649f682abb6dd8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"35187c4a50accf492ffde51d09b29ee8b4ae611b","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def find_priority_instance(self, instance):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        current_cache \u003d self.ceilometer.statistic_aggregation("},{"line_number":93,"context_line":"            resource_id\u003dinstance.uuid,"},{"line_number":94,"context_line":"            meter_name\u003dself.meter_name_l3, period\u003dself.period,"},{"line_number":95,"context_line":"            aggregate\u003d\u0027avg\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        previous_cache \u003d 2 * ("},{"line_number":98,"context_line":"            self.ceilometer.statistic_aggregation("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_ad659147","line":95,"range":{"start_line":92,"start_character":24,"end_line":95,"end_character":28},"in_reply_to":"7f231b9d_72ae3899","updated":"2017-06-13 01:59:10.000000000","message":"Every time I check if you are calling same function, same parameter. That is noisy in noisy strategy :)","commit_id":"cb7dd15b7b0e5134ef87c0a1b5649f682abb6dd8"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"defac09e9e052b5f4ba00d00fedb6e864155e594","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def find_priority_instance(self, instance):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        current_cache \u003d self.ceilometer.statistic_aggregation("},{"line_number":93,"context_line":"            resource_id\u003dinstance.uuid,"},{"line_number":94,"context_line":"            meter_name\u003dself.meter_name_l3, period\u003dself.period,"},{"line_number":95,"context_line":"            aggregate\u003d\u0027avg\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        previous_cache \u003d 2 * ("},{"line_number":98,"context_line":"            self.ceilometer.statistic_aggregation("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_72ae3899","line":95,"range":{"start_line":92,"start_character":24,"end_line":95,"end_character":28},"in_reply_to":"7f231b9d_9241d40e","updated":"2017-06-13 00:40:03.000000000","message":"There is no logic in that. I\u0027m just calling a function. I\u0027m not sure if I need to write a function, with sole functionality of calling another function.\n\nIf you still want me to write a separate function, I will do it. :)","commit_id":"cb7dd15b7b0e5134ef87c0a1b5649f682abb6dd8"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"438c6a8e373ae5071c98c644962b6dc66044b43f","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def find_priority_instance(self, instance):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        current_cache \u003d self.ceilometer.statistic_aggregation("},{"line_number":93,"context_line":"            resource_id\u003dinstance.uuid,"},{"line_number":94,"context_line":"            meter_name\u003dself.meter_name_l3, period\u003dself.period,"},{"line_number":95,"context_line":"            aggregate\u003d\u0027avg\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        previous_cache \u003d 2 * ("},{"line_number":98,"context_line":"            self.ceilometer.statistic_aggregation("}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_6c1d3172","line":95,"range":{"start_line":92,"start_character":24,"end_line":95,"end_character":28},"in_reply_to":"7f231b9d_ad659147","updated":"2017-06-13 09:47:47.000000000","message":"Done","commit_id":"cb7dd15b7b0e5134ef87c0a1b5649f682abb6dd8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"efba0c8b25db18b449c364e2a3bfb4ed7ac75225","unresolved":false,"context_lines":[{"line_number":94,"context_line":"            meter_name\u003dself.meter_name_l3, period\u003dself.period,"},{"line_number":95,"context_line":"            aggregate\u003d\u0027avg\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        previous_cache \u003d 2 * ("},{"line_number":98,"context_line":"            self.ceilometer.statistic_aggregation("},{"line_number":99,"context_line":"                resource_id\u003dinstance.uuid,"},{"line_number":100,"context_line":"                meter_name\u003dself.meter_name_l3,"},{"line_number":101,"context_line":"                period\u003d2*self.period, aggregate\u003d\u0027avg\u0027)) - current_cache"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        if None in (current_cache, previous_cache):"},{"line_number":104,"context_line":"            LOG.warning(\"Ceilometer unable to pick L3 Cache \""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_925af4f0","line":101,"range":{"start_line":97,"start_character":25,"end_line":101,"end_character":71},"updated":"2017-06-13 00:32:35.000000000","message":"This logic appears in find_noisy_instance again.\nCould you develop get_previous_cache or something?","commit_id":"cb7dd15b7b0e5134ef87c0a1b5649f682abb6dd8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"efba0c8b25db18b449c364e2a3bfb4ed7ac75225","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.period \u003d self.input_parameters.period"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        LOG.debug(\"Initializing Noisy Neighbor strategy\")"},{"line_number":253,"context_line":"        hosts_need_release, hosts_target \u003d \\"},{"line_number":254,"context_line":"            self.group_hosts()"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        if len(hosts_need_release) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_120384ba","line":253,"range":{"start_line":253,"start_character":43,"end_line":253,"end_character":44},"updated":"2017-06-13 00:32:35.000000000","message":"Could you use wrap long lines in parentheses and not a backslash for line continuation? See: https://docs.openstack.org/developer/hacking/#general","commit_id":"cb7dd15b7b0e5134ef87c0a1b5649f682abb6dd8"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"defac09e9e052b5f4ba00d00fedb6e864155e594","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        self.period \u003d self.input_parameters.period"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        LOG.debug(\"Initializing Noisy Neighbor strategy\")"},{"line_number":253,"context_line":"        hosts_need_release, hosts_target \u003d \\"},{"line_number":254,"context_line":"            self.group_hosts()"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        if len(hosts_need_release) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f231b9d_12ca646c","line":253,"range":{"start_line":253,"start_character":43,"end_line":253,"end_character":44},"in_reply_to":"7f231b9d_120384ba","updated":"2017-06-13 00:40:03.000000000","message":"Done","commit_id":"cb7dd15b7b0e5134ef87c0a1b5649f682abb6dd8"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"ff615aea9f08af120cf48989586ef4d7d544a16f","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def find_priority_instance(self, instance):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        current_cache \u003d self.ceilometer.statistic_aggregation("},{"line_number":93,"context_line":"            resource_id\u003dinstance.uuid,"},{"line_number":94,"context_line":"            meter_name\u003dself.meter_name_l3, period\u003dself.period,"},{"line_number":95,"context_line":"            aggregate\u003d\u0027avg\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        previous_cache \u003d 2 * ("},{"line_number":98,"context_line":"            self.ceilometer.statistic_aggregation("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_13ca666c","line":95,"range":{"start_line":92,"start_character":8,"end_line":95,"end_character":28},"updated":"2017-06-13 03:51:42.000000000","message":"Do here throw a exception if there is no cpu_l3_cache metric ?","commit_id":"406238ba31482cf8cf87ba295e383f2b3aa2e4be"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"14814257ed57e7a68d80e6a31021318887121d34","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def find_priority_instance(self, instance):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        current_cache \u003d self.ceilometer.statistic_aggregation("},{"line_number":93,"context_line":"            resource_id\u003dinstance.uuid,"},{"line_number":94,"context_line":"            meter_name\u003dself.meter_name_l3, period\u003dself.period,"},{"line_number":95,"context_line":"            aggregate\u003d\u0027avg\u0027)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        previous_cache \u003d 2 * ("},{"line_number":98,"context_line":"            self.ceilometer.statistic_aggregation("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_ac02290a","line":95,"range":{"start_line":92,"start_character":8,"end_line":95,"end_character":28},"in_reply_to":"7f231b9d_13ca666c","updated":"2017-06-13 09:56:56.000000000","message":"Done","commit_id":"406238ba31482cf8cf87ba295e383f2b3aa2e4be"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"ff615aea9f08af120cf48989586ef4d7d544a16f","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        LOG.debug(self.compute_model.to_string())"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def do_execute(self):"},{"line_number":249,"context_line":"        self.cache_threshold \u003d self.input_parameters.cache_threshold"},{"line_number":250,"context_line":"        self.period \u003d self.input_parameters.period"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_d38f4e21","line":248,"range":{"start_line":248,"start_character":8,"end_line":248,"end_character":18},"updated":"2017-06-13 03:51:42.000000000","message":"Now the strategy just make one action, I think this is not enough:)","commit_id":"406238ba31482cf8cf87ba295e383f2b3aa2e4be"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"57a4fb87304149cc9389f2d005f6deb22774c367","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        LOG.debug(self.compute_model.to_string())"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def do_execute(self):"},{"line_number":249,"context_line":"        self.cache_threshold \u003d self.input_parameters.cache_threshold"},{"line_number":250,"context_line":"        self.period \u003d self.input_parameters.period"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_f39c635e","line":248,"range":{"start_line":248,"start_character":8,"end_line":248,"end_character":18},"in_reply_to":"7f231b9d_0f3c6fc6","updated":"2017-06-14 01:46:46.000000000","message":"Now the applier supports multiple actions in parallel.\nI mean the strategy can make multiple actions in one audit cycle.","commit_id":"406238ba31482cf8cf87ba295e383f2b3aa2e4be"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"14814257ed57e7a68d80e6a31021318887121d34","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        LOG.debug(self.compute_model.to_string())"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def do_execute(self):"},{"line_number":249,"context_line":"        self.cache_threshold \u003d self.input_parameters.cache_threshold"},{"line_number":250,"context_line":"        self.period \u003d self.input_parameters.period"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_0f3c6fc6","line":248,"range":{"start_line":248,"start_character":8,"end_line":248,"end_character":18},"in_reply_to":"7f231b9d_d38f4e21","updated":"2017-06-13 09:56:56.000000000","message":"Not sure what you meant. If you mean that one action is not sufficient for one audit cycle, the strategy is supposed to ultimately optimize it after many audit cycles.","commit_id":"406238ba31482cf8cf87ba295e383f2b3aa2e4be"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"ff615aea9f08af120cf48989586ef4d7d544a16f","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        self.cache_threshold \u003d self.input_parameters.cache_threshold"},{"line_number":250,"context_line":"        self.period \u003d self.input_parameters.period"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        LOG.debug(\"Initializing Noisy Neighbor strategy\")"},{"line_number":253,"context_line":"        hosts_need_release, hosts_target \u003d self.group_hosts()"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        if len(hosts_need_release) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_131dc665","line":252,"range":{"start_line":252,"start_character":8,"end_line":252,"end_character":57},"updated":"2017-06-13 03:51:42.000000000","message":"the same log with line 238","commit_id":"406238ba31482cf8cf87ba295e383f2b3aa2e4be"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"14814257ed57e7a68d80e6a31021318887121d34","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        self.cache_threshold \u003d self.input_parameters.cache_threshold"},{"line_number":250,"context_line":"        self.period \u003d self.input_parameters.period"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        LOG.debug(\"Initializing Noisy Neighbor strategy\")"},{"line_number":253,"context_line":"        hosts_need_release, hosts_target \u003d self.group_hosts()"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        if len(hosts_need_release) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f231b9d_8fff5f00","line":252,"range":{"start_line":252,"start_character":8,"end_line":252,"end_character":57},"in_reply_to":"7f231b9d_131dc665","updated":"2017-06-13 09:56:56.000000000","message":"Done","commit_id":"406238ba31482cf8cf87ba295e383f2b3aa2e4be"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"6917bb5ebca0f52fe1479820635c23e8acf3ecf1","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            # Flag that tells us whether to skip the node or not. If True,"},{"line_number":157,"context_line":"            # the node is skipped. Will be true if we find a noisy instance."},{"line_number":158,"context_line":"            break_flag \u003d False"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            if node_instance_count \u003e 1:"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_49113cac","line":158,"range":{"start_line":158,"start_character":12,"end_line":158,"end_character":22},"updated":"2017-06-13 15:02:06.000000000","message":"use \"noisy_inst_found\"?","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"9b230102142fe627ad92c63dd0258a6af2c126d0","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            # Flag that tells us whether to skip the node or not. If True,"},{"line_number":157,"context_line":"            # the node is skipped. Will be true if we find a noisy instance."},{"line_number":158,"context_line":"            break_flag \u003d False"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            if node_instance_count \u003e 1:"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_c81d3f10","line":158,"range":{"start_line":158,"start_character":12,"end_line":158,"end_character":22},"in_reply_to":"7f231b9d_49113cac","updated":"2017-06-13 18:06:06.000000000","message":"This flag can be true even if we don\u0027t find noisy instance, so \"noisy_inst_found\" will not be a good name. I updated comments in the new patch for more clarity. Changed the name to loop_break_flag.","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"6917bb5ebca0f52fe1479820635c23e8acf3ecf1","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                instance_priority_list.sort(key\u003dlambda a: a.metadata["},{"line_number":168,"context_line":"                                            \u0027watcher-priority\u0027])"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"                instance_priority_list_reverse \u003d list(instance_priority_list)"},{"line_number":171,"context_line":"                instance_priority_list_reverse.reverse()"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                for potential_priority_instance in instance_priority_list:"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_0c0eb231","line":171,"range":{"start_line":170,"start_character":16,"end_line":171,"end_character":56},"updated":"2017-06-13 15:02:06.000000000","message":"combine to one line:\n instance_priority_list_reverse \u003d list(instance_priority_list).reverse()","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"9b230102142fe627ad92c63dd0258a6af2c126d0","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                instance_priority_list.sort(key\u003dlambda a: a.metadata["},{"line_number":168,"context_line":"                                            \u0027watcher-priority\u0027])"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"                instance_priority_list_reverse \u003d list(instance_priority_list)"},{"line_number":171,"context_line":"                instance_priority_list_reverse.reverse()"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                for potential_priority_instance in instance_priority_list:"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_881747ee","line":171,"range":{"start_line":170,"start_character":16,"end_line":171,"end_character":56},"in_reply_to":"7f231b9d_0c0eb231","updated":"2017-06-13 18:06:06.000000000","message":"Done","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"05103e9dd22fcecfc106f17f1b731e3b7db4dda3","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                instance_priority_list.sort(key\u003dlambda a: a.metadata["},{"line_number":168,"context_line":"                                            \u0027watcher-priority\u0027])"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"                instance_priority_list_reverse \u003d list(instance_priority_list)"},{"line_number":171,"context_line":"                instance_priority_list_reverse.reverse()"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                for potential_priority_instance in instance_priority_list:"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_3d916548","line":171,"range":{"start_line":170,"start_character":16,"end_line":171,"end_character":56},"in_reply_to":"7f231b9d_0c0eb231","updated":"2017-06-15 00:29:46.000000000","message":"This is wrong. This just reverses the original list. instance_priority_list_reverse will be empty and instance_priority_list will be reversed.","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"ae14810d985c2aad6fbbe19863730ddc1d4e2bd3","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                instance_priority_list.sort(key\u003dlambda a: a.metadata["},{"line_number":168,"context_line":"                                            \u0027watcher-priority\u0027])"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"                instance_priority_list_reverse \u003d list(instance_priority_list)"},{"line_number":171,"context_line":"                instance_priority_list_reverse.reverse()"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                for potential_priority_instance in instance_priority_list:"},{"line_number":174,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_f84e3f36","line":171,"range":{"start_line":170,"start_character":16,"end_line":171,"end_character":56},"in_reply_to":"7f231b9d_3d916548","updated":"2017-06-15 19:02:41.000000000","message":"a \u003d [1,2,3,4]\nc \u003d list(reversed(a)) \nor \nc \u003d a[::-1]","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"6917bb5ebca0f52fe1479820635c23e8acf3ecf1","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":277,"context_line":"            return self.solution"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        # Destination node will be the first available node in the list."},{"line_number":280,"context_line":"        mig_destination_node \u003d dest_servers[0]"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if self.compute_model.migrate_instance(instance_to_migrate,"},{"line_number":283,"context_line":"                                               mig_source_node,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_4ccf0ab0","line":280,"range":{"start_line":279,"start_character":8,"end_line":280,"end_character":46},"updated":"2017-06-13 15:02:06.000000000","message":"what is the list? To Susanne\u0027s point, this node should be the least amount of cache occupancy. Is the hosts_target list sorted with cache occupancy?","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"65426791ed70dd2958188ad9e490ad9c0b6f704f","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":277,"context_line":"            return self.solution"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        # Destination node will be the first available node in the list."},{"line_number":280,"context_line":"        mig_destination_node \u003d dest_servers[0]"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if self.compute_model.migrate_instance(instance_to_migrate,"},{"line_number":283,"context_line":"                                               mig_source_node,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_e7a57648","line":280,"range":{"start_line":279,"start_character":8,"end_line":280,"end_character":46},"in_reply_to":"7f231b9d_38ca774d","updated":"2017-06-15 22:01:46.000000000","message":"I understand what you\u0027re saying, and I mostly agree with you. \nA noisy VM on one node might not necessarily be noisy VM on another. Saying that, it makes more sense to move to a node with lowest cache usage. I currently do not have enough time to implement it, more importantly test it after implementation. For example: in very large clouds, we need to make sure there are no performance issues in collecting cache of all instances on all nodes, and to pick out the node with lowest amount of cache usage in every iteration.\n\nBut this is open-source world, so feel free to make changes and push in new patch to modify the strategy and make it more efficient. :)","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":25026,"name":"Bin Zhou","email":"lakerzhou@gmail.com","username":"lakerzhou"},"change_message_id":"ae14810d985c2aad6fbbe19863730ddc1d4e2bd3","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":277,"context_line":"            return self.solution"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        # Destination node will be the first available node in the list."},{"line_number":280,"context_line":"        mig_destination_node \u003d dest_servers[0]"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if self.compute_model.migrate_instance(instance_to_migrate,"},{"line_number":283,"context_line":"                                               mig_source_node,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_38ca774d","line":280,"range":{"start_line":279,"start_character":8,"end_line":280,"end_character":46},"in_reply_to":"7f231b9d_488ecf2e","updated":"2017-06-15 19:02:41.000000000","message":"Did you get chance to talk with Susanne about this? Please consider the case in my original comments - this solution will not change the behavior of the noisy VM. It WILL affect a higher priority VM at the dest-node. That will in turn cause the noisy VM get migrated again.  \nIf the new node has the least cache occupancy, then the chance of affecting other neighbors will be smaller.\nPlease reconsider the action. It doesn\u0027t sound right to me.","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"9b230102142fe627ad92c63dd0258a6af2c126d0","unresolved":false,"context_lines":[{"line_number":276,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":277,"context_line":"            return self.solution"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        # Destination node will be the first available node in the list."},{"line_number":280,"context_line":"        mig_destination_node \u003d dest_servers[0]"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if self.compute_model.migrate_instance(instance_to_migrate,"},{"line_number":283,"context_line":"                                               mig_source_node,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f231b9d_488ecf2e","line":280,"range":{"start_line":279,"start_character":8,"end_line":280,"end_character":46},"in_reply_to":"7f231b9d_4ccf0ab0","updated":"2017-06-13 18:06:06.000000000","message":"It\u0027s not sorted based on cache occupancy. I\u0027m just taking the first available node from the list. Already mentioned this in comments. \n\nCollecting cache data of all instances on all nodes and sorting them based on cache, is slowing down the system in large cloud set ups. For now, we are going with the first node available.","commit_id":"e0c2712cdf1ee4178ec691e29364ee0d2bb5301b"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"e4d49c6e03fddba5d99aa8869faa1ff83a2fa09b","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        if None in (current_cache, previous_cache):"},{"line_number":116,"context_line":"            LOG.warning(\"Ceilometer unable to pick L3 Cache \""},{"line_number":117,"context_line":"                        \"or IPC values. Skipping the instance\")"},{"line_number":118,"context_line":"            return None"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        if (current_cache \u003c (1 - (self.cache_threshold / 100)) *"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_1d101001","line":117,"range":{"start_line":117,"start_character":25,"end_line":117,"end_character":38},"updated":"2017-06-13 23:54:07.000000000","message":"This is not necessary.","commit_id":"44182857a99c4a6419b6f26d8db0e4ce864315eb"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"d770f42f75030e665e1da5e6168f94524acd2d67","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        if None in (current_cache, previous_cache):"},{"line_number":116,"context_line":"            LOG.warning(\"Ceilometer unable to pick L3 Cache \""},{"line_number":117,"context_line":"                        \"or IPC values. Skipping the instance\")"},{"line_number":118,"context_line":"            return None"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        if (current_cache \u003c (1 - (self.cache_threshold / 100)) *"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f231b9d_5d07a883","line":117,"range":{"start_line":117,"start_character":25,"end_line":117,"end_character":38},"in_reply_to":"7f231b9d_1d101001","updated":"2017-06-14 00:09:27.000000000","message":"Done","commit_id":"44182857a99c4a6419b6f26d8db0e4ce864315eb"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2d8ae45e80970dd2043a5ffe9c5b833b82178f9c","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                    instance_priority_list.append(instance)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                instance_priority_list.sort(key\u003dlambda a: a.metadata["},{"line_number":170,"context_line":"                                            \u0027watcher-priority\u0027])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"                instance_priority_list_reverse \u003d \\"},{"line_number":173,"context_line":"                    list(instance_priority_list).reverse()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_7a37fce4","line":170,"range":{"start_line":170,"start_character":44,"end_line":170,"end_character":62},"updated":"2017-06-14 09:40:11.000000000","message":"If the metadata is not present on the instance, then this will break. So IMHO, you should write it like:\n\n    a.get(\u0027watcher-priority\u0027, \u003creasonable_default_value\u003e)\n\nThen, what should happen to VMs that do ont have this meta? Should we exclude them from the list?","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"c1728878e3db4fe61cbcb700b0dce32ff1e2972e","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                    instance_priority_list.append(instance)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                instance_priority_list.sort(key\u003dlambda a: a.metadata["},{"line_number":170,"context_line":"                                            \u0027watcher-priority\u0027])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"                instance_priority_list_reverse \u003d \\"},{"line_number":173,"context_line":"                    list(instance_priority_list).reverse()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_ddadd19b","line":170,"range":{"start_line":170,"start_character":44,"end_line":170,"end_character":62},"in_reply_to":"7f231b9d_7a37fce4","updated":"2017-06-15 00:27:33.000000000","message":"Done.\nI have defaulted them to priority 5.","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2d8ae45e80970dd2043a5ffe9c5b833b82178f9c","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        if len(hosts_need_release) \u003d\u003d 0:"},{"line_number":260,"context_line":"            LOG.debug(\"No hosts require optimization\")"},{"line_number":261,"context_line":"            return self.solution"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        if len(hosts_target) \u003d\u003d 0:"},{"line_number":264,"context_line":"            LOG.debug(\"No hosts available to migrate\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_1aa248af","line":261,"range":{"start_line":261,"start_character":12,"end_line":261,"end_character":32},"updated":"2017-06-14 09:40:11.000000000","message":"This method shouldn\u0027t return any value, so just use \"return\" if you want to exit the method without adding any confusion","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"c1728878e3db4fe61cbcb700b0dce32ff1e2972e","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        if len(hosts_need_release) \u003d\u003d 0:"},{"line_number":260,"context_line":"            LOG.debug(\"No hosts require optimization\")"},{"line_number":261,"context_line":"            return self.solution"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        if len(hosts_target) \u003d\u003d 0:"},{"line_number":264,"context_line":"            LOG.debug(\"No hosts available to migrate\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_3d8cc534","line":261,"range":{"start_line":261,"start_character":12,"end_line":261,"end_character":32},"in_reply_to":"7f231b9d_1aa248af","updated":"2017-06-15 00:27:33.000000000","message":"Done","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2d8ae45e80970dd2043a5ffe9c5b833b82178f9c","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        if len(hosts_target) \u003d\u003d 0:"},{"line_number":264,"context_line":"            LOG.debug(\"No hosts available to migrate\")"},{"line_number":265,"context_line":"            return self.solution"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        mig_source_node \u003d max(hosts_need_release.iterkeys(), key\u003dlambda a:"},{"line_number":268,"context_line":"                              hosts_need_release[a][\u0027priority_vm\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_faa42cbb","line":265,"range":{"start_line":265,"start_character":19,"end_line":265,"end_character":32},"updated":"2017-06-14 09:40:11.000000000","message":"ditto","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"c1728878e3db4fe61cbcb700b0dce32ff1e2972e","unresolved":false,"context_lines":[{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        if len(hosts_target) \u003d\u003d 0:"},{"line_number":264,"context_line":"            LOG.debug(\"No hosts available to migrate\")"},{"line_number":265,"context_line":"            return self.solution"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        mig_source_node \u003d max(hosts_need_release.iterkeys(), key\u003dlambda a:"},{"line_number":268,"context_line":"                              hosts_need_release[a][\u0027priority_vm\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_1d91094f","line":265,"range":{"start_line":265,"start_character":19,"end_line":265,"end_character":32},"in_reply_to":"7f231b9d_faa42cbb","updated":"2017-06-15 00:27:33.000000000","message":"Done","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2d8ae45e80970dd2043a5ffe9c5b833b82178f9c","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            LOG.debug(\"No hosts available to migrate\")"},{"line_number":265,"context_line":"            return self.solution"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        mig_source_node \u003d max(hosts_need_release.iterkeys(), key\u003dlambda a:"},{"line_number":268,"context_line":"                              hosts_need_release[a][\u0027priority_vm\u0027])"},{"line_number":269,"context_line":"        instance_to_migrate \u003d hosts_need_release[mig_source_node][\u0027noisy_vm\u0027]"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_da41700d","line":267,"range":{"start_line":267,"start_character":49,"end_line":267,"end_character":57},"updated":"2017-06-14 09:40:11.000000000","message":"I think that\u0027s not Python3k compatible, please use hosts_need_release.keys() instead","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"c1728878e3db4fe61cbcb700b0dce32ff1e2972e","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            LOG.debug(\"No hosts available to migrate\")"},{"line_number":265,"context_line":"            return self.solution"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        mig_source_node \u003d max(hosts_need_release.iterkeys(), key\u003dlambda a:"},{"line_number":268,"context_line":"                              hosts_need_release[a][\u0027priority_vm\u0027])"},{"line_number":269,"context_line":"        instance_to_migrate \u003d hosts_need_release[mig_source_node][\u0027noisy_vm\u0027]"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_fd81adfc","line":267,"range":{"start_line":267,"start_character":49,"end_line":267,"end_character":57},"in_reply_to":"7f231b9d_da41700d","updated":"2017-06-15 00:27:33.000000000","message":"Done","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2d8ae45e80970dd2043a5ffe9c5b833b82178f9c","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        instance_to_migrate \u003d hosts_need_release[mig_source_node][\u0027noisy_vm\u0027]"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        if instance_to_migrate is None:"},{"line_number":272,"context_line":"            return self.solution"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        dest_servers \u003d self.filter_dest_servers(hosts_target,"},{"line_number":275,"context_line":"                                                instance_to_migrate)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_7a901c4f","line":272,"range":{"start_line":272,"start_character":19,"end_line":272,"end_character":32},"updated":"2017-06-14 09:40:11.000000000","message":"ditto on returning the solution","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"c1728878e3db4fe61cbcb700b0dce32ff1e2972e","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        instance_to_migrate \u003d hosts_need_release[mig_source_node][\u0027noisy_vm\u0027]"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        if instance_to_migrate is None:"},{"line_number":272,"context_line":"            return self.solution"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        dest_servers \u003d self.filter_dest_servers(hosts_target,"},{"line_number":275,"context_line":"                                                instance_to_migrate)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_dd86f113","line":272,"range":{"start_line":272,"start_character":19,"end_line":272,"end_character":32},"in_reply_to":"7f231b9d_7a901c4f","updated":"2017-06-15 00:27:33.000000000","message":"Done","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"2d8ae45e80970dd2043a5ffe9c5b833b82178f9c","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        if len(dest_servers) \u003d\u003d 0:"},{"line_number":278,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":279,"context_line":"            return self.solution"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # Destination node will be the first available node in the list."},{"line_number":282,"context_line":"        mig_destination_node \u003d dest_servers[0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_fa92ec4a","line":279,"range":{"start_line":279,"start_character":19,"end_line":279,"end_character":32},"updated":"2017-06-14 09:40:11.000000000","message":"ditto","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"c1728878e3db4fe61cbcb700b0dce32ff1e2972e","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        if len(dest_servers) \u003d\u003d 0:"},{"line_number":278,"context_line":"            LOG.info(\"No proper target host could be found\")"},{"line_number":279,"context_line":"            return self.solution"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # Destination node will be the first available node in the list."},{"line_number":282,"context_line":"        mig_destination_node \u003d dest_servers[0]"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f231b9d_bd7fb513","line":279,"range":{"start_line":279,"start_character":19,"end_line":279,"end_character":32},"in_reply_to":"7f231b9d_fa92ec4a","updated":"2017-06-15 00:27:33.000000000","message":"Done","commit_id":"607868b9fae011cc66094d93f27dce13c2d99dc1"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"51ff3a1b9e09e88c8f6f05197b6f4ad7fb03d94f","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def get_current_and_previous_cache(self, instance):"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            current_cache \u003d self.ceilometer.statistic_aggregation("},{"line_number":95,"context_line":"                resource_id\u003dinstance.uuid,"},{"line_number":96,"context_line":"                meter_name\u003dself.meter_name, period\u003dself.period,"},{"line_number":97,"context_line":"                aggregate\u003d\u0027avg\u0027)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            previous_cache \u003d 2 * ("},{"line_number":100,"context_line":"                self.ceilometer.statistic_aggregation("},{"line_number":101,"context_line":"                    resource_id\u003dinstance.uuid,"},{"line_number":102,"context_line":"                    meter_name\u003dself.meter_name,"},{"line_number":103,"context_line":"                    period\u003d2*self.period, aggregate\u003d\u0027avg\u0027)) - current_cache"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        except Exception as exc:"},{"line_number":106,"context_line":"            LOG.exception(exc)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f201791_a0b141e4","line":103,"range":{"start_line":94,"start_character":12,"end_line":103,"end_character":75},"updated":"2017-06-21 08:47:02.000000000","message":"Since ceilometer-api is deprecated, don\u0027t you want to add gnocchi support here?","commit_id":"606a340b5be508f3767d887222953466ee8bc865"},{"author":{"_account_id":22775,"name":"Prudhvi Rao Shedimbi","email":"prudhvi.rao.shedimbi@intel.com","username":"pshedimb"},"change_message_id":"33a7bf831de58e3a62f7c5ae4dd40dbedd447254","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    def get_current_and_previous_cache(self, instance):"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        try:"},{"line_number":94,"context_line":"            current_cache \u003d self.ceilometer.statistic_aggregation("},{"line_number":95,"context_line":"                resource_id\u003dinstance.uuid,"},{"line_number":96,"context_line":"                meter_name\u003dself.meter_name, period\u003dself.period,"},{"line_number":97,"context_line":"                aggregate\u003d\u0027avg\u0027)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"            previous_cache \u003d 2 * ("},{"line_number":100,"context_line":"                self.ceilometer.statistic_aggregation("},{"line_number":101,"context_line":"                    resource_id\u003dinstance.uuid,"},{"line_number":102,"context_line":"                    meter_name\u003dself.meter_name,"},{"line_number":103,"context_line":"                    period\u003d2*self.period, aggregate\u003d\u0027avg\u0027)) - current_cache"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        except Exception as exc:"},{"line_number":106,"context_line":"            LOG.exception(exc)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f201791_47e4b1ac","line":103,"range":{"start_line":94,"start_character":12,"end_line":103,"end_character":75},"in_reply_to":"5f201791_a0b141e4","updated":"2017-06-21 18:09:15.000000000","message":"Collectd has integration with ceilometer. I\u0027m not sure about gnocchi. I would prefer to stick to ceilometer for now.","commit_id":"606a340b5be508f3767d887222953466ee8bc865"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"82f611981cde89f7556758aeeb3621cef7a92f30","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"                instance_priority_list \u003d []"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"                for instance in instances_of_node:"},{"line_number":168,"context_line":"                    instance_priority_list.append(instance)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"                # If there is no metadata regarding watcher-priority, it takes"},{"line_number":171,"context_line":"                # DEFAULT_WATCHER_PRIORITY as priority."}],"source_content_type":"text/x-python","patch_set":10,"id":"7f231b9d_03f26d9a","line":168,"range":{"start_line":167,"start_character":14,"end_line":168,"end_character":59},"updated":"2017-06-19 11:16:38.000000000","message":"maybe: instance_priority_list.extend(instances_of_node)","commit_id":"606a340b5be508f3767d887222953466ee8bc865"}],"watcher/tests/decision_engine/strategy/strategies/test_noisy_neighbor.py":[{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"b31ff39475d33b8f0b76753e068eb9968df50d47","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# implied."},{"line_number":16,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":17,"context_line":"# limitations under the License."},{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"import collections"},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7f231b9d_63197a20","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":1},"updated":"2017-06-15 01:57:41.000000000","message":"remove this","commit_id":"bd6d3654290aada5a9e11fa793c2665cf6bd9b74"},{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"b31ff39475d33b8f0b76753e068eb9968df50d47","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# limitations under the License."},{"line_number":18,"context_line":"#"},{"line_number":19,"context_line":"import collections"},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from watcher.applier.loading import default"},{"line_number":23,"context_line":"from watcher.common import exception"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f231b9d_23d5c21c","line":20,"range":{"start_line":20,"start_character":7,"end_line":20,"end_character":11},"updated":"2017-06-15 01:57:41.000000000","message":"mock should be considered as third-party lib","commit_id":"bd6d3654290aada5a9e11fa793c2665cf6bd9b74"}]}
