)]}'
{"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":"c815424f73665ad1491e05d09044ad8cf51fcaf1","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :rtype model: :py:class:`~.ModelRoot` instance"},{"line_number":174,"context_line":"        \"\"\""},{"line_number":175,"context_line":"        if self._compute_model is None:"},{"line_number":176,"context_line":"            collector \u003d self.collector_manager.get_cluster_model_collector("},{"line_number":177,"context_line":"                \u0027compute\u0027, osc\u003dself.osc)"},{"line_number":178,"context_line":"            self._compute_model \u003d collector"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        if not self._compute_model:"},{"line_number":181,"context_line":"            raise exception.ClusterStateNotDefined()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_b23cc793","line":178,"range":{"start_line":176,"start_character":0,"end_line":178,"end_character":43},"updated":"2016-08-18 15:52:19.000000000","message":"IMHO, we can now merge these 2 lines\n\nself._compute_model \u003d self.collector_manager.get_cluster_model_collector(\n                \u0027compute\u0027, osc\u003dself.osc)","commit_id":"14c346810c73b509233daaab8a9fa7f01832a67b"},{"author":{"_account_id":9392,"name":"Prashanth Hari","email":"hvprash@gmail.com","username":"hvprash"},"change_message_id":"aafd6bb91d740f41f8b04ea1df52b10e52413900","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :rtype model: :py:class:`~.ModelRoot` instance"},{"line_number":174,"context_line":"        \"\"\""},{"line_number":175,"context_line":"        if self._compute_model is None:"},{"line_number":176,"context_line":"            collector \u003d self.collector_manager.get_cluster_model_collector("},{"line_number":177,"context_line":"                \u0027compute\u0027, osc\u003dself.osc)"},{"line_number":178,"context_line":"            self._compute_model \u003d collector"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        if not self._compute_model:"},{"line_number":181,"context_line":"            raise exception.ClusterStateNotDefined()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_fe072815","line":178,"range":{"start_line":176,"start_character":0,"end_line":178,"end_character":43},"in_reply_to":"3ac371cc_086c8e06","updated":"2016-08-18 16:38:51.000000000","message":"https://review.openstack.org/#/c/357231/  - Fixes only the scheduler issue. But we still have a problem unable to get the data model from base strategy. \nThe base strategy returns the attribute \"self._compute_model \u003d collector.get_latest_cluster_data_model()\". \n\nBut the subclass (ex. vm_workload_consolidation) that inherits the base strategy again calls the get_latest_cluster_data_model() resulting in an attribute error -\n\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py#L516 \n\nEither we should fix this in the base strategy or the child. My suggestion is to fix this in the base class.\n\nI tested this PS internally and it appears to fix the problem.","commit_id":"14c346810c73b509233daaab8a9fa7f01832a67b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"79ce4e540e0259cb90241d45b6573df6bd33baec","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :rtype model: :py:class:`~.ModelRoot` instance"},{"line_number":174,"context_line":"        \"\"\""},{"line_number":175,"context_line":"        if self._compute_model is None:"},{"line_number":176,"context_line":"            collector \u003d self.collector_manager.get_cluster_model_collector("},{"line_number":177,"context_line":"                \u0027compute\u0027, osc\u003dself.osc)"},{"line_number":178,"context_line":"            self._compute_model \u003d collector"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        if not self._compute_model:"},{"line_number":181,"context_line":"            raise exception.ClusterStateNotDefined()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_7113460e","line":178,"range":{"start_line":176,"start_character":0,"end_line":178,"end_character":43},"in_reply_to":"3ac371cc_aed71fbe","updated":"2016-08-19 08:04:12.000000000","message":"I agree with Alexander, this problem should be fixed into vm_workload_consolidation.","commit_id":"14c346810c73b509233daaab8a9fa7f01832a67b"},{"author":{"_account_id":9392,"name":"Prashanth Hari","email":"hvprash@gmail.com","username":"hvprash"},"change_message_id":"e9e17f6a12bcd9c2276e466139535f15cb8f0026","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :rtype model: :py:class:`~.ModelRoot` instance"},{"line_number":174,"context_line":"        \"\"\""},{"line_number":175,"context_line":"        if self._compute_model is None:"},{"line_number":176,"context_line":"            collector \u003d self.collector_manager.get_cluster_model_collector("},{"line_number":177,"context_line":"                \u0027compute\u0027, osc\u003dself.osc)"},{"line_number":178,"context_line":"            self._compute_model \u003d collector"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        if not self._compute_model:"},{"line_number":181,"context_line":"            raise exception.ClusterStateNotDefined()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_ede94480","line":178,"range":{"start_line":176,"start_character":0,"end_line":178,"end_character":43},"in_reply_to":"3ac371cc_b23cc793","updated":"2016-08-18 16:10:47.000000000","message":"Agree and that was my initial logic. But it exceeds the number of cols per line.","commit_id":"14c346810c73b509233daaab8a9fa7f01832a67b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"e8d8271818e6964b289c52d3366c33df63d3b399","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :rtype model: :py:class:`~.ModelRoot` instance"},{"line_number":174,"context_line":"        \"\"\""},{"line_number":175,"context_line":"        if self._compute_model is None:"},{"line_number":176,"context_line":"            collector \u003d self.collector_manager.get_cluster_model_collector("},{"line_number":177,"context_line":"                \u0027compute\u0027, osc\u003dself.osc)"},{"line_number":178,"context_line":"            self._compute_model \u003d collector"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        if not self._compute_model:"},{"line_number":181,"context_line":"            raise exception.ClusterStateNotDefined()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_086c8e06","line":178,"range":{"start_line":176,"start_character":0,"end_line":178,"end_character":43},"in_reply_to":"3ac371cc_ede94480","updated":"2016-08-18 16:23:13.000000000","message":"I think there is something wrong here: self._compute_model should be of type ModelRoot whereas collector is a ClusterDataModelCollector object. IMHO, this problem should be fixed by https://review.openstack.org/#/c/357231/ without having to change anything here, but maybe I\u0027m missing something","commit_id":"14c346810c73b509233daaab8a9fa7f01832a67b"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"5b9b38a91cfd6e0ddd19f5e9a6d4877652ea0c25","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        :rtype model: :py:class:`~.ModelRoot` instance"},{"line_number":174,"context_line":"        \"\"\""},{"line_number":175,"context_line":"        if self._compute_model is None:"},{"line_number":176,"context_line":"            collector \u003d self.collector_manager.get_cluster_model_collector("},{"line_number":177,"context_line":"                \u0027compute\u0027, osc\u003dself.osc)"},{"line_number":178,"context_line":"            self._compute_model \u003d collector"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        if not self._compute_model:"},{"line_number":181,"context_line":"            raise exception.ClusterStateNotDefined()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_aed71fbe","line":178,"range":{"start_line":176,"start_character":0,"end_line":178,"end_character":43},"in_reply_to":"3ac371cc_fe072815","updated":"2016-08-19 07:53:43.000000000","message":"IMHO, everything is good with the base class logically. I suggest to fix this problem in the child class since the rest of strategies works great with the current base class.","commit_id":"14c346810c73b509233daaab8a9fa7f01832a67b"}]}
