)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"da9e272fa70025b59d4088c421672e2a773b94e5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Naohiro Tamura \u003cnaohirot@jp.fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-27 15:10:18 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enhance Power Interface for Soft Power Off and Inject NMI"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This specification proposes the work required to enhance the power"},{"line_number":10,"context_line":"interface to support soft power off and diagnostic interrupt (NMI [1]),"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":30,"id":"3aaa91ec_2aafc57d","line":7,"range":{"start_line":7,"start_character":8,"end_line":7,"end_character":23},"updated":"2016-06-27 06:21:02.000000000","message":"update the tile accordingly in next patch","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"da9e272fa70025b59d4088c421672e2a773b94e5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enhance Power Interface for Soft Power Off and Inject NMI"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This specification proposes the work required to enhance the power"},{"line_number":10,"context_line":"interface to support soft power off and diagnostic interrupt (NMI [1]),"},{"line_number":11,"context_line":"and the work required to provide IPMIPower reference implementation."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[1] http://en.wikipedia.org/wiki/Non-maskable_interrupt"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":30,"id":"3aaa91ec_4ac85155","line":10,"range":{"start_line":9,"start_character":57,"end_line":10,"end_character":9},"updated":"2016-06-27 06:21:02.000000000","message":"update the sentence accordingly in next patch","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"}],"specs/approved/enhance-power-interface-for-soft-reboot-and-nmi.rst":[{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"18c45ec1a9a36a734b1be9cfeec90363e9c3d6b6","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Enhance Power Interface for Soft Power Off and NMI"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/ironic/+spec/enhance-power-interface-for-soft-power-off-and-inject-nmi"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The proposal presents the work required to enhance the power"},{"line_number":14,"context_line":"interface to support soft reboot, soft power off and diagnostic"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa1b9901_b3453618","line":11,"updated":"2015-08-19 06:59:37.000000000","message":"the filename must match the blueprint name","commit_id":"b3795c3cef2bf76daa804103e764c2a69ecaf7cf"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"986aa7886bd84f0d20c71d015b0de6c44910b93f","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Enhance Power Interface for Soft Power Off and NMI"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/ironic/+spec/enhance-power-interface-for-soft-power-off-and-inject-nmi"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The proposal presents the work required to enhance the power"},{"line_number":14,"context_line":"interface to support soft reboot, soft power off and diagnostic"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa1b9901_085f0c0f","line":11,"in_reply_to":"fa1b9901_b3453618","updated":"2015-08-19 07:50:34.000000000","message":"Mitsuhiro,\n\nYeah, you are right, Thanks!\n\nNaohiro","commit_id":"b3795c3cef2bf76daa804103e764c2a69ecaf7cf"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ec3f64363cc9eea37118a2faafa126e5b7cf288e","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    REBOOT_SOFT \u003d \u0027rebooting soft\u0027"},{"line_number":90,"context_line":"    POWER_OFF_SOFT \u003d \u0027power off soft\u0027"},{"line_number":91,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":92,"context_line":"    CANCEL_REBOOT_SOFT \u003d \u0027cancel rebooting soft\u0027"},{"line_number":93,"context_line":"    CANCEL_POWER_OFF_SOFT \u003d \u0027cancel power off soft\u0027"},{"line_number":94,"context_line":"    CANCEL_INJECT_NMI \u003d \u0027cancel inject nmi\u0027"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_4093c95b","line":92,"updated":"2015-08-27 15:10:34.000000000","message":"These CANCEL_* states can act as target_power_state (the table below). But target_power_state is String(15) in DB. You should mention that a DB migration is needed.","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1ba43e8a77b06aad7b5484f0f6af311057edaaf3","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    REBOOT_SOFT \u003d \u0027rebooting soft\u0027"},{"line_number":90,"context_line":"    POWER_OFF_SOFT \u003d \u0027power off soft\u0027"},{"line_number":91,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":92,"context_line":"    CANCEL_REBOOT_SOFT \u003d \u0027cancel rebooting soft\u0027"},{"line_number":93,"context_line":"    CANCEL_POWER_OFF_SOFT \u003d \u0027cancel power off soft\u0027"},{"line_number":94,"context_line":"    CANCEL_INJECT_NMI \u003d \u0027cancel inject nmi\u0027"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_311a846f","line":92,"in_reply_to":"da20952f_4093c95b","updated":"2015-08-28 07:47:55.000000000","message":"I see, that\u0027s the reason I needed to update an unit test which just checks the length of the state string.\n\nI\u0027ll update the section \"Data model impact\".","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ec3f64363cc9eea37118a2faafa126e5b7cf288e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"2. add \"get_supported_power_states\" method and default implementation"},{"line_number":97,"context_line":"   in PowerInterface::"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_supported_power_states(self, task):"},{"line_number":100,"context_line":"        \"\"\"Get a list of the supported power states."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        :param task: A TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_7b3a4038","line":99,"updated":"2015-08-27 15:10:34.000000000","message":"In the REST API supported power states reported per-a-node, and \"task\" argument passed here. Is a request to the hardware needed for some cases?","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1ba43e8a77b06aad7b5484f0f6af311057edaaf3","unresolved":false,"context_lines":[{"line_number":96,"context_line":"2. add \"get_supported_power_states\" method and default implementation"},{"line_number":97,"context_line":"   in PowerInterface::"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def get_supported_power_states(self, task):"},{"line_number":100,"context_line":"        \"\"\"Get a list of the supported power states."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        :param task: A TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_116e6095","line":99,"in_reply_to":"da20952f_7b3a4038","updated":"2015-08-28 07:47:55.000000000","message":"I just added the \u0027task\u0027 parameter by considering the case of get_supported_boot_devices().\n\nhttps://review.openstack.org/#/c/188466/","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ec3f64363cc9eea37118a2faafa126e5b7cf288e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":118,"context_line":"        :param power_state: One of power state in :mod:`ironic.common.states`."},{"line_number":119,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":120,"context_line":"        :raises: InvalidParameterValue if \"soft\u003dTrue\" is not allowed."},{"line_number":121,"context_line":"        \"\"\""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    This IPMIPower reference implementation supports REBOOT_SOFT,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_c087d95f","line":120,"updated":"2015-08-27 15:10:34.000000000","message":"There is no \"soft\" keyword argument.","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1ba43e8a77b06aad7b5484f0f6af311057edaaf3","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":118,"context_line":"        :param power_state: One of power state in :mod:`ironic.common.states`."},{"line_number":119,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":120,"context_line":"        :raises: InvalidParameterValue if \"soft\u003dTrue\" is not allowed."},{"line_number":121,"context_line":"        \"\"\""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    This IPMIPower reference implementation supports REBOOT_SOFT,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_f1308ca0","line":120,"in_reply_to":"da20952f_c087d95f","updated":"2015-08-28 07:47:55.000000000","message":"I\u0027ll remove that.","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ec3f64363cc9eea37118a2faafa126e5b7cf288e","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Data model impact"},{"line_number":186,"context_line":"-----------------"},{"line_number":187,"context_line":"None"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"State Machine Impact"},{"line_number":190,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_600ccd94","line":187,"updated":"2015-08-27 15:10:34.000000000","message":"Look at my comment l92","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1ba43e8a77b06aad7b5484f0f6af311057edaaf3","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Data model impact"},{"line_number":186,"context_line":"-----------------"},{"line_number":187,"context_line":"None"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"State Machine Impact"},{"line_number":190,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_711d5c0e","line":187,"in_reply_to":"da20952f_600ccd94","updated":"2015-08-28 07:47:55.000000000","message":"I\u0027ll add that.","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ec3f64363cc9eea37118a2faafa126e5b7cf288e","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"Driver API impact"},{"line_number":319,"context_line":"-----------------"},{"line_number":320,"context_line":"None"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"Nova driver impact"},{"line_number":323,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_fb3170ed","line":320,"updated":"2015-08-27 15:10:34.000000000","message":"You propose changes to PowerInterface.","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1ba43e8a77b06aad7b5484f0f6af311057edaaf3","unresolved":false,"context_lines":[{"line_number":317,"context_line":""},{"line_number":318,"context_line":"Driver API impact"},{"line_number":319,"context_line":"-----------------"},{"line_number":320,"context_line":"None"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"Nova driver impact"},{"line_number":323,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_51e938e5","line":320,"in_reply_to":"da20952f_fb3170ed","updated":"2015-08-28 07:47:55.000000000","message":"I\u0027ll add that.","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"103f3d1148866ea9e2aa067adb343b75ed1b6dce","unresolved":false,"context_lines":[{"line_number":343,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":344,"context_line":"  sure the following:"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":" * set properties/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":" * deploy or set up ACPI [6] controllable instance to the node. How to"},{"line_number":349,"context_line":"   make the instance ACPI [6] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa1b9901_bb2aec7c","line":346,"updated":"2015-08-19 08:11:40.000000000","message":"set properties/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node if it is capable of Soft Power Off.\n\nset properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 to a node if it is capable of Inject NMI.","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"175b0b2f724bbebbd2a34a565e6458557a2354e0","unresolved":false,"context_lines":[{"line_number":343,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":344,"context_line":"  sure the following:"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":" * set properties/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":" * deploy or set up ACPI [6] controllable instance to the node. How to"},{"line_number":349,"context_line":"   make the instance ACPI [6] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa1b9901_87e105d3","line":346,"in_reply_to":"fa1b9901_bb2aec7c","updated":"2015-08-24 02:06:49.000000000","message":"change the default value (sec) if necessary.\n\nCONF.ipmi.soft_off_retry_timeout \u003d 600\n\nCONF.ipmi.inject_nmi_retry_timeout \u003d 600","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"ec3f64363cc9eea37118a2faafa126e5b7cf288e","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"Work Items"},{"line_number":397,"context_line":"----------"},{"line_number":398,"context_line":"* Re-factor TaskManager and implement cancel-able task."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"* Enhance PowerInterface class to support soft power off and"},{"line_number":401,"context_line":"  diagnostic interrupt (NMI [1]) as described \"Proposed change\"."}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_8049e18d","line":398,"updated":"2015-08-27 15:10:34.000000000","message":"Please provide more information about this item. It is not present in \"\tProposed change\".","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1ba43e8a77b06aad7b5484f0f6af311057edaaf3","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"Work Items"},{"line_number":397,"context_line":"----------"},{"line_number":398,"context_line":"* Re-factor TaskManager and implement cancel-able task."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"* Enhance PowerInterface class to support soft power off and"},{"line_number":401,"context_line":"  diagnostic interrupt (NMI [1]) as described \"Proposed change\"."}],"source_content_type":"text/x-rst","patch_set":9,"id":"da20952f_9136f050","line":398,"in_reply_to":"da20952f_8049e18d","updated":"2015-08-28 07:47:55.000000000","message":"I\u0027ll add that.\n\nI implemented the cancel task by using CSP channel.\n\nYou can find it in the POC. What do you think? Is it acceptable?\n\nLine 429-446\nhttps://review.openstack.org/#/c/207897/5/ironic/conductor/manager.py\n\n\nLine 50-65\nhttps://review.openstack.org/#/c/207897/5/ironic/conductor/utils.py\n\nLine 503-510\nhttps://review.openstack.org/#/c/207897/5/ironic/drivers/modules/ipmitool.py","commit_id":"6667905bc0eeeb318fe4c1d37ca84c073fa7e5c5"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"20359380aa034b2ebd29df49fed67af020aff1a7","unresolved":false,"context_lines":[{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Driver API impact"},{"line_number":328,"context_line":"-----------------"},{"line_number":329,"context_line":"None"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"Nova driver impact"},{"line_number":332,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_cd01d739","line":329,"updated":"2015-08-31 08:09:08.000000000","message":"Oops, I forgot. I\u0027ll fix that.","commit_id":"449a3c925f239d64b0f65dd8c9357d421f2b8873"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    The reason is that INJECT_NMI cannot be implemented as POWER CYCLE"},{"line_number":133,"context_line":"    to preserve memory foot print, so power state keeps staying in ON"},{"line_number":134,"context_line":"    during injecting NMI. Therefor getting the OS instance status is"},{"line_number":135,"context_line":"    required. However generic BMC cannot get the OS instance status."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    The following table shows power state value of each state"},{"line_number":138,"context_line":"    variables."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_647a3326","line":135,"updated":"2015-09-04 18:14:12.000000000","message":"So I talked to Deva about this at the midcycle... we think for NMI, it\u0027s ok to just send the signal and hope it works. The user can verify for themselves if it actually worked, by logging into the instance etc.\n\nThe main reason for this is that we actually can\u0027t guarantee that we can verify the OS status for *any* driver - there are a number of reasons we might not be able to verify this.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    The reason is that INJECT_NMI cannot be implemented as POWER CYCLE"},{"line_number":133,"context_line":"    to preserve memory foot print, so power state keeps staying in ON"},{"line_number":134,"context_line":"    during injecting NMI. Therefor getting the OS instance status is"},{"line_number":135,"context_line":"    required. However generic BMC cannot get the OS instance status."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    The following table shows power state value of each state"},{"line_number":138,"context_line":"    variables."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_021e8c5e","line":135,"in_reply_to":"da20952f_647a3326","updated":"2015-09-07 14:25:00.000000000","message":"Okay, that sounds reasonable. I\u0027ll fix that.\n\nOne thing I\u0027d like to note is that standard BMC cannot get OS status but vendor enhanced BMC such as iRMC can get it.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    new_state         | power_state  | target_power_state | power_state"},{"line_number":145,"context_line":"                      | (start state)| (assigned value)   | (end state)"},{"line_number":146,"context_line":"    ------------------+--------------+--------------------+--------------"},{"line_number":147,"context_line":"    SOFT_REBOOT       | POWER_ON     | POWER_OFF_SOFT     | POWER_OFF"},{"line_number":148,"context_line":"    SOFT_REBOOT       | POWER_OFF    | POWER_ON           | POWER_ON"},{"line_number":149,"context_line":"    POWER_OFF_SOFT    | POWER_ON     | POWER_OFF_SOFT     | POWER_OFF"},{"line_number":150,"context_line":"    POWER_OFF_SOFT    | POWER_OFF    | NONE               | POWER_OFF"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_93cd4b32","line":147,"updated":"2015-09-04 18:14:12.000000000","message":"Seems like end state should be POWER_ON here? And perhaps target state should be SOFT_REBOOT to avoid user confusion.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    new_state         | power_state  | target_power_state | power_state"},{"line_number":145,"context_line":"                      | (start state)| (assigned value)   | (end state)"},{"line_number":146,"context_line":"    ------------------+--------------+--------------------+--------------"},{"line_number":147,"context_line":"    SOFT_REBOOT       | POWER_ON     | POWER_OFF_SOFT     | POWER_OFF"},{"line_number":148,"context_line":"    SOFT_REBOOT       | POWER_OFF    | POWER_ON           | POWER_ON"},{"line_number":149,"context_line":"    POWER_OFF_SOFT    | POWER_ON     | POWER_OFF_SOFT     | POWER_OFF"},{"line_number":150,"context_line":"    POWER_OFF_SOFT    | POWER_OFF    | NONE               | POWER_OFF"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_d244ef47","line":147,"in_reply_to":"da20952f_93cd4b32","updated":"2015-09-07 14:25:00.000000000","message":"The end state is actually intermediate state in case of above.\nAs you know, soft reboot is implemented as power cycle such as reboot.\n\nI\u0027ll add a note in the table.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    new_state         | power_state  | target_power_state | power_state"},{"line_number":155,"context_line":"                      | (start state)| (current value)    | (end state)"},{"line_number":156,"context_line":"    ------------------+--------------+--------------------+--------------"},{"line_number":157,"context_line":"    CANCEL_SOFT_REBOOT| not ERROR    | POWER_OFF_SOFT     | ERROR"},{"line_number":158,"context_line":"    CANCEL_SOFT_REBOOT| any state    | not POWER_OFF_SOFT | start state"},{"line_number":159,"context_line":"    CANCEL_POWER_OFF  | not ERROR    | POWER_OFF_SOFT     | POWER_ON"},{"line_number":160,"context_line":"    CANCEL_POWER_OFF  | any state    | not POWER_OFF_SOFT | start state"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_93e46ba8","line":157,"updated":"2015-09-04 18:14:12.000000000","message":"I wonder if end state should equal start state here.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    new_state         | power_state  | target_power_state | power_state"},{"line_number":155,"context_line":"                      | (start state)| (current value)    | (end state)"},{"line_number":156,"context_line":"    ------------------+--------------+--------------------+--------------"},{"line_number":157,"context_line":"    CANCEL_SOFT_REBOOT| not ERROR    | POWER_OFF_SOFT     | ERROR"},{"line_number":158,"context_line":"    CANCEL_SOFT_REBOOT| any state    | not POWER_OFF_SOFT | start state"},{"line_number":159,"context_line":"    CANCEL_POWER_OFF  | not ERROR    | POWER_OFF_SOFT     | POWER_ON"},{"line_number":160,"context_line":"    CANCEL_POWER_OFF  | any state    | not POWER_OFF_SOFT | start state"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_72d5e319","line":157,"in_reply_to":"da20952f_93e46ba8","updated":"2015-09-07 14:25:00.000000000","message":"Okay, I\u0027ll fix that.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    CANCEL_SOFT_REBOOT| any state    | not POWER_OFF_SOFT | start state"},{"line_number":159,"context_line":"    CANCEL_POWER_OFF  | not ERROR    | POWER_OFF_SOFT     | POWER_ON"},{"line_number":160,"context_line":"    CANCEL_POWER_OFF  | any state    | not POWER_OFF_SOFT | start state"},{"line_number":161,"context_line":"    CANCEL_INJECT_NMI | not ERROR    | INJECT_NMI         | ERROR"},{"line_number":162,"context_line":"    CANCEL_INJECT_NMI | any state    | not INJECT_NMI     | start state"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"4. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_53033342","line":161,"updated":"2015-09-04 18:14:12.000000000","message":"Ditto","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    CANCEL_SOFT_REBOOT| any state    | not POWER_OFF_SOFT | start state"},{"line_number":159,"context_line":"    CANCEL_POWER_OFF  | not ERROR    | POWER_OFF_SOFT     | POWER_ON"},{"line_number":160,"context_line":"    CANCEL_POWER_OFF  | any state    | not POWER_OFF_SOFT | start state"},{"line_number":161,"context_line":"    CANCEL_INJECT_NMI | not ERROR    | INJECT_NMI         | ERROR"},{"line_number":162,"context_line":"    CANCEL_INJECT_NMI | any state    | not INJECT_NMI     | start state"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"4. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_32dbeb50","line":161,"in_reply_to":"da20952f_53033342","updated":"2015-09-07 14:25:00.000000000","message":"I\u0027ll fix that.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"   power_state \u003d Column(String(25), nullable\u003dTrue)"},{"line_number":194,"context_line":"   target_power_state \u003d Column(String(25), nullable\u003dTrue)"},{"line_number":195,"context_line":"   provision_state \u003d Column(String(25), nullable\u003dTrue)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"State Machine Impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_738757b5","line":195,"updated":"2015-09-04 18:14:12.000000000","message":"If we\u0027re going to expand this, let\u0027s use 255 so that we never need to do it again :)","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"   power_state \u003d Column(String(25), nullable\u003dTrue)"},{"line_number":194,"context_line":"   target_power_state \u003d Column(String(25), nullable\u003dTrue)"},{"line_number":195,"context_line":"   provision_state \u003d Column(String(25), nullable\u003dTrue)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"State Machine Impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_7ea372b2","line":195,"in_reply_to":"da20952f_738757b5","updated":"2015-09-07 14:25:00.000000000","message":"Yeah, that makes sense, I\u0027ll fix that.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"* Add a new \"supported_power_states\" member to type Node and"},{"line_number":226,"context_line":"  NodeStates, and enhance the following API so that returned table"},{"line_number":227,"context_line":"  contains \"supported_power_states\" member."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"  GET /v1/nodes/(node_ident)::"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_53b1f38d","line":227,"updated":"2015-09-04 18:14:12.000000000","message":"I wonder if this should be added to /v1/nodes/\u003cnode_ident\u003e/states/power, not sure...","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"* Add a new \"supported_power_states\" member to type Node and"},{"line_number":226,"context_line":"  NodeStates, and enhance the following API so that returned table"},{"line_number":227,"context_line":"  contains \"supported_power_states\" member."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"  GET /v1/nodes/(node_ident)::"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_2d7aaa77","line":227,"in_reply_to":"da20952f_53b1f38d","updated":"2015-09-07 14:25:00.000000000","message":"Jim, Devandanda,\n\nOkay, I think we need to discuss based on the comment patch #6, Line 177.\n\nhttps://review.openstack.org/#/c/186700/6/specs/liberty/enhance-power-interface-for-soft-reboot-and-nmi.rst\n\nDo you have any input to pros or cons?","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":355,"context_line":"  sure the following:"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":" * set properties/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node if"},{"line_number":358,"context_line":"   it is capable of soft reboot and soft power off."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":" * set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 to a node if"},{"line_number":361,"context_line":"   it is capable of inject NMI."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_535fb340","line":358,"updated":"2015-09-04 18:14:12.000000000","message":"Is the default here false?","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":355,"context_line":"  sure the following:"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":" * set properties/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node if"},{"line_number":358,"context_line":"   it is capable of soft reboot and soft power off."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":" * set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 to a node if"},{"line_number":361,"context_line":"   it is capable of inject NMI."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_5660c9ce","line":358,"in_reply_to":"da20952f_535fb340","updated":"2015-09-07 14:25:00.000000000","message":"Yes. I\u0027ll fix that.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":358,"context_line":"   it is capable of soft reboot and soft power off."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":" * set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 to a node if"},{"line_number":361,"context_line":"   it is capable of inject NMI."},{"line_number":362,"context_line":""},{"line_number":363,"context_line":" * change the default timeout value (sec) if necessary::"},{"line_number":364,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_735c374b","line":361,"updated":"2015-09-04 18:14:12.000000000","message":"Is the default here false?","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":358,"context_line":"   it is capable of soft reboot and soft power off."},{"line_number":359,"context_line":""},{"line_number":360,"context_line":" * set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 to a node if"},{"line_number":361,"context_line":"   it is capable of inject NMI."},{"line_number":362,"context_line":""},{"line_number":363,"context_line":" * change the default timeout value (sec) if necessary::"},{"line_number":364,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_169d71bb","line":361,"in_reply_to":"da20952f_735c374b","updated":"2015-09-07 14:25:00.000000000","message":"Yes. I\u0027ll fix that.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    CONF.conductor.power_off_soft_retry_timeout \u003d 600"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    CONF.conductor.power_inject_nmi_retry_timeout \u003d 600"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":" * deploy or set up ACPI [6] controllable instance to the node. How to"},{"line_number":370,"context_line":"   make the instance ACPI [6] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_b313af64","line":367,"updated":"2015-09-04 18:14:12.000000000","message":"Nit: This should be in deployer impact.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    CONF.conductor.power_off_soft_retry_timeout \u003d 600"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"    CONF.conductor.power_inject_nmi_retry_timeout \u003d 600"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":" * deploy or set up ACPI [6] controllable instance to the node. How to"},{"line_number":370,"context_line":"   make the instance ACPI [6] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_16dfb10d","line":367,"in_reply_to":"da20952f_b313af64","updated":"2015-09-07 14:25:00.000000000","message":"I\u0027ll move them.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"5d6a2173464411c859a9d2f235818cd2e7610363","unresolved":false,"context_lines":[{"line_number":419,"context_line":"* Re-factor TaskManager and implement cancel-able task by adding CSP"},{"line_number":420,"context_line":"  channel so that cancel task such as CANCEL_REBOOT_SOFT,"},{"line_number":421,"context_line":"  CANCEL_POWER_OFF_SOFT, and CANCEL_INJECT_NMI can cancel long running"},{"line_number":422,"context_line":"  task such as REBOOT_SOFT, POWER_OFF_SOFT and INJECT_NMI respectively."},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"* Enhance PowerInterface class to support soft power off and"},{"line_number":425,"context_line":"  diagnostic interrupt (NMI [1]) as described \"Proposed change\"."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_130b7a25","line":422,"updated":"2015-09-04 18:14:12.000000000","message":"So, this is the first mention of CSP channels here. Can you link to some information about what that is, and maybe some notes about why you\u0027re using them in the proposed change section?","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"11abfbd4e39e7e0b5ae657e39316aede2b7d1b45","unresolved":false,"context_lines":[{"line_number":419,"context_line":"* Re-factor TaskManager and implement cancel-able task by adding CSP"},{"line_number":420,"context_line":"  channel so that cancel task such as CANCEL_REBOOT_SOFT,"},{"line_number":421,"context_line":"  CANCEL_POWER_OFF_SOFT, and CANCEL_INJECT_NMI can cancel long running"},{"line_number":422,"context_line":"  task such as REBOOT_SOFT, POWER_OFF_SOFT and INJECT_NMI respectively."},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"* Enhance PowerInterface class to support soft power off and"},{"line_number":425,"context_line":"  diagnostic interrupt (NMI [1]) as described \"Proposed change\"."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_b6ce0558","line":422,"in_reply_to":"da20952f_130b7a25","updated":"2015-09-07 14:25:00.000000000","message":"Sure, I\u0027ll add them.","commit_id":"21996ef18ca6180339fa461512e57d3aa9333283"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":88,"context_line":"   channel to TaskManager::"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    REBOOT_SOFT \u003d \u0027rebooting soft\u0027"},{"line_number":91,"context_line":"    POWER_OFF_SOFT \u003d \u0027power off soft\u0027"},{"line_number":92,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":93,"context_line":"    CANCEL_REBOOT_SOFT \u003d \u0027cancel rebooting soft\u0027"},{"line_number":94,"context_line":"    CANCEL_POWER_OFF_SOFT \u003d \u0027cancel power off soft\u0027"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_0c952b3f","line":91,"updated":"2015-10-26 05:11:05.000000000","message":"nit: better \"soft power off\" and \"soft reboot\"","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":88,"context_line":"   channel to TaskManager::"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    REBOOT_SOFT \u003d \u0027rebooting soft\u0027"},{"line_number":91,"context_line":"    POWER_OFF_SOFT \u003d \u0027power off soft\u0027"},{"line_number":92,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":93,"context_line":"    CANCEL_REBOOT_SOFT \u003d \u0027cancel rebooting soft\u0027"},{"line_number":94,"context_line":"    CANCEL_POWER_OFF_SOFT \u003d \u0027cancel power off soft\u0027"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_6e547852","line":91,"in_reply_to":"3a29b11f_0c952b3f","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll fix that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a2340f55b9391540f05612e3052341c81ffbe491","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":93,"context_line":"    CANCEL_REBOOT_SOFT \u003d \u0027cancel rebooting soft\u0027"},{"line_number":94,"context_line":"    CANCEL_POWER_OFF_SOFT \u003d \u0027cancel power off soft\u0027"},{"line_number":95,"context_line":"    CANCEL_INJECT_NMI \u003d \u0027cancel inject nmi\u0027"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    In order to support CANCEL_* task, CSP channel [4] is added"},{"line_number":98,"context_line":"    since it is easier and simpler than other communication mechanisms"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_41822754","line":95,"updated":"2015-11-08 23:36:18.000000000","message":"+1, I agree with this.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":93,"context_line":"    CANCEL_REBOOT_SOFT \u003d \u0027cancel rebooting soft\u0027"},{"line_number":94,"context_line":"    CANCEL_POWER_OFF_SOFT \u003d \u0027cancel power off soft\u0027"},{"line_number":95,"context_line":"    CANCEL_INJECT_NMI \u003d \u0027cancel inject nmi\u0027"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    In order to support CANCEL_* task, CSP channel [4] is added"},{"line_number":98,"context_line":"    since it is easier and simpler than other communication mechanisms"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_2c926758","line":95,"updated":"2015-10-26 05:11:05.000000000","message":"As of now, we don\u0027t have a support for canceling power actions. What is the expected result? I would suggest this to be done in a separate spec/effort.\n\nI don\u0027t even understand what you mean by \"cancel power off\". Stop OS power off in the middle? That would barely be useful...","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":93,"context_line":"    CANCEL_REBOOT_SOFT \u003d \u0027cancel rebooting soft\u0027"},{"line_number":94,"context_line":"    CANCEL_POWER_OFF_SOFT \u003d \u0027cancel power off soft\u0027"},{"line_number":95,"context_line":"    CANCEL_INJECT_NMI \u003d \u0027cancel inject nmi\u0027"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    In order to support CANCEL_* task, CSP channel [4] is added"},{"line_number":98,"context_line":"    since it is easier and simpler than other communication mechanisms"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_ae3ee0d7","line":95,"in_reply_to":"3a29b11f_2c926758","updated":"2015-11-11 09:35:29.000000000","message":"In terms of \"cancel\", \"abort\" is more accurate as I presented in the summit.\n\nhttp://www.slideshare.net/naohirot/ironic-towards-truly-open-and-reliable-eventually-for-mission-critical/45\n\nI\u0027ll try to separate the abort spec from this spec.\nActually I had submitted another bp:\n\nhttps://blueprints.launchpad.net/ironic/+spec/task-control-functions-for-long-running-tasks","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a2340f55b9391540f05612e3052341c81ffbe491","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    In order to support CANCEL_* task, CSP channel [4] is added"},{"line_number":98,"context_line":"    since it is easier and simpler than other communication mechanisms"},{"line_number":99,"context_line":"    such as semaphore, mutex, pipe, event, signal and etc."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"2. add \"get_supported_power_states\" method and default implementation"},{"line_number":102,"context_line":"   in PowerInterface::"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_61872b62","line":99,"updated":"2015-11-08 23:36:18.000000000","message":"+1, having the same problem right now :)","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    In order to support CANCEL_* task, CSP channel [4] is added"},{"line_number":98,"context_line":"    since it is easier and simpler than other communication mechanisms"},{"line_number":99,"context_line":"    such as semaphore, mutex, pipe, event, signal and etc."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"2. add \"get_supported_power_states\" method and default implementation"},{"line_number":102,"context_line":"   in PowerInterface::"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_cc9e5363","line":99,"updated":"2015-10-26 05:11:05.000000000","message":"in the future, could you please expand things like CSP or NMI? I\u0027m reviewing your spec on a plane, and it\u0027s a bit hard to understand it :)","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    In order to support CANCEL_* task, CSP channel [4] is added"},{"line_number":98,"context_line":"    since it is easier and simpler than other communication mechanisms"},{"line_number":99,"context_line":"    such as semaphore, mutex, pipe, event, signal and etc."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"2. add \"get_supported_power_states\" method and default implementation"},{"line_number":102,"context_line":"   in PowerInterface::"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_2e02f00b","line":99,"in_reply_to":"da85f559_61872b62","updated":"2015-11-11 09:35:29.000000000","message":"Okay, I\u0027ll do that :-)","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        :returns: A list with the supported power states defined"},{"line_number":109,"context_line":"                  in :mod:`ironic.common.states`."},{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"3. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":114,"context_line":"   new states can be accepted as \"power_state\" parameter::"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_ec9b0f71","line":111,"updated":"2015-10-26 05:11:05.000000000","message":"this is a good thing to have. note that not all drivers even support POWER_OFF, some only can POWER_ON\nnit: , is not required in the end of a list","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        :returns: A list with the supported power states defined"},{"line_number":109,"context_line":"                  in :mod:`ironic.common.states`."},{"line_number":110,"context_line":"        \"\"\""},{"line_number":111,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,]"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"3. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":114,"context_line":"   new states can be accepted as \"power_state\" parameter::"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_5144b948","line":111,"in_reply_to":"3a29b11f_ec9b0f71","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll fix that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":123,"context_line":"        :param power_state: One of power state in :mod:`ironic.common.states`."},{"line_number":124,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":125,"context_line":"        \"\"\""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    This IPMIPower reference implementation supports REBOOT_SOFT,"},{"line_number":128,"context_line":"    POWER_OFF_SOFT, CANCEL_REBOOT_SOFT, and CANCEL_POWER_OFF_SOFT."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_8c87fb11","line":125,"updated":"2015-10-26 05:11:05.000000000","message":"no need to copy signature of set_power_state, if you don\u0027t change it","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":123,"context_line":"        :param power_state: One of power state in :mod:`ironic.common.states`."},{"line_number":124,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":125,"context_line":"        \"\"\""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    This IPMIPower reference implementation supports REBOOT_SOFT,"},{"line_number":128,"context_line":"    POWER_OFF_SOFT, CANCEL_REBOOT_SOFT, and CANCEL_POWER_OFF_SOFT."}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_d17669a3","line":125,"in_reply_to":"3a29b11f_8c87fb11","updated":"2015-11-11 09:35:29.000000000","message":"Okay, I\u0027ll remove that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    reboot completion as the power state change from ON -\u003e OFF -\u003e ON."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    However this reference implementation supports INJECT_NMI, but not"},{"line_number":135,"context_line":"    CANCEL_INJECT_NMI."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    The reason is that INJECT_NMI cannot be implemented as POWER CYCLE"},{"line_number":138,"context_line":"    to preserve memory foot print, so power state keeps staying in ON"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_ac8c3736","line":135,"updated":"2015-10-26 05:11:05.000000000","message":"... on of the reasons I suggest we seperate it","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    reboot completion as the power state change from ON -\u003e OFF -\u003e ON."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    However this reference implementation supports INJECT_NMI, but not"},{"line_number":135,"context_line":"    CANCEL_INJECT_NMI."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    The reason is that INJECT_NMI cannot be implemented as POWER CYCLE"},{"line_number":138,"context_line":"    to preserve memory foot print, so power state keeps staying in ON"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_51b2794d","line":135,"in_reply_to":"3a29b11f_ac8c3736","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll try to separate it.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":197,"context_line":"Data model impact"},{"line_number":198,"context_line":"-----------------"},{"line_number":199,"context_line":"* The length of node power state columns needs to be extended from the"},{"line_number":200,"context_line":"  current \u0027String(15)\u0027 to \u0027String(255)\u0027 as followings::"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"   power_state \u003d Column(String(255), nullable\u003dTrue)"},{"line_number":203,"context_line":"   target_power_state \u003d Column(String(255), nullable\u003dTrue)"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_4c81e3fa","line":200,"updated":"2015-10-26 05:11:05.000000000","message":"this is not needed if we don\u0027t introduce cancelling right here, so we can leave it out for now","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":197,"context_line":"Data model impact"},{"line_number":198,"context_line":"-----------------"},{"line_number":199,"context_line":"* The length of node power state columns needs to be extended from the"},{"line_number":200,"context_line":"  current \u0027String(15)\u0027 to \u0027String(255)\u0027 as followings::"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"   power_state \u003d Column(String(255), nullable\u003dTrue)"},{"line_number":203,"context_line":"   target_power_state \u003d Column(String(255), nullable\u003dTrue)"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_d1d2e95b","line":200,"in_reply_to":"3a29b11f_4c81e3fa","updated":"2015-11-11 09:35:29.000000000","message":"Okay, I\u0027ll move it to the other spec if necessary.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":229,"context_line":"     Raises:"},{"line_number":230,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":231,"context_line":"       valid/supported or if the node is in a state which should not"},{"line_number":232,"context_line":"       be interrupted, such as CLEANING, DELETING, ZAPPING."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"* Add a new \"supported_power_states\" member to type Node and"},{"line_number":235,"context_line":"  NodeStates, and enhance the following API so that returned table"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_6c861f15","line":232,"updated":"2015-10-26 05:11:05.000000000","message":"again, this section just states what\u0027s already in place. Please only specify what you intend to change.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":229,"context_line":"     Raises:"},{"line_number":230,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":231,"context_line":"       valid/supported or if the node is in a state which should not"},{"line_number":232,"context_line":"       be interrupted, such as CLEANING, DELETING, ZAPPING."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"* Add a new \"supported_power_states\" member to type Node and"},{"line_number":235,"context_line":"  NodeStates, and enhance the following API so that returned table"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_f1d7ed48","line":232,"in_reply_to":"3a29b11f_6c861f15","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll fix that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"4851a4c0966075cf0c4a0d70a75e94cc36b2ad5b","unresolved":false,"context_lines":[{"line_number":231,"context_line":"       valid/supported or if the node is in a state which should not"},{"line_number":232,"context_line":"       be interrupted, such as CLEANING, DELETING, ZAPPING."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"* Add a new \"supported_power_states\" member to type Node and"},{"line_number":235,"context_line":"  NodeStates, and enhance the following API so that returned table"},{"line_number":236,"context_line":"  contains \"supported_power_states\" member."},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"9a1a9d01_68ccc189","line":234,"updated":"2015-09-25 14:59:53.000000000","message":"Maybe add \u0027supported_power_states\u0027 to a driver instead as it seems to be driver specifics?","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"cd183e02bef60ef1460225b77c08d6e0cc6707c2","unresolved":false,"context_lines":[{"line_number":231,"context_line":"       valid/supported or if the node is in a state which should not"},{"line_number":232,"context_line":"       be interrupted, such as CLEANING, DELETING, ZAPPING."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"* Add a new \"supported_power_states\" member to type Node and"},{"line_number":235,"context_line":"  NodeStates, and enhance the following API so that returned table"},{"line_number":236,"context_line":"  contains \"supported_power_states\" member."},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"9a1a9d01_fb4ceb71","line":234,"in_reply_to":"9a1a9d01_68ccc189","updated":"2015-09-28 09:25:09.000000000","message":"Vladyslav,\n\nThank you for the comment.\n\nThe reason why I defined like this is that soft reboot and inject NMI depend on not only driver but also OS instance.\nSo there is a case that soft reboot and inject NMI don\u0027t work even if driver supports them.\nTherefor I added task parameter to the API at Line 104:\n\ndef get_supported_power_states(self, task):\n\nDoes it make sense?\n\nBest regards,\nNaohiro","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"ae45830352db696726cbc643529eede1e82fe57a","unresolved":false,"context_lines":[{"line_number":231,"context_line":"       valid/supported or if the node is in a state which should not"},{"line_number":232,"context_line":"       be interrupted, such as CLEANING, DELETING, ZAPPING."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"* Add a new \"supported_power_states\" member to type Node and"},{"line_number":235,"context_line":"  NodeStates, and enhance the following API so that returned table"},{"line_number":236,"context_line":"  contains \"supported_power_states\" member."},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"9a1a9d01_bb90b344","line":234,"in_reply_to":"9a1a9d01_fb4ceb71","updated":"2015-09-28 09:33:09.000000000","message":"Vladyslav,\n\nLet me complement my previous reply.\n\nThe API implementation in the subclass should refer to the properties/capabilities of a node.\n\ndef get_supported_power_states(self, task):\n\nL366 properties/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027\n\nL.372 properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027\n\nBest regards,\nNaohiro","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":245,"context_line":"       * fields (list) – Optional, a list with a specified set of"},{"line_number":246,"context_line":"         fields of the resource to be returned."},{"line_number":247,"context_line":"     Return type:"},{"line_number":248,"context_line":"       Node"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"  GET /v1/nodes/(node_ident)/states::"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_0c7c4b1f","line":248,"updated":"2015-10-26 05:11:05.000000000","message":"ditto about not listing what is NOT changed","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":245,"context_line":"       * fields (list) – Optional, a list with a specified set of"},{"line_number":246,"context_line":"         fields of the resource to be returned."},{"line_number":247,"context_line":"     Return type:"},{"line_number":248,"context_line":"       Node"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"  GET /v1/nodes/(node_ident)/states::"},{"line_number":251,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_91c8e1a9","line":248,"in_reply_to":"3a29b11f_0c7c4b1f","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll fix that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":275,"context_line":"             \"cancel reboot soft\","},{"line_number":276,"context_line":"             \"cancel power off soft\","},{"line_number":277,"context_line":"             \"cancel inject nmi\""},{"line_number":278,"context_line":"          ]"},{"line_number":279,"context_line":"        }"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_2c790730","line":278,"updated":"2015-10-26 05:11:05.000000000","message":"I see one problem with both this and previous change: if you want to inspect which OS is installed on the target machine OR if you want to call BMC in these \"get\" calls, they should be async. Could you please clarify what exactly you plan on?","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":275,"context_line":"             \"cancel reboot soft\","},{"line_number":276,"context_line":"             \"cancel power off soft\","},{"line_number":277,"context_line":"             \"cancel inject nmi\""},{"line_number":278,"context_line":"          ]"},{"line_number":279,"context_line":"        }"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_870dffe9","line":278,"in_reply_to":"3a29b11f_2c790730","updated":"2015-11-11 09:35:29.000000000","message":"I don\u0027t have any intention to inspect OS.\nBut I\u0027m afraid that I couldn\u0027t understand why they should be async in case of BMC.\nCould you explain it more?","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":283,"context_line":"-------------------"},{"line_number":284,"context_line":"* Enhance \"ironic node-set-power-state\" so that \u003cpower-state\u003e"},{"line_number":285,"context_line":"  parameter can accept \u0027reboot_soft\u0027, \u0027soft_off\u0027, \u0027inject_nmi\u0027 [5],"},{"line_number":286,"context_line":"  \u0027cancel_reboot_soft\u0027, \u0027cancel_soft_off\u0027, and \u0027cancel_inject_nmi\u0027."},{"line_number":287,"context_line":"  This CLI is async. In order to get the latest status,"},{"line_number":288,"context_line":"  call \"ironic node-show-states\" and check the returned value.::"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_cc75f332","line":286,"updated":"2015-10-26 05:11:05.000000000","message":"ditto, soft_reboot sounds more natural","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":283,"context_line":"-------------------"},{"line_number":284,"context_line":"* Enhance \"ironic node-set-power-state\" so that \u003cpower-state\u003e"},{"line_number":285,"context_line":"  parameter can accept \u0027reboot_soft\u0027, \u0027soft_off\u0027, \u0027inject_nmi\u0027 [5],"},{"line_number":286,"context_line":"  \u0027cancel_reboot_soft\u0027, \u0027cancel_soft_off\u0027, and \u0027cancel_inject_nmi\u0027."},{"line_number":287,"context_line":"  This CLI is async. In order to get the latest status,"},{"line_number":288,"context_line":"  call \"ironic node-show-states\" and check the returned value.::"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_b144051b","line":286,"in_reply_to":"3a29b11f_cc75f332","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll fix that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"* Enhance \"ironic node-show\" and \"ironic node-show-states\" so as to"},{"line_number":310,"context_line":"  return \"supported_power_states\" member in the table format.::"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"   example of \"ironic node-show-states\""},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_ec722f49","line":310,"updated":"2015-10-26 05:11:05.000000000","message":"as of now, nothing has to be changed in the client, as soon as API returns new fields","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"* Enhance \"ironic node-show\" and \"ironic node-show-states\" so as to"},{"line_number":310,"context_line":"  return \"supported_power_states\" member in the table format.::"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"   example of \"ironic node-show-states\""},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_7120dd48","line":310,"in_reply_to":"3a29b11f_ec722f49","updated":"2015-11-11 09:35:29.000000000","message":"Yes, client code will not be changed, I\u0027ll fix that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":352,"context_line":"between virtual machine instance and bare-metal instance."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"This problem is reported as a bug [6]. How to fix this problem will be"},{"line_number":355,"context_line":"specified in the bug report [6]."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Security impact"},{"line_number":358,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_8c8e1b26","line":355,"updated":"2015-10-26 05:11:05.000000000","message":"I suggest you specify here, as it pretty serious. Fixing it properly (switching to soft off by default) is kind of a breaking change","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a2340f55b9391540f05612e3052341c81ffbe491","unresolved":false,"context_lines":[{"line_number":352,"context_line":"between virtual machine instance and bare-metal instance."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"This problem is reported as a bug [6]. How to fix this problem will be"},{"line_number":355,"context_line":"specified in the bug report [6]."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Security impact"},{"line_number":358,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_017c1f71","line":355,"updated":"2015-11-08 23:36:18.000000000","message":"Yeah, that\u0027s an interesting question - how do we deprecate the behavior of \"soft actually means hard\"? Do we do that at all or do we treat it as a bug fix? I tend to think we should signal it somehow, but I\u0027m not sure the best way to do that...","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":352,"context_line":"between virtual machine instance and bare-metal instance."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"This problem is reported as a bug [6]. How to fix this problem will be"},{"line_number":355,"context_line":"specified in the bug report [6]."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Security impact"},{"line_number":358,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_b1b725f4","line":355,"in_reply_to":"da85f559_017c1f71","updated":"2015-11-11 09:35:29.000000000","message":"I need your help and advice how to handle this problem.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":367,"context_line":"   it is capable of soft reboot and soft power off."},{"line_number":368,"context_line":"   If the key \"power_soft\" doesn\u0027t exist, or a value of the key"},{"line_number":369,"context_line":"   \"power_soft\" is set to other than \"true\", it is not capable of soft"},{"line_number":370,"context_line":"   reboot and soft power off."},{"line_number":371,"context_line":""},{"line_number":372,"context_line":" * set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 to a node if"},{"line_number":373,"context_line":"   it is capable of inject NMI."}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_ac93d74e","line":370,"updated":"2015-10-26 05:11:05.000000000","message":"what will happen if it\u0027s not? you didn\u0027t mention capabilities in the spec previously","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":367,"context_line":"   it is capable of soft reboot and soft power off."},{"line_number":368,"context_line":"   If the key \"power_soft\" doesn\u0027t exist, or a value of the key"},{"line_number":369,"context_line":"   \"power_soft\" is set to other than \"true\", it is not capable of soft"},{"line_number":370,"context_line":"   reboot and soft power off."},{"line_number":371,"context_line":""},{"line_number":372,"context_line":" * set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 to a node if"},{"line_number":373,"context_line":"   it is capable of inject NMI."}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_b138853e","line":370,"in_reply_to":"3a29b11f_ac93d74e","updated":"2015-11-11 09:35:29.000000000","message":"If the key \"power_soft\" doesn\u0027t exist, or a value of the key \"power_soft\" is set to other than \"true\", it means {\"power_soft\": \"false\"}.\n\n\nI\u0027ll mention this capabilities in \"Proposed change\".","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a2340f55b9391540f05612e3052341c81ffbe491","unresolved":false,"context_lines":[{"line_number":372,"context_line":" * set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 to a node if"},{"line_number":373,"context_line":"   it is capable of inject NMI."},{"line_number":374,"context_line":"   If the key \"inject_nmi\" doesn\u0027t exist, or a value of the key"},{"line_number":375,"context_line":"   \"inject_nmi\" is set to other than \"ture\", it is not capable of"},{"line_number":376,"context_line":"   inject NMI."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":" * deploy or set up ACPI [7] controllable instance to the node. How to"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_2181234b","line":375,"updated":"2015-11-08 23:36:18.000000000","message":"nit: s/ture/true/","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":372,"context_line":" * set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 to a node if"},{"line_number":373,"context_line":"   it is capable of inject NMI."},{"line_number":374,"context_line":"   If the key \"inject_nmi\" doesn\u0027t exist, or a value of the key"},{"line_number":375,"context_line":"   \"inject_nmi\" is set to other than \"ture\", it is not capable of"},{"line_number":376,"context_line":"   inject NMI."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":" * deploy or set up ACPI [7] controllable instance to the node. How to"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_d11429a1","line":375,"in_reply_to":"da85f559_2181234b","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll fix that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":373,"context_line":"   it is capable of inject NMI."},{"line_number":374,"context_line":"   If the key \"inject_nmi\" doesn\u0027t exist, or a value of the key"},{"line_number":375,"context_line":"   \"inject_nmi\" is set to other than \"ture\", it is not capable of"},{"line_number":376,"context_line":"   inject NMI."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":" * deploy or set up ACPI [7] controllable instance to the node. How to"},{"line_number":379,"context_line":"   make the instance ACPI [7] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_4c98036b","line":376,"updated":"2015-10-26 05:11:05.000000000","message":"ditto","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":373,"context_line":"   it is capable of inject NMI."},{"line_number":374,"context_line":"   If the key \"inject_nmi\" doesn\u0027t exist, or a value of the key"},{"line_number":375,"context_line":"   \"inject_nmi\" is set to other than \"ture\", it is not capable of"},{"line_number":376,"context_line":"   inject NMI."},{"line_number":377,"context_line":""},{"line_number":378,"context_line":" * deploy or set up ACPI [7] controllable instance to the node. How to"},{"line_number":379,"context_line":"   make the instance ACPI [7] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_111f11b8","line":376,"in_reply_to":"3a29b11f_4c98036b","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll fix that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":380,"context_line":"   \"Dependencies\" section."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"* End user who doesn\u0027t have admin privilege such as tenant user"},{"line_number":383,"context_line":"  requires the following to use this features:"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":" * In case of Ironic with Nova, use Nova CLI or Nova API which"},{"line_number":386,"context_line":"   implemented Nova\u0027s blue print [3], or ask end user who has admin"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_6c9dbf58","line":383,"updated":"2015-10-26 05:11:05.000000000","message":"nit: this paragraph seems redundant to me","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":380,"context_line":"   \"Dependencies\" section."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"* End user who doesn\u0027t have admin privilege such as tenant user"},{"line_number":383,"context_line":"  requires the following to use this features:"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":" * In case of Ironic with Nova, use Nova CLI or Nova API which"},{"line_number":386,"context_line":"   implemented Nova\u0027s blue print [3], or ask end user who has admin"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_f1804dc2","line":383,"in_reply_to":"3a29b11f_6c9dbf58","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll fix that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a2340f55b9391540f05612e3052341c81ffbe491","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"   CONF.conductor.power_off_soft_retry_timeout \u003d 600"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"   CONF.conductor.power_inject_nmi_retry_timeout \u003d 600"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"Developer impact"},{"line_number":416,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_c1961794","line":413,"updated":"2015-11-08 23:36:18.000000000","message":"Also, it seems that this could vary wildly between instances. Not sure how problematic that is here, but worth pointing out.\n\nAdditionally, I\u0027d like to see more clarification in this spec about:\n\n* How do we tell when the reboot/nmi is complete? Is this something generic or driver specific? (This may have a scalability/performance impact, depending on the implementation).\n\n* What happens in the timeout case? Is a node hard powered off? Does it remain powered on? etc.\n\n* We need to point out here, and in documentation, that we can\u0027t trust the value of capabilities:power_soft. The user could kill the daemon listening to ACPI at any time (or it could fail in various ways, or someone could halt the machine without powering it off, the machine could be sitting at a grub prompt, etc etc.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4c147037ff91ebbc019abacb5206615beba61b1b","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"   CONF.conductor.power_off_soft_retry_timeout \u003d 600"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"   CONF.conductor.power_inject_nmi_retry_timeout \u003d 600"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"Developer impact"},{"line_number":416,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"3a29b11f_0ca3eb9f","line":413,"updated":"2015-10-26 05:11:05.000000000","message":"these are new options, right? could you please formally specify them?","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"   CONF.conductor.power_off_soft_retry_timeout \u003d 600"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"   CONF.conductor.power_inject_nmi_retry_timeout \u003d 600"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"Developer impact"},{"line_number":416,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_9158e18b","line":413,"in_reply_to":"3a29b11f_0ca3eb9f","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll mention this in \"Proposed change\".","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"   CONF.conductor.power_off_soft_retry_timeout \u003d 600"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"   CONF.conductor.power_inject_nmi_retry_timeout \u003d 600"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"Developer impact"},{"line_number":416,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_51059943","line":413,"in_reply_to":"da85f559_c1961794","updated":"2015-11-11 09:35:29.000000000","message":"\u003e    How do we tell when the reboot/nmi is complete? Is this something generic or driver specific? (This may have a scalability/performance impact, depending on the implementation).\n\nThis is generic.\nUser checks the state by \"ironic node-show\" or\"ironic node-show-states\".\n\n \u003e   What happens in the timeout case? Is a node hard powered off? Does it remain powered on? etc.\n\nNode status becomes Error State, and conductor doesn\u0027t do any power control in case of IPMI driver, because both soft power off and inject nmi cannot be canceled,\n\n \u003e  We need to point out here, and in documentation, that we can\u0027t trust the value of capabilities:power_soft. The user could kill the daemon listening to ACPI at any time (or it could fail in various ways, or someone could halt the machine without powering it off, the machine could be sitting at a grub prompt, etc etc.\n\nI got your point,  soft power off must be time out or error in that case.\nAny idea or suggestion is appreciated.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a2340f55b9391540f05612e3052341c81ffbe491","unresolved":false,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"Dependencies"},{"line_number":457,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":458,"context_line":"* Ironic conductor depends on ipmitool [2]."},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"* Ironic managed node depends on ACPI [7]. In case of Linux system,"},{"line_number":461,"context_line":"  acpid [8] has to be installed. In case of Windows system, local"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_e1931ba2","line":458,"updated":"2015-11-08 23:36:18.000000000","message":"In every case, or for the ipmitool driver? If the former, that seems problematic; if the latter, that\u0027s an existing dependency.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":"Dependencies"},{"line_number":457,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":458,"context_line":"* Ironic conductor depends on ipmitool [2]."},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"* Ironic managed node depends on ACPI [7]. In case of Linux system,"},{"line_number":461,"context_line":"  acpid [8] has to be installed. In case of Windows system, local"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_8c80c4f8","line":458,"in_reply_to":"da85f559_e1931ba2","updated":"2015-11-11 09:35:29.000000000","message":"This dependency is only for ipmitool driver.\nIf  the existing dependency isn\u0027t needed to mention here, I\u0027ll remove it.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a2340f55b9391540f05612e3052341c81ffbe491","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":472,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":473,"context_line":"None (Forwards Compatibility is out of scope)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"Documentation Impact"},{"line_number":476,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_81900f97","line":473,"updated":"2015-11-08 23:36:18.000000000","message":"There\u0027s a backwards compatibility issue with the behavior of \"nova reboot --soft\", but perhaps that can be discussed in the Nova spec/blueprint for the Ironic driver changes.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":472,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":473,"context_line":"None (Forwards Compatibility is out of scope)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"Documentation Impact"},{"line_number":476,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_8c976439","line":473,"in_reply_to":"da85f559_81900f97","updated":"2015-11-11 09:35:29.000000000","message":"Okay, I\u0027ll mention that nova spec covers that issue.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"a2340f55b9391540f05612e3052341c81ffbe491","unresolved":false,"context_lines":[{"line_number":475,"context_line":"Documentation Impact"},{"line_number":476,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":477,"context_line":"* None (CLI and REST API reference manuals are generated automatically"},{"line_number":478,"context_line":"  from source code)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"References"},{"line_number":481,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_a18d137d","line":478,"updated":"2015-11-08 23:36:18.000000000","message":"We\u0027ll need deployer docs for this.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e26042e7dc9bbb7ed01e47a62793279e489726ab","unresolved":false,"context_lines":[{"line_number":475,"context_line":"Documentation Impact"},{"line_number":476,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":477,"context_line":"* None (CLI and REST API reference manuals are generated automatically"},{"line_number":478,"context_line":"  from source code)"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"References"},{"line_number":481,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":12,"id":"da85f559_8cae847f","line":478,"in_reply_to":"da85f559_a18d137d","updated":"2015-11-11 09:35:29.000000000","message":"I\u0027ll add that.","commit_id":"8088ebc5e1074e7acea518bd0bf206ddda57bf32"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b4c0b1194c87f02b2a56f57260b77bfe7df7aba4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        \"\"\"Get a list of the supported power states."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":100,"context_line":"        :returns: A list with the supported power states defined"},{"line_number":101,"context_line":"                  in :mod:`ironic.common.states`."},{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT]"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_c0eeb5b3","line":100,"updated":"2015-11-18 07:43:17.000000000","message":"nit: with --\u003e of","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3dc9a0ad691311c0fac1601df8e0d4db0e7daab8","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        \"\"\"Get a list of the supported power states."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":100,"context_line":"        :returns: A list with the supported power states defined"},{"line_number":101,"context_line":"                  in :mod:`ironic.common.states`."},{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT]"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_ad96d63b","line":100,"in_reply_to":"ba8a016a_c0eeb5b3","updated":"2015-11-19 02:01:26.000000000","message":"I\u0027ll fix that.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b4c0b1194c87f02b2a56f57260b77bfe7df7aba4","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":173,"context_line":"           currently not used."},{"line_number":174,"context_line":"        :returns: A list with the supported power states defined"},{"line_number":175,"context_line":"                  in :mod:`ironic.common.states`."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_e02659cd","line":174,"updated":"2015-11-18 07:43:17.000000000","message":"nit: with --\u003e of","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3dc9a0ad691311c0fac1601df8e0d4db0e7daab8","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        :param task: A TaskManager instance containing the node to act on."},{"line_number":173,"context_line":"           currently not used."},{"line_number":174,"context_line":"        :returns: A list with the supported power states defined"},{"line_number":175,"context_line":"                  in :mod:`ironic.common.states`."},{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_edb7fed5","line":174,"in_reply_to":"ba8a016a_e02659cd","updated":"2015-11-19 02:01:26.000000000","message":"I\u0027ll fix that.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b4c0b1194c87f02b2a56f57260b77bfe7df7aba4","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,"},{"line_number":179,"context_line":"                states.SOFT_REBOOT, states.SOFT_POWER_OFF_SOFT,"},{"line_number":180,"context_line":"                states.INJECT_NMI]"},{"line_number":181,"context_line":"        if node\u0027s properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027 and"},{"line_number":182,"context_line":"        properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027."}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_a0a051a0","line":179,"updated":"2015-11-18 07:43:17.000000000","message":"Just a nit: SOFT_POWER_OFF_SOFT --\u003e SOFT_POWER_OFF ?","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3dc9a0ad691311c0fac1601df8e0d4db0e7daab8","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        \"\"\""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,"},{"line_number":179,"context_line":"                states.SOFT_REBOOT, states.SOFT_POWER_OFF_SOFT,"},{"line_number":180,"context_line":"                states.INJECT_NMI]"},{"line_number":181,"context_line":"        if node\u0027s properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027 and"},{"line_number":182,"context_line":"        properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027."}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_adad7685","line":179,"in_reply_to":"ba8a016a_a0a051a0","updated":"2015-11-19 02:01:26.000000000","message":"I\u0027ll fix that.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b4c0b1194c87f02b2a56f57260b77bfe7df7aba4","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,"},{"line_number":179,"context_line":"                states.SOFT_REBOOT, states.SOFT_POWER_OFF_SOFT,"},{"line_number":180,"context_line":"                states.INJECT_NMI]"},{"line_number":181,"context_line":"        if node\u0027s properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027 and"},{"line_number":182,"context_line":"        properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027."},{"line_number":183,"context_line":"        otherwise exclude states.SOFT_REBOOT, states.SOFT_POWER_OFF_SOFT,"},{"line_number":184,"context_line":"        and/or states.INJECT_NMI from the returned value."}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_a0ae1183","line":181,"updated":"2015-11-18 07:43:17.000000000","message":"and  --\u003e  and/or","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3dc9a0ad691311c0fac1601df8e0d4db0e7daab8","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,"},{"line_number":179,"context_line":"                states.SOFT_REBOOT, states.SOFT_POWER_OFF_SOFT,"},{"line_number":180,"context_line":"                states.INJECT_NMI]"},{"line_number":181,"context_line":"        if node\u0027s properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027 and"},{"line_number":182,"context_line":"        properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027."},{"line_number":183,"context_line":"        otherwise exclude states.SOFT_REBOOT, states.SOFT_POWER_OFF_SOFT,"},{"line_number":184,"context_line":"        and/or states.INJECT_NMI from the returned value."}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_2dc2e634","line":181,"in_reply_to":"ba8a016a_a0ae1183","updated":"2015-11-19 02:01:26.000000000","message":"I\u0027ll fix that.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b4c0b1194c87f02b2a56f57260b77bfe7df7aba4","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                states.INJECT_NMI]"},{"line_number":181,"context_line":"        if node\u0027s properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027 and"},{"line_number":182,"context_line":"        properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027."},{"line_number":183,"context_line":"        otherwise exclude states.SOFT_REBOOT, states.SOFT_POWER_OFF_SOFT,"},{"line_number":184,"context_line":"        and/or states.INJECT_NMI from the returned value."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_e07df91c","line":183,"updated":"2015-11-18 07:43:17.000000000","message":"The same.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3dc9a0ad691311c0fac1601df8e0d4db0e7daab8","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                states.INJECT_NMI]"},{"line_number":181,"context_line":"        if node\u0027s properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027 and"},{"line_number":182,"context_line":"        properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027."},{"line_number":183,"context_line":"        otherwise exclude states.SOFT_REBOOT, states.SOFT_POWER_OFF_SOFT,"},{"line_number":184,"context_line":"        and/or states.INJECT_NMI from the returned value."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_edde1e10","line":183,"in_reply_to":"ba8a016a_e07df91c","updated":"2015-11-19 02:01:26.000000000","message":"I\u0027ll fix that.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b4c0b1194c87f02b2a56f57260b77bfe7df7aba4","unresolved":false,"context_lines":[{"line_number":204,"context_line":"* Add support of SOFT_REBOOT, SOFT_POWER_OFF and INJECT_NMI to the"},{"line_number":205,"context_line":"  target parameter of following API::"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"   PUT /v1/nodes/(node_ident)/states/power"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"* Add a new \"supported_power_states\" member to the return type Node"},{"line_number":210,"context_line":"  and NodeStates, and enhance the following APIs::"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_53bb7de5","line":207,"updated":"2015-11-18 07:43:17.000000000","message":"I\u0027m working on the nova ironic driver for the same functionality. Would you please write down what strings will be used to represent the new power states in the url ?  Seeing from ironicclient, there are only \"on\", \"off\", \"reboot\" for now. If you don\u0027t write them here, I will have to dig into your source code to find out. \n\nThanks.  :)","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3dc9a0ad691311c0fac1601df8e0d4db0e7daab8","unresolved":false,"context_lines":[{"line_number":204,"context_line":"* Add support of SOFT_REBOOT, SOFT_POWER_OFF and INJECT_NMI to the"},{"line_number":205,"context_line":"  target parameter of following API::"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"   PUT /v1/nodes/(node_ident)/states/power"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"* Add a new \"supported_power_states\" member to the return type Node"},{"line_number":210,"context_line":"  and NodeStates, and enhance the following APIs::"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_cde9dab8","line":207,"in_reply_to":"ba8a016a_53bb7de5","updated":"2015-11-19 02:01:26.000000000","message":"I\u0027ll fix that.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b4c0b1194c87f02b2a56f57260b77bfe7df7aba4","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"This problem is reported as a bug [6]. How to fix this problem will be"},{"line_number":300,"context_line":"specified in the bug report [6] as well as nova blueprint [10] and"},{"line_number":301,"context_line":"spec [11]."},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"Security impact"},{"line_number":304,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_e0dc19e6","line":301,"updated":"2015-11-18 07:43:17.000000000","message":"Just FYI, BP [10] and spec [11] will be removed. Nova guys think they are not necessary. I think I\u0027ll just improve nova ironic driver to enable it to use your functionality, and post the patch as a bugfix or simple code refactor. :)","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3dc9a0ad691311c0fac1601df8e0d4db0e7daab8","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"This problem is reported as a bug [6]. How to fix this problem will be"},{"line_number":300,"context_line":"specified in the bug report [6] as well as nova blueprint [10] and"},{"line_number":301,"context_line":"spec [11]."},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"Security impact"},{"line_number":304,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_8df7528a","line":301,"in_reply_to":"ba8a016a_e0dc19e6","updated":"2015-11-19 02:01:26.000000000","message":"Okay, I\u0027ll add the comment from Nova.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b4c0b1194c87f02b2a56f57260b77bfe7df7aba4","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"Other deployer impact"},{"line_number":337,"context_line":"---------------------"},{"line_number":338,"context_line":"* Deployer, cloud provider, needs to set up ACPI [7] capable bare"},{"line_number":339,"context_line":"  metal servers in cloud environment."},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* change the default timeout value (sec) in the Ironic configuration"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_e003b940","line":338,"updated":"2015-11-18 07:43:17.000000000","message":"needs --\u003e need","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3dc9a0ad691311c0fac1601df8e0d4db0e7daab8","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"Other deployer impact"},{"line_number":337,"context_line":"---------------------"},{"line_number":338,"context_line":"* Deployer, cloud provider, needs to set up ACPI [7] capable bare"},{"line_number":339,"context_line":"  metal servers in cloud environment."},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* change the default timeout value (sec) in the Ironic configuration"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_2df0a690","line":338,"in_reply_to":"ba8a016a_e003b940","updated":"2015-11-19 02:01:26.000000000","message":"I\u0027ll fix that.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b4c0b1194c87f02b2a56f57260b77bfe7df7aba4","unresolved":false,"context_lines":[{"line_number":403,"context_line":"* Note"},{"line_number":404,"context_line":"  There\u0027s a backwards compatibility issue with the behavior of \"nova"},{"line_number":405,"context_line":"  reboot --soft\", but that is discussed in the Nova blueprint [10] and"},{"line_number":406,"context_line":"  spec [11] for the Ironic driver changes."},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"Documentation Impact"},{"line_number":409,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_80350df8","line":406,"updated":"2015-11-18 07:43:17.000000000","message":"Here too, [10] and [11] are not necessary.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"3dc9a0ad691311c0fac1601df8e0d4db0e7daab8","unresolved":false,"context_lines":[{"line_number":403,"context_line":"* Note"},{"line_number":404,"context_line":"  There\u0027s a backwards compatibility issue with the behavior of \"nova"},{"line_number":405,"context_line":"  reboot --soft\", but that is discussed in the Nova blueprint [10] and"},{"line_number":406,"context_line":"  spec [11] for the Ironic driver changes."},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"Documentation Impact"},{"line_number":409,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba8a016a_0d32825f","line":406,"in_reply_to":"ba8a016a_80350df8","updated":"2015-11-19 02:01:26.000000000","message":"I\u0027ll fix that.","commit_id":"983b37eefe9fbd76d70235d33468fe50a3418969"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"85a080ccec70ba70c2f1152acdc070b94e3edfc9","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"1. add the following new states to ironic.common.states::"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    REBOOT_SOFT \u003d \u0027soft reboot\u0027"},{"line_number":90,"context_line":"    POWER_OFF_SOFT \u003d \u0027soft power off\u0027"},{"line_number":91,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_1a1eef6f","line":89,"updated":"2015-11-20 04:23:22.000000000","message":"change it to \"SOFT_REBOOT \u003d \u0027soft rebooting\u0027\" by reflecting Tang\u0027s comment on L.235.","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"85a080ccec70ba70c2f1152acdc070b94e3edfc9","unresolved":false,"context_lines":[{"line_number":87,"context_line":"1. add the following new states to ironic.common.states::"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    REBOOT_SOFT \u003d \u0027soft reboot\u0027"},{"line_number":90,"context_line":"    POWER_OFF_SOFT \u003d \u0027soft power off\u0027"},{"line_number":91,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"2. add \"get_supported_power_states\" method and default implementation"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_351c2469","line":90,"updated":"2015-11-20 04:23:22.000000000","message":"SOFT_POWER_OFF \u003d \u0027soft power off\u0027","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"85a080ccec70ba70c2f1152acdc070b94e3edfc9","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        SOFT_REBOOT is implemented as power cycle such as REBOOT."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    In case that timeout occurred during soft reboot, soft power off"},{"line_number":146,"context_line":"    or inject nmi, the end state becomes Error."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    new_state         | power_state  | target_power_state | power_state"},{"line_number":149,"context_line":"                      | (start state)| (assigned value)   | (end state)"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_358f4476","line":146,"updated":"2015-11-20 04:23:22.000000000","message":"reboot -\u003e REBOOT\nsoft power off -\u003e SOFT_POWER_OFF\ninject nmi -\u003e INJECT_NMI\nError -\u003e ERROR","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"85a080ccec70ba70c2f1152acdc070b94e3edfc9","unresolved":false,"context_lines":[{"line_number":148,"context_line":"    new_state         | power_state  | target_power_state | power_state"},{"line_number":149,"context_line":"                      | (start state)| (assigned value)   | (end state)"},{"line_number":150,"context_line":"    ------------------+--------------+--------------------+--------------"},{"line_number":151,"context_line":"    SOFT_REBOOT       | POWER_ON     | SOFT_POWER_OFF     | Error"},{"line_number":152,"context_line":"    SOFT_POWER_OFF    | POWER_ON     | SOFT_POWER_OFF     | Error"},{"line_number":153,"context_line":"    INJECT_NMI        | POWER_ON     | INJECT_NMI         | Error"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_f5ebfc10","line":151,"updated":"2015-11-20 04:23:22.000000000","message":"Error -\u003e ERROR","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f1911bd5eb1ffe89bcf4cc84a3e66b532a33e94e","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                states.INJECT_NMI]"},{"line_number":181,"context_line":"        if node\u0027s properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027 and/or"},{"line_number":182,"context_line":"        properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027."},{"line_number":183,"context_line":"        otherwise exclude states.SOFT_REBOOT, states.SOFT_POWER_OFF,"},{"line_number":184,"context_line":"        and/or states.INJECT_NMI from the returned value."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_0d1b49cb","line":183,"updated":"2015-11-19 13:04:57.000000000","message":"Let\u0027s we create a node with driver \"foo\". Driver \"foo\" supports all of new states, but there are no power parameters in properties/capabilities. How user obtains info about states supported by driver \"foo\"? This info is needed for trying to update properties/capabilities.","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a9338d978fb8493b4dd9d04e7145c8c4eac3b91c","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                states.INJECT_NMI]"},{"line_number":181,"context_line":"        if node\u0027s properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027 and/or"},{"line_number":182,"context_line":"        properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027."},{"line_number":183,"context_line":"        otherwise exclude states.SOFT_REBOOT, states.SOFT_POWER_OFF,"},{"line_number":184,"context_line":"        and/or states.INJECT_NMI from the returned value."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_a9ad27ea","line":183,"in_reply_to":"ba8a016a_0d1b49cb","updated":"2015-11-20 02:01:25.000000000","message":"Aha, your are right.\nproperties/capabilities check should be done in validate().\nI\u0027ll fix that.","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"85a080ccec70ba70c2f1152acdc070b94e3edfc9","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"   The target parameter supports the following Json data respectively."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"   {\"target\": \"soft reboot\"}"},{"line_number":212,"context_line":"   {\"target\": \"soft power off\"}"},{"line_number":213,"context_line":"   {\"target\": \"inject nmi\"}"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_9a23bfbc","line":211,"updated":"2015-11-20 04:23:22.000000000","message":"change it to \"soft rebooting\" by reflecting Tang\u0027s comment on L.235.","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"622e43a666650adadc9466248e7b0923e99a2e6e","unresolved":false,"context_lines":[{"line_number":231,"context_line":"         \"supported_power_states\": ["},{"line_number":232,"context_line":"             \"power on\","},{"line_number":233,"context_line":"             \"power off\","},{"line_number":234,"context_line":"             \"reboot\","},{"line_number":235,"context_line":"             \"soft reboot\","},{"line_number":236,"context_line":"             \"soft power off\","},{"line_number":237,"context_line":"             \"inject nmi\""}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_3e5d1947","line":234,"updated":"2015-11-19 11:45:51.000000000","message":"Sorry, is it \"rebooting\" here ?\n\nPlease refer to:\n- https://github.com/openstack/ironic/blob/master/ironic/common/states.py#L189\n- https://github.com/openstack/python-ironicclient/blob/master/ironicclient/v1/node.py#L270","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a9338d978fb8493b4dd9d04e7145c8c4eac3b91c","unresolved":false,"context_lines":[{"line_number":231,"context_line":"         \"supported_power_states\": ["},{"line_number":232,"context_line":"             \"power on\","},{"line_number":233,"context_line":"             \"power off\","},{"line_number":234,"context_line":"             \"reboot\","},{"line_number":235,"context_line":"             \"soft reboot\","},{"line_number":236,"context_line":"             \"soft power off\","},{"line_number":237,"context_line":"             \"inject nmi\""}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_29885770","line":234,"in_reply_to":"ba8a016a_3e5d1947","updated":"2015-11-20 02:01:25.000000000","message":"I\u0027ll fix that.","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4d20813b34c7e154c6c816d7a4db4e95c2d26d5c","unresolved":false,"context_lines":[{"line_number":232,"context_line":"             \"power on\","},{"line_number":233,"context_line":"             \"power off\","},{"line_number":234,"context_line":"             \"reboot\","},{"line_number":235,"context_line":"             \"soft reboot\","},{"line_number":236,"context_line":"             \"soft power off\","},{"line_number":237,"context_line":"             \"inject nmi\""},{"line_number":238,"context_line":"          ]"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_0c7c81ea","line":235,"updated":"2015-11-20 02:53:10.000000000","message":"Then, shall we make it \"soft rebooting\" ?","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"85a080ccec70ba70c2f1152acdc070b94e3edfc9","unresolved":false,"context_lines":[{"line_number":232,"context_line":"             \"power on\","},{"line_number":233,"context_line":"             \"power off\","},{"line_number":234,"context_line":"             \"reboot\","},{"line_number":235,"context_line":"             \"soft reboot\","},{"line_number":236,"context_line":"             \"soft power off\","},{"line_number":237,"context_line":"             \"inject nmi\""},{"line_number":238,"context_line":"          ]"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_9a75ffcb","line":235,"in_reply_to":"ba8a016a_0c7c81ea","updated":"2015-11-20 04:23:22.000000000","message":"Okay, let\u0027s align with the existing code.","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"85a080ccec70ba70c2f1152acdc070b94e3edfc9","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   | provision_updated_at   | 2015-08-01T00:00:00+00:00           |"},{"line_number":254,"context_line":"   | power_state            | power on                            |"},{"line_number":255,"context_line":"   | provision_state        | active                              |"},{"line_number":256,"context_line":"   | supported_power_states | [\"power on\", \"power off\", \"reboot\", |"},{"line_number":257,"context_line":"   |                        |   \"reboot soft\", \"soft power off\",  |"},{"line_number":258,"context_line":"   |                        |   \"inject nmi\"]                     |"},{"line_number":259,"context_line":"   +------------------------+-------------------------------------+"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_f5d21c5b","line":256,"updated":"2015-11-20 04:23:22.000000000","message":"reboot -\u003e rebooting","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"85a080ccec70ba70c2f1152acdc070b94e3edfc9","unresolved":false,"context_lines":[{"line_number":254,"context_line":"   | power_state            | power on                            |"},{"line_number":255,"context_line":"   | provision_state        | active                              |"},{"line_number":256,"context_line":"   | supported_power_states | [\"power on\", \"power off\", \"reboot\", |"},{"line_number":257,"context_line":"   |                        |   \"reboot soft\", \"soft power off\",  |"},{"line_number":258,"context_line":"   |                        |   \"inject nmi\"]                     |"},{"line_number":259,"context_line":"   +------------------------+-------------------------------------+"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba8a016a_95c2b083","line":257,"updated":"2015-11-20 04:23:22.000000000","message":"reboot soft -\u003e soft rebooting","commit_id":"1ed58e5b948063555383449cbf3eb19c0ef6712a"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"2a83f639f6102cb7a7d976a3da8174498949c4cf","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    # timeout (in seconds) of inject nmi operation (integer value)"},{"line_number":164,"context_line":"    inject_nmi_timeout \u003d 600"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"4. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a8ffd7b_5d436c42","line":164,"updated":"2015-12-02 17:17:11.000000000","message":"Please describe how Ironic gets information that inject nmi operation finished with success. AFAIK \"ipmitool\" utility has built-in short timeouts, who 10 min default here?","commit_id":"677b8ae19d1787b2371ec6ab13a7eb1d9a3a735c"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"8e0e530d722c0c710a1c392ba4f5187a227131d1","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    # timeout (in seconds) of inject nmi operation (integer value)"},{"line_number":164,"context_line":"    inject_nmi_timeout \u003d 600"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"4. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7a740942_98796196","line":164,"in_reply_to":"9a8ffd7b_5d436c42","updated":"2015-12-04 01:53:10.000000000","message":"Year, I got your point.\nI\u0027ll change the default to the same value as CONF.ipmi.retry_timeout.","commit_id":"677b8ae19d1787b2371ec6ab13a7eb1d9a3a735c"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"076c6e07f5c2eee303f47af7b8e7a1c31a50a2a1","unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":436,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":437,"context_line":"None (Forwards Compatibility is out of scope)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"* Note"},{"line_number":440,"context_line":"  The backwards compatibility issue of the default behavior change of"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a8ffd7b_d871d345","line":437,"updated":"2015-12-02 05:49:06.000000000","message":"Remove this line ?","commit_id":"677b8ae19d1787b2371ec6ab13a7eb1d9a3a735c"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"2813274893acd49f17984f778664fe01ce3d2950","unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":436,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":437,"context_line":"None (Forwards Compatibility is out of scope)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"* Note"},{"line_number":440,"context_line":"  The backwards compatibility issue of the default behavior change of"}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a8ffd7b_4fb3d7e9","line":437,"in_reply_to":"9a8ffd7b_d871d345","updated":"2015-12-02 08:30:20.000000000","message":"Thanks for the comment, Tang.\nI\u0027d prefer to keep this line to prevent from getting the same comment which was raised in the patch set #2.","commit_id":"677b8ae19d1787b2371ec6ab13a7eb1d9a3a735c"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"2813274893acd49f17984f778664fe01ce3d2950","unresolved":false,"context_lines":[{"line_number":438,"context_line":""},{"line_number":439,"context_line":"* Note"},{"line_number":440,"context_line":"  The backwards compatibility issue of the default behavior change of"},{"line_number":441,"context_line":"  \"nova reboot\" command is made by following the standard deprecation"},{"line_number":442,"context_line":"  policy [12]."},{"line_number":443,"context_line":""},{"line_number":444,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"9a8ffd7b_4f7f5766","line":441,"updated":"2015-12-02 08:30:20.000000000","message":"s/made/solved/","commit_id":"677b8ae19d1787b2371ec6ab13a7eb1d9a3a735c"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"ec04c4adbc82de22ff590011bcdd12bd05dcce03","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    capability has boolean string value \"true\" or \"false\"."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    In general, if a driver supports SOFT_REBOOT and SOFT_POWER_OFF,"},{"line_number":199,"context_line":"    \u0027soft_power\u0027 property must exit and it must have either \"true\" or"},{"line_number":200,"context_line":"    \"false\"."},{"line_number":201,"context_line":"    if a driver supports INJECT_NMI, \u0027inject_nmi\u0027 property must exits"},{"line_number":202,"context_line":"    and it must have either \"true\" or \"false\"."}],"source_content_type":"text/x-rst","patch_set":21,"id":"bae84128_dcc63a99","line":199,"range":{"start_line":199,"start_character":31,"end_line":199,"end_character":35},"updated":"2016-02-23 02:21:16.000000000","message":"s/exit/exist/?","commit_id":"4c6ddc3569e25a20eebf503794f54cbb6168cab3"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"84c471850944b587d9b3857c3969f8ebcd1f11a1","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    capability has boolean string value \"true\" or \"false\"."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    In general, if a driver supports SOFT_REBOOT and SOFT_POWER_OFF,"},{"line_number":199,"context_line":"    \u0027soft_power\u0027 property must exit and it must have either \"true\" or"},{"line_number":200,"context_line":"    \"false\"."},{"line_number":201,"context_line":"    if a driver supports INJECT_NMI, \u0027inject_nmi\u0027 property must exits"},{"line_number":202,"context_line":"    and it must have either \"true\" or \"false\"."}],"source_content_type":"text/x-rst","patch_set":21,"id":"bae84128_68dac94d","line":199,"range":{"start_line":199,"start_character":31,"end_line":199,"end_character":35},"in_reply_to":"bae84128_dcc63a99","updated":"2016-02-23 04:20:10.000000000","message":"I\u0027ll fix that.","commit_id":"4c6ddc3569e25a20eebf503794f54cbb6168cab3"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"ec04c4adbc82de22ff590011bcdd12bd05dcce03","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    In general, if a driver supports SOFT_REBOOT and SOFT_POWER_OFF,"},{"line_number":199,"context_line":"    \u0027soft_power\u0027 property must exit and it must have either \"true\" or"},{"line_number":200,"context_line":"    \"false\"."},{"line_number":201,"context_line":"    if a driver supports INJECT_NMI, \u0027inject_nmi\u0027 property must exits"},{"line_number":202,"context_line":"    and it must have either \"true\" or \"false\"."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"bae84128_fcb97e16","line":201,"range":{"start_line":201,"start_character":64,"end_line":201,"end_character":68},"updated":"2016-02-23 02:21:16.000000000","message":"ditto.","commit_id":"4c6ddc3569e25a20eebf503794f54cbb6168cab3"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"84c471850944b587d9b3857c3969f8ebcd1f11a1","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    In general, if a driver supports SOFT_REBOOT and SOFT_POWER_OFF,"},{"line_number":199,"context_line":"    \u0027soft_power\u0027 property must exit and it must have either \"true\" or"},{"line_number":200,"context_line":"    \"false\"."},{"line_number":201,"context_line":"    if a driver supports INJECT_NMI, \u0027inject_nmi\u0027 property must exits"},{"line_number":202,"context_line":"    and it must have either \"true\" or \"false\"."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"bae84128_a8e051fb","line":201,"range":{"start_line":201,"start_character":64,"end_line":201,"end_character":68},"in_reply_to":"bae84128_fcb97e16","updated":"2016-02-23 04:20:10.000000000","message":"I\u0027ll fix that.","commit_id":"4c6ddc3569e25a20eebf503794f54cbb6168cab3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Here is a part of ipmitool man page in which describes soft power off and"},{"line_number":25,"context_line":"diagnostic interrupt (NMI [1])."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"$ man ipimtool::"},{"line_number":28,"context_line":" ..."},{"line_number":29,"context_line":" power"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_64039e10","line":27,"updated":"2016-03-01 11:25:37.000000000","message":"this does not render properly, maybe one more newline is required after ::","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Here is a part of ipmitool man page in which describes soft power off and"},{"line_number":25,"context_line":"diagnostic interrupt (NMI [1])."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"$ man ipimtool::"},{"line_number":28,"context_line":" ..."},{"line_number":29,"context_line":" power"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_014c0f41","line":27,"in_reply_to":"7af24918_64039e10","updated":"2016-03-02 08:39:41.000000000","message":"I\u0027ll fix that.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":84,"context_line":"This spec also proposes to implement the enhanced PowerInterface base"},{"line_number":85,"context_line":"class into the IPMIPower concrete class as a reference implementation."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"1. add the following new states to ironic.common.states::"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    SOFT_REBOOT \u003d \u0027soft rebooting\u0027"},{"line_number":90,"context_line":"    SOFT_POWER_OFF \u003d \u0027soft power off\u0027"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_c7fef404","line":87,"updated":"2016-03-01 11:25:37.000000000","message":"nit: \"new power states\"","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"This spec also proposes to implement the enhanced PowerInterface base"},{"line_number":85,"context_line":"class into the IPMIPower concrete class as a reference implementation."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"1. add the following new states to ironic.common.states::"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    SOFT_REBOOT \u003d \u0027soft rebooting\u0027"},{"line_number":90,"context_line":"    SOFT_POWER_OFF \u003d \u0027soft power off\u0027"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_616353b2","line":87,"in_reply_to":"7af24918_c7fef404","updated":"2016-03-02 08:39:41.000000000","message":"I\u0027ll fix that.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        Note: WakeOnLanPower driver supports only states.POWER_ON."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"3. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":108,"context_line":"   new states can be accepted as \"power_state\" parameter::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_a703e80c","line":105,"updated":"2016-03-01 11:25:37.000000000","message":"this line is not part of a function definition","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        Note: WakeOnLanPower driver supports only states.POWER_ON."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"3. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":108,"context_line":"   new states can be accepted as \"power_state\" parameter::"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_81881f24","line":105,"in_reply_to":"7af24918_a703e80c","updated":"2016-03-02 08:39:41.000000000","message":"I\u0027ll fix the indentation.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":107,"context_line":"3. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":108,"context_line":"   new states can be accepted as \"power_state\" parameter::"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def set_power_state(self, task, power_state):"},{"line_number":111,"context_line":"        \"\"\"Set the power state of the task\u0027s node."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        The second parameter \"power_state\" indicates a new power state"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_0709fc2c","line":110,"updated":"2016-03-01 11:25:37.000000000","message":"you\u0027re not changing the function definition, so lets not copy-paste it here","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":107,"context_line":"3. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":108,"context_line":"   new states can be accepted as \"power_state\" parameter::"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def set_power_state(self, task, power_state):"},{"line_number":111,"context_line":"        \"\"\"Set the power state of the task\u0027s node."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        The second parameter \"power_state\" indicates a new power state"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_81b65fda","line":110,"in_reply_to":"7af24918_0709fc2c","updated":"2016-03-02 08:39:41.000000000","message":"I\u0027ll remove the definition.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        to be changed to."},{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    This IPMIPower reference implementation supports SOFT_REBOOT,"},{"line_number":118,"context_line":"    SOFT_POWER_OFF and INJECT_NMI."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    SOFT_REBOOT is implemented as POWER CYCLE such that REBOOT is"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_e70df038","line":117,"updated":"2016-03-01 11:25:37.000000000","message":"please dedent this line back to the previous level. currently it renders as part of function definition","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        to be changed to."},{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    This IPMIPower reference implementation supports SOFT_REBOOT,"},{"line_number":118,"context_line":"    SOFT_POWER_OFF and INJECT_NMI."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    SOFT_REBOOT is implemented as POWER CYCLE such that REBOOT is"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_e123e303","line":117,"in_reply_to":"7af24918_e70df038","updated":"2016-03-02 08:39:41.000000000","message":"I\u0027ll fix that.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    SOFT_POWER_OFF and INJECT_NMI."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    SOFT_REBOOT is implemented as POWER CYCLE such that REBOOT is"},{"line_number":121,"context_line":"    implemented. This implementation enables generic BMC detect the"},{"line_number":122,"context_line":"    reboot completion as the power state change from ON -\u003e OFF -\u003e ON."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    The following table shows power state value of each state"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_4713045d","line":121,"updated":"2016-03-01 11:25:37.000000000","message":"I don\u0027t get this phrase, could you change it? Currently it reads as \"reboot is implemented such that reboot is implemented\", which does not make sense to me. And what do you mean by upper case POWER CYCLE? Judging by the text below you wanted to say that SOFT_REBOOT is implemented by first SOFT_POWER_OFF and then a plain POWER_ON, but I don\u0027t want to guess.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    SOFT_POWER_OFF and INJECT_NMI."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    SOFT_REBOOT is implemented as POWER CYCLE such that REBOOT is"},{"line_number":121,"context_line":"    implemented. This implementation enables generic BMC detect the"},{"line_number":122,"context_line":"    reboot completion as the power state change from ON -\u003e OFF -\u003e ON."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    The following table shows power state value of each state"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_36e870b4","line":121,"in_reply_to":"7af24918_4713045d","updated":"2016-03-02 08:39:41.000000000","message":"Okay, I\u0027ll fix that.\nIn my understanding, \"reboot\" doesn\u0027t involve no power supply state such as pushing reset button or CTL-ALT-DEL.\nBut \"power cycle\" is involves no power state, which is the act of \"power off\" and then \"power on\".\nhttps://en.wikipedia.org/wiki/Power_cycling","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    SOFT_POWER_OFF    | POWER_ON     | SOFT_POWER_OFF     | POWER_OFF"},{"line_number":138,"context_line":"    SOFT_POWER_OFF    | POWER_OFF    | NONE               | POWER_OFF"},{"line_number":139,"context_line":"    INJECT_NMI        | POWER_ON     | INJECT_NMI         | POWER_ON"},{"line_number":140,"context_line":"    INJECT_NMI        | POWER_OFF    | NONE               | POWER_OFF"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    *1) intermediate state of POWER CYCLE"},{"line_number":143,"context_line":"        SOFT_REBOOT is implemented as power cycle such as REBOOT."}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_2710784e","line":140,"updated":"2016-03-01 11:25:37.000000000","message":"Does it mean that INJECT_NMI should be rejected when node is powered off (I think yes)?","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    SOFT_POWER_OFF    | POWER_ON     | SOFT_POWER_OFF     | POWER_OFF"},{"line_number":138,"context_line":"    SOFT_POWER_OFF    | POWER_OFF    | NONE               | POWER_OFF"},{"line_number":139,"context_line":"    INJECT_NMI        | POWER_ON     | INJECT_NMI         | POWER_ON"},{"line_number":140,"context_line":"    INJECT_NMI        | POWER_OFF    | NONE               | POWER_OFF"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    *1) intermediate state of POWER CYCLE"},{"line_number":143,"context_line":"        SOFT_REBOOT is implemented as power cycle such as REBOOT."}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_b9775339","line":140,"in_reply_to":"7af24918_2710784e","updated":"2016-03-02 08:39:41.000000000","message":"Yes.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    INJECT_NMI        | POWER_ON     | INJECT_NMI         | POWER_ON"},{"line_number":140,"context_line":"    INJECT_NMI        | POWER_OFF    | NONE               | POWER_OFF"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    *1) intermediate state of POWER CYCLE"},{"line_number":143,"context_line":"        SOFT_REBOOT is implemented as power cycle such as REBOOT."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    In case that timeout occurred when the new_state is set either"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_871d0c69","line":142,"updated":"2016-03-01 11:25:37.000000000","message":"nit: lower case power cycle, it\u0027s not a term here","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    INJECT_NMI        | POWER_ON     | INJECT_NMI         | POWER_ON"},{"line_number":140,"context_line":"    INJECT_NMI        | POWER_OFF    | NONE               | POWER_OFF"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    *1) intermediate state of POWER CYCLE"},{"line_number":143,"context_line":"        SOFT_REBOOT is implemented as power cycle such as REBOOT."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    In case that timeout occurred when the new_state is set either"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_99737715","line":142,"in_reply_to":"7af24918_871d0c69","updated":"2016-03-02 08:39:41.000000000","message":"I\u0027ll fix that.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    \u0027soft_power\u0027 property must exist and it must have either \"true\" or"},{"line_number":200,"context_line":"    \"false\"."},{"line_number":201,"context_line":"    if a driver supports INJECT_NMI, \u0027inject_nmi\u0027 property must exists"},{"line_number":202,"context_line":"    and it must have either \"true\" or \"false\"."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_671a8070","line":202,"updated":"2016-03-01 11:25:37.000000000","message":"we don\u0027t have driver capabilities for now. so unless you\u0027re trying to distinguish nodes that can and can not soft power off, please delete this part.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    \u0027soft_power\u0027 property must exist and it must have either \"true\" or"},{"line_number":200,"context_line":"    \"false\"."},{"line_number":201,"context_line":"    if a driver supports INJECT_NMI, \u0027inject_nmi\u0027 property must exists"},{"line_number":202,"context_line":"    and it must have either \"true\" or \"false\"."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_e5b928cd","line":202,"in_reply_to":"7af24918_671a8070","updated":"2016-03-02 08:39:41.000000000","message":"As you mentioned, this is the case we are trying to distinguish nodes that can and cannot.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":301,"context_line":"   \u003cpower-state\u003e"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"       \u0027on\u0027, \u0027off\u0027, \u0027reboot\u0027, \u0027soft_reboot\u0027, \u0027soft_off\u0027, inject_nmi\u0027 [5]"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"RPC API impact"},{"line_number":307,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_c72554af","line":304,"updated":"2016-03-01 11:25:37.000000000","message":"we also need the OSC plugin impact here (see http://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/ironicclient-osc-plugin.html","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":301,"context_line":"   \u003cpower-state\u003e"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"       \u0027on\u0027, \u0027off\u0027, \u0027reboot\u0027, \u0027soft_reboot\u0027, \u0027soft_off\u0027, inject_nmi\u0027 [5]"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"RPC API impact"},{"line_number":307,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_9f5eb710","line":304,"in_reply_to":"7af24918_c72554af","updated":"2016-03-02 08:39:41.000000000","message":"I\u0027ll fix that.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":348,"context_line":"   \u0027{\"soft_power\": \"false\"}\u0027 if a driver is capable of soft reboot and"},{"line_number":349,"context_line":"   soft power off."},{"line_number":350,"context_line":"   If the key \"soft_power\" doesn\u0027t exist, or a value of the key"},{"line_number":351,"context_line":"   \"soft_power\" is set to other than \"true\" or \"false\", it causes error."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":" * has to set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 or"},{"line_number":354,"context_line":"   \u0027{\"inject_nmi\": \"false\"}\u0027 if a driver is capable of inject NMI."}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_a72ac87c","line":351,"updated":"2016-03-01 11:25:37.000000000","message":"we already have get_supported_boot_devices, why should operator figure out driver capabilities?","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":348,"context_line":"   \u0027{\"soft_power\": \"false\"}\u0027 if a driver is capable of soft reboot and"},{"line_number":349,"context_line":"   soft power off."},{"line_number":350,"context_line":"   If the key \"soft_power\" doesn\u0027t exist, or a value of the key"},{"line_number":351,"context_line":"   \"soft_power\" is set to other than \"true\" or \"false\", it causes error."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":" * has to set properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027 or"},{"line_number":354,"context_line":"   \u0027{\"inject_nmi\": \"false\"}\u0027 if a driver is capable of inject NMI."}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_6a3687e8","line":351,"in_reply_to":"7af24918_a72ac87c","updated":"2016-03-02 08:39:41.000000000","message":"Because soft_power is workable if and only if a driver is capable and a node is capable.\nSo ACPI has to be set up in the node instance as described in \"Dependencies\".","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":354,"context_line":"   \u0027{\"inject_nmi\": \"false\"}\u0027 if a driver is capable of inject NMI."},{"line_number":355,"context_line":"   If the key \"inject_nmi\" doesn\u0027t exist, or a value of the key"},{"line_number":356,"context_line":"   \"inject_nmi\" is set to other than \"true\" or \"false\", it causes"},{"line_number":357,"context_line":"   error."},{"line_number":358,"context_line":""},{"line_number":359,"context_line":" * deploy or set up ACPI [7] controllable instance to the node. How to"},{"line_number":360,"context_line":"   make the instance ACPI [7] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_0720dc9a","line":357,"updated":"2016-03-01 11:25:37.000000000","message":"ditto","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":354,"context_line":"   \u0027{\"inject_nmi\": \"false\"}\u0027 if a driver is capable of inject NMI."},{"line_number":355,"context_line":"   If the key \"inject_nmi\" doesn\u0027t exist, or a value of the key"},{"line_number":356,"context_line":"   \"inject_nmi\" is set to other than \"true\" or \"false\", it causes"},{"line_number":357,"context_line":"   error."},{"line_number":358,"context_line":""},{"line_number":359,"context_line":" * deploy or set up ACPI [7] controllable instance to the node. How to"},{"line_number":360,"context_line":"   make the instance ACPI [7] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_2a13df0e","line":357,"in_reply_to":"7af24918_0720dc9a","updated":"2016-03-02 08:39:41.000000000","message":"same as soft_power, the node instance has to have kernel dump setup to receive NMI.\nI\u0027ll add the information to \"Dependencies\".","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":356,"context_line":"   \"inject_nmi\" is set to other than \"true\" or \"false\", it causes"},{"line_number":357,"context_line":"   error."},{"line_number":358,"context_line":""},{"line_number":359,"context_line":" * deploy or set up ACPI [7] controllable instance to the node. How to"},{"line_number":360,"context_line":"   make the instance ACPI [7] controllable is described in"},{"line_number":361,"context_line":"   \"Dependencies\" section."},{"line_number":362,"context_line":""},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"Scalability impact"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_6ad7a7bf","line":361,"range":{"start_line":359,"start_character":0,"end_line":361,"end_character":26},"updated":"2016-03-02 08:39:41.000000000","message":"remove those lines because of duplicated information with dependency section.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7775d3f9ea07ac83e04ec427a5824f2bd0149320","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":"Dependencies"},{"line_number":420,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":421,"context_line":"* IPMIPower driver depends on ipmitool [2]."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"* Ironic managed node depends on ACPI [7]. In case of Linux system,"},{"line_number":424,"context_line":"  acpid [8] has to be installed. In case of Windows system, local"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_e724d0b0","line":421,"updated":"2016-03-01 11:25:37.000000000","message":"this is not a new dependency. is some newer version required?","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"a06131244a2c73462f135925ebef8881166ad1d8","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":"Dependencies"},{"line_number":420,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":421,"context_line":"* IPMIPower driver depends on ipmitool [2]."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"* Ironic managed node depends on ACPI [7]. In case of Linux system,"},{"line_number":424,"context_line":"  acpid [8] has to be installed. In case of Windows system, local"}],"source_content_type":"text/x-rst","patch_set":22,"id":"7af24918_5f926fa0","line":421,"in_reply_to":"7af24918_e724d0b0","updated":"2016-03-02 08:39:41.000000000","message":"I\u0027ll remove that.","commit_id":"741d011c3b02e35d1cb4b7eb9bb6dfe953309fe6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9d98792e3ba60ab1b28c17f1b385ec2b6655796c","unresolved":false,"context_lines":[{"line_number":152,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    The timeout can be configured in the Ironic configuration file,"},{"line_number":155,"context_line":"    typically /etc/ironic/ironic.conf, as follows."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    [conductor]"},{"line_number":158,"context_line":"    # This section defines generic default timeout values."}],"source_content_type":"text/x-rst","patch_set":23,"id":"7af24918_c0eb1eaf","line":155,"updated":"2016-03-02 15:13:00.000000000","message":":: and indentation required for proper formatting","commit_id":"22c704119be5b338dc65dd067ceee2a5c565920b"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"b2de55b7b7c85a04ad2443a3b4ef0bdcb4271731","unresolved":false,"context_lines":[{"line_number":152,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    The timeout can be configured in the Ironic configuration file,"},{"line_number":155,"context_line":"    typically /etc/ironic/ironic.conf, as follows."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    [conductor]"},{"line_number":158,"context_line":"    # This section defines generic default timeout values."}],"source_content_type":"text/x-rst","patch_set":23,"id":"7af24918_e2da70e7","line":155,"in_reply_to":"7af24918_c0eb1eaf","updated":"2016-03-03 07:08:21.000000000","message":"I\u0027ll fix that.","commit_id":"22c704119be5b338dc65dd067ceee2a5c565920b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9d98792e3ba60ab1b28c17f1b385ec2b6655796c","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                states.INJECT_NMI]"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"5. add \u0027soft_power\u0027 and \u0027inject_nmi\u0027 capabilities to REQUIRED_PROPERTIES"},{"line_number":190,"context_line":"   and \"validate\" method in IPMIPower validates them::"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    IPMIPower \"validate\" method validates whether or not a node has"},{"line_number":193,"context_line":"    the capabilities \u0027soft_power\u0027 and \u0027inject_nmi\u0027, and each"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7af24918_20d3e205","line":190,"updated":"2016-03-02 15:13:00.000000000","message":"1. not sure why :: is needed here\n\n2. I think we should not require anything here and by default assume that these features are supported (which IIUC is the case)","commit_id":"22c704119be5b338dc65dd067ceee2a5c565920b"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"b2de55b7b7c85a04ad2443a3b4ef0bdcb4271731","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                states.INJECT_NMI]"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"5. add \u0027soft_power\u0027 and \u0027inject_nmi\u0027 capabilities to REQUIRED_PROPERTIES"},{"line_number":190,"context_line":"   and \"validate\" method in IPMIPower validates them::"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    IPMIPower \"validate\" method validates whether or not a node has"},{"line_number":193,"context_line":"    the capabilities \u0027soft_power\u0027 and \u0027inject_nmi\u0027, and each"}],"source_content_type":"text/x-rst","patch_set":23,"id":"7af24918_22a61853","line":190,"in_reply_to":"7af24918_20d3e205","updated":"2016-03-03 07:08:21.000000000","message":"1. I\u0027ll fix the format issue.\n\n2. I\u0027ll change as follows:\n\n   Add capabilities \u0027soft_power\u0027 and \u0027inject_nmi\u0027 with the default value \"true\", so that the capabilities \u0027soft_power\u0027 and \u0027inject_nmi\u0027 always exit.\n   The capabilities \u0027soft_power\u0027 and \u0027inject_nmi\u0027 should be set to \"false\" only if instance is not capable,","commit_id":"22c704119be5b338dc65dd067ceee2a5c565920b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9d98792e3ba60ab1b28c17f1b385ec2b6655796c","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"   openstack baremetal node soft_reboot \u003cuuid\u003e"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"   openstack baremetal node power soft_off \u003cuuid\u003e"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"   openstack baremetal node inject_nmi \u003cuuid\u003e"},{"line_number":314,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"7af24918_00cea659","line":311,"updated":"2016-03-02 15:13:00.000000000","message":"I think instead of these we should have --soft argument to existing reboot and power off commands","commit_id":"22c704119be5b338dc65dd067ceee2a5c565920b"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"4bb46a197b3e70bcf84cd6cb68a4c5d04ad7c8ee","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"   openstack baremetal node soft_reboot \u003cuuid\u003e"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"   openstack baremetal node power soft_off \u003cuuid\u003e"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"   openstack baremetal node inject_nmi \u003cuuid\u003e"},{"line_number":314,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"7af24918_9a803af9","line":311,"in_reply_to":"7af24918_00cea659","updated":"2016-03-03 03:21:46.000000000","message":"I agree with Dmitry.\nBut do we also need to add a --hard option to distinguish them explicitly just like the \"openstack server reboot\" does?","commit_id":"22c704119be5b338dc65dd067ceee2a5c565920b"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"b2de55b7b7c85a04ad2443a3b4ef0bdcb4271731","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"   openstack baremetal node soft_reboot \u003cuuid\u003e"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"   openstack baremetal node power soft_off \u003cuuid\u003e"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"   openstack baremetal node inject_nmi \u003cuuid\u003e"},{"line_number":314,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"7af24918_82656c1f","line":311,"in_reply_to":"7af24918_00cea659","updated":"2016-03-03 07:08:21.000000000","message":"I\u0027ll fix that.","commit_id":"22c704119be5b338dc65dd067ceee2a5c565920b"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"b2de55b7b7c85a04ad2443a3b4ef0bdcb4271731","unresolved":false,"context_lines":[{"line_number":308,"context_line":""},{"line_number":309,"context_line":"   openstack baremetal node soft_reboot \u003cuuid\u003e"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"   openstack baremetal node power soft_off \u003cuuid\u003e"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"   openstack baremetal node inject_nmi \u003cuuid\u003e"},{"line_number":314,"context_line":""}],"source_content_type":"text/x-rst","patch_set":23,"id":"7af24918_507b2e8c","line":311,"in_reply_to":"7af24918_9a803af9","updated":"2016-03-03 07:08:21.000000000","message":"I\u0027ll add --hard option too.","commit_id":"22c704119be5b338dc65dd067ceee2a5c565920b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"47f24949f5366527aec46957108a111f7bb1ff47","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    SOFT_POWER_OFF \u003d \u0027soft power off\u0027"},{"line_number":92,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"2. add \"get_supported_power_states\" method and default implementation"},{"line_number":95,"context_line":"   in PowerInterface::"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_supported_power_states(self, task):"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_d5ce8fb6","line":94,"range":{"start_line":94,"start_character":46,"end_line":94,"end_character":69},"updated":"2016-04-21 15:10:23.000000000","message":"You may wish to state that this is the base PowerInterface class in ironic/drivers/base.py","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0d5de2142f8958ce5f9f3531c07000ed1bf16875","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    SOFT_POWER_OFF \u003d \u0027soft power off\u0027"},{"line_number":92,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"2. add \"get_supported_power_states\" method and default implementation"},{"line_number":95,"context_line":"   in PowerInterface::"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def get_supported_power_states(self, task):"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_b9392edb","line":94,"range":{"start_line":94,"start_character":46,"end_line":94,"end_character":69},"in_reply_to":"1a122d0e_d5ce8fb6","updated":"2016-04-22 08:18:03.000000000","message":"Okay, I\u0027ll add that.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6d4a4f5d76aa85e748477172db2e729cc0487a76","unresolved":false,"context_lines":[{"line_number":148,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":149,"context_line":"   |SOFT_REBOOT      | POWER_ON     | SOFT_POWER_OFF     | ERROR        |"},{"line_number":150,"context_line":"   |SOFT_POWER_OFF   | POWER_ON     | SOFT_POWER_OFF     | ERROR        |"},{"line_number":151,"context_line":"   |INJECT_NMI       | POWER_ON     | INJECT_NMI         | ERROR        |"},{"line_number":152,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"   The timeout can be configured in the Ironic configuration file,"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_030eb13a","line":151,"updated":"2016-04-13 16:21:45.000000000","message":"what does it mean for a machine\u0027s power state to become ERROR in any of these cases? The transition may have timed out, but Ironic can still determine what the power state is.... so, the next sync_power_state periodic task will merely poll the BMC again, determine the then-current power state, and update the Node record.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9c8eb7ced15f100b473f279a6bcde521ccc8be27","unresolved":false,"context_lines":[{"line_number":148,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":149,"context_line":"   |SOFT_REBOOT      | POWER_ON     | SOFT_POWER_OFF     | ERROR        |"},{"line_number":150,"context_line":"   |SOFT_POWER_OFF   | POWER_ON     | SOFT_POWER_OFF     | ERROR        |"},{"line_number":151,"context_line":"   |INJECT_NMI       | POWER_ON     | INJECT_NMI         | ERROR        |"},{"line_number":152,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"   The timeout can be configured in the Ironic configuration file,"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_2e1f366d","line":151,"in_reply_to":"5a18252c_030eb13a","updated":"2016-04-14 08:09:56.000000000","message":"You are right, I totally overlooked the behavior that \"the next sync_power_state periodic task will merely poll the BMC again\".\n\nI\u0027d like update the \"ERROR\" in the current patch set #24 to \"ERROR and maintenance mode TRUE\" in the next patch set.\n\nDoes it make sense?","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6d4a4f5d76aa85e748477172db2e729cc0487a76","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # timeout (in seconds) of inject nmi operation (integer value)"},{"line_number":165,"context_line":"    inject_nmi_timeout \u003d 600"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    [ipmi]"},{"line_number":168,"context_line":"    # This section defines ipmi specific default timeout value"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_e308d52f","line":165,"updated":"2016-04-13 16:21:45.000000000","message":"what does it mean to have a timeout for inject_nmi? how does the conductor know when this operation is completed?","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0d5de2142f8958ce5f9f3531c07000ed1bf16875","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # timeout (in seconds) of inject nmi operation (integer value)"},{"line_number":165,"context_line":"    inject_nmi_timeout \u003d 600"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    [ipmi]"},{"line_number":168,"context_line":"    # This section defines ipmi specific default timeout value"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_b60bfd2a","line":165,"in_reply_to":"1a122d0e_95ac178e","updated":"2016-04-22 08:18:03.000000000","message":"I\u0027ll remove the default timeout value for all drivers at L.165, and IPMI specific time out at L.170.\nBecause I agree that those timeout value are unnecessary.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"47f24949f5366527aec46957108a111f7bb1ff47","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # timeout (in seconds) of inject nmi operation (integer value)"},{"line_number":165,"context_line":"    inject_nmi_timeout \u003d 600"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    [ipmi]"},{"line_number":168,"context_line":"    # This section defines ipmi specific default timeout value"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_95ac178e","line":165,"in_reply_to":"5a18252c_317b1b8e","updated":"2016-04-21 15:10:23.000000000","message":"I think we still need to understand how the conductor will know when the soft states have completed.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9c8eb7ced15f100b473f279a6bcde521ccc8be27","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # timeout (in seconds) of inject nmi operation (integer value)"},{"line_number":165,"context_line":"    inject_nmi_timeout \u003d 600"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    [ipmi]"},{"line_number":168,"context_line":"    # This section defines ipmi specific default timeout value"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_317b1b8e","line":165,"in_reply_to":"5a18252c_e308d52f","updated":"2016-04-14 08:09:56.000000000","message":"IPMI specific time time out is L.170.\n\nL.165 is intended a default timeout value for all drivers. \n\nIf the default value doesn\u0027t make sense, each driver can override such as the case of IPMIPower.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9c8eb7ced15f100b473f279a6bcde521ccc8be27","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    [ipmi]"},{"line_number":168,"context_line":"    # This section defines ipmi specific default timeout value"},{"line_number":169,"context_line":"    # timeout (in seconds) of inject nmi operation (integer value)"},{"line_number":170,"context_line":"    inject_nmi_timeout \u003d 60"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"4. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_f1ed23b8","line":170,"range":{"start_line":170,"start_character":25,"end_line":170,"end_character":27},"updated":"2016-04-14 08:09:56.000000000","message":"This is same timeout vaule as power on/off.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0d5de2142f8958ce5f9f3531c07000ed1bf16875","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    [ipmi]"},{"line_number":168,"context_line":"    # This section defines ipmi specific default timeout value"},{"line_number":169,"context_line":"    # timeout (in seconds) of inject nmi operation (integer value)"},{"line_number":170,"context_line":"    inject_nmi_timeout \u003d 60"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"4. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_b912ce56","line":170,"range":{"start_line":170,"start_character":25,"end_line":170,"end_character":27},"in_reply_to":"1a122d0e_15e647e8","updated":"2016-04-22 08:18:03.000000000","message":"I\u0027ll remove the default timeout value for all drivers at L.165, and IPMI specific time out at L.170. Because I agree that those timeout value are unnecessary.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"47f24949f5366527aec46957108a111f7bb1ff47","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    [ipmi]"},{"line_number":168,"context_line":"    # This section defines ipmi specific default timeout value"},{"line_number":169,"context_line":"    # timeout (in seconds) of inject nmi operation (integer value)"},{"line_number":170,"context_line":"    inject_nmi_timeout \u003d 60"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"4. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_15e647e8","line":170,"range":{"start_line":170,"start_character":25,"end_line":170,"end_character":27},"in_reply_to":"5a18252c_f1ed23b8","updated":"2016-04-21 15:10:23.000000000","message":"Would the existing retry timeout not be sufficient?  Adding more configuration parameters with the same values that ultimately do the same thing does not exactly seem ideal from a standpoint of managing the configuration.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6d4a4f5d76aa85e748477172db2e729cc0487a76","unresolved":false,"context_lines":[{"line_number":230,"context_line":""},{"line_number":231,"context_line":"   GET /v1/nodes/(node_ident)/states"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"   Json example of the returned type NodeStates"},{"line_number":234,"context_line":"       {"},{"line_number":235,"context_line":"         \"console_enabled\": false,"},{"line_number":236,"context_line":"         \"last_error\": null,"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_4308a92c","line":233,"updated":"2016-04-13 16:21:45.000000000","message":"nit: JSON should be all caps, since it is an acronym","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9c8eb7ced15f100b473f279a6bcde521ccc8be27","unresolved":false,"context_lines":[{"line_number":230,"context_line":""},{"line_number":231,"context_line":"   GET /v1/nodes/(node_ident)/states"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"   Json example of the returned type NodeStates"},{"line_number":234,"context_line":"       {"},{"line_number":235,"context_line":"         \"console_enabled\": false,"},{"line_number":236,"context_line":"         \"last_error\": null,"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_bf6ff729","line":233,"in_reply_to":"5a18252c_4308a92c","updated":"2016-04-14 08:09:56.000000000","message":"I\u0027ll fix that.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6d4a4f5d76aa85e748477172db2e729cc0487a76","unresolved":false,"context_lines":[{"line_number":315,"context_line":"-----------------"},{"line_number":316,"context_line":"PowerInterface base is enhanced by adding a new method,"},{"line_number":317,"context_line":"get_supported_power_states() which returns a list of supported power"},{"line_number":318,"context_line":"states."},{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Nova driver impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_2303ed10","line":318,"updated":"2016-04-13 16:21:45.000000000","message":"changes to the base classes need to be done very carefully, as they affect (and may break) out of tree drivers. please add details for the changes you plan to make.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0d5de2142f8958ce5f9f3531c07000ed1bf16875","unresolved":false,"context_lines":[{"line_number":315,"context_line":"-----------------"},{"line_number":316,"context_line":"PowerInterface base is enhanced by adding a new method,"},{"line_number":317,"context_line":"get_supported_power_states() which returns a list of supported power"},{"line_number":318,"context_line":"states."},{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Nova driver impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_565ee976","line":318,"in_reply_to":"1a122d0e_150be77e","updated":"2016-04-22 08:18:03.000000000","message":"Thanks for your help. I\u0027ll add those.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9c8eb7ced15f100b473f279a6bcde521ccc8be27","unresolved":false,"context_lines":[{"line_number":315,"context_line":"-----------------"},{"line_number":316,"context_line":"PowerInterface base is enhanced by adding a new method,"},{"line_number":317,"context_line":"get_supported_power_states() which returns a list of supported power"},{"line_number":318,"context_line":"states."},{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Nova driver impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_9f883bc7","line":318,"in_reply_to":"5a18252c_2303ed10","updated":"2016-04-14 08:09:56.000000000","message":"The details are described in the following lines:\n\n L.92-106 for base class\n L.173-187 for IPMIPower class","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"47f24949f5366527aec46957108a111f7bb1ff47","unresolved":false,"context_lines":[{"line_number":315,"context_line":"-----------------"},{"line_number":316,"context_line":"PowerInterface base is enhanced by adding a new method,"},{"line_number":317,"context_line":"get_supported_power_states() which returns a list of supported power"},{"line_number":318,"context_line":"states."},{"line_number":319,"context_line":""},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Nova driver impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_150be77e","line":318,"in_reply_to":"5a18252c_9f883bc7","updated":"2016-04-21 15:10:23.000000000","message":"I believe the ask is more to provide an understanding, in the specification, of how the newly defined driver API change item will fit in, and how are we going to not break out of tree drivers.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6d4a4f5d76aa85e748477172db2e729cc0487a76","unresolved":false,"context_lines":[{"line_number":334,"context_line":"specified in nova blueprint [10] and spec [11]."},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"The default behavior change of \"nova reboot\" command is made by"},{"line_number":337,"context_line":"following the standard deprecation policy [12]."},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_9e005803","line":337,"updated":"2016-04-13 16:21:45.000000000","message":"please detail how you plan to follow the standard deprecation policy in this case, since it is not obvious to me from the wording here.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"d4a902418ec7e67766f652ea42f193981bc46c3e","unresolved":false,"context_lines":[{"line_number":334,"context_line":"specified in nova blueprint [10] and spec [11]."},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"The default behavior change of \"nova reboot\" command is made by"},{"line_number":337,"context_line":"following the standard deprecation policy [12]."},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_1632365e","line":337,"in_reply_to":"1a122d0e_76dcc546","updated":"2016-04-27 09:12:23.000000000","message":"Hi, all,\nAbout this discussion, I have some thoughts posed in the following patch, please have a look and give me some advice. Thanks in advance.\nhttps://review.openstack.org/#/c/229282/","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0d5de2142f8958ce5f9f3531c07000ed1bf16875","unresolved":false,"context_lines":[{"line_number":334,"context_line":"specified in nova blueprint [10] and spec [11]."},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"The default behavior change of \"nova reboot\" command is made by"},{"line_number":337,"context_line":"following the standard deprecation policy [12]."},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_76dcc546","line":337,"in_reply_to":"1a122d0e_f5a2ab4a","updated":"2016-04-22 08:18:03.000000000","message":"Okay I\u0027ll change as follows:\n\n---\nThe default behavior change of \"nova reboot\" command is made by following the standard deprecation policy [12]. How to deprecate nova command is also specified in nova blueprint [10] and spec [11].\n---\n\nBecause it doesn\u0027t make sense to describe \"how deprecations will be performed for this feature\" in this document at this moment, because it is very likely to change through the review process of the nova blueprint [10].","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"47f24949f5366527aec46957108a111f7bb1ff47","unresolved":false,"context_lines":[{"line_number":334,"context_line":"specified in nova blueprint [10] and spec [11]."},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"The default behavior change of \"nova reboot\" command is made by"},{"line_number":337,"context_line":"following the standard deprecation policy [12]."},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_f5a2ab4a","line":337,"in_reply_to":"5a18252c_9a5de949","updated":"2016-04-21 15:10:23.000000000","message":"Please update the specification with the pertinent text to provide the reader with context as to how deprecations will be performed for this feature.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9c8eb7ced15f100b473f279a6bcde521ccc8be27","unresolved":false,"context_lines":[{"line_number":334,"context_line":"specified in nova blueprint [10] and spec [11]."},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"The default behavior change of \"nova reboot\" command is made by"},{"line_number":337,"context_line":"following the standard deprecation policy [12]."},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_9a5de949","line":337,"in_reply_to":"5a18252c_9e005803","updated":"2016-04-14 08:09:56.000000000","message":"I think how to deprecate should be described in the nova spec.\nBut here is what I can think of:\n\nBy following the http://governance.openstack.org/reference/tags/assert_follows-standard-deprecation.html#requirements,\n\nwe may keep \"nova reboot\" behavior as hard reboot with displaying warning message \"use --hard option specifically\" for the duplication period. The soft reboot is possible only if \u0027--soft\u0027 is specified.\n\nAfter ending the deprecation period, \"nova reboot\" behaves as soft reboot with a warning \"The default behavior is soft reboot, please specify \u0027--hard\u0027 option if hard reboot is required\". The soft reboot also be possible by specifying \u0027--soft\u0027 option.\nAnd the hard reboot tuned to work only if \u0027--hard\u0027 option is specified.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6d4a4f5d76aa85e748477172db2e729cc0487a76","unresolved":false,"context_lines":[{"line_number":347,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":348,"context_line":"  sure the following:"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":" * has to set properties/capabilities\u003d\u0027{\"soft_power\": \"false\"}\u0027 if a"},{"line_number":351,"context_line":"   driver is not capable of soft reboot and soft power off, because"},{"line_number":352,"context_line":"   the default is properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_7e03bc0d","line":350,"updated":"2016-04-13 16:21:45.000000000","message":"This concerns me for several reasons...\n\nthe driver should be able to detect this about the hardware; if a driver doesn\u0027t support this feature, the conductor should be able to tell that from the driver interfaces\n\nsetting node.properties is not a supported means of changing driver behavior (that\u0027s what driver_info is for)\n\nwhat happens if the operator *doesn\u0027t* set this option in the API? how will errors be handled? how will the operator know what they\u0027re supposed to do?","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9c8eb7ced15f100b473f279a6bcde521ccc8be27","unresolved":false,"context_lines":[{"line_number":347,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":348,"context_line":"  sure the following:"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":" * has to set properties/capabilities\u003d\u0027{\"soft_power\": \"false\"}\u0027 if a"},{"line_number":351,"context_line":"   driver is not capable of soft reboot and soft power off, because"},{"line_number":352,"context_line":"   the default is properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_aed066f7","line":350,"in_reply_to":"5a18252c_7e03bc0d","updated":"2016-04-14 08:09:56.000000000","message":"It seems I made two critical typos at L.351 and L.355.\n\nI think user or operator has to aware of the capability of OS which user or operator deployed by herself/himself.\n\nDid I answer your question?","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9c8eb7ced15f100b473f279a6bcde521ccc8be27","unresolved":false,"context_lines":[{"line_number":348,"context_line":"  sure the following:"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":" * has to set properties/capabilities\u003d\u0027{\"soft_power\": \"false\"}\u0027 if a"},{"line_number":351,"context_line":"   driver is not capable of soft reboot and soft power off, because"},{"line_number":352,"context_line":"   the default is properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":" * has to set properties/capabilities\u003d\u0027{\"inject_nmi\": \"false\"}\u0027 if a"}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_0e487acb","line":351,"range":{"start_line":351,"start_character":3,"end_line":351,"end_character":9},"updated":"2016-04-14 08:09:56.000000000","message":"The critical typo 1:\n\ns/driver/instance or user OS/","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9c8eb7ced15f100b473f279a6bcde521ccc8be27","unresolved":false,"context_lines":[{"line_number":352,"context_line":"   the default is properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":" * has to set properties/capabilities\u003d\u0027{\"inject_nmi\": \"false\"}\u0027 if a"},{"line_number":355,"context_line":"   driver is not capable of inject NMI, because the default is"},{"line_number":356,"context_line":"   properties/capabilities\u003d\u0027{\"inject_nmi\": \"true\"}\u0027"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":""}],"source_content_type":"text/x-rst","patch_set":24,"id":"5a18252c_8e0aca77","line":355,"range":{"start_line":355,"start_character":3,"end_line":355,"end_character":9},"updated":"2016-04-14 08:09:56.000000000","message":"The critical typo 2:\n\ns/driver/instance or user OS/","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"47f24949f5366527aec46957108a111f7bb1ff47","unresolved":false,"context_lines":[{"line_number":402,"context_line":"* Enhance Ironic API as described in \"REST API impact\"."},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"* Enhance Ironic CLI as described in \"Client (CLI) impact\"."},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"* Implement the enhanced PowerInterface class into the concrete class"},{"line_number":407,"context_line":"  IPMIPower."},{"line_number":408,"context_line":"  Implementing vendor\u0027s power concrete class is up to each vendor."}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_555d5f47","line":405,"updated":"2016-04-21 15:10:23.000000000","message":"Please add a work item covering documentation from the ironic perspective for this feature.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0d5de2142f8958ce5f9f3531c07000ed1bf16875","unresolved":false,"context_lines":[{"line_number":402,"context_line":"* Enhance Ironic API as described in \"REST API impact\"."},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"* Enhance Ironic CLI as described in \"Client (CLI) impact\"."},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"* Implement the enhanced PowerInterface class into the concrete class"},{"line_number":407,"context_line":"  IPMIPower."},{"line_number":408,"context_line":"  Implementing vendor\u0027s power concrete class is up to each vendor."}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_e3549922","line":405,"in_reply_to":"1a122d0e_555d5f47","updated":"2016-04-22 08:18:03.000000000","message":"Okay, I\u0027ll add that.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"47f24949f5366527aec46957108a111f7bb1ff47","unresolved":false,"context_lines":[{"line_number":426,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":427,"context_line":"* Unit Tests."},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"Upgrades and Backwards Compatibility"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_50abadd6","line":429,"range":{"start_line":429,"start_character":0,"end_line":429,"end_character":56},"updated":"2016-04-21 15:10:23.000000000","message":"Is this statement being made with the commitment of the other driver maintainers?","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0d5de2142f8958ce5f9f3531c07000ed1bf16875","unresolved":false,"context_lines":[{"line_number":426,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":427,"context_line":"* Unit Tests."},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":430,"context_line":""},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"Upgrades and Backwards Compatibility"}],"source_content_type":"text/x-rst","patch_set":24,"id":"1a122d0e_e37db9b2","line":429,"range":{"start_line":429,"start_character":0,"end_line":429,"end_character":56},"in_reply_to":"1a122d0e_50abadd6","updated":"2016-04-22 08:18:03.000000000","message":"No, because this is not a commitment for each vendor to implement, but to just plan.","commit_id":"96917ac0c7246471a94440222b46f8546cb91d2a"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"c19f26d6d7990300872317f50e5755422045e0a7","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":"There exists a problem in the current PowerInterface base class which"},{"line_number":21,"context_line":"doesn\u0027t provide with soft power off and diagnostic interrupt (NMI [1])"},{"line_number":22,"context_line":"capabilities even if ipmitool [2] and most of BMCs support."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Here is a part of ipmitool man page in which describes soft power off and"},{"line_number":25,"context_line":"diagnostic interrupt (NMI [1])."}],"source_content_type":"text/x-rst","patch_set":25,"id":"dab17558_0a75d896","line":22,"updated":"2016-05-16 22:47:26.000000000","message":"s/even/even though/\ns/support/support these capabilities/","commit_id":"393d0d397f0cf23bea35a04eec048cb63d6f90cb"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"887266981592d8df16b62a9271126b98ad1f0418","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":"There exists a problem in the current PowerInterface base class which"},{"line_number":21,"context_line":"doesn\u0027t provide with soft power off and diagnostic interrupt (NMI [1])"},{"line_number":22,"context_line":"capabilities even if ipmitool [2] and most of BMCs support."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Here is a part of ipmitool man page in which describes soft power off and"},{"line_number":25,"context_line":"diagnostic interrupt (NMI [1])."}],"source_content_type":"text/x-rst","patch_set":25,"id":"bab6814e_77efdfb0","line":22,"in_reply_to":"dab17558_0a75d896","updated":"2016-05-18 07:44:20.000000000","message":"I\u0027ll fix both.\n\ns/even/even though/ must be\ns/even if/even though/","commit_id":"393d0d397f0cf23bea35a04eec048cb63d6f90cb"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"c19f26d6d7990300872317f50e5755422045e0a7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Here is a part of ipmitool man page in which describes soft power off and"},{"line_number":25,"context_line":"diagnostic interrupt (NMI [1])."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"$ man ipimtool::"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":" ..."},{"line_number":30,"context_line":" power"}],"source_content_type":"text/x-rst","patch_set":25,"id":"dab17558_8a42683c","line":27,"updated":"2016-05-16 22:47:26.000000000","message":"typo: ipmitool","commit_id":"393d0d397f0cf23bea35a04eec048cb63d6f90cb"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"887266981592d8df16b62a9271126b98ad1f0418","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Here is a part of ipmitool man page in which describes soft power off and"},{"line_number":25,"context_line":"diagnostic interrupt (NMI [1])."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"$ man ipimtool::"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":" ..."},{"line_number":30,"context_line":" power"}],"source_content_type":"text/x-rst","patch_set":25,"id":"bab6814e_77a7df4f","line":27,"in_reply_to":"dab17558_8a42683c","updated":"2016-05-18 07:44:20.000000000","message":"I\u0027ll fix that.","commit_id":"393d0d397f0cf23bea35a04eec048cb63d6f90cb"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"c19f26d6d7990300872317f50e5755422045e0a7","unresolved":false,"context_lines":[{"line_number":52,"context_line":"lack of the soft power off and diagnostic interrupt (NMI [1]) lead the"},{"line_number":53,"context_line":"following inconveniences."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"1. Customer cannot safely shutdown or soft power off their instance"},{"line_number":56,"context_line":"   without logging on, by Ironic CLI or Ironic REST API in case of"},{"line_number":57,"context_line":"   tenant admin, by Nova CLI or NOVA REST API in case of tenant user."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"dab17558_aa480cb4","line":55,"updated":"2016-05-16 22:47:26.000000000","message":"The wording of 1. and 2. here is confusing and perhaps overly verbose. It seems like the main points are:\n\n1. The customer cannot safely shut down or soft power off their instance without logging on.\n\n2. The customer cannot take an NMI dump to investigate OS-related problems by themselves.\n\nThe detail of using the ironic or nova client or API seems like it should go in the \"proposed change\" section rather than being duplicated here.","commit_id":"393d0d397f0cf23bea35a04eec048cb63d6f90cb"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"887266981592d8df16b62a9271126b98ad1f0418","unresolved":false,"context_lines":[{"line_number":52,"context_line":"lack of the soft power off and diagnostic interrupt (NMI [1]) lead the"},{"line_number":53,"context_line":"following inconveniences."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"1. Customer cannot safely shutdown or soft power off their instance"},{"line_number":56,"context_line":"   without logging on, by Ironic CLI or Ironic REST API in case of"},{"line_number":57,"context_line":"   tenant admin, by Nova CLI or NOVA REST API in case of tenant user."},{"line_number":58,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"bab6814e_da87d210","line":55,"in_reply_to":"dab17558_aa480cb4","updated":"2016-05-18 07:44:20.000000000","message":"The duplicated information is already described L.80-83in the \"proposed change\" section, so I\u0027ll simply remove them.","commit_id":"393d0d397f0cf23bea35a04eec048cb63d6f90cb"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"c19f26d6d7990300872317f50e5755422045e0a7","unresolved":false,"context_lines":[{"line_number":80,"context_line":"And this enhancement enables the soft reboot, soft power off and"},{"line_number":81,"context_line":"inject NMI through Ironic CLI and REST API for tenant admin and cloud"},{"line_number":82,"context_line":"provider. Also this enhancement enables them through Nova CLI and REST"},{"line_number":83,"context_line":"API for tenant user when Nova\u0027s blue print [3] is implemented."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"This spec also proposes to implement the enhanced PowerInterface base"},{"line_number":86,"context_line":"class into the IPMIPower concrete class as a reference implementation."}],"source_content_type":"text/x-rst","patch_set":25,"id":"dab17558_2ad37cd6","line":83,"updated":"2016-05-16 22:47:26.000000000","message":"s/blue print/blueprint/","commit_id":"393d0d397f0cf23bea35a04eec048cb63d6f90cb"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"887266981592d8df16b62a9271126b98ad1f0418","unresolved":false,"context_lines":[{"line_number":80,"context_line":"And this enhancement enables the soft reboot, soft power off and"},{"line_number":81,"context_line":"inject NMI through Ironic CLI and REST API for tenant admin and cloud"},{"line_number":82,"context_line":"provider. Also this enhancement enables them through Nova CLI and REST"},{"line_number":83,"context_line":"API for tenant user when Nova\u0027s blue print [3] is implemented."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"This spec also proposes to implement the enhanced PowerInterface base"},{"line_number":86,"context_line":"class into the IPMIPower concrete class as a reference implementation."}],"source_content_type":"text/x-rst","patch_set":25,"id":"bab6814e_17449372","line":83,"in_reply_to":"dab17558_2ad37cd6","updated":"2016-05-18 07:44:20.000000000","message":"I\u0027ll fix that.","commit_id":"393d0d397f0cf23bea35a04eec048cb63d6f90cb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"919aae63c9bc54d06afa177a5d599d578053a885","unresolved":false,"context_lines":[{"line_number":138,"context_line":"          SOFT_REBOOT is implemented as power cycle such as REBOOT."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    In case that timeout occurred when the new_state is set either"},{"line_number":141,"context_line":"    SOFT_REBOOT or SOFT_POWER_OFF, the end state becomes ERROR."},{"line_number":142,"context_line":"    Timeout never happens when the new_state is set to INJECT_NMI in"},{"line_number":143,"context_line":"    case of IPMIPower."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"bab6814e_8a235855","line":141,"updated":"2016-05-23 13:56:09.000000000","message":"as Deva said, ERROR will be overridden very soon by the periodic power state sync task. I think we should fall back to hard POWER OFF in case SOFT_POWER_OFF fails.","commit_id":"103540ae3af0d04999790c346e2e4d0ab20dd91b"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5789084aceb0daa3feed8e3fbe8929aee540300a","unresolved":false,"context_lines":[{"line_number":138,"context_line":"          SOFT_REBOOT is implemented as power cycle such as REBOOT."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    In case that timeout occurred when the new_state is set either"},{"line_number":141,"context_line":"    SOFT_REBOOT or SOFT_POWER_OFF, the end state becomes ERROR."},{"line_number":142,"context_line":"    Timeout never happens when the new_state is set to INJECT_NMI in"},{"line_number":143,"context_line":"    case of IPMIPower."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"bab6814e_9283ea55","line":141,"in_reply_to":"bab6814e_8a235855","updated":"2016-05-26 05:16:05.000000000","message":"Okay, I\u0027ll update so as to fall back.","commit_id":"103540ae3af0d04999790c346e2e4d0ab20dd91b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"919aae63c9bc54d06afa177a5d599d578053a885","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                states.INJECT_NMI]"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"5. add \u0027soft_power\u0027 and \u0027inject_nmi\u0027 capabilities to REQUIRED_PROPERTIES"},{"line_number":182,"context_line":"   with the default value \"true\", and \"validate\" method in IPMIPower"},{"line_number":183,"context_line":"   validates if the value of the capabilities has boolean string value"},{"line_number":184,"context_line":"   \"true\" or \"false\"."},{"line_number":185,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"bab6814e_6a1ef40c","line":182,"updated":"2016-05-23 13:56:09.000000000","message":"1. if it has the default value, it\u0027s not REQUIRED\n\n2. are these capabilities or driver properties? capabilities go to /properties/capabilities, driver properties go to /driver_info/NAME. Which one did you mean?","commit_id":"103540ae3af0d04999790c346e2e4d0ab20dd91b"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5789084aceb0daa3feed8e3fbe8929aee540300a","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                states.INJECT_NMI]"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"5. add \u0027soft_power\u0027 and \u0027inject_nmi\u0027 capabilities to REQUIRED_PROPERTIES"},{"line_number":182,"context_line":"   with the default value \"true\", and \"validate\" method in IPMIPower"},{"line_number":183,"context_line":"   validates if the value of the capabilities has boolean string value"},{"line_number":184,"context_line":"   \"true\" or \"false\"."},{"line_number":185,"context_line":""}],"source_content_type":"text/x-rst","patch_set":26,"id":"bab6814e_5247c2bb","line":182,"in_reply_to":"bab6814e_6a1ef40c","updated":"2016-05-26 05:16:05.000000000","message":"1. I\u0027ll fix that.\n\n2. these are capabilities, because these are attribute of User OS.","commit_id":"103540ae3af0d04999790c346e2e4d0ab20dd91b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"919aae63c9bc54d06afa177a5d599d578053a885","unresolved":false,"context_lines":[{"line_number":342,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":343,"context_line":"  sure the following:"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":" * has to set properties/capabilities\u003d\u0027{\"soft_power\": \"false\"}\u0027 if an"},{"line_number":346,"context_line":"   instance, user OS, is not capable of soft reboot and soft power"},{"line_number":347,"context_line":"   off, because the default is"},{"line_number":348,"context_line":"   properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bab6814e_ca19e023","line":345,"updated":"2016-05-23 13:56:09.000000000","message":"this is not the format we use for capabilities (unfortunately), it will look like\n\n properties/capabilities\u003dsoft_power:false","commit_id":"103540ae3af0d04999790c346e2e4d0ab20dd91b"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5789084aceb0daa3feed8e3fbe8929aee540300a","unresolved":false,"context_lines":[{"line_number":342,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":343,"context_line":"  sure the following:"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":" * has to set properties/capabilities\u003d\u0027{\"soft_power\": \"false\"}\u0027 if an"},{"line_number":346,"context_line":"   instance, user OS, is not capable of soft reboot and soft power"},{"line_number":347,"context_line":"   off, because the default is"},{"line_number":348,"context_line":"   properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bab6814e_b2f54eee","line":345,"in_reply_to":"bab6814e_ca19e023","updated":"2016-05-26 05:16:05.000000000","message":"I\u0027ll fix that.","commit_id":"103540ae3af0d04999790c346e2e4d0ab20dd91b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"919aae63c9bc54d06afa177a5d599d578053a885","unresolved":false,"context_lines":[{"line_number":345,"context_line":" * has to set properties/capabilities\u003d\u0027{\"soft_power\": \"false\"}\u0027 if an"},{"line_number":346,"context_line":"   instance, user OS, is not capable of soft reboot and soft power"},{"line_number":347,"context_line":"   off, because the default is"},{"line_number":348,"context_line":"   properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":" * has to set properties/capabilities\u003d\u0027{\"inject_nmi\": \"false\"}\u0027 if an"},{"line_number":351,"context_line":"   instance, user OS, is not capable of inject NMI, because the"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bab6814e_aa145ce8","line":348,"updated":"2016-05-23 13:56:09.000000000","message":"so, it\u0027s a capability. then you should not talk about REQUIRED_PROPERTIES above","commit_id":"103540ae3af0d04999790c346e2e4d0ab20dd91b"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5789084aceb0daa3feed8e3fbe8929aee540300a","unresolved":false,"context_lines":[{"line_number":345,"context_line":" * has to set properties/capabilities\u003d\u0027{\"soft_power\": \"false\"}\u0027 if an"},{"line_number":346,"context_line":"   instance, user OS, is not capable of soft reboot and soft power"},{"line_number":347,"context_line":"   off, because the default is"},{"line_number":348,"context_line":"   properties/capabilities\u003d\u0027{\"soft_power\": \"true\"}\u0027"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":" * has to set properties/capabilities\u003d\u0027{\"inject_nmi\": \"false\"}\u0027 if an"},{"line_number":351,"context_line":"   instance, user OS, is not capable of inject NMI, because the"}],"source_content_type":"text/x-rst","patch_set":26,"id":"bab6814e_72664652","line":348,"in_reply_to":"bab6814e_aa145ce8","updated":"2016-05-26 05:16:05.000000000","message":"Yes.","commit_id":"103540ae3af0d04999790c346e2e4d0ab20dd91b"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c3c3f0fb14cec2b4d0ac9e124ba5ccd7398f3b6b","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"   usage: openstack baremetal node power off [--hard | --soft] \u003cuuid\u003e"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"   usage: openstack baremetal node inject_nmi \u003cuuid\u003e"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"RPC API impact"},{"line_number":304,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9abb7d3a_9984f15d","line":301,"range":{"start_line":301,"start_character":35,"end_line":301,"end_character":45},"updated":"2016-06-03 10:56:03.000000000","message":"I\u0027d prefer inject-nmi :)","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5509c5d140851e17419218291ef8d769165f0116","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"   usage: openstack baremetal node power off [--hard | --soft] \u003cuuid\u003e"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"   usage: openstack baremetal node inject_nmi \u003cuuid\u003e"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"RPC API impact"},{"line_number":304,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":27,"id":"7aa08908_36e70ae6","line":301,"range":{"start_line":301,"start_character":35,"end_line":301,"end_character":45},"in_reply_to":"9abb7d3a_9984f15d","updated":"2016-06-06 02:24:16.000000000","message":"I\u0027ll fix that as well as L.288.","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c3c3f0fb14cec2b4d0ac9e124ba5ccd7398f3b6b","unresolved":false,"context_lines":[{"line_number":342,"context_line":"Other end user impact"},{"line_number":343,"context_line":"---------------------"},{"line_number":344,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":345,"context_line":"  sure the following:"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":" * has to set properties/capabilities\u003d\u0027soft_power:false\u0027 if an"},{"line_number":348,"context_line":"   instance, user OS, is not capable of soft reboot and soft power"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9abb7d3a_353eabda","line":345,"updated":"2016-06-03 10:56:03.000000000","message":"This is only for nova scheduler right? Or you\u0027re going to check capability eg in API when soft power off request comes in?","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5509c5d140851e17419218291ef8d769165f0116","unresolved":false,"context_lines":[{"line_number":342,"context_line":"Other end user impact"},{"line_number":343,"context_line":"---------------------"},{"line_number":344,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":345,"context_line":"  sure the following:"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":" * has to set properties/capabilities\u003d\u0027soft_power:false\u0027 if an"},{"line_number":348,"context_line":"   instance, user OS, is not capable of soft reboot and soft power"}],"source_content_type":"text/x-rst","patch_set":27,"id":"7aa08908_d16210ad","line":345,"in_reply_to":"9abb7d3a_353eabda","updated":"2016-06-06 02:24:16.000000000","message":"I\u0027ll remove the \u0027properties/capabilities\u0027. Please refer to L.345 about the reason .","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"03fa2bbdcd3fa74ec5c14f56c595f082bd9fa7bf","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Other end user impact"},{"line_number":343,"context_line":"---------------------"},{"line_number":344,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":345,"context_line":"  sure the following:"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":" * has to set properties/capabilities\u003d\u0027soft_power:false\u0027 if an"},{"line_number":348,"context_line":"   instance, user OS, is not capable of soft reboot and soft power"},{"line_number":349,"context_line":"   off, because the default is"},{"line_number":350,"context_line":"   properties/capabilities\u003d\u0027soft_power:true\u0027"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":" * has to set properties/capabilities\u003d\u0027inject_nmi:false\u0027 if an"},{"line_number":353,"context_line":"   instance, user OS, is not capable of inject NMI, because the"},{"line_number":354,"context_line":"   default is properties/capabilities\u003d\u0027inject_nmi:true\u0027"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Scalability impact"}],"source_content_type":"text/x-rst","patch_set":27,"id":"9abb7d3a_7faad2d3","line":354,"range":{"start_line":344,"start_character":0,"end_line":354,"end_character":55},"updated":"2016-06-03 11:25:20.000000000","message":"This seems weird to me, I understand that the instance image defines the capability with this feature, but that means that if one out of a set of images doesn\u0027t support soft power off, then every ironic node has to have soft_power:False, because it could land on any ironic node, and if that\u0027s the case then it may as well be a ironic.conf setting enabling and disabling it.\n\nMaybe we need to start setting/looking at image specific metadata.","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5509c5d140851e17419218291ef8d769165f0116","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Other end user impact"},{"line_number":343,"context_line":"---------------------"},{"line_number":344,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":345,"context_line":"  sure the following:"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":" * has to set properties/capabilities\u003d\u0027soft_power:false\u0027 if an"},{"line_number":348,"context_line":"   instance, user OS, is not capable of soft reboot and soft power"},{"line_number":349,"context_line":"   off, because the default is"},{"line_number":350,"context_line":"   properties/capabilities\u003d\u0027soft_power:true\u0027"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":" * has to set properties/capabilities\u003d\u0027inject_nmi:false\u0027 if an"},{"line_number":353,"context_line":"   instance, user OS, is not capable of inject NMI, because the"},{"line_number":354,"context_line":"   default is properties/capabilities\u003d\u0027inject_nmi:true\u0027"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"Scalability impact"}],"source_content_type":"text/x-rst","patch_set":27,"id":"7aa08908_11b938ea","line":354,"range":{"start_line":344,"start_character":0,"end_line":354,"end_character":55},"in_reply_to":"9abb7d3a_7faad2d3","updated":"2016-06-06 02:24:16.000000000","message":"I\u0027ll remove the both \u0027properties/capabilities\u0027 for \u0027soft_power\u0027 and \u0027inject_nmi\u0027.\nI pondered and concluded that \u0027properties/capabilities\u0027 is redundant since user gets to know that an instance doesn\u0027t support soft power or inject nmi by return code without setting the \u0027properties/capabilities\u0027 to false.\nTherefor \u0027properties/capabilities\u0027 is not necessary.","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c3c3f0fb14cec2b4d0ac9e124ba5ccd7398f3b6b","unresolved":false,"context_lines":[{"line_number":424,"context_line":""},{"line_number":425,"context_line":"Testing"},{"line_number":426,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":427,"context_line":"* Unit Tests."},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9abb7d3a_59b9e914","line":427,"updated":"2016-06-03 10:56:03.000000000","message":"This can be tested in gate too, at least reboot/power off","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5509c5d140851e17419218291ef8d769165f0116","unresolved":false,"context_lines":[{"line_number":424,"context_line":""},{"line_number":425,"context_line":"Testing"},{"line_number":426,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":427,"context_line":"* Unit Tests."},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":430,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"7aa08908_9646bebd","line":427,"in_reply_to":"9abb7d3a_59b9e914","updated":"2016-06-06 02:24:16.000000000","message":"I\u0027ll fix that.","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c3c3f0fb14cec2b4d0ac9e124ba5ccd7398f3b6b","unresolved":false,"context_lines":[{"line_number":442,"context_line":"Documentation Impact"},{"line_number":443,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":444,"context_line":"* The deployer doc needs to be updated."},{"line_number":445,"context_line":"  (CLI and REST API reference manuals are generated automatically"},{"line_number":446,"context_line":"  from source code)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"9abb7d3a_b9cf35b2","line":445,"range":{"start_line":445,"start_character":16,"end_line":445,"end_character":29},"updated":"2016-06-03 10:56:03.000000000","message":"Not really, you\u0027ll have to change nodes api-ref a bit.","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5509c5d140851e17419218291ef8d769165f0116","unresolved":false,"context_lines":[{"line_number":442,"context_line":"Documentation Impact"},{"line_number":443,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":444,"context_line":"* The deployer doc needs to be updated."},{"line_number":445,"context_line":"  (CLI and REST API reference manuals are generated automatically"},{"line_number":446,"context_line":"  from source code)"},{"line_number":447,"context_line":""},{"line_number":448,"context_line":""}],"source_content_type":"text/x-rst","patch_set":27,"id":"7aa08908_163ace36","line":445,"range":{"start_line":445,"start_character":16,"end_line":445,"end_character":29},"in_reply_to":"9abb7d3a_b9cf35b2","updated":"2016-06-06 02:24:16.000000000","message":"I\u0027ll fix that.","commit_id":"ad86cb93cf8e3ca96f8872218aa6a18ee158eca9"},{"author":{"_account_id":7080,"name":"Mathieu Mitchell","email":"mat128@gmail.com","username":"mat128"},"change_message_id":"aa696c7a492dde613a5f606736af42ad1fbff268","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    SOFT_REBOOT \u003d \u0027soft rebooting\u0027"},{"line_number":90,"context_line":"    SOFT_POWER_OFF \u003d \u0027soft power off\u0027"},{"line_number":91,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"2. add \"get_supported_power_states\" method and its default implementation"},{"line_number":94,"context_line":"   to the base PowerInterface class in ironic/drivers/base.py::"}],"source_content_type":"text/x-rst","patch_set":29,"id":"7aa08908_73c1212f","line":91,"updated":"2016-06-17 16:40:19.000000000","message":"I think NMI injection should not be part of the power driver. To me, NMI injection is similar to changing boot device. Management interface would be the best place for it.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    SOFT_REBOOT \u003d \u0027soft rebooting\u0027"},{"line_number":90,"context_line":"    SOFT_POWER_OFF \u003d \u0027soft power off\u0027"},{"line_number":91,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"2. add \"get_supported_power_states\" method and its default implementation"},{"line_number":94,"context_line":"   to the base PowerInterface class in ironic/drivers/base.py::"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_9361d707","line":91,"in_reply_to":"3aaa91ec_de1b0d7f","updated":"2016-06-27 06:13:08.000000000","message":"moved it into Management I/F as we agreed.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    SOFT_REBOOT \u003d \u0027soft rebooting\u0027"},{"line_number":90,"context_line":"    SOFT_POWER_OFF \u003d \u0027soft power off\u0027"},{"line_number":91,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"2. add \"get_supported_power_states\" method and its default implementation"},{"line_number":94,"context_line":"   to the base PowerInterface class in ironic/drivers/base.py::"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_de1b0d7f","line":91,"in_reply_to":"7aa08908_73c1212f","updated":"2016-06-22 16:28:00.000000000","message":"Even though both IPMI and RedFish put NMI on their power / reset interfaces, I agree that it does not fit Ironic\u0027s modelling of power state transitions, and will be better served on our Management interface.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":93,"context_line":"2. add \"get_supported_power_states\" method and its default implementation"},{"line_number":94,"context_line":"   to the base PowerInterface class in ironic/drivers/base.py::"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def get_supported_power_states(self, task):"},{"line_number":97,"context_line":"        \"\"\"Get a list of the supported power states."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        :param task: A TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_f974239d","line":96,"updated":"2016-06-22 16:28:00.000000000","message":"+1","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":130,"context_line":"   |SOFT_REBOOT      | POWER_OFF    | POWER_ON           | POWER_ON     |"},{"line_number":131,"context_line":"   |SOFT_POWER_OFF   | POWER_ON     | SOFT_POWER_OFF     | POWER_OFF    |"},{"line_number":132,"context_line":"   |SOFT_POWER_OFF   | POWER_OFF    | NONE               | POWER_OFF    |"},{"line_number":133,"context_line":"   |INJECT_NMI       | POWER_ON     | INJECT_NMI         | POWER_ON     |"},{"line_number":134,"context_line":"   |INJECT_NMI       | POWER_OFF    | NONE               | POWER_OFF    |"},{"line_number":135,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_f9e9c31b","line":133,"updated":"2016-06-22 16:28:00.000000000","message":"in no case does INJECT_NMI actually change the power state of a machine. There is no \"transition\" here.\n\nThis does not adhere to the model of state transitions used in our /v1/NODE/states/power API. However, it makes sense in the management API as a new request.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":130,"context_line":"   |SOFT_REBOOT      | POWER_OFF    | POWER_ON           | POWER_ON     |"},{"line_number":131,"context_line":"   |SOFT_POWER_OFF   | POWER_ON     | SOFT_POWER_OFF     | POWER_OFF    |"},{"line_number":132,"context_line":"   |SOFT_POWER_OFF   | POWER_OFF    | NONE               | POWER_OFF    |"},{"line_number":133,"context_line":"   |INJECT_NMI       | POWER_ON     | INJECT_NMI         | POWER_ON     |"},{"line_number":134,"context_line":"   |INJECT_NMI       | POWER_OFF    | NONE               | POWER_OFF    |"},{"line_number":135,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_5343ef6b","line":133,"in_reply_to":"3aaa91ec_f9e9c31b","updated":"2016-06-27 06:13:08.000000000","message":"removed due to changing to \"issue and forget\" in management I/F.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    In case that timeout or error occurred when the new_state is set"},{"line_number":141,"context_line":"    to either SOFT_REBOOT or SOFT_POWER_OFF, the end state becomes"},{"line_number":142,"context_line":"    ERROR for logging, and then is overridden by a result of fallback"},{"line_number":143,"context_line":"    hard POWER OFF execution."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    In case that error occurred when the new_state is set to INJECT_NMI,"},{"line_number":146,"context_line":"    the end state stays POWER_ON, but the error is logged."}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_d93a0798","line":143,"updated":"2016-06-22 16:28:00.000000000","message":"Some users may not want SOFT_OFF to fall back to a FORCE_OFF automatically.\n\nAlso, end state does not become error because ironic sync_power_state loop continues to check the hardware power state -- and assuming IPMI still works, will measure the current power state to be ON.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    In case that timeout or error occurred when the new_state is set"},{"line_number":141,"context_line":"    to either SOFT_REBOOT or SOFT_POWER_OFF, the end state becomes"},{"line_number":142,"context_line":"    ERROR for logging, and then is overridden by a result of fallback"},{"line_number":143,"context_line":"    hard POWER OFF execution."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    In case that error occurred when the new_state is set to INJECT_NMI,"},{"line_number":146,"context_line":"    the end state stays POWER_ON, but the error is logged."}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_295cf67b","line":143,"in_reply_to":"3aaa91ec_d93a0798","updated":"2016-06-27 06:13:08.000000000","message":"added an optional parameter \u0027force\u0027 into API and CLI.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0dcaf97405db7c6f6117857433c0d0ebbe0e6601","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    ERROR for logging, and then is overridden by a result of fallback"},{"line_number":143,"context_line":"    hard POWER OFF execution."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    In case that error occurred when the new_state is set to INJECT_NMI,"},{"line_number":146,"context_line":"    the end state stays POWER_ON, but the error is logged."},{"line_number":147,"context_line":"    Timeout never happens when the new_state is set to INJECT_NMI in"},{"line_number":148,"context_line":"    case of IPMIPower."}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_d83a0598","line":145,"range":{"start_line":145,"start_character":4,"end_line":145,"end_character":71},"updated":"2016-06-22 15:39:21.000000000","message":"how do you detect such error?","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":142,"context_line":"    ERROR for logging, and then is overridden by a result of fallback"},{"line_number":143,"context_line":"    hard POWER OFF execution."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    In case that error occurred when the new_state is set to INJECT_NMI,"},{"line_number":146,"context_line":"    the end state stays POWER_ON, but the error is logged."},{"line_number":147,"context_line":"    Timeout never happens when the new_state is set to INJECT_NMI in"},{"line_number":148,"context_line":"    case of IPMIPower."}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_93b39797","line":145,"range":{"start_line":145,"start_character":4,"end_line":145,"end_character":71},"in_reply_to":"3aaa91ec_d83a0598","updated":"2016-06-27 06:13:08.000000000","message":"removed due to changing to \"issue and forget\" in management I/F.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    In case that error occurred when the new_state is set to INJECT_NMI,"},{"line_number":146,"context_line":"    the end state stays POWER_ON, but the error is logged."},{"line_number":147,"context_line":"    Timeout never happens when the new_state is set to INJECT_NMI in"},{"line_number":148,"context_line":"    case of IPMIPower."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"   +-----------------+--------------+--------------------+--------------+"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_195c8fec","line":147,"updated":"2016-06-22 16:28:00.000000000","message":"A timeout does not make sense for INJECT_NMI because there is nothing to measure / monitor, and there is no transition.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    In case that error occurred when the new_state is set to INJECT_NMI,"},{"line_number":146,"context_line":"    the end state stays POWER_ON, but the error is logged."},{"line_number":147,"context_line":"    Timeout never happens when the new_state is set to INJECT_NMI in"},{"line_number":148,"context_line":"    case of IPMIPower."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"   +-----------------+--------------+--------------------+--------------+"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_53b5af7b","line":147,"in_reply_to":"3aaa91ec_195c8fec","updated":"2016-06-27 06:13:08.000000000","message":"removed due to changing to \"issue and forget\" in management I/F.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    #"},{"line_number":165,"context_line":"    # timeout (in seconds) of soft reboot and soft power off operation"},{"line_number":166,"context_line":"    # (integer value)"},{"line_number":167,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"4. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_d90847dc","line":167,"updated":"2016-06-22 16:28:00.000000000","message":"this ought to be overridable by the user who issues the soft_off request","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    #"},{"line_number":165,"context_line":"    # timeout (in seconds) of soft reboot and soft power off operation"},{"line_number":166,"context_line":"    # (integer value)"},{"line_number":167,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"4. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_c9761205","line":167,"in_reply_to":"3aaa91ec_d90847dc","updated":"2016-06-27 06:13:08.000000000","message":"Added an optional timeout parameter into API and CLI.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2fffd0a23ac7d6b4d89a6107a6ff30cb04f5d4cb","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,"},{"line_number":183,"context_line":"                states.SOFT_REBOOT, states.SOFT_POWER_OFF,"},{"line_number":184,"context_line":"                states.INJECT_NMI]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Alternatives"},{"line_number":188,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"7aa08908_db091133","line":185,"updated":"2016-06-17 15:49:36.000000000","message":"I for one am not familiar with NMI, but, it was clarified in this patch comments that it involves rebooting the machine [0]. Searching about it I can also conclude that that\u0027s the case indeed so, can we please add a node here stating that please?\n\n[0] https://wiki.smartos.org/pages/viewpage.action?pageId\u003d754743","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,"},{"line_number":183,"context_line":"                states.SOFT_REBOOT, states.SOFT_POWER_OFF,"},{"line_number":184,"context_line":"                states.INJECT_NMI]"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Alternatives"},{"line_number":188,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_f9b6e3da","line":185,"in_reply_to":"7aa08908_db091133","updated":"2016-06-22 16:28:00.000000000","message":"The system may or may not reboot, depending on $things","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"   The target parameter supports the following JSON data respectively."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"   {\"target\": \"soft rebooting\"}"},{"line_number":215,"context_line":"   {\"target\": \"soft power off\"}"},{"line_number":216,"context_line":"   {\"target\": \"inject nmi\"}"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_f904237f","line":214,"updated":"2016-06-22 16:28:00.000000000","message":"for consistency, I would prefer this to be \"soft reboot\" -- there is no need for the active verb form \"-ing\"","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"   The target parameter supports the following JSON data respectively."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"   {\"target\": \"soft rebooting\"}"},{"line_number":215,"context_line":"   {\"target\": \"soft power off\"}"},{"line_number":216,"context_line":"   {\"target\": \"inject nmi\"}"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_536dafca","line":214,"in_reply_to":"3aaa91ec_f904237f","updated":"2016-06-27 06:13:08.000000000","message":"done.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"   {\"target\": \"soft rebooting\"}"},{"line_number":215,"context_line":"   {\"target\": \"soft power off\"}"},{"line_number":216,"context_line":"   {\"target\": \"inject nmi\"}"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"* Add a new \"supported_power_states\" member to the return type Node"},{"line_number":219,"context_line":"  and NodeStates, and enhance the following APIs::"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_3936ab52","line":216,"updated":"2016-06-22 16:28:00.000000000","message":"\"inject nmi\" should be a management call","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"   {\"target\": \"soft rebooting\"}"},{"line_number":215,"context_line":"   {\"target\": \"soft power off\"}"},{"line_number":216,"context_line":"   {\"target\": \"inject nmi\"}"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"* Add a new \"supported_power_states\" member to the return type Node"},{"line_number":219,"context_line":"  and NodeStates, and enhance the following APIs::"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_936b97b6","line":216,"in_reply_to":"3aaa91ec_3936ab52","updated":"2016-06-27 06:13:08.000000000","message":"done.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0dcaf97405db7c6f6117857433c0d0ebbe0e6601","unresolved":false,"context_lines":[{"line_number":286,"context_line":"       \u0027on\u0027, \u0027off\u0027, \u0027reboot\u0027, \u0027soft-reboot\u0027, \u0027soft-off\u0027, inject-nmi\u0027"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"* Enhance OSC plugin \"openstack baremetal node\" so that the parameter"},{"line_number":289,"context_line":"  can accept \u0027reboot [--hard | --soft]\u0027, \u0027power off [--hard | --soft]\u0027"},{"line_number":290,"context_line":"  and \u0027inject_nmi\u0027. \u0027reboot --hard\u0027 and \u0027power off --hard\u0027 behave"},{"line_number":291,"context_line":"  same as \u0027reboot\u0027 and \u0027power off\u0027 respectively."},{"line_number":292,"context_line":"  This CLI is async. In order to get the latest status,"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_3884e9d2","line":289,"range":{"start_line":289,"start_character":22,"end_line":289,"end_character":28},"updated":"2016-06-22 15:39:21.000000000","message":"You don\u0027t need --hard really, it\u0027s not doing anything. Or do you plan to forbid reboot without --hard and --soft? It would break existing users.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"9c985fe57b1e9bdffe981ef28e416816d67885c7","unresolved":false,"context_lines":[{"line_number":286,"context_line":"       \u0027on\u0027, \u0027off\u0027, \u0027reboot\u0027, \u0027soft-reboot\u0027, \u0027soft-off\u0027, inject-nmi\u0027"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"* Enhance OSC plugin \"openstack baremetal node\" so that the parameter"},{"line_number":289,"context_line":"  can accept \u0027reboot [--hard | --soft]\u0027, \u0027power off [--hard | --soft]\u0027"},{"line_number":290,"context_line":"  and \u0027inject_nmi\u0027. \u0027reboot --hard\u0027 and \u0027power off --hard\u0027 behave"},{"line_number":291,"context_line":"  same as \u0027reboot\u0027 and \u0027power off\u0027 respectively."},{"line_number":292,"context_line":"  This CLI is async. In order to get the latest status,"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_99735f15","line":289,"range":{"start_line":289,"start_character":22,"end_line":289,"end_character":28},"in_reply_to":"3aaa91ec_3884e9d2","updated":"2016-06-22 16:28:00.000000000","message":"agreed.\n\nThis should be \"reboot [--soft]\" and \"power [on|off [--soft]]\"","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":286,"context_line":"       \u0027on\u0027, \u0027off\u0027, \u0027reboot\u0027, \u0027soft-reboot\u0027, \u0027soft-off\u0027, inject-nmi\u0027"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"* Enhance OSC plugin \"openstack baremetal node\" so that the parameter"},{"line_number":289,"context_line":"  can accept \u0027reboot [--hard | --soft]\u0027, \u0027power off [--hard | --soft]\u0027"},{"line_number":290,"context_line":"  and \u0027inject_nmi\u0027. \u0027reboot --hard\u0027 and \u0027power off --hard\u0027 behave"},{"line_number":291,"context_line":"  same as \u0027reboot\u0027 and \u0027power off\u0027 respectively."},{"line_number":292,"context_line":"  This CLI is async. In order to get the latest status,"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_13d32761","line":289,"range":{"start_line":289,"start_character":22,"end_line":289,"end_character":28},"in_reply_to":"3aaa91ec_99735f15","updated":"2016-06-27 06:13:08.000000000","message":"done.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0dcaf97405db7c6f6117857433c0d0ebbe0e6601","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"   usage: openstack baremetal node power off [--hard | --soft] \u003cuuid\u003e"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"   usage: openstack baremetal node inject-nmi \u003cuuid\u003e"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"RPC API impact"},{"line_number":302,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_98eebdb2","line":299,"range":{"start_line":299,"start_character":41,"end_line":299,"end_character":42},"updated":"2016-06-22 15:39:21.000000000","message":"dashes are not used in OSC commands","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"640937d439142e249aa3056a552f98e9f7df8aff","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"   usage: openstack baremetal node power off [--hard | --soft] \u003cuuid\u003e"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"   usage: openstack baremetal node inject-nmi \u003cuuid\u003e"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"RPC API impact"},{"line_number":302,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"3aaa91ec_33cc63ba","line":299,"range":{"start_line":299,"start_character":41,"end_line":299,"end_character":42},"in_reply_to":"3aaa91ec_98eebdb2","updated":"2016-06-27 06:13:08.000000000","message":"done.","commit_id":"9c9b65ee98a49cb8543315d3ecb55bbd1231f0d8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"56f93b5afc5d6e44b482182218916d4a8c18356a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":"There exists a problem in the current Abstract Interface which doesn\u0027t"},{"line_number":21,"context_line":"provide with soft power off and diagnostic interrupt (NMI [1])"},{"line_number":22,"context_line":"capabilities even though ipmitool [2] and most of BMCs support these"},{"line_number":23,"context_line":"capabilities."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_6d3d67c3","line":20,"updated":"2016-06-27 06:42:01.000000000","message":"not sure what you mean here, probably s/Abstract/driver/","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":"There exists a problem in the current Abstract Interface which doesn\u0027t"},{"line_number":21,"context_line":"provide with soft power off and diagnostic interrupt (NMI [1])"},{"line_number":22,"context_line":"capabilities even though ipmitool [2] and most of BMCs support these"},{"line_number":23,"context_line":"capabilities."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_a5dc5047","line":20,"in_reply_to":"3aaa91ec_6d3d67c3","updated":"2016-06-28 06:14:12.000000000","message":"I\u0027ll fix that s/Abstract Interface/driver interface/.\nI meant that \"Abstract Interface Class\".","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"8aa14ee3ae93d5bd60dc29c9c02228d0b4094372","unresolved":false,"context_lines":[{"line_number":84,"context_line":"As a reference implementation, this spec also proposes to implement"},{"line_number":85,"context_line":"the enhanced PowerInterface base class into the IPMIPower concrete"},{"line_number":86,"context_line":"class and the enhanced ManagementInterface base class into the"},{"line_number":87,"context_line":"IPMIManagement concrete class."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"1. add the following new power states to ironic.common.states::"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_bfa64dbe","line":87,"range":{"start_line":87,"start_character":15,"end_line":87,"end_character":23},"updated":"2016-06-27 09:54:12.000000000","message":"Not sure what is meant by \"concrete\" class?","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":84,"context_line":"As a reference implementation, this spec also proposes to implement"},{"line_number":85,"context_line":"the enhanced PowerInterface base class into the IPMIPower concrete"},{"line_number":86,"context_line":"class and the enhanced ManagementInterface base class into the"},{"line_number":87,"context_line":"IPMIManagement concrete class."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"1. add the following new power states to ironic.common.states::"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_65cf08b4","line":87,"range":{"start_line":87,"start_character":15,"end_line":87,"end_character":23},"in_reply_to":"3aaa91ec_bfa64dbe","updated":"2016-06-28 06:14:12.000000000","message":"\"concrete class\" is an implementation class of \"abstract base class\".\n\nWe can find the word in\nhttps://docs.python.org/2/library/abc.html","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"8aa14ee3ae93d5bd60dc29c9c02228d0b4094372","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @abc.abstractmethod"},{"line_number":114,"context_line":"    def set_power_state(self, task, power_state,"},{"line_number":115,"context_line":"                        soft_timeout\u003d-1, fall_back_hard\u003dFalse):"},{"line_number":116,"context_line":"        \"\"\"Set the power state of the task\u0027s node."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_317a9124","line":115,"updated":"2016-06-27 09:54:12.000000000","message":"I think I would prefer an parameter soft\u003dTrue/False, which can be passed in here instead of new states.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @abc.abstractmethod"},{"line_number":114,"context_line":"    def set_power_state(self, task, power_state,"},{"line_number":115,"context_line":"                        soft_timeout\u003d-1, fall_back_hard\u003dFalse):"},{"line_number":116,"context_line":"        \"\"\"Set the power state of the task\u0027s node."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_5c457e15","line":115,"in_reply_to":"3aaa91ec_317a9124","updated":"2016-06-28 06:14:12.000000000","message":"I\u0027ll withdraw to add the parameters.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e4dc35ea87751d31673a535b06d9181f7509629a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        :param power_state: Any power state from :mod:`ironic.common.states`."},{"line_number":120,"context_line":"        :param soft_timeout: ``positive integer`` overrides"},{"line_number":121,"context_line":"           ``soft_power_off_timeout`` in the Ironic configuration file."},{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_44f6808f","line":122,"range":{"start_line":122,"start_character":10,"end_line":122,"end_character":37},"updated":"2016-06-27 09:17:10.000000000","message":"Let\u0027s say you passed soft_timeout\u003d0 for no timeout but the node never actually gets to power off, now target_provision_state is set to SOFT_POWER_OFF and no requests are accepted by the API anymore. How to I abort/cancel that request?\n\nFor me, it sounds like we always need a timeout.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        :param power_state: Any power state from :mod:`ironic.common.states`."},{"line_number":120,"context_line":"        :param soft_timeout: ``positive integer`` overrides"},{"line_number":121,"context_line":"           ``soft_power_off_timeout`` in the Ironic configuration file."},{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_06dba71c","line":122,"range":{"start_line":122,"start_character":10,"end_line":122,"end_character":37},"in_reply_to":"3aaa91ec_44f6808f","updated":"2016-06-28 06:14:12.000000000","message":"Okay, I\u0027ll remove the 0 case.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"56f93b5afc5d6e44b482182218916d4a8c18356a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"           ``soft_power_off_timeout`` in the Ironic configuration file."},{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_4d386bd3","line":124,"updated":"2016-06-27 06:42:01.000000000","message":"This should be read from node.driver_info. I don\u0027t think we should extend the API just for these 2 specific cases.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e4dc35ea87751d31673a535b06d9181f7509629a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"           ``soft_power_off_timeout`` in the Ironic configuration file."},{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_a475a432","line":124,"in_reply_to":"3aaa91ec_4d386bd3","updated":"2016-06-27 09:17:10.000000000","message":"I think the idea here is to overwrite it for a specific request, if it\u0027s in driver_info the timeout will be there after the request is completed.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c666030bbd87506f56613afe1dd39d77ec795f9f","unresolved":false,"context_lines":[{"line_number":121,"context_line":"           ``soft_power_off_timeout`` in the Ironic configuration file."},{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_51d11d22","line":124,"in_reply_to":"3aaa91ec_516bddb6","updated":"2016-06-27 09:39:37.000000000","message":"clean-steps is a bad example, as it\u0027s mandatory for cleaning.\n\nas to config-drive.. yeah, it\u0027s kind of similar, but I still don\u0027t think these arguments are important enough to justify extending API for them. Especially the fallback one.\n\nIf we allow setting timeout here, it should affect all states then.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":121,"context_line":"           ``soft_power_off_timeout`` in the Ironic configuration file."},{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_46300f08","line":124,"in_reply_to":"3aaa91ec_51d11d22","updated":"2016-06-28 06:14:12.000000000","message":"Okay, I\u0027ll withdraw the method parameter change, and move the parameters into driver_info.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0f3c7801e69143f41e3b646f4e759f8ea67d94d3","unresolved":false,"context_lines":[{"line_number":121,"context_line":"           ``soft_power_off_timeout`` in the Ironic configuration file."},{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_516bddb6","line":124,"in_reply_to":"3aaa91ec_5fcda964","updated":"2016-06-27 09:36:09.000000000","message":"Right, I\u0027m indifferent. It seems that this parameter was requested by deva in the previous patch-set (L167).\n\nAbout other states not having any parameter I don\u0027t think it actually suits them, hard power off, on and reboot is all that is supported at the moment.\n\n...\n\nOn another note, setting provison state has 2 parameters in the API used for a specific state.\n\n* clean-steps: When invoking the manual cleaning, ironic node-set-provision-state \u003cuuid\u003e clean --clean-steps {...}\n\n* config-drive: When setting the node to active, ironic-node-set-provision-state \u003cuuid\u003e active --config-drive \u003cfile/string\u003e","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"01f98b5ef97eb22e43a36992bb4f66b45a4689fe","unresolved":false,"context_lines":[{"line_number":121,"context_line":"           ``soft_power_off_timeout`` in the Ironic configuration file."},{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_5fcda964","line":124,"in_reply_to":"3aaa91ec_a475a432","updated":"2016-06-27 09:25:01.000000000","message":"We don\u0027t it for many other parameters, I don\u0027t see point to special case this one. Especially since it\u0027s extending the generic interface with arguments for one specific power action.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e4dc35ea87751d31673a535b06d9181f7509629a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."},{"line_number":128,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":129,"context_line":"        \"\"\""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_a4764403","line":126,"range":{"start_line":125,"start_character":15,"end_line":126,"end_character":51},"updated":"2016-06-27 09:17:10.000000000","message":"In the case of soft_timeout\u003d0 is this option useless? If so, should we check for it?","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":122,"context_line":"           ``0`` indicates no timeout."},{"line_number":123,"context_line":"           ``negative integer`` indicates to use ``soft_power_off_timeout``"},{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."},{"line_number":128,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":129,"context_line":"        \"\"\""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_451c8c77","line":126,"range":{"start_line":125,"start_character":15,"end_line":126,"end_character":51},"in_reply_to":"3aaa91ec_a4764403","updated":"2016-06-28 06:14:12.000000000","message":"Yes, we should.\nBut I\u0027ll remove the \"soft_timeout\u003d0 case.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"56f93b5afc5d6e44b482182218916d4a8c18356a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."},{"line_number":128,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":129,"context_line":"        \"\"\""},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_ad33cff4","line":127,"updated":"2016-06-27 06:42:01.000000000","message":"ditto","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":124,"context_line":"           in the Ironic configuration file."},{"line_number":125,"context_line":"        :param fall_back_hard: ``True`` indicates to fall back hard power"},{"line_number":126,"context_line":"           operation if soft power operation failed."},{"line_number":127,"context_line":"           ``False`` indicates no fall back."},{"line_number":128,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":129,"context_line":"        \"\"\""},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_e50bf829","line":127,"in_reply_to":"3aaa91ec_ad33cff4","updated":"2016-06-28 06:14:12.000000000","message":"I\u0027ll update too.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"8aa14ee3ae93d5bd60dc29c9c02228d0b4094372","unresolved":false,"context_lines":[{"line_number":152,"context_line":"   |SOFT_REBOOT      | POWER_ON     | SOFT_POWER_OFF     | POWER_OFF[*]_|"},{"line_number":153,"context_line":"   |                 | POWER_OFF[*]_| POWER_ON           | POWER_ON     |"},{"line_number":154,"context_line":"   |SOFT_REBOOT      | POWER_OFF    | POWER_ON           | POWER_ON     |"},{"line_number":155,"context_line":"   |SOFT_POWER_OFF   | POWER_ON     | SOFT_POWER_OFF     | POWER_OFF    |"},{"line_number":156,"context_line":"   |SOFT_POWER_OFF   | POWER_OFF    | NONE               | POWER_OFF    |"},{"line_number":157,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_5f0f6936","line":155,"range":{"start_line":155,"start_character":23,"end_line":155,"end_character":69},"updated":"2016-06-27 09:54:12.000000000","message":"This interpretation of the state machine worries me:\n\ntarget_power_state isn\u0027t an action, its the expected final state after that action has happened, and in this case it should be POWER_OFF because that\u0027s the expected end state.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":152,"context_line":"   |SOFT_REBOOT      | POWER_ON     | SOFT_POWER_OFF     | POWER_OFF[*]_|"},{"line_number":153,"context_line":"   |                 | POWER_OFF[*]_| POWER_ON           | POWER_ON     |"},{"line_number":154,"context_line":"   |SOFT_REBOOT      | POWER_OFF    | POWER_ON           | POWER_ON     |"},{"line_number":155,"context_line":"   |SOFT_POWER_OFF   | POWER_ON     | SOFT_POWER_OFF     | POWER_OFF    |"},{"line_number":156,"context_line":"   |SOFT_POWER_OFF   | POWER_OFF    | NONE               | POWER_OFF    |"},{"line_number":157,"context_line":"   +-----------------+--------------+--------------------+--------------+"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_c11fc907","line":155,"range":{"start_line":155,"start_character":23,"end_line":155,"end_character":69},"in_reply_to":"3aaa91ec_5f0f6936","updated":"2016-06-28 06:14:12.000000000","message":"That\u0027s right, target_power_state isn\u0027t an action, but it\u0027s state.\n\nIt is necessary to keep track of transition state. Please look at L.295, output of ironic-node-show.\n\nI agree that the word \u0027target_power_state\u0027 is not precise, but it is used in ironic source code, and the definition in this spec is at L.146.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e4dc35ea87751d31673a535b06d9181f7509629a","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    #"},{"line_number":185,"context_line":"    # timeout (in seconds) of soft reboot and soft power off operation"},{"line_number":186,"context_line":"    # (integer value)"},{"line_number":187,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"5. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_e4332c12","line":187,"updated":"2016-06-27 09:17:10.000000000","message":"nit: following the same thought of L122, let\u0027s make sure this value is always positive (\u003e 0)","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    #"},{"line_number":185,"context_line":"    # timeout (in seconds) of soft reboot and soft power off operation"},{"line_number":186,"context_line":"    # (integer value)"},{"line_number":187,"context_line":"    soft_power_off_timeout \u003d 600"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"5. add \"get_supported_power_states\" method and implementation in"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_0dbaaac0","line":187,"in_reply_to":"3aaa91ec_e4332c12","updated":"2016-06-28 06:14:12.000000000","message":"I\u0027ll update that.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"8aa14ee3ae93d5bd60dc29c9c02228d0b4094372","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,"},{"line_number":203,"context_line":"                states.SOFT_REBOOT, states.SOFT_POWER_OFF]"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"6. add \"inject_nmi\" abstrace method to the base ManagementInterface"},{"line_number":206,"context_line":"   class in ironic/drivers/base.py::"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_7166d9bb","line":205,"range":{"start_line":205,"start_character":20,"end_line":205,"end_character":28},"updated":"2016-06-27 09:54:12.000000000","message":"abstract","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,"},{"line_number":203,"context_line":"                states.SOFT_REBOOT, states.SOFT_POWER_OFF]"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"6. add \"inject_nmi\" abstrace method to the base ManagementInterface"},{"line_number":206,"context_line":"   class in ironic/drivers/base.py::"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_8dc69a47","line":205,"range":{"start_line":205,"start_character":20,"end_line":205,"end_character":28},"in_reply_to":"3aaa91ec_7166d9bb","updated":"2016-06-28 06:14:12.000000000","message":"I\u0027ll fix that.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"8aa14ee3ae93d5bd60dc29c9c02228d0b4094372","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        :returns: None"},{"line_number":214,"context_line":"        \"\"\""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"7. add \"inject_nmi\" concrete method implementation in IPMIManagement"},{"line_number":217,"context_line":"   class."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_1125d55a","line":216,"range":{"start_line":216,"start_character":20,"end_line":216,"end_character":28},"updated":"2016-06-27 09:54:12.000000000","message":"Same as L87","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        :returns: None"},{"line_number":214,"context_line":"        \"\"\""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"7. add \"inject_nmi\" concrete method implementation in IPMIManagement"},{"line_number":217,"context_line":"   class."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_ed059e14","line":216,"range":{"start_line":216,"start_character":20,"end_line":216,"end_character":28},"in_reply_to":"3aaa91ec_1125d55a","updated":"2016-06-28 06:14:12.000000000","message":"please find the reply at L87.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"8aa14ee3ae93d5bd60dc29c9c02228d0b4094372","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"     {\"target\": \"soft power off\","},{"line_number":259,"context_line":"      \"soft_power_off_timeout\": 600,"},{"line_number":260,"context_line":"      \"fall_back_hard: false}"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"* Add a new \"supported_power_states\" member to the return type Node"},{"line_number":263,"context_line":"  and NodeStates, and enhance the following APIs::"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_b1304157","line":260,"updated":"2016-06-27 09:54:12.000000000","message":"Based on my comments on L115\n\n     {\"target\": \"rebooting\",\n      \"soft_power_off_timeout\": 900,\n      \"soft\": True,\n      \"fall_back_hard: true}\n\n     {\"target\": \"power off\",\n      \"soft_power_off_timeout\": 900,\n      \"soft\": True,\n      \"fall_back_hard: true}","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"     {\"target\": \"soft power off\","},{"line_number":259,"context_line":"      \"soft_power_off_timeout\": 600,"},{"line_number":260,"context_line":"      \"fall_back_hard: false}"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"* Add a new \"supported_power_states\" member to the return type Node"},{"line_number":263,"context_line":"  and NodeStates, and enhance the following APIs::"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_dc45eeb3","line":260,"in_reply_to":"3aaa91ec_b1304157","updated":"2016-06-28 06:14:12.000000000","message":"As I replied at L.155, \"target\" means target transition state.\nIf I developed this code from scratch, I\u0027ll design the code Sam suggested. But I think the current proposed way is more consistent with the current Ironic implementation.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"8aa14ee3ae93d5bd60dc29c9c02228d0b4094372","unresolved":false,"context_lines":[{"line_number":318,"context_line":"  call \"ironic node-show-states\" and check the returned value.::"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"   usage: ironic node-set-power-state \u003cnode\u003e \u003cpower-state\u003e"},{"line_number":321,"context_line":"          [--soft-timeout \u003ctimeout\u003e [--fall-back-hard]]"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   Power a node on/off/reboot, power graceful off/reboot to a node."},{"line_number":324,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_714899b3","line":321,"updated":"2016-06-27 09:54:12.000000000","message":"Based on comment on L115 I think we should have a --soft option that we pass into this here.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":318,"context_line":"  call \"ironic node-show-states\" and check the returned value.::"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"   usage: ironic node-set-power-state \u003cnode\u003e \u003cpower-state\u003e"},{"line_number":321,"context_line":"          [--soft-timeout \u003ctimeout\u003e [--fall-back-hard]]"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"   Power a node on/off/reboot, power graceful off/reboot to a node."},{"line_number":324,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_4173d9b4","line":321,"in_reply_to":"3aaa91ec_714899b3","updated":"2016-06-28 06:14:12.000000000","message":"Okay, I\u0027ll fix that.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e4dc35ea87751d31673a535b06d9181f7509629a","unresolved":false,"context_lines":[{"line_number":357,"context_line":"       Name or UUID of the node."},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"* Enhance OSC plugin \"openstack baremetal node\" so that the parameter"},{"line_number":360,"context_line":"  can accept \u0027reboot [--soft [timeout] [--force]]\u0027, \u0027power [on|off"},{"line_number":361,"context_line":"  [--soft [timeout] [--force]]]\u0027 and \u0027inject_nmi\u0027."},{"line_number":362,"context_line":"  This CLI is async. In order to get the latest status,"},{"line_number":363,"context_line":"  call \"openstack baremetal node show\" and check the returned value.::"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_bf792d95","line":360,"range":{"start_line":360,"start_character":40,"end_line":360,"end_character":47},"updated":"2016-06-27 09:17:10.000000000","message":"Mostly nit: --force \u003d\u003d fallback hard!? It sounds a bit misleading to have a --soft --force and get a hard power state no?\n\nCan\u0027t we just name this parameter the same as the ironic cli (--fall-back-hard) ?","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e2a9211f0fdba954b92a12078f96c79bca1f35ae","unresolved":false,"context_lines":[{"line_number":357,"context_line":"       Name or UUID of the node."},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"* Enhance OSC plugin \"openstack baremetal node\" so that the parameter"},{"line_number":360,"context_line":"  can accept \u0027reboot [--soft [timeout] [--force]]\u0027, \u0027power [on|off"},{"line_number":361,"context_line":"  [--soft [timeout] [--force]]]\u0027 and \u0027inject_nmi\u0027."},{"line_number":362,"context_line":"  This CLI is async. In order to get the latest status,"},{"line_number":363,"context_line":"  call \"openstack baremetal node show\" and check the returned value.::"}],"source_content_type":"text/x-rst","patch_set":30,"id":"3aaa91ec_f033b1f4","line":360,"range":{"start_line":360,"start_character":40,"end_line":360,"end_character":47},"in_reply_to":"3aaa91ec_bf792d95","updated":"2016-06-28 06:14:12.000000000","message":"Okay, I\u0027ll update it to --fall-back-hard.","commit_id":"39cfc16b103656a33de30706f3c23c2e838ca181"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f3b45056f473a74554bf49052b0adb54d6b50b20","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  - ``driver_info/fall_back_hard`` property to be, when soft power"},{"line_number":135,"context_line":"    operation failed, ``True`` indicates to fall back hard power"},{"line_number":136,"context_line":"    operation, or ``False`` indicates no fall back."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"4. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":139,"context_line":"   new states can be accepted as \"power_state\" parameter."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3aaa91ec_3769a48c","line":136,"updated":"2016-06-28 09:02:36.000000000","message":"I dislike it being at driver_info (we should have continued the discussion in the previous patch-set). For me it causes inconsistencies; user requests soft power off in one node and get a hard power off, requests soft power off on another node and node do not tries to fallback to hard power off... Very inconsistent behavior on a per-node basis.\n\nPlus, things like timeout for soft power off varies depending on the image used right? Or even the usage of the tenant (number of FS to unmounted, processes running etc...). I prefer the previous suggestion, or even, if you prefere leave it to be configured only at ironic.conf for now because at least all nodes will behave consistently.\n\nLet\u0027s discuss it here in this patch-set","commit_id":"d601b357fbbf30507eebd217abe43216d35f93a6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"08bc0117fef53a693fd552c109e703d2d0022017","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  - ``driver_info/fall_back_hard`` property to be, when soft power"},{"line_number":135,"context_line":"    operation failed, ``True`` indicates to fall back hard power"},{"line_number":136,"context_line":"    operation, or ``False`` indicates no fall back."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"4. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":139,"context_line":"   new states can be accepted as \"power_state\" parameter."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3aaa91ec_f7227c00","line":136,"in_reply_to":"3aaa91ec_3769a48c","updated":"2016-06-28 09:05:54.000000000","message":"Extending the API is not an option for me, unless the parameter makes sense for all power states. I\u0027d like us to start thinking how these parameters are going to be used.","commit_id":"d601b357fbbf30507eebd217abe43216d35f93a6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"89f44e5d6777ffb81155a201103a8532793f02f1","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  - ``driver_info/fall_back_hard`` property to be, when soft power"},{"line_number":135,"context_line":"    operation failed, ``True`` indicates to fall back hard power"},{"line_number":136,"context_line":"    operation, or ``False`` indicates no fall back."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"4. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":139,"context_line":"   new states can be accepted as \"power_state\" parameter."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3aaa91ec_15a7d20b","line":136,"in_reply_to":"3aaa91ec_ba7eadac","updated":"2016-06-30 02:02:18.000000000","message":"Dmitry, Lucas,\n\nOh, I didn\u0027t notice Dmitry\u0027s comment, I agree the following way too. Thanks!\n\ndmitry\u003e We\u0027ve a had a quick discussion on the IRC about these parameters with Lucas. It seems hard to accommodate all the opinions, here\u0027s what we ended up with: \n 1. For timeout, lets have a new API (not driver_info) parameter \"timeout\" applied to all power actions, not only soft power off; \n 2. For fallback, lets not have fallback to hard power off for now. It\u0027s pretty easy to issue a hard power off request after all.","commit_id":"d601b357fbbf30507eebd217abe43216d35f93a6"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"aeb2fd2defdbe1aca99d84921ce97453ab129333","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  - ``driver_info/fall_back_hard`` property to be, when soft power"},{"line_number":135,"context_line":"    operation failed, ``True`` indicates to fall back hard power"},{"line_number":136,"context_line":"    operation, or ``False`` indicates no fall back."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"4. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":139,"context_line":"   new states can be accepted as \"power_state\" parameter."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3aaa91ec_ba7eadac","line":136,"in_reply_to":"3aaa91ec_f7227c00","updated":"2016-06-30 01:53:15.000000000","message":"Dmitry, Lucas,\n\ndmitry\u003e This should be read from node.driver_info. I don\u0027t think we should extend the API just for these 2 specific cases.\n\nlucas\u003e I think the idea here is to overwrite it for a specific request, if it\u0027s in driver_info the timeout will be there after the request is completed.\n\ndmitry\u003e We don\u0027t it for many other parameters, I don\u0027t see point to special case this one. Especially since it\u0027s extending the generic interface with arguments for one specific power action.\n\nlucas\u003e Right, I\u0027m indifferent. It seems that this parameter was requested by deva in the previous patch-set (L167).\nAbout other states not having any parameter I don\u0027t think it actually suits them, hard power off, on and reboot is all that is supported at the moment.\n\nBy reading \"Right, I\u0027m indifferent.\", I misunderstood that Lucas agreed with Dmitry, sorry.\n\nI personally prefer to add the optional parameters to the abstract method, because we don\u0027t need to update driver_info for each API request.\n\nIf we use driver_info, there is one confusing usecase I mostly concerned about:\n\n step 1) User A manually updates \"driver_info/soft_timeout\" to 1200 to Node B by Ironic CLI.\n step 2) Program C which User A doesn\u0027t know issues Ironic API with \"soft_power_off_timeout: 300\" to Node B.\n step 3) User A manually issues Ironic CLI without timeout parameter, User A assumes the timeout is 1200, but actually the timeout is 300.\n\nWDYT?\n\nBest regards,\nNaohiro","commit_id":"d601b357fbbf30507eebd217abe43216d35f93a6"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"6aeecb5b0a5a8bc943a518f0c75b3c03553faed8","unresolved":false,"context_lines":[{"line_number":303,"context_line":"Client (CLI) impact"},{"line_number":304,"context_line":"-------------------"},{"line_number":305,"context_line":"* Enhance Ironic CLI \"ironic node-set-power-state\" so that"},{"line_number":306,"context_line":"  \u003cpower-state\u003e parameter can accept \u0027soft-reboot\u0027 and \u0027soft-off\u0027."},{"line_number":307,"context_line":"  This CLI is async. In order to get the latest status,"},{"line_number":308,"context_line":"  call \"ironic node-show-states\" and check the returned value.::"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-rst","patch_set":32,"id":"3aaa91ec_bb9a1060","line":306,"range":{"start_line":306,"start_character":2,"end_line":306,"end_character":64},"updated":"2016-06-30 15:03:51.000000000","message":"It says here that the the power-state parameter should accept \u0027soft-reboot\u0027 and \u0027soft-off\u0027, but they\u0027re not included in the arguments for that parameter below. If it can accept those do we still need the --soft parameter?","commit_id":"3371e3d2fc0d0a5a758e52f961b5a23ed8e3dfdf"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"9a2b482d220fed51df8e73767191d629bb0f06a1","unresolved":false,"context_lines":[{"line_number":303,"context_line":"Client (CLI) impact"},{"line_number":304,"context_line":"-------------------"},{"line_number":305,"context_line":"* Enhance Ironic CLI \"ironic node-set-power-state\" so that"},{"line_number":306,"context_line":"  \u003cpower-state\u003e parameter can accept \u0027soft-reboot\u0027 and \u0027soft-off\u0027."},{"line_number":307,"context_line":"  This CLI is async. In order to get the latest status,"},{"line_number":308,"context_line":"  call \"ironic node-show-states\" and check the returned value.::"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-rst","patch_set":32,"id":"3aaa91ec_7ea07d90","line":306,"range":{"start_line":306,"start_character":2,"end_line":306,"end_character":64},"in_reply_to":"3aaa91ec_bb9a1060","updated":"2016-07-01 01:17:31.000000000","message":"Doug,\n\nThanks for the kind review, I\u0027ll fix that.\n\nBy the way, I really appreciate that you kindly verified the following implementations even though in \"Patch in Merge Conflict\" state.\n\nGeneric power I/F for soft power off and inject nmi\nhttps://review.openstack.org/#/c/216730/\n\nIpmitool power driver for soft power off and inject nmi\nhttps://review.openstack.org/#/c/216738/\n\nBest regards,\nNaohiro","commit_id":"3371e3d2fc0d0a5a758e52f961b5a23ed8e3dfdf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"0d69998cbecbb4e1cf5202557effb77f42e0fca7","unresolved":false,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":"* Enhance OSC plugin \"openstack baremetal node\" so that the parameter"},{"line_number":351,"context_line":"  can accept \u0027reboot [--soft] [--timeout \u003ctimeout\u003e]\u0027, \u0027power [on|off"},{"line_number":352,"context_line":"  [--soft] [--timeout \u003ctimeout\u003e]\u0027 and \u0027inject_nmi\u0027."},{"line_number":353,"context_line":"  This CLI is async. In order to get the latest status,"},{"line_number":354,"context_line":"  call \"openstack baremetal node show\" and check the returned value.::"},{"line_number":355,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"fad55976_7eadf987","line":352,"updated":"2016-07-15 15:23:32.000000000","message":"This should be \u0027inject nmi\u0027, I think. OSC likes its CLI to look like english words.\n\nThis can be done in a follow-up patch.","commit_id":"ea3a8e414d5a91e4f4ca0719c6db9a4e7c5e1fe2"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"1606ec7730e128d1c1c6f3d7742ceb3191d64be5","unresolved":false,"context_lines":[{"line_number":385,"context_line":"Therefor Ironic Nova driver needs to be update to unify the behavior"},{"line_number":386,"context_line":"between virtual machine instance and bare-metal instance."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"This problem is reported as a bug [6]. How to fix this problem is"},{"line_number":389,"context_line":"specified in nova blueprint [10] and spec [11]."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"The default behavior change of \"nova reboot\" command is made by"},{"line_number":392,"context_line":"following the standard deprecation policy [12]. How to deprecate nova"}],"source_content_type":"text/x-rst","patch_set":33,"id":"1aa78d24_5f6a1fb4","line":389,"range":{"start_line":388,"start_character":39,"end_line":389,"end_character":47},"updated":"2016-07-06 12:35:34.000000000","message":"Hi, Naohiro,\nLGTM.\nAnd thanks for your great work.\nI\u0027ll update these patches once this spec is landed.","commit_id":"ea3a8e414d5a91e4f4ca0719c6db9a4e7c5e1fe2"}],"specs/liberty/enhance-power-interface-for-soft-reboot-and-nmi.rst":[{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"88d3b7b1e29e2cbc751dc47827345473dfedec6e","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"               Initiate a soft-shutdown of OS via ACPI. This can be"},{"line_number":40,"context_line":"               done in a number of ways, commonly by simulating an"},{"line_number":41,"context_line":"               overtemperture or by simulating a power button press."},{"line_number":42,"context_line":"               It is necessary for there to be Operating System"},{"line_number":43,"context_line":"               support"},{"line_number":44,"context_line":"               for ACPI and some sort of daemon watching for events"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_880ab01e","line":41,"updated":"2015-05-31 13:33:59.000000000","message":"s/overtemperture/overtemperature/","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f9bed04fa091a25b6d0406dec4e2217d0b23cfb3","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"               Initiate a soft-shutdown of OS via ACPI. This can be"},{"line_number":40,"context_line":"               done in a number of ways, commonly by simulating an"},{"line_number":41,"context_line":"               overtemperture or by simulating a power button press."},{"line_number":42,"context_line":"               It is necessary for there to be Operating System"},{"line_number":43,"context_line":"               support"},{"line_number":44,"context_line":"               for ACPI and some sort of daemon watching for events"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5afe65bd_d2bf75a8","line":41,"in_reply_to":"7a016987_880ab01e","updated":"2015-06-04 14:19:00.000000000","message":"You found a typo in the Linux man page! great job :)\n\nI\u0027ll fix that.","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"6ab450443e57876644a7e0a8fce45744765c9955","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":85,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":86,"context_line":"        \"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Alternatives"},{"line_number":90,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_ef6edcfe","line":87,"updated":"2015-05-29 22:02:05.000000000","message":"what errors will be raised for drivers that do not support these functions?","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f9bed04fa091a25b6d0406dec4e2217d0b23cfb3","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":85,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":86,"context_line":"        \"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Alternatives"},{"line_number":90,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5afe65bd_4db3e4e9","line":87,"in_reply_to":"7a016987_ef6edcfe","updated":"2015-06-04 14:19:00.000000000","message":"I\u0027ll add the default implementation:\n\nraise NotImplementedError()","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"6ab450443e57876644a7e0a8fce45744765c9955","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"REST API impact"},{"line_number":102,"context_line":"---------------"},{"line_number":103,"context_line":"None"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Client (CLI) impact"},{"line_number":106,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_8fef68b0","line":103,"updated":"2015-05-29 22:02:05.000000000","message":"I believe these changes will require api changes to support.","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"88d3b7b1e29e2cbc751dc47827345473dfedec6e","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"REST API impact"},{"line_number":102,"context_line":"---------------"},{"line_number":103,"context_line":"None"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Client (CLI) impact"},{"line_number":106,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_e8280488","line":103,"in_reply_to":"7a016987_8fef68b0","updated":"2015-05-31 13:33:59.000000000","message":"and please describe it in the \"Proposed change\" section.","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f9bed04fa091a25b6d0406dec4e2217d0b23cfb3","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"REST API impact"},{"line_number":102,"context_line":"---------------"},{"line_number":103,"context_line":"None"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Client (CLI) impact"},{"line_number":106,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5afe65bd_03ca5d4e","line":103,"in_reply_to":"7a016987_e8280488","updated":"2015-06-04 14:19:00.000000000","message":"I\u0027ll add that.","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"6ab450443e57876644a7e0a8fce45744765c9955","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"* Implement the enhanced PowerInterface class into concrete classes such as"},{"line_number":197,"context_line":"  IPMIPower, and each vendor\u0027s power concrete classes."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Dependencies"},{"line_number":200,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":201,"context_line":"* ipmitool [2]"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_efa01c44","line":198,"updated":"2015-05-29 22:02:05.000000000","message":"what drivers are you planing on implementing this change on?","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f9bed04fa091a25b6d0406dec4e2217d0b23cfb3","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"* Implement the enhanced PowerInterface class into concrete classes such as"},{"line_number":197,"context_line":"  IPMIPower, and each vendor\u0027s power concrete classes."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Dependencies"},{"line_number":200,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":201,"context_line":"* ipmitool [2]"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5afe65bd_43fcd4b7","line":198,"in_reply_to":"7a016987_efa01c44","updated":"2015-06-04 14:19:00.000000000","message":"I implement ipmitool driver as a bottom line.\n\nAfter that I\u0027ll iRMC driver as a vendor.\nOther vendor\u0027s driver implementations are up to each vendor.","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"6ab450443e57876644a7e0a8fce45744765c9955","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Dependencies"},{"line_number":200,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":201,"context_line":"* ipmitool [2]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Testing"},{"line_number":204,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_1254bffb","line":201,"updated":"2015-05-29 22:02:05.000000000","message":"it seems that virsh and virtual box can also support NMI injection can other drivers? might be worth checking.","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f9bed04fa091a25b6d0406dec4e2217d0b23cfb3","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Dependencies"},{"line_number":200,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":201,"context_line":"* ipmitool [2]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Testing"},{"line_number":204,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5afe65bd_63b7d0f5","line":201,"in_reply_to":"7a016987_1254bffb","updated":"2015-06-04 14:19:00.000000000","message":"Fujitsu submitted a bp/spec to implement NMI injection for other hypervisors in Nova.\n\nhttps://review.openstack.org/#/c/187176/","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"6ab450443e57876644a7e0a8fce45744765c9955","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Documentation Impact"},{"line_number":214,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":215,"context_line":"* None"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"References"},{"line_number":218,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a016987_2f1e3470","line":215,"updated":"2015-05-29 22:02:05.000000000","message":"usage of new functions will need to be documented.","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f9bed04fa091a25b6d0406dec4e2217d0b23cfb3","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"Documentation Impact"},{"line_number":214,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":215,"context_line":"* None"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"References"},{"line_number":218,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5afe65bd_0896fa92","line":215,"in_reply_to":"7a016987_2f1e3470","updated":"2015-06-04 14:19:00.000000000","message":"As far as I checked Ironic cli[1] and RESTful Web API (v1)[2], it seems those are generated from source code.\n\nDid I miss any doc?\n\n[1]http://docs.openstack.org/cli-reference/content/ironicclient_commands.html\n\n[2]http://docs.openstack.org/developer/ironic/webapi/v1.html","commit_id":"7d5d128b079bdfa2d25be31ef75ace99cae72a25"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"42683502b928a820eeee019ca21aaa8a79e3d7a9","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":"The following enhancement in class PowerInterface is necessary."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"1. add optional keyword parameter \"soft\"::"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_f0fd3e6f","line":51,"updated":"2015-06-05 09:44:33.000000000","message":"Somethings I would like to know more in this sections are:\n\n* What is required to the soft power off to work? It requires some coordination with the guest OS running on the hardware right? ACPI enabled, some service (daemon) running\n\n* What\u0027s the use case and benefit for allowing operators (users in general) to be able to send a diagnostic interrupt (NMI) ?","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f7cac8200415c4a33a2b1d262ba82f2c3b6eab0e","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":"The following enhancement in class PowerInterface is necessary."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"1. add optional keyword parameter \"soft\"::"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_c0df6d67","line":51,"in_reply_to":"3afb71cf_f0fd3e6f","updated":"2015-06-10 08:39:33.000000000","message":"I\u0027lll add those explanation.\nBrief answers are follows:\n\n\u003e What is required to the soft power off to work?\n\nacpid is required for ubuntu and readhat.\n\n\u003e What\u0027s the use case and benefit for allowing operators\n\nThis is useful for clould provider support staff to ask a cloud customer to take nmi dump if the customer is having os related problem.","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"42683502b928a820eeee019ca21aaa8a79e3d7a9","unresolved":false,"context_lines":[{"line_number":53,"context_line":"1. add optional keyword parameter \"soft\"::"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @abc.abstractmethod"},{"line_number":56,"context_line":"    def set_power_state(self, task, power_state, soft\u003dFalse):"},{"line_number":57,"context_line":"        \"\"\"Set the power state of the task\u0027s node."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_5052d2de","line":56,"updated":"2015-06-05 09:44:33.000000000","message":"soft only works for shutdown correct? So maybe it should be yet another power state?\n\nI mean, it doesn\u0027t makse sense to have:\n\n driver.power.set_power_state(task, states.POWER_ON, soft\u003dTrue)\n\nBut it could be something like:\n\n driver.power.set_power_state(task, states.POWER_OFF_SOFT)","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f7cac8200415c4a33a2b1d262ba82f2c3b6eab0e","unresolved":false,"context_lines":[{"line_number":53,"context_line":"1. add optional keyword parameter \"soft\"::"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    @abc.abstractmethod"},{"line_number":56,"context_line":"    def set_power_state(self, task, power_state, soft\u003dFalse):"},{"line_number":57,"context_line":"        \"\"\"Set the power state of the task\u0027s node."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_27f09bfd","line":56,"in_reply_to":"3afb71cf_5052d2de","updated":"2015-06-10 08:39:33.000000000","message":"I feel that \"POWER_OFF\" is state, but \"POWER_OFF_SOFT\" is NOT.\n\nSOFT or HARD could be an attribute of the transition from POWER_ON state to POWER_OFF state.\n\nwhat do you think?","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"42683502b928a820eeee019ca21aaa8a79e3d7a9","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":74,"context_line":"        :param soft: True: soft reboot, False: hard reboot (default)"},{"line_number":75,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":76,"context_line":"        \"\"\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"2. add inject_nmi method::"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_70494ed0","line":76,"updated":"2015-06-05 09:44:33.000000000","message":"If software reboot requires coordination with the the guest OS running on the hardware. We will need to add some checks to verify if the node have been powered off before we power it on again to make the reboot. How will that look like?","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f7cac8200415c4a33a2b1d262ba82f2c3b6eab0e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":74,"context_line":"        :param soft: True: soft reboot, False: hard reboot (default)"},{"line_number":75,"context_line":"        :raises: MissingParameterValue if a required parameter is missing."},{"line_number":76,"context_line":"        \"\"\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"2. add inject_nmi method::"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_20c1a154","line":76,"in_reply_to":"3afb71cf_70494ed0","updated":"2015-06-10 08:39:33.000000000","message":"I need to check. But I thought that those code is already there because it could happen in case of hard reboot case too.\n\nDoesn\u0027t currnet reboot code check if the node have been powered off before turning power on?","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"42683502b928a820eeee019ca21aaa8a79e3d7a9","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"2. add inject_nmi method::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @abc.abstractmethod"},{"line_number":81,"context_line":"    def inject_nmi(self, task):"},{"line_number":82,"context_line":"        \"\"\"Inject a diagnostic interrupt (NMI) to the task\u0027s node."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_b0e7c611","line":80,"updated":"2015-06-05 09:44:33.000000000","message":"We shouldn\u0027t make it an abstract method otherwise all the drivers will have to implement this interface","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f7cac8200415c4a33a2b1d262ba82f2c3b6eab0e","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"2. add inject_nmi method::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @abc.abstractmethod"},{"line_number":81,"context_line":"    def inject_nmi(self, task):"},{"line_number":82,"context_line":"        \"\"\"Inject a diagnostic interrupt (NMI) to the task\u0027s node."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_0707df18","line":80,"in_reply_to":"3afb71cf_b0e7c611","updated":"2015-06-10 08:39:33.000000000","message":"I\u0027ll remove it.","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"42683502b928a820eeee019ca21aaa8a79e3d7a9","unresolved":false,"context_lines":[{"line_number":78,"context_line":"2. add inject_nmi method::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @abc.abstractmethod"},{"line_number":81,"context_line":"    def inject_nmi(self, task):"},{"line_number":82,"context_line":"        \"\"\"Inject a diagnostic interrupt (NMI) to the task\u0027s node."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_30d3d63a","line":81,"updated":"2015-06-05 09:44:33.000000000","message":"I think this is the same as comment on L56, it seems to be a power_state\n\n driver.power.set_power_state(task, states.POWER_DIAG)","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f7cac8200415c4a33a2b1d262ba82f2c3b6eab0e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"2. add inject_nmi method::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @abc.abstractmethod"},{"line_number":81,"context_line":"    def inject_nmi(self, task):"},{"line_number":82,"context_line":"        \"\"\"Inject a diagnostic interrupt (NMI) to the task\u0027s node."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_80c61566","line":81,"in_reply_to":"3afb71cf_30d3d63a","updated":"2015-06-10 08:39:33.000000000","message":"same as above.","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"42683502b928a820eeee019ca21aaa8a79e3d7a9","unresolved":false,"context_lines":[{"line_number":108,"context_line":"     Parameters:"},{"line_number":109,"context_line":"       * node_ident (uuid_or_name) – the UUID or logical name of a node."},{"line_number":110,"context_line":"       * target (unicode) – The desired power state of the node."},{"line_number":111,"context_line":"       * soft (boolean) - Optional. Perform a soft \u0027off\u0027 or \u0027reboot\u0027."},{"line_number":112,"context_line":"     Raises:"},{"line_number":113,"context_line":"       ClientSideError (HTTP 409) if a power operation is already in progress."},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_30bcf66b","line":111,"updated":"2015-06-05 09:44:33.000000000","message":"Similar to comment on L56,\n\nMaybe soft should be just another target state instead of a flag? Since it doesn\u0027t work for power on?\n\nWe could have:\n\n PUT {\"target\": \"power off soft\"} v1/nodes/\u003cident\u003e/states/power\n\n PUT {\"target\": \"reboot soft\"} v1/nodes/\u003cident\u003e/states/power","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f7cac8200415c4a33a2b1d262ba82f2c3b6eab0e","unresolved":false,"context_lines":[{"line_number":108,"context_line":"     Parameters:"},{"line_number":109,"context_line":"       * node_ident (uuid_or_name) – the UUID or logical name of a node."},{"line_number":110,"context_line":"       * target (unicode) – The desired power state of the node."},{"line_number":111,"context_line":"       * soft (boolean) - Optional. Perform a soft \u0027off\u0027 or \u0027reboot\u0027."},{"line_number":112,"context_line":"     Raises:"},{"line_number":113,"context_line":"       ClientSideError (HTTP 409) if a power operation is already in progress."},{"line_number":114,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_e0d389d3","line":111,"in_reply_to":"3afb71cf_30bcf66b","updated":"2015-06-10 08:39:33.000000000","message":"I\u0027d like to discuss if \"soff\" is suitable to be a state or not first.","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"42683502b928a820eeee019ca21aaa8a79e3d7a9","unresolved":false,"context_lines":[{"line_number":117,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* Add a new API"},{"line_number":120,"context_line":"  PUT /v1/nodes/(node_ident)/inject-nmi::"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    Inject NMI to the node."},{"line_number":123,"context_line":"     Parameters:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_b06d8634","line":120,"updated":"2015-06-05 09:44:33.000000000","message":"Is this a asynchrouous operation ?\n\n...\n\nMaybe the comment on L56 apply to this too, what if this was just another target power state?\n\n PUT {\"target\": \"power diag\"} v1/nodes/\u003cident\u003e/states/power","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f7cac8200415c4a33a2b1d262ba82f2c3b6eab0e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* Add a new API"},{"line_number":120,"context_line":"  PUT /v1/nodes/(node_ident)/inject-nmi::"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    Inject NMI to the node."},{"line_number":123,"context_line":"     Parameters:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_00aea580","line":120,"in_reply_to":"3afb71cf_b06d8634","updated":"2015-06-10 08:39:33.000000000","message":"Yes, async.\n\nI\u0027ll change the URL to the one you adviced, thanks!","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"11a6d7b39a4f92aa7ac48c6b6c01ef55da283fe1","unresolved":false,"context_lines":[{"line_number":235,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":238,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":239,"context_line":"None"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_40d8c153","line":238,"updated":"2015-06-05 11:17:19.000000000","message":"Proposed change breaks out of tree drivers.","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"aac7c1f3b6ef641e43a4c514580589fc44a4d5bb","unresolved":false,"context_lines":[{"line_number":235,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":238,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":239,"context_line":"None"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_a38111fd","line":238,"in_reply_to":"3afb71cf_1c672dea","updated":"2015-06-10 12:56:39.000000000","message":"\u003e 1) There is out of tree driver with a custom power interface. \n\nWhat is \"out of tree driver\"?\nIs that source code managed in a repsitory which exits outside of Ironic git repository?\n\n\u003e 2) It implements set_power_state() method w/o new \u0027soft\u0027 parameter. \n\nset_power_state() will have the third optional parameter \u0027soft\u003dFalse\u0027 as mentioned at L.56, so exsisting two parameter call set_power_state(task, power_state) will not be affected.\nIt keeps compatibility, right?\n\n\n\u003e 3) User does a request via API for soft power off action. \n\nYes, such code doesn\u0027t exist right now, so why is it compatible issue?\n\n\n\u003e 4) User get an error: \"TypeError: set_power_state() got an unexpected keyword argument \u0027soft\u0027\"\n\nReally?\nHere is a small test code, such error didn\u0027t happen.\n\n naohirot@ubuntu:~$ python\n Python 2.7.6 (default, Mar 22 2014, 22:59:56)\n [GCC 4.8.2] on linux2\n Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n \u003e\u003e\u003e def xyz(a,b,soft\u003d1):\n ...     return a+b+soft\n ...\n \u003e\u003e\u003e xyz(3,2)\n 6\n \u003e\u003e\u003e xyz(3,2,soft\u003d10)\n 15\n \u003e\u003e\u003e","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"f7cac8200415c4a33a2b1d262ba82f2c3b6eab0e","unresolved":false,"context_lines":[{"line_number":235,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":238,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":239,"context_line":"None"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_a06c7135","line":238,"in_reply_to":"3afb71cf_40d8c153","updated":"2015-06-10 08:39:33.000000000","message":"I thought that this proposal is backwards compatible.\n\nIt doesn\u0027t harm existing code, doesn\u0027t it?\n\nIt would be helpful if I had concrete case.\nIs SNMP driver the case you are thinking?","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"c4e555cb2c45b12b5545e74a785e6e18e742b85a","unresolved":false,"context_lines":[{"line_number":235,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":238,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":239,"context_line":"None"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_604f6b34","line":238,"in_reply_to":"3afb71cf_4e6dddca","updated":"2015-06-11 02:51:12.000000000","message":"Yuriy,\n\nIt seems to me that you are talking about forward cpatibility problem.\n\nAssume we implemented this spec in Liberty:\n\nIf Kilo Ironic client or Kilo based \"out of tree driver\" cannot communicate with Liberty Ironic conductor, that is backward incompatible problem.\n\nIf Liberty Ironic client or Liberty based \"out of tree driver\" cannot communicate with Kilo Ironic conductor, that is forward incompatible problem. \n\nSo my understanding is that certainly forward incompatibe problem exists as you pointed out, however we don\u0027t assure the forward compatibility, but backward compatibility.\n\nTherefore \"Upgrades and Backwards Compatibility\" section is \"None\".\n\nDo you agree?\n\nThanks.\n\nNaohiro","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5b5bbd6bafc7809776ccf3d607cc8e8ef91c68c2","unresolved":false,"context_lines":[{"line_number":235,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":238,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":239,"context_line":"None"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_1c672dea","line":238,"in_reply_to":"3afb71cf_a06c7135","updated":"2015-06-10 09:15:49.000000000","message":"1) There is out of tree driver with a custom power interface. 2) It implements set_power_state() method w/o new \u0027soft\u0027 parameter. 3) User does a request via API for soft power off action. 4) User get an error: \"TypeError: set_power_state() got an unexpected keyword argument \u0027soft\u0027\"","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"40b1e230c7772231fbaa134796ec398fed65beb7","unresolved":false,"context_lines":[{"line_number":235,"context_line":"* Each vendor plans Third Party CI Tests if implemented."},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":238,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":239,"context_line":"None"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3afb71cf_4e6dddca","line":238,"in_reply_to":"3afb71cf_a38111fd","updated":"2015-06-10 15:11:14.000000000","message":"\u003eIs that source code managed in a repsitory which exits outside of Ironic git repository?\n\nYes, because our drivers is pluggable.\n\n\u003eset_power_state(task, power_state) will not be affected. It keeps compatibility, right? ...such code doesn\u0027t exist\n\nYes, but there is no reason for adding this feature if users/deploy drivers can not utilize it.\n\nYour test should be changed\n\n \u003e\u003e\u003e def xyz(a,b): \u003c- this like an implementation in out of tree driver\n ...     return a+b\n ... \n \u003e\u003e\u003e xyz(3,2,soft\u003d10) \u003c- conductor must add extra parameter for new feature\n Traceback (most recent call last):\n   File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n TypeError: xyz() got an unexpected keyword argument \u0027soft\u0027\n \u003e\u003e\u003e","commit_id":"5cc0cb92eee01930a3331e3314a6fa86e3962814"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"35af942bf0ec7ad0036c4a1dc3002f01da5b1a14","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               support for ACPI and some sort of daemon watching for"},{"line_number":47,"context_line":"               events for this soft power to work."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"From customer\u0027s point of view, both admin and end user, the lack of"},{"line_number":50,"context_line":"the soft reboot and diagnostic interrupt (NMI [1]) lead the following"},{"line_number":51,"context_line":"inconvenience."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_847ef4ac","line":49,"updated":"2015-06-14 10:46:49.000000000","message":"When deployed in a cloud, Ironic\u0027s REST API should not be exposed to \"end user\"","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"71f5fa1a8cbe1ddfc6a6f7e43d5829ca7da37111","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               support for ACPI and some sort of daemon watching for"},{"line_number":47,"context_line":"               events for this soft power to work."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"From customer\u0027s point of view, both admin and end user, the lack of"},{"line_number":50,"context_line":"the soft reboot and diagnostic interrupt (NMI [1]) lead the following"},{"line_number":51,"context_line":"inconvenience."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_cac14c30","line":49,"in_reply_to":"fa32b979_847ef4ac","updated":"2015-06-15 13:37:01.000000000","message":"Okay, I understood. I\u0027ll clarify that.\n\nHere is short answer:\n\nEnd user calls nova cli or api which calls Ironic api.\nThis part is covered by\n\n [4] https://review.openstack.org/#/c/187176/\n\nas describe at L.268.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"35af942bf0ec7ad0036c4a1dc3002f01da5b1a14","unresolved":false,"context_lines":[{"line_number":72,"context_line":"this spec proposes to enhancement the PowerInterface base class as"},{"line_number":73,"context_line":"below, and implement the enhanced PowerInterface into the IPMIPower"},{"line_number":74,"context_line":"concrete class to allow customer to do the soft reboot and diagnostic"},{"line_number":75,"context_line":"interrupt (NMI [1]) through Ironic CLI and REST API with the drivers,"},{"line_number":76,"context_line":"\u0027pxe_ipmitool\u0027 and \u0027agent_ipmitool\u0027."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"1. add optional keyword parameter \"soft\"::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_244a8884","line":75,"updated":"2015-06-14 10:46:49.000000000","message":"Nope - again, Ironic\u0027s REST API is not exposed to end user / customer. Only Nova\u0027s API should be exposed.\n\nThat being said, Nova does support \"soft off\" for some drivers, and support could be added for Ironic.\n\nAlso, NMI support has been proposed for Nova, so it could be hooked up to this capability in Ironic as well:\nhttps://blueprints.launchpad.net/nova/+spec/inject-nmi","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"71f5fa1a8cbe1ddfc6a6f7e43d5829ca7da37111","unresolved":false,"context_lines":[{"line_number":72,"context_line":"this spec proposes to enhancement the PowerInterface base class as"},{"line_number":73,"context_line":"below, and implement the enhanced PowerInterface into the IPMIPower"},{"line_number":74,"context_line":"concrete class to allow customer to do the soft reboot and diagnostic"},{"line_number":75,"context_line":"interrupt (NMI [1]) through Ironic CLI and REST API with the drivers,"},{"line_number":76,"context_line":"\u0027pxe_ipmitool\u0027 and \u0027agent_ipmitool\u0027."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"1. add optional keyword parameter \"soft\"::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_2fab2776","line":75,"in_reply_to":"fa32b979_244a8884","updated":"2015-06-15 13:37:01.000000000","message":"I\u0027ll work with  https://blueprints.launchpad.net/nova/+spec/inject-nmi as describe at L.268.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"35af942bf0ec7ad0036c4a1dc3002f01da5b1a14","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        \"\"\"Set the power state of the task\u0027s node."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        The third parameter \"soft\u003dTrue\" should be allowed only if"},{"line_number":85,"context_line":"        instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":86,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_444f8c92","line":85,"updated":"2015-06-14 10:46:49.000000000","message":"This isn\u0027t an instance property, it\u0027s a physical characteristic of the node (and the driver). Do you mean to put this on node.properties/capabilities?\n\nAnd even then, such a field may or may not be set by operator, even if both the driver and hardware support it.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"85d9ab6538e65dbe9f5eaf76937c9b6ba88712a5","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        \"\"\"Set the power state of the task\u0027s node."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        The third parameter \"soft\u003dTrue\" should be allowed only if"},{"line_number":85,"context_line":"        instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":86,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_a85871fb","line":85,"in_reply_to":"fa32b979_0f918399","updated":"2015-06-16 01:55:45.000000000","message":"It may be an instance property, but it\u0027s also a node property. Some hardware does not allow the BMC to pass this through to the operating system.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"71f5fa1a8cbe1ddfc6a6f7e43d5829ca7da37111","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        \"\"\"Set the power state of the task\u0027s node."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        The third parameter \"soft\u003dTrue\" should be allowed only if"},{"line_number":85,"context_line":"        instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":86,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_0f918399","line":85,"in_reply_to":"fa32b979_444f8c92","updated":"2015-06-15 13:37:01.000000000","message":"I thought it is an instance property, because acpid has to be running in the instance in case of Linux even if hardware supported acpi.\n\nIn case of Windows, the situation is same.\n\nPlease look at \"\tDependencies\" section for details.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"85d9ab6538e65dbe9f5eaf76937c9b6ba88712a5","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"     Raises:"},{"line_number":150,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":151,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":154,"context_line":"  states power API."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_6821094d","line":151,"updated":"2015-06-16 01:55:45.000000000","message":"What happens for hardware that doesn\u0027t allow soft power off through the BMC, whether due to software or hardware failure?","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0a6a518d4ccba96f72289a58a16c59fbbc88c5f0","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"     Raises:"},{"line_number":150,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":151,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":154,"context_line":"  states power API."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_e3497a61","line":151,"in_reply_to":"fa32b979_6821094d","updated":"2015-06-17 08:01:52.000000000","message":"This is async call, so the call itself returns normally in such case.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"85d9ab6538e65dbe9f5eaf76937c9b6ba88712a5","unresolved":false,"context_lines":[{"line_number":158,"context_line":"     Parameters:"},{"line_number":159,"context_line":"       * node_ident (uuid_or_name) – the UUID or logical name of a node."},{"line_number":160,"context_line":"       * target (unicode) – The desired power state of the"},{"line_number":161,"context_line":"         node. \"power diag\" indicates injecting NMI."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Client (CLI) impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_281b011d","line":161,"updated":"2015-06-16 01:55:45.000000000","message":"What happens for hardware that doesn\u0027t allow power diag through the BMC, whether due to software or hardware failure?","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0a6a518d4ccba96f72289a58a16c59fbbc88c5f0","unresolved":false,"context_lines":[{"line_number":158,"context_line":"     Parameters:"},{"line_number":159,"context_line":"       * node_ident (uuid_or_name) – the UUID or logical name of a node."},{"line_number":160,"context_line":"       * target (unicode) – The desired power state of the"},{"line_number":161,"context_line":"         node. \"power diag\" indicates injecting NMI."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Client (CLI) impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_0347be4b","line":161,"in_reply_to":"fa32b979_281b011d","updated":"2015-06-17 08:01:52.000000000","message":"This is async call, so the call itself returns normally in such case.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0a6a518d4ccba96f72289a58a16c59fbbc88c5f0","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Other end user impact"},{"line_number":217,"context_line":"---------------------"},{"line_number":218,"context_line":"* End user has to make sure the followings:"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":" * set instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_a384d25d","line":218,"updated":"2015-06-17 08:01:52.000000000","message":"I\u0027ll change the above line as below:\n\n* End user who has admin privilege such as tenant admin has to make sure the following:","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"35af942bf0ec7ad0036c4a1dc3002f01da5b1a14","unresolved":false,"context_lines":[{"line_number":217,"context_line":"---------------------"},{"line_number":218,"context_line":"* End user has to make sure the followings:"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":" * set instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":" * deploy an ACPI [5] controllable instance to the node, or enable the"},{"line_number":223,"context_line":"   ACPI [5] after the deploy. How to make the instance ACPI [5]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_e443406b","line":220,"updated":"2015-06-14 10:46:49.000000000","message":"OK, I see you call this out here -- but I don\u0027t understand the reasoning.\n\nIf both hardware and driver support \"soft\" off/reboot, is there a case where the operator would want to disable it? If so, is that desirable on a per-instance basis, or should the setting be node-specific and persist across instances?","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0a6a518d4ccba96f72289a58a16c59fbbc88c5f0","unresolved":false,"context_lines":[{"line_number":217,"context_line":"---------------------"},{"line_number":218,"context_line":"* End user has to make sure the followings:"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":" * set instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":" * deploy an ACPI [5] controllable instance to the node, or enable the"},{"line_number":223,"context_line":"   ACPI [5] after the deploy. How to make the instance ACPI [5]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_e053b0e0","line":220,"in_reply_to":"fa32b979_88e32d05","updated":"2015-06-17 08:01:52.000000000","message":"I think admin can set instance_info, but not end user.\nI\u0027ll change the line 218. please look at L.218.\n\nDeployer is not admin, but cloud provider in this document.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"71f5fa1a8cbe1ddfc6a6f7e43d5829ca7da37111","unresolved":false,"context_lines":[{"line_number":217,"context_line":"---------------------"},{"line_number":218,"context_line":"* End user has to make sure the followings:"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":" * set instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":" * deploy an ACPI [5] controllable instance to the node, or enable the"},{"line_number":223,"context_line":"   ACPI [5] after the deploy. How to make the instance ACPI [5]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_ecc1cde5","line":220,"in_reply_to":"fa32b979_e443406b","updated":"2015-06-15 13:37:01.000000000","message":"As I answered above, I believe that \"soft\" off/reboot is an instance property.\n\nBecause there is an instance which is not configured to react to ACPI.\n\nWhat do you think?","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"85d9ab6538e65dbe9f5eaf76937c9b6ba88712a5","unresolved":false,"context_lines":[{"line_number":217,"context_line":"---------------------"},{"line_number":218,"context_line":"* End user has to make sure the followings:"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":" * set instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":" * deploy an ACPI [5] controllable instance to the node, or enable the"},{"line_number":223,"context_line":"   ACPI [5] after the deploy. How to make the instance ACPI [5]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_88e32d05","line":220,"in_reply_to":"fa32b979_ecc1cde5","updated":"2015-06-16 01:55:45.000000000","message":"To answer Devananda\u0027s question, yes, there is a case where the operator wants to disable this. We do it in our environment today.\n\nAlso, end user cannot directly set instance_info; how will this work?","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"85d9ab6538e65dbe9f5eaf76937c9b6ba88712a5","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* Implement the enhanced PowerInterface class into the concrete class"},{"line_number":265,"context_line":"  IPMIPower."},{"line_number":266,"context_line":"  Implementing vendor\u0027s power concrete class is up to each vendor."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"* Coordinate the work with Nova NMI support \"Inject NMI to an"},{"line_number":269,"context_line":"  instance\" [4] if necessary."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_c8b7f5f3","line":266,"updated":"2015-06-16 01:55:45.000000000","message":"Are you going to add this to the ipmitool driver, at least? That driver is supported by the Ironic team rather than a vendor.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"0a6a518d4ccba96f72289a58a16c59fbbc88c5f0","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* Implement the enhanced PowerInterface class into the concrete class"},{"line_number":265,"context_line":"  IPMIPower."},{"line_number":266,"context_line":"  Implementing vendor\u0027s power concrete class is up to each vendor."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"* Coordinate the work with Nova NMI support \"Inject NMI to an"},{"line_number":269,"context_line":"  instance\" [4] if necessary."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa32b979_e3017ab0","line":266,"in_reply_to":"fa32b979_c8b7f5f3","updated":"2015-06-17 08:01:52.000000000","message":"Yes, I\u0027ll implement IPMIPower concrete driver.\nI mention it at the line 76.","commit_id":"90ae0fcef8f7b58d94e11e243529ff1973245440"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e4614a21dbc69c6c75b66ac0f16d30a9704e01d0","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Alternatives"},{"line_number":130,"context_line":"------------"},{"line_number":131,"context_line":"None"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Data model impact"},{"line_number":134,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_a83edb25","line":131,"updated":"2015-06-17 14:55:22.000000000","message":"An alternative is to just keep set_power_state() as it is, add some new power states to https://github.com/openstack/ironic/blob/master/ironic/common/states.py#L162-L169\n\n  SOFT_POWER_OFF \u003d \"soft power off\"\n  SOFT_REBOOT \u003d \"soft reboot\"\n  NMI \u003d \"nmi\"\n\nAdd a new method just like out get_supported_power_states() (like get_supported_boot_devices()). In order not to break out of the tree drivers, just have the BasePowerInterface.get_supported_power_states() return\n\n  return [states.POWEROFF, states.POWERON, states.REBOOT]\n\nThat would minimize a whole lot of API changes. Just adding some minimal checks in the RPC API to check if soft poweroff, soft reboot and nmi are supported or not would suffice.","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"256fd2024456538d9cfd53095073f8f8d833621d","unresolved":false,"context_lines":[{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Alternatives"},{"line_number":130,"context_line":"------------"},{"line_number":131,"context_line":"None"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Data model impact"},{"line_number":134,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_8b348ade","line":131,"in_reply_to":"fa32b979_a83edb25","updated":"2015-06-22 14:42:21.000000000","message":"Thank you for the advice. I think Ramakrishnan\u0027s advice is basically same as Lucas\u0027s. Both suggested to deal with \"Soft\" as state.\n\nhttps://review.openstack.org/#/c/186700/2/specs/liberty/enhance-power-interface-for-soft-reboot-and-nmi.rst\n\nI\u0027ll take your advice if dealing with \"Soft\" as state fits better into the current implementation.","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"80f64436f9d9c365b07f90a541e2aa9aea60ab04","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"     Raises:"},{"line_number":155,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":156,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":159,"context_line":"  states power API. This API is async."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_b76abeeb","line":156,"updated":"2015-06-17 14:13:01.000000000","message":"Following up on the last patchset: How is the user notified of an async failure?\n\nAlso, what is the normal status code for this endpoint in case of no error?","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"233e676c36a5bea304e5eb151a8737c63dba2fa7","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"     Raises:"},{"line_number":155,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":156,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":159,"context_line":"  states power API. This API is async."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_1d79e493","line":156,"in_reply_to":"ba3cc151_d55ef675","updated":"2015-06-29 07:41:46.000000000","message":"Jim, Haomeng,\n\nIn case of async call in HTTP, client has to make another call or polling to get the latest status.\nI think we can use \"GET /v1/nodes/(node_ident)/states\" for this purpose. Node\u0027s last_error field could have some information if soft power operation failed.\nBut the last_error field would be overwritten by another error as Haomeng pointed out in IRC. This is a common issue in Ironic, I believe.\n\nAs for \u0027SOFT_REBOOTING\u0027 status, I pondered after having discussed with Haomeng in IRC.\nI\u0027ll update the spec so that `ironic.common.states` has \nPOWER_ON, POWER_OFF,REBOOT, POWER_OFF_SOFT, REBOOT_SOFT, INJECT_NMI.\n\nWhen we set the state to REBOOT_SOFT in case of the current state POWER_ON, the state transition will be POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER__ON.\nTherefor POWER_OFF_SOFT has same semantic as \u0027SOFT_REBOOTING\u0027, so \u0027SOFT_REBOOTING\u0027 would be be substituted by  POWER_OFF_SOFT to avoid states explosion.\n\nI\u0027ll submit updated patch shortly, please advice me if you have some time to review it.\n\nThanks.\n\nNaohiro.","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"78f5ef9dcab03979f1dbfd98799c43b2555ce982","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"     Raises:"},{"line_number":155,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":156,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":159,"context_line":"  states power API. This API is async."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_e6d6abc2","line":156,"in_reply_to":"fa32b979_10fe696b","updated":"2015-06-22 15:13:52.000000000","message":"\u003e I think user has to issue another api to get power status.\n\nThis doesn\u0027t actually tell if the last command succeeded or not, right? It will only give the current power state.\n\nFor \"soft power off\", \"get power state\" will return POWER_ON for some indeterminate amount of time, and eventually (in success case) POWER_OFF. When the \"get power state\" call returns POWER_ON, how does the user know if the machine is taking a long time or if the call errored?\n\nFor \"soft reboot\", \"get power state\" will *always* return POWER_ON, I think. This makes it impossible to tell if the call succeeded or not. The only way to check is to log on and look at uptime.","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"256fd2024456538d9cfd53095073f8f8d833621d","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"     Raises:"},{"line_number":155,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":156,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":159,"context_line":"  states power API. This API is async."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_10fe696b","line":156,"in_reply_to":"fa32b979_b76abeeb","updated":"2015-06-22 14:42:21.000000000","message":"\u003e Following up on the last patchset: How is the user notified of an async failure?\n\nI think user has to issue another api to get power status.\n\n\u003e Also, what is the normal status code for this endpoint in case of no error?\n\nI\u0027ll add http status code 202.","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"72046228d2759d09c53b2b9bb2c17581c17f0265","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"     Raises:"},{"line_number":155,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":156,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":159,"context_line":"  states power API. This API is async."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_d55ef675","line":156,"in_reply_to":"fa32b979_e6d6abc2","updated":"2015-06-29 06:02:49.000000000","message":"So can we add more pending status, such as \u0027SOFT_REBOOTING\u0027 status as indicatior for user?","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"78f5ef9dcab03979f1dbfd98799c43b2555ce982","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":159,"context_line":"  states power API. This API is async."},{"line_number":160,"context_line":"  PUT /v1/nodes/\u003cident\u003e/states/power::"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    Inject a diagnostic interrupt (NMI) to the node."},{"line_number":163,"context_line":"     Parameters:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_eb73d3b2","line":160,"updated":"2015-06-22 15:13:52.000000000","message":"Same question - how does the user know if this call succeeded or failed without logging on to the server?","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"233e676c36a5bea304e5eb151a8737c63dba2fa7","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":159,"context_line":"  states power API. This API is async."},{"line_number":160,"context_line":"  PUT /v1/nodes/\u003cident\u003e/states/power::"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    Inject a diagnostic interrupt (NMI) to the node."},{"line_number":163,"context_line":"     Parameters:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_9df654d6","line":160,"in_reply_to":"ba3cc151_f5c69a15","updated":"2015-06-29 07:41:46.000000000","message":"please look at the above reply.","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"72046228d2759d09c53b2b9bb2c17581c17f0265","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"* Add a new candidate \"power diag\" to the target parameter of the"},{"line_number":159,"context_line":"  states power API. This API is async."},{"line_number":160,"context_line":"  PUT /v1/nodes/\u003cident\u003e/states/power::"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    Inject a diagnostic interrupt (NMI) to the node."},{"line_number":163,"context_line":"     Parameters:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_f5c69a15","line":160,"in_reply_to":"fa32b979_eb73d3b2","updated":"2015-06-29 06:02:49.000000000","message":"As previous comments, can we add more power status for user to show the pending status?","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"80f64436f9d9c365b07f90a541e2aa9aea60ab04","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"* End user who doesn\u0027t have admin privilege such as tenant user"},{"line_number":233,"context_line":"  requires Nova CLI or Nova API which implemented Nova\u0027s blue print"},{"line_number":234,"context_line":"  [3]."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Scalability impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_17c36aee","line":234,"updated":"2015-06-17 14:13:01.000000000","message":"So if I understand this correctly... If I am a user without admin privileges, the workflow is:\n\n1) Boot an instance\n2) Possibly install a thing\n3) Ask an admin / my provider / someone else to enable this feature for me\n4) Use the feature.\n\n(3) isn\u0027t scalable at all, nor is a good user experience.\n\nI think the right thing to do is have this option on the node - this designates that the hardware is capable of this, assuming the instance is running the correct software. Then it is up to the user to make sure the correct software is installed before using the feature.","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"256fd2024456538d9cfd53095073f8f8d833621d","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"* End user who doesn\u0027t have admin privilege such as tenant user"},{"line_number":233,"context_line":"  requires Nova CLI or Nova API which implemented Nova\u0027s blue print"},{"line_number":234,"context_line":"  [3]."},{"line_number":235,"context_line":""},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Scalability impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa32b979_30712da9","line":234,"in_reply_to":"fa32b979_17c36aee","updated":"2015-06-22 14:42:21.000000000","message":"Okay, I\u0027ll divide non admin privileged end user case into the following two cases:\n\n1) Ironic Standalone mode\n    workflow Jim suggested\n\n2) Ironic with Nova\n    Nova CLI or Nova API as I described","commit_id":"14b017c0eeef8d1ca76a3984aa889185cab9261e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"56256660682de13d082bda64c87cdb5c5aa2db1d","unresolved":false,"context_lines":[{"line_number":251,"context_line":" * In case of Ironic standalone, ask end user who has admin privilege"},{"line_number":252,"context_line":"   such as tenant admin to enable this features."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":" * In case of Ironic with, use Nova CLI or Nova API which implemented"},{"line_number":255,"context_line":"   Nova\u0027s blue print [3], or ask end user who has admin privilege such"},{"line_number":256,"context_line":"   as tenant admin to enable this features."},{"line_number":257,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba3cc151_f65e9d75","line":254,"updated":"2015-06-29 09:23:14.000000000","message":"Wrong: In case of Ironic with,\n\nCorrect: In case of Ironic with Nova,","commit_id":"8c7462edf0a63eb417909033b582695edac5f029"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"d4c007cb7b57788be95caa12f2dadcae3f02ae7e","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":"There exits a problem in the current PowerInterface base class which"},{"line_number":20,"context_line":"doesn\u0027t provide with soft reboot and diagnostic interrupt (NMI [1])"},{"line_number":21,"context_line":"capabilities even if ipmitool [2] and most of BMCs support."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_62b6993f","line":19,"updated":"2015-07-28 19:42:14.000000000","message":"nit: exists","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"67cbb23537ef1d4b5e273744289d41a44a1df71f","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":19,"context_line":"There exits a problem in the current PowerInterface base class which"},{"line_number":20,"context_line":"doesn\u0027t provide with soft reboot and diagnostic interrupt (NMI [1])"},{"line_number":21,"context_line":"capabilities even if ipmitool [2] and most of BMCs support."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_850e0831","line":19,"in_reply_to":"3a50d1a3_62b6993f","updated":"2015-07-30 00:28:33.000000000","message":"I\u0027ll fix that.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5ae961977b36b34ed921bcb27759f80934781e9f","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    POWER_OFF_SOFT \u003d \u0027power off soft\u0027"},{"line_number":88,"context_line":"    REBOOT_SOFT \u003d \u0027reboot soft\u0027"},{"line_number":89,"context_line":"    INJECT_NMI \u003d \u0027inject nmi\u0027"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"2. add \"get_supported_power_states\" method and default implementation"},{"line_number":92,"context_line":"   in PowerInterface::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_7a5562f8","line":89,"updated":"2015-08-14 15:23:58.000000000","message":"I\u0027m going to add the following status:\n\n REBOOT_SOFT \u003d \u0027rebooting soft\u0027\n \"\"\" Node is rebooting gracefully. \"\"\"\n\n POWER_OFF_SOFT \u003d \u0027power off soft\u0027\n \"\"\" Node is in the process of power off soft. \"\"\"\n\n INJECT_NMI \u003d \u0027inject nmi\u0027\n \"\"\" Node is in the process of injecting NMI. \"\"\"\n\n CANCEL_REBOOT_SOFT \u003d \u0027cancel rebooting soft\u0027\n \"\"\" Node is canceling soft reboot task. \"\"\"\n\n CANCEL_POWER_OFF_SOFT \u003d \u0027cancel power off soft\u0027\n \"\"\" Node is canceling soft power off task. \"\"\"\n\n CANCEL_INJECT_NMI \u003d \u0027cancel inject nmi\u0027\n \"\"\" Node is canceling inject nmi task. \"\"\"\n\n\nhttps://review.openstack.org/#/c/207897/4/ironic/common/states.py","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5ae961977b36b34ed921bcb27759f80934781e9f","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        \"\"\""},{"line_number":100,"context_line":"        return [states.POWER_ON, states.POWER_OFF, states.REBOOT,]"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"3. enhance \"set_power_state\" method in IPMIPower class so that the"},{"line_number":103,"context_line":"   new states can be accepted as \"power_state\" parameter::"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_bace8ab5","line":102,"updated":"2015-08-14 15:23:58.000000000","message":"I\u0027d like to drop to support INJECT_NMI for ipmitool driver, because generic BMC is not capable of getting OS status.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ae1635947ad726549c595a5449796c1210fd6422","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        POWER_ON and instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":112,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":113,"context_line":"        The state transitions are as follows:"},{"line_number":114,"context_line":"        1) POWER_OFF_SOFT: POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF"},{"line_number":115,"context_line":"        2) REBOOT_SOFT   : POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":116,"context_line":"        3) INJECT_NMI    : POWER_ON -\u003e INJECT_NMI -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_14fdd33a","line":114,"updated":"2015-08-01 16:08:07.000000000","message":"Agreed -- this shouldn\u0027t \"time out\" ever. If the user requests a SOFT OFF, Ironic needs to track that request as a target state, and that needs to be respected by the power state sync loop, but a) it should never be re-issued by Ironic automatically, b) it shouldn\u0027t time out or escalate to a HARD OFF, c) the user should be able to re-issue another SOFT OFF or even cancel the request, d) the user should be able to escalate this to a HARD OFF if necessary.\n\nAnd here, by \"user\", I mean anyone with API access to Ironic.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":10380,"name":"Josh Gachnang","email":"josh@pcsforeducation.com","username":"JoshNang"},"change_message_id":"d4c007cb7b57788be95caa12f2dadcae3f02ae7e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        POWER_ON and instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":112,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":113,"context_line":"        The state transitions are as follows:"},{"line_number":114,"context_line":"        1) POWER_OFF_SOFT: POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF"},{"line_number":115,"context_line":"        2) REBOOT_SOFT   : POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":116,"context_line":"        3) INJECT_NMI    : POWER_ON -\u003e INJECT_NMI -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_1d005600","line":114,"updated":"2015-07-28 19:42:14.000000000","message":"What if the OS ignores the soft power off? For example, I\u0027m an operator with an Ironic cloud, a user abuses the cloud, I want to soft power them off (in case it was a misunderstanding), but the user is smart and configures the OS to not power off (or doesn\u0027t have acpid installed). It seems like it would get stuck in POWER_OFF_SOFT, but is actually on. I think either we need to be able to pass POWER_OFF to the API again to force power off or have Ironic hard power off after a timeout. I\u0027d prefer the latter.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"5ae961977b36b34ed921bcb27759f80934781e9f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        POWER_ON and instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":112,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":113,"context_line":"        The state transitions are as follows:"},{"line_number":114,"context_line":"        1) POWER_OFF_SOFT: POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF"},{"line_number":115,"context_line":"        2) REBOOT_SOFT   : POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":116,"context_line":"        3) INJECT_NMI    : POWER_ON -\u003e INJECT_NMI -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_e63482fc","line":114,"in_reply_to":"1a4dcd0f_3f24c35e","updated":"2015-08-14 15:23:58.000000000","message":"\u003e c) the user should be able to re-issue another SOFT OFF or even cancel the request,\n\nThe POC implementation of CANCEL_POWER_OFF_SOFT is ready at Patch #4 of [1].\n\n[1] https://review.openstack.org/#/c/207897/4\n\n \u003e d) the user should be able to escalate this to a HARD OFF if necessary.\n\nNow it is possible to issue hard power off after canceling the soft power off task.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"2c4ba903b39dbc00b3af6fdc44cd595f3298ada9","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        POWER_ON and instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":112,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":113,"context_line":"        The state transitions are as follows:"},{"line_number":114,"context_line":"        1) POWER_OFF_SOFT: POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF"},{"line_number":115,"context_line":"        2) REBOOT_SOFT   : POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":116,"context_line":"        3) INJECT_NMI    : POWER_ON -\u003e INJECT_NMI -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_3f24c35e","line":114,"in_reply_to":"1a4dcd0f_973b739c","updated":"2015-08-14 07:19:13.000000000","message":"\u003e\u003e b) it shouldn\u0027t time out or escalate to a HARD OFF, \n\n\u003e I agree with not escalating to a HARD OFF.\n\n\u003e But let me make sure if we don\u0027t implement timeout or not.\n\nWhat I wanted to say was that \"let me ask you  if we don\u0027t implement timeout or not\".\n\nI\u0027d like to hear opinions regarding timeout.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e421a9b0091ca76ad4e7d409beaa5b25b9009a7b","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        POWER_ON and instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":112,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":113,"context_line":"        The state transitions are as follows:"},{"line_number":114,"context_line":"        1) POWER_OFF_SOFT: POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF"},{"line_number":115,"context_line":"        2) REBOOT_SOFT   : POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":116,"context_line":"        3) INJECT_NMI    : POWER_ON -\u003e INJECT_NMI -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_973b739c","line":114,"in_reply_to":"3a50d1a3_14fdd33a","updated":"2015-08-10 07:21:44.000000000","message":"\u003e Agreed -- this shouldn\u0027t \"time out\" ever.\n\nI think we agreed NOT to do hard power off automatically after the \"time out\".\n\nBut I believe we agreed to implement plain \"time out\" which doesn\u0027t do anything automatically except reporting error in log and node.last_error.\n\n \u003e If the user requests a SOFT OFF, Ironic needs to track that request as a target state,\n\nLet me define the terms first. Here is my understanding.\n\n* Variable Names in the source code\n * new_state \u003d POWER_ON | POWER_OFF | REBOOT | POWER_OFF_SOFT | INJECT_NMI | REBOOT_SOFT\n * curr_state \u003d POWER_ON | POWER_OFF | ERROR\n * target_state \u003d POWER_ON | POWER_OFF\n\n* Node Property\n * node.power_state \u003d curr_state \u003d POWER_ON | POWER_OFF | ERROR\n * node.target_power_state \u003d new_state \u003d POWER_ON | POWER_OFF | REBOOT | POWER_OFF_SOFT | INJECT_NMI | REBOOT_SOFT\n\n\n \u003e and that needs to be respected by the power state sync loop, but \n \u003e a) it should never be re-issued by Ironic automatically,\n\nYes, I agree.\n\n \u003e b) it shouldn\u0027t time out or escalate to a HARD OFF, \n\nI agree with not escalating to a HARD OFF.\n\nBut let me make sure if we don\u0027t implement timeout or not.\n\n\n \u003e c) the user should be able to re-issue another SOFT OFF or even cancel the request,\n\nYes, I agree.\nBut I need your advice how to implement the re-entrant or cancel since task_manager.acquire() is called with \u0027shared\u003dFalse\u0027. \n\n \u003e d) the user should be able to escalate this to a HARD OFF if necessary.\n\nYes, I agree.\nBut I need your advice how to implement the re-entrant or interrupt since task_manager.acquire() is called with \u0027shared\u003dFalse\u0027.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"67cbb23537ef1d4b5e273744289d41a44a1df71f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        POWER_ON and instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":112,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":113,"context_line":"        The state transitions are as follows:"},{"line_number":114,"context_line":"        1) POWER_OFF_SOFT: POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF"},{"line_number":115,"context_line":"        2) REBOOT_SOFT   : POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":116,"context_line":"        3) INJECT_NMI    : POWER_ON -\u003e INJECT_NMI -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_85d608c2","line":114,"in_reply_to":"3a50d1a3_1d005600","updated":"2015-07-30 00:28:33.000000000","message":"Josh,\n\n \u003e  I think either we need to be able to pass POWER_OFF to the API again to force power off or have Ironic hard power off after a timeout. I\u0027d prefer the latter.\n\nI understood your point.\n\nWe discussed this issue in the vendor passthru implementation [1].\nCurrently what we are thinking is just return error if soft power off hasn\u0027t completed within a certain amount of time. That\u0027s is the current status of what we discussed so far. Please look at [1] if you have time. \n\n [1] https://review.openstack.org/#/c/187082/\n\nIn terms of the description of the state transition, I need to specify not only power state transition but also target power transition.\nI\u0027ve just started to develop POC implementation for the generic case, I\u0027ll update the state transition more precisely when I got firm idea by the POC.\n\nBest regards,\nNaohiro.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1e81870b2a25c4823958bfc97ad91413f42cda5e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        POWER_ON and instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027,"},{"line_number":112,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":113,"context_line":"        The state transitions are as follows:"},{"line_number":114,"context_line":"        1) POWER_OFF_SOFT: POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF"},{"line_number":115,"context_line":"        2) REBOOT_SOFT   : POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":116,"context_line":"        3) INJECT_NMI    : POWER_ON -\u003e INJECT_NMI -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_6b52ad6a","line":114,"in_reply_to":"3a50d1a3_85d608c2","updated":"2015-07-30 01:16:07.000000000","message":"Agree, as a user I don\u0027t want Ironic pulling the plug on my database ever, unless I tell it to. :)","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"4dee5e550624ebbf45952a6aa145e054d9813275","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":113,"context_line":"        The state transitions are as follows:"},{"line_number":114,"context_line":"        1) POWER_OFF_SOFT: POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF"},{"line_number":115,"context_line":"        2) REBOOT_SOFT   : POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":116,"context_line":"        3) INJECT_NMI    : POWER_ON -\u003e INJECT_NMI -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_26f39774","line":115,"updated":"2015-08-13 09:39:26.000000000","message":"How do you plan to poll this because start state and end state are same and it could happen in between the time we are polling ? I think we should issue a power off soft, wait for the node to be powered off and then issue a power on from bmc.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"2c4ba903b39dbc00b3af6fdc44cd595f3298ada9","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        otherwise raises InvalidParameterValue."},{"line_number":113,"context_line":"        The state transitions are as follows:"},{"line_number":114,"context_line":"        1) POWER_OFF_SOFT: POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF"},{"line_number":115,"context_line":"        2) REBOOT_SOFT   : POWER_ON -\u003e POWER_OFF_SOFT -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":116,"context_line":"        3) INJECT_NMI    : POWER_ON -\u003e INJECT_NMI -\u003e POWER_OFF -\u003e POWER_ON"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_7bf02092","line":115,"in_reply_to":"1a4dcd0f_26f39774","updated":"2015-08-14 07:19:13.000000000","message":"Yes, I implemented exactly the way you mentioned in the POC code at L.792 [1]\n\n[1] https://review.openstack.org/#/c/207897/3/ironic/drivers/modules/ipmitool.py","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"4dee5e550624ebbf45952a6aa145e054d9813275","unresolved":false,"context_lines":[{"line_number":140,"context_line":"------------"},{"line_number":141,"context_line":"* Both the soft reboot and diagnostic interrupt (NMI [1]) could be"},{"line_number":142,"context_line":"  implemented by vendor passthru. However the proposed change is"},{"line_number":143,"context_line":"  better than the vendor passthru, because customer can write script"},{"line_number":144,"context_line":"  or program uniformly."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_a6e4870c","line":143,"updated":"2015-08-13 09:39:26.000000000","message":"s/customer/users of ironic api or ironicclient/","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"2c4ba903b39dbc00b3af6fdc44cd595f3298ada9","unresolved":false,"context_lines":[{"line_number":140,"context_line":"------------"},{"line_number":141,"context_line":"* Both the soft reboot and diagnostic interrupt (NMI [1]) could be"},{"line_number":142,"context_line":"  implemented by vendor passthru. However the proposed change is"},{"line_number":143,"context_line":"  better than the vendor passthru, because customer can write script"},{"line_number":144,"context_line":"  or program uniformly."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_5b2e84fb","line":143,"in_reply_to":"1a4dcd0f_a6e4870c","updated":"2015-08-14 07:19:13.000000000","message":"I\u0027ll fix that.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ae1635947ad726549c595a5449796c1210fd6422","unresolved":false,"context_lines":[{"line_number":171,"context_line":"       ClientSideError (HTTP 409) if a power operation is already in progress."},{"line_number":172,"context_line":"     Raises:"},{"line_number":173,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":174,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"* Add new API to get supported power states. This API is sync."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_b4fbbf46","line":174,"updated":"2015-08-01 16:08:07.000000000","message":"s/CLEANING state/a state which should not be interrupted, such as CLEANING, DELETING, ZAPPING/","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e421a9b0091ca76ad4e7d409beaa5b25b9009a7b","unresolved":false,"context_lines":[{"line_number":171,"context_line":"       ClientSideError (HTTP 409) if a power operation is already in progress."},{"line_number":172,"context_line":"     Raises:"},{"line_number":173,"context_line":"       InvalidStateRequested (HTTP 400) if the requested target state is not"},{"line_number":174,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"* Add new API to get supported power states. This API is sync."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_9eba4be0","line":174,"in_reply_to":"3a50d1a3_b4fbbf46","updated":"2015-08-10 07:21:44.000000000","message":"I\u0027ll fix that.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ae1635947ad726549c595a5449796c1210fd6422","unresolved":false,"context_lines":[{"line_number":174,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"* Add new API to get supported power states. This API is sync."},{"line_number":178,"context_line":"  GET /v1/nodes/(node_ident)/states/power/supported::"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"   Get a list of the supported power states."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_d4f68b5c","line":177,"updated":"2015-08-01 16:08:07.000000000","message":"Hmm. Rather than a new resource here, why not add a \"supported\" member to the existing resource?\n\nEg, \n\n  GET /v1/nodes/{ident}/states\n\n  returns\n\n  {\n    \u0027target_power_state\u0027: ...\n    \u0027power_state\u0027: ...\n    \u0027supported_power_states\u0027: [ a, b, c]\n\nThere could be pros and cons to both approaches, so I\u0027m just putting this idea forward.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"6a0d3549af03050ebafdfe2110570ae535ca3342","unresolved":false,"context_lines":[{"line_number":174,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"* Add new API to get supported power states. This API is sync."},{"line_number":178,"context_line":"  GET /v1/nodes/(node_ident)/states/power/supported::"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"   Get a list of the supported power states."}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa1b9901_adce35b2","line":177,"in_reply_to":"1a4dcd0f_52809946","updated":"2015-08-19 05:44:26.000000000","message":"Devananda,\n\nI\u0027ll take your suggestion, because getting supported power states with other power state by one api/cli call is convenient for user.\n\nThanks.\nNaohiro","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e421a9b0091ca76ad4e7d409beaa5b25b9009a7b","unresolved":false,"context_lines":[{"line_number":174,"context_line":"       valid or if the node is in CLEANING state."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"* Add new API to get supported power states. This API is sync."},{"line_number":178,"context_line":"  GET /v1/nodes/(node_ident)/states/power/supported::"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"   Get a list of the supported power states."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_52809946","line":177,"in_reply_to":"3a50d1a3_d4f68b5c","updated":"2015-08-10 07:21:44.000000000","message":"Thanks for the advice. let me think for a while about pros and cons.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ae1635947ad726549c595a5449796c1210fd6422","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"   \u003cpower-state\u003e"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"       \u0027on\u0027, \u0027off\u0027, \u0027reboot\u0027, \u0027soft off\u0027, \u0027soft reboot\u0027 or \u0027inject nmi\u0027 [4]."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"* Add a new command \"ironic node-get-supported-power-states\". This CLI"},{"line_number":215,"context_line":"  is sync.::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_749457e7","line":212,"updated":"2015-08-01 16:08:07.000000000","message":"For ease of use in shell, I would prefer these parameter names not include spaces.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e421a9b0091ca76ad4e7d409beaa5b25b9009a7b","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"   \u003cpower-state\u003e"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"       \u0027on\u0027, \u0027off\u0027, \u0027reboot\u0027, \u0027soft off\u0027, \u0027soft reboot\u0027 or \u0027inject nmi\u0027 [4]."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"* Add a new command \"ironic node-get-supported-power-states\". This CLI"},{"line_number":215,"context_line":"  is sync.::"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_bea627bf","line":212,"in_reply_to":"3a50d1a3_749457e7","updated":"2015-08-10 07:21:44.000000000","message":"I\u0027ll fix that.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1c3fb055dc4bf70df9d2e12ceefb00ff74bd184b","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Nova driver impact"},{"line_number":234,"context_line":"------------------"},{"line_number":235,"context_line":"None"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Security impact"},{"line_number":238,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa1b9901_7d74b3ce","line":235,"updated":"2015-08-17 11:02:19.000000000","message":"Currently the Ironic nova driver always does a hard reboot. I think that once the soft reboot is implemented in Ironic we should come up with a plan to get soft reboot implemented in the Ironic nova driver, right?\n\nThis could be a deprecation periodic for the \"nova reboot\" without the --hard flag. Saying that next cycle the behavior will be changed and Ironic will respect the soft and hard reboot differences.\n\nOr a configuration flag to enable the new behavior.\n\nWDYT? I think it\u0027s a good discussion that we should have as part of this spec.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"154322836dfb3f0fdcc7f8da459c04bc730ac4cc","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Nova driver impact"},{"line_number":234,"context_line":"------------------"},{"line_number":235,"context_line":"None"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"Security impact"},{"line_number":238,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa1b9901_fd6adc19","line":235,"in_reply_to":"fa1b9901_7d74b3ce","updated":"2015-08-18 02:55:48.000000000","message":"\u003e WDYT? I think it\u0027s a good discussion that we should have as part of this spec.\n\nYes, it is definitely a part of this spec.\nI\u0027ll add that.\n\nWe have to work on the following Nova bug report [1].\n\n[1] https://bugs.launchpad.net/nova/+bug/1485416","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ae1635947ad726549c595a5449796c1210fd6422","unresolved":false,"context_lines":[{"line_number":243,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":244,"context_line":"  sure the following:"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":" * set instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":" * deploy or set up ACPI [5] controllable instance to the node. How to"},{"line_number":249,"context_line":"   make the instance ACPI [5] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a50d1a3_9497a3ea","line":246,"updated":"2015-08-01 16:08:07.000000000","message":"I think this is the only place in this spec where you mention a change to instance_info/capabilities, and I\u0027m not sure why it\u0027s here.\n\nFirst of all, this capability isn\u0027t related to the instance, but to the driver. But furthermore, it\u0027s really related to the node -- so this should be node.properties.capabilities\n\nSecondly, if this functionality requires explicitly setting a capability flag on each Node, then it must be set during enrollment or inspection. Maybe that\u0027s OK - but it should be clearly described in the spec that this is a requirement to enable this functionality.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"2c4ba903b39dbc00b3af6fdc44cd595f3298ada9","unresolved":false,"context_lines":[{"line_number":243,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":244,"context_line":"  sure the following:"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":" * set instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":" * deploy or set up ACPI [5] controllable instance to the node. How to"},{"line_number":249,"context_line":"   make the instance ACPI [5] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_dfb4bf36","line":246,"in_reply_to":"1a4dcd0f_292b6883","updated":"2015-08-14 07:19:13.000000000","message":"Do you mean that user has to set the same information into two places, node.properties.capabilities and instance_info/capabilities ?","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"4dee5e550624ebbf45952a6aa145e054d9813275","unresolved":false,"context_lines":[{"line_number":243,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":244,"context_line":"  sure the following:"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":" * set instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":" * deploy or set up ACPI [5] controllable instance to the node. How to"},{"line_number":249,"context_line":"   make the instance ACPI [5] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_292b6883","line":246,"in_reply_to":"1a4dcd0f_b219dd24","updated":"2015-08-13 09:39:26.000000000","message":"Yeah, I think it should be node.properties.capabilities too.  This is because the initiation of soft power off is really a combination of hardware (bmc should support it) and software (os should support it).  I think we will have to go with an assumption that OS will support it because there is no way to programmatically query other than trying it out with the bare metal on which Image is deployed.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"e421a9b0091ca76ad4e7d409beaa5b25b9009a7b","unresolved":false,"context_lines":[{"line_number":243,"context_line":"* End user who has admin privilege such as tenant admin has to make"},{"line_number":244,"context_line":"  sure the following:"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":" * set instance_info/capabilities\u003d\u0027{\"power_soft\": \"true\"}\u0027 to a node"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":" * deploy or set up ACPI [5] controllable instance to the node. How to"},{"line_number":249,"context_line":"   make the instance ACPI [5] controllable is described in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_b219dd24","line":246,"in_reply_to":"3a50d1a3_9497a3ea","updated":"2015-08-10 07:21:44.000000000","message":"\u003e First of all, this capability isn\u0027t related to the instance, but to the driver. But furthermore, it\u0027s really related to the node -- so this should be node.properties.capabilities\n\nBoth Soft Power Off and INJECT NMI need to install some packages and setup the settings properly in OS instance.\n\nThat\u0027s why I chose instance_info/capabilities.\n\nnode.properties.capabilities is for hardware capability, right?","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"4dee5e550624ebbf45952a6aa145e054d9813275","unresolved":false,"context_lines":[{"line_number":252,"context_line":"* End user who doesn\u0027t have admin privilege such as tenant user"},{"line_number":253,"context_line":"  requires the following to use this features:"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":" * In case of Ironic standalone, ask end user who has admin privilege"},{"line_number":256,"context_line":"   such as tenant admin to enable this features."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":" * In case of Ironic with, use Nova CLI or Nova API which implemented"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_e920209c","line":255,"updated":"2015-08-13 09:39:26.000000000","message":"I think this is not intended properly.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"2c4ba903b39dbc00b3af6fdc44cd595f3298ada9","unresolved":false,"context_lines":[{"line_number":252,"context_line":"* End user who doesn\u0027t have admin privilege such as tenant user"},{"line_number":253,"context_line":"  requires the following to use this features:"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":" * In case of Ironic standalone, ask end user who has admin privilege"},{"line_number":256,"context_line":"   such as tenant admin to enable this features."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":" * In case of Ironic with, use Nova CLI or Nova API which implemented"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_5b1be480","line":255,"in_reply_to":"1a4dcd0f_e920209c","updated":"2015-08-14 07:19:13.000000000","message":"Did I misunderstand Jim\u0027s comment in Patch #4?\n\nhttps://review.openstack.org/#/c/186700/4..6/specs/liberty/enhance-power-interface-for-soft-reboot-and-nmi.rst\n\nI don\u0027t know the story of Ironic standalone mode.\nDo we assume all user of Ironic standalone mode have admin privillage?","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"4dee5e550624ebbf45952a6aa145e054d9813275","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"Developer impact"},{"line_number":277,"context_line":"----------------"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Implementation"},{"line_number":281,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_29528813","line":278,"updated":"2015-08-13 09:39:26.000000000","message":"Driver developers can implement the new interface method and modify their set_power_state","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"2c4ba903b39dbc00b3af6fdc44cd595f3298ada9","unresolved":false,"context_lines":[{"line_number":275,"context_line":""},{"line_number":276,"context_line":"Developer impact"},{"line_number":277,"context_line":"----------------"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Implementation"},{"line_number":281,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_1b86bcdb","line":278,"in_reply_to":"1a4dcd0f_29528813","updated":"2015-08-14 07:19:13.000000000","message":"Yes, I\u0027ll add that.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"39d4d32d7c5681adf4b14f5ccaa0f29aa3d41e3d","unresolved":false,"context_lines":[{"line_number":289,"context_line":"Other contributors:"},{"line_number":290,"context_line":"  None"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Work Items"},{"line_number":293,"context_line":"----------"},{"line_number":294,"context_line":"* Enhance PowerInterface class to support soft power off, soft reboot"},{"line_number":295,"context_line":"  and diagnostic interrupt (NMI [1]) as described \"Proposed change\"."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a4dcd0f_f04b6faf","line":292,"updated":"2015-08-12 00:11:20.000000000","message":"As a ground work, it seems I need to refactor TaskManager and implement cancelable task first which is common in concurrent programming.","commit_id":"99cd8d5a30341d55ab1446cf95a768d0a137cf4e"}]}
