)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add delete_on_termination to volume-attach API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support add \u0027delete_on_termination\u0027 field to the voume attach API to support"},{"line_number":10,"context_line":"configuring whether to delete the data volume when the instance is destroyed."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"While attaching a volume to a shelved offloaded server, the BDM is created in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7faddb67_af188483","line":9,"range":{"start_line":9,"start_character":49,"end_line":9,"end_character":54},"updated":"2019-09-03 18:31:07.000000000","message":"volume","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add delete_on_termination to volume-attach API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support add \u0027delete_on_termination\u0027 field to the voume attach API to support"},{"line_number":10,"context_line":"configuring whether to delete the data volume when the instance is destroyed."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"While attaching a volume to a shelved offloaded server, the BDM is created in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7faddb67_3ebb61c4","line":9,"range":{"start_line":9,"start_character":49,"end_line":9,"end_character":54},"in_reply_to":"7faddb67_af188483","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Support add \u0027delete_on_termination\u0027 field to the voume attach API to support"},{"line_number":10,"context_line":"configuring whether to delete the data volume when the instance is destroyed."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"While attaching a volume to a shelved offloaded server, the BDM is created in"},{"line_number":13,"context_line":"the API service. To avoid issues with trying to attach a volume with"},{"line_number":14,"context_line":"\u0027delete_on_termination\u003dtrue\u0027 to a server running on an older compute service,"},{"line_number":15,"context_line":"the implementation should just set the field in the API rather than the"},{"line_number":16,"context_line":"compute service."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implements: blueprint support-delete-on-termination-in-server-attach-volume"},{"line_number":19,"context_line":"Change-Id: I55731b1822a4e32909665a2872d80895cb5b12f7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7faddb67_ef019c08","line":16,"range":{"start_line":12,"start_character":0,"end_line":16,"end_character":16},"updated":"2019-09-03 18:31:07.000000000","message":"This is copied out of the spec\u0027s upgrade impact section and is what I mentioned inline, but it\u0027s not what you implemented. This also seems a bit out of place in the commit message so I\u0027d probably remove it, or re-word it to something like, \"To avoid upgrade impact issues with older computes, the delete_on_termination field is set in the API rather than when the BDM is created in the compute service.\"","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Support add \u0027delete_on_termination\u0027 field to the voume attach API to support"},{"line_number":10,"context_line":"configuring whether to delete the data volume when the instance is destroyed."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"While attaching a volume to a shelved offloaded server, the BDM is created in"},{"line_number":13,"context_line":"the API service. To avoid issues with trying to attach a volume with"},{"line_number":14,"context_line":"\u0027delete_on_termination\u003dtrue\u0027 to a server running on an older compute service,"},{"line_number":15,"context_line":"the implementation should just set the field in the API rather than the"},{"line_number":16,"context_line":"compute service."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Implements: blueprint support-delete-on-termination-in-server-attach-volume"},{"line_number":19,"context_line":"Change-Id: I55731b1822a4e32909665a2872d80895cb5b12f7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7faddb67_dead6d84","line":16,"range":{"start_line":12,"start_character":0,"end_line":16,"end_character":16},"in_reply_to":"7faddb67_ef019c08","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"}],"api-ref/source/os-volume-attachments.inc":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":51,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.70/list-volume-attachments-resp.json"},{"line_number":52,"context_line":"   :language: javascript"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**Example List \u0027delete_on_termination\u0027 volume attachments for an instance (v2.78): JSON response**"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/list-volume-attachments-resp.json"},{"line_number":57,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"7faddb67_92084f27","line":54,"updated":"2019-09-03 18:31:07.000000000","message":"I don\u0027t really think we probably need a 2.78 sample for this list API, how about just for the POST API?","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":51,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.70/list-volume-attachments-resp.json"},{"line_number":52,"context_line":"   :language: javascript"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"**Example List \u0027delete_on_termination\u0027 volume attachments for an instance (v2.78): JSON response**"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/list-volume-attachments-resp.json"},{"line_number":57,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"7faddb67_f4ddeb6c","line":54,"in_reply_to":"7faddb67_92084f27","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":97,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.49/attach-volume-to-server-req.json"},{"line_number":98,"context_line":"   :language: javascript"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"**Example Attach a volume to an instance and marked \u0027delete_on_termination\u0027 to it (v2.78): JSON request**"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/attach-volume-to-server-req.json"},{"line_number":103,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"7faddb67_520e5732","line":100,"range":{"start_line":100,"start_character":41,"end_line":100,"end_character":81},"updated":"2019-09-03 18:31:07.000000000","message":"with \"delete_on_termination\"","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":97,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.49/attach-volume-to-server-req.json"},{"line_number":98,"context_line":"   :language: javascript"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"**Example Attach a volume to an instance and marked \u0027delete_on_termination\u0027 to it (v2.78): JSON request**"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/attach-volume-to-server-req.json"},{"line_number":103,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"7faddb67_b4d53345","line":100,"range":{"start_line":100,"start_character":41,"end_line":100,"end_character":81},"in_reply_to":"7faddb67_520e5732","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":125,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.70/attach-volume-to-server-resp.json"},{"line_number":126,"context_line":"   :language: javascript"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"**Example Attach a volume marked \u0027delete_on_termination\u0027 to an instance (v2.78): JSON response**"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/attach-volume-to-server-resp.json"},{"line_number":131,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"7faddb67_b226abb9","line":128,"range":{"start_line":128,"start_character":26,"end_line":128,"end_character":71},"updated":"2019-09-03 18:31:07.000000000","message":"with \"delete_on_termination\"","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":125,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.70/attach-volume-to-server-resp.json"},{"line_number":126,"context_line":"   :language: javascript"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"**Example Attach a volume marked \u0027delete_on_termination\u0027 to an instance (v2.78): JSON response**"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/attach-volume-to-server-resp.json"},{"line_number":131,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"7faddb67_54c63f9e","line":128,"range":{"start_line":128,"start_character":26,"end_line":128,"end_character":71},"in_reply_to":"7faddb67_b226abb9","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":172,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.70/volume-attachment-detail-resp.json"},{"line_number":173,"context_line":"   :language: javascript"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"**Example Show a detail of marked \u0027delete_on_termination\u0027 volume attachment (v2.78): JSON response**"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/volume-attachment-detail-resp.json"},{"line_number":178,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"7faddb67_92212fa1","line":175,"updated":"2019-09-03 18:31:07.000000000","message":"I don\u0027t think we need this example either.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":172,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.70/volume-attachment-detail-resp.json"},{"line_number":173,"context_line":"   :language: javascript"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"**Example Show a detail of marked \u0027delete_on_termination\u0027 volume attachment (v2.78): JSON response**"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/volume-attachment-detail-resp.json"},{"line_number":178,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":12,"id":"7faddb67_94d03755","line":175,"in_reply_to":"7faddb67_92212fa1","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dcc7cad9e40b5693d325bdf05880118076b01719","unresolved":false,"context_lines":[{"line_number":92,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.49/attach-volume-to-server-req.json"},{"line_number":93,"context_line":"   :language: javascript"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"**Example Attach a volume to an instance with \u0027delete_on_termination\u0027 (v2.78): JSON request**"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/attach-volume-to-server-req.json"},{"line_number":98,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"7faddb67_de1fa26d","line":95,"range":{"start_line":95,"start_character":46,"end_line":95,"end_character":69},"updated":"2019-09-04 14:52:58.000000000","message":"use double quotes here","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dcf252d1ecf1bdfbd5efd043d9b545f58a2a8c38","unresolved":false,"context_lines":[{"line_number":92,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.49/attach-volume-to-server-req.json"},{"line_number":93,"context_line":"   :language: javascript"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"**Example Attach a volume to an instance with \u0027delete_on_termination\u0027 (v2.78): JSON request**"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/attach-volume-to-server-req.json"},{"line_number":98,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"7faddb67_591aec7c","line":95,"range":{"start_line":95,"start_character":46,"end_line":95,"end_character":69},"in_reply_to":"7faddb67_de1fa26d","updated":"2019-09-04 15:22:53.000000000","message":"Done","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dcf252d1ecf1bdfbd5efd043d9b545f58a2a8c38","unresolved":false,"context_lines":[{"line_number":108,"context_line":"  - serverId: server_id"},{"line_number":109,"context_line":"  - volumeId: volumeId_resp"},{"line_number":110,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":111,"context_line":"  - delete_on_termination: delete_on_termination_attachments"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"**Example Attach a volume to an instance: JSON response**"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":14,"id":"7faddb67_f4a95ddc","line":111,"range":{"start_line":111,"start_character":27,"end_line":111,"end_character":60},"updated":"2019-09-04 15:22:53.000000000","message":"Re-using this same description doesn\u0027t really make sense for the response. I looked at the description for the server show details parameter \"os-extended-volumes:volumes_attached.delete_on_termination\" and it says:\n\n\"A flag indicating if the attached volume will be deleted when the server is deleted. By default this is False and can only be set when creating a volume while creating a server, which is commonly referred to as boot from volume.\"\n\nSo two things:\n\n1. We could probably re-use \"A flag indicating if the attached volume will be deleted when the server is deleted. By default this is False\" here.\n\n2. We should modify that description to remove the \"and can only be set when creating a volume while creating a server, which is commonly referred to as boot from volume\" part since it\u0027s no longer true.","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"883c3f84db5fcc6319467755ceb293d5dd4f9c21","unresolved":false,"context_lines":[{"line_number":108,"context_line":"  - serverId: server_id"},{"line_number":109,"context_line":"  - volumeId: volumeId_resp"},{"line_number":110,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":111,"context_line":"  - delete_on_termination: delete_on_termination_attachments"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"**Example Attach a volume to an instance: JSON response**"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":14,"id":"7faddb67_74d56d42","line":111,"range":{"start_line":111,"start_character":27,"end_line":111,"end_character":60},"in_reply_to":"7faddb67_f4a95ddc","updated":"2019-09-04 15:35:56.000000000","message":"Done","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dcc7cad9e40b5693d325bdf05880118076b01719","unresolved":false,"context_lines":[{"line_number":120,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.70/attach-volume-to-server-resp.json"},{"line_number":121,"context_line":"   :language: javascript"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"**Example Attach a volume with \u0027delete_on_termination\u0027 (v2.78): JSON response**"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/attach-volume-to-server-resp.json"},{"line_number":126,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"7faddb67_7e2a2e91","line":123,"range":{"start_line":123,"start_character":31,"end_line":123,"end_character":54},"updated":"2019-09-04 14:52:58.000000000","message":"same","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dcf252d1ecf1bdfbd5efd043d9b545f58a2a8c38","unresolved":false,"context_lines":[{"line_number":120,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.70/attach-volume-to-server-resp.json"},{"line_number":121,"context_line":"   :language: javascript"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"**Example Attach a volume with \u0027delete_on_termination\u0027 (v2.78): JSON response**"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/v2.78/attach-volume-to-server-resp.json"},{"line_number":126,"context_line":"   :language: javascript"}],"source_content_type":"text/x-c++src","patch_set":14,"id":"7faddb67_39137067","line":123,"range":{"start_line":123,"start_character":31,"end_line":123,"end_character":54},"in_reply_to":"7faddb67_7e2a2e91","updated":"2019-09-04 15:22:53.000000000","message":"Done","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73a28d3036f4d89d174275e7ac68a19741c48a34","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":42,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"**Example List volume attachments for an instance: JSON response**"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/list-volume-attachments-resp.json"},{"line_number":47,"context_line":"   :language: javascript"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"**Example List tagged volume attachments for an instance (v2.70): JSON response**"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"7faddb67_097974fa","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":24},"updated":"2019-09-05 03:44:27.000000000","message":"we can replace this with the 2.78 sample file which can show latest response.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9d2b4cb5f2a576eb60be56b6d9a631132ba03365","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":42,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"**Example List volume attachments for an instance: JSON response**"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/list-volume-attachments-resp.json"},{"line_number":47,"context_line":"   :language: javascript"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"**Example List tagged volume attachments for an instance (v2.70): JSON response**"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"5faad753_9f532be3","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":24},"in_reply_to":"5faad753_687a3b89","updated":"2019-09-06 05:26:19.000000000","message":"ok. we can show v2,1 sample also but showing the latest sample are helpful to know the latest API request/response.\n\nwe can have both and replace 2.70 sample(L49) with 2.78","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"499f296e07609ea0e54db57da40a0cf2566b3c4e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":42,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"**Example List volume attachments for an instance: JSON response**"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/list-volume-attachments-resp.json"},{"line_number":47,"context_line":"   :language: javascript"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"**Example List tagged volume attachments for an instance (v2.70): JSON response**"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"5faad753_f509ffdc","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":24},"in_reply_to":"5faad753_9f532be3","updated":"2019-09-09 05:45:13.000000000","message":"Done","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ca7aed897e7117a48acaca6d69ab0468e737bde2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":42,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"**Example List volume attachments for an instance: JSON response**"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/list-volume-attachments-resp.json"},{"line_number":47,"context_line":"   :language: javascript"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"**Example List tagged volume attachments for an instance (v2.70): JSON response**"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"5faad753_687a3b89","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":24},"in_reply_to":"5faad753_e5f416d2","updated":"2019-09-05 21:56:24.000000000","message":"There is also nothing about this in the API ref docs:\n\nhttps://docs.openstack.org/nova/latest/contributor/api-ref-guideline.html#example\n\nJust that if multiple samples are shown, they should be in ascending order by microversion.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"27f13bff2b8f17c55579c8c2574b821d1feb1714","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":42,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"**Example List volume attachments for an instance: JSON response**"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/list-volume-attachments-resp.json"},{"line_number":47,"context_line":"   :language: javascript"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"**Example List tagged volume attachments for an instance (v2.70): JSON response**"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"7faddb67_0cb8a2c5","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":24},"in_reply_to":"7faddb67_097974fa","updated":"2019-09-05 05:11:16.000000000","message":"+1","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c4a10df8f5fd8ef8acfa45ada5b2686087253824","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":42,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"**Example List volume attachments for an instance: JSON response**"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/list-volume-attachments-resp.json"},{"line_number":47,"context_line":"   :language: javascript"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"**Example List tagged volume attachments for an instance (v2.70): JSON response**"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"7faddb67_16466851","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":24},"in_reply_to":"7faddb67_097974fa","updated":"2019-09-05 13:17:54.000000000","message":"\u003e we can replace this with the 2.78 sample file which can show latest\n \u003e response.\n\nWe don\u0027t normally do that do we? We normally have several examples at a 2.1 and subsequent microversions where there are more interesting changes. I think I\u0027d still want the 2.1 sample since things like OSC default to 2.1, but if you also want to show the latest as well then that\u0027s probably OK, but let\u0027s handle it in a follow up.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cce751df6993aefdd904e46552bc876e6e301e28","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":42,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"**Example List volume attachments for an instance: JSON response**"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/list-volume-attachments-resp.json"},{"line_number":47,"context_line":"   :language: javascript"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"**Example List tagged volume attachments for an instance (v2.70): JSON response**"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"7faddb67_02286983","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":24},"in_reply_to":"7faddb67_097974fa","updated":"2019-09-05 07:16:05.000000000","message":"I will replace this by follow-up patch.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c62a40f58d3b7c159743fc168e9a786d4500bef0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":42,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"**Example List volume attachments for an instance: JSON response**"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/list-volume-attachments-resp.json"},{"line_number":47,"context_line":"   :language: javascript"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"**Example List tagged volume attachments for an instance (v2.70): JSON response**"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"7faddb67_b7a98e8f","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":24},"in_reply_to":"7faddb67_16466851","updated":"2019-09-05 15:05:22.000000000","message":"I think we sometime back(do not remember in takashi api-ref guide ?) concluded to show up the latest one always. and few older one also if they are interested one.\n\n+1 to do it in followup, no big things.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a4a66cab8adcacb423f0eeb54d1afd478230a594","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":42,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"**Example List volume attachments for an instance: JSON response**"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/list-volume-attachments-resp.json"},{"line_number":47,"context_line":"   :language: javascript"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"**Example List tagged volume attachments for an instance (v2.70): JSON response**"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"5faad753_e5f416d2","line":47,"range":{"start_line":44,"start_character":0,"end_line":47,"end_character":24},"in_reply_to":"7faddb67_b7a98e8f","updated":"2019-09-05 21:36:29.000000000","message":"\u003e I think we sometime back(do not remember in takashi api-ref guide ?) concluded to show up the latest one always.\n\nOK I don\u0027t remember that, but it also doesn\u0027t seem good to only show the latest, especially since there are lots of tools and applications out there that don\u0027t use anything beyond 2.1 so I think it\u0027s pretty important to at least show 2.1 and optionally the latest after that - it\u0027s similar to why we don\u0027t default to \u0027latest\u0027.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73a28d3036f4d89d174275e7ac68a19741c48a34","unresolved":false,"context_lines":[{"line_number":157,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":158,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"**Example Show a detail of a volume attachment: JSON response**"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/volume-attachment-detail-resp.json"},{"line_number":163,"context_line":"   :language: javascript"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"**Example Show a detail of a tagged volume attachment (v2.70): JSON response**"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"7faddb67_e98178c3","line":163,"range":{"start_line":160,"start_character":0,"end_line":163,"end_character":24},"updated":"2019-09-05 03:44:27.000000000","message":"ditto","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"27f13bff2b8f17c55579c8c2574b821d1feb1714","unresolved":false,"context_lines":[{"line_number":157,"context_line":"  - tag: device_tag_bdm_attachment_resp"},{"line_number":158,"context_line":"  - delete_on_termination: delete_on_termination_attachments_resp"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"**Example Show a detail of a volume attachment: JSON response**"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":".. literalinclude:: ../../doc/api_samples/os-volumes/volume-attachment-detail-resp.json"},{"line_number":163,"context_line":"   :language: javascript"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"**Example Show a detail of a tagged volume attachment (v2.70): JSON response**"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":15,"id":"7faddb67_2cbb1ec4","line":163,"range":{"start_line":160,"start_character":0,"end_line":163,"end_character":24},"in_reply_to":"7faddb67_e98178c3","updated":"2019-09-05 05:11:16.000000000","message":"+1","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":2248,"context_line":"  in: body"},{"line_number":2249,"context_line":"  required: false"},{"line_number":2250,"context_line":"  type: boolean"},{"line_number":2251,"context_line":"delete_on_termination_atachments:"},{"line_number":2252,"context_line":"  description: |"},{"line_number":2253,"context_line":"    To delete the attached volume when the server is destroyed, specify ``true``."},{"line_number":2254,"context_line":"    Otherwise, specify ``false``. Default: ``false``"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7faddb67_523737e4","line":2251,"range":{"start_line":2251,"start_character":22,"end_line":2251,"end_character":24},"updated":"2019-09-03 18:31:07.000000000","message":"attachments","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":2248,"context_line":"  in: body"},{"line_number":2249,"context_line":"  required: false"},{"line_number":2250,"context_line":"  type: boolean"},{"line_number":2251,"context_line":"delete_on_termination_atachments:"},{"line_number":2252,"context_line":"  description: |"},{"line_number":2253,"context_line":"    To delete the attached volume when the server is destroyed, specify ``true``."},{"line_number":2254,"context_line":"    Otherwise, specify ``false``. Default: ``false``"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7faddb67_b43a1395","line":2251,"range":{"start_line":2251,"start_character":22,"end_line":2251,"end_character":24},"in_reply_to":"7faddb67_523737e4","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"}],"doc/api_samples/os-volumes/v2.78/attach-volume-to-server-req.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"volumeAttachment\": {"},{"line_number":3,"context_line":"        \"volumeId\": \"a26887c6-c47b-4654-abb5-dfadf7d3f803\","},{"line_number":4,"context_line":"        \"tag\": \"foo\","},{"line_number":5,"context_line":"        \"delete_on_termination\": false"},{"line_number":6,"context_line":"    }"},{"line_number":7,"context_line":"}"}],"source_content_type":"application/json","patch_set":12,"id":"7faddb67_7251130d","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":38},"updated":"2019-09-03 18:31:07.000000000","message":"This is the default that you get before the microversion, right? Therefore it would be more interesting to use true in the sample since that\u0027s really what you get with this new microversion is the ability to attach a volume and have nova delete it when the server is deleted.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"volumeAttachment\": {"},{"line_number":3,"context_line":"        \"volumeId\": \"a26887c6-c47b-4654-abb5-dfadf7d3f803\","},{"line_number":4,"context_line":"        \"tag\": \"foo\","},{"line_number":5,"context_line":"        \"delete_on_termination\": false"},{"line_number":6,"context_line":"    }"},{"line_number":7,"context_line":"}"}],"source_content_type":"application/json","patch_set":12,"id":"7faddb67_34462323","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":38},"in_reply_to":"7faddb67_7251130d","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"}],"nova/api/openstack/api_version_request.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":203,"context_line":"             ``GET /servers/{server_id}/os-instance-actions/{request_id}``."},{"line_number":204,"context_line":"    * 2.77 - Add support for specifying ``availability_zone`` to unshelve of a"},{"line_number":205,"context_line":"             shelved offload server."},{"line_number":206,"context_line":"    * 2.78 - Adds support for specifing ``delete_on_termination`` fields in the"},{"line_number":207,"context_line":"             request body to"},{"line_number":208,"context_line":"             ``POST /servers/{server_id}/os-volume_attachments`` and exposes"},{"line_number":209,"context_line":"             this via the response from"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_523c17be","line":206,"range":{"start_line":206,"start_character":66,"end_line":206,"end_character":72},"updated":"2019-09-03 18:31:07.000000000","message":"field","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":203,"context_line":"             ``GET /servers/{server_id}/os-instance-actions/{request_id}``."},{"line_number":204,"context_line":"    * 2.77 - Add support for specifying ``availability_zone`` to unshelve of a"},{"line_number":205,"context_line":"             shelved offload server."},{"line_number":206,"context_line":"    * 2.78 - Adds support for specifing ``delete_on_termination`` fields in the"},{"line_number":207,"context_line":"             request body to"},{"line_number":208,"context_line":"             ``POST /servers/{server_id}/os-volume_attachments`` and exposes"},{"line_number":209,"context_line":"             this via the response from"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_323f1bb6","line":206,"range":{"start_line":206,"start_character":30,"end_line":206,"end_character":39},"updated":"2019-09-03 18:31:07.000000000","message":"specifying","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"             ``GET /servers/{server_id}/os-instance-actions/{request_id}``."},{"line_number":204,"context_line":"    * 2.77 - Add support for specifying ``availability_zone`` to unshelve of a"},{"line_number":205,"context_line":"             shelved offload server."},{"line_number":206,"context_line":"    * 2.78 - Adds support for specifing ``delete_on_termination`` fields in the"},{"line_number":207,"context_line":"             request body to"},{"line_number":208,"context_line":"             ``POST /servers/{server_id}/os-volume_attachments`` and exposes"},{"line_number":209,"context_line":"             this via the response from"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_7459fbfa","line":206,"range":{"start_line":206,"start_character":30,"end_line":206,"end_character":39},"in_reply_to":"7faddb67_323f1bb6","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"             ``GET /servers/{server_id}/os-instance-actions/{request_id}``."},{"line_number":204,"context_line":"    * 2.77 - Add support for specifying ``availability_zone`` to unshelve of a"},{"line_number":205,"context_line":"             shelved offload server."},{"line_number":206,"context_line":"    * 2.78 - Adds support for specifing ``delete_on_termination`` fields in the"},{"line_number":207,"context_line":"             request body to"},{"line_number":208,"context_line":"             ``POST /servers/{server_id}/os-volume_attachments`` and exposes"},{"line_number":209,"context_line":"             this via the response from"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_1472077d","line":206,"range":{"start_line":206,"start_character":66,"end_line":206,"end_character":72},"in_reply_to":"7faddb67_523c17be","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73a28d3036f4d89d174275e7ac68a19741c48a34","unresolved":false,"context_lines":[{"line_number":207,"context_line":"             request body to"},{"line_number":208,"context_line":"             ``POST /servers/{server_id}/os-volume_attachments`` and exposes"},{"line_number":209,"context_line":"             this via the response from"},{"line_number":210,"context_line":"             ``GET /servers/{server_id}/os-volume_attachments`` and"},{"line_number":211,"context_line":"             ``GET /servers/{server_id}/os-volume_attachments/{volume_id}``."},{"line_number":212,"context_line":"\"\"\""},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_a9670051","line":210,"range":{"start_line":210,"start_character":13,"end_line":210,"end_character":15},"updated":"2019-09-05 03:44:27.000000000","message":"POST response also\n- ``POST /servers/{server_id}/os-volume_attachments`","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"27f13bff2b8f17c55579c8c2574b821d1feb1714","unresolved":false,"context_lines":[{"line_number":207,"context_line":"             request body to"},{"line_number":208,"context_line":"             ``POST /servers/{server_id}/os-volume_attachments`` and exposes"},{"line_number":209,"context_line":"             this via the response from"},{"line_number":210,"context_line":"             ``GET /servers/{server_id}/os-volume_attachments`` and"},{"line_number":211,"context_line":"             ``GET /servers/{server_id}/os-volume_attachments/{volume_id}``."},{"line_number":212,"context_line":"\"\"\""},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_ccadaa84","line":210,"range":{"start_line":210,"start_character":13,"end_line":210,"end_character":15},"in_reply_to":"7faddb67_a9670051","updated":"2019-09-05 05:11:16.000000000","message":"+1","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cce751df6993aefdd904e46552bc876e6e301e28","unresolved":false,"context_lines":[{"line_number":207,"context_line":"             request body to"},{"line_number":208,"context_line":"             ``POST /servers/{server_id}/os-volume_attachments`` and exposes"},{"line_number":209,"context_line":"             this via the response from"},{"line_number":210,"context_line":"             ``GET /servers/{server_id}/os-volume_attachments`` and"},{"line_number":211,"context_line":"             ``GET /servers/{server_id}/os-volume_attachments/{volume_id}``."},{"line_number":212,"context_line":"\"\"\""},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_8788ebc5","line":210,"range":{"start_line":210,"start_character":13,"end_line":210,"end_character":15},"in_reply_to":"7faddb67_a9670051","updated":"2019-09-05 07:16:05.000000000","message":"Got it.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"}],"nova/api/openstack/compute/rest_api_version_history.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1003,"context_line":"2.78"},{"line_number":1004,"context_line":"----"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_b2746b9d","line":1006,"range":{"start_line":1006,"start_character":39,"end_line":1006,"end_character":49},"updated":"2019-09-03 18:31:07.000000000","message":"specifying the","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1003,"context_line":"2.78"},{"line_number":1004,"context_line":"----"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_d4fc6fb7","line":1006,"range":{"start_line":1006,"start_character":39,"end_line":1006,"end_character":49},"in_reply_to":"7faddb67_b2746b9d","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"----"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_f244234a","line":1007,"range":{"start_line":1007,"start_character":0,"end_line":1007,"end_character":6},"updated":"2019-09-03 18:31:07.000000000","message":"field","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"----"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_926fefc2","line":1007,"range":{"start_line":1007,"start_character":27,"end_line":1007,"end_character":73},"updated":"2019-09-03 18:31:07.000000000","message":"when attaching a volume to a server","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"----"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_f4f96bc4","line":1007,"range":{"start_line":1007,"start_character":27,"end_line":1007,"end_character":73},"in_reply_to":"7faddb67_926fefc2","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1004,"context_line":"----"},{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_b431b3a4","line":1007,"range":{"start_line":1007,"start_character":0,"end_line":1007,"end_character":6},"in_reply_to":"7faddb67_f244234a","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."},{"line_number":1011,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_5265f7df","line":1008,"range":{"start_line":1008,"start_character":66,"end_line":1008,"end_character":74},"updated":"2019-09-03 18:31:07.000000000","message":"server","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1005,"context_line":""},{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."},{"line_number":1011,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_5422bf55","line":1008,"range":{"start_line":1008,"start_character":66,"end_line":1008,"end_character":74},"in_reply_to":"7faddb67_5265f7df","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"The APIs that need to change are as follows:"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_b299cbd0","line":1009,"range":{"start_line":1009,"start_character":14,"end_line":1009,"end_character":47},"updated":"2019-09-03 18:31:07.000000000","message":"Also, ``delete_on_termination`` is added","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1006,"context_line":"API microversion 2.77 adds support for specifying ``delete_on_termination``"},{"line_number":1007,"context_line":"fields in the request body of the ``Attach a volume to an instance`` API,"},{"line_number":1008,"context_line":"to support configuring whether to delete the data volume when the instance"},{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"The APIs that need to change are as follows:"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_7427bb64","line":1009,"range":{"start_line":1009,"start_character":14,"end_line":1009,"end_character":47},"in_reply_to":"7faddb67_b299cbd0","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"The APIs that need to change are as follows:"},{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"* ``POST /servers/{server_id}/os-volume_attachments``"},{"line_number":1015,"context_line":"* ``GET /servers/{server_id}/os-volume_attachments``"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_729fd3b2","line":1012,"range":{"start_line":1012,"start_character":0,"end_line":1012,"end_character":28},"updated":"2019-09-03 18:31:07.000000000","message":"The affected APIs","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"is destroyed. And add ``delete_on_termination`` to the GET responses when"},{"line_number":1010,"context_line":"showing attached volumes."},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"The APIs that need to change are as follows:"},{"line_number":1013,"context_line":""},{"line_number":1014,"context_line":"* ``POST /servers/{server_id}/os-volume_attachments``"},{"line_number":1015,"context_line":"* ``GET /servers/{server_id}/os-volume_attachments``"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7faddb67_1420c748","line":1012,"range":{"start_line":1012,"start_character":0,"end_line":1012,"end_character":28},"in_reply_to":"7faddb67_729fd3b2","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"27f13bff2b8f17c55579c8c2574b821d1feb1714","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"field in the request body when attaching a volume to a server, to support"},{"line_number":1008,"context_line":"configuring whether to delete the data volume when the server is destroyed."},{"line_number":1009,"context_line":"Also, ``delete_on_termination`` is added to the GET responses when showing"},{"line_number":1010,"context_line":"attached volumes."},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"The affected APIs are as follows:"},{"line_number":1013,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_acc62e48","line":1010,"updated":"2019-09-05 05:11:16.000000000","message":"Add a description about a response of POST /servers/{server_id}/os-volume_attachments.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cce751df6993aefdd904e46552bc876e6e301e28","unresolved":false,"context_lines":[{"line_number":1007,"context_line":"field in the request body when attaching a volume to a server, to support"},{"line_number":1008,"context_line":"configuring whether to delete the data volume when the server is destroyed."},{"line_number":1009,"context_line":"Also, ``delete_on_termination`` is added to the GET responses when showing"},{"line_number":1010,"context_line":"attached volumes."},{"line_number":1011,"context_line":""},{"line_number":1012,"context_line":"The affected APIs are as follows:"},{"line_number":1013,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7faddb67_c79a6311","line":1010,"in_reply_to":"7faddb67_acc62e48","updated":"2019-09-05 07:16:05.000000000","message":"Okay","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"}],"nova/api/openstack/compute/schemas/volumes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"create_volume_attachment_v278 \u003d copy.deepcopy(create_volume_attachment_v249)"},{"line_number":91,"context_line":"create_volume_attachment_v278[\u0027properties\u0027][\u0027volumeAttachment\u0027]["},{"line_number":92,"context_line":"    \u0027properties\u0027][\u0027delete_on_termination\u0027] \u003d parameter_types.boolean"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"update_volume_attachment \u003d copy.deepcopy(create_volume_attachment)"},{"line_number":95,"context_line":"del update_volume_attachment[\u0027properties\u0027][\u0027volumeAttachment\u0027]["}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_927daf6e","line":92,"range":{"start_line":92,"start_character":45,"end_line":92,"end_character":68},"updated":"2019-09-03 18:31:07.000000000","message":"✓ this matches the server create schema:\n\nhttps://github.com/openstack/nova/blob/5e6446bb2b12ea0931d33520143d530aa8a178be/nova/api/openstack/compute/schemas/servers.py#L37","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"create_volume_attachment_v278 \u003d copy.deepcopy(create_volume_attachment_v249)"},{"line_number":91,"context_line":"create_volume_attachment_v278[\u0027properties\u0027][\u0027volumeAttachment\u0027]["},{"line_number":92,"context_line":"    \u0027properties\u0027][\u0027delete_on_termination\u0027] \u003d parameter_types.boolean"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"update_volume_attachment \u003d copy.deepcopy(create_volume_attachment)"},{"line_number":95,"context_line":"del update_volume_attachment[\u0027properties\u0027][\u0027volumeAttachment\u0027]["}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_f412cbfc","line":92,"range":{"start_line":92,"start_character":45,"end_line":92,"end_character":68},"in_reply_to":"7faddb67_927daf6e","updated":"2019-09-04 04:12:29.000000000","message":"Yeah, this should keep the same as the server create sachema.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"}],"nova/api/openstack/compute/volumes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    :param bdm: BlockDeviceMapping object for an attached volume"},{"line_number":214,"context_line":"    :param show_tag: True if the \"tag\" field should be in the response, False"},{"line_number":215,"context_line":"        to exclude the \"tag\" field from the response"},{"line_number":216,"context_line":"    :param show_del_tag: True if the \"delete_on_termination\" field should be"},{"line_number":217,"context_line":"        in the response, False to exclude the \"delete_on_termination\" field"},{"line_number":218,"context_line":"        from the response"},{"line_number":219,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_f28bc365","line":216,"range":{"start_line":216,"start_character":20,"end_line":216,"end_character":23},"updated":"2019-09-03 18:31:07.000000000","message":"Remove this suffix, it\u0027s confusing with the \u0027show_tag\u0027 kwarg you copied it from.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    :param bdm: BlockDeviceMapping object for an attached volume"},{"line_number":214,"context_line":"    :param show_tag: True if the \"tag\" field should be in the response, False"},{"line_number":215,"context_line":"        to exclude the \"tag\" field from the response"},{"line_number":216,"context_line":"    :param show_del_tag: True if the \"delete_on_termination\" field should be"},{"line_number":217,"context_line":"        in the response, False to exclude the \"delete_on_termination\" field"},{"line_number":218,"context_line":"        from the response"},{"line_number":219,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_14ce8782","line":216,"range":{"start_line":216,"start_character":20,"end_line":216,"end_character":23},"in_reply_to":"7faddb67_f28bc365","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        attachment[\u0027device\u0027] \u003d device"},{"line_number":382,"context_line":"        if api_version_request.is_supported(req, \u00272.70\u0027):"},{"line_number":383,"context_line":"            attachment[\u0027tag\u0027] \u003d tag"},{"line_number":384,"context_line":"        if api_version_request.is_supported(req, \u00272.78\u0027):"},{"line_number":385,"context_line":"            attachment[\u0027delete_on_termination\u0027] \u003d delete_on_termination"},{"line_number":386,"context_line":"        return {\u0027volumeAttachment\u0027: attachment}"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_52e2d702","line":384,"updated":"2019-09-03 18:31:07.000000000","message":"It would probably be good to have a simple unit test for 2.77 where you assert that delete_on_termination is not in the response.\n\nAlso, it would be good to have a simple unit test using 2.78 where you don\u0027t specify delete_on_termination in the request but assert it is in the response and defaults to False.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a853f6e9153154da4f81294d937492df0d31496b","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        attachment[\u0027device\u0027] \u003d device"},{"line_number":382,"context_line":"        if api_version_request.is_supported(req, \u00272.70\u0027):"},{"line_number":383,"context_line":"            attachment[\u0027tag\u0027] \u003d tag"},{"line_number":384,"context_line":"        if api_version_request.is_supported(req, \u00272.78\u0027):"},{"line_number":385,"context_line":"            attachment[\u0027delete_on_termination\u0027] \u003d delete_on_termination"},{"line_number":386,"context_line":"        return {\u0027volumeAttachment\u0027: attachment}"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_c71cbc14","line":384,"in_reply_to":"7faddb67_52e2d702","updated":"2019-09-04 08:10:47.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"}],"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":4020,"context_line":"            #             the same time. When db access is removed from"},{"line_number":4021,"context_line":"            #             compute, the bdm will be created here and we will"},{"line_number":4022,"context_line":"            #             have to make sure that they are assigned atomically."},{"line_number":4023,"context_line":"            volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name("},{"line_number":4024,"context_line":"                context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":4025,"context_line":"                device_type\u003ddevice_type, tag\u003dtag,"},{"line_number":4026,"context_line":"                multiattach\u003dvolume[\u0027multiattach\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_723b539a","line":4023,"range":{"start_line":4023,"start_character":45,"end_line":4023,"end_character":70},"updated":"2019-09-03 18:31:07.000000000","message":"As mentioned elsewhere, don\u0027t pass this to compute, just set it on the created bdm and save it:\n\n   volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name(\n   ...\n   volume_bdm.delete_on_termination \u003d delete_on_termination\n   volume_bdm.save()","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":4020,"context_line":"            #             the same time. When db access is removed from"},{"line_number":4021,"context_line":"            #             compute, the bdm will be created here and we will"},{"line_number":4022,"context_line":"            #             have to make sure that they are assigned atomically."},{"line_number":4023,"context_line":"            volume_bdm \u003d self.compute_rpcapi.reserve_block_device_name("},{"line_number":4024,"context_line":"                context, instance, device, volume_id, disk_bus\u003ddisk_bus,"},{"line_number":4025,"context_line":"                device_type\u003ddevice_type, tag\u003dtag,"},{"line_number":4026,"context_line":"                multiattach\u003dvolume[\u0027multiattach\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_b492134a","line":4023,"range":{"start_line":4023,"start_character":45,"end_line":4023,"end_character":70},"in_reply_to":"7faddb67_723b539a","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e24f97401b2701d97533e5de8b71e25adbef7fa0","unresolved":false,"context_lines":[{"line_number":4025,"context_line":"                device_type\u003ddevice_type, tag\u003dtag,"},{"line_number":4026,"context_line":"                multiattach\u003dvolume[\u0027multiattach\u0027])"},{"line_number":4027,"context_line":"            volume_bdm.delete_on_termination \u003d delete_on_termination"},{"line_number":4028,"context_line":"            volume_bdm.save()"},{"line_number":4029,"context_line":"        return volume_bdm"},{"line_number":4030,"context_line":""},{"line_number":4031,"context_line":"    def _check_volume_already_attached_to_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_47e0cccc","line":4028,"range":{"start_line":4028,"start_character":12,"end_line":4028,"end_character":29},"updated":"2019-09-04 08:06:21.000000000","message":"This causes OrphanedObjectError.","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a853f6e9153154da4f81294d937492df0d31496b","unresolved":false,"context_lines":[{"line_number":4025,"context_line":"                device_type\u003ddevice_type, tag\u003dtag,"},{"line_number":4026,"context_line":"                multiattach\u003dvolume[\u0027multiattach\u0027])"},{"line_number":4027,"context_line":"            volume_bdm.delete_on_termination \u003d delete_on_termination"},{"line_number":4028,"context_line":"            volume_bdm.save()"},{"line_number":4029,"context_line":"        return volume_bdm"},{"line_number":4030,"context_line":""},{"line_number":4031,"context_line":"    def _check_volume_already_attached_to_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_87ea449d","line":4028,"range":{"start_line":4028,"start_character":12,"end_line":4028,"end_character":29},"in_reply_to":"7faddb67_47e0cccc","updated":"2019-09-04 08:10:47.000000000","message":"Thanks Takashi, I will push a new patch to fix this, because of my local env has an unknow problem of run test case, so update later.","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"dbafc633898a7db20341f6f93336b2cba6167e68","unresolved":false,"context_lines":[{"line_number":4025,"context_line":"                device_type\u003ddevice_type, tag\u003dtag,"},{"line_number":4026,"context_line":"                multiattach\u003dvolume[\u0027multiattach\u0027])"},{"line_number":4027,"context_line":"            volume_bdm.delete_on_termination \u003d delete_on_termination"},{"line_number":4028,"context_line":"            volume_bdm.save()"},{"line_number":4029,"context_line":"        return volume_bdm"},{"line_number":4030,"context_line":""},{"line_number":4031,"context_line":"    def _check_volume_already_attached_to_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_a8a2ac3d","line":4028,"range":{"start_line":4028,"start_character":12,"end_line":4028,"end_character":29},"in_reply_to":"7faddb67_87ea449d","updated":"2019-09-04 13:23:07.000000000","message":"yeah it would not load the obj attr. \n\nYou need to pass the delete_on_termination in reserve_block_device_name() so that it can be set while new bdm create[1] on compute node side.\n\nAlso you need to do RPC versioning for that. may be separate base patch will be good to do that.\n\n[1]\nhttps://github.com/openstack/nova/blob/cbaea3bd690c683e83a063acfa69919668eaa123/nova/compute/manager.py#L5792","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"001ff0d79a3f4cb03f0f5e03784786981f7d9a65","unresolved":false,"context_lines":[{"line_number":4025,"context_line":"                device_type\u003ddevice_type, tag\u003dtag,"},{"line_number":4026,"context_line":"                multiattach\u003dvolume[\u0027multiattach\u0027])"},{"line_number":4027,"context_line":"            volume_bdm.delete_on_termination \u003d delete_on_termination"},{"line_number":4028,"context_line":"            volume_bdm.save()"},{"line_number":4029,"context_line":"        return volume_bdm"},{"line_number":4030,"context_line":""},{"line_number":4031,"context_line":"    def _check_volume_already_attached_to_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_e85ae44d","line":4028,"range":{"start_line":4028,"start_character":12,"end_line":4028,"end_character":29},"in_reply_to":"7faddb67_a8a2ac3d","updated":"2019-09-04 13:24:09.000000000","message":"\u003e yeah it would not load the obj attr.\n \u003e \n \u003e You need to pass the delete_on_termination in reserve_block_device_name()\n \u003e so that it can be set while new bdm create[1] on compute node side.\n \u003e \n \u003e Also you need to do RPC versioning for that. may be separate base\n \u003e patch will be good to do that.\n \u003e \n \u003e [1]\n \u003e https://github.com/openstack/nova/blob/cbaea3bd690c683e83a063acfa69919668eaa123/nova/compute/manager.py#L5792\n\nNo I specifically asked that he not do that, see earlier patches. We don\u0027t need an RPC version bump and deal with older compute complexity just for this simple case of saving an attribute on the created BDM. I\u0027ll investigate the failure in the functional test.","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3aaf81ca643d8dc0a90ec197cc9a8374004dc771","unresolved":false,"context_lines":[{"line_number":4025,"context_line":"                device_type\u003ddevice_type, tag\u003dtag,"},{"line_number":4026,"context_line":"                multiattach\u003dvolume[\u0027multiattach\u0027])"},{"line_number":4027,"context_line":"            volume_bdm.delete_on_termination \u003d delete_on_termination"},{"line_number":4028,"context_line":"            volume_bdm.save()"},{"line_number":4029,"context_line":"        return volume_bdm"},{"line_number":4030,"context_line":""},{"line_number":4031,"context_line":"    def _check_volume_already_attached_to_instance(self, context, instance,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_291790a5","line":4028,"range":{"start_line":4028,"start_character":12,"end_line":4028,"end_character":29},"in_reply_to":"7faddb67_e85ae44d","updated":"2019-09-05 03:32:20.000000000","message":"I did not check the previous comment. I agree on your point to avoid the RPC version in this case. thanks","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"941f0346f51cf9654a9c073728db57ec5258d914","unresolved":false,"context_lines":[{"line_number":5770,"context_line":"    @wrap_instance_fault"},{"line_number":5771,"context_line":"    def reserve_block_device_name(self, context, instance, device,"},{"line_number":5772,"context_line":"                                  volume_id, disk_bus, device_type, tag,"},{"line_number":5773,"context_line":"                                  multiattach, delete_on_termination):"},{"line_number":5774,"context_line":"        if (tag and not"},{"line_number":5775,"context_line":"                self.driver.capabilities.get(\u0027supports_tagged_attach_volume\u0027,"},{"line_number":5776,"context_line":"                                             False)):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_5102dc3f","line":5773,"range":{"start_line":5773,"start_character":47,"end_line":5773,"end_character":68},"updated":"2019-09-03 14:23:44.000000000","message":"This has to be a kwarg until the compute RPC API major version is incremented in a later release because of you\u0027re doing an upgrade and have compute RPC API versions pinned to the older release, the new parameter isn\u0027t going to come from the API. You should probably not default this to False either in case the user specified True. You could default to None meaning you don\u0027t know since the caller didn\u0027t pass it, but that\u0027s not very good either. It\u0027s probably best to determine from the API if the compute service is new enough to handle this parameter and if not fail in the API with a 409 error.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":5770,"context_line":"    @wrap_instance_fault"},{"line_number":5771,"context_line":"    def reserve_block_device_name(self, context, instance, device,"},{"line_number":5772,"context_line":"                                  volume_id, disk_bus, device_type, tag,"},{"line_number":5773,"context_line":"                                  multiattach, delete_on_termination):"},{"line_number":5774,"context_line":"        if (tag and not"},{"line_number":5775,"context_line":"                self.driver.capabilities.get(\u0027supports_tagged_attach_volume\u0027,"},{"line_number":5776,"context_line":"                                             False)):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_9404b77f","line":5773,"range":{"start_line":5773,"start_character":47,"end_line":5773,"end_character":68},"in_reply_to":"7faddb67_5102dc3f","updated":"2019-09-04 04:12:29.000000000","message":"\u003e You should probably not default this to False either in case \n\u003e the user specified True. You could default to None meaning \n\u003e you don\u0027t know since the caller didn\u0027t pass it, but that\u0027s \n\u003e not very good either. \n\nIn the API, \"delete_on_termination\" has been processed. Indeed, it is not appropriate to use False or None here. The problem of \"delete_on_termination\" is not handled here, and this problem is also avoided.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c533bf7ffb4e8f10e19855d9b923ab80f672f153","unresolved":false,"context_lines":[{"line_number":5770,"context_line":"    @wrap_instance_fault"},{"line_number":5771,"context_line":"    def reserve_block_device_name(self, context, instance, device,"},{"line_number":5772,"context_line":"                                  volume_id, disk_bus, device_type, tag,"},{"line_number":5773,"context_line":"                                  multiattach, delete_on_termination):"},{"line_number":5774,"context_line":"        if (tag and not"},{"line_number":5775,"context_line":"                self.driver.capabilities.get(\u0027supports_tagged_attach_volume\u0027,"},{"line_number":5776,"context_line":"                                             False)):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_cf65c046","line":5773,"range":{"start_line":5773,"start_character":47,"end_line":5773,"end_character":68},"in_reply_to":"7faddb67_5102dc3f","updated":"2019-09-03 17:45:05.000000000","message":"We shouldn\u0027t even need this, I remember this coming up in the spec review:\n\nhttp://specs.openstack.org/openstack/nova-specs/specs/train/approved/support-delete-on-termination-in-server-attach-volume.html#upgrade-impact\n\n\"To avoid issues with trying to attach a volume with delete_on_termination\u003dtrue to a server running on an older compute service, the implementation should just set the field in the API rather than the compute service.\"\n\nThis means that the API can update the BDM with the delete_on_termination value regardless of where the BDM is actually created since it has nothing to do with the compute service. So when you get the volume_bdm back in the API here:\n\nhttps://review.opendev.org/#/c/673133/12/nova/compute/api.py@4023\n\nJust do:\n\n  volume_bdm.delete_on_termination \u003d delete_on_termination\n  volume_bdm.save()","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":5770,"context_line":"    @wrap_instance_fault"},{"line_number":5771,"context_line":"    def reserve_block_device_name(self, context, instance, device,"},{"line_number":5772,"context_line":"                                  volume_id, disk_bus, device_type, tag,"},{"line_number":5773,"context_line":"                                  multiattach, delete_on_termination):"},{"line_number":5774,"context_line":"        if (tag and not"},{"line_number":5775,"context_line":"                self.driver.capabilities.get(\u0027supports_tagged_attach_volume\u0027,"},{"line_number":5776,"context_line":"                                             False)):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_74f25b07","line":5773,"range":{"start_line":5773,"start_character":47,"end_line":5773,"end_character":68},"in_reply_to":"7faddb67_cf65c046","updated":"2019-09-04 04:12:29.000000000","message":"Yup, I am sorry for ignoring that. Indeed, just modifying the API is fine, generating the *volume_bdm* can be done in API.\nIt will becomes simple and easy to review.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"27d2029a468fc4b62b396c28d607af88b40f2eee","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"              \u0027volume_id\u0027: volume_id, \u0027disk_bus\u0027: disk_bus,"},{"line_number":1002,"context_line":"              \u0027device_type\u0027: device_type, \u0027tag\u0027: tag,"},{"line_number":1003,"context_line":"              \u0027multiattach\u0027: multiattach,"},{"line_number":1004,"context_line":"              \u0027delete_on_termination\u0027: delete_on_termination}"},{"line_number":1005,"context_line":"        version \u003d \u00275.0\u0027"},{"line_number":1006,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1007,"context_line":"        cctxt \u003d client.prepare(server\u003d_compute_host(None, instance),"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_b18230c6","line":1004,"updated":"2019-09-03 14:20:08.000000000","message":"This is blowing up in the grenade job:\n\nhttps://zuul.opendev.org/t/openstack/build/611500d6bed240e8b9ba5279e04dada9/log/logs/screen-n-api.txt.gz?severity\u003d4#16574\n\nYou can\u0027t just pass a new parameter to an old compute that won\u0027t understand it, that\u0027s why the grenade multinode job is failing (please inspect the failed jobs rather than simply recheck them repeatedly like you were doing).\n\nYou have to check if the client can send the version and if not pop the new parameter from the kw dict.\n\nThis is a good recent example:\n\nhttps://review.opendev.org/#/c/655721/18/nova/compute/rpcapi.py","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"              \u0027volume_id\u0027: volume_id, \u0027disk_bus\u0027: disk_bus,"},{"line_number":1002,"context_line":"              \u0027device_type\u0027: device_type, \u0027tag\u0027: tag,"},{"line_number":1003,"context_line":"              \u0027multiattach\u0027: multiattach,"},{"line_number":1004,"context_line":"              \u0027delete_on_termination\u0027: delete_on_termination}"},{"line_number":1005,"context_line":"        version \u003d \u00275.0\u0027"},{"line_number":1006,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1007,"context_line":"        cctxt \u003d client.prepare(server\u003d_compute_host(None, instance),"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_54939f4e","line":1004,"in_reply_to":"7faddb67_6f560c61","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c533bf7ffb4e8f10e19855d9b923ab80f672f153","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"              \u0027volume_id\u0027: volume_id, \u0027disk_bus\u0027: disk_bus,"},{"line_number":1002,"context_line":"              \u0027device_type\u0027: device_type, \u0027tag\u0027: tag,"},{"line_number":1003,"context_line":"              \u0027multiattach\u0027: multiattach,"},{"line_number":1004,"context_line":"              \u0027delete_on_termination\u0027: delete_on_termination}"},{"line_number":1005,"context_line":"        version \u003d \u00275.0\u0027"},{"line_number":1006,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1007,"context_line":"        cctxt \u003d client.prepare(server\u003d_compute_host(None, instance),"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_6f560c61","line":1004,"in_reply_to":"7faddb67_b18230c6","updated":"2019-09-03 17:45:05.000000000","message":"Actually we shouldn\u0027t even need to update the compute interface for this, see my comments in compute/manager.py.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b794b320065ed7d7e5bc14fd9cf50edb2fd9a838","unresolved":false,"context_lines":[{"line_number":1001,"context_line":"              \u0027volume_id\u0027: volume_id, \u0027disk_bus\u0027: disk_bus,"},{"line_number":1002,"context_line":"              \u0027device_type\u0027: device_type, \u0027tag\u0027: tag,"},{"line_number":1003,"context_line":"              \u0027multiattach\u0027: multiattach,"},{"line_number":1004,"context_line":"              \u0027delete_on_termination\u0027: delete_on_termination}"},{"line_number":1005,"context_line":"        version \u003d \u00275.0\u0027"},{"line_number":1006,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1007,"context_line":"        cctxt \u003d client.prepare(server\u003d_compute_host(None, instance),"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_f4416b37","line":1004,"in_reply_to":"7faddb67_b18230c6","updated":"2019-09-04 01:41:16.000000000","message":"Yeah, I added new parameters in the old version that are not recognized, so grenade job failures are real. I think I was not found the root issue log before (get a new skill ^^).","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"}],"nova/tests/functional/api_sample_tests/api_samples/os-volumes/v2.78/attach-volume-to-server-req.json.tpl":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"volumeAttachment\": {"},{"line_number":3,"context_line":"        \"volumeId\": \"%(volume_id)s\","},{"line_number":4,"context_line":"        \"tag\": \"%(tag)s\","},{"line_number":5,"context_line":"        \"delete_on_termination\": false"},{"line_number":6,"context_line":"    }"},{"line_number":7,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":12,"id":"7faddb67_3272bb7d","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":38},"updated":"2019-09-03 18:31:07.000000000","message":"As noted in the docs sample, let\u0027s use true here.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"volumeAttachment\": {"},{"line_number":3,"context_line":"        \"volumeId\": \"%(volume_id)s\","},{"line_number":4,"context_line":"        \"tag\": \"%(tag)s\","},{"line_number":5,"context_line":"        \"delete_on_termination\": false"},{"line_number":6,"context_line":"    }"},{"line_number":7,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":12,"id":"7faddb67_54fabf76","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":38},"in_reply_to":"7faddb67_3272bb7d","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"}],"nova/tests/functional/api_sample_tests/api_samples/os-volumes/v2.78/attach-volume-to-server-resp.json.tpl":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"883c3f84db5fcc6319467755ceb293d5dd4f9c21","unresolved":false,"context_lines":[{"line_number":5,"context_line":"        \"serverId\": \"%(uuid)s\","},{"line_number":6,"context_line":"        \"tag\": \"%(tag)s\","},{"line_number":7,"context_line":"        \"volumeId\": \"%(volume_id)s\","},{"line_number":8,"context_line":"        \"delete_on_termination\": false"},{"line_number":9,"context_line":"    }"},{"line_number":10,"context_line":"}"}],"source_content_type":"text/x-smarty","patch_set":14,"id":"7faddb67_b4ea059d","line":8,"range":{"start_line":8,"start_character":33,"end_line":8,"end_character":38},"updated":"2019-09-04 15:35:56.000000000","message":"This is wrong - the request is asking for true:\n\nhttps://review.opendev.org/#/c/673133/14/nova/tests/functional/api_sample_tests/api_samples/os-volumes/v2.78/attach-volume-to-server-req.json.tpl","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"}],"nova/tests/functional/api_sample_tests/test_volumes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e59d56b128d3f489bb9d806120c3455554660891","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        bdm \u003d objects.BlockDeviceMapping()"},{"line_number":266,"context_line":"        bdm[\u0027device_name\u0027] \u003d device_name"},{"line_number":267,"context_line":"        self.stub_out("},{"line_number":268,"context_line":"            \u0027nova.compute.manager.ComputeManager.reserve_block_device_name\u0027,"},{"line_number":269,"context_line":"            lambda *a, **k: bdm)"},{"line_number":270,"context_line":"        self.stub_out("},{"line_number":271,"context_line":"            \u0027nova.compute.manager.ComputeManager.attach_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_1956b4cf","line":268,"range":{"start_line":268,"start_character":49,"end_line":268,"end_character":74},"updated":"2019-09-04 14:55:49.000000000","message":"This is why the functional tests are failing, because they are mocking this method that creates the BDM in the database and just returns a stub with only the device_name field set. These tests are all pretty crappy since we don\u0027t really need stubs for these when we can use the CinderFixture, but overhauling that is too much for this change. So all you need to do here really is stub out the nova.objects.BlockDeviceMapping.save method.","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"870786fb9037b0ba205be97c003019fd30f937be","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        bdm \u003d objects.BlockDeviceMapping()"},{"line_number":266,"context_line":"        bdm[\u0027device_name\u0027] \u003d device_name"},{"line_number":267,"context_line":"        self.stub_out("},{"line_number":268,"context_line":"            \u0027nova.compute.manager.ComputeManager.reserve_block_device_name\u0027,"},{"line_number":269,"context_line":"            lambda *a, **k: bdm)"},{"line_number":270,"context_line":"        self.stub_out("},{"line_number":271,"context_line":"            \u0027nova.compute.manager.ComputeManager.attach_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_d67e9be1","line":268,"range":{"start_line":268,"start_character":49,"end_line":268,"end_character":74},"in_reply_to":"7faddb67_1956b4cf","updated":"2019-09-05 01:44:46.000000000","message":"\u003e These tests are all pretty crappy since we don\u0027t really \n\u003e need stubs for these when we can use the CinderFixture, but\n\u003e overhauling that is too much for this change.\n\nYeah, it has been bothering me for a long time, I will delve into this piece and change it as much as possible to make it easy to use.","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"883c3f84db5fcc6319467755ceb293d5dd4f9c21","unresolved":false,"context_lines":[{"line_number":265,"context_line":"        bdm \u003d objects.BlockDeviceMapping()"},{"line_number":266,"context_line":"        bdm[\u0027device_name\u0027] \u003d device_name"},{"line_number":267,"context_line":"        self.stub_out("},{"line_number":268,"context_line":"            \u0027nova.compute.manager.ComputeManager.reserve_block_device_name\u0027,"},{"line_number":269,"context_line":"            lambda *a, **k: bdm)"},{"line_number":270,"context_line":"        self.stub_out("},{"line_number":271,"context_line":"            \u0027nova.compute.manager.ComputeManager.attach_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_54a151a8","line":268,"range":{"start_line":268,"start_character":49,"end_line":268,"end_character":74},"in_reply_to":"7faddb67_1956b4cf","updated":"2019-09-04 15:35:56.000000000","message":"Done","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73a28d3036f4d89d174275e7ac68a19741c48a34","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            not found in the resulting dict it is assumed to not have a tag"},{"line_number":209,"context_line":"        \"\"\""},{"line_number":210,"context_line":"        return {}"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    # TODO(mriedem): There is really no good reason we should have to stub"},{"line_number":213,"context_line":"    # so much of this DB and compute service code when we can just use the"},{"line_number":214,"context_line":"    # CinderFixture. The stubs make these tests very brittle and potentially"},{"line_number":215,"context_line":"    # false regarding how the API/compute service interaction works."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def _stub_db_bdms_get_all_by_instance(self, server_id):"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_0962d43e","line":215,"range":{"start_line":211,"start_character":0,"end_line":215,"end_character":68},"updated":"2019-09-05 03:44:27.000000000","message":"+1, we should avoid stubs here.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"}],"nova/tests/unit/api/openstack/compute/test_volumes.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":995,"context_line":"                          req, FAKE_UUID)"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"class VolumeAttachTestsV278(test.NoDBTestCase):"},{"line_number":999,"context_line":"    validation_error \u003d exception.ValidationError"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_b22c6b4a","line":998,"range":{"start_line":998,"start_character":28,"end_line":998,"end_character":45},"updated":"2019-09-03 18:31:07.000000000","message":"We might want to extend VolumeAttachTestsV2_75 to make sure we still run those tests for backward compatibility with 2.78.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":995,"context_line":"                          req, FAKE_UUID)"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"class VolumeAttachTestsV278(test.NoDBTestCase):"},{"line_number":999,"context_line":"    validation_error \u003d exception.ValidationError"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_343aa333","line":998,"range":{"start_line":998,"start_character":28,"end_line":998,"end_character":45},"in_reply_to":"7faddb67_b22c6b4a","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"    @mock.patch(\u0027nova.compute.api.API.attach_volume\u0027)"},{"line_number":1009,"context_line":"    @mock.patch(\u0027nova.compute.api.API.get\u0027)"},{"line_number":1010,"context_line":"    def test_create_volume_attach_valid_delete_on_termination("},{"line_number":1011,"context_line":"            self, mock_get, mock_atach_volume):"},{"line_number":1012,"context_line":"        body \u003d {\u0027volumeAttachment\u0027: {\u0027volumeId\u0027: FAKE_UUID_A,"},{"line_number":1013,"context_line":"                                     \u0027delete_on_termination\u0027: True}}"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_d231e7a3","line":1010,"updated":"2019-09-03 18:31:07.000000000","message":"This is redundant with the functional test so I don\u0027t really see a need for it.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"    @mock.patch(\u0027nova.compute.api.API.attach_volume\u0027)"},{"line_number":1009,"context_line":"    @mock.patch(\u0027nova.compute.api.API.get\u0027)"},{"line_number":1010,"context_line":"    def test_create_volume_attach_valid_delete_on_termination("},{"line_number":1011,"context_line":"            self, mock_get, mock_atach_volume):"},{"line_number":1012,"context_line":"        body \u003d {\u0027volumeAttachment\u0027: {\u0027volumeId\u0027: FAKE_UUID_A,"},{"line_number":1013,"context_line":"                                     \u0027delete_on_termination\u0027: True}}"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_941277b3","line":1010,"in_reply_to":"7faddb67_d231e7a3","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1024,"context_line":"        self.req.headers[\u0027content-type\u0027] \u003d \u0027application/json\u0027"},{"line_number":1025,"context_line":"        self.req.api_version_request \u003d api_version_request.APIVersionRequest("},{"line_number":1026,"context_line":"            \u00272.77\u0027)"},{"line_number":1027,"context_line":"        self.assertRaises(exception.ValidationError, self.controller.create,"},{"line_number":1028,"context_line":"                          self.req, FAKE_UUID, body\u003dbody)"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"    def test_create_volume_attach_invalid_delete_on_termination_empty(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_72227356","line":1027,"updated":"2019-09-03 18:31:07.000000000","message":"Can you trap and assert something about the validation error so we know it\u0027s what you expect, e.g. something about delete_on_termination should be in the validation error message.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1024,"context_line":"        self.req.headers[\u0027content-type\u0027] \u003d \u0027application/json\u0027"},{"line_number":1025,"context_line":"        self.req.api_version_request \u003d api_version_request.APIVersionRequest("},{"line_number":1026,"context_line":"            \u00272.77\u0027)"},{"line_number":1027,"context_line":"        self.assertRaises(exception.ValidationError, self.controller.create,"},{"line_number":1028,"context_line":"                          self.req, FAKE_UUID, body\u003dbody)"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"    def test_create_volume_attach_invalid_delete_on_termination_empty(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_74825bc9","line":1027,"in_reply_to":"7faddb67_72227356","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"    def test_create_volume_attach_invalid_delete_on_termination_empty(self):"},{"line_number":1031,"context_line":"        body \u003d {\u0027volumeAttachment\u0027: {\u0027volumeId\u0027: FAKE_UUID_A,"},{"line_number":1032,"context_line":"                                     \u0027delete_on_termination\u0027: None}}"},{"line_number":1033,"context_line":"        self.assertRaises(exception.ValidationError, self.controller.create,"},{"line_number":1034,"context_line":"                          self.req, FAKE_UUID, body\u003dbody)"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"    def test_create_volume_attach_invalid_delete_on_termination_value(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_521df70c","line":1033,"updated":"2019-09-03 18:31:07.000000000","message":"same","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1030,"context_line":"    def test_create_volume_attach_invalid_delete_on_termination_empty(self):"},{"line_number":1031,"context_line":"        body \u003d {\u0027volumeAttachment\u0027: {\u0027volumeId\u0027: FAKE_UUID_A,"},{"line_number":1032,"context_line":"                                     \u0027delete_on_termination\u0027: None}}"},{"line_number":1033,"context_line":"        self.assertRaises(exception.ValidationError, self.controller.create,"},{"line_number":1034,"context_line":"                          self.req, FAKE_UUID, body\u003dbody)"},{"line_number":1035,"context_line":""},{"line_number":1036,"context_line":"    def test_create_volume_attach_invalid_delete_on_termination_value(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_3e87e163","line":1033,"in_reply_to":"7faddb67_521df70c","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"        \"\"\""},{"line_number":1045,"context_line":"        body \u003d {\u0027volumeAttachment\u0027: {\u0027volumeId\u0027: FAKE_UUID_A,"},{"line_number":1046,"context_line":"                                     \u0027delete_on_termination\u0027: \u0027foo\u0027}}"},{"line_number":1047,"context_line":"        self.assertRaises(exception.ValidationError, self.controller.create,"},{"line_number":1048,"context_line":"                          self.req, FAKE_UUID, body\u003dbody)"},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_d2d6c727","line":1047,"updated":"2019-09-03 18:31:07.000000000","message":"same","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"        \"\"\""},{"line_number":1045,"context_line":"        body \u003d {\u0027volumeAttachment\u0027: {\u0027volumeId\u0027: FAKE_UUID_A,"},{"line_number":1046,"context_line":"                                     \u0027delete_on_termination\u0027: \u0027foo\u0027}}"},{"line_number":1047,"context_line":"        self.assertRaises(exception.ValidationError, self.controller.create,"},{"line_number":1048,"context_line":"                          self.req, FAKE_UUID, body\u003dbody)"},{"line_number":1049,"context_line":""},{"line_number":1050,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_de79ed81","line":1047,"in_reply_to":"7faddb67_d2d6c727","updated":"2019-09-04 04:12:29.000000000","message":"Done","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dcc7cad9e40b5693d325bdf05880118076b01719","unresolved":false,"context_lines":[{"line_number":1041,"context_line":"        body \u003d {\u0027volumeAttachment\u0027: {\u0027volumeId\u0027: FAKE_UUID_A,"},{"line_number":1042,"context_line":"                                    \u0027device\u0027: \u0027/dev/fake\u0027}}"},{"line_number":1043,"context_line":"        req \u003d self._get_req(body)"},{"line_number":1044,"context_line":"        req.api_version_request \u003d api_version_request.APIVersionRequest("},{"line_number":1045,"context_line":"            \u00272.77\u0027)"},{"line_number":1046,"context_line":"        self.stub_out(\u0027nova.compute.api.API.attach_volume\u0027,"},{"line_number":1047,"context_line":"                      lambda self, context, instance, volume_id,"},{"line_number":1048,"context_line":"                              device, tag\u003dNone,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_99462450","line":1045,"range":{"start_line":1044,"start_character":8,"end_line":1045,"end_character":19},"updated":"2019-09-04 14:52:58.000000000","message":"nit: the test would be cleaner if you added an optional microversion\u003dNone kwarg to _get_req and then did this in _get_req:\n\ndef _get_req(self, body, microversion\u003dNone):\n   req \u003d fakes.HTTPRequest.blank(\n        \u0027/v2/servers/id/os-volume_attachments/uuid\u0027,\n        version\u003dmicroversion or self.microversion)\n   ...\n\nThen your test code here just passes in microversion\u003d\u00272.77\u0027.","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"883c3f84db5fcc6319467755ceb293d5dd4f9c21","unresolved":false,"context_lines":[{"line_number":1041,"context_line":"        body \u003d {\u0027volumeAttachment\u0027: {\u0027volumeId\u0027: FAKE_UUID_A,"},{"line_number":1042,"context_line":"                                    \u0027device\u0027: \u0027/dev/fake\u0027}}"},{"line_number":1043,"context_line":"        req \u003d self._get_req(body)"},{"line_number":1044,"context_line":"        req.api_version_request \u003d api_version_request.APIVersionRequest("},{"line_number":1045,"context_line":"            \u00272.77\u0027)"},{"line_number":1046,"context_line":"        self.stub_out(\u0027nova.compute.api.API.attach_volume\u0027,"},{"line_number":1047,"context_line":"                      lambda self, context, instance, volume_id,"},{"line_number":1048,"context_line":"                              device, tag\u003dNone,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_f49ddd56","line":1045,"range":{"start_line":1044,"start_character":8,"end_line":1045,"end_character":19},"in_reply_to":"7faddb67_99462450","updated":"2019-09-04 15:35:56.000000000","message":"Done","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dcc7cad9e40b5693d325bdf05880118076b01719","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"        req \u003d self._get_req(body)"},{"line_number":1044,"context_line":"        req.api_version_request \u003d api_version_request.APIVersionRequest("},{"line_number":1045,"context_line":"            \u00272.77\u0027)"},{"line_number":1046,"context_line":"        self.stub_out(\u0027nova.compute.api.API.attach_volume\u0027,"},{"line_number":1047,"context_line":"                      lambda self, context, instance, volume_id,"},{"line_number":1048,"context_line":"                              device, tag\u003dNone,"},{"line_number":1049,"context_line":"                              supports_multiattach\u003dFalse,"},{"line_number":1050,"context_line":"                              delete_on_termination\u003dFalse: None)"},{"line_number":1051,"context_line":"        result \u003d self.attachments.create(req, FAKE_UUID, body\u003dbody)"},{"line_number":1052,"context_line":"        self.assertNotIn(\u0027delete_on_termination\u0027, result[\u0027volumeAttachment\u0027])"},{"line_number":1053,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_f93638e7","line":1050,"range":{"start_line":1046,"start_character":8,"end_line":1050,"end_character":64},"updated":"2019-09-04 14:52:58.000000000","message":"This is a bit much - just add a mock.patch method decorator.","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"883c3f84db5fcc6319467755ceb293d5dd4f9c21","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"        req \u003d self._get_req(body)"},{"line_number":1044,"context_line":"        req.api_version_request \u003d api_version_request.APIVersionRequest("},{"line_number":1045,"context_line":"            \u00272.77\u0027)"},{"line_number":1046,"context_line":"        self.stub_out(\u0027nova.compute.api.API.attach_volume\u0027,"},{"line_number":1047,"context_line":"                      lambda self, context, instance, volume_id,"},{"line_number":1048,"context_line":"                              device, tag\u003dNone,"},{"line_number":1049,"context_line":"                              supports_multiattach\u003dFalse,"},{"line_number":1050,"context_line":"                              delete_on_termination\u003dFalse: None)"},{"line_number":1051,"context_line":"        result \u003d self.attachments.create(req, FAKE_UUID, body\u003dbody)"},{"line_number":1052,"context_line":"        self.assertNotIn(\u0027delete_on_termination\u0027, result[\u0027volumeAttachment\u0027])"},{"line_number":1053,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_94a82978","line":1050,"range":{"start_line":1046,"start_character":8,"end_line":1050,"end_character":64},"in_reply_to":"7faddb67_f93638e7","updated":"2019-09-04 15:35:56.000000000","message":"Done","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dcc7cad9e40b5693d325bdf05880118076b01719","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"        the request, you will be get it\u0027s default value in the response."},{"line_number":1057,"context_line":"        The delete_on_termination\u0027s default value is \u0027False\u0027."},{"line_number":1058,"context_line":"        \"\"\""},{"line_number":1059,"context_line":"        self.stub_out(\u0027nova.compute.api.API.attach_volume\u0027,"},{"line_number":1060,"context_line":"                      lambda self, context, instance, volume_id,"},{"line_number":1061,"context_line":"                              device, tag\u003dNone,"},{"line_number":1062,"context_line":"                              supports_multiattach\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_59766ca6","line":1059,"range":{"start_line":1059,"start_character":13,"end_line":1059,"end_character":21},"updated":"2019-09-04 14:52:58.000000000","message":"Use a mock.patch method decorator.","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"883c3f84db5fcc6319467755ceb293d5dd4f9c21","unresolved":false,"context_lines":[{"line_number":1056,"context_line":"        the request, you will be get it\u0027s default value in the response."},{"line_number":1057,"context_line":"        The delete_on_termination\u0027s default value is \u0027False\u0027."},{"line_number":1058,"context_line":"        \"\"\""},{"line_number":1059,"context_line":"        self.stub_out(\u0027nova.compute.api.API.attach_volume\u0027,"},{"line_number":1060,"context_line":"                      lambda self, context, instance, volume_id,"},{"line_number":1061,"context_line":"                              device, tag\u003dNone,"},{"line_number":1062,"context_line":"                              supports_multiattach\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_b4a3e59a","line":1059,"range":{"start_line":1059,"start_character":13,"end_line":1059,"end_character":21},"in_reply_to":"7faddb67_59766ca6","updated":"2019-09-04 15:35:56.000000000","message":"Done","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73a28d3036f4d89d174275e7ac68a19741c48a34","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"                               req, FAKE_UUID, body\u003dbody)"},{"line_number":1090,"context_line":"        self.assertIn(\"Invalid input for field/attribute \""},{"line_number":1091,"context_line":"                      \"delete_on_termination.\", six.text_type(ex))"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class SwapVolumeMultiattachTestCase(test.NoDBTestCase):"},{"line_number":1095,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_c9ccbc35","line":1092,"range":{"start_line":1092,"start_character":0,"end_line":1092,"end_character":0},"updated":"2019-09-05 03:44:27.000000000","message":"in addition to those, we should verify the GET (list and show) APIs behaviour also. can you add tests to verify the pre and post 2.78 return \u0027delete_on_termination\u0027 or not.\n\nalso one positive tests to create attachment with delete_on_termination as True with \u003e2.78","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cce751df6993aefdd904e46552bc876e6e301e28","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"                               req, FAKE_UUID, body\u003dbody)"},{"line_number":1090,"context_line":"        self.assertIn(\"Invalid input for field/attribute \""},{"line_number":1091,"context_line":"                      \"delete_on_termination.\", six.text_type(ex))"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class SwapVolumeMultiattachTestCase(test.NoDBTestCase):"},{"line_number":1095,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_e7cf5f25","line":1092,"range":{"start_line":1092,"start_character":0,"end_line":1092,"end_character":0},"in_reply_to":"7faddb67_0c2bc2ea","updated":"2019-09-05 07:16:05.000000000","message":"Yeah, they are covered by API sample functional tests.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61e4adae0fb21176497654907222227b4b0fc99d","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"                               req, FAKE_UUID, body\u003dbody)"},{"line_number":1090,"context_line":"        self.assertIn(\"Invalid input for field/attribute \""},{"line_number":1091,"context_line":"                      \"delete_on_termination.\", six.text_type(ex))"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class SwapVolumeMultiattachTestCase(test.NoDBTestCase):"},{"line_number":1095,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_6b08152c","line":1092,"range":{"start_line":1092,"start_character":0,"end_line":1092,"end_character":0},"in_reply_to":"7faddb67_3da82a76","updated":"2019-09-05 13:15:01.000000000","message":"\u003e For example, optional \u0027delete_on_termination\u0027 is returned in 2.77\n \u003e (immediate previous) responses or not.\n\nThat is test_attach_volume_pre_v278 above.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"743ab33281949b2a44599d85162370284a93f54c","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"                               req, FAKE_UUID, body\u003dbody)"},{"line_number":1090,"context_line":"        self.assertIn(\"Invalid input for field/attribute \""},{"line_number":1091,"context_line":"                      \"delete_on_termination.\", six.text_type(ex))"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class SwapVolumeMultiattachTestCase(test.NoDBTestCase):"},{"line_number":1095,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_ab5a8d7e","line":1092,"range":{"start_line":1092,"start_character":0,"end_line":1092,"end_character":0},"in_reply_to":"7faddb67_3da82a76","updated":"2019-09-05 13:05:16.000000000","message":"I got it, I will add these tests by following up.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a1fc8ebd0c1e1d1503f8c6b41cb766929ee56c4","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"                               req, FAKE_UUID, body\u003dbody)"},{"line_number":1090,"context_line":"        self.assertIn(\"Invalid input for field/attribute \""},{"line_number":1091,"context_line":"                      \"delete_on_termination.\", six.text_type(ex))"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class SwapVolumeMultiattachTestCase(test.NoDBTestCase):"},{"line_number":1095,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_961d7863","line":1092,"range":{"start_line":1092,"start_character":0,"end_line":1092,"end_character":0},"in_reply_to":"7faddb67_6b08152c","updated":"2019-09-05 13:16:28.000000000","message":"\u003e \u003e For example, optional \u0027delete_on_termination\u0027 is returned in 2.77\n \u003e \u003e (immediate previous) responses or not.\n \u003e \n \u003e That is test_attach_volume_pre_v278 above.\n\n(8:15:39 AM) gmann: mriedem: that is for POST API only i asked to test the same for GET (list and show)","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"27f13bff2b8f17c55579c8c2574b821d1feb1714","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"                               req, FAKE_UUID, body\u003dbody)"},{"line_number":1090,"context_line":"        self.assertIn(\"Invalid input for field/attribute \""},{"line_number":1091,"context_line":"                      \"delete_on_termination.\", six.text_type(ex))"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class SwapVolumeMultiattachTestCase(test.NoDBTestCase):"},{"line_number":1095,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_0c2bc2ea","line":1092,"range":{"start_line":1092,"start_character":0,"end_line":1092,"end_character":0},"in_reply_to":"7faddb67_c9ccbc35","updated":"2019-09-05 05:11:16.000000000","message":"These tests are covered by API sample functional tests.\nSo they don\u0027t have to be added here.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"25b6481fe10c447ca3ea069d174224123e71ee6b","unresolved":false,"context_lines":[{"line_number":1089,"context_line":"                               req, FAKE_UUID, body\u003dbody)"},{"line_number":1090,"context_line":"        self.assertIn(\"Invalid input for field/attribute \""},{"line_number":1091,"context_line":"                      \"delete_on_termination.\", six.text_type(ex))"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class SwapVolumeMultiattachTestCase(test.NoDBTestCase):"},{"line_number":1095,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7faddb67_3da82a76","line":1092,"range":{"start_line":1092,"start_character":0,"end_line":1092,"end_character":0},"in_reply_to":"7faddb67_e7cf5f25","updated":"2019-09-05 08:34:14.000000000","message":"API sample tests cover only the updated microversion tests not the immediate previous microversion tests.\n\nFor example, optional \u0027delete_on_termination\u0027 is returned in 2.77 (immediate previous) responses or not.","commit_id":"b1c6463045d52c73f19e0ba9edc90ef8991ca82f"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e24f97401b2701d97533e5de8b71e25adbef7fa0","unresolved":false,"context_lines":[{"line_number":8412,"context_line":"                   \u0027instance_uuid\u0027: instance.uuid})"},{"line_number":8413,"context_line":"        bdm.create()"},{"line_number":8414,"context_line":""},{"line_number":8415,"context_line":"        self.compute.reserve_block_device_name(self.context, instance,"},{"line_number":8416,"context_line":"                                               \u0027/dev/vdb\u0027,"},{"line_number":8417,"context_line":"                                                uuids.block_device_instance,"},{"line_number":8418,"context_line":"                                               \u0027virtio\u0027, \u0027disk\u0027, None, False,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_07409405","line":8415,"range":{"start_line":8415,"start_character":8,"end_line":8415,"end_character":46},"updated":"2019-09-04 08:06:21.000000000","message":"This calls the \u0027reserve_block_device_name\u0027 method of the ComputeManager class in nova/compute/manager.py. So if the method is not modified, these arguments should not be modified.\n\nhttps://github.com/openstack/nova/blob/cbaea3bd690c683e83a063acfa69919668eaa123/nova/tests/unit/compute/test_compute.py#L156","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a853f6e9153154da4f81294d937492df0d31496b","unresolved":false,"context_lines":[{"line_number":8412,"context_line":"                   \u0027instance_uuid\u0027: instance.uuid})"},{"line_number":8413,"context_line":"        bdm.create()"},{"line_number":8414,"context_line":""},{"line_number":8415,"context_line":"        self.compute.reserve_block_device_name(self.context, instance,"},{"line_number":8416,"context_line":"                                               \u0027/dev/vdb\u0027,"},{"line_number":8417,"context_line":"                                                uuids.block_device_instance,"},{"line_number":8418,"context_line":"                                               \u0027virtio\u0027, \u0027disk\u0027, None, False,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_272b50eb","line":8415,"range":{"start_line":8415,"start_character":8,"end_line":8415,"end_character":46},"in_reply_to":"7faddb67_07409405","updated":"2019-09-04 08:10:47.000000000","message":"Done","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e24f97401b2701d97533e5de8b71e25adbef7fa0","unresolved":false,"context_lines":[{"line_number":8447,"context_line":"                                               \u0027/dev/vdb\u0027,"},{"line_number":8448,"context_line":"                                                uuids.block_device_instance,"},{"line_number":8449,"context_line":"                                               \u0027ide\u0027, \u0027disk\u0027, None, False,"},{"line_number":8450,"context_line":"                                               False)"},{"line_number":8451,"context_line":""},{"line_number":8452,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":8453,"context_line":"                self.context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_675068d6","line":8450,"range":{"start_line":8450,"start_character":47,"end_line":8450,"end_character":52},"updated":"2019-09-04 08:06:21.000000000","message":"ditto","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a853f6e9153154da4f81294d937492df0d31496b","unresolved":false,"context_lines":[{"line_number":8447,"context_line":"                                               \u0027/dev/vdb\u0027,"},{"line_number":8448,"context_line":"                                                uuids.block_device_instance,"},{"line_number":8449,"context_line":"                                               \u0027ide\u0027, \u0027disk\u0027, None, False,"},{"line_number":8450,"context_line":"                                               False)"},{"line_number":8451,"context_line":""},{"line_number":8452,"context_line":"        bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":8453,"context_line":"                self.context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_472e8cfa","line":8450,"range":{"start_line":8450,"start_character":47,"end_line":8450,"end_character":52},"in_reply_to":"7faddb67_675068d6","updated":"2019-09-04 08:10:47.000000000","message":"Done","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e24f97401b2701d97533e5de8b71e25adbef7fa0","unresolved":false,"context_lines":[{"line_number":10599,"context_line":"            mock_reserve_bdm.assert_called_once_with("},{"line_number":10600,"context_line":"                    self.context, instance, \u0027/dev/vdb\u0027, uuids.volume,"},{"line_number":10601,"context_line":"                    disk_bus\u003d\u0027ide\u0027, device_type\u003d\u0027cdrom\u0027, tag\u003dNone,"},{"line_number":10602,"context_line":"                    multiattach\u003dFalse, delete_on_termination\u003dFalse)"},{"line_number":10603,"context_line":"            self.assertEqual(mock_get.call_args,"},{"line_number":10604,"context_line":"                             mock.call(self.context, uuids.volume))"},{"line_number":10605,"context_line":"            self.assertEqual(mock_check_availability_zone.call_args,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_e7521812","line":10602,"range":{"start_line":10602,"start_character":37,"end_line":10602,"end_character":66},"updated":"2019-09-04 08:06:21.000000000","message":"It is not necessary because this patch does not modify reserve_block_device_name call.\n\nhttps://github.com/openstack/nova/blob/cbaea3bd690c683e83a063acfa69919668eaa123/nova/compute/api.py#L4022","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a853f6e9153154da4f81294d937492df0d31496b","unresolved":false,"context_lines":[{"line_number":10599,"context_line":"            mock_reserve_bdm.assert_called_once_with("},{"line_number":10600,"context_line":"                    self.context, instance, \u0027/dev/vdb\u0027, uuids.volume,"},{"line_number":10601,"context_line":"                    disk_bus\u003d\u0027ide\u0027, device_type\u003d\u0027cdrom\u0027, tag\u003dNone,"},{"line_number":10602,"context_line":"                    multiattach\u003dFalse, delete_on_termination\u003dFalse)"},{"line_number":10603,"context_line":"            self.assertEqual(mock_get.call_args,"},{"line_number":10604,"context_line":"                             mock.call(self.context, uuids.volume))"},{"line_number":10605,"context_line":"            self.assertEqual(mock_check_availability_zone.call_args,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_e730d857","line":10602,"range":{"start_line":10602,"start_character":37,"end_line":10602,"end_character":66},"in_reply_to":"7faddb67_e7521812","updated":"2019-09-04 08:10:47.000000000","message":"Done","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e24f97401b2701d97533e5de8b71e25adbef7fa0","unresolved":false,"context_lines":[{"line_number":10649,"context_line":"            mock_reserve_bdm.assert_called_once_with("},{"line_number":10650,"context_line":"                    self.context, instance, None, uuids.volume,"},{"line_number":10651,"context_line":"                    disk_bus\u003dNone, device_type\u003dNone, tag\u003dNone,"},{"line_number":10652,"context_line":"                    multiattach\u003dFalse, delete_on_termination\u003dFalse)"},{"line_number":10653,"context_line":"            self.assertEqual(mock_get.call_args,"},{"line_number":10654,"context_line":"                             mock.call(self.context, uuids.volume))"},{"line_number":10655,"context_line":"            self.assertEqual(mock_check_availability_zone.call_args,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_c764bce7","line":10652,"range":{"start_line":10652,"start_character":37,"end_line":10652,"end_character":66},"updated":"2019-09-04 08:06:21.000000000","message":"ditto","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a853f6e9153154da4f81294d937492df0d31496b","unresolved":false,"context_lines":[{"line_number":10649,"context_line":"            mock_reserve_bdm.assert_called_once_with("},{"line_number":10650,"context_line":"                    self.context, instance, None, uuids.volume,"},{"line_number":10651,"context_line":"                    disk_bus\u003dNone, device_type\u003dNone, tag\u003dNone,"},{"line_number":10652,"context_line":"                    multiattach\u003dFalse, delete_on_termination\u003dFalse)"},{"line_number":10653,"context_line":"            self.assertEqual(mock_get.call_args,"},{"line_number":10654,"context_line":"                             mock.call(self.context, uuids.volume))"},{"line_number":10655,"context_line":"            self.assertEqual(mock_check_availability_zone.call_args,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_07341448","line":10652,"range":{"start_line":10652,"start_character":37,"end_line":10652,"end_character":66},"in_reply_to":"7faddb67_c764bce7","updated":"2019-09-04 08:10:47.000000000","message":"Done","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e24f97401b2701d97533e5de8b71e25adbef7fa0","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                                                 device_type\u003dNone,"},{"line_number":477,"context_line":"                                                 disk_bus\u003dNone, tag\u003d\u0027foo\u0027,"},{"line_number":478,"context_line":"                                                 multiattach\u003dFalse,"},{"line_number":479,"context_line":"                                                 delete_on_termination\u003dFalse)"},{"line_number":480,"context_line":"            mock_v_api.check_availability_zone.assert_called_once_with("},{"line_number":481,"context_line":"                self.context, volume, instance\u003dinstance)"},{"line_number":482,"context_line":"            mock_v_api.attachment_create.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_6769488a","line":479,"range":{"start_line":479,"start_character":49,"end_line":479,"end_character":77},"updated":"2019-09-04 08:06:21.000000000","message":"ditto","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"a853f6e9153154da4f81294d937492df0d31496b","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                                                 device_type\u003dNone,"},{"line_number":477,"context_line":"                                                 disk_bus\u003dNone, tag\u003d\u0027foo\u0027,"},{"line_number":478,"context_line":"                                                 multiattach\u003dFalse,"},{"line_number":479,"context_line":"                                                 delete_on_termination\u003dFalse)"},{"line_number":480,"context_line":"            mock_v_api.check_availability_zone.assert_called_once_with("},{"line_number":481,"context_line":"                self.context, volume, instance\u003dinstance)"},{"line_number":482,"context_line":"            mock_v_api.attachment_create.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":13,"id":"7faddb67_c7391c3f","line":479,"range":{"start_line":479,"start_character":49,"end_line":479,"end_character":77},"in_reply_to":"7faddb67_6769488a","updated":"2019-09-04 08:10:47.000000000","message":"Done","commit_id":"7ab1810ff326b2f897f534bde5c891db86acff55"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dcc7cad9e40b5693d325bdf05880118076b01719","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    @mock.patch(\u0027nova.objects.BlockDeviceMapping.save\u0027)"},{"line_number":365,"context_line":"    @mock.patch.object(compute_rpcapi.ComputeAPI, \u0027reserve_block_device_name\u0027)"},{"line_number":366,"context_line":"    def test_create_volume_bdm_call_reserve_dev_name(self, mock_reserve,"},{"line_number":367,"context_line":"                                                     mock_bdm_save):"},{"line_number":368,"context_line":"        bdm \u003d objects.BlockDeviceMapping("},{"line_number":369,"context_line":"                **fake_block_device.FakeDbBlockDeviceDict("},{"line_number":370,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_39a4d006","line":367,"range":{"start_line":367,"start_character":53,"end_line":367,"end_character":66},"updated":"2019-09-04 14:52:58.000000000","message":"Assert that this is called.","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a45d38fee9d3c8492c67c898e09b095789a98a50","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    @mock.patch(\u0027nova.objects.BlockDeviceMapping.save\u0027)"},{"line_number":365,"context_line":"    @mock.patch.object(compute_rpcapi.ComputeAPI, \u0027reserve_block_device_name\u0027)"},{"line_number":366,"context_line":"    def test_create_volume_bdm_call_reserve_dev_name(self, mock_reserve,"},{"line_number":367,"context_line":"                                                     mock_bdm_save):"},{"line_number":368,"context_line":"        bdm \u003d objects.BlockDeviceMapping("},{"line_number":369,"context_line":"                **fake_block_device.FakeDbBlockDeviceDict("},{"line_number":370,"context_line":"                {"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_f45abd4d","line":367,"range":{"start_line":367,"start_character":53,"end_line":367,"end_character":66},"in_reply_to":"7faddb67_39a4d006","updated":"2019-09-04 15:52:21.000000000","message":"Done","commit_id":"ddf83e1b4ddb32e81112b82baafa466764360cfa"}],"releasenotes/notes/bp-support-delete-on-termination-in-server-attach-volume-5d08b4e97fdd24f9.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"41e5b213cdc28941eff00738354c6e41d6b679d3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Microversion 2.78 adds the parameter ``delete_on_termination`` (it\u0027s"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7faddb67_5290974e","line":1,"updated":"2019-09-03 18:31:07.000000000","message":"I have the same comments from https://review.opendev.org/#/c/673133/12/nova/compute/api.py@4023 so just fix that and copy it here since it\u0027s essentially the same thing.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f6e58b47b9c45f0ffcdaf38dae3dab6b70ce00c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Microversion 2.78 adds the parameter ``delete_on_termination`` (it\u0027s"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"7faddb67_fe970938","line":1,"in_reply_to":"7faddb67_5290974e","updated":"2019-09-04 04:12:29.000000000","message":"I think you are referring to https://review.opendev.org/#/c/673133/12/nova/api/openstack/compute/rest_api_version_history.rst@1006\n\nDone of this.","commit_id":"3ac189b3836f6270c2a7d4254fd6900d16571bbf"}]}
