)]}'
{"watcher/applier/actions/change_node_power_state.py":[{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"3052abfada4a91ee489086ba4a91278ef2aba5d5","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        ironic_client \u003d self.osc.ironic()"},{"line_number":98,"context_line":"        nova_client \u003d self.osc.nova()"},{"line_number":99,"context_line":"        if state \u003d\u003d NodeState.POWEROFF.value:"},{"line_number":100,"context_line":"            power_state \u003d \u0027power on\u0027"},{"line_number":101,"context_line":"            node_info \u003d ironic_client.node.get(self.node_uuid).to_dict()"},{"line_number":102,"context_line":"            compute_node_id \u003d node_info[\u0027extra\u0027][\u0027compute_node_id\u0027]"},{"line_number":103,"context_line":"            compute_node \u003d nova_client.hypervisors.get(compute_node_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_901fff59","line":100,"range":{"start_line":100,"start_character":12,"end_line":100,"end_character":36},"updated":"2017-08-29 13:28:01.000000000","message":"if I get it right, _node_manage_power is intended to power on/off compute_node. Shouldn\u0027t power_state take \u0027power off\u0027 here?","commit_id":"3cd17bc4a860ea506312df2ed0495027184ef852"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"5cac066409263aa6ef2643db67254c19038b3bf1","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        ironic_client \u003d self.osc.ironic()"},{"line_number":98,"context_line":"        nova_client \u003d self.osc.nova()"},{"line_number":99,"context_line":"        if state \u003d\u003d NodeState.POWEROFF.value:"},{"line_number":100,"context_line":"            power_state \u003d \u0027power on\u0027"},{"line_number":101,"context_line":"            node_info \u003d ironic_client.node.get(self.node_uuid).to_dict()"},{"line_number":102,"context_line":"            compute_node_id \u003d node_info[\u0027extra\u0027][\u0027compute_node_id\u0027]"},{"line_number":103,"context_line":"            compute_node \u003d nova_client.hypervisors.get(compute_node_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_87445148","line":100,"range":{"start_line":100,"start_character":12,"end_line":100,"end_character":36},"in_reply_to":"7f287b81_901fff59","updated":"2017-08-30 01:42:23.000000000","message":"power_state is the expected state after power on/off.\nThis is a bit confusing. \nI\u0027ll fix it.","commit_id":"3cd17bc4a860ea506312df2ed0495027184ef852"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"3052abfada4a91ee489086ba4a91278ef2aba5d5","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            result \u003d True"},{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            result \u003d False"},{"line_number":121,"context_line":"        return result"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def pre_condition(self):"},{"line_number":124,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_4d0fc036","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":21},"updated":"2017-08-29 13:28:01.000000000","message":"looks like it is unreachable now.","commit_id":"3cd17bc4a860ea506312df2ed0495027184ef852"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"5cac066409263aa6ef2643db67254c19038b3bf1","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            result \u003d True"},{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            result \u003d False"},{"line_number":121,"context_line":"        return result"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def pre_condition(self):"},{"line_number":124,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f287b81_67872564","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":21},"in_reply_to":"7f287b81_4d0fc036","updated":"2017-08-30 01:42:23.000000000","message":"This is the only return in the function.","commit_id":"3cd17bc4a860ea506312df2ed0495027184ef852"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"a0dd3c7bee6c23cbbb51720dde7619928995a570","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            power_state \u003d \u0027power on\u0027"},{"line_number":109,"context_line":"            ironic_client.node.set_power_state(self.node_uuid, state)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":112,"context_line":"        while ironic_node.power_state !\u003d power_state and retry:"},{"line_number":113,"context_line":"            time.sleep(10)"},{"line_number":114,"context_line":"            retry -\u003d 1"},{"line_number":115,"context_line":"            ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":116,"context_line":"        if retry \u003e 0:"},{"line_number":117,"context_line":"            return True"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            return False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def pre_condition(self):"},{"line_number":122,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_dfa781a7","line":119,"range":{"start_line":111,"start_character":0,"end_line":119,"end_character":24},"updated":"2017-09-01 08:51:25.000000000","message":"You can try loopcall.FixedIntervalWithTimeoutLoopingCall.\nit make logic here simple.","commit_id":"490bc2d981f48bc16d9336f8fe272a4e16577f16"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"72de6ed87be017e00ffc580a1c505b9c0819592a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            power_state \u003d \u0027power on\u0027"},{"line_number":109,"context_line":"            ironic_client.node.set_power_state(self.node_uuid, state)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":112,"context_line":"        while ironic_node.power_state !\u003d power_state and retry:"},{"line_number":113,"context_line":"            time.sleep(10)"},{"line_number":114,"context_line":"            retry -\u003d 1"},{"line_number":115,"context_line":"            ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":116,"context_line":"        if retry \u003e 0:"},{"line_number":117,"context_line":"            return True"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            return False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def pre_condition(self):"},{"line_number":122,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_6763d743","line":119,"range":{"start_line":111,"start_character":0,"end_line":119,"end_character":24},"in_reply_to":"7f287b81_49d8f479","updated":"2017-09-07 12:44:05.000000000","message":"It seems pythonic.\nDon\u0027t mind. Your code looks ok to me:)","commit_id":"490bc2d981f48bc16d9336f8fe272a4e16577f16"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"2596dfda8b4b3ae71cdfb946b8225c5a12618323","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            power_state \u003d \u0027power on\u0027"},{"line_number":109,"context_line":"            ironic_client.node.set_power_state(self.node_uuid, state)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":112,"context_line":"        while ironic_node.power_state !\u003d power_state and retry:"},{"line_number":113,"context_line":"            time.sleep(10)"},{"line_number":114,"context_line":"            retry -\u003d 1"},{"line_number":115,"context_line":"            ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":116,"context_line":"        if retry \u003e 0:"},{"line_number":117,"context_line":"            return True"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            return False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def pre_condition(self):"},{"line_number":122,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_fbe64db0","line":119,"range":{"start_line":111,"start_character":0,"end_line":119,"end_character":24},"in_reply_to":"7f287b81_a05d3048","updated":"2017-09-07 08:10:16.000000000","message":"def _wait_power_state(power_state):\n    ironic_node \u003d ironic_client.node.get(self.node_uuid)\n    if ironic_node.power_state \u003d\u003d power_state:\n        raise loopingcall.LoopingCallDone()\ntry:\n    timer \u003d loopingcall.FixedIntervalWithTimeoutLoopingCall(\n        _wait_power_action_finish, power_state)\n    timer.start(interval\u003d10, timeout\u003d10*retry).wait()\nexcept loopingcall.LoopingCallDone:\n    return True\nexcept loopingcall.LoopingCallTimeOut:\n    return False","commit_id":"490bc2d981f48bc16d9336f8fe272a4e16577f16"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"ed9d7c62147fa581d2b60366bee40d989beea929","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            power_state \u003d \u0027power on\u0027"},{"line_number":109,"context_line":"            ironic_client.node.set_power_state(self.node_uuid, state)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":112,"context_line":"        while ironic_node.power_state !\u003d power_state and retry:"},{"line_number":113,"context_line":"            time.sleep(10)"},{"line_number":114,"context_line":"            retry -\u003d 1"},{"line_number":115,"context_line":"            ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":116,"context_line":"        if retry \u003e 0:"},{"line_number":117,"context_line":"            return True"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            return False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def pre_condition(self):"},{"line_number":122,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_a05d3048","line":119,"range":{"start_line":111,"start_character":0,"end_line":119,"end_character":24},"in_reply_to":"7f287b81_dfa781a7","updated":"2017-09-07 07:32:09.000000000","message":"It seem to use for interval task.\nand I can\u0027t find the usage from openstack projects.","commit_id":"490bc2d981f48bc16d9336f8fe272a4e16577f16"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"35e0c5177e63f0693c846fc0a1754cbfdecd781a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"            power_state \u003d \u0027power on\u0027"},{"line_number":109,"context_line":"            ironic_client.node.set_power_state(self.node_uuid, state)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":112,"context_line":"        while ironic_node.power_state !\u003d power_state and retry:"},{"line_number":113,"context_line":"            time.sleep(10)"},{"line_number":114,"context_line":"            retry -\u003d 1"},{"line_number":115,"context_line":"            ironic_node \u003d ironic_client.node.get(self.node_uuid)"},{"line_number":116,"context_line":"        if retry \u003e 0:"},{"line_number":117,"context_line":"            return True"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            return False"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def pre_condition(self):"},{"line_number":122,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f287b81_49d8f479","line":119,"range":{"start_line":111,"start_character":0,"end_line":119,"end_character":24},"in_reply_to":"7f287b81_fbe64db0","updated":"2017-09-07 11:05:43.000000000","message":"I don\u0027t think it\u0027s simple:)","commit_id":"490bc2d981f48bc16d9336f8fe272a4e16577f16"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"a09cf8e7e4d79a278d116a65472f730dea35e83a","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            target_state \u003d NodeState.POWERON.value"},{"line_number":89,"context_line":"        return self._node_manage_power(target_state)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _node_manage_power(self, state, retry\u003d60):"},{"line_number":92,"context_line":"        if state is None:"},{"line_number":93,"context_line":"            raise exception.IllegalArgumentException("},{"line_number":94,"context_line":"                message\u003d_(\"The target state is not defined\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f2577a7_a7a75fbd","line":91,"range":{"start_line":91,"start_character":4,"end_line":91,"end_character":50},"updated":"2017-09-18 08:02:23.000000000","message":"Could you please add description to this method?","commit_id":"6e6e5907ee258b40e3a126586beb31ee9fa53329"},{"author":{"_account_id":22165,"name":"caoyuan","email":"cao.yingjunz@gmail.com","username":"caoyuan"},"change_message_id":"cf377cab30127dbe09dafa07d4b7555bef88ee17","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            target_state \u003d NodeState.POWERON.value"},{"line_number":89,"context_line":"        return self._node_manage_power(target_state)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _node_manage_power(self, state, retry\u003d60):"},{"line_number":92,"context_line":"        if state is None:"},{"line_number":93,"context_line":"            raise exception.IllegalArgumentException("},{"line_number":94,"context_line":"                message\u003d_(\"The target state is not defined\"))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_740d4a8f","line":91,"range":{"start_line":91,"start_character":4,"end_line":91,"end_character":50},"in_reply_to":"5f2577a7_a7a75fbd","updated":"2017-09-22 07:05:44.000000000","message":"agree, and this patch is good for me","commit_id":"6e6e5907ee258b40e3a126586beb31ee9fa53329"}]}
