)]}'
{"specs/stein/approved/support-specifying-az-when-restore-shelved-server.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2b691b51d6a301e68dca1c697ccf114446dd4272","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":"If the current instance is in the ``SHELVED_OFFLOADED`` status, then its"},{"line_number":19,"context_line":"``availability_zone`` attribute will be set to None in the ``instances``"},{"line_number":20,"context_line":"database table. But the ``spec`` attribute records the value of the AZ of"},{"line_number":21,"context_line":"the instance before being shelved in the ``request_specs`` database table."},{"line_number":22,"context_line":"this change comes from [1]_."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_755bec2d","line":21,"range":{"start_line":20,"start_character":16,"end_line":21,"end_character":74},"updated":"2019-01-03 23:54:58.000000000","message":"To be clear, this is only if:\n\n1. the server was created with a specific user-specified AZ or\n2. [DEFAULT]/default_schedule_zone is not None\n\nIf both of those are False, I believe the server is not restricted to any AZ when unshelved (because it wouldn\u0027t be in the request spec).","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"25311010f6a35748dfaa9512fa65227651bc5224","unresolved":false,"context_lines":[{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":"If the current instance is in the ``SHELVED_OFFLOADED`` status, then its"},{"line_number":19,"context_line":"``availability_zone`` attribute will be set to None in the ``instances``"},{"line_number":20,"context_line":"database table. But the ``spec`` attribute records the value of the AZ of"},{"line_number":21,"context_line":"the instance before being shelved in the ``request_specs`` database table."},{"line_number":22,"context_line":"this change comes from [1]_."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_40d061f8","line":21,"range":{"start_line":20,"start_character":16,"end_line":21,"end_character":74},"in_reply_to":"ffd0ebdf_755bec2d","updated":"2019-01-04 08:55:00.000000000","message":"Yes, as you said in patch 606086, the ``spec`` that there are two ways an instance can be in an AZ:\n1. The user specifically requests to create the server in\n   the AZ.\n2. The user does not request an AZ and one is assigned via\n   the selected host during server create (or resize, etc).\n   Or [DEFAULT]/default_schedule_zone is not None\n\nFor the first case, the server will always remain in the\nuser-requested AZ even after shelve/unshelve. But in the\nsecond case, unshelving the server can result in the server\nbeing spawned on a new host in a different AZ - the scheduler\ndoes not restrict the AZ in that second case.\n\nAdd it here to describe the problem more clearly.","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2b691b51d6a301e68dca1c697ccf114446dd4272","unresolved":false,"context_lines":[{"line_number":26,"context_line":"As a administrator/user, I want to specify AZ when executing unshelve/restore"},{"line_number":27,"context_line":"a shelved server."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"As a developer/deployer, I want to set the value of ``availability_zone``"},{"line_number":30,"context_line":"of ``spec`` in the ``request_specs`` database table to None."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Proposed change"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_75744c9a","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":60},"updated":"2019-01-03 23:54:58.000000000","message":"How do you propose to do this? Allow passing availability_zone\u003dNone during the unshelve action? What would the purpose be? I guess if you created the server in a specific AZ, and then wanted to have it migrate freely you could unshelve and reset the AZ to None, but is that something people need to do a lot? Alternatively you could just create a new server with the shelved snapshot image.","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"25311010f6a35748dfaa9512fa65227651bc5224","unresolved":false,"context_lines":[{"line_number":26,"context_line":"As a administrator/user, I want to specify AZ when executing unshelve/restore"},{"line_number":27,"context_line":"a shelved server."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"As a developer/deployer, I want to set the value of ``availability_zone``"},{"line_number":30,"context_line":"of ``spec`` in the ``request_specs`` database table to None."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Proposed change"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_1b32cef2","line":30,"range":{"start_line":29,"start_character":0,"end_line":30,"end_character":60},"in_reply_to":"ffd0ebdf_75744c9a","updated":"2019-01-04 08:55:00.000000000","message":"Maybe this is my lack of consideration. As mentioned above, ``spec`` will only be updated when user-specified AZ or [DEFAULT]/default_schedule_zone, so ``spec`` is not updated when unshelve server. It will be used to record the AZ selected when creating the server, to facilitate comparison of server changes.","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2b691b51d6a301e68dca1c697ccf114446dd4272","unresolved":false,"context_lines":[{"line_number":35,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"},{"line_number":41,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_3594848b","line":38,"updated":"2019-01-03 23:54:58.000000000","message":"This could use a bit more detail. What are the underlying changes? Clearly when you unshelve, you\u0027d need to set the RequestSpec.availability_zone to the user-provided value prior to scheduling.\n\nAlso, would this support the existing ZONE:HOST:NODE (admin-only by default) format that is supported on server create?\n\nhttps://docs.openstack.org/nova/latest/admin/availability-zones.html","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"25311010f6a35748dfaa9512fa65227651bc5224","unresolved":false,"context_lines":[{"line_number":35,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"},{"line_number":41,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_9baf9e93","line":38,"in_reply_to":"ffd0ebdf_3594848b","updated":"2019-01-04 08:55:00.000000000","message":"The fundamental change is that the unshelve server sets \u0027instance.availability_zone\u0027 to the user-specified AZ (ZONE:HOST:NODE). Instead of taking AZ from the ``spec`` field of ``request_specs``, once the AZ in ``spec`` is missing, unshelve server will have an error.","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ef0a0c920b65c79b1c2bd299688dc2d31c370089","unresolved":false,"context_lines":[{"line_number":35,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"},{"line_number":41,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_e927f2b5","line":38,"in_reply_to":"ffd0ebdf_9baf9e93","updated":"2019-01-04 22:11:43.000000000","message":"\u003e once the AZ in ``spec`` is missing, unshelve server will have an error.\n\nThis is a good point and should probably be highlighted in the problem description (it\u0027s also a problem for migration and evacuate operations as well which is why we have talked about not allowing AZs to be renamed/deleted while they have instances in them, see bug 1782539).","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":35,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"},{"line_number":41,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_1d73b6e9","line":38,"in_reply_to":"ffd0ebdf_e927f2b5","updated":"2019-01-07 03:30:39.000000000","message":"Yeah, this could be added in the problem description.","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2b691b51d6a301e68dca1c697ccf114446dd4272","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"},{"line_number":41,"context_line":"None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Data model impact"},{"line_number":44,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_75a9acdd","line":41,"updated":"2019-01-03 23:54:58.000000000","message":"Surely there is an alternative, as noted above, create a server from the shelved snapshot image in another AZ (or just avoid shelve/unshelve altogether and snapshot the server, delete it, and then create with the new AZ). Granted, the downside is you lose the ports/volumes you had connected to the previous server.","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"25311010f6a35748dfaa9512fa65227651bc5224","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Alternatives"},{"line_number":40,"context_line":"------------"},{"line_number":41,"context_line":"None"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Data model impact"},{"line_number":44,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_3bcb1254","line":41,"in_reply_to":"ffd0ebdf_75a9acdd","updated":"2019-01-04 08:55:00.000000000","message":"As you said, it’s straightforward :P","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2b691b51d6a301e68dca1c697ccf114446dd4272","unresolved":false,"context_lines":[{"line_number":124,"context_line":"History"},{"line_number":125,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":126,"context_line":".. list-table:: Revisions"},{"line_number":127,"context_line":"         :header-rows: 1"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"   * - Release Name"},{"line_number":130,"context_line":"     - Description"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_f58d9c7b","line":127,"updated":"2019-01-03 23:54:58.000000000","message":"nit: this doesn\u0027t format properly:\n\nhttp://logs.openstack.org/89/624689/2/check/openstack-tox-docs/23b2664/html/specs/stein/approved/support-specifying-az-when-restore-shelved-server.html#history","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"14768d449b07376ae58a0fb38e99b250487686b3","unresolved":false,"context_lines":[{"line_number":124,"context_line":"History"},{"line_number":125,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":126,"context_line":".. list-table:: Revisions"},{"line_number":127,"context_line":"         :header-rows: 1"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"   * - Release Name"},{"line_number":130,"context_line":"     - Description"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ffd0ebdf_96ebf3ae","line":127,"in_reply_to":"ffd0ebdf_f58d9c7b","updated":"2019-01-04 09:47:06.000000000","message":"Done","commit_id":"8ba585f3c464166757c1aefd26a5180bf508a944"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88d602753aa003deeaf6d7bb4cc32ffea5b31715","unresolved":false,"context_lines":[{"line_number":25,"context_line":"The ``spec`` that there are two ways an instance can be in an AZ::"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"1. The user specifically requests to create the server in the AZ."},{"line_number":28,"context_line":"2. The user does not request an AZ and one is assigned via the selected host"},{"line_number":29,"context_line":"   during server create (or resize, etc). Or [DEFAULT]/default_schedule_zone"},{"line_number":30,"context_line":"   is not None."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For the first case, the server will always remain in the user-requested AZ"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffd0ebdf_49471e4d","line":29,"range":{"start_line":28,"start_character":3,"end_line":29,"end_character":41},"updated":"2019-01-04 22:23:01.000000000","message":"This isn\u0027t accurate - the RequestSpec.availability_zone is not updated when the scheduler picks a host, the instance.availability_zone is. The RequestSpec.availability_zone is only set if (1) the user passes an AZ on server create (your #1 here) or (2) [DEFAULT]/default_schedule_zone is set.","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"The ``spec`` that there are two ways an instance can be in an AZ::"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"1. The user specifically requests to create the server in the AZ."},{"line_number":28,"context_line":"2. The user does not request an AZ and one is assigned via the selected host"},{"line_number":29,"context_line":"   during server create (or resize, etc). Or [DEFAULT]/default_schedule_zone"},{"line_number":30,"context_line":"   is not None."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For the first case, the server will always remain in the user-requested AZ"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_5013650e","line":29,"range":{"start_line":28,"start_character":3,"end_line":29,"end_character":41},"in_reply_to":"ffd0ebdf_49471e4d","updated":"2019-01-07 03:30:39.000000000","message":"Done","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88d602753aa003deeaf6d7bb4cc32ffea5b31715","unresolved":false,"context_lines":[{"line_number":30,"context_line":"   is not None."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For the first case, the server will always remain in the user-requested AZ"},{"line_number":33,"context_line":"even after shelve/unshelve. But in the second case, unshelving the server can"},{"line_number":34,"context_line":"result in the server being spawned on a new host in a different AZ - the"},{"line_number":35,"context_line":"scheduler does not restrict the AZ in that second case."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffd0ebdf_6969c2bc","line":35,"range":{"start_line":33,"start_character":28,"end_line":35,"end_character":55},"updated":"2019-01-04 22:23:01.000000000","message":"This is confusing. If I create a server and don\u0027t specify an AZ but [DEFAULT]/default_schedule_zone is set, RequestSpec.availability_zone is set and persisted and then my server is restricted to that AZ, even if the AZ is later renamed and [DEFAULT]/default_schedule_zone is changed.\n\nThe only time the server is *not* restricted to an AZ is both #1 and #2 above are false.","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"   is not None."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For the first case, the server will always remain in the user-requested AZ"},{"line_number":33,"context_line":"even after shelve/unshelve. But in the second case, unshelving the server can"},{"line_number":34,"context_line":"result in the server being spawned on a new host in a different AZ - the"},{"line_number":35,"context_line":"scheduler does not restrict the AZ in that second case."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_10f5ddcb","line":35,"range":{"start_line":33,"start_character":28,"end_line":35,"end_character":55},"in_reply_to":"ffd0ebdf_6969c2bc","updated":"2019-01-07 03:30:39.000000000","message":"Yes, this description is confusing, rewrite this sentence.","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88d602753aa003deeaf6d7bb4cc32ffea5b31715","unresolved":false,"context_lines":[{"line_number":39,"context_line":"As a administrator/user, I want to specify AZ when executing unshelve/restore"},{"line_number":40,"context_line":"a shelved server."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"As a developer/deployer, I want to set the value of ``availability_zone`` to"},{"line_number":43,"context_line":"the user-specified in ``instances``, and the ``spec`` in the ``request_specs``"},{"line_number":44,"context_line":"database table to record the AZ selected when creating the server, to"},{"line_number":45,"context_line":"facilitate comparison of server changes (Update it unless necessary)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffd0ebdf_69aea2e8","line":45,"range":{"start_line":42,"start_character":0,"end_line":45,"end_character":69},"updated":"2019-01-04 22:23:01.000000000","message":"This is also confusingly worded. I think you\u0027re just saying the same thing as the first use case above, but with implementation details.\n\nThe point is the user wants to change the AZ when unshelving the server, so let\u0027s just say that and not over-complicate it.","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"As a administrator/user, I want to specify AZ when executing unshelve/restore"},{"line_number":40,"context_line":"a shelved server."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"As a developer/deployer, I want to set the value of ``availability_zone`` to"},{"line_number":43,"context_line":"the user-specified in ``instances``, and the ``spec`` in the ``request_specs``"},{"line_number":44,"context_line":"database table to record the AZ selected when creating the server, to"},{"line_number":45,"context_line":"facilitate comparison of server changes (Update it unless necessary)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_702d4945","line":45,"range":{"start_line":42,"start_character":0,"end_line":45,"end_character":69},"in_reply_to":"ffd0ebdf_69aea2e8","updated":"2019-01-07 03:30:39.000000000","message":"Done","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88d602753aa003deeaf6d7bb4cc32ffea5b31715","unresolved":false,"context_lines":[{"line_number":44,"context_line":"database table to record the AZ selected when creating the server, to"},{"line_number":45,"context_line":"facilitate comparison of server changes (Update it unless necessary)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":50,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffd0ebdf_a90ecae2","line":47,"updated":"2019-01-04 22:23:01.000000000","message":"Would we allow resetting the AZ to None and then let nova pick the default using [DEFAULT]/default_schedule_zone? I\u0027m thinking of the case that the server was created with some default AZ1, shelved, and then the operator renamed that to AZ2 so unshelve fails. As a user, I don\u0027t care which AZ it\u0027s in, but need to get around that missing AZ1 that\u0027s in the request spec so I just want to reset it.","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"database table to record the AZ selected when creating the server, to"},{"line_number":45,"context_line":"facilitate comparison of server changes (Update it unless necessary)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":50,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_d0ef55ae","line":47,"in_reply_to":"ffd0ebdf_a90ecae2","updated":"2019-01-07 03:30:39.000000000","message":"I think this can be used as a function implementation detail. If the user does not specify AZ, using [DEFAULT]/default_schedule_zone to unshelve, otherwise using the user-specified AZ.","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88d602753aa003deeaf6d7bb4cc32ffea5b31715","unresolved":false,"context_lines":[{"line_number":52,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"It is that the unshelve server sets \u0027instance.availability_zone\u0027 to the"},{"line_number":55,"context_line":"user-specified AZ (ZONE:HOST:NODE)."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"It will support specifying the existing ZONE:HOST:NODE (admin-only) format"},{"line_number":58,"context_line":"unshelve a server."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffd0ebdf_a97d6a6f","line":55,"range":{"start_line":55,"start_character":19,"end_line":55,"end_character":33},"updated":"2019-01-04 22:23:01.000000000","message":"I\u0027d remove this since it\u0027s mentioned below and is a special case.","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"It is that the unshelve server sets \u0027instance.availability_zone\u0027 to the"},{"line_number":55,"context_line":"user-specified AZ (ZONE:HOST:NODE)."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"It will support specifying the existing ZONE:HOST:NODE (admin-only) format"},{"line_number":58,"context_line":"unshelve a server."}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_70ef8987","line":55,"range":{"start_line":55,"start_character":19,"end_line":55,"end_character":33},"in_reply_to":"ffd0ebdf_a97d6a6f","updated":"2019-01-07 03:30:39.000000000","message":"Done","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88d602753aa003deeaf6d7bb4cc32ffea5b31715","unresolved":false,"context_lines":[{"line_number":54,"context_line":"It is that the unshelve server sets \u0027instance.availability_zone\u0027 to the"},{"line_number":55,"context_line":"user-specified AZ (ZONE:HOST:NODE)."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"It will support specifying the existing ZONE:HOST:NODE (admin-only) format"},{"line_number":58,"context_line":"unshelve a server."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffd0ebdf_a9f24a05","line":57,"updated":"2019-01-04 22:23:01.000000000","message":"nit: link to https://docs.openstack.org/nova/latest/admin/availability-zones.html for reviewer clarity","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":54,"context_line":"It is that the unshelve server sets \u0027instance.availability_zone\u0027 to the"},{"line_number":55,"context_line":"user-specified AZ (ZONE:HOST:NODE)."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"It will support specifying the existing ZONE:HOST:NODE (admin-only) format"},{"line_number":58,"context_line":"unshelve a server."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_30e90180","line":57,"in_reply_to":"ffd0ebdf_a9f24a05","updated":"2019-01-07 03:30:39.000000000","message":"Done","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88d602753aa003deeaf6d7bb4cc32ffea5b31715","unresolved":false,"context_lines":[{"line_number":61,"context_line":"------------"},{"line_number":62,"context_line":"Creating a server from the shelved snapshot image in another AZ (or just avoid"},{"line_number":63,"context_line":"shelve/unshelve altogether and snapshot the server, delete it, and then create"},{"line_number":64,"context_line":"with the new AZ). Granted, the downside is you lose the ports/volumes you had"},{"line_number":65,"context_line":"connected to the previous server."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffd0ebdf_69dc6274","line":64,"range":{"start_line":64,"start_character":18,"end_line":64,"end_character":25},"updated":"2019-01-04 22:23:01.000000000","message":"Remove this word.","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":61,"context_line":"------------"},{"line_number":62,"context_line":"Creating a server from the shelved snapshot image in another AZ (or just avoid"},{"line_number":63,"context_line":"shelve/unshelve altogether and snapshot the server, delete it, and then create"},{"line_number":64,"context_line":"with the new AZ). Granted, the downside is you lose the ports/volumes you had"},{"line_number":65,"context_line":"connected to the previous server."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_d0ec35f5","line":64,"range":{"start_line":64,"start_character":18,"end_line":64,"end_character":25},"in_reply_to":"ffd0ebdf_69dc6274","updated":"2019-01-07 03:30:39.000000000","message":"Done","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88d602753aa003deeaf6d7bb4cc32ffea5b31715","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    {"},{"line_number":82,"context_line":"        \"unshelve\": {"},{"line_number":83,"context_line":"            \"availability_zone\": \u0027nova\u0027"},{"line_number":84,"context_line":"        }"},{"line_number":85,"context_line":"    }"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffd0ebdf_e95ff2e2","line":83,"range":{"start_line":83,"start_character":34,"end_line":83,"end_character":38},"updated":"2019-01-04 22:23:01.000000000","message":"nit: this is definitely not something a user should request, note the API ref on this:\n\nhttps://developer.openstack.org/api-ref/compute/?expanded\u003dcreate-server-detail#create-server\n\nand the warning here:\n\nhttps://docs.openstack.org/nova/latest/user/aggregates.html#availability-zones-azs\n\nSo use something else like \"beijing\" or \"cn-west\".","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    {"},{"line_number":82,"context_line":"        \"unshelve\": {"},{"line_number":83,"context_line":"            \"availability_zone\": \u0027nova\u0027"},{"line_number":84,"context_line":"        }"},{"line_number":85,"context_line":"    }"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_f0b0598e","line":83,"range":{"start_line":83,"start_character":34,"end_line":83,"end_character":38},"in_reply_to":"ffd0ebdf_e95ff2e2","updated":"2019-01-07 03:30:39.000000000","message":"Done","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"88d602753aa003deeaf6d7bb4cc32ffea5b31715","unresolved":false,"context_lines":[{"line_number":148,"context_line":"History"},{"line_number":149,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":150,"context_line":".. list-table:: Revisions"},{"line_number":151,"context_line":"      :header-rows: 1"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"   * - Release Name"},{"line_number":154,"context_line":"     - Description"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ffd0ebdf_a9cb2aa3","line":151,"updated":"2019-01-04 22:23:01.000000000","message":"This still shows up wrong:\n\nhttp://logs.openstack.org/89/624689/3/check/openstack-tox-docs/cba740b/html/specs/stein/approved/support-specifying-az-when-restore-shelved-server.html#history\n\nShould just be what\u0027s in the template:\n\n.. list-table:: Revisions\n   :header-rows: 1\n\n   * - Release Name\n     - Description\n   * - Stein\n     - Introduced","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4d51a6f887875e3f3af7bf57360745e831f346d5","unresolved":false,"context_lines":[{"line_number":148,"context_line":"History"},{"line_number":149,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":150,"context_line":".. list-table:: Revisions"},{"line_number":151,"context_line":"      :header-rows: 1"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"   * - Release Name"},{"line_number":154,"context_line":"     - Description"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_d35f5f0c","line":151,"in_reply_to":"ffd0ebdf_a9cb2aa3","updated":"2019-01-07 03:30:39.000000000","message":"Done","commit_id":"3928a45604de81b806101e73e83ceafb6c47eac0"}],"specs/train/approved/support-specifying-az-when-restore-shelved-server.rst":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"dc99d72e76adccaf76522c1f3c9a9760292b061d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"``request_specs`` database table. When unshelve the server, the value of"},{"line_number":23,"context_line":"AZ will be taken from ``spec`` as \u0027instance.available_zone\u0027."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The ``spec`` that there are two ways an instance can be in an AZ::"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  1. The user passes an AZ on server create or"},{"line_number":28,"context_line":"  2. [DEFAULT]/default_schedule_zone is set."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"For the above two cases, the RequestSpec.availability_zone will always remain"},{"line_number":31,"context_line":"in the user-specified or [DEFAULT]/default_schedule_zone AZ, even if the AZ is"},{"line_number":32,"context_line":"later renamed and [DEFAULT]/default_schedule_zone is changed, or that server is"},{"line_number":33,"context_line":"on shelve/unshelve."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Once the AZ in ``spec`` is missing, unshelve server will have an error."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_571afb6e","line":35,"range":{"start_line":25,"start_character":0,"end_line":35,"end_character":71},"updated":"2019-04-18 08:32:51.000000000","message":"this seems a bug and we should probably fix it, since even if we can provide az when unshelve, but if the user didn\u0027t and there is no default value set, error will occour.","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b7c9ba1b6f63d3d127f07b4e4ea4fd43f4ff65a4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"``request_specs`` database table. When unshelve the server, the value of"},{"line_number":23,"context_line":"AZ will be taken from ``spec`` as \u0027instance.available_zone\u0027."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The ``spec`` that there are two ways an instance can be in an AZ::"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  1. The user passes an AZ on server create or"},{"line_number":28,"context_line":"  2. [DEFAULT]/default_schedule_zone is set."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"For the above two cases, the RequestSpec.availability_zone will always remain"},{"line_number":31,"context_line":"in the user-specified or [DEFAULT]/default_schedule_zone AZ, even if the AZ is"},{"line_number":32,"context_line":"later renamed and [DEFAULT]/default_schedule_zone is changed, or that server is"},{"line_number":33,"context_line":"on shelve/unshelve."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Once the AZ in ``spec`` is missing, unshelve server will have an error."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_f2ad359b","line":35,"range":{"start_line":25,"start_character":0,"end_line":35,"end_character":71},"in_reply_to":"3fce034c_571afb6e","updated":"2019-04-18 09:43:51.000000000","message":"I think this is an unshelve instance policy setting. If there is no default az, then we can choose whether to allow configuration via nova.conf, or allow users to specify az when unshelve.","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3b08c16622448291f5fc8d914777b94c079e251f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":50,"context_line":"unshelve a serveri."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_e901b907","line":47,"range":{"start_line":47,"start_character":40,"end_line":47,"end_character":56},"updated":"2019-04-19 06:39:55.000000000","message":"this only can be available for the instance was shelved offload. If it is just shelved, we have no way to change az.","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5ff0531ea925a6f48ca897b020ac3fc33a4ce3b1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":50,"context_line":"unshelve a serveri."}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_146e982e","line":47,"range":{"start_line":47,"start_character":40,"end_line":47,"end_character":56},"in_reply_to":"3fce034c_e901b907","updated":"2019-04-19 08:23:01.000000000","message":"Yeah, when the server was \u0027SHELVED\u0027 or \u0027SHELVED_OFFLOADED\u0027 we cannot change it\u0027s az, but can specify the az while unshelved the instance.","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3b08c16622448291f5fc8d914777b94c079e251f","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":50,"context_line":"unshelve a serveri."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_94004803","line":49,"range":{"start_line":49,"start_character":46,"end_line":49,"end_character":55},"updated":"2019-04-19 06:39:55.000000000","message":"I\u0027m not sure we want to continue support specify host and node.","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5ff0531ea925a6f48ca897b020ac3fc33a4ce3b1","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":50,"context_line":"unshelve a serveri."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_d44c90c9","line":49,"range":{"start_line":49,"start_character":46,"end_line":49,"end_character":55},"in_reply_to":"3fce034c_94004803","updated":"2019-04-19 08:23:01.000000000","message":"These HOST and NODE are optional parameters.","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5ff0531ea925a6f48ca897b020ac3fc33a4ce3b1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":50,"context_line":"unshelve a serveri."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Alternatives"},{"line_number":53,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_74103ca9","line":50,"range":{"start_line":50,"start_character":17,"end_line":50,"end_character":18},"updated":"2019-04-19 08:23:01.000000000","message":"redundant","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3b08c16622448291f5fc8d914777b94c079e251f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"The ``availability_zone`` field is optional."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Security impact"},{"line_number":82,"context_line":"---------------"},{"line_number":83,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_5406601e","line":80,"updated":"2019-04-19 06:39:55.000000000","message":"what is happening, when the shelve isn\u0027t offload","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"5ff0531ea925a6f48ca897b020ac3fc33a4ce3b1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"The ``availability_zone`` field is optional."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Security impact"},{"line_number":82,"context_line":"---------------"},{"line_number":83,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_54e740ad","line":80,"in_reply_to":"3fce034c_5406601e","updated":"2019-04-19 08:23:01.000000000","message":"This spec aims to unshelve instance to specify the az, \u0027SHELVED\u0027 or \u0027SHELVED_OFFLOADED\u0027 was its status [1] to support this operation, so I think it\u0027s not impact when the shelve isn\u0027t offload.\n\nThe configure of \u0027shelved_offload_time\u0027 just impact for the shelve instance operator, so the status of \u0027shelving_offloading\u0027 is not exist (talk about in PengCheng lab).\n\n[1]https://github.com/openstack/nova/blob/master/nova/compute/api.py#L3691","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"cb3c7706e5a5fa9cf215558aa35884439c54f73a","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    }"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"The ``availability_zone`` field is optional."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Security impact"},{"line_number":82,"context_line":"---------------"},{"line_number":83,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3fce034c_1dc9d8aa","line":80,"in_reply_to":"3fce034c_54e740ad","updated":"2019-04-19 09:14:18.000000000","message":"Yeah, if the server\u0027s status is \u0027SHELVED\u0027, there will be start instance directly, so when the instance in \u0027SHELVED\u0027 status, it\u0027s not need to specify the az.\n\nI will note this in spec, thanks.","commit_id":"5c7005443e64233758afd66fe54ced53d1c7bf90"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc66eaa52dbfdfc28506d5f89b430bb5c0ccfb61","unresolved":false,"context_lines":[{"line_number":19,"context_line":"``availability_zone`` attribute will be set to None in the ``instances``"},{"line_number":20,"context_line":"database table (this change comes from [1]_). But the ``spec`` attribute"},{"line_number":21,"context_line":"records the value of the AZ of the instance before being shelved in the"},{"line_number":22,"context_line":"``request_specs`` database table. When unshelve the server, the value of"},{"line_number":23,"context_line":"AZ will be taken from ``spec`` as \u0027instance.available_zone\u0027."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The ``spec`` that there are two ways an instance can be in an AZ::"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_1b639a1c","line":23,"range":{"start_line":22,"start_character":34,"end_line":23,"end_character":60},"updated":"2019-04-23 19:59:47.000000000","message":"Well, yes and no - the AZ from the request spec (if set) will be used during scheduling to restrict the filtered hosts to that AZ, and then the selected host\u0027s AZ is used to set the instance.availability_zone here:\n\nhttps://github.com/openstack/nova/blob/fc3890667e4971e3f0f35ac921c2a6c25f72adec/nova/conductor/manager.py#L890\n\nBut yeah, you could say if the RequestSpec.availability_zone during unshelve is not None, then the instance.availability_zone should have the same value (assuming the AvailabilityZoneFilter is enabled).","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc66eaa52dbfdfc28506d5f89b430bb5c0ccfb61","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  2. [DEFAULT]/default_schedule_zone is set."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"For the above two cases, the RequestSpec.availability_zone will always remain"},{"line_number":31,"context_line":"in the user-specified or [DEFAULT]/default_schedule_zone AZ, even if the AZ is"},{"line_number":32,"context_line":"later renamed and [DEFAULT]/default_schedule_zone is changed, or that server is"},{"line_number":33,"context_line":"on shelve/unshelve."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Once the AZ in ``spec`` is missing, unshelve server will have an error."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_bb736ee7","line":32,"range":{"start_line":31,"start_character":61,"end_line":32,"end_character":60},"updated":"2019-04-23 19:59:47.000000000","message":"So this is the real problem is that while the server is shelved offloaded, the AZ was renamed, or default_schedule_zone was changed and the AZ no longer exists, so when unshelving, the AvailabilityZoneFilter will filter out all hosts if that old AZ no longer exists, and unshelve will fail with NoValidHost.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e796fb8fdb1f13322e6e65e85bd1592ca3d4c19e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  2. [DEFAULT]/default_schedule_zone is set."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"For the above two cases, the RequestSpec.availability_zone will always remain"},{"line_number":31,"context_line":"in the user-specified or [DEFAULT]/default_schedule_zone AZ, even if the AZ is"},{"line_number":32,"context_line":"later renamed and [DEFAULT]/default_schedule_zone is changed, or that server is"},{"line_number":33,"context_line":"on shelve/unshelve."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Once the AZ in ``spec`` is missing, unshelve server will have an error."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_5d052913","line":32,"range":{"start_line":31,"start_character":61,"end_line":32,"end_character":60},"in_reply_to":"ffb9cba7_bb736ee7","updated":"2019-04-29 14:34:26.000000000","message":"Yes, this is the root cause, if the AZ is not exist, unshelving the instance will be failed.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"067f357632c9ca14fa271f925440ed74a0f9db61","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  2. [DEFAULT]/default_schedule_zone is set."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"For the above two cases, the RequestSpec.availability_zone will always remain"},{"line_number":31,"context_line":"in the user-specified or [DEFAULT]/default_schedule_zone AZ, even if the AZ is"},{"line_number":32,"context_line":"later renamed and [DEFAULT]/default_schedule_zone is changed, or that server is"},{"line_number":33,"context_line":"on shelve/unshelve."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Once the AZ in ``spec`` is missing, unshelve server will have an error."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_be383cd3","line":32,"range":{"start_line":31,"start_character":61,"end_line":32,"end_character":60},"in_reply_to":"ffb9cba7_bb736ee7","updated":"2019-04-23 20:06:04.000000000","message":"You could also link to https://bugs.launchpad.net/nova/+bug/1723880 for this.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e796fb8fdb1f13322e6e65e85bd1592ca3d4c19e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  2. [DEFAULT]/default_schedule_zone is set."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"For the above two cases, the RequestSpec.availability_zone will always remain"},{"line_number":31,"context_line":"in the user-specified or [DEFAULT]/default_schedule_zone AZ, even if the AZ is"},{"line_number":32,"context_line":"later renamed and [DEFAULT]/default_schedule_zone is changed, or that server is"},{"line_number":33,"context_line":"on shelve/unshelve."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Once the AZ in ``spec`` is missing, unshelve server will have an error."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_7d54ad21","line":32,"range":{"start_line":31,"start_character":61,"end_line":32,"end_character":60},"in_reply_to":"ffb9cba7_be383cd3","updated":"2019-04-29 14:34:26.000000000","message":"Done","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc66eaa52dbfdfc28506d5f89b430bb5c0ccfb61","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"},{"line_number":39,"context_line":"As a administrator/user, I want to specify AZ when executing unshelve/restore"},{"line_number":40,"context_line":"a shelved server."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_7b7df6af","line":40,"range":{"start_line":40,"start_character":2,"end_line":40,"end_character":9},"updated":"2019-04-23 19:59:47.000000000","message":"nit: let\u0027s be specific and say shelved-offloaded server, because that\u0027s the only case where we go through the scheduler again (and the instance.host is technically not nulled out until the server is offloaded)","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e796fb8fdb1f13322e6e65e85bd1592ca3d4c19e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"},{"line_number":39,"context_line":"As a administrator/user, I want to specify AZ when executing unshelve/restore"},{"line_number":40,"context_line":"a shelved server."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_0f07741a","line":40,"range":{"start_line":40,"start_character":2,"end_line":40,"end_character":9},"in_reply_to":"ffb9cba7_7b7df6af","updated":"2019-04-29 14:34:26.000000000","message":"Done","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ce219b6d5035614c5230eaaf5d80f5e40fa650f7","unresolved":false,"context_lines":[{"line_number":39,"context_line":"As a administrator/user, I want to specify AZ when executing unshelve/restore"},{"line_number":40,"context_line":"a shelved server."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_de6f30c3","line":42,"updated":"2019-04-23 20:12:49.000000000","message":"One more fun thing to think about here is the [cinder]/cross_az_attach\u003dFalse case:\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#cinder.cross_az_attach\n\nIf that is true, the server create flow will fail if the specified AZ does not match the volumes being attached to the server. Unshelve should likely also fail for the same reason, but to figure that out we\u0027d have to iterate the volumes (via BDMs) attached to the server and determine if their AZ matches the user-specified AZ and if not, fail the unshelve request. If we didn\u0027t explicitly check that in the API, I believe we\u0027d fail later in the compute during unshelve during _prep_block_device because we\u0027d hit this code:\n\nhttps://github.com/openstack/nova/blob/fc3890667e4971e3f0f35ac921c2a6c25f72adec/nova/virt/block_device.py#L635\n\nYou should probably document it somewhere in here either way as an edge case.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e796fb8fdb1f13322e6e65e85bd1592ca3d4c19e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"As a administrator/user, I want to specify AZ when executing unshelve/restore"},{"line_number":40,"context_line":"a shelved server."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Proposed change"},{"line_number":43,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_0fb0d4dc","line":42,"in_reply_to":"ffb9cba7_de6f30c3","updated":"2019-04-29 14:34:26.000000000","message":"Yup, this is necessary, I will add this at here to record.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc66eaa52dbfdfc28506d5f89b430bb5c0ccfb61","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":50,"context_line":"unshelve a server, \u0027HOST\u0027 and \u0027NODE\u0027 are optional parameters."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_5b591258","line":49,"range":{"start_line":49,"start_character":41,"end_line":49,"end_character":55},"updated":"2019-04-23 19:59:47.000000000","message":"Hmm, no I don\u0027t like this because host:node equate to forced_hosts/forced_nodes in the request spec which bypasses the filters in the scheduler and forces the server to be unshelved in the given host/node. We don\u0027t want to be supporting forced host/node stuff like this anymore, we removed the \u0027force\u0027 parameter from the live migrate and evacuate APIs and will be added new parameters to the server create API to request a host and/or node but without forcing it and bypassing the scheduler filters.\n\nSo I think if we do this, we should just accept the availability_zone but only if it\u0027s just a zone and only if the server is shelved offloaded.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cba50357ef00fedb4720524851fc3a5de192131e","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":50,"context_line":"unshelve a server, \u0027HOST\u0027 and \u0027NODE\u0027 are optional parameters."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_323798e6","line":49,"range":{"start_line":49,"start_character":41,"end_line":49,"end_character":55},"in_reply_to":"ffb9cba7_5b591258","updated":"2019-04-24 04:49:55.000000000","message":"+1, I\u0027m on this side also.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e796fb8fdb1f13322e6e65e85bd1592ca3d4c19e","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":50,"context_line":"unshelve a server, \u0027HOST\u0027 and \u0027NODE\u0027 are optional parameters."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_b2c00f2c","line":49,"range":{"start_line":49,"start_character":41,"end_line":49,"end_character":55},"in_reply_to":"ffb9cba7_5b591258","updated":"2019-04-29 14:34:26.000000000","message":"Yes, I agree that adding the \u0027host_name\u0027 and \u0027hypervisor_hostname\u0027 parameters to support scheduling by filter is reasonable, the force host and/or node is too violent, change it.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f37e96390eb19f41bd098e41dd6ac33376f6454a","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":50,"context_line":"unshelve a server, \u0027HOST\u0027 and \u0027NODE\u0027 are optional parameters."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9fb8cfa7_5e357ed9","line":49,"range":{"start_line":49,"start_character":41,"end_line":49,"end_character":55},"in_reply_to":"ffb9cba7_b2c00f2c","updated":"2019-06-04 21:09:38.000000000","message":"+1, adding zone:host:node is a large hammer (total scheduler bypass, goes way further than only AZ) and is not equivalent to simply adding the ability for a user to pass an availability zone during unshelve. I do not think we should add zone:host:node as part of this spec.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c4ecadc83c395014e21faabad821948230d9ce4e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"shelve/unshelve altogether and snapshot the server, delete it, and then create"},{"line_number":56,"context_line":"with the new AZ). The downside is you lose the ports/volumes you had connected"},{"line_number":57,"context_line":"to the previous server."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Data model impact"},{"line_number":60,"context_line":"-----------------"},{"line_number":61,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_7e196477","line":58,"updated":"2019-04-23 20:03:57.000000000","message":"Another alternative to the proposal which was discussed previously is if I created my server with a specific AZ and it still exists when I unshelve, but I don\u0027t want it in that AZ anymore (for whatever reason) but don\u0027t care where it is - would we allow passing availability_zone\u003dNone to reset the RequestSpec.availability_zone so the server can now move freely between zones? It seems like not a very good use case, but it\u0027s probably worth documenting here for completeness.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e796fb8fdb1f13322e6e65e85bd1592ca3d4c19e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"shelve/unshelve altogether and snapshot the server, delete it, and then create"},{"line_number":56,"context_line":"with the new AZ). The downside is you lose the ports/volumes you had connected"},{"line_number":57,"context_line":"to the previous server."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Data model impact"},{"line_number":60,"context_line":"-----------------"},{"line_number":61,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_65672fbf","line":58,"in_reply_to":"ffb9cba7_7e196477","updated":"2019-04-29 14:34:26.000000000","message":"Yeah, this alternative is worth documenting here, added.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc66eaa52dbfdfc28506d5f89b430bb5c0ccfb61","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"The ``availability_zone`` field is optional."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"If the status of the server is \u0027SHELVED\u0027, then there is no need to specify"},{"line_number":82,"context_line":"AZ, it will be start instance directly. This change only supports the case"},{"line_number":83,"context_line":"where the server status is \u0027SHELVED_OFFLOADED\u0027."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_9b246ac8","line":82,"range":{"start_line":81,"start_character":0,"end_line":82,"end_character":39},"updated":"2019-04-23 19:59:47.000000000","message":"Let\u0027s be clear and say that if the server status is \"SHELVED\" rather than \"SHELVED_OFFLOADED\" and an AZ is specified the API will return a 400 response, otherwise if my server was created in AZ1, I shelved if (but didn\u0027t offload it yet), and then unshelved and specified AZ2 but the server doesn\u0027t end up in AZ2, I\u0027ll wonder why my request was ignored.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"cba50357ef00fedb4720524851fc3a5de192131e","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"The ``availability_zone`` field is optional."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"If the status of the server is \u0027SHELVED\u0027, then there is no need to specify"},{"line_number":82,"context_line":"AZ, it will be start instance directly. This change only supports the case"},{"line_number":83,"context_line":"where the server status is \u0027SHELVED_OFFLOADED\u0027."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_725af02a","line":82,"range":{"start_line":81,"start_character":0,"end_line":82,"end_character":39},"in_reply_to":"ffb9cba7_9b246ac8","updated":"2019-04-24 04:49:55.000000000","message":"+1 also, I hope the explicitly return an error to the user","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e796fb8fdb1f13322e6e65e85bd1592ca3d4c19e","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"The ``availability_zone`` field is optional."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"If the status of the server is \u0027SHELVED\u0027, then there is no need to specify"},{"line_number":82,"context_line":"AZ, it will be start instance directly. This change only supports the case"},{"line_number":83,"context_line":"where the server status is \u0027SHELVED_OFFLOADED\u0027."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_e5cebf80","line":82,"range":{"start_line":81,"start_character":0,"end_line":82,"end_character":39},"in_reply_to":"ffb9cba7_9b246ac8","updated":"2019-04-29 14:34:26.000000000","message":"Yeah, let\u0027s do this description clearly.","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc66eaa52dbfdfc28506d5f89b430bb5c0ccfb61","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Testing"},{"line_number":131,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":132,"context_line":"* Add tempest tests"},{"line_number":133,"context_line":"* Add related unit tests"},{"line_number":134,"context_line":"* Add related functional tests"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"ffb9cba7_bb212eb7","line":132,"updated":"2019-04-23 19:59:47.000000000","message":"I don\u0027t think we probably need a tempest test for this since there are no external services involved, so nova in-tree functional tests for the positive case should be sufficient (and unit tests for the negative tests).","commit_id":"7022bd6ac63f3d7c9fc61254bb48fa46570198ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"6f4c206e6f0c949aa0399367e3790fe88214d68e","unresolved":false,"context_lines":[{"line_number":166,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":".. [1] https://review.openstack.org/#/c/606086/"},{"line_number":169,"context_line":".. [2] https://bugs.launchpad.net/nova/+bug/1723880 "},{"line_number":170,"context_line":""},{"line_number":171,"context_line":".. [3] https://docs.openstack.org/nova/latest/configuration/config.html#cinder.cross_az_attach"},{"line_number":172,"context_line":".. [4] https://specs.openstack.org/openstack/nova-specs/specs/stein/implemented/remove-force-flag-from-live-migrate-and-evacuate.html"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ffb9cba7_3c7b8d7b","line":169,"range":{"start_line":169,"start_character":51,"end_line":169,"end_character":52},"updated":"2019-04-30 01:01:14.000000000","message":"redundant.","commit_id":"2360bfb424bd6c6c5037e9c54cf9ac1411f48709"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":20,"context_line":"database table (this change comes from [1]_). But the ``spec`` attribute"},{"line_number":21,"context_line":"records the value of the AZ of the instance before being shelved in the"},{"line_number":22,"context_line":"``request_specs`` database table. When unshelve the server, the value of"},{"line_number":23,"context_line":"AZ will be taken from ``spec`` as \u0027instance.available_zone\u0027."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The ``spec`` that there are two ways an instance can be in an AZ::"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_2a4de971","line":23,"range":{"start_line":23,"start_character":44,"end_line":23,"end_character":58},"updated":"2019-06-04 20:31:16.000000000","message":"availability_zone","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"database table (this change comes from [1]_). But the ``spec`` attribute"},{"line_number":21,"context_line":"records the value of the AZ of the instance before being shelved in the"},{"line_number":22,"context_line":"``request_specs`` database table. When unshelve the server, the value of"},{"line_number":23,"context_line":"AZ will be taken from ``spec`` as \u0027instance.available_zone\u0027."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The ``spec`` that there are two ways an instance can be in an AZ::"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_d798716b","line":23,"range":{"start_line":23,"start_character":44,"end_line":23,"end_character":58},"in_reply_to":"9fb8cfa7_2a4de971","updated":"2019-06-05 08:23:20.000000000","message":"Done","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":22,"context_line":"``request_specs`` database table. When unshelve the server, the value of"},{"line_number":23,"context_line":"AZ will be taken from ``spec`` as \u0027instance.available_zone\u0027."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The ``spec`` that there are two ways an instance can be in an AZ::"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  1. The user passes an AZ on server create or"},{"line_number":28,"context_line":"  2. [DEFAULT]/default_schedule_zone is set."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_2a7649a6","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":23},"updated":"2019-06-04 20:31:16.000000000","message":"I\u0027m not sure what this is trying to say, but you could probably just remove the first part \"The spec that\" so it\u0027s \"There are two ways...\".\n\nAre you trying to say that there are two ways the RequestSpec.availability_zone can be set during server create? If so, just say that.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"``request_specs`` database table. When unshelve the server, the value of"},{"line_number":23,"context_line":"AZ will be taken from ``spec`` as \u0027instance.available_zone\u0027."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The ``spec`` that there are two ways an instance can be in an AZ::"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"  1. The user passes an AZ on server create or"},{"line_number":28,"context_line":"  2. [DEFAULT]/default_schedule_zone is set."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_b79ffd4e","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":23},"in_reply_to":"9fb8cfa7_2a7649a6","updated":"2019-06-05 08:23:20.000000000","message":"\"There are two ways...\" is ok.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":32,"context_line":"later renamed and [DEFAULT]/default_schedule_zone is changed, or that server"},{"line_number":33,"context_line":"is on shelve/unshelve, there is a related bug here [2]_."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Once the AZ in ``spec`` is missing, unshelve server will have an error."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_8ab5f533","line":35,"updated":"2019-06-04 20:31:16.000000000","message":"Ic27195e46502067c87ee9c71a811a3ca3f610b73 is also related and prevents renaming an AZ that has instances in it, but that relies on the instances have the host set to a non-None value for hosts in that AZ, which wouldn\u0027t apply for shelved offloaded servers since their host value is None.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"later renamed and [DEFAULT]/default_schedule_zone is changed, or that server"},{"line_number":33,"context_line":"is on shelve/unshelve, there is a related bug here [2]_."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Once the AZ in ``spec`` is missing, unshelve server will have an error."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Use Cases"},{"line_number":38,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_12d3773a","line":35,"in_reply_to":"9fb8cfa7_8ab5f533","updated":"2019-06-05 08:23:20.000000000","message":"That change is appropriate, can prevent renaming an AZ that has instances in it, avoid some issues, such as \"\"No valid Host found\".","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"If the user configures cross_az_attach\u003dTrue [3]_ in cinder.conf, the server"},{"line_number":48,"context_line":"create flow will fail if the specified AZ does not match the volumes being"},{"line_number":49,"context_line":"attached to the server. Unshelve should likely also fail for the same reason,"},{"line_number":50,"context_line":"but to figure that out we\u0027d have to iterate the volumes (via BDMs) attached to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_eaaa7183","line":47,"range":{"start_line":47,"start_character":52,"end_line":47,"end_character":58},"updated":"2019-06-04 20:31:16.000000000","message":"cross_az_attach is actually in nova.conf, in the [cinder] group.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"If the user configures cross_az_attach\u003dTrue [3]_ in cinder.conf, the server"},{"line_number":48,"context_line":"create flow will fail if the specified AZ does not match the volumes being"},{"line_number":49,"context_line":"attached to the server. Unshelve should likely also fail for the same reason,"},{"line_number":50,"context_line":"but to figure that out we\u0027d have to iterate the volumes (via BDMs) attached to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_2aa169aa","line":47,"range":{"start_line":47,"start_character":7,"end_line":47,"end_character":11},"updated":"2019-06-04 20:31:16.000000000","message":"nit: to avoid confusion about this being the end-user of the cloud (the tenant) I would say \"deployer\" or \"operator\" here.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"If the user configures cross_az_attach\u003dTrue [3]_ in cinder.conf, the server"},{"line_number":48,"context_line":"create flow will fail if the specified AZ does not match the volumes being"},{"line_number":49,"context_line":"attached to the server. Unshelve should likely also fail for the same reason,"},{"line_number":50,"context_line":"but to figure that out we\u0027d have to iterate the volumes (via BDMs) attached to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_9288c7c6","line":47,"range":{"start_line":47,"start_character":7,"end_line":47,"end_character":11},"in_reply_to":"9fb8cfa7_2aa169aa","updated":"2019-06-05 08:23:20.000000000","message":"Done","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"If the user configures cross_az_attach\u003dTrue [3]_ in cinder.conf, the server"},{"line_number":48,"context_line":"create flow will fail if the specified AZ does not match the volumes being"},{"line_number":49,"context_line":"attached to the server. Unshelve should likely also fail for the same reason,"},{"line_number":50,"context_line":"but to figure that out we\u0027d have to iterate the volumes (via BDMs) attached to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_321f9b6d","line":47,"range":{"start_line":47,"start_character":52,"end_line":47,"end_character":58},"in_reply_to":"9fb8cfa7_eaaa7183","updated":"2019-06-05 08:23:20.000000000","message":"Done","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":58,"context_line":"current feature and limitations."},{"line_number":59,"context_line":"This host and/or node equate to forced_hosts/forced_nodes in the request spec"},{"line_number":60,"context_line":"which bypasses the filters in the scheduler and forces the server to be"},{"line_number":61,"context_line":"unshelved in the given host and/or node. Which will not be supporting forced"},{"line_number":62,"context_line":"host and/or node stuff like this anymore, and will be removed the \u0027force\u0027"},{"line_number":63,"context_line":"parameter from the live migrate and evacuate APIs [4]_, and will be added new"},{"line_number":64,"context_line":"parameters to the server create API to request host and/or node but without"},{"line_number":65,"context_line":"forcing it and bypassing the scheduler filters [5]_."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_6abf61fb","line":62,"range":{"start_line":61,"start_character":41,"end_line":62,"end_character":41},"updated":"2019-06-04 20:31:16.000000000","message":"To clarify for this spec, are you saying that if an admin unshelves using an availability_zone with a host or node in it, we would force and bypass the scheduler, or not? Because yes it\u0027s true we\u0027re trying to get away from that force behavior, but this would add it to the unshelve API (unless we disallow that - which we could decide to do).\n\nWe talked about this earlier:\n\nhttps://review.opendev.org/#/c/624689/7/specs/train/approved/support-specifying-az-when-restore-shelved-server.rst@49\n\nAnd it sounded like you were in agreement in not supporting the force behavior and just having the availability_zone parameter be an availability_zone and nothing more (so no ZONE:HOST:NODE format support).\n\nI would personally prefer to not allow new wrinkles that allow forcing the server to a specific host/node which bypass the scheduler. Maybe we should ask in the ML for wider feedback.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"current feature and limitations."},{"line_number":59,"context_line":"This host and/or node equate to forced_hosts/forced_nodes in the request spec"},{"line_number":60,"context_line":"which bypasses the filters in the scheduler and forces the server to be"},{"line_number":61,"context_line":"unshelved in the given host and/or node. Which will not be supporting forced"},{"line_number":62,"context_line":"host and/or node stuff like this anymore, and will be removed the \u0027force\u0027"},{"line_number":63,"context_line":"parameter from the live migrate and evacuate APIs [4]_, and will be added new"},{"line_number":64,"context_line":"parameters to the server create API to request host and/or node but without"},{"line_number":65,"context_line":"forcing it and bypassing the scheduler filters [5]_."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_0331eb0b","line":62,"range":{"start_line":61,"start_character":41,"end_line":62,"end_character":41},"in_reply_to":"9fb8cfa7_6abf61fb","updated":"2019-06-05 08:23:20.000000000","message":"@PS7, I think may have a misunderstanding of your comments. I intended to specify AZ when unshelve a shelved offloaded server. There is no need to specify host and/or node. I will change the description here, just change the availability_zone parameter.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":71,"context_line":"with the new AZ). The downside is you lose the ports/volumes you had connected"},{"line_number":72,"context_line":"to the previous server."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Another alternative to the proposal which is if I created my server with a"},{"line_number":75,"context_line":"specific AZ and it still exists when I unshelve, but I don\u0027t want it in that"},{"line_number":76,"context_line":"AZ anymore (for whatever reason), and don\u0027t care where it is - would we allow"},{"line_number":77,"context_line":"passing ``availability_zone\u003dNone`` to reset the RequestSpec.availability_zone"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_6a6d2197","line":74,"updated":"2019-06-04 20:31:16.000000000","message":"This one is more of a question than an alternative. Maybe clarify this by saying, \"For the purpose of this spec we will not support un-setting the AZ during unshelve of a shelved offloaded server.\"","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":71,"context_line":"with the new AZ). The downside is you lose the ports/volumes you had connected"},{"line_number":72,"context_line":"to the previous server."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Another alternative to the proposal which is if I created my server with a"},{"line_number":75,"context_line":"specific AZ and it still exists when I unshelve, but I don\u0027t want it in that"},{"line_number":76,"context_line":"AZ anymore (for whatever reason), and don\u0027t care where it is - would we allow"},{"line_number":77,"context_line":"passing ``availability_zone\u003dNone`` to reset the RequestSpec.availability_zone"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_48ace08b","line":74,"in_reply_to":"9fb8cfa7_6a6d2197","updated":"2019-06-05 08:23:20.000000000","message":"Yeah, This is just a condition to support this spec, removed.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":76,"context_line":"AZ anymore (for whatever reason), and don\u0027t care where it is - would we allow"},{"line_number":77,"context_line":"passing ``availability_zone\u003dNone`` to reset the RequestSpec.availability_zone"},{"line_number":78,"context_line":"so the server can now move freely between zones."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Data model impact"},{"line_number":81,"context_line":"-----------------"},{"line_number":82,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_2a2e4943","line":79,"updated":"2019-06-04 20:31:16.000000000","message":"I guess another alternative is the AZ rename/delete code could be changed to prevent renaming/deleting an AZ while there are shelved offloaded servers that were created in that AZ. This, however, would not be scalable because we\u0027d have to get and deserialize every RequestSpec for every SHELVED_OFFLOADED server just to see if it had a matching AZ. In other words, because the RequestSpec is a serialized json string in the database, we cannot do a simple DB query to efficiently get this information.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"AZ anymore (for whatever reason), and don\u0027t care where it is - would we allow"},{"line_number":77,"context_line":"passing ``availability_zone\u003dNone`` to reset the RequestSpec.availability_zone"},{"line_number":78,"context_line":"so the server can now move freely between zones."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Data model impact"},{"line_number":81,"context_line":"-----------------"},{"line_number":82,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_28bdecb6","line":79,"in_reply_to":"9fb8cfa7_2a2e4943","updated":"2019-06-05 08:23:20.000000000","message":"Thanks, add this in alternative, this is something I have not considered.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"If the server status is \u0027SHELVED\u0027 rather than \u0027SHELVED_OFFLOADED\u0027 and an AZ"},{"line_number":103,"context_line":"is specified the API will return a 400 response, otherwise if my server was"},{"line_number":104,"context_line":"created in AZ1, I shelved if (but didn\u0027t offload it yet), and then unshelved"},{"line_number":105,"context_line":"and specified AZ2 but the server doesn\u0027t end up in AZ2, this request will be"},{"line_number":106,"context_line":"ignored, beacause of that will be start instance directly. So this change only"},{"line_number":107,"context_line":"supports the case where the server status is \u0027SHELVED_OFFLOADED\u0027."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_aa21d94f","line":104,"range":{"start_line":104,"start_character":26,"end_line":104,"end_character":28},"updated":"2019-06-04 20:31:16.000000000","message":"it","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"If the server status is \u0027SHELVED\u0027 rather than \u0027SHELVED_OFFLOADED\u0027 and an AZ"},{"line_number":103,"context_line":"is specified the API will return a 400 response, otherwise if my server was"},{"line_number":104,"context_line":"created in AZ1, I shelved if (but didn\u0027t offload it yet), and then unshelved"},{"line_number":105,"context_line":"and specified AZ2 but the server doesn\u0027t end up in AZ2, this request will be"},{"line_number":106,"context_line":"ignored, beacause of that will be start instance directly. So this change only"},{"line_number":107,"context_line":"supports the case where the server status is \u0027SHELVED_OFFLOADED\u0027."}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_886c1837","line":104,"range":{"start_line":104,"start_character":26,"end_line":104,"end_character":28},"in_reply_to":"9fb8cfa7_aa21d94f","updated":"2019-06-05 08:23:20.000000000","message":"Done","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":103,"context_line":"is specified the API will return a 400 response, otherwise if my server was"},{"line_number":104,"context_line":"created in AZ1, I shelved if (but didn\u0027t offload it yet), and then unshelved"},{"line_number":105,"context_line":"and specified AZ2 but the server doesn\u0027t end up in AZ2, this request will be"},{"line_number":106,"context_line":"ignored, beacause of that will be start instance directly. So this change only"},{"line_number":107,"context_line":"supports the case where the server status is \u0027SHELVED_OFFLOADED\u0027."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_2ad3a93a","line":106,"range":{"start_line":106,"start_character":9,"end_line":106,"end_character":17},"updated":"2019-06-04 20:31:16.000000000","message":"because","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"is specified the API will return a 400 response, otherwise if my server was"},{"line_number":104,"context_line":"created in AZ1, I shelved if (but didn\u0027t offload it yet), and then unshelved"},{"line_number":105,"context_line":"and specified AZ2 but the server doesn\u0027t end up in AZ2, this request will be"},{"line_number":106,"context_line":"ignored, beacause of that will be start instance directly. So this change only"},{"line_number":107,"context_line":"supports the case where the server status is \u0027SHELVED_OFFLOADED\u0027."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_a869dc25","line":106,"range":{"start_line":106,"start_character":9,"end_line":106,"end_character":17},"in_reply_to":"9fb8cfa7_2ad3a93a","updated":"2019-06-05 08:23:20.000000000","message":"Done","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Other end user impact"},{"line_number":118,"context_line":"---------------------"},{"line_number":119,"context_line":"The python-novaclient and/or python-openstackclient will be updated."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Performance Impact"},{"line_number":122,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_6af0c1ca","line":119,"range":{"start_line":119,"start_character":22,"end_line":119,"end_character":28},"updated":"2019-06-04 20:31:16.000000000","message":"nit: just say and since we want both","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"Other end user impact"},{"line_number":118,"context_line":"---------------------"},{"line_number":119,"context_line":"The python-novaclient and/or python-openstackclient will be updated."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Performance Impact"},{"line_number":122,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_28672c50","line":119,"range":{"start_line":119,"start_character":22,"end_line":119,"end_character":28},"in_reply_to":"9fb8cfa7_6af0c1ca","updated":"2019-06-05 08:23:20.000000000","message":"Done","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Testing"},{"line_number":155,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":156,"context_line":"* Add tempest tests"},{"line_number":157,"context_line":"* Add related unit tests"},{"line_number":158,"context_line":"* Add related functional tests"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_4ac13d54","line":156,"updated":"2019-06-04 20:31:16.000000000","message":"I don\u0027t think we need tempest tests for this. The response payload isn\u0027t changing so we don\u0027t need new response schema validation in tempest. And we can test all of this using in-tree functional tests.","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Testing"},{"line_number":155,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":156,"context_line":"* Add tempest tests"},{"line_number":157,"context_line":"* Add related unit tests"},{"line_number":158,"context_line":"* Add related functional tests"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_8855f852","line":156,"in_reply_to":"9fb8cfa7_4ac13d54","updated":"2019-06-05 08:23:20.000000000","message":"Done","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f4481ba4b3d87990b25f0aafa9a24754891565ba","unresolved":false,"context_lines":[{"line_number":165,"context_line":"References"},{"line_number":166,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":".. [1] https://review.openstack.org/#/c/606086/"},{"line_number":169,"context_line":".. [2] https://bugs.launchpad.net/nova/+bug/1723880"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":".. [3] https://docs.openstack.org/nova/latest/configuration/config.html#cinder.cross_az_attach"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_aa3b19cf","line":168,"range":{"start_line":168,"start_character":7,"end_line":168,"end_character":47},"updated":"2019-06-04 20:31:16.000000000","message":"nit: this is the stable/rocky change, it\u0027s probably better to link to the change on (what was then current) master:\n\nhttps://review.opendev.org/#/c/599087/","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b253bee8166888c21ec1f7a43a75965b6392e48a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"References"},{"line_number":166,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":".. [1] https://review.openstack.org/#/c/606086/"},{"line_number":169,"context_line":".. [2] https://bugs.launchpad.net/nova/+bug/1723880"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":".. [3] https://docs.openstack.org/nova/latest/configuration/config.html#cinder.cross_az_attach"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fb8cfa7_a8f55ccd","line":168,"range":{"start_line":168,"start_character":7,"end_line":168,"end_character":47},"in_reply_to":"9fb8cfa7_aa3b19cf","updated":"2019-06-05 08:23:20.000000000","message":"Done","commit_id":"a81b2b53cd7aa0ae8f56f5cb1188f299700d36d5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"02ed43c45698c1b7d7fb14ec9a554b22e4caeb59","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":58,"context_line":"unshelve a server, \u0027HOST\u0027 and/or \u0027NODE\u0027 are optional parameters. This spec"},{"line_number":59,"context_line":"proposes to support admin to specify ``availability_zone``, not contains"},{"line_number":60,"context_line":"\u0027HOST\u0027 and/or \u0027NODE\u0027 parameters. Because of the RequestSpec records the"},{"line_number":61,"context_line":"server\u0027s ``spec`` just only have the ``availability_zone`` parameter and"},{"line_number":62,"context_line":"nothing more (so no ZONE:HOST:NODE format support)."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Alternatives"},{"line_number":65,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9fb8cfa7_e09ee452","line":62,"range":{"start_line":57,"start_character":0,"end_line":62,"end_character":51},"updated":"2019-06-06 20:48:43.000000000","message":"This is still kind of confusing but I think you have the gist. I think it would be easier if you just wrote something like this:\n\n\"The availability_zone parameter for unshelve will just be an availability zone, not the `ZONE:HOST:NODE`_ (admin-only) format available during server create which, when HOST and/or NODE are specified, will forcefully bypass the scheduler.\"","commit_id":"d4ad4a581e9a04e35d19ea653b295ad499918c36"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2ed9ef28838a603804f03cb6e1bfe2348dcb27b8","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":58,"context_line":"unshelve a server, \u0027HOST\u0027 and/or \u0027NODE\u0027 are optional parameters. This spec"},{"line_number":59,"context_line":"proposes to support admin to specify ``availability_zone``, not contains"},{"line_number":60,"context_line":"\u0027HOST\u0027 and/or \u0027NODE\u0027 parameters. Because of the RequestSpec records the"},{"line_number":61,"context_line":"server\u0027s ``spec`` just only have the ``availability_zone`` parameter and"},{"line_number":62,"context_line":"nothing more (so no ZONE:HOST:NODE format support)."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Alternatives"},{"line_number":65,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9fb8cfa7_caa5fa05","line":62,"range":{"start_line":57,"start_character":0,"end_line":62,"end_character":51},"in_reply_to":"9fb8cfa7_74a87576","updated":"2019-06-06 23:54:56.000000000","message":"Done","commit_id":"d4ad4a581e9a04e35d19ea653b295ad499918c36"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"37fde440f02d523a13eda785ed33f4e4ecdf0669","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":58,"context_line":"unshelve a server, \u0027HOST\u0027 and/or \u0027NODE\u0027 are optional parameters. This spec"},{"line_number":59,"context_line":"proposes to support admin to specify ``availability_zone``, not contains"},{"line_number":60,"context_line":"\u0027HOST\u0027 and/or \u0027NODE\u0027 parameters. Because of the RequestSpec records the"},{"line_number":61,"context_line":"server\u0027s ``spec`` just only have the ``availability_zone`` parameter and"},{"line_number":62,"context_line":"nothing more (so no ZONE:HOST:NODE format support)."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Alternatives"},{"line_number":65,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9fb8cfa7_0a90f242","line":62,"range":{"start_line":57,"start_character":0,"end_line":62,"end_character":51},"in_reply_to":"9fb8cfa7_caa5fa05","updated":"2019-06-07 00:30:38.000000000","message":"Thanks Matt, melwitt.","commit_id":"d4ad4a581e9a04e35d19ea653b295ad499918c36"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8270a3cde030c0f2333e19c5efd55bf1f32641b4","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"It will support specifying the existing `ZONE:HOST:NODE`_ (admin-only) format"},{"line_number":58,"context_line":"unshelve a server, \u0027HOST\u0027 and/or \u0027NODE\u0027 are optional parameters. This spec"},{"line_number":59,"context_line":"proposes to support admin to specify ``availability_zone``, not contains"},{"line_number":60,"context_line":"\u0027HOST\u0027 and/or \u0027NODE\u0027 parameters. Because of the RequestSpec records the"},{"line_number":61,"context_line":"server\u0027s ``spec`` just only have the ``availability_zone`` parameter and"},{"line_number":62,"context_line":"nothing more (so no ZONE:HOST:NODE format support)."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Alternatives"},{"line_number":65,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9fb8cfa7_74a87576","line":62,"range":{"start_line":57,"start_character":0,"end_line":62,"end_character":51},"in_reply_to":"9fb8cfa7_e09ee452","updated":"2019-06-06 21:27:41.000000000","message":"This suggestion is better but I think this paragraph could benefit from a small example showing the proposed format, to remove all doubt. Like, is the format just going to be something like this?\n\n {\n     \"unshelve\": {\"availability_zone\": \"us-west\"}\n }\n\n(later)\n\nNevermind, this is already shown on L91. So, I\u0027m going to call mriedem\u0027s suggested wording here good.","commit_id":"d4ad4a581e9a04e35d19ea653b295ad499918c36"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e22e4070d4378e10e541fc7aa1b7f1c5b60ff6f1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"If the operator configures cross_az_attach\u003dTrue [3]_ in nova.conf, in the"},{"line_number":48,"context_line":"[cinder] group, the server create flow will fail if the specified AZ does"},{"line_number":49,"context_line":"not match the volumes being attached to the server. Unshelve should likely"},{"line_number":50,"context_line":"also fail for the same reason, but to figure that out we\u0027d have to iterate"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7faddb67_91878dd8","line":47,"range":{"start_line":47,"start_character":43,"end_line":47,"end_character":47},"updated":"2019-07-05 04:48:27.000000000","message":"it should be False. If True which is default allow to have different aZ for server and volume.","commit_id":"014f3cfe7996567c101c5f74015e184adb2e0bb3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dfd1031208ae1710b002ff25bdffb637af585f09","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Add a new microversion to the unshelve/restore shelved server"},{"line_number":45,"context_line":"(unshelve Action) API to support specifying AZ to restore a shelved server."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"If the operator configures cross_az_attach\u003dTrue [3]_ in nova.conf, in the"},{"line_number":48,"context_line":"[cinder] group, the server create flow will fail if the specified AZ does"},{"line_number":49,"context_line":"not match the volumes being attached to the server. Unshelve should likely"},{"line_number":50,"context_line":"also fail for the same reason, but to figure that out we\u0027d have to iterate"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7faddb67_b0a4fc09","line":47,"range":{"start_line":47,"start_character":43,"end_line":47,"end_character":47},"in_reply_to":"7faddb67_91878dd8","updated":"2019-07-05 13:52:19.000000000","message":"Yeah good catch, someone should amend the spec.","commit_id":"014f3cfe7996567c101c5f74015e184adb2e0bb3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"739739b03f4b3f01c8d140b62cffaafe73ec901f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"not match the volumes being attached to the server. Unshelve should likely"},{"line_number":50,"context_line":"also fail for the same reason, but to figure that out we\u0027d have to iterate"},{"line_number":51,"context_line":"the volumes (via BDMs) attached to the server and determine if their AZ"},{"line_number":52,"context_line":"matches the user-specified AZ and if not, fail the unshelve request, this"},{"line_number":53,"context_line":"needs to be checked as an edge case in the API."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9fb8cfa7_a3ca154b","line":53,"range":{"start_line":52,"start_character":69,"end_line":53,"end_character":47},"updated":"2019-06-10 05:52:52.000000000","message":"In the REST API impact section, we should describe what we will return for this case, I think it should be 400.","commit_id":"014f3cfe7996567c101c5f74015e184adb2e0bb3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"33a980cd9220740fffc2f7a23164fc894a79b050","unresolved":false,"context_lines":[{"line_number":49,"context_line":"not match the volumes being attached to the server. Unshelve should likely"},{"line_number":50,"context_line":"also fail for the same reason, but to figure that out we\u0027d have to iterate"},{"line_number":51,"context_line":"the volumes (via BDMs) attached to the server and determine if their AZ"},{"line_number":52,"context_line":"matches the user-specified AZ and if not, fail the unshelve request, this"},{"line_number":53,"context_line":"needs to be checked as an edge case in the API."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9fb8cfa7_cc20914b","line":53,"range":{"start_line":52,"start_character":69,"end_line":53,"end_character":47},"in_reply_to":"9fb8cfa7_830fd135","updated":"2019-06-10 15:11:56.000000000","message":"I would expect unshelve to return whatever server create does in the same situation, which yes looks like a 400:\n\nhttps://github.com/openstack/nova/blob/1316c1c2850d2f966f335b628f7f5fe88cef611c/nova/compute/api.py#L1531\n\nhttps://github.com/openstack/nova/blob/1316c1c2850d2f966f335b628f7f5fe88cef611c/nova/compute/api.py#L3994\n\nhttps://github.com/openstack/nova/blob/1316c1c2850d2f966f335b628f7f5fe88cef611c/nova/volume/cinder.py#L524\n\nhttps://github.com/openstack/nova/blob/1316c1c2850d2f966f335b628f7f5fe88cef611c/nova/compute/api.py#L1542\n\nhttps://github.com/openstack/nova/blob/1316c1c2850d2f966f335b628f7f5fe88cef611c/nova/api/openstack/compute/servers.py#L727","commit_id":"014f3cfe7996567c101c5f74015e184adb2e0bb3"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"e8c7dc464594f37c386aed153bfb43d6480a5ced","unresolved":false,"context_lines":[{"line_number":49,"context_line":"not match the volumes being attached to the server. Unshelve should likely"},{"line_number":50,"context_line":"also fail for the same reason, but to figure that out we\u0027d have to iterate"},{"line_number":51,"context_line":"the volumes (via BDMs) attached to the server and determine if their AZ"},{"line_number":52,"context_line":"matches the user-specified AZ and if not, fail the unshelve request, this"},{"line_number":53,"context_line":"needs to be checked as an edge case in the API."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Add ``availability_zone`` attribute to unshelve Action request body."},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9fb8cfa7_830fd135","line":53,"range":{"start_line":52,"start_character":69,"end_line":53,"end_character":47},"in_reply_to":"9fb8cfa7_a3ca154b","updated":"2019-06-10 06:32:54.000000000","message":"Thanks Alex. If it\u0027s failed, return badRequrest(400) is ok. That\u0027s the follow up patch: https://review.opendev.org/#/c/664198/.","commit_id":"014f3cfe7996567c101c5f74015e184adb2e0bb3"}]}
