)]}'
{"setup.cfg":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2423f8c5856c65d49c16c0e518ff2a9b38e8f0bf","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    default  \u003d watcher.decision_engine.planner.default:DefaultPlanner"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"watcher_cluster_data_model_collectors \u003d"},{"line_number":76,"context_line":"    nova \u003d watcher.metrics_engine.cluster_model_collector.nova:NovaClusterDataModelCollector"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"[pbr]"},{"line_number":79,"context_line":"warnerrors \u003d true"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"1aa78d24_78fe8c6c","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":9},"updated":"2016-07-04 12:34:08.000000000","message":"s/nova/compute, IMH it should be better to use service type.","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"02c00c846a976a1134e2d3865ff66dccaf142341","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    default  \u003d watcher.decision_engine.planner.default:DefaultPlanner"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"watcher_cluster_data_model_collectors \u003d"},{"line_number":76,"context_line":"    nova \u003d watcher.metrics_engine.cluster_model_collector.nova:NovaClusterDataModelCollector"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"[pbr]"},{"line_number":79,"context_line":"warnerrors \u003d true"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"1aa78d24_4e7a3c89","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":9},"in_reply_to":"1aa78d24_78fe8c6c","updated":"2016-07-07 14:35:12.000000000","message":"Done","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"}],"watcher/decision_engine/strategy/strategies/base.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2423f8c5856c65d49c16c0e518ff2a9b38e8f0bf","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":"        if self._compute_model is None:"},{"line_number":173,"context_line":"            collector \u003d self.collector_manager.get_cluster_model_collector("},{"line_number":174,"context_line":"                \u0027nova\u0027, osc\u003dself.osc)"},{"line_number":175,"context_line":"            self._compute_model \u003d collector.get_latest_cluster_data_model()"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        return self._compute_model"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_64042c7e","line":174,"range":{"start_line":174,"start_character":17,"end_line":174,"end_character":21},"updated":"2016-07-04 12:34:08.000000000","message":"s/nova/compute IMH, it should be better to use service type here.","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"02c00c846a976a1134e2d3865ff66dccaf142341","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":"        if self._compute_model is None:"},{"line_number":173,"context_line":"            collector \u003d self.collector_manager.get_cluster_model_collector("},{"line_number":174,"context_line":"                \u0027nova\u0027, osc\u003dself.osc)"},{"line_number":175,"context_line":"            self._compute_model \u003d collector.get_latest_cluster_data_model()"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        return self._compute_model"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_aea48007","line":174,"range":{"start_line":174,"start_character":17,"end_line":174,"end_character":21},"in_reply_to":"1aa78d24_64042c7e","updated":"2016-07-07 14:35:12.000000000","message":"Done","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"}],"watcher/decision_engine/strategy/strategies/basic_consolidation.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2423f8c5856c65d49c16c0e518ff2a9b38e8f0bf","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        \"\"\"Calculate Score of virtual machine"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        :param vm: the virtual machine"},{"line_number":293,"context_line":"        :param self.compute_model: the cluster model"},{"line_number":294,"context_line":"        :return: score"},{"line_number":295,"context_line":"        \"\"\""},{"line_number":296,"context_line":"        vm_cpu_utilization \u003d self.ceilometer. \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_983c1831","line":293,"range":{"start_line":293,"start_character":0,"end_line":293,"end_character":52},"updated":"2016-07-04 12:34:08.000000000","message":"remove this line.","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"02c00c846a976a1134e2d3865ff66dccaf142341","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        \"\"\"Calculate Score of virtual machine"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        :param vm: the virtual machine"},{"line_number":293,"context_line":"        :param self.compute_model: the cluster model"},{"line_number":294,"context_line":"        :return: score"},{"line_number":295,"context_line":"        \"\"\""},{"line_number":296,"context_line":"        vm_cpu_utilization \u003d self.ceilometer. \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_ae7be079","line":293,"range":{"start_line":293,"start_character":0,"end_line":293,"end_character":52},"in_reply_to":"1aa78d24_983c1831","updated":"2016-07-07 14:35:12.000000000","message":"Done","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"}],"watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2423f8c5856c65d49c16c0e518ff2a9b38e8f0bf","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        :param model: model_root object"},{"line_number":216,"context_line":"        :return: model_root object"},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        return deepcopy(self.compute_model)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def get_vm_utilization(self, vm_uuid, model, period\u003d3600, aggr\u003d\u0027avg\u0027):"},{"line_number":221,"context_line":"        \"\"\"Collect cpu, ram and disk utilization statistics of a VM."}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_d855001e","line":218,"range":{"start_line":218,"start_character":15,"end_line":218,"end_character":43},"updated":"2016-07-04 12:34:08.000000000","message":"can we use BaseClusterModelCollector::get_latest_cluster_data_model() method instead ?","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"02c00c846a976a1134e2d3865ff66dccaf142341","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        :param model: model_root object"},{"line_number":216,"context_line":"        :return: model_root object"},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        return deepcopy(self.compute_model)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def get_vm_utilization(self, vm_uuid, model, period\u003d3600, aggr\u003d\u0027avg\u0027):"},{"line_number":221,"context_line":"        \"\"\"Collect cpu, ram and disk utilization statistics of a VM."}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_ae5760c8","line":218,"range":{"start_line":218,"start_character":15,"end_line":218,"end_character":43},"in_reply_to":"1aa78d24_d855001e","updated":"2016-07-07 14:35:12.000000000","message":"Done","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"}],"watcher/metrics_engine/cluster_model_collector/nova.py":[{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"4796308552794a43adb730adc77f7d87dd4738c3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        num_cores \u003d resource.Resource(resource.ResourceType.cpu_cores)"},{"line_number":55,"context_line":"        disk \u003d resource.Resource(resource.ResourceType.disk)"},{"line_number":56,"context_line":"        disk_capacity \u003d resource.Resource(resource.ResourceType.disk_capacity)"},{"line_number":57,"context_line":"        model.create_resource(mem)"},{"line_number":58,"context_line":"        model.create_resource(num_cores)"},{"line_number":59,"context_line":"        model.create_resource(disk)"},{"line_number":60,"context_line":"        model.create_resource(disk_capacity)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        flavor_cache \u003d {}"},{"line_number":63,"context_line":"        hypervisors \u003d self.wrapper.get_hypervisors_list()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_9eef601d","line":60,"range":{"start_line":57,"start_character":8,"end_line":60,"end_character":44},"updated":"2016-07-06 15:23:25.000000000","message":"It would be good to use if statement here","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"02c00c846a976a1134e2d3865ff66dccaf142341","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        num_cores \u003d resource.Resource(resource.ResourceType.cpu_cores)"},{"line_number":55,"context_line":"        disk \u003d resource.Resource(resource.ResourceType.disk)"},{"line_number":56,"context_line":"        disk_capacity \u003d resource.Resource(resource.ResourceType.disk_capacity)"},{"line_number":57,"context_line":"        model.create_resource(mem)"},{"line_number":58,"context_line":"        model.create_resource(num_cores)"},{"line_number":59,"context_line":"        model.create_resource(disk)"},{"line_number":60,"context_line":"        model.create_resource(disk_capacity)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        flavor_cache \u003d {}"},{"line_number":63,"context_line":"        hypervisors \u003d self.wrapper.get_hypervisors_list()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_5d630c42","line":60,"range":{"start_line":57,"start_character":8,"end_line":60,"end_character":44},"in_reply_to":"1aa78d24_21c9f159","updated":"2016-07-07 14:35:12.000000000","message":"Done","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"ca4bb8b17395b062a72ec99b287be0db8dada8e3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        num_cores \u003d resource.Resource(resource.ResourceType.cpu_cores)"},{"line_number":55,"context_line":"        disk \u003d resource.Resource(resource.ResourceType.disk)"},{"line_number":56,"context_line":"        disk_capacity \u003d resource.Resource(resource.ResourceType.disk_capacity)"},{"line_number":57,"context_line":"        model.create_resource(mem)"},{"line_number":58,"context_line":"        model.create_resource(num_cores)"},{"line_number":59,"context_line":"        model.create_resource(disk)"},{"line_number":60,"context_line":"        model.create_resource(disk_capacity)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        flavor_cache \u003d {}"},{"line_number":63,"context_line":"        hypervisors \u003d self.wrapper.get_hypervisors_list()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_21c9f159","line":60,"range":{"start_line":57,"start_character":8,"end_line":60,"end_character":44},"in_reply_to":"1aa78d24_9eef601d","updated":"2016-07-06 15:33:57.000000000","message":"\"for statement\", of course","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"}],"watcher/tests/collector/test_nova_collector.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2423f8c5856c65d49c16c0e518ff2a9b38e8f0bf","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @mock.patch.object(nova_helper, \u0027NovaHelper\u0027)"},{"line_number":31,"context_line":"    @mock.patch(\u0027keystoneclient.v3.client.Client\u0027)"},{"line_number":32,"context_line":"    def setUp(self, mock_ksclient, m_wrapper):"},{"line_number":33,"context_line":"        super(TestNovaCollector, self).setUp()"},{"line_number":34,"context_line":"        self.m_wrapper \u003d m_wrapper"},{"line_number":35,"context_line":"        self.nova_collector \u003d nova.NovaClusterDataModelCollector("}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_2114cc42","line":32,"range":{"start_line":32,"start_character":35,"end_line":32,"end_character":44},"updated":"2016-07-04 12:34:08.000000000","message":"s/m_wrapper/m_nova_helper","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2423f8c5856c65d49c16c0e518ff2a9b38e8f0bf","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @mock.patch.object(nova_helper, \u0027NovaHelper\u0027)"},{"line_number":31,"context_line":"    @mock.patch(\u0027keystoneclient.v3.client.Client\u0027)"},{"line_number":32,"context_line":"    def setUp(self, mock_ksclient, m_wrapper):"},{"line_number":33,"context_line":"        super(TestNovaCollector, self).setUp()"},{"line_number":34,"context_line":"        self.m_wrapper \u003d m_wrapper"},{"line_number":35,"context_line":"        self.nova_collector \u003d nova.NovaClusterDataModelCollector("}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_3d186e84","line":32,"range":{"start_line":32,"start_character":20,"end_line":32,"end_character":34},"updated":"2016-07-04 12:34:08.000000000","message":"s/mock_ksclient/m_ksclient","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"02c00c846a976a1134e2d3865ff66dccaf142341","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @mock.patch.object(nova_helper, \u0027NovaHelper\u0027)"},{"line_number":31,"context_line":"    @mock.patch(\u0027keystoneclient.v3.client.Client\u0027)"},{"line_number":32,"context_line":"    def setUp(self, mock_ksclient, m_wrapper):"},{"line_number":33,"context_line":"        super(TestNovaCollector, self).setUp()"},{"line_number":34,"context_line":"        self.m_wrapper \u003d m_wrapper"},{"line_number":35,"context_line":"        self.nova_collector \u003d nova.NovaClusterDataModelCollector("}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_9d11f45f","line":32,"range":{"start_line":32,"start_character":35,"end_line":32,"end_character":44},"in_reply_to":"1aa78d24_2114cc42","updated":"2016-07-07 14:35:12.000000000","message":"Done","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"02c00c846a976a1134e2d3865ff66dccaf142341","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @mock.patch.object(nova_helper, \u0027NovaHelper\u0027)"},{"line_number":31,"context_line":"    @mock.patch(\u0027keystoneclient.v3.client.Client\u0027)"},{"line_number":32,"context_line":"    def setUp(self, mock_ksclient, m_wrapper):"},{"line_number":33,"context_line":"        super(TestNovaCollector, self).setUp()"},{"line_number":34,"context_line":"        self.m_wrapper \u003d m_wrapper"},{"line_number":35,"context_line":"        self.nova_collector \u003d nova.NovaClusterDataModelCollector("}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_1d9344fb","line":32,"range":{"start_line":32,"start_character":20,"end_line":32,"end_character":34},"in_reply_to":"1aa78d24_3d186e84","updated":"2016-07-07 14:35:12.000000000","message":"It was unused so I simply removed it","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2423f8c5856c65d49c16c0e518ff2a9b38e8f0bf","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @mock.patch(\u0027keystoneclient.v3.client.Client\u0027)"},{"line_number":32,"context_line":"    def setUp(self, mock_ksclient, m_wrapper):"},{"line_number":33,"context_line":"        super(TestNovaCollector, self).setUp()"},{"line_number":34,"context_line":"        self.m_wrapper \u003d m_wrapper"},{"line_number":35,"context_line":"        self.nova_collector \u003d nova.NovaClusterDataModelCollector("},{"line_number":36,"context_line":"            config\u003dmock.Mock())"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_812b0082","line":34,"range":{"start_line":34,"start_character":25,"end_line":34,"end_character":34},"updated":"2016-07-04 12:34:08.000000000","message":"ditto","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"02c00c846a976a1134e2d3865ff66dccaf142341","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @mock.patch(\u0027keystoneclient.v3.client.Client\u0027)"},{"line_number":32,"context_line":"    def setUp(self, mock_ksclient, m_wrapper):"},{"line_number":33,"context_line":"        super(TestNovaCollector, self).setUp()"},{"line_number":34,"context_line":"        self.m_wrapper \u003d m_wrapper"},{"line_number":35,"context_line":"        self.nova_collector \u003d nova.NovaClusterDataModelCollector("},{"line_number":36,"context_line":"            config\u003dmock.Mock())"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_dd0ffc34","line":34,"range":{"start_line":34,"start_character":25,"end_line":34,"end_character":34},"in_reply_to":"1aa78d24_812b0082","updated":"2016-07-07 14:35:12.000000000","message":"Done","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2423f8c5856c65d49c16c0e518ff2a9b38e8f0bf","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_nova_collector(self):"},{"line_number":39,"context_line":"        hypervisor \u003d mock.Mock()"},{"line_number":40,"context_line":"        hypervisor.hypervisor_hostname \u003d \"rdev-lannion.eu\""},{"line_number":41,"context_line":"        hypervisor.service \u003d mock.MagicMock()"},{"line_number":42,"context_line":"        service \u003d mock.Mock()"},{"line_number":43,"context_line":"        service.host \u003d \"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_616374dd","line":40,"range":{"start_line":40,"start_character":47,"end_line":40,"end_character":54},"updated":"2016-07-04 12:34:08.000000000","message":"s/lannion/rennes","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"02c00c846a976a1134e2d3865ff66dccaf142341","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_nova_collector(self):"},{"line_number":39,"context_line":"        hypervisor \u003d mock.Mock()"},{"line_number":40,"context_line":"        hypervisor.hypervisor_hostname \u003d \"rdev-lannion.eu\""},{"line_number":41,"context_line":"        hypervisor.service \u003d mock.MagicMock()"},{"line_number":42,"context_line":"        service \u003d mock.Mock()"},{"line_number":43,"context_line":"        service.host \u003d \"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1aa78d24_bd5cb04b","line":40,"range":{"start_line":40,"start_character":47,"end_line":40,"end_character":54},"in_reply_to":"1aa78d24_616374dd","updated":"2016-07-07 14:35:12.000000000","message":"I actually renamed it compute-1 so it doesn\u0027t relate to a real location","commit_id":"ed1b008069e794842b7ca32316db65eb598c0e7d"}]}
