)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"888a9a0cb2c091a97087bf6c9d406f9765d1fee1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add \u0027server shelve --offload\u0027, \u0027server shelve --wait\u0027 options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027--offload\u0027 option allows us to explicitly request that the server"},{"line_number":10,"context_line":"be offloaded once shelved or if already shelved."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \u0027--wait\u0027 option allows us to wait for the shelve and/or offload"},{"line_number":13,"context_line":"operations to complete before returning."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1f621f24_51affc28","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":48},"updated":"2020-11-12 12:08:47.000000000","message":"one thing to note is that when using --offload\nwe will wait till the servers are shelved before returning\neven if wait is not passed.","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bf54b26e56e72f1554d26e1063ffd28d8ae5c044","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add \u0027server shelve --offload\u0027, \u0027server shelve --wait\u0027 options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027--offload\u0027 option allows us to explicitly request that the server"},{"line_number":10,"context_line":"be offloaded once shelved or if already shelved."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \u0027--wait\u0027 option allows us to wait for the shelve and/or offload"},{"line_number":13,"context_line":"operations to complete before returning."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1f621f24_d4c13a56","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":48},"in_reply_to":"1f621f24_515d3c45","updated":"2020-11-12 12:49:39.000000000","message":"i was not sugging doing it differently just that you did not call out that behavior.","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e01174c015aa1eac822a22d8e5a314b1549c4307","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add \u0027server shelve --offload\u0027, \u0027server shelve --wait\u0027 options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027--offload\u0027 option allows us to explicitly request that the server"},{"line_number":10,"context_line":"be offloaded once shelved or if already shelved."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \u0027--wait\u0027 option allows us to wait for the shelve and/or offload"},{"line_number":13,"context_line":"operations to complete before returning."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1f621f24_515d3c45","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":48},"in_reply_to":"1f621f24_51affc28","updated":"2020-11-12 12:16:26.000000000","message":"But only if the servers are not already shelved. I think we have to do that because nova will reject a request to offload a server that is not yet shelved.\n\nThe alternative is to quit and say try again later (equivalent to HTTP 202) if any of the servers are not already shelved and we\u0027ve requested offload, but that seems unnecessarily complex and would rarely be desirable IMO","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8fa0e872463ed2b232151629225cc3221c3e20d8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add \u0027server shelve --offload\u0027, \u0027server shelve --wait\u0027 options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027--offload\u0027 option allows us to explicitly request that the server"},{"line_number":10,"context_line":"be offloaded once shelved or if already shelved."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \u0027--wait\u0027 option allows us to wait for the shelve and/or offload"},{"line_number":13,"context_line":"operations to complete before returning."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1f621f24_3c3ad097","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":48},"in_reply_to":"1f621f24_d4c13a56","updated":"2020-11-18 11:06:24.000000000","message":"Done","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"e3616e68347e5392cebd1aca026ec7ae3359cbbb","unresolved":true,"context_lines":[{"line_number":10,"context_line":"be offloaded once shelved or if already shelved."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \u0027--wait\u0027 option allows us to wait for the shelve and/or offload"},{"line_number":13,"context_line":"operations to complete before returning. It is implied if attempting to"},{"line_number":14,"context_line":"offload a server than is not yet shelved."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id226831e3c09bc95c34b222151b27391a844b073"},{"line_number":17,"context_line":"Signed-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1cacbbd0_3077b3b2","line":14,"range":{"start_line":13,"start_character":41,"end_line":14,"end_character":41},"updated":"2021-01-08 14:10:10.000000000","message":"It is implied when attempting to offload a server that is not yet shelved?","commit_id":"c4cbf762b324671a313e47b5f2baf83b930cb12c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d330878aa0d18ffcca236aa88a2bfa9f955ccf68","unresolved":false,"context_lines":[{"line_number":10,"context_line":"be offloaded once shelved or if already shelved."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \u0027--wait\u0027 option allows us to wait for the shelve and/or offload"},{"line_number":13,"context_line":"operations to complete before returning. It is implied if attempting to"},{"line_number":14,"context_line":"offload a server than is not yet shelved."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Id226831e3c09bc95c34b222151b27391a844b073"},{"line_number":17,"context_line":"Signed-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"18a70b16_a88a4ac4","line":14,"range":{"start_line":13,"start_character":41,"end_line":14,"end_character":41},"in_reply_to":"1cacbbd0_3077b3b2","updated":"2021-01-08 18:35:24.000000000","message":"Done","commit_id":"c4cbf762b324671a313e47b5f2baf83b930cb12c"}],"openstackclient/compute/v2/server.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"81c868402fc1ccf3168f7acbc44df802fb5df8c2","unresolved":false,"context_lines":[{"line_number":3164,"context_line":"    users wish to retain the UUID and IP of a server, without utilizing other"},{"line_number":3165,"context_line":"    resources or disks."},{"line_number":3166,"context_line":""},{"line_number":3167,"context_line":"    Most clouds are configured to automatically offload shelved servers"},{"line_number":3168,"context_line":"    immediately or after some delay. For clouds where this is not configured,"},{"line_number":3169,"context_line":"    offloading can be manually specified. This is an admin-only operation by"},{"line_number":3170,"context_line":"    default."}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_ee9d87bc","line":3167,"range":{"start_line":3167,"start_character":4,"end_line":3167,"end_character":8},"updated":"2020-11-12 11:02:16.000000000","message":"\"Many\" might be better","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"491fb5d76a91b85945b81682a4611622618a4712","unresolved":false,"context_lines":[{"line_number":3164,"context_line":"    users wish to retain the UUID and IP of a server, without utilizing other"},{"line_number":3165,"context_line":"    resources or disks."},{"line_number":3166,"context_line":""},{"line_number":3167,"context_line":"    Most clouds are configured to automatically offload shelved servers"},{"line_number":3168,"context_line":"    immediately or after some delay. For clouds where this is not configured,"},{"line_number":3169,"context_line":"    offloading can be manually specified. This is an admin-only operation by"},{"line_number":3170,"context_line":"    default."}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_51ac1cec","line":3167,"range":{"start_line":3167,"start_character":4,"end_line":3167,"end_character":8},"in_reply_to":"1f621f24_ee9d87bc","updated":"2020-11-12 11:23:02.000000000","message":"well its the default behavior so most is likely correct.","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"81c868402fc1ccf3168f7acbc44df802fb5df8c2","unresolved":false,"context_lines":[{"line_number":3165,"context_line":"    resources or disks."},{"line_number":3166,"context_line":""},{"line_number":3167,"context_line":"    Most clouds are configured to automatically offload shelved servers"},{"line_number":3168,"context_line":"    immediately or after some delay. For clouds where this is not configured,"},{"line_number":3169,"context_line":"    offloading can be manually specified. This is an admin-only operation by"},{"line_number":3170,"context_line":"    default."},{"line_number":3171,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_0ea7230d","line":3168,"range":{"start_line":3168,"start_character":76,"end_line":3168,"end_character":77},"updated":"2020-11-12 11:02:16.000000000","message":", or where the delay is larger,","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"81c868402fc1ccf3168f7acbc44df802fb5df8c2","unresolved":false,"context_lines":[{"line_number":3165,"context_line":"    resources or disks."},{"line_number":3166,"context_line":""},{"line_number":3167,"context_line":"    Most clouds are configured to automatically offload shelved servers"},{"line_number":3168,"context_line":"    immediately or after some delay. For clouds where this is not configured,"},{"line_number":3169,"context_line":"    offloading can be manually specified. This is an admin-only operation by"},{"line_number":3170,"context_line":"    default."},{"line_number":3171,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_2ea49f07","line":3168,"range":{"start_line":3168,"start_character":25,"end_line":3168,"end_character":29},"updated":"2020-11-12 11:02:16.000000000","message":"a small","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8fa0e872463ed2b232151629225cc3221c3e20d8","unresolved":false,"context_lines":[{"line_number":3165,"context_line":"    resources or disks."},{"line_number":3166,"context_line":""},{"line_number":3167,"context_line":"    Most clouds are configured to automatically offload shelved servers"},{"line_number":3168,"context_line":"    immediately or after some delay. For clouds where this is not configured,"},{"line_number":3169,"context_line":"    offloading can be manually specified. This is an admin-only operation by"},{"line_number":3170,"context_line":"    default."},{"line_number":3171,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_9c3fa486","line":3168,"range":{"start_line":3168,"start_character":76,"end_line":3168,"end_character":77},"in_reply_to":"1f621f24_0ea7230d","updated":"2020-11-18 11:06:24.000000000","message":"Done","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8fa0e872463ed2b232151629225cc3221c3e20d8","unresolved":false,"context_lines":[{"line_number":3165,"context_line":"    resources or disks."},{"line_number":3166,"context_line":""},{"line_number":3167,"context_line":"    Most clouds are configured to automatically offload shelved servers"},{"line_number":3168,"context_line":"    immediately or after some delay. For clouds where this is not configured,"},{"line_number":3169,"context_line":"    offloading can be manually specified. This is an admin-only operation by"},{"line_number":3170,"context_line":"    default."},{"line_number":3171,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_7c44481c","line":3168,"range":{"start_line":3168,"start_character":25,"end_line":3168,"end_character":29},"in_reply_to":"1f621f24_2ea49f07","updated":"2020-11-18 11:06:24.000000000","message":"Done","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"251f2c5bba069351fa5ca6f94a4522027e39b9c1","unresolved":false,"context_lines":[{"line_number":3208,"context_line":"                compute_client.servers,"},{"line_number":3209,"context_line":"                server,"},{"line_number":3210,"context_line":"            )"},{"line_number":3211,"context_line":"            if server_obj.status.lower() in (\u0027shelved\u0027, \u0027shelved_offloaded\u0027):"},{"line_number":3212,"context_line":"                continue"},{"line_number":3213,"context_line":""},{"line_number":3214,"context_line":"            server_obj.shelve()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_c664e24c","line":3211,"range":{"start_line":3211,"start_character":46,"end_line":3211,"end_character":53},"updated":"2020-11-13 12:44:50.000000000","message":"so If we asked for --offload but the server is already shelved then we do nothing. But we should call nova to force the offload instead.","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8fa0e872463ed2b232151629225cc3221c3e20d8","unresolved":false,"context_lines":[{"line_number":3208,"context_line":"                compute_client.servers,"},{"line_number":3209,"context_line":"                server,"},{"line_number":3210,"context_line":"            )"},{"line_number":3211,"context_line":"            if server_obj.status.lower() in (\u0027shelved\u0027, \u0027shelved_offloaded\u0027):"},{"line_number":3212,"context_line":"                continue"},{"line_number":3213,"context_line":""},{"line_number":3214,"context_line":"            server_obj.shelve()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_5c034cbf","line":3211,"range":{"start_line":3211,"start_character":46,"end_line":3211,"end_character":53},"in_reply_to":"1f621f24_c664e24c","updated":"2020-11-18 11:06:24.000000000","message":"I don\u0027t think that\u0027s correct. We\u0027ve got two for-loops here. In this first one, we check to see if the server is already shelved or offloaded, and shelve if it is not. In the second [1] we check to see if the server is already offloaded and offload if it is not.\n\n[1] https://review.opendev.org/#/c/762396/1/openstackclient/compute/v2/server.py@3234","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"81c868402fc1ccf3168f7acbc44df802fb5df8c2","unresolved":false,"context_lines":[{"line_number":3215,"context_line":""},{"line_number":3216,"context_line":"            # if we\u0027re also offloading, we need to wait until the shelve is"},{"line_number":3217,"context_line":"            # complete"},{"line_number":3218,"context_line":"            # TODO(stephenfin): This would be more efficient if we could shelve"},{"line_number":3219,"context_line":"            # all servers and then wait on all servers"},{"line_number":3220,"context_line":"            if parsed_args.wait or parsed_args.offload:"},{"line_number":3221,"context_line":"                if utils.wait_for_status("},{"line_number":3222,"context_line":"                    compute_client.servers.get, server_obj.id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_2e7dbf6d","line":3219,"range":{"start_line":3218,"start_character":0,"end_line":3219,"end_character":54},"updated":"2020-11-12 11:02:16.000000000","message":"This needs an osc-lib change which I\u0027m working on","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"491fb5d76a91b85945b81682a4611622618a4712","unresolved":false,"context_lines":[{"line_number":3215,"context_line":""},{"line_number":3216,"context_line":"            # if we\u0027re also offloading, we need to wait until the shelve is"},{"line_number":3217,"context_line":"            # complete"},{"line_number":3218,"context_line":"            # TODO(stephenfin): This would be more efficient if we could shelve"},{"line_number":3219,"context_line":"            # all servers and then wait on all servers"},{"line_number":3220,"context_line":"            if parsed_args.wait or parsed_args.offload:"},{"line_number":3221,"context_line":"                if utils.wait_for_status("},{"line_number":3222,"context_line":"                    compute_client.servers.get, server_obj.id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_71df9868","line":3219,"range":{"start_line":3218,"start_character":0,"end_line":3219,"end_character":54},"in_reply_to":"1f621f24_2e7dbf6d","updated":"2020-11-12 11:23:02.000000000","message":"you should be able to do this in 3 loops instead of 2\nhave this loop not wait but add servers to a list of shelving instances\n\ne.g.\nserver_obj.shelve()\nshelving +\u003d server_obj\n...\n\nif parsed_args.wait or parsed_args.offload:\nfor server_obj in shelving\n   if utils.wait_for_status(\n                    compute_client.servers.get, server_obj.id,\n                    success_status\u003d(\u0027shelved\u0027, \u0027shelved_offloaded\u0027),\n                    callback\u003d_show_progress,\n                ):\n                    LOG.error(_(\u0027Error shelving server: %s\u0027), server_obj.id)\n                    self.app.stdout.write(\n                        _(\u0027Error shelving server: %s\\n\u0027) % server_obj.id)\n                    raise SystemExit\n\nthen to the offload part\n\nis there a reason not to do this instead?","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"17a56fa88220b7bd7999922a941470b4509ae63a","unresolved":false,"context_lines":[{"line_number":3215,"context_line":""},{"line_number":3216,"context_line":"            # if we\u0027re also offloading, we need to wait until the shelve is"},{"line_number":3217,"context_line":"            # complete"},{"line_number":3218,"context_line":"            # TODO(stephenfin): This would be more efficient if we could shelve"},{"line_number":3219,"context_line":"            # all servers and then wait on all servers"},{"line_number":3220,"context_line":"            if parsed_args.wait or parsed_args.offload:"},{"line_number":3221,"context_line":"                if utils.wait_for_status("},{"line_number":3222,"context_line":"                    compute_client.servers.get, server_obj.id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_d1678c4c","line":3219,"range":{"start_line":3218,"start_character":0,"end_line":3219,"end_character":54},"in_reply_to":"1f621f24_51e41c0d","updated":"2020-11-12 11:57:20.000000000","message":"having quickly reviewed them im not conviced you should have 2 functions.\n\ni think you should make the wait for statuses retrun a tuple and acept an allowed_excpetions list of excption classes and also proably allso suppport subtypes so use is_subclass instead of an equality check.\n\ni think im ok with just leaving the todo for now although i still think my suggestd refactor is vaild. if you want to defer it to a follow up this patch looks reasonable to me.\n\nmulti delete is somewhat common i suspect but multi shelve is likely less so\n\nwhen i do multi delete i never use wait so i would alway see the parallel behavior which is why i find the current serial isation to be surpriseing when wait is used as from my perspective its changing the behavior in a way that fells incorrect it may be consitnt with other uses of wait but i always avoid wait because it never really worked the way i thought it should.","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4e100e3ffede53aa4f2df2fd5275bff1e06df6cc","unresolved":false,"context_lines":[{"line_number":3215,"context_line":""},{"line_number":3216,"context_line":"            # if we\u0027re also offloading, we need to wait until the shelve is"},{"line_number":3217,"context_line":"            # complete"},{"line_number":3218,"context_line":"            # TODO(stephenfin): This would be more efficient if we could shelve"},{"line_number":3219,"context_line":"            # all servers and then wait on all servers"},{"line_number":3220,"context_line":"            if parsed_args.wait or parsed_args.offload:"},{"line_number":3221,"context_line":"                if utils.wait_for_status("},{"line_number":3222,"context_line":"                    compute_client.servers.get, server_obj.id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_51e41c0d","line":3219,"range":{"start_line":3218,"start_character":0,"end_line":3219,"end_character":54},"in_reply_to":"1f621f24_71df9868","updated":"2020-11-12 11:35:24.000000000","message":"Complexity, mostly. Also, this is how we do delete at the moment too. I\u0027d rather fix them all at once using [1] and [2], respectively.\n\nI suspect deleting or shelving multiple servers is not a common operation, otherwise someone would have optimized the former at least long ago.\n\n[1] https://review.opendev.org/#/c/762503/\n[2] https://review.opendev.org/#/c/762504/","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"251f2c5bba069351fa5ca6f94a4522027e39b9c1","unresolved":false,"context_lines":[{"line_number":3223,"context_line":"                    success_status\u003d(\u0027shelved\u0027, \u0027shelved_offloaded\u0027),"},{"line_number":3224,"context_line":"                    callback\u003d_show_progress,"},{"line_number":3225,"context_line":"                ):"},{"line_number":3226,"context_line":"                    LOG.error(_(\u0027Error shelving server: %s\u0027), server_obj.id)"},{"line_number":3227,"context_line":"                    self.app.stdout.write("},{"line_number":3228,"context_line":"                        _(\u0027Error shelving server: %s\\n\u0027) % server_obj.id)"},{"line_number":3229,"context_line":"                    raise SystemExit"},{"line_number":3230,"context_line":""},{"line_number":3231,"context_line":"        if not parsed_args.offload:"},{"line_number":3232,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_e65d9e79","line":3229,"range":{"start_line":3226,"start_character":1,"end_line":3229,"end_character":1},"updated":"2020-11-13 12:44:50.000000000","message":"This is now printed in for me all the time. http://paste.openstack.org/show/799990/","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"491fb5d76a91b85945b81682a4611622618a4712","unresolved":false,"context_lines":[{"line_number":3226,"context_line":"                    LOG.error(_(\u0027Error shelving server: %s\u0027), server_obj.id)"},{"line_number":3227,"context_line":"                    self.app.stdout.write("},{"line_number":3228,"context_line":"                        _(\u0027Error shelving server: %s\\n\u0027) % server_obj.id)"},{"line_number":3229,"context_line":"                    raise SystemExit"},{"line_number":3230,"context_line":""},{"line_number":3231,"context_line":"        if not parsed_args.offload:"},{"line_number":3232,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_b1be50fc","line":3229,"range":{"start_line":3229,"start_character":19,"end_line":3229,"end_character":36},"updated":"2020-11-12 11:23:02.000000000","message":"also im not sure this is correct. i thinik we should contue to shelve the others instead of bailing half way true.\nwe should maybe set a flag and raise later but we shoud finish offloading the servers that are not in error","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"17a56fa88220b7bd7999922a941470b4509ae63a","unresolved":false,"context_lines":[{"line_number":3226,"context_line":"                    LOG.error(_(\u0027Error shelving server: %s\u0027), server_obj.id)"},{"line_number":3227,"context_line":"                    self.app.stdout.write("},{"line_number":3228,"context_line":"                        _(\u0027Error shelving server: %s\\n\u0027) % server_obj.id)"},{"line_number":3229,"context_line":"                    raise SystemExit"},{"line_number":3230,"context_line":""},{"line_number":3231,"context_line":"        if not parsed_args.offload:"},{"line_number":3232,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_f18c4837","line":3229,"range":{"start_line":3229,"start_character":19,"end_line":3229,"end_character":36},"in_reply_to":"1f621f24_31dc0045","updated":"2020-11-12 11:57:20.000000000","message":"ya it was based on my susggestion if you dont kick them off in paralles then this makes sense.","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4e100e3ffede53aa4f2df2fd5275bff1e06df6cc","unresolved":false,"context_lines":[{"line_number":3226,"context_line":"                    LOG.error(_(\u0027Error shelving server: %s\u0027), server_obj.id)"},{"line_number":3227,"context_line":"                    self.app.stdout.write("},{"line_number":3228,"context_line":"                        _(\u0027Error shelving server: %s\\n\u0027) % server_obj.id)"},{"line_number":3229,"context_line":"                    raise SystemExit"},{"line_number":3230,"context_line":""},{"line_number":3231,"context_line":"        if not parsed_args.offload:"},{"line_number":3232,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_31dc0045","line":3229,"range":{"start_line":3229,"start_character":19,"end_line":3229,"end_character":36},"in_reply_to":"1f621f24_b1be50fc","updated":"2020-11-12 11:35:24.000000000","message":"That would make sense if we were to kick off all the shelve operations at once and then wait for them to complete, as you\u0027ve suggested above. However, when we\u0027re doing it in series I think it makes more sense to error out when we hit an error. The operator can always retry this instance plus any others left in the list.\n\nI\u0027ll do this eventually. See the osc-lib changes I linked above. For now, I think this is good enough","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8fa0e872463ed2b232151629225cc3221c3e20d8","unresolved":false,"context_lines":[{"line_number":3223,"context_line":"                    success_status\u003d(\u0027shelved\u0027, \u0027shelved_offloaded\u0027),"},{"line_number":3224,"context_line":"                    callback\u003d_show_progress,"},{"line_number":3225,"context_line":"                ):"},{"line_number":3226,"context_line":"                    LOG.error(_(\u0027Error shelving server: %s\u0027), server_obj.id)"},{"line_number":3227,"context_line":"                    self.app.stdout.write("},{"line_number":3228,"context_line":"                        _(\u0027Error shelving server: %s\\n\u0027) % server_obj.id)"},{"line_number":3229,"context_line":"                    raise SystemExit"},{"line_number":3230,"context_line":""},{"line_number":3231,"context_line":"        if not parsed_args.offload:"},{"line_number":3232,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_fceb38d9","line":3229,"range":{"start_line":3226,"start_character":1,"end_line":3229,"end_character":1},"in_reply_to":"1f621f24_e65d9e79","updated":"2020-11-18 11:06:24.000000000","message":"Doh! I forgot to negate the conditional. Done.","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"491fb5d76a91b85945b81682a4611622618a4712","unresolved":false,"context_lines":[{"line_number":3253,"context_line":"                    self.app.stdout.write("},{"line_number":3254,"context_line":"                        _(\u0027Error offloading shelved server: %s\\n\u0027) % ("},{"line_number":3255,"context_line":"                            server_obj.id))"},{"line_number":3256,"context_line":"                    raise SystemExit"},{"line_number":3257,"context_line":""},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":"class ShowServer(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_d165ccb6","line":3256,"range":{"start_line":3256,"start_character":18,"end_line":3256,"end_character":36},"updated":"2020-11-12 11:23:02.000000000","message":"same here i dont think we shoudl be raising.\nwe should proably finish waiting on the other servers.","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4e100e3ffede53aa4f2df2fd5275bff1e06df6cc","unresolved":false,"context_lines":[{"line_number":3253,"context_line":"                    self.app.stdout.write("},{"line_number":3254,"context_line":"                        _(\u0027Error offloading shelved server: %s\\n\u0027) % ("},{"line_number":3255,"context_line":"                            server_obj.id))"},{"line_number":3256,"context_line":"                    raise SystemExit"},{"line_number":3257,"context_line":""},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":"class ShowServer(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f621f24_d1c14c56","line":3256,"range":{"start_line":3256,"start_character":18,"end_line":3256,"end_character":36},"in_reply_to":"1f621f24_d165ccb6","updated":"2020-11-12 11:35:24.000000000","message":"As above","commit_id":"1074ea015a956f95605e0bac98d039977bb93e2b"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"e3616e68347e5392cebd1aca026ec7ae3359cbbb","unresolved":true,"context_lines":[{"line_number":3214,"context_line":"                continue"},{"line_number":3215,"context_line":""},{"line_number":3216,"context_line":"            server_obj.shelve()"},{"line_number":3217,"context_line":""},{"line_number":3218,"context_line":"            # if we\u0027re also offloading, we need to wait until the shelve is"},{"line_number":3219,"context_line":"            # complete"},{"line_number":3220,"context_line":"            # TODO(stephenfin): This would be more efficient if we could shelve"},{"line_number":3221,"context_line":"            # all servers and then wait on all servers"},{"line_number":3222,"context_line":"            if parsed_args.wait or parsed_args.offload:"},{"line_number":3223,"context_line":"                if not utils.wait_for_status("},{"line_number":3224,"context_line":"                    compute_client.servers.get, server_obj.id,"},{"line_number":3225,"context_line":"                    success_status\u003d(\u0027shelved\u0027, \u0027shelved_offloaded\u0027),"},{"line_number":3226,"context_line":"                    callback\u003d_show_progress,"},{"line_number":3227,"context_line":"                ):"},{"line_number":3228,"context_line":"                    LOG.error(_(\u0027Error shelving server: %s\u0027), server_obj.id)"},{"line_number":3229,"context_line":"                    self.app.stdout.write("},{"line_number":3230,"context_line":"                        _(\u0027Error shelving server: %s\\n\u0027) % server_obj.id)"},{"line_number":3231,"context_line":"                    raise SystemExit"},{"line_number":3232,"context_line":""},{"line_number":3233,"context_line":"        if not parsed_args.offload:"},{"line_number":3234,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"80cc8748_2f1cc004","line":3231,"range":{"start_line":3217,"start_character":0,"end_line":3231,"end_character":36},"updated":"2021-01-08 14:10:10.000000000","message":"Yeah I agree, can\u0027t you just fire off the requests and then loop again through the wait calls?","commit_id":"c4cbf762b324671a313e47b5f2baf83b930cb12c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d330878aa0d18ffcca236aa88a2bfa9f955ccf68","unresolved":false,"context_lines":[{"line_number":3214,"context_line":"                continue"},{"line_number":3215,"context_line":""},{"line_number":3216,"context_line":"            server_obj.shelve()"},{"line_number":3217,"context_line":""},{"line_number":3218,"context_line":"            # if we\u0027re also offloading, we need to wait until the shelve is"},{"line_number":3219,"context_line":"            # complete"},{"line_number":3220,"context_line":"            # TODO(stephenfin): This would be more efficient if we could shelve"},{"line_number":3221,"context_line":"            # all servers and then wait on all servers"},{"line_number":3222,"context_line":"            if parsed_args.wait or parsed_args.offload:"},{"line_number":3223,"context_line":"                if not utils.wait_for_status("},{"line_number":3224,"context_line":"                    compute_client.servers.get, server_obj.id,"},{"line_number":3225,"context_line":"                    success_status\u003d(\u0027shelved\u0027, \u0027shelved_offloaded\u0027),"},{"line_number":3226,"context_line":"                    callback\u003d_show_progress,"},{"line_number":3227,"context_line":"                ):"},{"line_number":3228,"context_line":"                    LOG.error(_(\u0027Error shelving server: %s\u0027), server_obj.id)"},{"line_number":3229,"context_line":"                    self.app.stdout.write("},{"line_number":3230,"context_line":"                        _(\u0027Error shelving server: %s\\n\u0027) % server_obj.id)"},{"line_number":3231,"context_line":"                    raise SystemExit"},{"line_number":3232,"context_line":""},{"line_number":3233,"context_line":"        if not parsed_args.offload:"},{"line_number":3234,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":2,"id":"04e30a4b_751ad60e","line":3231,"range":{"start_line":3217,"start_character":0,"end_line":3231,"end_character":36},"in_reply_to":"80cc8748_2f1cc004","updated":"2021-01-08 18:35:24.000000000","message":"I really wanted to land [1] and then use that in a follow-up. However, that doesn\u0027t seem any closer to landing that when I last worked on this so I\u0027ll drag it out to a separate loop.\n\n[1] https://review.opendev.org/c/openstack/osc-lib/+/762503/","commit_id":"c4cbf762b324671a313e47b5f2baf83b930cb12c"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"e3616e68347e5392cebd1aca026ec7ae3359cbbb","unresolved":true,"context_lines":[{"line_number":3233,"context_line":"        if not parsed_args.offload:"},{"line_number":3234,"context_line":"            return"},{"line_number":3235,"context_line":""},{"line_number":3236,"context_line":"        for server_obj in parsed_args.server:"},{"line_number":3237,"context_line":"            server_obj \u003d utils.find_resource("},{"line_number":3238,"context_line":"                compute_client.servers,"},{"line_number":3239,"context_line":"                server,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bd164cd3_f129b4b7","line":3236,"range":{"start_line":3236,"start_character":12,"end_line":3236,"end_character":22},"updated":"2021-01-08 14:10:10.000000000","message":"server","commit_id":"c4cbf762b324671a313e47b5f2baf83b930cb12c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d330878aa0d18ffcca236aa88a2bfa9f955ccf68","unresolved":false,"context_lines":[{"line_number":3233,"context_line":"        if not parsed_args.offload:"},{"line_number":3234,"context_line":"            return"},{"line_number":3235,"context_line":""},{"line_number":3236,"context_line":"        for server_obj in parsed_args.server:"},{"line_number":3237,"context_line":"            server_obj \u003d utils.find_resource("},{"line_number":3238,"context_line":"                compute_client.servers,"},{"line_number":3239,"context_line":"                server,"}],"source_content_type":"text/x-python","patch_set":2,"id":"4801a453_aed4e75d","line":3236,"range":{"start_line":3236,"start_character":12,"end_line":3236,"end_character":22},"in_reply_to":"bd164cd3_f129b4b7","updated":"2021-01-08 18:35:24.000000000","message":"Done","commit_id":"c4cbf762b324671a313e47b5f2baf83b930cb12c"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"e3616e68347e5392cebd1aca026ec7ae3359cbbb","unresolved":true,"context_lines":[{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"            server_obj.shelve_offload()"},{"line_number":3245,"context_line":""},{"line_number":3246,"context_line":"            if parsed_args.wait:"},{"line_number":3247,"context_line":"                if not utils.wait_for_status("},{"line_number":3248,"context_line":"                    compute_client.servers.get, server_obj.id,"},{"line_number":3249,"context_line":"                    success_status\u003d(\u0027shelved_offloaded\u0027,),"},{"line_number":3250,"context_line":"                    callback\u003d_show_progress,"},{"line_number":3251,"context_line":"                ):"},{"line_number":3252,"context_line":"                    LOG.error("},{"line_number":3253,"context_line":"                        _(\u0027Error offloading shelved server %s\u0027), server_obj.id)"},{"line_number":3254,"context_line":"                    self.app.stdout.write("},{"line_number":3255,"context_line":"                        _(\u0027Error offloading shelved server: %s\\n\u0027) % ("},{"line_number":3256,"context_line":"                            server_obj.id))"},{"line_number":3257,"context_line":"                    raise SystemExit"},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":""},{"line_number":3260,"context_line":"class ShowServer(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":2,"id":"38a00cba_fa246945","line":3257,"range":{"start_line":3246,"start_character":0,"end_line":3257,"end_character":36},"updated":"2021-01-08 14:10:10.000000000","message":"As above, fire off the requests and then loop again over the waits.","commit_id":"c4cbf762b324671a313e47b5f2baf83b930cb12c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d330878aa0d18ffcca236aa88a2bfa9f955ccf68","unresolved":false,"context_lines":[{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"            server_obj.shelve_offload()"},{"line_number":3245,"context_line":""},{"line_number":3246,"context_line":"            if parsed_args.wait:"},{"line_number":3247,"context_line":"                if not utils.wait_for_status("},{"line_number":3248,"context_line":"                    compute_client.servers.get, server_obj.id,"},{"line_number":3249,"context_line":"                    success_status\u003d(\u0027shelved_offloaded\u0027,),"},{"line_number":3250,"context_line":"                    callback\u003d_show_progress,"},{"line_number":3251,"context_line":"                ):"},{"line_number":3252,"context_line":"                    LOG.error("},{"line_number":3253,"context_line":"                        _(\u0027Error offloading shelved server %s\u0027), server_obj.id)"},{"line_number":3254,"context_line":"                    self.app.stdout.write("},{"line_number":3255,"context_line":"                        _(\u0027Error offloading shelved server: %s\\n\u0027) % ("},{"line_number":3256,"context_line":"                            server_obj.id))"},{"line_number":3257,"context_line":"                    raise SystemExit"},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":""},{"line_number":3260,"context_line":"class ShowServer(command.ShowOne):"}],"source_content_type":"text/x-python","patch_set":2,"id":"6b1cf135_5c2f7a75","line":3257,"range":{"start_line":3246,"start_character":0,"end_line":3257,"end_character":36},"in_reply_to":"38a00cba_fa246945","updated":"2021-01-08 18:35:24.000000000","message":"Done","commit_id":"c4cbf762b324671a313e47b5f2baf83b930cb12c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dc490694ac6bae0b8834f146d496cb3d72636626","unresolved":true,"context_lines":[{"line_number":3590,"context_line":"    Shelving a server creates a snapshot of the server and stores this"},{"line_number":3591,"context_line":"    snapshot before shutting down the server. This shelved server can then be"},{"line_number":3592,"context_line":"    offloaded or deleted from the host, freeing up remaining resources on the"},{"line_number":3593,"context_line":"    host, such as network interfaces. Shelved servers can be unshelved,"},{"line_number":3594,"context_line":"    restoring the server from the snapshot. Shelving is therefore useful where"},{"line_number":3595,"context_line":"    users wish to retain the UUID and IP of a server, without utilizing other"},{"line_number":3596,"context_line":"    resources or disks."}],"source_content_type":"text/x-python","patch_set":3,"id":"8aa18c7a_205fda00","line":3593,"range":{"start_line":3593,"start_character":18,"end_line":3593,"end_character":25},"updated":"2021-01-11 11:57:28.000000000","message":"nit:ram network interface matters for sriov or bandwith based schduleing so its not wrong\nas an example just ram affect all vms wehre as nics are situationalally important","commit_id":"64c2a1a453fce8f4e2e7e8441692af007c176459"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"eb2764f8d30c5a2e3f19e1ba4919b7bc42e5c2cd","unresolved":true,"context_lines":[{"line_number":3646,"context_line":""},{"line_number":3647,"context_line":"            server_obj.shelve()"},{"line_number":3648,"context_line":""},{"line_number":3649,"context_line":"        # if we don\u0027t hav to wait, either because it was requested explicitly"},{"line_number":3650,"context_line":"        # or is required implicitly, then our job is done"},{"line_number":3651,"context_line":"        if not parsed_args.wait and not parsed_args.offload:"},{"line_number":3652,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":3,"id":"5c6906a3_f3a18390","line":3649,"range":{"start_line":3649,"start_character":22,"end_line":3649,"end_character":25},"updated":"2021-01-11 11:48:44.000000000","message":"nit: have","commit_id":"64c2a1a453fce8f4e2e7e8441692af007c176459"}]}
