)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4818041203aebbe45011c2a271c7732f4abc9d25","unresolved":false,"context_lines":[{"line_number":10,"context_line":"driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I33812abbff919e5e477334c3bc46309491d14b6a"},{"line_number":13,"context_line":"Depends-On: Ib19e020685d46051ddf3086adde57ed229b22797"},{"line_number":14,"context_line":"Implements: blueprint inject-nmi-ironic"},{"line_number":15,"context_line":"Co-Authored-By: Tang Chen \u003cchen.tang@easystack.cn\u003e"},{"line_number":16,"context_line":"Co-Authored-By: xiexs \u003cxiexs@cn.fujitsu.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a74a57a_1410df00","line":13,"updated":"2016-11-24 13:55:57.000000000","message":"seems we should probably depend on the ironic server side patch as well: https://review.openstack.org/#/c/207897/5\n\nProbably better to depend on the patch that bumps the requirements, rather than on the client patch, as it needs to be released before we can use it, I assume?","commit_id":"f7029385eec946213dfdc5c006f58cfb8301ad04"}],"nova/virt/ironic/client_wrapper.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4818041203aebbe45011c2a271c7732f4abc9d25","unresolved":false,"context_lines":[{"line_number":34,"context_line":"IRONIC_GROUP \u003d nova.conf.ironic.ironic_group"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"# The API version required by the Ironic driver"},{"line_number":37,"context_line":"IRONIC_API_VERSION \u003d (1, 27)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class IronicClientWrapper(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_c07ce2ed","line":37,"updated":"2016-11-24 13:55:57.000000000","message":"This now means you need to upgrade ironic first I guess.\n\nDon\u0027t we only need this really new version for one specific feature, not sure if we should bump the global version.","commit_id":"f7029385eec946213dfdc5c006f58cfb8301ad04"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"9d3882dacf1a3aba41841f5aea725c2cdb976f01","unresolved":false,"context_lines":[{"line_number":34,"context_line":"IRONIC_GROUP \u003d nova.conf.ironic.ironic_group"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"# The API version required by the Ironic driver"},{"line_number":37,"context_line":"IRONIC_API_VERSION \u003d (1, 27)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class IronicClientWrapper(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_5cf791d2","line":37,"in_reply_to":"5a74a57a_c07ce2ed","updated":"2016-12-12 05:46:28.000000000","message":"As mentioned, it would be better to bump ironic-api-version separately.","commit_id":"f7029385eec946213dfdc5c006f58cfb8301ad04"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"bf3588fb5b830f6f5129debe5bae632f1443f9e2","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, 29)"},{"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":7,"id":"5a3905b3_1aef17b1","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":28},"updated":"2017-01-20 19:07:18.000000000","message":"This point is not due  to this patch, but I have a question about this hard-coded api version.\n\nThis Ironic microversion is passed to Ironic. In general, OpenStack clouds can consist of multiple components of different versions.\nSo it is possible to imagine a cloud consist of Ocata Nova and Newton Ironic. However, Ironic returns BadRequest always on available APIs also due to this hard-coded version.\nI could not find some fallback mechanism on Ironic side which is https://github.com/openstack/python-ironicclient/blob/master/ironicclient/client.py#L74 etc.\n\nThis is not due to this patch, so I am OK to go with this patch itself.","commit_id":"cd8d44fc4c412402d738d08408acff301988f69d"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"816c3becced5a86c8afeec142bff5f19e0a5bb38","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, 29)"},{"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":7,"id":"3a461143_453582d8","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":28},"in_reply_to":"5a3905b3_1aef17b1","updated":"2017-01-26 10:42:14.000000000","message":"It seems that there is no mechanism for fallback now. As you mention the hard-coded version prevents version negotiation mechanism in ironicclient[1][2].\n\n[1] https://github.com/openstack/python-ironicclient/blob/master/ironicclient/v1/client.py#L41\n[2] https://github.com/openstack/python-ironicclient/blob/master/ironicclient/common/http.py#L126\n\nI agree that your example case is possible. However, more work would be necessary for solving your example case.","commit_id":"cd8d44fc4c412402d738d08408acff301988f69d"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4818041203aebbe45011c2a271c7732f4abc9d25","unresolved":false,"context_lines":[{"line_number":1013,"context_line":"        LOG.debug(\u0027Trigger crash dump called for instance\u0027, instance\u003dinstance)"},{"line_number":1014,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"        self.ironicclient.call(\"node.inject_nmi\", node.uuid)"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"        LOG.info(_LI(\u0027Successfully triggered crash dump into Ironic node %s\u0027),"},{"line_number":1019,"context_line":"                 node.uuid, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_20275613","line":1016,"updated":"2016-11-24 13:55:57.000000000","message":"Don\u0027t we need to get the ironic client released with the support added, then bump global requirements, and sync that into nova, before we can use this?","commit_id":"f7029385eec946213dfdc5c006f58cfb8301ad04"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"4818041203aebbe45011c2a271c7732f4abc9d25","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"        self.ironicclient.call(\"node.inject_nmi\", node.uuid)"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"        LOG.info(_LI(\u0027Successfully triggered crash dump into Ironic node %s\u0027),"},{"line_number":1019,"context_line":"                 node.uuid, instance\u003dinstance)"},{"line_number":1020,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a74a57a_804aeaaa","line":1017,"updated":"2016-11-24 13:55:57.000000000","message":"Also, what response do we get if the ironic driver doesn\u0027t support this call? Do we get some exception that we bubble up here? Does that trigger a 500 error in the API? That sounds bad if thats true.\n\nI can\u0027t tell what should happen from the ironic spec. Not sure I can see a patch for the API change, maybe its this one? https://review.openstack.org/#/c/207897/5","commit_id":"f7029385eec946213dfdc5c006f58cfb8301ad04"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"9d3882dacf1a3aba41841f5aea725c2cdb976f01","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"        self.ironicclient.call(\"node.inject_nmi\", node.uuid)"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"        LOG.info(_LI(\u0027Successfully triggered crash dump into Ironic node %s\u0027),"},{"line_number":1019,"context_line":"                 node.uuid, instance\u003dinstance)"},{"line_number":1020,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_fca77db9","line":1017,"in_reply_to":"5a74a57a_804aeaaa","updated":"2016-12-12 05:46:28.000000000","message":"Ironic API will be changed by this patch:\n  https://review.openstack.org/#/c/348191/\n\nNova API crash_trigger_dump is asynchronous. Then, 500 error is not returned to a user. However, I listed errors when the feature is not supported and reraised a TriggerCrashDumpNotSupported exception to make it clear.","commit_id":"f7029385eec946213dfdc5c006f58cfb8301ad04"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"48208cb6803f164ffdadff7446969af3e1e5c428","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"                    # ironic-api-version has not been upgraded"},{"line_number":1023,"context_line":"            LOG.exception(_LE(\u0027Failed to trigger crash dump into Ironic node \u0027"},{"line_number":1024,"context_line":"                              \u0027%(node)s: %(reason)s\u0027),"},{"line_number":1025,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027reason\u0027: six.text_type(exc)},"},{"line_number":1026,"context_line":"                          instance\u003dinstance)"},{"line_number":1027,"context_line":"            raise exception.TriggerCrashDumpNotSupported()"},{"line_number":1028,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_067b9f7c","line":1025,"range":{"start_line":1025,"start_character":56,"end_line":1025,"end_character":74},"updated":"2016-12-19 02:21:35.000000000","message":"\"six.text_type(exc)\" should be \"exc\".\n\nSee http://docs.openstack.org/developer/oslo.i18n/guidelines.html#avoid-forcing-the-translation-of-translatable-variables","commit_id":"a03e73e3ce5558769c0d2c623bb3ee6b45a9fe41"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5adf54d8fed9c1cf35b10bfbeb256f77ca67e3e4","unresolved":false,"context_lines":[{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"        try:"},{"line_number":1017,"context_line":"            self.ironicclient.call(\"node.inject_nmi\", node.uuid)"},{"line_number":1018,"context_line":"        except (AttributeError,     # python-ironicclient has not been upgraded"},{"line_number":1019,"context_line":"                ironic.exc.MethodNotAllowed,"},{"line_number":1020,"context_line":"                    # ironic server has not been upgraded"},{"line_number":1021,"context_line":"                ironic.exc.UnsupportedVersion) as exc:"},{"line_number":1022,"context_line":"                    # ironic-api-version has not been upgraded"},{"line_number":1023,"context_line":"            LOG.exception(_LE(\u0027Failed to trigger crash dump into Ironic node \u0027"},{"line_number":1024,"context_line":"                              \u0027%(node)s: %(reason)s\u0027),"},{"line_number":1025,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027reason\u0027: six.text_type(exc)},"},{"line_number":1026,"context_line":"                          instance\u003dinstance)"},{"line_number":1027,"context_line":"            raise exception.TriggerCrashDumpNotSupported()"},{"line_number":1028,"context_line":""},{"line_number":1029,"context_line":"        LOG.info(_LI(\u0027Successfully triggered crash dump into Ironic node %s\u0027),"},{"line_number":1030,"context_line":"                 node.uuid, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6eadb0_751f9bb7","line":1027,"range":{"start_line":1018,"start_character":0,"end_line":1027,"end_character":58},"updated":"2016-12-18 22:38:46.000000000","message":"Do we need to add this new exception for the above exceptions catching?\nI feel it seems easy to see the raw exception directly to distinguish the reason of the failure..\nIn addition, there is not this kind of error handling in this module, so this seems a little overkill and makes the code unreadable..","commit_id":"a03e73e3ce5558769c0d2c623bb3ee6b45a9fe41"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0642bcaa6fe0e9c175f568b5855ca6d276c82e61","unresolved":false,"context_lines":[{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"        try:"},{"line_number":1017,"context_line":"            self.ironicclient.call(\"node.inject_nmi\", node.uuid)"},{"line_number":1018,"context_line":"        except (AttributeError,     # python-ironicclient has not been upgraded"},{"line_number":1019,"context_line":"                ironic.exc.MethodNotAllowed,"},{"line_number":1020,"context_line":"                    # ironic server has not been upgraded"},{"line_number":1021,"context_line":"                ironic.exc.UnsupportedVersion) as exc:"},{"line_number":1022,"context_line":"                    # ironic-api-version has not been upgraded"},{"line_number":1023,"context_line":"            LOG.exception(_LE(\u0027Failed to trigger crash dump into Ironic node \u0027"},{"line_number":1024,"context_line":"                              \u0027%(node)s: %(reason)s\u0027),"},{"line_number":1025,"context_line":"                          {\u0027node\u0027: node.uuid, \u0027reason\u0027: six.text_type(exc)},"},{"line_number":1026,"context_line":"                          instance\u003dinstance)"},{"line_number":1027,"context_line":"            raise exception.TriggerCrashDumpNotSupported()"},{"line_number":1028,"context_line":""},{"line_number":1029,"context_line":"        LOG.info(_LI(\u0027Successfully triggered crash dump into Ironic node %s\u0027),"},{"line_number":1030,"context_line":"                 node.uuid, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da4df55a_028de67a","line":1027,"range":{"start_line":1018,"start_character":0,"end_line":1027,"end_character":58},"in_reply_to":"1a6eadb0_751f9bb7","updated":"2016-12-25 21:27:29.000000000","message":"As you mention, this code is unnecessary.","commit_id":"a03e73e3ce5558769c0d2c623bb3ee6b45a9fe41"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fb5777d8d9a62b7672736c1483ab40acd0b3abf9","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"        LOG.debug(\u0027Trigger crash dump called for instance\u0027, instance\u003dinstance)"},{"line_number":1049,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"        self.ironicclient.call(\"node.inject_nmi\", node.uuid)"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"        LOG.info(_LI(\u0027Successfully triggered crash dump into Ironic node %s\u0027),"},{"line_number":1054,"context_line":"                 node.uuid, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_019d3165","line":1051,"updated":"2017-01-26 09:32:17.000000000","message":"you either need to handle missing inject_nmi call in ironicclient or bump global-requirements to 1.11: https://github.com/openstack/requirements/blob/master/global-requirements.txt#L226. Please keep in mind that requirements freeze is today, so you have very little time to do it. Please make sure to sync with the requirements team if you go down this road.","commit_id":"b1556c2009f5388c6a53341a4601c783f1b0666a"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"da1d5e698be75e874fde14474238c0b799ea351e","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"        LOG.debug(\u0027Trigger crash dump called for instance\u0027, instance\u003dinstance)"},{"line_number":1049,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"        self.ironicclient.call(\"node.inject_nmi\", node.uuid)"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"        LOG.info(_LI(\u0027Successfully triggered crash dump into Ironic node %s\u0027),"},{"line_number":1054,"context_line":"                 node.uuid, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_bcce4258","line":1051,"in_reply_to":"3a461143_019d3165","updated":"2017-01-26 10:05:16.000000000","message":"Thank you, Dmitry.\nI submitted a patch[1] for bumping global-requiremets.\n\n[1]https://review.openstack.org/#/c/425525/","commit_id":"b1556c2009f5388c6a53341a4601c783f1b0666a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4163926d358ebbde59bc8308bb4bc660f6fe07fc","unresolved":false,"context_lines":[{"line_number":1048,"context_line":"        LOG.debug(\u0027Trigger crash dump called for instance\u0027, instance\u003dinstance)"},{"line_number":1049,"context_line":"        node \u003d self._validate_instance_and_node(instance)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"        self.ironicclient.call(\"node.inject_nmi\", node.uuid)"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"        LOG.info(_LI(\u0027Successfully triggered crash dump into Ironic node %s\u0027),"},{"line_number":1054,"context_line":"                 node.uuid, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a461143_da29bde7","line":1051,"in_reply_to":"3a461143_bcce4258","updated":"2017-01-31 02:55:38.000000000","message":"I guess this is fine as a total pass through, and if any errors are raised they are just logged in the compute manager because this is an RPC cast from the API to the compute:\n\nhttps://github.com/openstack/nova/blob/dae6b760b9c40bbf3b72a0218dbf1dbc823f30e2/nova/compute/rpcapi.py#L1118\n\nhttps://github.com/openstack/nova/blob/dae6b760b9c40bbf3b72a0218dbf1dbc823f30e2/nova/compute/manager.py#L2556\n\nSeems at some point we should have a trigger_crash_dump.error notification for when this fails, but for now if it fails the instance gets a fault recorded but the status doesn\u0027t change.","commit_id":"b1556c2009f5388c6a53341a4601c783f1b0666a"}]}
