)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"f373af275e1bf88fe2f3453304a0addd6363c46e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"aeaa46cf_23649e59","updated":"2021-12-23 12:26:55.000000000","message":"Thank you!","commit_id":"cb062e777972fbe9fd4deb48b2c011cd59c4d5f3"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"94addb1eb5f90dd16a86195e4adc975a48ae2370","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"22d752cf_ab6149af","updated":"2021-12-26 09:18:40.000000000","message":"Thanks!\nOnly one small comment.","commit_id":"e402bd510e4c1447d202d74fece2ade1cb0d3931"},{"author":{"_account_id":31280,"name":"lkk","email":"likangkang01@inspur.com","username":"likangkang"},"change_message_id":"cc1f9e5f731443a424dda2c21eeaf1c6c362e008","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"18f94d52_e72ca879","updated":"2021-12-24 06:31:44.000000000","message":"recheck","commit_id":"e402bd510e4c1447d202d74fece2ade1cb0d3931"},{"author":{"_account_id":31280,"name":"lkk","email":"likangkang01@inspur.com","username":"likangkang"},"change_message_id":"feebb4d1773e16d31aac359180a15e8ee7217f5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4022505f_8286ab57","updated":"2021-12-24 09:15:08.000000000","message":"recheck","commit_id":"e402bd510e4c1447d202d74fece2ade1cb0d3931"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4c149422583d7e397eb1bcf783faad60296f012a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"00ae38f5_3f8d3623","updated":"2021-12-27 08:31:46.000000000","message":"LGTM, thanks lkk.","commit_id":"b55f404a4efa8b124dc2e250f87dc5d894e42da0"}],"manila_tempest_tests/services/share/v2/json/shares_client.py":[{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"36b5bb1d29ae27e5cbcc8f7cf38a17d1d464a89d","unresolved":true,"context_lines":[{"line_number":385,"context_line":"###############"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def extend_share(self, share_id, new_size, version\u003dLATEST_MICROVERSION,"},{"line_number":388,"context_line":"                     action_name\u003dNone, **kwargs):"},{"line_number":389,"context_line":"        if action_name is None:"},{"line_number":390,"context_line":"            if utils.is_microversion_gt(version, \"2.6\"):"},{"line_number":391,"context_line":"                action_name \u003d \u0027extend\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"ce37fcd5_50589f56","line":388,"range":{"start_line":388,"start_character":39,"end_line":388,"end_character":47},"updated":"2021-09-19 09:37:34.000000000","message":"I don\u0027t think there are any more parameters, so I think it\u0027s better to use an option parameter in this way:\nforce\u003dNone\nIt also clarifies the existing option.","commit_id":"c57a3b080a1d00de7a5325b969a6ab7308ddafc5"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e979e60a04d5e7d67f9fdd0bf58375e3de9c5c26","unresolved":true,"context_lines":[{"line_number":395,"context_line":"        post_body \u003d {"},{"line_number":396,"context_line":"            action_name: {"},{"line_number":397,"context_line":"                \"new_size\": new_size,"},{"line_number":398,"context_line":"                \"force\": force"},{"line_number":399,"context_line":"            }"},{"line_number":400,"context_line":"        }"},{"line_number":401,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"b5e24913_72a93c26","line":398,"range":{"start_line":398,"start_character":16,"end_line":398,"end_character":30},"updated":"2021-09-22 03:14:15.000000000","message":"here we need to check microversion.\nsince we can only add force when microversion great than v2.63(or great equal v2.64).","commit_id":"44d63492462ae57f1c134bfb41a2290ab510e5dc"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"59e3698145152b42d648ebee240f3a738c20ccdc","unresolved":true,"context_lines":[{"line_number":398,"context_line":"            }"},{"line_number":399,"context_line":"        }"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        if utils.is_microversion_gt(version, \"2.63\"):"},{"line_number":402,"context_line":"            post_body[action_name][\"force\"] \u003d force"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"        body \u003d json.dumps(post_body)"},{"line_number":405,"context_line":"        resp, body \u003d self.post("}],"source_content_type":"text/x-python","patch_set":6,"id":"8d0c15b1_f66a33ba","line":402,"range":{"start_line":401,"start_character":8,"end_line":402,"end_character":51},"updated":"2021-09-22 06:15:51.000000000","message":"we should make sure force is bool, but not None.\notherwise we will got error:\nhttps://zuul.opendev.org/t/openstack/build/c8453cf74f52485eb9296390b3870236    \n        if utils.is_microversion_gt(version, \"2.63\"):\n            if force is not None:\n                post_body[action_name][\"force\"] \u003d force","commit_id":"264d3a8bc1315b9a36ffaf3ab1b325f82dd7123b"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"f373af275e1bf88fe2f3453304a0addd6363c46e","unresolved":true,"context_lines":[{"line_number":385,"context_line":"###############"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def extend_share(self, share_id, new_size, version\u003dLATEST_MICROVERSION,"},{"line_number":388,"context_line":"                     action_name\u003dNone, force\u003dNone):"},{"line_number":389,"context_line":"        if action_name is None:"},{"line_number":390,"context_line":"            if utils.is_microversion_gt(version, \"2.6\"):"},{"line_number":391,"context_line":"                action_name \u003d \u0027extend\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"abfda081_c1dc97a8","line":388,"range":{"start_line":388,"start_character":39,"end_line":388,"end_character":49},"updated":"2021-12-23 12:26:55.000000000","message":"It is more correct to define it as a boolean variable.\nforce\u003dFalse","commit_id":"cb062e777972fbe9fd4deb48b2c011cd59c4d5f3"},{"author":{"_account_id":31280,"name":"lkk","email":"likangkang01@inspur.com","username":"likangkang"},"change_message_id":"758e5139de03d4fbff889fcc12966e446cf4be41","unresolved":false,"context_lines":[{"line_number":385,"context_line":"###############"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    def extend_share(self, share_id, new_size, version\u003dLATEST_MICROVERSION,"},{"line_number":388,"context_line":"                     action_name\u003dNone, force\u003dNone):"},{"line_number":389,"context_line":"        if action_name is None:"},{"line_number":390,"context_line":"            if utils.is_microversion_gt(version, \"2.6\"):"},{"line_number":391,"context_line":"                action_name \u003d \u0027extend\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"69477650_47c32cce","line":388,"range":{"start_line":388,"start_character":39,"end_line":388,"end_character":49},"in_reply_to":"abfda081_c1dc97a8","updated":"2021-12-25 05:55:28.000000000","message":"Done","commit_id":"cb062e777972fbe9fd4deb48b2c011cd59c4d5f3"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"f373af275e1bf88fe2f3453304a0addd6363c46e","unresolved":true,"context_lines":[{"line_number":399,"context_line":"        }"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        if utils.is_microversion_gt(version, \"2.63\"):"},{"line_number":402,"context_line":"            if force is not None:"},{"line_number":403,"context_line":"                post_body[action_name][\"force\"] \u003d force"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        body \u003d json.dumps(post_body)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ae8f691c_5f3db5a5","line":402,"range":{"start_line":402,"start_character":12,"end_line":402,"end_character":33},"updated":"2021-12-23 12:26:55.000000000","message":"After force will be defined as boolean, you can remove this line.","commit_id":"cb062e777972fbe9fd4deb48b2c011cd59c4d5f3"},{"author":{"_account_id":31280,"name":"lkk","email":"likangkang01@inspur.com","username":"likangkang"},"change_message_id":"758e5139de03d4fbff889fcc12966e446cf4be41","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        }"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        if utils.is_microversion_gt(version, \"2.63\"):"},{"line_number":402,"context_line":"            if force is not None:"},{"line_number":403,"context_line":"                post_body[action_name][\"force\"] \u003d force"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"        body \u003d json.dumps(post_body)"}],"source_content_type":"text/x-python","patch_set":8,"id":"795629db_7fd3d15b","line":402,"range":{"start_line":402,"start_character":12,"end_line":402,"end_character":33},"in_reply_to":"ae8f691c_5f3db5a5","updated":"2021-12-25 05:55:28.000000000","message":"Done","commit_id":"cb062e777972fbe9fd4deb48b2c011cd59c4d5f3"}],"manila_tempest_tests/tests/api/admin/test_admin_actions.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e979e60a04d5e7d67f9fdd0bf58375e3de9c5c26","unresolved":true,"context_lines":[{"line_number":212,"context_line":"        )"},{"line_number":213,"context_line":"        self.assertEqual(new_size, share_get[\u0027size\u0027], msg)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        # force extend share and wait for active status"},{"line_number":216,"context_line":"        new_size \u003d int(share[\u0027size\u0027]) + 2"},{"line_number":217,"context_line":"        self.admin_shares_v2_client.extend_share(share[\u0027id\u0027], new_size,"},{"line_number":218,"context_line":"                                                 force\u003dFalse)"},{"line_number":219,"context_line":"        waiters.wait_for_resource_status("},{"line_number":220,"context_line":"            self.shares_client, share[\u0027id\u0027], \u0027available\u0027)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # check new size"},{"line_number":223,"context_line":"        share_get \u003d self.shares_v2_client.get_share(share[\u0027id\u0027])[\u0027share\u0027]"},{"line_number":224,"context_line":"        msg \u003d ("},{"line_number":225,"context_line":"                \"Share could not be extended. \""},{"line_number":226,"context_line":"                \"Expected %(expected)s, got %(actual)s.\" % {"},{"line_number":227,"context_line":"                    \"expected\": new_size,"},{"line_number":228,"context_line":"                    \"actual\": share_get[\u0027size\u0027],"},{"line_number":229,"context_line":"                }"},{"line_number":230,"context_line":"        )"},{"line_number":231,"context_line":"        self.assertEqual(new_size, share_get[\u0027size\u0027], msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fc4c51a7_ac9ab743","line":231,"range":{"start_line":215,"start_character":8,"end_line":231,"end_character":58},"updated":"2021-09-22 03:14:15.000000000","message":"why test extend again?\ni don\u0027t think we need to test extend again, we can remote those lines.","commit_id":"44d63492462ae57f1c134bfb41a2290ab510e5dc"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"f373af275e1bf88fe2f3453304a0addd6363c46e","unresolved":true,"context_lines":[{"line_number":188,"context_line":"    @testtools.skipUnless("},{"line_number":189,"context_line":"        CONF.share.run_extend_tests,"},{"line_number":190,"context_line":"        \"Share extend tests are disabled.\")"},{"line_number":191,"context_line":"    def test_extend_share_force(self):"},{"line_number":192,"context_line":"        # Force extend were supported from v2.64"},{"line_number":193,"context_line":"        # If a admin tries to do force extend, it should be success"},{"line_number":194,"context_line":"        share \u003d self.create_share(share_type_id\u003dself.share_type_id,"},{"line_number":195,"context_line":"                                  cleanup_in_class\u003dFalse)"},{"line_number":196,"context_line":"        new_size \u003d int(share[\u0027size\u0027]) + 1"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        # force extend share and wait for active status"},{"line_number":199,"context_line":"        self.admin_shares_v2_client.extend_share(share[\u0027id\u0027], new_size,"},{"line_number":200,"context_line":"                                                 force\u003dTrue)"},{"line_number":201,"context_line":"        waiters.wait_for_resource_status("},{"line_number":202,"context_line":"            self.shares_client, share[\u0027id\u0027], \u0027available\u0027)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # check new size"},{"line_number":205,"context_line":"        share_get \u003d self.shares_v2_client.get_share(share[\u0027id\u0027])[\u0027share\u0027]"},{"line_number":206,"context_line":"        msg \u003d (\"Share could not be extended. Expected %s, got %s.\" % ("},{"line_number":207,"context_line":"            new_size, share_get[\u0027size\u0027]))"},{"line_number":208,"context_line":"        self.assertEqual(new_size, share_get[\u0027size\u0027], msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ca0fb91_48f9f496","line":208,"range":{"start_line":191,"start_character":0,"end_line":208,"end_character":58},"updated":"2021-12-23 12:26:55.000000000","message":"You can also extend the share without using the force option.\nIs there case that you can extend the share only by using force option ?","commit_id":"cb062e777972fbe9fd4deb48b2c011cd59c4d5f3"},{"author":{"_account_id":31280,"name":"lkk","email":"likangkang01@inspur.com","username":"likangkang"},"change_message_id":"758e5139de03d4fbff889fcc12966e446cf4be41","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    @testtools.skipUnless("},{"line_number":189,"context_line":"        CONF.share.run_extend_tests,"},{"line_number":190,"context_line":"        \"Share extend tests are disabled.\")"},{"line_number":191,"context_line":"    def test_extend_share_force(self):"},{"line_number":192,"context_line":"        # Force extend were supported from v2.64"},{"line_number":193,"context_line":"        # If a admin tries to do force extend, it should be success"},{"line_number":194,"context_line":"        share \u003d self.create_share(share_type_id\u003dself.share_type_id,"},{"line_number":195,"context_line":"                                  cleanup_in_class\u003dFalse)"},{"line_number":196,"context_line":"        new_size \u003d int(share[\u0027size\u0027]) + 1"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        # force extend share and wait for active status"},{"line_number":199,"context_line":"        self.admin_shares_v2_client.extend_share(share[\u0027id\u0027], new_size,"},{"line_number":200,"context_line":"                                                 force\u003dTrue)"},{"line_number":201,"context_line":"        waiters.wait_for_resource_status("},{"line_number":202,"context_line":"            self.shares_client, share[\u0027id\u0027], \u0027available\u0027)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # check new size"},{"line_number":205,"context_line":"        share_get \u003d self.shares_v2_client.get_share(share[\u0027id\u0027])[\u0027share\u0027]"},{"line_number":206,"context_line":"        msg \u003d (\"Share could not be extended. Expected %s, got %s.\" % ("},{"line_number":207,"context_line":"            new_size, share_get[\u0027size\u0027]))"},{"line_number":208,"context_line":"        self.assertEqual(new_size, share_get[\u0027size\u0027], msg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"cc58c23c_6a19419b","line":208,"range":{"start_line":191,"start_character":0,"end_line":208,"end_character":58},"in_reply_to":"9ca0fb91_48f9f496","updated":"2021-12-25 05:55:28.000000000","message":"Done","commit_id":"cb062e777972fbe9fd4deb48b2c011cd59c4d5f3"}],"manila_tempest_tests/tests/api/test_shares_actions_negative.py":[{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"36b5bb1d29ae27e5cbcc8f7cf38a17d1d464a89d","unresolved":true,"context_lines":[{"line_number":132,"context_line":"        # In API versions \u003cv2.64, admin force extend shares"},{"line_number":133,"context_line":"        # should have no effect. Force extend were supported from v2.64"},{"line_number":134,"context_line":"        # If a non-admin tries to do force extend, it should be unauthorized"},{"line_number":135,"context_line":"        share \u003d self.create_share(share_type_id\u003dself.share_type_id,"},{"line_number":136,"context_line":"                                  cleanup_in_class\u003dFalse)"},{"line_number":137,"context_line":"        new_size \u003d int(share[\u0027size\u0027]) + 1"},{"line_number":138,"context_line":"        self.assertRaises(lib_exc.Forbidden,"},{"line_number":139,"context_line":"                          self.shares_client.extend_share, share[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"53d2a659_0e721306","line":136,"range":{"start_line":135,"start_character":0,"end_line":136,"end_character":57},"updated":"2021-09-19 09:37:34.000000000","message":"Needless to create a new share.\nYou can use share created in the resource_setup.","commit_id":"c57a3b080a1d00de7a5325b969a6ab7308ddafc5"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e979e60a04d5e7d67f9fdd0bf58375e3de9c5c26","unresolved":true,"context_lines":[{"line_number":127,"context_line":"    @testtools.skipUnless("},{"line_number":128,"context_line":"        CONF.share.run_extend_tests,"},{"line_number":129,"context_line":"        \"Share extend tests are disabled.\")"},{"line_number":130,"context_line":"    def test_shares_force_extend_with_member("},{"line_number":131,"context_line":"            self):"},{"line_number":132,"context_line":"        # In API versions \u003cv2.64, admin force extend shares"},{"line_number":133,"context_line":"        # should have no effect. Force extend were supported from v2.64"}],"source_content_type":"text/x-python","patch_set":5,"id":"6effce9c_4591e229","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":44},"updated":"2021-09-22 03:14:15.000000000","message":"change function name to \"test_share_force_extend()\nbecause in this file, the default test user is project member.\nno need to declare again.","commit_id":"44d63492462ae57f1c134bfb41a2290ab510e5dc"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"e979e60a04d5e7d67f9fdd0bf58375e3de9c5c26","unresolved":true,"context_lines":[{"line_number":129,"context_line":"        \"Share extend tests are disabled.\")"},{"line_number":130,"context_line":"    def test_shares_force_extend_with_member("},{"line_number":131,"context_line":"            self):"},{"line_number":132,"context_line":"        # In API versions \u003cv2.64, admin force extend shares"},{"line_number":133,"context_line":"        # should have no effect. Force extend were supported from v2.64"},{"line_number":134,"context_line":"        # If a non-admin tries to do force extend, it should be unauthorized"},{"line_number":135,"context_line":"        new_size \u003d int(self.share[\u0027size\u0027]) + 1"},{"line_number":136,"context_line":"        self.assertRaises(lib_exc.Forbidden,"},{"line_number":137,"context_line":"                          self.shares_client.extend_share, self.share[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"10e31686_ffe56e26","line":134,"range":{"start_line":132,"start_character":8,"end_line":134,"end_character":76},"updated":"2021-09-22 03:14:15.000000000","message":"# only admin cloud force extend share with micversion \u003e\u003d 2.64.\n# non-admin will get unauthorized error.","commit_id":"44d63492462ae57f1c134bfb41a2290ab510e5dc"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"94addb1eb5f90dd16a86195e4adc975a48ae2370","unresolved":true,"context_lines":[{"line_number":127,"context_line":"    @testtools.skipUnless("},{"line_number":128,"context_line":"        CONF.share.run_extend_tests,"},{"line_number":129,"context_line":"        \"Share extend tests are disabled.\")"},{"line_number":130,"context_line":"    def test_share_force_extend(self):"},{"line_number":131,"context_line":"        # only admin cloud force extend share with micversion \u003e\u003d 2.64"},{"line_number":132,"context_line":"        # non-admin will get unauthorized error."},{"line_number":133,"context_line":"        new_size \u003d int(self.share[\u0027size\u0027]) + 1"}],"source_content_type":"text/x-python","patch_set":9,"id":"ec8ad2c7_ffde652b","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":31},"updated":"2021-12-26 09:18:40.000000000","message":"Please rename it as:\n\"test_share_force_extend_non_admin_user\"","commit_id":"e402bd510e4c1447d202d74fece2ade1cb0d3931"},{"author":{"_account_id":31280,"name":"lkk","email":"likangkang01@inspur.com","username":"likangkang"},"change_message_id":"87ce383773ba35067187b698ca44fa18d810020d","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    @testtools.skipUnless("},{"line_number":128,"context_line":"        CONF.share.run_extend_tests,"},{"line_number":129,"context_line":"        \"Share extend tests are disabled.\")"},{"line_number":130,"context_line":"    def test_share_force_extend(self):"},{"line_number":131,"context_line":"        # only admin cloud force extend share with micversion \u003e\u003d 2.64"},{"line_number":132,"context_line":"        # non-admin will get unauthorized error."},{"line_number":133,"context_line":"        new_size \u003d int(self.share[\u0027size\u0027]) + 1"}],"source_content_type":"text/x-python","patch_set":9,"id":"3bd43562_635876bb","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":31},"in_reply_to":"ec8ad2c7_ffde652b","updated":"2021-12-27 02:43:24.000000000","message":"Done","commit_id":"e402bd510e4c1447d202d74fece2ade1cb0d3931"}]}
