)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e87d15ff877b0733b4c8834ea64673e779e969e4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Implements: blueprint soft-reboot-poweroff"},{"line_number":14,"context_line":"Co-Authored-By: Tang Chen \u003cchen.tang@easystack.cn\u003e"},{"line_number":15,"context_line":"Co-Authored-By: xiexs \u003cxiexs@cn.fujitsu.com\u003e"},{"line_number":16,"context_line":"Depends-On: Icd2859784f3df85c08162c14464bce58067aab1d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"7a3c09a3_fc2e2bf9","line":16,"updated":"2017-01-18 22:41:28.000000000","message":"Depends on this now for the minimum version bump in g-r:\n\nIace997c27a655e3694c571ad10a12e720de230d6","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"e7ee2bb4d4654a6a8abd9ed28708452b5276ae2d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Implements: blueprint soft-reboot-poweroff"},{"line_number":14,"context_line":"Co-Authored-By: Tang Chen \u003cchen.tang@easystack.cn\u003e"},{"line_number":15,"context_line":"Co-Authored-By: xiexs \u003cxiexs@cn.fujitsu.com\u003e"},{"line_number":16,"context_line":"Depends-On: Icd2859784f3df85c08162c14464bce58067aab1d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5a3905b3_a2bba474","line":16,"in_reply_to":"7a3c09a3_fc2e2bf9","updated":"2017-01-19 06:03:17.000000000","message":"Done","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"}],"doc/api_samples/versions/v21-version-get-resp.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"402fcedf0a8b2270a8b87fd4ee1240ccd01c697f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"            }"},{"line_number":20,"context_line":"        ],"},{"line_number":21,"context_line":"        \"status\": \"CURRENT\","},{"line_number":22,"context_line":"        \"version\": \"2.39\","},{"line_number":23,"context_line":"        \"min_version\": \"2.1\","},{"line_number":24,"context_line":"        \"updated\": \"2013-07-23T11:33:21Z\""},{"line_number":25,"context_line":"    }"}],"source_content_type":"application/json","patch_set":4,"id":"3a71b18c_dd425f68","line":22,"updated":"2016-12-07 13:18:09.000000000","message":"Same comments here as in https://review.openstack.org/#/c/407977/","commit_id":"b9ab3aecf2d9fc77f97a85de10c25b14627d1322"}],"nova/tests/unit/virt/ironic/test_driver.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4dbf3fc12899e18ab31008ff4cb08c815feba013","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"        mock_looping.return_value \u003d fake_looping_call"},{"line_number":1356,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.ctx,"},{"line_number":1357,"context_line":"                                                   node\u003dnode.uuid)"},{"line_number":1358,"context_line":"        self.driver.reboot(self.ctx, instance, None, None)"},{"line_number":1359,"context_line":"        mock_sp.assert_called_once_with(node.uuid, \u0027reboot\u0027)"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"    @mock.patch.object(loopingcall, \u0027FixedIntervalLoopingCall\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_79b6a5dd","line":1358,"updated":"2017-01-19 21:18:31.000000000","message":"nit, might want to change None to \u0027HARD\u0027. (I\u0027m too lazy to see if reboot_type can be None; if it can and it means HARD then this is fine.)","commit_id":"5574777a372734bc052d399f74fe9cbb7302bec6"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"86f110f4819a480efeebd2dd7a00bb8446344ff3","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"        mock_looping.return_value \u003d fake_looping_call"},{"line_number":1356,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.ctx,"},{"line_number":1357,"context_line":"                                                   node\u003dnode.uuid)"},{"line_number":1358,"context_line":"        self.driver.reboot(self.ctx, instance, None, None)"},{"line_number":1359,"context_line":"        mock_sp.assert_called_once_with(node.uuid, \u0027reboot\u0027)"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"    @mock.patch.object(loopingcall, \u0027FixedIntervalLoopingCall\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_741cde13","line":1358,"in_reply_to":"5a3905b3_79b6a5dd","updated":"2017-01-20 02:37:13.000000000","message":"None means \u0027HARD\u0027.\nHowever I changed it to \u0027HARD\u0027 because usually \u0027HARD\u0027 is passed explicitly.","commit_id":"5574777a372734bc052d399f74fe9cbb7302bec6"}],"nova/virt/ironic/client_wrapper.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4dbf3fc12899e18ab31008ff4cb08c815feba013","unresolved":false,"context_lines":[{"line_number":32,"context_line":"IRONIC_GROUP \u003d nova.conf.ironic.ironic_group"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# The API version required by the Ironic driver"},{"line_number":35,"context_line":"IRONIC_API_VERSION \u003d (1, 27)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class IronicClientWrapper(object):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_f9e7f50f","line":35,"updated":"2017-01-19 21:18:31.000000000","message":"Just a heads up that this patch is in the queue to merge, and it is 1.28: https://review.openstack.org/#/c/364413/24/nova/virt/ironic/client_wrapper.py","commit_id":"5574777a372734bc052d399f74fe9cbb7302bec6"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"86f110f4819a480efeebd2dd7a00bb8446344ff3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"IRONIC_GROUP \u003d nova.conf.ironic.ironic_group"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# The API version required by the Ironic driver"},{"line_number":35,"context_line":"IRONIC_API_VERSION \u003d (1, 27)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class IronicClientWrapper(object):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_14b55aed","line":35,"in_reply_to":"5a3905b3_f9e7f50f","updated":"2017-01-20 02:37:13.000000000","message":"Done","commit_id":"5574777a372734bc052d399f74fe9cbb7302bec6"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e87d15ff877b0733b4c8834ea64673e779e969e4","unresolved":false,"context_lines":[{"line_number":968,"context_line":"                self.ironicclient.call(\"node.set_power_state\", node.uuid,"},{"line_number":969,"context_line":"                                       \u0027reboot\u0027, soft\u003dTrue)"},{"line_number":970,"context_line":"                hard \u003d False"},{"line_number":971,"context_line":"            except (TypeError,  # ironic client has not been upgraded"},{"line_number":972,"context_line":"                    ironic.exc.BadRequest) as exc:"},{"line_number":973,"context_line":"                        # ironic server has not been upgraded"},{"line_number":974,"context_line":"                LOG.exception(_LE(\u0027Soft reboot is not supported. Call hard \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_5c53bf6c","line":971,"range":{"start_line":971,"start_character":32,"end_line":971,"end_character":69},"updated":"2017-01-18 22:41:28.000000000","message":"When we require python-ironicclient\u003e\u003d1.10.0 in Iace997c27a655e3694c571ad10a12e720de230d6 then we don\u0027t need this right?","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"e7ee2bb4d4654a6a8abd9ed28708452b5276ae2d","unresolved":false,"context_lines":[{"line_number":968,"context_line":"                self.ironicclient.call(\"node.set_power_state\", node.uuid,"},{"line_number":969,"context_line":"                                       \u0027reboot\u0027, soft\u003dTrue)"},{"line_number":970,"context_line":"                hard \u003d False"},{"line_number":971,"context_line":"            except (TypeError,  # ironic client has not been upgraded"},{"line_number":972,"context_line":"                    ironic.exc.BadRequest) as exc:"},{"line_number":973,"context_line":"                        # ironic server has not been upgraded"},{"line_number":974,"context_line":"                LOG.exception(_LE(\u0027Soft reboot is not supported. Call hard \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a3905b3_e26ccc0a","line":971,"range":{"start_line":971,"start_character":32,"end_line":971,"end_character":69},"in_reply_to":"7a3c09a3_5c53bf6c","updated":"2017-01-19 06:03:17.000000000","message":"Yes. It\u0027s not necessary.","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c9e797d9a1277059762cae4352099ea4d6e01544","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                hard \u003d False"},{"line_number":971,"context_line":"            except (TypeError,  # ironic client has not been upgraded"},{"line_number":972,"context_line":"                    ironic.exc.BadRequest) as exc:"},{"line_number":973,"context_line":"                        # ironic server has not been upgraded"},{"line_number":974,"context_line":"                LOG.exception(_LE(\u0027Soft reboot is not supported. Call hard \u0027"},{"line_number":975,"context_line":"                                  \u0027reboot: %s\u0027),"},{"line_number":976,"context_line":"                              exc,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_f5bca3dd","line":973,"updated":"2017-01-18 13:41:10.000000000","message":"I think this means \"driver does not support soft power actions\". we guarentee that ironic server was upgraded by setting the API version","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"e7ee2bb4d4654a6a8abd9ed28708452b5276ae2d","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                hard \u003d False"},{"line_number":971,"context_line":"            except (TypeError,  # ironic client has not been upgraded"},{"line_number":972,"context_line":"                    ironic.exc.BadRequest) as exc:"},{"line_number":973,"context_line":"                        # ironic server has not been upgraded"},{"line_number":974,"context_line":"                LOG.exception(_LE(\u0027Soft reboot is not supported. Call hard \u0027"},{"line_number":975,"context_line":"                                  \u0027reboot: %s\u0027),"},{"line_number":976,"context_line":"                              exc,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a3905b3_4274c0ce","line":973,"in_reply_to":"7a3c09a3_dcc5ef0a","updated":"2017-01-19 06:03:17.000000000","message":"I revised the log message and removed this comment.","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e87d15ff877b0733b4c8834ea64673e779e969e4","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                hard \u003d False"},{"line_number":971,"context_line":"            except (TypeError,  # ironic client has not been upgraded"},{"line_number":972,"context_line":"                    ironic.exc.BadRequest) as exc:"},{"line_number":973,"context_line":"                        # ironic server has not been upgraded"},{"line_number":974,"context_line":"                LOG.exception(_LE(\u0027Soft reboot is not supported. Call hard \u0027"},{"line_number":975,"context_line":"                                  \u0027reboot: %s\u0027),"},{"line_number":976,"context_line":"                              exc,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_dcc5ef0a","line":973,"in_reply_to":"7a3c09a3_f5bca3dd","updated":"2017-01-18 22:41:28.000000000","message":"yeah we should reword this comment","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c9e797d9a1277059762cae4352099ea4d6e01544","unresolved":false,"context_lines":[{"line_number":971,"context_line":"            except (TypeError,  # ironic client has not been upgraded"},{"line_number":972,"context_line":"                    ironic.exc.BadRequest) as exc:"},{"line_number":973,"context_line":"                        # ironic server has not been upgraded"},{"line_number":974,"context_line":"                LOG.exception(_LE(\u0027Soft reboot is not supported. Call hard \u0027"},{"line_number":975,"context_line":"                                  \u0027reboot: %s\u0027),"},{"line_number":976,"context_line":"                              exc,"},{"line_number":977,"context_line":"                              instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_15c04f4f","line":974,"updated":"2017-01-18 13:41:10.000000000","message":"nit: s/Call/Falling back to/","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e87d15ff877b0733b4c8834ea64673e779e969e4","unresolved":false,"context_lines":[{"line_number":971,"context_line":"            except (TypeError,  # ironic client has not been upgraded"},{"line_number":972,"context_line":"                    ironic.exc.BadRequest) as exc:"},{"line_number":973,"context_line":"                        # ironic server has not been upgraded"},{"line_number":974,"context_line":"                LOG.exception(_LE(\u0027Soft reboot is not supported. Call hard \u0027"},{"line_number":975,"context_line":"                                  \u0027reboot: %s\u0027),"},{"line_number":976,"context_line":"                              exc,"},{"line_number":977,"context_line":"                              instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a3c09a3_fc98eb1d","line":974,"in_reply_to":"7a3c09a3_15c04f4f","updated":"2017-01-18 22:41:28.000000000","message":"This also shouldn\u0027t be an ERROR/exception trace in my opinion since we\u0027re falling back to hard reboot. This is probably just INFO level.","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"e7ee2bb4d4654a6a8abd9ed28708452b5276ae2d","unresolved":false,"context_lines":[{"line_number":971,"context_line":"            except (TypeError,  # ironic client has not been upgraded"},{"line_number":972,"context_line":"                    ironic.exc.BadRequest) as exc:"},{"line_number":973,"context_line":"                        # ironic server has not been upgraded"},{"line_number":974,"context_line":"                LOG.exception(_LE(\u0027Soft reboot is not supported. Call hard \u0027"},{"line_number":975,"context_line":"                                  \u0027reboot: %s\u0027),"},{"line_number":976,"context_line":"                              exc,"},{"line_number":977,"context_line":"                              instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a3905b3_6281bc8f","line":974,"in_reply_to":"7a3c09a3_fc98eb1d","updated":"2017-01-19 06:03:17.000000000","message":"Done","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4dbf3fc12899e18ab31008ff4cb08c815feba013","unresolved":false,"context_lines":[{"line_number":957,"context_line":"            encountered. Ignored by this driver."},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        \"\"\""},{"line_number":960,"context_line":"        LOG.debug(\u0027Reboot called for instance\u0027, instance\u003dinstance)"},{"line_number":961,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        hard \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_d981594c","line":960,"updated":"2017-01-19 21:18:31.000000000","message":"nit: I don\u0027t know how detailed we want these logs to be. Would it be useful to indicate what the reboot_type is?","commit_id":"5574777a372734bc052d399f74fe9cbb7302bec6"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"86f110f4819a480efeebd2dd7a00bb8446344ff3","unresolved":false,"context_lines":[{"line_number":957,"context_line":"            encountered. Ignored by this driver."},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"        \"\"\""},{"line_number":960,"context_line":"        LOG.debug(\u0027Reboot called for instance\u0027, instance\u003dinstance)"},{"line_number":961,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"        hard \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_54cfe27e","line":960,"in_reply_to":"5a3905b3_d981594c","updated":"2017-01-20 02:37:13.000000000","message":"Done","commit_id":"5574777a372734bc052d399f74fe9cbb7302bec6"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4dbf3fc12899e18ab31008ff4cb08c815feba013","unresolved":false,"context_lines":[{"line_number":979,"context_line":"                    self._wait_for_power_state, instance, \u0027reboot\u0027)"},{"line_number":980,"context_line":"        timer.start(interval\u003dCONF.ironic.api_retry_interval).wait()"},{"line_number":981,"context_line":"        LOG.info(_LI(\u0027Successfully rebooted Ironic node %s\u0027),"},{"line_number":982,"context_line":"                 node.uuid, instance\u003dinstance)"},{"line_number":983,"context_line":""},{"line_number":984,"context_line":"    def power_off(self, instance, timeout\u003d0, retry_interval\u003d0):"},{"line_number":985,"context_line":"        \"\"\"Power off the specified instance."}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_99eef120","line":982,"updated":"2017-01-19 21:18:31.000000000","message":"ditto, would it be useful to indicate whether a soft or hard reboot was done?","commit_id":"5574777a372734bc052d399f74fe9cbb7302bec6"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"86f110f4819a480efeebd2dd7a00bb8446344ff3","unresolved":false,"context_lines":[{"line_number":979,"context_line":"                    self._wait_for_power_state, instance, \u0027reboot\u0027)"},{"line_number":980,"context_line":"        timer.start(interval\u003dCONF.ironic.api_retry_interval).wait()"},{"line_number":981,"context_line":"        LOG.info(_LI(\u0027Successfully rebooted Ironic node %s\u0027),"},{"line_number":982,"context_line":"                 node.uuid, instance\u003dinstance)"},{"line_number":983,"context_line":""},{"line_number":984,"context_line":"    def power_off(self, instance, timeout\u003d0, retry_interval\u003d0):"},{"line_number":985,"context_line":"        \"\"\"Power off the specified instance."}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_94c94a7b","line":982,"in_reply_to":"5a3905b3_99eef120","updated":"2017-01-20 02:37:13.000000000","message":"Done","commit_id":"5574777a372734bc052d399f74fe9cbb7302bec6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"caf7c03539b6f979cd4af02a676be78d338acac3","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"                self.ironicclient.call(\"node.set_power_state\", node.uuid,"},{"line_number":1018,"context_line":"                                       \u0027reboot\u0027, soft\u003dTrue)"},{"line_number":1019,"context_line":"                hard \u003d False"},{"line_number":1020,"context_line":"            except ironic.exc.BadRequest as exc:"},{"line_number":1021,"context_line":"                LOG.info(_LI(\u0027Soft reboot is not supported by ironic hardware \u0027"},{"line_number":1022,"context_line":"                             \u0027driver. Falling back to hard reboot: %s\u0027),"},{"line_number":1023,"context_line":"                         exc,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_afde840e","line":1020,"updated":"2017-01-23 11:56:15.000000000","message":"ironicclient raises NotAcceptable, but it won\u0027t be raised here, rather during the first request. it probably does not make much sense to catch it here.","commit_id":"f3c774a96b963d66c5397069d12cf9eb2dcac4da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0e56d338565319fd3a07dc7a63ba776bf9de1c53","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"                self.ironicclient.call(\"node.set_power_state\", node.uuid,"},{"line_number":1018,"context_line":"                                       \u0027reboot\u0027, soft\u003dTrue)"},{"line_number":1019,"context_line":"                hard \u003d False"},{"line_number":1020,"context_line":"            except ironic.exc.BadRequest as exc:"},{"line_number":1021,"context_line":"                LOG.info(_LI(\u0027Soft reboot is not supported by ironic hardware \u0027"},{"line_number":1022,"context_line":"                             \u0027driver. Falling back to hard reboot: %s\u0027),"},{"line_number":1023,"context_line":"                         exc,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_dbd1df58","line":1020,"updated":"2017-01-23 09:03:13.000000000","message":"may I ask question: If the ironic API is lower than 1.27, what exception raised from client?","commit_id":"f3c774a96b963d66c5397069d12cf9eb2dcac4da"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"322255568669f13b446be49165a930e1fe1f0709","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"                self.ironicclient.call(\"node.set_power_state\", node.uuid,"},{"line_number":1018,"context_line":"                                       \u0027reboot\u0027, soft\u003dTrue)"},{"line_number":1019,"context_line":"                hard \u003d False"},{"line_number":1020,"context_line":"            except ironic.exc.BadRequest as exc:"},{"line_number":1021,"context_line":"                LOG.info(_LI(\u0027Soft reboot is not supported by ironic hardware \u0027"},{"line_number":1022,"context_line":"                             \u0027driver. Falling back to hard reboot: %s\u0027),"},{"line_number":1023,"context_line":"                         exc,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_e48eeace","line":1020,"in_reply_to":"5a3905b3_03913047","updated":"2017-01-23 14:21:44.000000000","message":"nova itself, will issue this request with ironic API 1.27 or higher. So NotAcceptable won\u0027t be raised in that case. (IF i recall correctly, NotAcceptable is raised if the API supports the feature but the specified API version is incorrect. In this case, the API version is correct.)\n\nThis is catching the case where the ironic API does not support this feature or API version 1.27. In which case ironic raises InvalidStateRequested, which is a BadRequest. eg, for newton [1]. (A comment might be useful.)\n\n[1] https://github.com/openstack/ironic/blob/94f132e71144210ac0dbc8b71f6c741de7dc98fd/ironic/api/controllers/v1/node.py#L458","commit_id":"f3c774a96b963d66c5397069d12cf9eb2dcac4da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b121ef1f9566dbf72da8c0077287ad5b0df49a19","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"                self.ironicclient.call(\"node.set_power_state\", node.uuid,"},{"line_number":1018,"context_line":"                                       \u0027reboot\u0027, soft\u003dTrue)"},{"line_number":1019,"context_line":"                hard \u003d False"},{"line_number":1020,"context_line":"            except ironic.exc.BadRequest as exc:"},{"line_number":1021,"context_line":"                LOG.info(_LI(\u0027Soft reboot is not supported by ironic hardware \u0027"},{"line_number":1022,"context_line":"                             \u0027driver. Falling back to hard reboot: %s\u0027),"},{"line_number":1023,"context_line":"                         exc,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_03913047","line":1020,"in_reply_to":"5a3905b3_afde840e","updated":"2017-01-23 13:34:04.000000000","message":"thanks for the answer.","commit_id":"f3c774a96b963d66c5397069d12cf9eb2dcac4da"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d1cc89f3ea75dd69703e1216ae81e776ada0f6f5","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"                self.ironicclient.call(\"node.set_power_state\", node.uuid,"},{"line_number":1018,"context_line":"                                       \u0027reboot\u0027, soft\u003dTrue)"},{"line_number":1019,"context_line":"                hard \u003d False"},{"line_number":1020,"context_line":"            except ironic.exc.BadRequest as exc:"},{"line_number":1021,"context_line":"                LOG.info(_LI(\u0027Soft reboot is not supported by ironic hardware \u0027"},{"line_number":1022,"context_line":"                             \u0027driver. Falling back to hard reboot: %s\u0027),"},{"line_number":1023,"context_line":"                         exc,"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a3905b3_cd3da090","line":1020,"in_reply_to":"5a3905b3_dbd1df58","updated":"2017-01-23 09:58:28.000000000","message":"Actually I have concern on other exception case which need to fall back to hard reboot. \n\nI saw the following patch catches a more generic exception https://review.openstack.org/#/c/407977/7/nova/virt/ironic/driver.py@1074","commit_id":"f3c774a96b963d66c5397069d12cf9eb2dcac4da"}],"releasenotes/notes/bp-soft-reboot-poweroff-203e0f33e3b8042e.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e87d15ff877b0733b4c8834ea64673e779e969e4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds soft reboot support to Ironic virt driver. This feature requires the"},{"line_number":4,"context_line":"    Ironic service to support API version 1.27 or later."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7a3c09a3_9ca9a727","line":3,"range":{"start_line":3,"start_character":9,"end_line":3,"end_character":13},"updated":"2017-01-18 22:41:28.000000000","message":"It\u0027s just reboot in general right? If soft fails, it tries hard.","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"e7ee2bb4d4654a6a8abd9ed28708452b5276ae2d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds soft reboot support to Ironic virt driver. This feature requires the"},{"line_number":4,"context_line":"    Ironic service to support API version 1.27 or later."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5a3905b3_0249d88b","line":3,"range":{"start_line":3,"start_character":9,"end_line":3,"end_character":13},"in_reply_to":"7a3c09a3_9ca9a727","updated":"2017-01-19 06:03:17.000000000","message":"Done","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e87d15ff877b0733b4c8834ea64673e779e969e4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds soft reboot support to Ironic virt driver. This feature requires the"},{"line_number":4,"context_line":"    Ironic service to support API version 1.27 or later."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"7a3c09a3_fcbf0b5e","line":4,"range":{"start_line":3,"start_character":52,"end_line":4,"end_character":56},"updated":"2017-01-18 22:41:28.000000000","message":"You should probably also mention it requires python-ironicclient\u003e\u003d1.10.0.","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"e7ee2bb4d4654a6a8abd9ed28708452b5276ae2d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds soft reboot support to Ironic virt driver. This feature requires the"},{"line_number":4,"context_line":"    Ironic service to support API version 1.27 or later."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5a3905b3_225ed445","line":4,"range":{"start_line":3,"start_character":52,"end_line":4,"end_character":56},"in_reply_to":"7a3c09a3_fcbf0b5e","updated":"2017-01-19 06:03:17.000000000","message":"Done","commit_id":"f94f9b6571f2b9de1947379ac4af482ac5a969f9"}]}
