)]}'
{"nova/api/openstack/api_version_request.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":88,"context_line":"             pre-checks failure. Verification result is available over"},{"line_number":89,"context_line":"             instance-actions."},{"line_number":90,"context_line":"    * 2.35 - Adds keypairs pagination support."},{"line_number":91,"context_line":"    * 2.36 - Adds soft power off/reboot support."},{"line_number":92,"context_line":"\"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_62479c77","line":91,"range":{"start_line":91,"start_character":33,"end_line":91,"end_character":39},"updated":"2016-07-20 08:19:36.000000000","message":"Just for sure, if soft reboot will also be implement in 2.36, it is OK. :)","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":88,"context_line":"             pre-checks failure. Verification result is available over"},{"line_number":89,"context_line":"             instance-actions."},{"line_number":90,"context_line":"    * 2.35 - Adds keypairs pagination support."},{"line_number":91,"context_line":"    * 2.36 - Adds soft power off/reboot support."},{"line_number":92,"context_line":"\"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_b353a86a","line":91,"range":{"start_line":91,"start_character":33,"end_line":91,"end_character":39},"in_reply_to":"dada55a8_62479c77","updated":"2016-07-20 12:54:10.000000000","message":"Yes. They will share the same microversion.","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"}],"nova/cells/rpcapi.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance,"},{"line_number":468,"context_line":"                    \u0027do_cast\u0027: do_cast}"},{"line_number":469,"context_line":"        if self.client.can_send_version(\u00271.31\u0027):"},{"line_number":470,"context_line":"            version \u003d \u00271.31\u0027"},{"line_number":471,"context_line":"            msg_args[\u0027clean_shutdown\u0027] \u003d clean_shutdown"},{"line_number":472,"context_line":"            msg_args[\u0027timeout\u0027] \u003d timeout"},{"line_number":473,"context_line":"            msg_args[\u0027type\u0027] \u003d type"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_2d96353f","line":470,"range":{"start_line":470,"start_character":23,"end_line":470,"end_character":27},"updated":"2016-07-20 08:19:36.000000000","message":"Not sure, but do we need any version update here ?","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        msg_args \u003d {\u0027instance\u0027: instance,"},{"line_number":468,"context_line":"                    \u0027do_cast\u0027: do_cast}"},{"line_number":469,"context_line":"        if self.client.can_send_version(\u00271.31\u0027):"},{"line_number":470,"context_line":"            version \u003d \u00271.31\u0027"},{"line_number":471,"context_line":"            msg_args[\u0027clean_shutdown\u0027] \u003d clean_shutdown"},{"line_number":472,"context_line":"            msg_args[\u0027timeout\u0027] \u003d timeout"},{"line_number":473,"context_line":"            msg_args[\u0027type\u0027] \u003d type"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_fb56895a","line":470,"range":{"start_line":470,"start_character":23,"end_line":470,"end_character":27},"in_reply_to":"dada55a8_2d96353f","updated":"2016-07-20 12:54:10.000000000","message":"Done","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"}],"nova/compute/manager.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":2134,"context_line":""},{"line_number":2135,"context_line":"        return timeout, retry_interval"},{"line_number":2136,"context_line":""},{"line_number":2137,"context_line":"    def _power_off_instance(self, context, instance, clean_shutdown\u003dTrue,"},{"line_number":2138,"context_line":"                            type\u003d\u0027soft\u0027, timeout\u003d0):"},{"line_number":2139,"context_line":"        \"\"\"Power off an instance on this host.\"\"\""},{"line_number":2140,"context_line":"        _timeout, retry_interval \u003d self._get_power_off_values(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_8d55a1fb","line":2137,"range":{"start_line":2137,"start_character":53,"end_line":2137,"end_character":67},"updated":"2016-07-20 08:19:36.000000000","message":"Not sure, but what does \"clean_shutdown\" mean ? Is it duplicated with type\u003dsoft ?","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":2134,"context_line":""},{"line_number":2135,"context_line":"        return timeout, retry_interval"},{"line_number":2136,"context_line":""},{"line_number":2137,"context_line":"    def _power_off_instance(self, context, instance, clean_shutdown\u003dTrue,"},{"line_number":2138,"context_line":"                            type\u003d\u0027soft\u0027, timeout\u003d0):"},{"line_number":2139,"context_line":"        \"\"\"Power off an instance on this host.\"\"\""},{"line_number":2140,"context_line":"        _timeout, retry_interval \u003d self._get_power_off_values(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_1b739d16","line":2137,"range":{"start_line":2137,"start_character":53,"end_line":2137,"end_character":67},"in_reply_to":"dada55a8_8d55a1fb","updated":"2016-07-20 12:54:10.000000000","message":"Yes, they share same meaning...I\u0027ll remove the \u0027type\u0027 in the next version.\nBut in driver level, the \u0027type\u0027 should be preserved.","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":2015,"context_line":"                                                inst_uuid,"},{"line_number":2016,"context_line":"                                                expected_attrs\u003dextra)"},{"line_number":2017,"context_line":"        self.compute.stop_instance(self.context, instance\u003dinst_obj,"},{"line_number":2018,"context_line":"                                   clean_shutdown\u003dTrue, type\u003d\u0027soft\u0027)"},{"line_number":2019,"context_line":"        self.compute.terminate_instance(self.context, instance, [], [])"},{"line_number":2020,"context_line":""},{"line_number":2021,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_action\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_48b8b7c8","line":2018,"range":{"start_line":2018,"start_character":56,"end_line":2018,"end_character":68},"updated":"2016-07-20 08:19:36.000000000","message":"Missing param timeout ?","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":2015,"context_line":"                                                inst_uuid,"},{"line_number":2016,"context_line":"                                                expected_attrs\u003dextra)"},{"line_number":2017,"context_line":"        self.compute.stop_instance(self.context, instance\u003dinst_obj,"},{"line_number":2018,"context_line":"                                   clean_shutdown\u003dTrue, type\u003d\u0027soft\u0027)"},{"line_number":2019,"context_line":"        self.compute.terminate_instance(self.context, instance, [], [])"},{"line_number":2020,"context_line":""},{"line_number":2021,"context_line":"    @mock.patch(\u0027nova.compute.utils.notify_about_instance_action\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_bb7a5175","line":2018,"range":{"start_line":2018,"start_character":56,"end_line":2018,"end_character":68},"in_reply_to":"dada55a8_48b8b7c8","updated":"2016-07-20 12:54:10.000000000","message":"There is a default timeout in stop_instance(), so it\u0027s OK.","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":2327,"context_line":"        called \u003d {\u0027power_off\u0027: False}"},{"line_number":2328,"context_line":""},{"line_number":2329,"context_line":"        def fake_driver_power_off(self, instance,"},{"line_number":2330,"context_line":"                                  shutdown_timeout, shutdown_attempts,"},{"line_number":2331,"context_line":"                                  type):"},{"line_number":2332,"context_line":"            called[\u0027power_off\u0027] \u003d True"},{"line_number":2333,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_13ac348b","line":2330,"range":{"start_line":2330,"start_character":34,"end_line":2330,"end_character":70},"updated":"2016-07-20 08:19:36.000000000","message":"Sorry, which function does this fake ?  I didn\u0027t see these two params in other changed files.","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":2327,"context_line":"        called \u003d {\u0027power_off\u0027: False}"},{"line_number":2328,"context_line":""},{"line_number":2329,"context_line":"        def fake_driver_power_off(self, instance,"},{"line_number":2330,"context_line":"                                  shutdown_timeout, shutdown_attempts,"},{"line_number":2331,"context_line":"                                  type):"},{"line_number":2332,"context_line":"            called[\u0027power_off\u0027] \u003d True"},{"line_number":2333,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_5b3355ab","line":2330,"range":{"start_line":2330,"start_character":34,"end_line":2330,"end_character":70},"in_reply_to":"dada55a8_13ac348b","updated":"2016-07-20 12:54:10.000000000","message":"Please look at L2334.","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"}],"nova/tests/unit/virt/ironic/test_driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1c15e546f05d027ac59c510306e78eeb7d861838","unresolved":false,"context_lines":[{"line_number":1321,"context_line":"        elif method_name \u003d\u003d \u0027power_off\u0027:"},{"line_number":1322,"context_line":"            self.driver.power_off(instance)"},{"line_number":1323,"context_line":"            mock_sp.assert_called_once_with(node.uuid, \u0027off\u0027)"},{"line_number":1324,"context_line":"        elif method_name \u003d\u003d \u0027soft_power_off\u0027:"},{"line_number":1325,"context_line":"            self.driver.power_off(instance, timeout\u003d10, retry_interval\u003d1)"},{"line_number":1326,"context_line":"            mock_sp.assert_called_once_with(node.uuid, \u0027soft_off\u0027)"},{"line_number":1327,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_9ae7e3ab","line":1324,"updated":"2015-11-23 12:58:09.000000000","message":"I feel this longish if..elif does not belong here but shall be done in the specific test case function. I do agree that the set-up part (L1309-L1314) shall not be duplicated.","commit_id":"62a4a2a4f68a1169182f086f832e3aefd4a2f1f1"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"436affef2d7646fc0799fd3056def543b412b768","unresolved":false,"context_lines":[{"line_number":1321,"context_line":"        elif method_name \u003d\u003d \u0027power_off\u0027:"},{"line_number":1322,"context_line":"            self.driver.power_off(instance)"},{"line_number":1323,"context_line":"            mock_sp.assert_called_once_with(node.uuid, \u0027off\u0027)"},{"line_number":1324,"context_line":"        elif method_name \u003d\u003d \u0027soft_power_off\u0027:"},{"line_number":1325,"context_line":"            self.driver.power_off(instance, timeout\u003d10, retry_interval\u003d1)"},{"line_number":1326,"context_line":"            mock_sp.assert_called_once_with(node.uuid, \u0027soft_off\u0027)"},{"line_number":1327,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_84e78111","line":1324,"in_reply_to":"ba8a016a_9ae7e3ab","updated":"2015-11-23 15:06:10.000000000","message":"OK, will try to see if we can do better here. Thx. :)","commit_id":"62a4a2a4f68a1169182f086f832e3aefd4a2f1f1"}],"nova/virt/driver.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":725,"context_line":"        # TODO(Vek): Need to pass context in for access to auth_token"},{"line_number":726,"context_line":"        raise NotImplementedError()"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"    def power_off(self, instance, timeout\u003d0, retry_interval\u003d0, type\u003d\u0027soft\u0027):"},{"line_number":729,"context_line":"        \"\"\"Power off the specified instance."},{"line_number":730,"context_line":""},{"line_number":731,"context_line":"        :param instance: nova.objects.instance.Instance"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_e2442cb8","line":728,"range":{"start_line":728,"start_character":63,"end_line":728,"end_character":74},"updated":"2016-07-20 08:19:36.000000000","message":"Missing doc below. :)","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":725,"context_line":"        # TODO(Vek): Need to pass context in for access to auth_token"},{"line_number":726,"context_line":"        raise NotImplementedError()"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"    def power_off(self, instance, timeout\u003d0, retry_interval\u003d0, type\u003d\u0027soft\u0027):"},{"line_number":729,"context_line":"        \"\"\"Power off the specified instance."},{"line_number":730,"context_line":""},{"line_number":731,"context_line":"        :param instance: nova.objects.instance.Instance"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_302b2096","line":728,"range":{"start_line":728,"start_character":63,"end_line":728,"end_character":74},"in_reply_to":"dada55a8_e2442cb8","updated":"2016-07-20 12:54:10.000000000","message":"Done","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4a4b6c614e9deb86e4c78758b5a0060446fec9d1","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        raise NotImplementedError()"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"    def power_off(self, instance, timeout\u003d0,"},{"line_number":729,"context_line":"                  retry_interval\u003d0, type\u003d\u0027SOFT\u0027):"},{"line_number":730,"context_line":"        \"\"\"Power off the specified instance."},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"        :param instance: nova.objects.instance.Instance"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_8256d959","line":729,"range":{"start_line":729,"start_character":42,"end_line":729,"end_character":47},"updated":"2016-07-21 02:12:33.000000000","message":"I suggest define \u0027SOFT\u0027 and \u0027HARD\u0027 in a global dict instead of using pure strings directly.","commit_id":"5182f624e163786828c0a6f6eafe1ba15739df99"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1c15e546f05d027ac59c510306e78eeb7d861838","unresolved":false,"context_lines":[{"line_number":988,"context_line":"            poweroff_type \u003d ironic_states.POWER_OFF"},{"line_number":989,"context_line":"        else:"},{"line_number":990,"context_line":"            poweroff_type \u003d ironic_states.SOFT_POWER_OFF"},{"line_number":991,"context_line":"            retry_interval \u003d CONF.ironic.api_retry_interval"},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        self.ironicclient.call(\"node.set_power_state\","},{"line_number":994,"context_line":"                               node.uuid,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_3aa59746","line":991,"updated":"2015-11-23 12:58:09.000000000","message":"Does it mean that the retry_interval parameter is still ignored by the this driver?","commit_id":"62a4a2a4f68a1169182f086f832e3aefd4a2f1f1"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"436affef2d7646fc0799fd3056def543b412b768","unresolved":false,"context_lines":[{"line_number":988,"context_line":"            poweroff_type \u003d ironic_states.POWER_OFF"},{"line_number":989,"context_line":"        else:"},{"line_number":990,"context_line":"            poweroff_type \u003d ironic_states.SOFT_POWER_OFF"},{"line_number":991,"context_line":"            retry_interval \u003d CONF.ironic.api_retry_interval"},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"        self.ironicclient.call(\"node.set_power_state\","},{"line_number":994,"context_line":"                               node.uuid,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_44dbd91b","line":991,"in_reply_to":"ba8a016a_3aa59746","updated":"2015-11-23 15:06:10.000000000","message":"Oh, sorry, this belongs to the if block. And when doing a soft power off, we will use the passed-in retry_interval.\n\nWill update it in v2 patch. Thx. :)","commit_id":"62a4a2a4f68a1169182f086f832e3aefd4a2f1f1"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        :param timeout: time to wait for node to shutdown."},{"line_number":924,"context_line":"        :param retry_interval: How often to signal node while waiting"},{"line_number":925,"context_line":"                               for it to shutdown."},{"line_number":926,"context_line":"        :param type: The type of power off."},{"line_number":927,"context_line":"        \"\"\""},{"line_number":928,"context_line":"        LOG.debug(\u0027Power off called for instance\u0027, instance\u003dinstance)"},{"line_number":929,"context_line":"        node \u003d self._validate_instance_and_node(instance)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_a2cd1487","line":926,"range":{"start_line":926,"start_character":21,"end_line":926,"end_character":42},"updated":"2016-07-20 08:19:36.000000000","message":"As a comment, I suggest to list up all choice here. \"soft or hard\"","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":923,"context_line":"        :param timeout: time to wait for node to shutdown."},{"line_number":924,"context_line":"        :param retry_interval: How often to signal node while waiting"},{"line_number":925,"context_line":"                               for it to shutdown."},{"line_number":926,"context_line":"        :param type: The type of power off."},{"line_number":927,"context_line":"        \"\"\""},{"line_number":928,"context_line":"        LOG.debug(\u0027Power off called for instance\u0027, instance\u003dinstance)"},{"line_number":929,"context_line":"        node \u003d self._validate_instance_and_node(instance)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_705478fe","line":926,"range":{"start_line":926,"start_character":21,"end_line":926,"end_character":42},"in_reply_to":"dada55a8_a2cd1487","updated":"2016-07-20 12:54:10.000000000","message":"Done","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":928,"context_line":"        LOG.debug(\u0027Power off called for instance\u0027, instance\u003dinstance)"},{"line_number":929,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"        if type.lower() \u003d\u003d \u0027soft\u0027 and timeout:"},{"line_number":932,"context_line":"            poweroff_type \u003d ironic_states.SOFT_POWER_OFF"},{"line_number":933,"context_line":"        else:"},{"line_number":934,"context_line":"            poweroff_type \u003d ironic_states.POWER_OFF"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_2296443f","line":931,"range":{"start_line":931,"start_character":38,"end_line":931,"end_character":45},"updated":"2016-07-20 08:19:36.000000000","message":"So, timeout defaults to 0. And if type is \"soft\" but timeout is not specified, the poweroff will be hard. If so, I suggest we\u0027d better change the timeout default value to something like \"600\". Then if user doesn\u0027t specify one, we can do the soft poweroff by default.\n\nI think, even if we don\u0027t do it here, ironicclient or openstackclient will do so on client side. But I still suggest we do it here. :)","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":928,"context_line":"        LOG.debug(\u0027Power off called for instance\u0027, instance\u003dinstance)"},{"line_number":929,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"        if type.lower() \u003d\u003d \u0027soft\u0027 and timeout:"},{"line_number":932,"context_line":"            poweroff_type \u003d ironic_states.SOFT_POWER_OFF"},{"line_number":933,"context_line":"        else:"},{"line_number":934,"context_line":"            poweroff_type \u003d ironic_states.POWER_OFF"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_b071d0aa","line":931,"range":{"start_line":931,"start_character":38,"end_line":931,"end_character":45},"in_reply_to":"dada55a8_2296443f","updated":"2016-07-20 12:54:10.000000000","message":"To be consistent with other driver, it should be set zero I think. Furthermore, the case test_public_api_signatures will be failed if it is set to a non-zero value, as it is defined a different pattern with its base class.\nActually, we have already set it to non-zero by the API level.\nBTW, IIUC openstackclient won\u0027t call this interface directly.","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"8b8e733f5efa0846a33641443454c4c2b242dd6d","unresolved":false,"context_lines":[{"line_number":928,"context_line":"        LOG.debug(\u0027Power off called for instance\u0027, instance\u003dinstance)"},{"line_number":929,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":930,"context_line":""},{"line_number":931,"context_line":"        if type.lower() \u003d\u003d \u0027soft\u0027 and timeout:"},{"line_number":932,"context_line":"            poweroff_type \u003d ironic_states.SOFT_POWER_OFF"},{"line_number":933,"context_line":"        else:"},{"line_number":934,"context_line":"            poweroff_type \u003d ironic_states.POWER_OFF"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_22472d78","line":931,"range":{"start_line":931,"start_character":38,"end_line":931,"end_character":45},"in_reply_to":"dada55a8_b071d0aa","updated":"2016-07-21 02:11:54.000000000","message":"Oh, yes. A default value has been set in API level. So it\u0027s OK. :)","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        else:"},{"line_number":934,"context_line":"            poweroff_type \u003d ironic_states.POWER_OFF"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        retry_interval \u003d CONF.ironic.api_retry_interval"},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        self.ironicclient.call(\"node.set_power_state\", node.uuid,"},{"line_number":939,"context_line":"                               _POWER_STATE_TRANSLATE[poweroff_type],"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_22bda4b7","line":936,"range":{"start_line":936,"start_character":25,"end_line":936,"end_character":55},"updated":"2016-07-20 08:19:36.000000000","message":"And BTW, can we also put this timeout in the config file and let user specify it ?","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        else:"},{"line_number":934,"context_line":"            poweroff_type \u003d ironic_states.POWER_OFF"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"        retry_interval \u003d CONF.ironic.api_retry_interval"},{"line_number":937,"context_line":""},{"line_number":938,"context_line":"        self.ironicclient.call(\"node.set_power_state\", node.uuid,"},{"line_number":939,"context_line":"                               _POWER_STATE_TRANSLATE[poweroff_type],"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_90064c84","line":936,"range":{"start_line":936,"start_character":25,"end_line":936,"end_character":55},"in_reply_to":"dada55a8_22bda4b7","updated":"2016-07-20 12:54:10.000000000","message":"Done","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"3177d048796fdebe092bb14afa4ccb1c42e7cabc","unresolved":false,"context_lines":[{"line_number":2479,"context_line":""},{"line_number":2480,"context_line":"    def power_off(self, instance, timeout\u003d0, retry_interval\u003d0, type\u003d\u0027soft\u0027):"},{"line_number":2481,"context_line":"        \"\"\"Power off the specified instance.\"\"\""},{"line_number":2482,"context_line":"        if type.lower() \u003d\u003d \u0027soft\u0027 and timeout:"},{"line_number":2483,"context_line":"            self._clean_shutdown(instance, timeout, retry_interval)"},{"line_number":2484,"context_line":"        self._destroy(instance)"},{"line_number":2485,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_220be48f","line":2482,"range":{"start_line":2482,"start_character":38,"end_line":2482,"end_character":45},"updated":"2016-07-20 08:19:36.000000000","message":"Here too.","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"61bc040c5a8f9dba67effa9549fc2329c68180e7","unresolved":false,"context_lines":[{"line_number":2479,"context_line":""},{"line_number":2480,"context_line":"    def power_off(self, instance, timeout\u003d0, retry_interval\u003d0, type\u003d\u0027soft\u0027):"},{"line_number":2481,"context_line":"        \"\"\"Power off the specified instance.\"\"\""},{"line_number":2482,"context_line":"        if type.lower() \u003d\u003d \u0027soft\u0027 and timeout:"},{"line_number":2483,"context_line":"            self._clean_shutdown(instance, timeout, retry_interval)"},{"line_number":2484,"context_line":"        self._destroy(instance)"},{"line_number":2485,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_969c8d5e","line":2482,"range":{"start_line":2482,"start_character":38,"end_line":2482,"end_character":45},"in_reply_to":"dada55a8_220be48f","updated":"2016-07-20 12:54:10.000000000","message":"I guess your original objective for this patch is to add the soft behaviors to ironic driver. So as for other drivers, we\u0027d better leave them alone I think. What do you think?","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"8b8e733f5efa0846a33641443454c4c2b242dd6d","unresolved":false,"context_lines":[{"line_number":2479,"context_line":""},{"line_number":2480,"context_line":"    def power_off(self, instance, timeout\u003d0, retry_interval\u003d0, type\u003d\u0027soft\u0027):"},{"line_number":2481,"context_line":"        \"\"\"Power off the specified instance.\"\"\""},{"line_number":2482,"context_line":"        if type.lower() \u003d\u003d \u0027soft\u0027 and timeout:"},{"line_number":2483,"context_line":"            self._clean_shutdown(instance, timeout, retry_interval)"},{"line_number":2484,"context_line":"        self._destroy(instance)"},{"line_number":2485,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_c2561129","line":2482,"range":{"start_line":2482,"start_character":38,"end_line":2482,"end_character":45},"in_reply_to":"dada55a8_969c8d5e","updated":"2016-07-21 02:11:54.000000000","message":"OK.","commit_id":"6a77d7e3e22b360cf0dfd9b238ab40d0ee4de668"}]}
