)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"722169a4fdc54bdb8eb4b5d40398cb9ac8018ad1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"unshelve`` command. This can help users to specify an ``availability_zone``"},{"line_number":11,"context_line":"to unshelve a shelve offloaded server from 2.74 microversion."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/#/c/663851/"},{"line_number":14,"context_line":"Blueprint: support-specifying-az-when-restore-shelved-server"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I8bce8f430bc54f03bacc105e37fc8b3bbf2432c2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fb8cfa7_e04e7695","line":13,"updated":"2019-06-13 13:36:15.000000000","message":"Because of depends-on, the zuul \u003d\u003d -1, when the 663851 is merged, this will be ok.","commit_id":"94196e12448384ea685d8899e09a4ac5b699c2f4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0fa2d33a8cbd59295cd47a37b80cf679ebaaeed4","unresolved":false,"context_lines":[{"line_number":11,"context_line":"to unshelve a shelve offloaded server from 2.74 microversion."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Depends-On: https://review.opendev.org/#/c/663851/"},{"line_number":14,"context_line":"Blueprint: support-specifying-az-when-restore-shelved-server"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I8bce8f430bc54f03bacc105e37fc8b3bbf2432c2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fb8cfa7_6b3ee7c1","line":14,"updated":"2019-06-13 13:50:16.000000000","message":"nit:\n\nImplements: blueprint support-specifying-az-when-restore-shelved-server","commit_id":"94196e12448384ea685d8899e09a4ac5b699c2f4"}],"doc/source/cli/nova.rst":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"374438ecb4b250d802f47965300d1021823d0f1a","unresolved":false,"context_lines":[{"line_number":3703,"context_line":"  New availability zone name for unshelve a"},{"line_number":3704,"context_line":"  shelve offloaded server. (Supported by API"},{"line_number":3705,"context_line":"  versions \u00272.74\u0027 - \u00272.latest\u0027)"},{"line_number":3706,"context_line":" "},{"line_number":3707,"context_line":".. _nova_update:"},{"line_number":3708,"context_line":""},{"line_number":3709,"context_line":"nova update"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9fb8cfa7_fb87ae60","line":3706,"range":{"start_line":3706,"start_character":0,"end_line":3706,"end_character":1},"updated":"2019-06-19 00:35:35.000000000","message":"redundant","commit_id":"c3041cce6b0120a21a7fe79a343ab112786a6721"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"051f50c8e9fd1f8b8902b283b33b6fccbd141bf1","unresolved":false,"context_lines":[{"line_number":3710,"context_line":"**Optional arguments:**"},{"line_number":3711,"context_line":""},{"line_number":3712,"context_line":"``--availability-zone \u003cavailability_zone\u003e``"},{"line_number":3713,"context_line":"  New availability zone name for unshelve a"},{"line_number":3714,"context_line":"  shelve offloaded server. (Supported by API"},{"line_number":3715,"context_line":"  versions \u00272.77\u0027 - \u00272.latest\u0027)"},{"line_number":3716,"context_line":""},{"line_number":3717,"context_line":".. _nova_update:"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7faddb67_c6c3be89","line":3714,"range":{"start_line":3713,"start_character":2,"end_line":3714,"end_character":26},"updated":"2019-08-28 14:06:16.000000000","message":"Re-word this as:\n\n\"Name of the availability zone in which to unshelve a ``SHELVED_OFFLOADED`` server.\"","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0c9e8d67bc666b33e4e7aa313ffb26ec01303463","unresolved":false,"context_lines":[{"line_number":3710,"context_line":"**Optional arguments:**"},{"line_number":3711,"context_line":""},{"line_number":3712,"context_line":"``--availability-zone \u003cavailability_zone\u003e``"},{"line_number":3713,"context_line":"  New availability zone name for unshelve a"},{"line_number":3714,"context_line":"  shelve offloaded server. (Supported by API"},{"line_number":3715,"context_line":"  versions \u00272.77\u0027 - \u00272.latest\u0027)"},{"line_number":3716,"context_line":""},{"line_number":3717,"context_line":".. _nova_update:"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7faddb67_6d750232","line":3714,"range":{"start_line":3713,"start_character":2,"end_line":3714,"end_character":26},"in_reply_to":"7faddb67_c6c3be89","updated":"2019-08-28 21:38:59.000000000","message":"Done","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"}],"novaclient/tests/unit/v2/fakes.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0fa2d33a8cbd59295cd47a37b80cf679ebaaeed4","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                    assert set(body[action].keys()) \u003d\u003d expected"},{"line_number":869,"context_line":"                else:"},{"line_number":870,"context_line":"                    assert body[action] is None"},{"line_number":871,"context_line":"                 "},{"line_number":872,"context_line":"        elif action \u003d\u003d \u0027rebuild\u0027:"},{"line_number":873,"context_line":"            body \u003d body[action]"},{"line_number":874,"context_line":"            adminPass \u003d body.get(\u0027adminPass\u0027, \u0027randompassword\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_6b15873f","line":871,"range":{"start_line":871,"start_character":0,"end_line":871,"end_character":17},"updated":"2019-06-13 13:50:16.000000000","message":"Unnecessary white spaces","commit_id":"94196e12448384ea685d8899e09a4ac5b699c2f4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"baebdb42cce4bddb168b39f406919c4d352900bf","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                    assert set(body[action].keys()) \u003d\u003d expected"},{"line_number":869,"context_line":"                else:"},{"line_number":870,"context_line":"                    assert body[action] is None"},{"line_number":871,"context_line":"                 "},{"line_number":872,"context_line":"        elif action \u003d\u003d \u0027rebuild\u0027:"},{"line_number":873,"context_line":"            body \u003d body[action]"},{"line_number":874,"context_line":"            adminPass \u003d body.get(\u0027adminPass\u0027, \u0027randompassword\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_010142af","line":871,"range":{"start_line":871,"start_character":0,"end_line":871,"end_character":17},"in_reply_to":"9fb8cfa7_6b15873f","updated":"2019-06-14 00:15:27.000000000","message":"Done","commit_id":"94196e12448384ea685d8899e09a4ac5b699c2f4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"1e5fe50febf5e8a202add72567816ae64d63dd31","unresolved":false,"context_lines":[{"line_number":856,"context_line":"            if self.api_version \u003c api_versions.APIVersion(\"2.74\"):"},{"line_number":857,"context_line":"                assert body[action] is None"},{"line_number":858,"context_line":"            else:"},{"line_number":859,"context_line":"                # In 2.74 and above, we  allow body to be one of these:"},{"line_number":860,"context_line":"                # {\u0027unshelve\u0027: None}"},{"line_number":861,"context_line":"                # {\u0027unshelve\u0027: {}}"},{"line_number":862,"context_line":"                # {\u0027unshelve\u0027: {\u0027availability_zone\u0027: \u0027foo-az\u0027}}"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_047f10ab","line":859,"range":{"start_line":859,"start_character":40,"end_line":859,"end_character":41},"updated":"2019-06-14 02:28:49.000000000","message":"nit: white space","commit_id":"aa4ee0fcc39b1ede3b344e9b0eddb47e2fc71688"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1419c14eb7aeea91d11c2579072831af49faad8c","unresolved":false,"context_lines":[{"line_number":858,"context_line":"            else:"},{"line_number":859,"context_line":"                # In 2.77 and above, we  allow body to be one of these:"},{"line_number":860,"context_line":"                # {\u0027unshelve\u0027: None}"},{"line_number":861,"context_line":"                # {\u0027unshelve\u0027: {}}"},{"line_number":862,"context_line":"                # {\u0027unshelve\u0027: {\u0027availability_zone\u0027: \u0027foo-az\u0027}}"},{"line_number":863,"context_line":"                if body[action] is not None:"},{"line_number":864,"context_line":"                    expected \u003d set()"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_d251e70f","line":861,"range":{"start_line":861,"start_character":0,"end_line":861,"end_character":34},"updated":"2019-08-19 09:25:02.000000000","message":"as per proposed schema in nova, empty dict should not be allowed for \u003e2.77\n\n- https://review.opendev.org/#/c/663851/33/nova/api/openstack/compute/schemas/servers.py","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0b1d061ddfbaca5d35795ef9eb841f2cb1577a03","unresolved":false,"context_lines":[{"line_number":858,"context_line":"            else:"},{"line_number":859,"context_line":"                # In 2.77 and above, we  allow body to be one of these:"},{"line_number":860,"context_line":"                # {\u0027unshelve\u0027: None}"},{"line_number":861,"context_line":"                # {\u0027unshelve\u0027: {}}"},{"line_number":862,"context_line":"                # {\u0027unshelve\u0027: {\u0027availability_zone\u0027: \u0027foo-az\u0027}}"},{"line_number":863,"context_line":"                if body[action] is not None:"},{"line_number":864,"context_line":"                    expected \u003d set()"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_653ceb91","line":861,"range":{"start_line":861,"start_character":0,"end_line":861,"end_character":34},"in_reply_to":"7faddb67_d251e70f","updated":"2019-08-19 12:50:07.000000000","message":"Yeah, has bean removed.","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1419c14eb7aeea91d11c2579072831af49faad8c","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                if body[action] is not None:"},{"line_number":864,"context_line":"                    expected \u003d set()"},{"line_number":865,"context_line":"                    if \u0027availability_zone\u0027 in body[action].keys():"},{"line_number":866,"context_line":"                        # availability_zone can be optional"},{"line_number":867,"context_line":"                        expected.add(\u0027availability_zone\u0027)"},{"line_number":868,"context_line":"                    assert set(body[action].keys()) \u003d\u003d expected"},{"line_number":869,"context_line":"                else:"},{"line_number":870,"context_line":"                    assert body[action] is None"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_d27a4786","line":867,"range":{"start_line":866,"start_character":0,"end_line":867,"end_character":57},"updated":"2019-08-19 09:25:02.000000000","message":"if body is not None then \u0027availability_zone\u0027 is mandatory. empty dict are not allowed for \u003e 2.77 as per nova proposed changes","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0b1d061ddfbaca5d35795ef9eb841f2cb1577a03","unresolved":false,"context_lines":[{"line_number":863,"context_line":"                if body[action] is not None:"},{"line_number":864,"context_line":"                    expected \u003d set()"},{"line_number":865,"context_line":"                    if \u0027availability_zone\u0027 in body[action].keys():"},{"line_number":866,"context_line":"                        # availability_zone can be optional"},{"line_number":867,"context_line":"                        expected.add(\u0027availability_zone\u0027)"},{"line_number":868,"context_line":"                    assert set(body[action].keys()) \u003d\u003d expected"},{"line_number":869,"context_line":"                else:"},{"line_number":870,"context_line":"                    assert body[action] is None"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_65306b56","line":867,"range":{"start_line":866,"start_character":0,"end_line":867,"end_character":57},"in_reply_to":"7faddb67_d27a4786","updated":"2019-08-19 12:50:07.000000000","message":"Yeah, it\u0027s necessary. Instead of \"assert set(body[action].keys()) \u003d\u003d set([\u0027availability_zone\u0027])\".","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1419c14eb7aeea91d11c2579072831af49faad8c","unresolved":false,"context_lines":[{"line_number":866,"context_line":"                        # availability_zone can be optional"},{"line_number":867,"context_line":"                        expected.add(\u0027availability_zone\u0027)"},{"line_number":868,"context_line":"                    assert set(body[action].keys()) \u003d\u003d expected"},{"line_number":869,"context_line":"                else:"},{"line_number":870,"context_line":"                    assert body[action] is None"},{"line_number":871,"context_line":"        elif action \u003d\u003d \u0027rebuild\u0027:"},{"line_number":872,"context_line":"            body \u003d body[action]"},{"line_number":873,"context_line":"            adminPass \u003d body.get(\u0027adminPass\u0027, \u0027randompassword\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_92704fa6","line":870,"range":{"start_line":869,"start_character":0,"end_line":870,"end_character":47},"updated":"2019-08-19 09:25:02.000000000","message":"do we need this else check? if condition itself check the None condition.","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0b1d061ddfbaca5d35795ef9eb841f2cb1577a03","unresolved":false,"context_lines":[{"line_number":866,"context_line":"                        # availability_zone can be optional"},{"line_number":867,"context_line":"                        expected.add(\u0027availability_zone\u0027)"},{"line_number":868,"context_line":"                    assert set(body[action].keys()) \u003d\u003d expected"},{"line_number":869,"context_line":"                else:"},{"line_number":870,"context_line":"                    assert body[action] is None"},{"line_number":871,"context_line":"        elif action \u003d\u003d \u0027rebuild\u0027:"},{"line_number":872,"context_line":"            body \u003d body[action]"},{"line_number":873,"context_line":"            adminPass \u003d body.get(\u0027adminPass\u0027, \u0027randompassword\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_850ec789","line":870,"range":{"start_line":869,"start_character":0,"end_line":870,"end_character":47},"in_reply_to":"7faddb67_92704fa6","updated":"2019-08-19 12:50:07.000000000","message":"This *else* redunant.","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"051f50c8e9fd1f8b8902b283b33b6fccbd141bf1","unresolved":false,"context_lines":[{"line_number":856,"context_line":"            if self.api_version \u003c api_versions.APIVersion(\"2.77\"):"},{"line_number":857,"context_line":"                assert body[action] is None"},{"line_number":858,"context_line":"            else:"},{"line_number":859,"context_line":"                # In 2.77 and above, we  allow body to be one of these:"},{"line_number":860,"context_line":"                # {\u0027unshelve\u0027: None}"},{"line_number":861,"context_line":"                # {\u0027unshelve\u0027: {\u0027availability_zone\u0027: \u0027foo-az\u0027}}"},{"line_number":862,"context_line":"                if body[action] is not None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_e61a7a16","line":859,"range":{"start_line":859,"start_character":39,"end_line":859,"end_character":41},"updated":"2019-08-28 14:06:16.000000000","message":"one too many spaces","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0c9e8d67bc666b33e4e7aa313ffb26ec01303463","unresolved":false,"context_lines":[{"line_number":856,"context_line":"            if self.api_version \u003c api_versions.APIVersion(\"2.77\"):"},{"line_number":857,"context_line":"                assert body[action] is None"},{"line_number":858,"context_line":"            else:"},{"line_number":859,"context_line":"                # In 2.77 and above, we  allow body to be one of these:"},{"line_number":860,"context_line":"                # {\u0027unshelve\u0027: None}"},{"line_number":861,"context_line":"                # {\u0027unshelve\u0027: {\u0027availability_zone\u0027: \u0027foo-az\u0027}}"},{"line_number":862,"context_line":"                if body[action] is not None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_2d8dca29","line":859,"range":{"start_line":859,"start_character":39,"end_line":859,"end_character":41},"in_reply_to":"7faddb67_e61a7a16","updated":"2019-08-28 21:38:59.000000000","message":"Done","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"}],"novaclient/tests/unit/v2/test_servers.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0fa2d33a8cbd59295cd47a37b80cf679ebaaeed4","unresolved":false,"context_lines":[{"line_number":1729,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027,"},{"line_number":1730,"context_line":"                           {\u0027lock\u0027: {\u0027locked_reason\u0027: \u0027zombie-apocalypse\u0027}})"},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":"    def test_lock_server_pre_273_fails_with_reason(self):"},{"line_number":1733,"context_line":"        self.cs.api_version \u003d api_versions.APIVersion(\u00272.72\u0027)"},{"line_number":1734,"context_line":"        s \u003d self.cs.servers.get(1234)"},{"line_number":1735,"context_line":"        e \u003d self.assertRaises(TypeError,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_2bb78f3c","line":1732,"range":{"start_line":1732,"start_character":8,"end_line":1732,"end_character":50},"updated":"2019-06-13 13:50:16.000000000","message":"Here","commit_id":"94196e12448384ea685d8899e09a4ac5b699c2f4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0fa2d33a8cbd59295cd47a37b80cf679ebaaeed4","unresolved":false,"context_lines":[{"line_number":1760,"context_line":"        self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)"},{"line_number":1761,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027,"},{"line_number":1762,"context_line":"                           {\u0027unshelve\u0027: {"},{"line_number":1763,"context_line":"                               \u0027availability_zone\u0027: \u0027foo-az\u0027}})"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_cba6f30f","line":1763,"updated":"2019-06-13 13:50:16.000000000","message":"Add a test for microversion 2.73 with availability_zone\nlike line 1732.","commit_id":"94196e12448384ea685d8899e09a4ac5b699c2f4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"baebdb42cce4bddb168b39f406919c4d352900bf","unresolved":false,"context_lines":[{"line_number":1760,"context_line":"        self.assert_request_id(ret, fakes.FAKE_REQUEST_ID_LIST)"},{"line_number":1761,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027,"},{"line_number":1762,"context_line":"                           {\u0027unshelve\u0027: {"},{"line_number":1763,"context_line":"                               \u0027availability_zone\u0027: \u0027foo-az\u0027}})"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_a1295637","line":1763,"in_reply_to":"9fb8cfa7_cba6f30f","updated":"2019-06-14 00:15:27.000000000","message":"Done","commit_id":"94196e12448384ea685d8899e09a4ac5b699c2f4"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1419c14eb7aeea91d11c2579072831af49faad8c","unresolved":false,"context_lines":[{"line_number":1858,"context_line":"                           {\u0027unshelve\u0027: {"},{"line_number":1859,"context_line":"                               \u0027availability_zone\u0027: \u0027foo-az\u0027}})"},{"line_number":1860,"context_line":""},{"line_number":1861,"context_line":"    def test_unshelve_server_pre_277_fails_with_specified_az(self):"},{"line_number":1862,"context_line":"        self.cs.api_version \u003d api_versions.APIVersion(\u00272.76\u0027)"},{"line_number":1863,"context_line":"        s \u003d self.cs.servers.get(1234)"},{"line_number":1864,"context_line":"        e \u003d self.assertRaises(TypeError,"},{"line_number":1865,"context_line":"                              s.unshelve,"},{"line_number":1866,"context_line":"                              availability_zone\u003d\u0027foo-az\u0027)"},{"line_number":1867,"context_line":"        self.assertIn(\"unexpected keyword argument \u0027availability_zone\u0027\","},{"line_number":1868,"context_line":"                      six.text_type(e))"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_32ae3be7","line":1868,"range":{"start_line":1861,"start_character":0,"end_line":1868,"end_character":39},"updated":"2019-08-19 09:25:02.000000000","message":"can you add tests to fail on empty dict.","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0b1d061ddfbaca5d35795ef9eb841f2cb1577a03","unresolved":false,"context_lines":[{"line_number":1858,"context_line":"                           {\u0027unshelve\u0027: {"},{"line_number":1859,"context_line":"                               \u0027availability_zone\u0027: \u0027foo-az\u0027}})"},{"line_number":1860,"context_line":""},{"line_number":1861,"context_line":"    def test_unshelve_server_pre_277_fails_with_specified_az(self):"},{"line_number":1862,"context_line":"        self.cs.api_version \u003d api_versions.APIVersion(\u00272.76\u0027)"},{"line_number":1863,"context_line":"        s \u003d self.cs.servers.get(1234)"},{"line_number":1864,"context_line":"        e \u003d self.assertRaises(TypeError,"},{"line_number":1865,"context_line":"                              s.unshelve,"},{"line_number":1866,"context_line":"                              availability_zone\u003d\u0027foo-az\u0027)"},{"line_number":1867,"context_line":"        self.assertIn(\"unexpected keyword argument \u0027availability_zone\u0027\","},{"line_number":1868,"context_line":"                      six.text_type(e))"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_283eca28","line":1868,"range":{"start_line":1861,"start_character":0,"end_line":1868,"end_character":39},"in_reply_to":"7faddb67_32ae3be7","updated":"2019-08-19 12:50:07.000000000","message":"Thanks to your remind, the unshelve processing logic has been improved.","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"051f50c8e9fd1f8b8902b283b33b6fccbd141bf1","unresolved":false,"context_lines":[{"line_number":1867,"context_line":"        self.assertIn(\"unexpected keyword argument \u0027availability_zone\u0027\","},{"line_number":1868,"context_line":"                      six.text_type(ex))"},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"        ex \u003d self.assertRaises(TypeError,"},{"line_number":1871,"context_line":"                               self.cs.servers.unshelve,"},{"line_number":1872,"context_line":"                               s, availability_zone\u003d\u0027foo-az\u0027)"},{"line_number":1873,"context_line":"        self.assertIn(\"unexpected keyword argument \u0027availability_zone\u0027\","},{"line_number":1874,"context_line":"                      six.text_type(ex))"},{"line_number":1875,"context_line":""},{"line_number":1876,"context_line":"    def test_unshelve_server_fails_with_empty_body(self):"},{"line_number":1877,"context_line":"        s \u003d self.cs.servers.get(1234)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_46b6eede","line":1874,"range":{"start_line":1870,"start_character":8,"end_line":1874,"end_character":40},"updated":"2019-08-28 14:06:16.000000000","message":"This seems redundant but I guess it\u0027s just testing that we fail the same if going through the Server object or the ServerManager object. It might be useful to add a comment to the test about that (I generally try to document my tests so people reading them don\u0027t have to guess as to what they are doing).","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0c9e8d67bc666b33e4e7aa313ffb26ec01303463","unresolved":false,"context_lines":[{"line_number":1867,"context_line":"        self.assertIn(\"unexpected keyword argument \u0027availability_zone\u0027\","},{"line_number":1868,"context_line":"                      six.text_type(ex))"},{"line_number":1869,"context_line":""},{"line_number":1870,"context_line":"        ex \u003d self.assertRaises(TypeError,"},{"line_number":1871,"context_line":"                               self.cs.servers.unshelve,"},{"line_number":1872,"context_line":"                               s, availability_zone\u003d\u0027foo-az\u0027)"},{"line_number":1873,"context_line":"        self.assertIn(\"unexpected keyword argument \u0027availability_zone\u0027\","},{"line_number":1874,"context_line":"                      six.text_type(ex))"},{"line_number":1875,"context_line":""},{"line_number":1876,"context_line":"    def test_unshelve_server_fails_with_empty_body(self):"},{"line_number":1877,"context_line":"        s \u003d self.cs.servers.get(1234)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_2db62ade","line":1874,"range":{"start_line":1870,"start_character":8,"end_line":1874,"end_character":40},"in_reply_to":"7faddb67_46b6eede","updated":"2019-08-28 21:38:59.000000000","message":"Done","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"}],"novaclient/tests/unit/v2/test_shell.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1419c14eb7aeea91d11c2579072831af49faad8c","unresolved":false,"context_lines":[{"line_number":4292,"context_line":"            71,  # There are no version-wrapped shell method changes for this."},{"line_number":4293,"context_line":"            72,  # There are no version-wrapped shell method changes for this."},{"line_number":4294,"context_line":"            74,  # There are no version-wrapped shell method changes for this."},{"line_number":4295,"context_line":"            75,  # There are no version-wrapped shell method changes for this."},{"line_number":4296,"context_line":"            76,  # There are no version-wrapped shell method changes for this."},{"line_number":4297,"context_line":"            77,  # There are no version-wrapped shell method changes for this."},{"line_number":4298,"context_line":"        ])"},{"line_number":4299,"context_line":"        versions_supported \u003d set(range(0,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_125c5f17","line":4296,"range":{"start_line":4295,"start_character":0,"end_line":4296,"end_character":78},"updated":"2019-08-19 09:25:02.000000000","message":"you need to rebase on https://review.opendev.org/#/c/666792/ to get these updates.","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0b1d061ddfbaca5d35795ef9eb841f2cb1577a03","unresolved":false,"context_lines":[{"line_number":4292,"context_line":"            71,  # There are no version-wrapped shell method changes for this."},{"line_number":4293,"context_line":"            72,  # There are no version-wrapped shell method changes for this."},{"line_number":4294,"context_line":"            74,  # There are no version-wrapped shell method changes for this."},{"line_number":4295,"context_line":"            75,  # There are no version-wrapped shell method changes for this."},{"line_number":4296,"context_line":"            76,  # There are no version-wrapped shell method changes for this."},{"line_number":4297,"context_line":"            77,  # There are no version-wrapped shell method changes for this."},{"line_number":4298,"context_line":"        ])"},{"line_number":4299,"context_line":"        versions_supported \u003d set(range(0,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7faddb67_c87db6e7","line":4296,"range":{"start_line":4295,"start_character":0,"end_line":4296,"end_character":78},"in_reply_to":"7faddb67_125c5f17","updated":"2019-08-19 12:50:07.000000000","message":"Done","commit_id":"87e783fa0772fc4d58037c1214d625a1f9a62f1a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"051f50c8e9fd1f8b8902b283b33b6fccbd141bf1","unresolved":false,"context_lines":[{"line_number":2258,"context_line":"        self.run_command(\u0027unshelve sample-server\u0027)"},{"line_number":2259,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027, {\u0027unshelve\u0027: None})"},{"line_number":2260,"context_line":""},{"line_number":2261,"context_line":"    def test_unshelve_pre_v277(self):"},{"line_number":2262,"context_line":"        self.run_command(\u0027unshelve sample-server\u0027)"},{"line_number":2263,"context_line":"        self.assertRaises(SystemExit,"},{"line_number":2264,"context_line":"                          self.run_command,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_a6bec2ab","line":2261,"range":{"start_line":2261,"start_character":8,"end_line":2261,"end_character":30},"updated":"2019-08-28 14:06:16.000000000","message":"Call this something like test_unshelve_pre_v277_with_az_fails.","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0c9e8d67bc666b33e4e7aa313ffb26ec01303463","unresolved":false,"context_lines":[{"line_number":2258,"context_line":"        self.run_command(\u0027unshelve sample-server\u0027)"},{"line_number":2259,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027, {\u0027unshelve\u0027: None})"},{"line_number":2260,"context_line":""},{"line_number":2261,"context_line":"    def test_unshelve_pre_v277(self):"},{"line_number":2262,"context_line":"        self.run_command(\u0027unshelve sample-server\u0027)"},{"line_number":2263,"context_line":"        self.assertRaises(SystemExit,"},{"line_number":2264,"context_line":"                          self.run_command,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_4db926c9","line":2261,"range":{"start_line":2261,"start_character":8,"end_line":2261,"end_character":30},"in_reply_to":"7faddb67_a6bec2ab","updated":"2019-08-28 21:38:59.000000000","message":"Done","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"051f50c8e9fd1f8b8902b283b33b6fccbd141bf1","unresolved":false,"context_lines":[{"line_number":2259,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027, {\u0027unshelve\u0027: None})"},{"line_number":2260,"context_line":""},{"line_number":2261,"context_line":"    def test_unshelve_pre_v277(self):"},{"line_number":2262,"context_line":"        self.run_command(\u0027unshelve sample-server\u0027)"},{"line_number":2263,"context_line":"        self.assertRaises(SystemExit,"},{"line_number":2264,"context_line":"                          self.run_command,"},{"line_number":2265,"context_line":"                          \u0027unshelve --availability-zone foo-az sample-server\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_06e556dc","line":2262,"updated":"2019-08-28 14:06:16.000000000","message":"You can remove this line, it\u0027s tested above.","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0c9e8d67bc666b33e4e7aa313ffb26ec01303463","unresolved":false,"context_lines":[{"line_number":2259,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/servers/1234/action\u0027, {\u0027unshelve\u0027: None})"},{"line_number":2260,"context_line":""},{"line_number":2261,"context_line":"    def test_unshelve_pre_v277(self):"},{"line_number":2262,"context_line":"        self.run_command(\u0027unshelve sample-server\u0027)"},{"line_number":2263,"context_line":"        self.assertRaises(SystemExit,"},{"line_number":2264,"context_line":"                          self.run_command,"},{"line_number":2265,"context_line":"                          \u0027unshelve --availability-zone foo-az sample-server\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_cdc43644","line":2262,"in_reply_to":"7faddb67_06e556dc","updated":"2019-08-28 21:38:59.000000000","message":"Done","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"}],"novaclient/v2/servers.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0fa2d33a8cbd59295cd47a37b80cf679ebaaeed4","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        Unshelve -- Unshelve the server."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        ::param availability_zone: The specified availability zone name"},{"line_number":309,"context_line":"                                   (Optional)"},{"line_number":310,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":311,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_6b9a67b9","line":308,"range":{"start_line":308,"start_character":9,"end_line":308,"end_character":10},"updated":"2019-06-13 13:50:16.000000000","message":"an extra colon.","commit_id":"94196e12448384ea685d8899e09a4ac5b699c2f4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"baebdb42cce4bddb168b39f406919c4d352900bf","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        \"\"\""},{"line_number":306,"context_line":"        Unshelve -- Unshelve the server."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        ::param availability_zone: The specified availability zone name"},{"line_number":309,"context_line":"                                   (Optional)"},{"line_number":310,"context_line":"        :returns: An instance of novaclient.base.TupleWithMeta"},{"line_number":311,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_611fde07","line":308,"range":{"start_line":308,"start_character":9,"end_line":308,"end_character":10},"in_reply_to":"9fb8cfa7_6b9a67b9","updated":"2019-06-14 00:15:27.000000000","message":"Done","commit_id":"94196e12448384ea685d8899e09a4ac5b699c2f4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"051f50c8e9fd1f8b8902b283b33b6fccbd141bf1","unresolved":false,"context_lines":[{"line_number":1258,"context_line":"        info \u003d None"},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"        if availability_zone:"},{"line_number":1261,"context_line":"            if \u0027unshelve\u0027 in availability_zone and availability_zone.get("},{"line_number":1262,"context_line":"               \u0027unshelve\u0027) \u003d\u003d {}:"},{"line_number":1263,"context_line":"                msg \u003d _(\"In 2.77 microversion not support specify \""},{"line_number":1264,"context_line":"                        \"{\u0027unshelve\u0027: {}} to unshleve the server.\")"},{"line_number":1265,"context_line":"                raise ValueError(msg)"},{"line_number":1266,"context_line":"            info \u003d {\u0027availability_zone\u0027: availability_zone}"},{"line_number":1267,"context_line":""},{"line_number":1268,"context_line":"        return self._action(\u0027unshelve\u0027, server, info)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_46290ef0","line":1265,"range":{"start_line":1261,"start_character":12,"end_line":1265,"end_character":37},"updated":"2019-08-28 14:06:16.000000000","message":"We don\u0027t need to validate this in the client python API bindings, just let the server error if the schema is bad. Think of this way - you\u0027re not going to validate all of the other invalid cases, like availabilty_zone\u003d\u0027\u0027, availabilty_zone\u003d\u0027a\u0027*500, availability_zone\u003d123, etc.","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0c9e8d67bc666b33e4e7aa313ffb26ec01303463","unresolved":false,"context_lines":[{"line_number":1258,"context_line":"        info \u003d None"},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"        if availability_zone:"},{"line_number":1261,"context_line":"            if \u0027unshelve\u0027 in availability_zone and availability_zone.get("},{"line_number":1262,"context_line":"               \u0027unshelve\u0027) \u003d\u003d {}:"},{"line_number":1263,"context_line":"                msg \u003d _(\"In 2.77 microversion not support specify \""},{"line_number":1264,"context_line":"                        \"{\u0027unshelve\u0027: {}} to unshleve the server.\")"},{"line_number":1265,"context_line":"                raise ValueError(msg)"},{"line_number":1266,"context_line":"            info \u003d {\u0027availability_zone\u0027: availability_zone}"},{"line_number":1267,"context_line":""},{"line_number":1268,"context_line":"        return self._action(\u0027unshelve\u0027, server, info)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_8dd39e01","line":1265,"range":{"start_line":1261,"start_character":12,"end_line":1265,"end_character":37},"in_reply_to":"7faddb67_46290ef0","updated":"2019-08-28 21:38:59.000000000","message":"Done","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"}],"novaclient/v2/shell.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"051f50c8e9fd1f8b8902b283b33b6fccbd141bf1","unresolved":false,"context_lines":[{"line_number":2290,"context_line":"    metavar\u003d\u0027\u003cavailability-zone\u003e\u0027,"},{"line_number":2291,"context_line":"    default\u003dNone,"},{"line_number":2292,"context_line":"    dest\u003d\u0027availability_zone\u0027,"},{"line_number":2293,"context_line":"    help\u003d_(\u0027New availability zone name for \u0027"},{"line_number":2294,"context_line":"           \u0027unshelve a shelve offloaded server.\u0027),"},{"line_number":2295,"context_line":"    start_version\u003d\u00272.77\u0027)"},{"line_number":2296,"context_line":"def do_unshelve(cs, args):"},{"line_number":2297,"context_line":"    \"\"\"Unshelve a server.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_864626c0","line":2294,"range":{"start_line":2293,"start_character":11,"end_line":2294,"end_character":48},"updated":"2019-08-28 14:06:16.000000000","message":"\"Name of the availability zone in which to unshelve a ``SHELVED_OFFLOADED`` server.\"","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0c9e8d67bc666b33e4e7aa313ffb26ec01303463","unresolved":false,"context_lines":[{"line_number":2290,"context_line":"    metavar\u003d\u0027\u003cavailability-zone\u003e\u0027,"},{"line_number":2291,"context_line":"    default\u003dNone,"},{"line_number":2292,"context_line":"    dest\u003d\u0027availability_zone\u0027,"},{"line_number":2293,"context_line":"    help\u003d_(\u0027New availability zone name for \u0027"},{"line_number":2294,"context_line":"           \u0027unshelve a shelve offloaded server.\u0027),"},{"line_number":2295,"context_line":"    start_version\u003d\u00272.77\u0027)"},{"line_number":2296,"context_line":"def do_unshelve(cs, args):"},{"line_number":2297,"context_line":"    \"\"\"Unshelve a server.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_cd37564b","line":2294,"range":{"start_line":2293,"start_character":11,"end_line":2294,"end_character":48},"in_reply_to":"7faddb67_864626c0","updated":"2019-08-28 21:38:59.000000000","message":"Done","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"}],"releasenotes/notes/microversion-v2_74-df8f02c798fb963b.yaml":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"01d5365587a079d47664cdf6c0ef85e9c8bd783d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7faddb67_28147c4c","updated":"2019-08-20 00:24:23.000000000","message":"The file name should be changed for microversion 2.77.\n\n  releasenotes/notes/microversion-v2_77-df8f02c798fb963b.yaml","commit_id":"ed1c3264a455e74864bc54d09332be6b495d3325"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"c86ac43eaa6b4581c2233701845accf5c4a50b30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7faddb67_bb3c38c8","in_reply_to":"7faddb67_28147c4c","updated":"2019-08-20 00:35:01.000000000","message":"Yeah, net of fish.","commit_id":"ed1c3264a455e74864bc54d09332be6b495d3325"}],"releasenotes/notes/microversion-v2_77-ffee30c180aa4dbe.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"051f50c8e9fd1f8b8902b283b33b6fccbd141bf1","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support has been added for `microversion 2.77`_. This microversion"},{"line_number":5,"context_line":"    allows specifying an ``availability_zone`` to unshelve a shelve"},{"line_number":6,"context_line":"    offloaded server."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    .. _microversion 2.77: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id69"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"7faddb67_260f3289","line":5,"range":{"start_line":5,"start_character":25,"end_line":5,"end_character":46},"updated":"2019-08-28 14:06:16.000000000","message":"We can just say availability zone without the formatting or underscore to make it look like a variable.","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0c9e8d67bc666b33e4e7aa313ffb26ec01303463","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support has been added for `microversion 2.77`_. This microversion"},{"line_number":5,"context_line":"    allows specifying an ``availability_zone`` to unshelve a shelve"},{"line_number":6,"context_line":"    offloaded server."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    .. _microversion 2.77: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id69"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"7faddb67_4d15a69a","line":5,"range":{"start_line":5,"start_character":25,"end_line":5,"end_character":46},"in_reply_to":"7faddb67_260f3289","updated":"2019-08-28 21:38:59.000000000","message":"Done","commit_id":"042f5f0b806652dc70698b4a8d6ee7c256e22052"}]}
