)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2ebacfd39d671fbe315ffe8c808863350c836ca3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"66033c38_67befbc3","updated":"2022-03-04 03:47:32.000000000","message":"The overall code looks good, I just have two small questions","commit_id":"dd7a9f133980fc3426c80cc971a19d8284826591"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"47a276f69084d8f58cfd2085d0c7f141cb866dd7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"1a7ce3c5_cc0d9b52","updated":"2022-03-04 18:53:07.000000000","message":"recheck","commit_id":"e741e070e1a92753da0b4cccd7e59178780605fe"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"3a312884fe2d3e64075a7de3c2a5344a42a90410","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"3efa89ea_4a8e2393","updated":"2022-03-08 08:37:18.000000000","message":"recheck","commit_id":"2403b94758088d1e80cb78cb47a9476885086070"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"65a07ca61797ff2b11d853249573cd9fd3e97960","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"d0f64976_975a9544","updated":"2022-05-05 16:07:25.000000000","message":"recheck test failure","commit_id":"4d606b5e004300a0f8b2df555865f213d54134d4"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"11c33ae4d9fd2808ee55d96cf5a67d3ff07b46b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"7a648cb3_4ed07418","updated":"2022-08-02 19:57:18.000000000","message":"Code looks good to me. Didn\u0027t get a chance to try it out in my env yet.","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"d4006fc9a8155d7873c6016a8b90bcc6cc31808a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"9cdd8d37_4a72c31d","updated":"2022-06-09 14:51:38.000000000","message":"Overall looks good. How did you test this functionality ?! ","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"a9d5ed87b8fe74d5423e5aaffada1ed6655f73e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"ee4fd390_77ccc66d","updated":"2022-06-08 22:20:23.000000000","message":"Went over a few files, will continue the review","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4e78c925049384fe0ce753c94e0f7a6f5bc92799","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"7582ebce_85cfabbb","updated":"2022-08-03 09:35:17.000000000","message":"i have test it in my env: \nsnapshot metadata lsit  OK.\nsnapshot metadata create OK.\nsnapshot metadata item update Failed.\nsnapshot metadata item delete OK.\nsnapshot metadata item get OK.\nsnapshot metadata update all OK.\n\nplease see my comment inline, need fix error about snapshot metadata item update.","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a012f4fe169cbfc4cc8ddbd8b0dde614995d95a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"436fcb4b_7edcb766","updated":"2022-06-17 15:03:06.000000000","message":"run Pure Storage CI","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"3f95b27861f151759403f7330dce33b28f6e16ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"e86c6f37_428bd6b9","updated":"2022-06-17 17:25:56.000000000","message":"run Pure Storage CI","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"131aef8e3c66a8f5bb30e2f93c6c6eeb9f9d4319","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"7adb5735_5c21dea9","updated":"2022-08-04 09:11:20.000000000","message":"LGMT， and test pass in my env.","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"af762018_3fe63a74","updated":"2022-08-04 19:09:05.000000000","message":"Thank you for working on this Ashley; could you please add a release note for this feature? ","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0c4f73775c10e0d922d2a578a35f7a02941cd06f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"17c65e7d_ef5dc622","updated":"2022-08-30 06:13:31.000000000","message":"Ashley, could you please update this change?","commit_id":"0022d7e5f7f00aeb2b6f7dadefd13d0b53fa352e"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"7b10c37c767358a26e140141f1be3ea7ffd5b4d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"d1dd1470_0150a00e","updated":"2022-09-01 14:14:18.000000000","message":"Added a comment that will possibly address the issue with the db unit test :)\nPlease check it inline","commit_id":"e08969e3edee039fcfe0875cc7994fa886c8f7a0"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"25e9839479f2391f34938f3a936f370c19a3b395","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"46d692bb_a8805703","updated":"2022-09-01 19:29:17.000000000","message":"recheck timed out tests","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"9a3fd496baf3749196b097e078984d99a51ae20b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"906d2e45_f1b6eb57","updated":"2022-09-02 13:09:02.000000000","message":"recheck timed out tests","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"62bfc41dbe4096e0deee8c242a5d726687672eec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"a9d8adcd_0541d4ce","updated":"2022-09-06 18:45:14.000000000","message":"Added only one more question - Also, I see there are some yet-to-solve comments on sqlalchemy/api... Could you please take a look?","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"cba99095020f0dc9ffcce27dfe2fe07a0fd8ab94","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"6ba09092_f64f4f16","updated":"2022-09-06 19:56:35.000000000","message":"Share snapshot creation with metadata seems to be working just fine.\n\nDoing some tests, I found a few issues that are now allowing metadata set and unset:\n\nFailed to set metadata for a share snapshot [1]\nFailed to unset metadata for a share snapshot [2]\n\nThe issues seem to be in [3].\n\nCould you please take a look?\n\n[1] https://paste.opendev.org/show/bLayX5b9YVJrUCvGvbTT/\n[2] https://paste.opendev.org/show/b4oaMcjhYyiPV1GrkLxg/\n[3] https://github.com/openstack/manila/blob/563466f1739d8eb5d0c2f91edd30bd8bbe7053ff/manila/api/v2/metadata.py#L61-L72","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"42c73ec198f6a258c2b3ee57c4ff4d61842380a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"72356dd2_dcc37007","updated":"2022-09-07 04:52:32.000000000","message":"Thanks for the changes Ashley; some more comments inline","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"08ddf98b6ee960493f12e32d7cadc0ffef0dcd62","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"aea3c010_c979bfb1","updated":"2022-09-08 12:14:13.000000000","message":"I see some database issues [1] and was thinking of what could be the cause - I believe there is a chance this is related to the upgrades. Both this change and share transfer are sharing the same down revision [2] after the rebase, and this could cause confusion to the database while upgrading. This is my suspicion, and I haven\u0027t done any to confirm.\n\n[1] https://paste.opendev.org/show/boy0ijM79pIxBuPYvx1o/\n\n[2] https://review.opendev.org/c/openstack/manila/+/843832/22/manila/db/migrations/alembic/versions/1e2d600bf972_add_transfers.py#23","commit_id":"46802609ba08cd2c3031ee4a3657f5e22ed13279"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"7310092656fb4af58a2487e4e243a3205838f08b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"4f502e67_85f0073a","updated":"2022-09-08 17:24:13.000000000","message":"Tested set/unset, filter and create! works just fine\nThank you for your work on this change, Ashley","commit_id":"7d239f06aa2e460d1997763e0c851460c4e68f61"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"3f167b2b851daf0f4324b2d05fd290727181352b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"bd4747ff_5573048e","updated":"2022-09-08 20:43:38.000000000","message":"Looking good, the database issue happened again, but it\u0027s just a matter of changing the down revisions. Could you please take a look and submit a new PS? :)","commit_id":"f82181860f1225dece31c264ed3fa6517d43c491"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6c7949ce2f6a49e32441937ee7641188d09cd323","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"e6ed5543_a40a0924","updated":"2022-09-09 21:18:12.000000000","message":"Code LGTM, CI is happy in the test cases implemented too:\nhttps://review.opendev.org/c/openstack/manila-tempest-plugin/+/827925\n\nThank you for working on this change, Ashley!","commit_id":"206885a3e9a06571ba582bedddb40a1c413ec7f9"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"882b9dbf3127fbdcdc408b9dfd491e67ccab7c5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"81b04c29_9ea75fce","updated":"2022-09-09 22:12:33.000000000","message":"Thanks Ashley, LGTM!","commit_id":"206885a3e9a06571ba582bedddb40a1c413ec7f9"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a357261adbe17b7314e5559a7f52f682f456dc04","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"192f8821_16e5dcc9","updated":"2022-09-09 17:16:24.000000000","message":"recheck lvm failure","commit_id":"206885a3e9a06571ba582bedddb40a1c413ec7f9"}],"manila/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":31721,"name":"Felipe Rodrigues","email":"felipefuty01@gmail.com","username":"felipefutty"},"change_message_id":"d4006fc9a8155d7873c6016a8b90bcc6cc31808a","unresolved":true,"context_lines":[{"line_number":400,"context_line":"2.72"},{"line_number":401,"context_line":"----"},{"line_number":402,"context_line":"  Added Metadata API methods (GET, PUT, POST, DELETE)"},{"line_number":403,"context_line":"  to Share Snapshots"},{"line_number":404,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"b999647e_91812332","line":403,"range":{"start_line":403,"start_character":11,"end_line":403,"end_character":20},"updated":"2022-06-09 14:51:38.000000000","message":"nit: Snapshots.","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a89961890e73025709c1ac2b459f3aafe0d3df19","unresolved":false,"context_lines":[{"line_number":400,"context_line":"2.72"},{"line_number":401,"context_line":"----"},{"line_number":402,"context_line":"  Added Metadata API methods (GET, PUT, POST, DELETE)"},{"line_number":403,"context_line":"  to Share Snapshots"},{"line_number":404,"context_line":""}],"source_content_type":"text/x-rst","patch_set":30,"id":"38420f1d_288c1bee","line":403,"range":{"start_line":403,"start_character":11,"end_line":403,"end_character":20},"in_reply_to":"b999647e_91812332","updated":"2022-07-21 15:26:41.000000000","message":"Done","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"}],"manila/api/v1/share_snapshots.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"ffaf19a9ca2ae9fedcd95775610d67da6571d5f2","unresolved":true,"context_lines":[{"line_number":222,"context_line":"        if snapshot.get(\u0027metadata\u0027):"},{"line_number":223,"context_line":"            metadata \u003d snapshot.get(\u0027metadata\u0027)"},{"line_number":224,"context_line":"            kwargs.update({"},{"line_number":225,"context_line":"                \u0027metadata\u0027: metadata,"},{"line_number":226,"context_line":"            })"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        new_snapshot \u003d self.share_api.create_snapshot("}],"source_content_type":"text/x-python","patch_set":30,"id":"53eb086f_cb421325","line":225,"range":{"start_line":225,"start_character":28,"end_line":225,"end_character":36},"updated":"2022-06-08 22:20:07.000000000","message":"nit: could be simplified with\n\u0027metadata\u0027: snapshot.get(\u0027metadata\u0027)\nconsidering that the metadata variable won\u0027t be used by anything else","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a89961890e73025709c1ac2b459f3aafe0d3df19","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        if snapshot.get(\u0027metadata\u0027):"},{"line_number":223,"context_line":"            metadata \u003d snapshot.get(\u0027metadata\u0027)"},{"line_number":224,"context_line":"            kwargs.update({"},{"line_number":225,"context_line":"                \u0027metadata\u0027: metadata,"},{"line_number":226,"context_line":"            })"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        new_snapshot \u003d self.share_api.create_snapshot("}],"source_content_type":"text/x-python","patch_set":30,"id":"8d959ab3_56d62d48","line":225,"range":{"start_line":225,"start_character":28,"end_line":225,"end_character":36},"in_reply_to":"2d811559_91a7cb01","updated":"2022-07-21 15:26:41.000000000","message":"Done","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"5e62fb875a643b466acc6267669b020225dcb922","unresolved":true,"context_lines":[{"line_number":222,"context_line":"        if snapshot.get(\u0027metadata\u0027):"},{"line_number":223,"context_line":"            metadata \u003d snapshot.get(\u0027metadata\u0027)"},{"line_number":224,"context_line":"            kwargs.update({"},{"line_number":225,"context_line":"                \u0027metadata\u0027: metadata,"},{"line_number":226,"context_line":"            })"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        new_snapshot \u003d self.share_api.create_snapshot("}],"source_content_type":"text/x-python","patch_set":30,"id":"2d811559_91a7cb01","line":225,"range":{"start_line":225,"start_character":28,"end_line":225,"end_character":36},"in_reply_to":"53eb086f_cb421325","updated":"2022-06-08 22:20:47.000000000","message":"but I think this is not a must :)","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":115,"context_line":"            search_opts[\u0027display_description\u0027] \u003d search_opts.pop("},{"line_number":116,"context_line":"                \u0027description\u0027)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        # Deserialize dicts"},{"line_number":119,"context_line":"        if \u0027metadata\u0027 in search_opts:"},{"line_number":120,"context_line":"            search_opts[\u0027metadata\u0027] \u003d ast.literal_eval("},{"line_number":121,"context_line":"                search_opts[\u0027metadata\u0027])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # like filter"},{"line_number":124,"context_line":"        for key, db_key in ((\u0027name~\u0027, \u0027display_name~\u0027),"}],"source_content_type":"text/x-python","patch_set":31,"id":"b0c9a33e_83c856ca","line":121,"range":{"start_line":118,"start_character":0,"end_line":121,"end_character":40},"updated":"2022-08-04 19:09:05.000000000","message":"This parameter must be ignored for microversion \u003c2.72","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            search_opts[\u0027display_description\u0027] \u003d search_opts.pop("},{"line_number":116,"context_line":"                \u0027description\u0027)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        # Deserialize dicts"},{"line_number":119,"context_line":"        if \u0027metadata\u0027 in search_opts:"},{"line_number":120,"context_line":"            search_opts[\u0027metadata\u0027] \u003d ast.literal_eval("},{"line_number":121,"context_line":"                search_opts[\u0027metadata\u0027])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # like filter"},{"line_number":124,"context_line":"        for key, db_key in ((\u0027name~\u0027, \u0027display_name~\u0027),"}],"source_content_type":"text/x-python","patch_set":31,"id":"1ab8d21e_0435a235","line":121,"range":{"start_line":118,"start_character":0,"end_line":121,"end_character":40},"in_reply_to":"b0c9a33e_83c856ca","updated":"2022-08-17 18:18:00.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":218,"context_line":"            snapshot[\u0027display_description\u0027] \u003d snapshot.get(\u0027description\u0027)"},{"line_number":219,"context_line":"            del snapshot[\u0027description\u0027]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        kwargs \u003d {}"},{"line_number":222,"context_line":"        if snapshot.get(\u0027metadata\u0027):"},{"line_number":223,"context_line":"            metadata \u003d snapshot.get(\u0027metadata\u0027)"},{"line_number":224,"context_line":"            kwargs.update({"},{"line_number":225,"context_line":"                \u0027metadata\u0027: metadata,"},{"line_number":226,"context_line":"            })"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        new_snapshot \u003d self.share_api.create_snapshot("},{"line_number":229,"context_line":"            context,"}],"source_content_type":"text/x-python","patch_set":31,"id":"0854e557_3e296266","line":226,"range":{"start_line":221,"start_character":0,"end_line":226,"end_character":14},"updated":"2022-08-04 19:09:05.000000000","message":"This parameter must be ignored for microversion \u003c 2.72","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            snapshot[\u0027display_description\u0027] \u003d snapshot.get(\u0027description\u0027)"},{"line_number":219,"context_line":"            del snapshot[\u0027description\u0027]"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        kwargs \u003d {}"},{"line_number":222,"context_line":"        if snapshot.get(\u0027metadata\u0027):"},{"line_number":223,"context_line":"            metadata \u003d snapshot.get(\u0027metadata\u0027)"},{"line_number":224,"context_line":"            kwargs.update({"},{"line_number":225,"context_line":"                \u0027metadata\u0027: metadata,"},{"line_number":226,"context_line":"            })"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        new_snapshot \u003d self.share_api.create_snapshot("},{"line_number":229,"context_line":"            context,"}],"source_content_type":"text/x-python","patch_set":31,"id":"e3374506_dc8965c3","line":226,"range":{"start_line":221,"start_character":0,"end_line":226,"end_character":14},"in_reply_to":"0854e557_3e296266","updated":"2022-08-17 18:18:00.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b295a5681177a0e8b631de43f4c7eb12610fc41c","unresolved":true,"context_lines":[{"line_number":117,"context_line":"                \u0027description\u0027)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # Deserialize dicts"},{"line_number":120,"context_line":"        if req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.72\"):"},{"line_number":121,"context_line":"            if \u0027metadata\u0027 in search_opts:"},{"line_number":122,"context_line":"                search_opts[\u0027metadata\u0027] \u003d ast.literal_eval("},{"line_number":123,"context_line":"                    search_opts[\u0027metadata\u0027])"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        # like filter"},{"line_number":126,"context_line":"        for key, db_key in ((\u0027name~\u0027, \u0027display_name~\u0027),"}],"source_content_type":"text/x-python","patch_set":32,"id":"afef5b79_154efab3","line":123,"range":{"start_line":120,"start_character":0,"end_line":123,"end_character":44},"updated":"2022-08-17 18:32:12.000000000","message":"We\u0027ll want to remove the metadata altogether if its specified in lower microversions:\n\n metadata \u003d search_opts.pop(\u0027metadata\u0027, None) \n\n if req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.72\"):\n   search_opts[\u0027metadata\u0027] \u003d ast.literal_eval(search_opts[\u0027metadata\u0027])","commit_id":"0022d7e5f7f00aeb2b6f7dadefd13d0b53fa352e"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"da1f02ebd9c05154dacd8b8e94d08502465380d6","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                \u0027description\u0027)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        # Deserialize dicts"},{"line_number":120,"context_line":"        if req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.72\"):"},{"line_number":121,"context_line":"            if \u0027metadata\u0027 in search_opts:"},{"line_number":122,"context_line":"                search_opts[\u0027metadata\u0027] \u003d ast.literal_eval("},{"line_number":123,"context_line":"                    search_opts[\u0027metadata\u0027])"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        # like filter"},{"line_number":126,"context_line":"        for key, db_key in ((\u0027name~\u0027, \u0027display_name~\u0027),"}],"source_content_type":"text/x-python","patch_set":32,"id":"1fe40520_35e1d0e6","line":123,"range":{"start_line":120,"start_character":0,"end_line":123,"end_character":44},"in_reply_to":"afef5b79_154efab3","updated":"2022-09-01 14:04:59.000000000","message":"Done","commit_id":"0022d7e5f7f00aeb2b6f7dadefd13d0b53fa352e"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"2d88b83678d781baa252e62abe4b39ae97fa37fd","unresolved":true,"context_lines":[{"line_number":116,"context_line":"            search_opts[\u0027display_description\u0027] \u003d search_opts.pop("},{"line_number":117,"context_line":"                \u0027description\u0027)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        search_opts.pop(\u0027metadata\u0027, None)"},{"line_number":120,"context_line":"        # Deserialize dicts"},{"line_number":121,"context_line":"        if req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.73\"):"},{"line_number":122,"context_line":"            if \u0027metadata\u0027 in search_opts:"}],"source_content_type":"text/x-python","patch_set":34,"id":"4e415b81_b638da7a","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":41},"updated":"2022-08-31 21:01:32.000000000","message":"if this is being popped here, it will never exist on line 122, so I think we may move this pop to another place?","commit_id":"3aabc77513a00385bfb22bbd7124c0cd03320e05"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"024427f6ee5c72074dd4d6d71b2d2aeebf5d51b9","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            search_opts[\u0027display_description\u0027] \u003d search_opts.pop("},{"line_number":117,"context_line":"                \u0027description\u0027)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        search_opts.pop(\u0027metadata\u0027, None)"},{"line_number":120,"context_line":"        # Deserialize dicts"},{"line_number":121,"context_line":"        if req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.73\"):"},{"line_number":122,"context_line":"            if \u0027metadata\u0027 in search_opts:"}],"source_content_type":"text/x-python","patch_set":34,"id":"736a1076_2ea017c6","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":41},"in_reply_to":"4e415b81_b638da7a","updated":"2022-09-01 14:22:27.000000000","message":"Done","commit_id":"3aabc77513a00385bfb22bbd7124c0cd03320e05"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"42c73ec198f6a258c2b3ee57c4ff4d61842380a8","unresolved":true,"context_lines":[{"line_number":119,"context_line":"        # Deserialize dicts"},{"line_number":120,"context_line":"        if req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.73\"):"},{"line_number":121,"context_line":"            if \u0027metadata\u0027 in search_opts:"},{"line_number":122,"context_line":"                search_opts[\u0027metadata\u0027] \u003d ast.literal_eval("},{"line_number":123,"context_line":"                    search_opts[\u0027metadata\u0027])"},{"line_number":124,"context_line":"        else:"},{"line_number":125,"context_line":"            search_opts.pop(\u0027metadata\u0027, None)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"cb11de95_227492be","line":123,"range":{"start_line":122,"start_character":42,"end_line":123,"end_character":44},"updated":"2022-09-07 04:52:32.000000000","message":"calling into this third party lib could raise an exception that can be hard to interpret:\n\n\n ast.literal_eval(\u0027{k:h}\u0027)\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  File \"/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ast.py\", line 105, in literal_eval\n    return _convert(node_or_string)\n  File \"/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ast.py\", line 94, in _convert\n    return dict(zip(map(_convert, node.keys),\n  File \"/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ast.py\", line 104, in _convert\n    return _convert_signed_num(node)\n  File \"/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ast.py\", line 78, in _convert_signed_num\n    return _convert_num(node)\n  File \"/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ast.py\", line 69, in _convert_num\n    _raise_malformed_node(node)\n  File \"/usr/local/Cellar/python@3.9/3.9.7/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ast.py\", line 66, in _raise_malformed_node\n    raise ValueError(f\u0027malformed node or string: {node!r}\u0027)\nValueError: malformed node or string: \u003cast.Name object at 0x1041803a0\u003e\n\n\n\nSo a ValueError here must be handled to correctly convey a message to the user in case of exceptions.","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        # Deserialize dicts"},{"line_number":120,"context_line":"        if req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.73\"):"},{"line_number":121,"context_line":"            if \u0027metadata\u0027 in search_opts:"},{"line_number":122,"context_line":"                search_opts[\u0027metadata\u0027] \u003d ast.literal_eval("},{"line_number":123,"context_line":"                    search_opts[\u0027metadata\u0027])"},{"line_number":124,"context_line":"        else:"},{"line_number":125,"context_line":"            search_opts.pop(\u0027metadata\u0027, None)"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"e6f62522_3ada7066","line":123,"range":{"start_line":122,"start_character":42,"end_line":123,"end_character":44},"in_reply_to":"cb11de95_227492be","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"}],"manila/api/v2/metadata.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _get_resource(self, context, resource_id,"},{"line_number":67,"context_line":"                      for_modification\u003dFalse, parent_id\u003dNone):"},{"line_number":68,"context_line":"        if self.resource_name in [\u0027share\u0027, \u0027share_snapshot\u0027]:"},{"line_number":69,"context_line":"            # we would allow retrieving some \"public\" resources"},{"line_number":70,"context_line":"            # across project namespaces"},{"line_number":71,"context_line":"            kwargs \u003d {}"}],"source_content_type":"text/x-python","patch_set":31,"id":"b87026ff_fb39e957","line":68,"range":{"start_line":68,"start_character":41,"end_line":68,"end_character":59},"updated":"2022-08-04 19:09:05.000000000","message":"snapshots cannot be publicly accessible; so the resource doesn\u0027t belong in this list","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _get_resource(self, context, resource_id,"},{"line_number":67,"context_line":"                      for_modification\u003dFalse, parent_id\u003dNone):"},{"line_number":68,"context_line":"        if self.resource_name in [\u0027share\u0027, \u0027share_snapshot\u0027]:"},{"line_number":69,"context_line":"            # we would allow retrieving some \"public\" resources"},{"line_number":70,"context_line":"            # across project namespaces"},{"line_number":71,"context_line":"            kwargs \u003d {}"}],"source_content_type":"text/x-python","patch_set":31,"id":"7814213f_1e584cf3","line":68,"range":{"start_line":68,"start_character":41,"end_line":68,"end_character":59},"in_reply_to":"b87026ff_fb39e957","updated":"2022-08-17 18:18:00.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"42c73ec198f6a258c2b3ee57c4ff4d61842380a8","unresolved":true,"context_lines":[{"line_number":70,"context_line":"            # across project namespaces"},{"line_number":71,"context_line":"            kwargs \u003d {}"},{"line_number":72,"context_line":"        else:"},{"line_number":73,"context_line":"            kwargs \u003d {\u0027project_only\u0027: True}"},{"line_number":74,"context_line":"        try:"},{"line_number":75,"context_line":"            get_res_method \u003d getattr("},{"line_number":76,"context_line":"                db, self.resource_get[self.resource_name])"}],"source_content_type":"text/x-python","patch_set":39,"id":"5886c46c_8894d989","line":73,"range":{"start_line":73,"start_character":12,"end_line":73,"end_character":43},"updated":"2022-09-07 04:52:32.000000000","message":"The DB API needs to accept this new input... setting project_only to True is currently hard-coded in the implementation but the extra kwarg you\u0027re sending isn\u0027t in the method\u0027s signature: https://github.com/openstack/manila/blob/6b7bc9f37bde3a88b75aa47153487591cdd537fd/manila/db/sqlalchemy/api.py#L3012","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            # across project namespaces"},{"line_number":71,"context_line":"            kwargs \u003d {}"},{"line_number":72,"context_line":"        else:"},{"line_number":73,"context_line":"            kwargs \u003d {\u0027project_only\u0027: True}"},{"line_number":74,"context_line":"        try:"},{"line_number":75,"context_line":"            get_res_method \u003d getattr("},{"line_number":76,"context_line":"                db, self.resource_get[self.resource_name])"}],"source_content_type":"text/x-python","patch_set":39,"id":"9005b929_17f242cb","line":73,"range":{"start_line":73,"start_character":12,"end_line":73,"end_character":43},"in_reply_to":"5886c46c_8894d989","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"}],"manila/api/v2/share_snapshots.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"4e78c925049384fe0ce753c94e0f7a6f5bc92799","unresolved":true,"context_lines":[{"line_number":360,"context_line":"    @wsgi.Controller.api_version(\"2.72\")"},{"line_number":361,"context_line":"    @wsgi.Controller.authorize(\"update_metadata\")"},{"line_number":362,"context_line":"    def update_metadata_item(self, req, resource_id, body):"},{"line_number":363,"context_line":"        return self.update_metadata_item(req, resource_id, body)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    @wsgi.Controller.api_version(\"2.72\")"},{"line_number":366,"context_line":"    @wsgi.Controller.authorize(\"get_metadata\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a987e4a_3de585c6","line":363,"range":{"start_line":363,"start_character":15,"end_line":363,"end_character":40},"updated":"2022-08-03 09:35:17.000000000","message":"should be:\nself._update_metadata_item(....\n\nbut will got error: \nERROR manila.api.middleware.fault   File \"/opt/stack/manila/manila/api/v2/metadata.py\", line 160, in _update_metadata_item\nERROR manila.api.middleware.fault     update_metadata_item_method \u003d getattr(\nERROR manila.api.middleware.fault AttributeError: module \u0027manila.db\u0027 has no attribute \u0027share_snapshot_metadata_update_item\u0027\n\nso we need to add this method in db api.","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"126d949d223188bfaa28a2ad50a44cf7d130641e","unresolved":true,"context_lines":[{"line_number":360,"context_line":"    @wsgi.Controller.api_version(\"2.72\")"},{"line_number":361,"context_line":"    @wsgi.Controller.authorize(\"update_metadata\")"},{"line_number":362,"context_line":"    def update_metadata_item(self, req, resource_id, body):"},{"line_number":363,"context_line":"        return self.update_metadata_item(req, resource_id, body)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    @wsgi.Controller.api_version(\"2.72\")"},{"line_number":366,"context_line":"    @wsgi.Controller.authorize(\"get_metadata\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"c95706b5_770dd666","line":363,"range":{"start_line":363,"start_character":15,"end_line":363,"end_character":40},"in_reply_to":"1747afbf_25f44e85","updated":"2022-08-03 15:29:26.000000000","message":"miss _ \ndef update_metadata_item(self, req, resource_id, body, key):\n    self._update_metadata_item(req, resource_id, body, key)","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"a9d50075e8d8286ecf36d821d2fc7f9b816cd0f7","unresolved":true,"context_lines":[{"line_number":360,"context_line":"    @wsgi.Controller.api_version(\"2.72\")"},{"line_number":361,"context_line":"    @wsgi.Controller.authorize(\"update_metadata\")"},{"line_number":362,"context_line":"    def update_metadata_item(self, req, resource_id, body):"},{"line_number":363,"context_line":"        return self.update_metadata_item(req, resource_id, body)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    @wsgi.Controller.api_version(\"2.72\")"},{"line_number":366,"context_line":"    @wsgi.Controller.authorize(\"get_metadata\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"1747afbf_25f44e85","line":363,"range":{"start_line":363,"start_character":15,"end_line":363,"end_character":40},"in_reply_to":"7a987e4a_3de585c6","updated":"2022-08-03 15:27:55.000000000","message":"def update_metadata_item(self, req, resource_id, body, key):\n        return self.update_metadata_item(req, resource_id, body, key)","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"422581b3b33a56fd3ad5b96dc8d68144f072eee9","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    @wsgi.Controller.api_version(\"2.72\")"},{"line_number":361,"context_line":"    @wsgi.Controller.authorize(\"update_metadata\")"},{"line_number":362,"context_line":"    def update_metadata_item(self, req, resource_id, body):"},{"line_number":363,"context_line":"        return self.update_metadata_item(req, resource_id, body)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"    @wsgi.Controller.api_version(\"2.72\")"},{"line_number":366,"context_line":"    @wsgi.Controller.authorize(\"get_metadata\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"54873b4c_93ed7bcd","line":363,"range":{"start_line":363,"start_character":15,"end_line":363,"end_character":40},"in_reply_to":"c95706b5_770dd666","updated":"2022-08-03 19:47:44.000000000","message":"Done","commit_id":"331330bf1a4c4ec3e67ea5c6372d25e15d0d8367"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":119,"context_line":"            \u0027display_description\u0027, snapshot_data.get(\u0027description\u0027))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        share_id \u003d snapshot_data[\u0027share_id\u0027]"},{"line_number":122,"context_line":"        snapshot \u003d {"},{"line_number":123,"context_line":"            \u0027share_id\u0027: share_id,"},{"line_number":124,"context_line":"            \u0027provider_location\u0027: snapshot_data[\u0027provider_location\u0027],"},{"line_number":125,"context_line":"            \u0027display_name\u0027: name,"},{"line_number":126,"context_line":"            \u0027display_description\u0027: description,"},{"line_number":127,"context_line":"        }"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        try:"},{"line_number":130,"context_line":"            share_ref \u003d self.share_api.get(context, share_id)"},{"line_number":131,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":31,"id":"93a89524_b38fc672","line":128,"range":{"start_line":122,"start_character":8,"end_line":128,"end_character":0},"updated":"2022-08-04 19:09:05.000000000","message":"metadata can be added with this API as well","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            \u0027display_description\u0027, snapshot_data.get(\u0027description\u0027))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        share_id \u003d snapshot_data[\u0027share_id\u0027]"},{"line_number":122,"context_line":"        snapshot \u003d {"},{"line_number":123,"context_line":"            \u0027share_id\u0027: share_id,"},{"line_number":124,"context_line":"            \u0027provider_location\u0027: snapshot_data[\u0027provider_location\u0027],"},{"line_number":125,"context_line":"            \u0027display_name\u0027: name,"},{"line_number":126,"context_line":"            \u0027display_description\u0027: description,"},{"line_number":127,"context_line":"        }"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        try:"},{"line_number":130,"context_line":"            share_ref \u003d self.share_api.get(context, share_id)"},{"line_number":131,"context_line":"        except exception.NotFound:"}],"source_content_type":"text/x-python","patch_set":31,"id":"af7178d1_9c1a5889","line":128,"range":{"start_line":122,"start_character":8,"end_line":128,"end_character":0},"in_reply_to":"93a89524_b38fc672","updated":"2022-08-17 18:18:00.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"}],"manila/api/views/share_snapshots.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2ebacfd39d671fbe315ffe8c808863350c836ca3","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        snapshot_dict[\u0027user_id\u0027] \u003d snapshot.get(\u0027user_id\u0027)"},{"line_number":76,"context_line":"        snapshot_dict[\u0027project_id\u0027] \u003d snapshot.get(\u0027project_id\u0027)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @common.ViewBuilder.versioned_method(\"2.68\")"},{"line_number":79,"context_line":"    def add_metadata(self, context, snapshot_dict, snapshot):"},{"line_number":80,"context_line":"        metadata \u003d snapshot.get(\u0027share_snapshot_metadata\u0027)"},{"line_number":81,"context_line":"        if metadata:"}],"source_content_type":"text/x-python","patch_set":17,"id":"8f7e94ca_c5301b97","line":78,"range":{"start_line":78,"start_character":42,"end_line":78,"end_character":46},"updated":"2022-03-04 03:47:32.000000000","message":"2.70","commit_id":"dd7a9f133980fc3426c80cc971a19d8284826591"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"c8f01da6ab45cae0fafdf0f0f240c6b6fc9d38b3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        snapshot_dict[\u0027user_id\u0027] \u003d snapshot.get(\u0027user_id\u0027)"},{"line_number":76,"context_line":"        snapshot_dict[\u0027project_id\u0027] \u003d snapshot.get(\u0027project_id\u0027)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @common.ViewBuilder.versioned_method(\"2.68\")"},{"line_number":79,"context_line":"    def add_metadata(self, context, snapshot_dict, snapshot):"},{"line_number":80,"context_line":"        metadata \u003d snapshot.get(\u0027share_snapshot_metadata\u0027)"},{"line_number":81,"context_line":"        if metadata:"}],"source_content_type":"text/x-python","patch_set":17,"id":"ad168994_e47de7f9","line":78,"range":{"start_line":78,"start_character":42,"end_line":78,"end_character":46},"in_reply_to":"8f7e94ca_c5301b97","updated":"2022-03-04 18:11:54.000000000","message":"Done","commit_id":"dd7a9f133980fc3426c80cc971a19d8284826591"}],"manila/db/migrations/alembic/versions/bb5938d74b73_add_snapshot_metadata_table.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":37,"context_line":"            share_snapshot_metadata_table_name,"},{"line_number":38,"context_line":"            sql.Column(\u0027deleted\u0027, sql.String(36), default\u003d\u0027False\u0027,"},{"line_number":39,"context_line":"                       nullable\u003dFalse),"},{"line_number":40,"context_line":"            sql.Column(\u0027created_at\u0027, sql.DateTime(timezone\u003dFalse)),"},{"line_number":41,"context_line":"            sql.Column(\u0027updated_at\u0027, sql.DateTime(timezone\u003dFalse)),"},{"line_number":42,"context_line":"            sql.Column(\u0027deleted_at\u0027, sql.DateTime(timezone\u003dFalse)),"},{"line_number":43,"context_line":"            sql.Column(\u0027share_snapshot_id\u0027, sql.String(36),"},{"line_number":44,"context_line":"                       sql.ForeignKey(\u0027share_snapshots.id\u0027), nullable\u003dFalse),"},{"line_number":45,"context_line":"            sql.Column(\u0027key\u0027, sql.String(255), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":31,"id":"3777f4e2_76d4e4aa","line":42,"range":{"start_line":40,"start_character":0,"end_line":42,"end_character":67},"updated":"2022-08-04 19:09:05.000000000","message":"you\u0027ll need to set the precision in case of mysql; see example here: https://github.com/openstack/manila/blob/2bc27c5678945d92ffd6b885eeaf6f86c9f16f8c/manila/db/migrations/alembic/versions/478c445d8d3e_add_security_service_update_control_fields.py#L39-L40","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            share_snapshot_metadata_table_name,"},{"line_number":38,"context_line":"            sql.Column(\u0027deleted\u0027, sql.String(36), default\u003d\u0027False\u0027,"},{"line_number":39,"context_line":"                       nullable\u003dFalse),"},{"line_number":40,"context_line":"            sql.Column(\u0027created_at\u0027, sql.DateTime(timezone\u003dFalse)),"},{"line_number":41,"context_line":"            sql.Column(\u0027updated_at\u0027, sql.DateTime(timezone\u003dFalse)),"},{"line_number":42,"context_line":"            sql.Column(\u0027deleted_at\u0027, sql.DateTime(timezone\u003dFalse)),"},{"line_number":43,"context_line":"            sql.Column(\u0027share_snapshot_id\u0027, sql.String(36),"},{"line_number":44,"context_line":"                       sql.ForeignKey(\u0027share_snapshots.id\u0027), nullable\u003dFalse),"},{"line_number":45,"context_line":"            sql.Column(\u0027key\u0027, sql.String(255), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":31,"id":"5550eaf4_edbcfe22","line":42,"range":{"start_line":40,"start_character":0,"end_line":42,"end_character":67},"in_reply_to":"3777f4e2_76d4e4aa","updated":"2022-08-17 18:18:00.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"b7e58bd3c03633118dd860c533e1dfa49574c2ee","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        op.create_table("},{"line_number":41,"context_line":"            share_snapshot_metadata_table_name,"},{"line_number":42,"context_line":"            sql.Column(\u0027deleted\u0027, sql.String(36), default\u003d\u0027False\u0027,"},{"line_number":43,"context_line":"                       nullable\u003dFalse),"},{"line_number":44,"context_line":"            sql.Column(\u0027created_at\u0027, datetime_type),"},{"line_number":45,"context_line":"            sql.Column(\u0027updated_at\u0027, datetime_type),"},{"line_number":46,"context_line":"            sql.Column(\u0027deleted_at\u0027, datetime_type),"}],"source_content_type":"text/x-python","patch_set":38,"id":"f453a3f4_b9b94c4a","line":43,"range":{"start_line":43,"start_character":22,"end_line":43,"end_character":37},"updated":"2022-09-02 19:23:47.000000000","message":"is there a specific reason for it to be nullable? I was looking through other occurrences and apparently all other table creations do not make this be nullable...","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"8afbeeddced310684d6d8257211fed3af7b41d53","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        op.create_table("},{"line_number":41,"context_line":"            share_snapshot_metadata_table_name,"},{"line_number":42,"context_line":"            sql.Column(\u0027deleted\u0027, sql.String(36), default\u003d\u0027False\u0027,"},{"line_number":43,"context_line":"                       nullable\u003dFalse),"},{"line_number":44,"context_line":"            sql.Column(\u0027created_at\u0027, datetime_type),"},{"line_number":45,"context_line":"            sql.Column(\u0027updated_at\u0027, datetime_type),"},{"line_number":46,"context_line":"            sql.Column(\u0027deleted_at\u0027, datetime_type),"}],"source_content_type":"text/x-python","patch_set":38,"id":"5801bc28_deaa6dbe","line":43,"range":{"start_line":43,"start_character":22,"end_line":43,"end_character":37},"in_reply_to":"f453a3f4_b9b94c4a","updated":"2022-09-06 14:36:49.000000000","message":"Done","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"62bfc41dbe4096e0deee8c242a5d726687672eec","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        op.create_table("},{"line_number":41,"context_line":"            share_snapshot_metadata_table_name,"},{"line_number":42,"context_line":"            sql.Column(\u0027deleted\u0027, sql.String(36), default\u003d\u0027False\u0027,"},{"line_number":43,"context_line":"                       nullable\u003dFalse),"},{"line_number":44,"context_line":"            sql.Column(\u0027created_at\u0027, datetime_type),"},{"line_number":45,"context_line":"            sql.Column(\u0027updated_at\u0027, datetime_type),"},{"line_number":46,"context_line":"            sql.Column(\u0027deleted_at\u0027, datetime_type),"}],"source_content_type":"text/x-python","patch_set":38,"id":"f7f91cc8_da5815ba","line":43,"range":{"start_line":43,"start_character":22,"end_line":43,"end_character":37},"in_reply_to":"f453a3f4_b9b94c4a","updated":"2022-09-06 18:45:14.000000000","message":"Done","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6fb49b90aa0b92c2017b3a3bb6d14cf17168b9de","unresolved":true,"context_lines":[{"line_number":13,"context_line":"\"\"\"add_snapshot_metadata_table"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Revision ID: bb5938d74b73"},{"line_number":16,"context_line":"Revises: 1e2d600bf972"},{"line_number":17,"context_line":"Create Date: 2022-01-14 14:36:59.408638"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":42,"id":"e68b4aa8_957fd68a","line":16,"range":{"start_line":16,"start_character":9,"end_line":16,"end_character":21},"updated":"2022-09-08 20:41:36.000000000","message":"a87e0fb17dee","commit_id":"f82181860f1225dece31c264ed3fa6517d43c491"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"fdccc688020dea135888a6226a4a90132fffa1c1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"\"\"\"add_snapshot_metadata_table"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Revision ID: bb5938d74b73"},{"line_number":16,"context_line":"Revises: 1e2d600bf972"},{"line_number":17,"context_line":"Create Date: 2022-01-14 14:36:59.408638"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":42,"id":"f49a8108_dcc0324c","line":16,"range":{"start_line":16,"start_character":9,"end_line":16,"end_character":21},"in_reply_to":"e68b4aa8_957fd68a","updated":"2022-09-09 14:12:18.000000000","message":"Done","commit_id":"f82181860f1225dece31c264ed3fa6517d43c491"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"6fb49b90aa0b92c2017b3a3bb6d14cf17168b9de","unresolved":true,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# revision identifiers, used by Alembic."},{"line_number":22,"context_line":"revision \u003d \u0027bb5938d74b73\u0027"},{"line_number":23,"context_line":"down_revision \u003d \u00271e2d600bf972\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from alembic import op"},{"line_number":26,"context_line":"from oslo_log import log"}],"source_content_type":"text/x-python","patch_set":42,"id":"921a6d18_31e911ce","line":23,"range":{"start_line":23,"start_character":17,"end_line":23,"end_character":29},"updated":"2022-09-08 20:41:36.000000000","message":"a87e0fb17dee","commit_id":"f82181860f1225dece31c264ed3fa6517d43c491"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"fdccc688020dea135888a6226a4a90132fffa1c1","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# revision identifiers, used by Alembic."},{"line_number":22,"context_line":"revision \u003d \u0027bb5938d74b73\u0027"},{"line_number":23,"context_line":"down_revision \u003d \u00271e2d600bf972\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from alembic import op"},{"line_number":26,"context_line":"from oslo_log import log"}],"source_content_type":"text/x-python","patch_set":42,"id":"47df5e52_98ed2135","line":23,"range":{"start_line":23,"start_character":17,"end_line":23,"end_character":29},"in_reply_to":"921a6d18_31e911ce","updated":"2022-09-09 14:12:18.000000000","message":"Done","commit_id":"f82181860f1225dece31c264ed3fa6517d43c491"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2ebacfd39d671fbe315ffe8c808863350c836ca3","unresolved":true,"context_lines":[{"line_number":2981,"context_line":"    snapshot_ref.update(snapshot_values)"},{"line_number":2982,"context_line":"    session \u003d get_session()"},{"line_number":2983,"context_line":"    with session.begin():"},{"line_number":2984,"context_line":"        snapshot_ref.save(session\u003dsession)"},{"line_number":2985,"context_line":""},{"line_number":2986,"context_line":"        if create_snapshot_instance:"},{"line_number":2987,"context_line":"            share_snapshot_instance_create("}],"source_content_type":"text/x-python","patch_set":17,"id":"a1205fa3_d119c4f5","line":2984,"range":{"start_line":2984,"start_character":8,"end_line":2984,"end_character":42},"updated":"2022-03-04 03:47:32.000000000","message":"Not sure if you can save share_snapshot_metadata directly? Instead of calling share_snapshot_metadata_update.  because the share_snapshot_metadata property is not defined in the models.ShareSnapshot class.","commit_id":"dd7a9f133980fc3426c80cc971a19d8284826591"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"c8f01da6ab45cae0fafdf0f0f240c6b6fc9d38b3","unresolved":true,"context_lines":[{"line_number":2981,"context_line":"    snapshot_ref.update(snapshot_values)"},{"line_number":2982,"context_line":"    session \u003d get_session()"},{"line_number":2983,"context_line":"    with session.begin():"},{"line_number":2984,"context_line":"        snapshot_ref.save(session\u003dsession)"},{"line_number":2985,"context_line":""},{"line_number":2986,"context_line":"        if create_snapshot_instance:"},{"line_number":2987,"context_line":"            share_snapshot_instance_create("}],"source_content_type":"text/x-python","patch_set":17,"id":"7a2831a2_6c091634","line":2984,"range":{"start_line":2984,"start_character":8,"end_line":2984,"end_character":42},"in_reply_to":"a1205fa3_d119c4f5","updated":"2022-03-04 18:11:54.000000000","message":"I\u0027m not well versed in databases and how tables relate to each other but I assumed that with this line from models: \n\nshare_snapshot \u003d orm.relationship(\n        ShareSnapshot, backref\u003d\"share_snapshot_metadata\",\n        foreign_keys\u003dshare_snapshot_id,\n        primaryjoin\u003d\u0027and_(\u0027\n        \u0027ShareSnapshotMetadata.share_snapshot_id \u003d\u003d ShareSnapshot.id,\u0027\n        \u0027ShareSnapshotMetadata.deleted \u003d\u003d \"False\")\u0027)\n\nin combiantion with:\n\nvalues[\u0027share_snapshot_metadata\u0027] \u003d _metadata_refs(\n        values.get(\u0027metadata\u0027), models.ShareSnapshotMetadata) \n\nabove, it would allow the metadata to be saved in this function. In any case, when I\u0027ve created a snapshot with metadata using the command \"openstack share snapshot create test_share --properties foo\u003dbar\" (using my associated python-manilaclient patch), it does work.","commit_id":"dd7a9f133980fc3426c80cc971a19d8284826591"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"2ebacfd39d671fbe315ffe8c808863350c836ca3","unresolved":true,"context_lines":[{"line_number":3094,"context_line":"        for k, v in filters[\u0027metadata\u0027].items():"},{"line_number":3095,"context_line":"            # pylint: disable\u003dno-member"},{"line_number":3096,"context_line":"            query \u003d query.filter("},{"line_number":3097,"context_line":"                or_(models.ShareSnapshot.share_snapshot_metadata.any("},{"line_number":3098,"context_line":"                    key\u003dk, value\u003dv)))"},{"line_number":3099,"context_line":"        filters.pop(\u0027metadata\u0027)"},{"line_number":3100,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"01e19faf_9b7a14c8","line":3097,"range":{"start_line":3097,"start_character":20,"end_line":3097,"end_character":64},"updated":"2022-03-04 03:47:32.000000000","message":"I\u0027m not sure if this is correct because the share_snapshot_metadata property is not defined in the models.ShareSnapshot class.","commit_id":"dd7a9f133980fc3426c80cc971a19d8284826591"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"11c33ae4d9fd2808ee55d96cf5a67d3ff07b46b6","unresolved":true,"context_lines":[{"line_number":3094,"context_line":"        for k, v in filters[\u0027metadata\u0027].items():"},{"line_number":3095,"context_line":"            # pylint: disable\u003dno-member"},{"line_number":3096,"context_line":"            query \u003d query.filter("},{"line_number":3097,"context_line":"                or_(models.ShareSnapshot.share_snapshot_metadata.any("},{"line_number":3098,"context_line":"                    key\u003dk, value\u003dv)))"},{"line_number":3099,"context_line":"        filters.pop(\u0027metadata\u0027)"},{"line_number":3100,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7b691a7c_f0cee0fb","line":3097,"range":{"start_line":3097,"start_character":20,"end_line":3097,"end_character":64},"in_reply_to":"01e19faf_9b7a14c8","updated":"2022-08-02 19:57:18.000000000","message":"It indeed seems odd, but apparently works out just fine for shares: https://review.opendev.org/c/openstack/manila/+/825008/30/manila/db/sqlalchemy/api.py#2088\nNo attribute nor property are defined in that case, we only have a backref in the share metadata database class.","commit_id":"dd7a9f133980fc3426c80cc971a19d8284826591"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"624c6966cf3316d257e1de09140fc05e0386b76d","unresolved":false,"context_lines":[{"line_number":3094,"context_line":"        for k, v in filters[\u0027metadata\u0027].items():"},{"line_number":3095,"context_line":"            # pylint: disable\u003dno-member"},{"line_number":3096,"context_line":"            query \u003d query.filter("},{"line_number":3097,"context_line":"                or_(models.ShareSnapshot.share_snapshot_metadata.any("},{"line_number":3098,"context_line":"                    key\u003dk, value\u003dv)))"},{"line_number":3099,"context_line":"        filters.pop(\u0027metadata\u0027)"},{"line_number":3100,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"666f03fb_3edaba8a","line":3097,"range":{"start_line":3097,"start_character":20,"end_line":3097,"end_character":64},"in_reply_to":"7b691a7c_f0cee0fb","updated":"2022-08-02 19:58:07.000000000","message":"Done","commit_id":"dd7a9f133980fc3426c80cc971a19d8284826591"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":3100,"context_line":"        for k, v in filters[\u0027metadata\u0027].items():"},{"line_number":3101,"context_line":"            # pylint: disable\u003dno-member"},{"line_number":3102,"context_line":"            query \u003d query.filter("},{"line_number":3103,"context_line":"                or_(models.ShareSnapshot.share_snapshot_metadata.any("},{"line_number":3104,"context_line":"                    key\u003dk, value\u003dv)))"},{"line_number":3105,"context_line":"        filters.pop(\u0027metadata\u0027)"},{"line_number":3106,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"04e3581a_1cbc8575","line":3103,"range":{"start_line":3103,"start_character":16,"end_line":3103,"end_character":19},"updated":"2022-08-04 19:09:05.000000000","message":"shouldn\u0027t this be an \"and_\" rather?","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":false,"context_lines":[{"line_number":3100,"context_line":"        for k, v in filters[\u0027metadata\u0027].items():"},{"line_number":3101,"context_line":"            # pylint: disable\u003dno-member"},{"line_number":3102,"context_line":"            query \u003d query.filter("},{"line_number":3103,"context_line":"                or_(models.ShareSnapshot.share_snapshot_metadata.any("},{"line_number":3104,"context_line":"                    key\u003dk, value\u003dv)))"},{"line_number":3105,"context_line":"        filters.pop(\u0027metadata\u0027)"},{"line_number":3106,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"b9d3d333_6b409d0e","line":3103,"range":{"start_line":3103,"start_character":16,"end_line":3103,"end_character":19},"in_reply_to":"04e3581a_1cbc8575","updated":"2022-08-17 18:18:00.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":3663,"context_line":"#################################"},{"line_number":3664,"context_line":""},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":"@require_context"},{"line_number":3667,"context_line":"@require_share_exists"},{"line_number":3668,"context_line":"def share_metadata_get(context, share_id):"},{"line_number":3669,"context_line":"    session \u003d get_session()"},{"line_number":3670,"context_line":"    return _share_metadata_get(context, share_id, session\u003dsession)"},{"line_number":3671,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"e1f541d0_31ad964c","line":3668,"range":{"start_line":3666,"start_character":1,"end_line":3668,"end_character":42},"updated":"2022-08-04 19:09:05.000000000","message":"what\u0027s the reason for the changes in the share metadata methods in this patch?","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":3663,"context_line":"#################################"},{"line_number":3664,"context_line":""},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":"@require_context"},{"line_number":3667,"context_line":"@require_share_exists"},{"line_number":3668,"context_line":"def share_metadata_get(context, share_id):"},{"line_number":3669,"context_line":"    session \u003d get_session()"},{"line_number":3670,"context_line":"    return _share_metadata_get(context, share_id, session\u003dsession)"},{"line_number":3671,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"548152c5_f979f80b","line":3668,"range":{"start_line":3666,"start_character":1,"end_line":3668,"end_character":42},"in_reply_to":"2e95c410_c4025ff4","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":true,"context_lines":[{"line_number":3663,"context_line":"#################################"},{"line_number":3664,"context_line":""},{"line_number":3665,"context_line":""},{"line_number":3666,"context_line":"@require_context"},{"line_number":3667,"context_line":"@require_share_exists"},{"line_number":3668,"context_line":"def share_metadata_get(context, share_id):"},{"line_number":3669,"context_line":"    session \u003d get_session()"},{"line_number":3670,"context_line":"    return _share_metadata_get(context, share_id, session\u003dsession)"},{"line_number":3671,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"2e95c410_c4025ff4","line":3668,"range":{"start_line":3666,"start_character":1,"end_line":3668,"end_character":42},"in_reply_to":"e1f541d0_31ad964c","updated":"2022-08-17 18:18:00.000000000","message":"I will admit that my understanding of when to use get_session() or provide one is nebulus at best. I figured any \"top level\" method (these are being called directly in the metadata controller) needed a session. The session or get_session was more to cover my bases than anything, but I figured if its passing unit and funciotnal tests then I must be doing something right. If my use and understanding is wrong, can you shed some more light on this? \n\nUnless you meant that this refactoring/correction are better in a separate patch? I can do that too.","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":3688,"context_line":""},{"line_number":3689,"context_line":"@require_context"},{"line_number":3690,"context_line":"@require_share_exists"},{"line_number":3691,"context_line":"def share_metadata_delete(context, share_id, key, session\u003dNone):"},{"line_number":3692,"context_line":"    session \u003d get_session()"},{"line_number":3693,"context_line":"    meta_ref \u003d _share_metadata_get_item(context, share_id, key,"},{"line_number":3694,"context_line":"                                        session\u003dsession)"},{"line_number":3695,"context_line":"    meta_ref.soft_delete(session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":31,"id":"6ab5e096_aa7fc47b","line":3692,"range":{"start_line":3691,"start_character":50,"end_line":3692,"end_character":27},"updated":"2022-08-04 19:09:05.000000000","message":"you\u0027re accepting a session, but also creating a new one?","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":true,"context_lines":[{"line_number":3688,"context_line":""},{"line_number":3689,"context_line":"@require_context"},{"line_number":3690,"context_line":"@require_share_exists"},{"line_number":3691,"context_line":"def share_metadata_delete(context, share_id, key, session\u003dNone):"},{"line_number":3692,"context_line":"    session \u003d get_session()"},{"line_number":3693,"context_line":"    meta_ref \u003d _share_metadata_get_item(context, share_id, key,"},{"line_number":3694,"context_line":"                                        session\u003dsession)"},{"line_number":3695,"context_line":"    meta_ref.soft_delete(session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":31,"id":"abc9e358_0de73696","line":3692,"range":{"start_line":3691,"start_character":50,"end_line":3692,"end_character":27},"in_reply_to":"6ab5e096_aa7fc47b","updated":"2022-08-17 18:18:00.000000000","message":"my mistake, session\u003dNone shouldnt be there.","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":3688,"context_line":""},{"line_number":3689,"context_line":"@require_context"},{"line_number":3690,"context_line":"@require_share_exists"},{"line_number":3691,"context_line":"def share_metadata_delete(context, share_id, key, session\u003dNone):"},{"line_number":3692,"context_line":"    session \u003d get_session()"},{"line_number":3693,"context_line":"    meta_ref \u003d _share_metadata_get_item(context, share_id, key,"},{"line_number":3694,"context_line":"                                        session\u003dsession)"},{"line_number":3695,"context_line":"    meta_ref.soft_delete(session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":31,"id":"91f00e61_913952a1","line":3692,"range":{"start_line":3691,"start_character":50,"end_line":3692,"end_character":27},"in_reply_to":"abc9e358_0de73696","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"42c73ec198f6a258c2b3ee57c4ff4d61842380a8","unresolved":true,"context_lines":[{"line_number":2973,"context_line":"    values \u003d copy.deepcopy(create_values)"},{"line_number":2974,"context_line":"    values \u003d ensure_model_dict_has_id(values)"},{"line_number":2975,"context_line":"    values[\u0027share_snapshot_metadata\u0027] \u003d _metadata_refs("},{"line_number":2976,"context_line":"        values.get(\u0027metadata\u0027), models.ShareSnapshotMetadata)"},{"line_number":2977,"context_line":""},{"line_number":2978,"context_line":"    snapshot_ref \u003d models.ShareSnapshot()"},{"line_number":2979,"context_line":"    snapshot_instance_values, snapshot_values \u003d ("}],"source_content_type":"text/x-python","patch_set":39,"id":"ae330f1d_b11904ee","line":2976,"range":{"start_line":2976,"start_character":8,"end_line":2976,"end_character":30},"updated":"2022-09-07 04:52:32.000000000","message":"values.pop(\u0027metadata\u0027, {}) would give you the metadata from the values if it exists, and remove it from the object as it is used further below.. \n\nalthough sqlalchemy ignores the \"unknown\" key when saving a record into the database with the help of a model.","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":2973,"context_line":"    values \u003d copy.deepcopy(create_values)"},{"line_number":2974,"context_line":"    values \u003d ensure_model_dict_has_id(values)"},{"line_number":2975,"context_line":"    values[\u0027share_snapshot_metadata\u0027] \u003d _metadata_refs("},{"line_number":2976,"context_line":"        values.get(\u0027metadata\u0027), models.ShareSnapshotMetadata)"},{"line_number":2977,"context_line":""},{"line_number":2978,"context_line":"    snapshot_ref \u003d models.ShareSnapshot()"},{"line_number":2979,"context_line":"    snapshot_instance_values, snapshot_values \u003d ("}],"source_content_type":"text/x-python","patch_set":39,"id":"1e3911b7_c5e775b2","line":2976,"range":{"start_line":2976,"start_character":8,"end_line":2976,"end_character":30},"in_reply_to":"ae330f1d_b11904ee","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"80d02b9bd88e14036398335c9beac4fce8036c47","unresolved":true,"context_lines":[{"line_number":3100,"context_line":"        for k, v in filters[\u0027metadata\u0027].items():"},{"line_number":3101,"context_line":"            # pylint: disable\u003dno-member"},{"line_number":3102,"context_line":"            query \u003d query.filter("},{"line_number":3103,"context_line":"                or_(models.ShareSnapshot.share_snapshot_metadata.any("},{"line_number":3104,"context_line":"                    key\u003dk, value\u003dv)))"},{"line_number":3105,"context_line":"        filters.pop(\u0027metadata\u0027)"},{"line_number":3106,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"dcfb92c2_8907f10f","line":3103,"range":{"start_line":3103,"start_character":16,"end_line":3103,"end_character":19},"updated":"2022-09-07 04:56:06.000000000","message":"https://review.opendev.org/c/openstack/manila/+/825008/comments/04e3581a_1cbc8575","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"882b9dbf3127fbdcdc408b9dfd491e67ccab7c5a","unresolved":true,"context_lines":[{"line_number":3100,"context_line":"        for k, v in filters[\u0027metadata\u0027].items():"},{"line_number":3101,"context_line":"            # pylint: disable\u003dno-member"},{"line_number":3102,"context_line":"            query \u003d query.filter("},{"line_number":3103,"context_line":"                or_(models.ShareSnapshot.share_snapshot_metadata.any("},{"line_number":3104,"context_line":"                    key\u003dk, value\u003dv)))"},{"line_number":3105,"context_line":"        filters.pop(\u0027metadata\u0027)"},{"line_number":3106,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"16102fd1_ceb6759d","line":3103,"range":{"start_line":3103,"start_character":16,"end_line":3103,"end_character":19},"in_reply_to":"dcfb92c2_8907f10f","updated":"2022-09-09 22:12:33.000000000","message":"my bad; this works fine","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"62bfc41dbe4096e0deee8c242a5d726687672eec","unresolved":true,"context_lines":[{"line_number":3292,"context_line":"                        session\u003dsession)"},{"line_number":3293,"context_line":"                    meta_ref.soft_delete(session\u003dsession)"},{"line_number":3294,"context_line":"        meta_ref \u003d None"},{"line_number":3295,"context_line":"        # LOG.warning(\"dict for _update: %s\", dict(metadata))"},{"line_number":3296,"context_line":"        # Now update all existing items with new values, or create new meta"},{"line_number":3297,"context_line":"        # objects"},{"line_number":3298,"context_line":"        for meta_key, meta_value in metadata.items():"}],"source_content_type":"text/x-python","patch_set":39,"id":"be698189_ce88c720","line":3295,"range":{"start_line":3295,"start_character":8,"end_line":3295,"end_character":61},"updated":"2022-09-06 18:45:14.000000000","message":"is this a debug only thing? :)","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":3292,"context_line":"                        session\u003dsession)"},{"line_number":3293,"context_line":"                    meta_ref.soft_delete(session\u003dsession)"},{"line_number":3294,"context_line":"        meta_ref \u003d None"},{"line_number":3295,"context_line":"        # LOG.warning(\"dict for _update: %s\", dict(metadata))"},{"line_number":3296,"context_line":"        # Now update all existing items with new values, or create new meta"},{"line_number":3297,"context_line":"        # objects"},{"line_number":3298,"context_line":"        for meta_key, meta_value in metadata.items():"}],"source_content_type":"text/x-python","patch_set":39,"id":"3005fee9_afd2918d","line":3295,"range":{"start_line":3295,"start_character":8,"end_line":3295,"end_character":61},"in_reply_to":"be698189_ce88c720","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"}],"manila/share/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":1421,"context_line":"    def create_snapshot(self, context, share, name, description,"},{"line_number":1422,"context_line":"                        force\u003dFalse, metadata\u003dNone):"},{"line_number":1423,"context_line":"        policy.check_policy(context, \u0027share\u0027, \u0027create_snapshot\u0027, share)"},{"line_number":1424,"context_line":"        if metadata:"},{"line_number":1425,"context_line":"            api_common._check_metadata_properties(metadata)"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"        if ((not force) and (share[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE)):"},{"line_number":1428,"context_line":"            msg \u003d _(\"Source share status must be \""}],"source_content_type":"text/x-python","patch_set":31,"id":"8e1f34d9_13b6843f","line":1425,"range":{"start_line":1424,"start_character":0,"end_line":1425,"end_character":59},"updated":"2022-08-04 19:09:05.000000000","message":"This should only be allowed with microversion 2.72 and beyond","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":false,"context_lines":[{"line_number":1421,"context_line":"    def create_snapshot(self, context, share, name, description,"},{"line_number":1422,"context_line":"                        force\u003dFalse, metadata\u003dNone):"},{"line_number":1423,"context_line":"        policy.check_policy(context, \u0027share\u0027, \u0027create_snapshot\u0027, share)"},{"line_number":1424,"context_line":"        if metadata:"},{"line_number":1425,"context_line":"            api_common._check_metadata_properties(metadata)"},{"line_number":1426,"context_line":""},{"line_number":1427,"context_line":"        if ((not force) and (share[\u0027status\u0027] !\u003d constants.STATUS_AVAILABLE)):"},{"line_number":1428,"context_line":"            msg \u003d _(\"Source share status must be \""}],"source_content_type":"text/x-python","patch_set":31,"id":"d49dad43_2708c8c6","line":1425,"range":{"start_line":1424,"start_character":0,"end_line":1425,"end_character":59},"in_reply_to":"8e1f34d9_13b6843f","updated":"2022-08-17 18:18:00.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"1e9ab14373d0c09d2e9dd2e6b57e427d9017be51","unresolved":true,"context_lines":[{"line_number":2071,"context_line":"        string_args \u003d {\u0027sort_key\u0027: sort_key, \u0027sort_dir\u0027: sort_dir}"},{"line_number":2072,"context_line":"        string_args.update(search_opts)"},{"line_number":2073,"context_line":"        for k, v in string_args.items():"},{"line_number":2074,"context_line":"            if not (isinstance(v, str) and v):"},{"line_number":2075,"context_line":"                msg \u003d _(\"Wrong \u0027%(k)s\u0027 filter provided: \""},{"line_number":2076,"context_line":"                        \"\u0027%(v)s\u0027.\") % {\u0027k\u0027: k, \u0027v\u0027: string_args[k]}"},{"line_number":2077,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":34,"id":"4e29f396_4a62e19a","line":2074,"range":{"start_line":2074,"start_character":12,"end_line":2074,"end_character":46},"updated":"2022-08-31 21:33:42.000000000","message":"if not (isinstance(v, str) and v) and k !\u003d \u0027metadata\u0027:\n\nThis is only expecting filters to be string. However, we now have metadata as a filter, and due to ast.literal_eval, metadata will be a dictionary. Then, if the search option key is metadata, we should not allow it to get InvalidInput, as metadata will not be a string.\n\nIn my environment, this solved the issue for metadata filters.","commit_id":"3aabc77513a00385bfb22bbd7124c0cd03320e05"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"da1f02ebd9c05154dacd8b8e94d08502465380d6","unresolved":false,"context_lines":[{"line_number":2071,"context_line":"        string_args \u003d {\u0027sort_key\u0027: sort_key, \u0027sort_dir\u0027: sort_dir}"},{"line_number":2072,"context_line":"        string_args.update(search_opts)"},{"line_number":2073,"context_line":"        for k, v in string_args.items():"},{"line_number":2074,"context_line":"            if not (isinstance(v, str) and v):"},{"line_number":2075,"context_line":"                msg \u003d _(\"Wrong \u0027%(k)s\u0027 filter provided: \""},{"line_number":2076,"context_line":"                        \"\u0027%(v)s\u0027.\") % {\u0027k\u0027: k, \u0027v\u0027: string_args[k]}"},{"line_number":2077,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":34,"id":"9d721dc7_721a7205","line":2074,"range":{"start_line":2074,"start_character":12,"end_line":2074,"end_character":46},"in_reply_to":"4e29f396_4a62e19a","updated":"2022-09-01 14:04:59.000000000","message":"Done","commit_id":"3aabc77513a00385bfb22bbd7124c0cd03320e05"}],"manila/tests/api/v2/test_share_snapshots.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"42c73ec198f6a258c2b3ee57c4ff4d61842380a8","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        self._snapshot_list_summary_with_search_opts("},{"line_number":249,"context_line":"            version\u003dversion, use_admin_context\u003duse_admin_context)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    @ddt.data({\u0027version\u0027: \u00272.73\u0027, \u0027use_admin_context\u0027: True})"},{"line_number":252,"context_line":"    @ddt.unpack"},{"line_number":253,"context_line":"    def test_snapshot_list_metadata_filter(self, version, use_admin_context):"},{"line_number":254,"context_line":"        search_opts \u003d {"}],"source_content_type":"text/x-python","patch_set":39,"id":"2d22a0af_2e3312ca","line":251,"range":{"start_line":251,"start_character":4,"end_line":251,"end_character":61},"updated":"2022-09-07 04:52:32.000000000","message":"There\u0027s no need for ddt if there aren\u0027t multiple values to iterate over","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        self._snapshot_list_summary_with_search_opts("},{"line_number":249,"context_line":"            version\u003dversion, use_admin_context\u003duse_admin_context)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    @ddt.data({\u0027version\u0027: \u00272.73\u0027, \u0027use_admin_context\u0027: True})"},{"line_number":252,"context_line":"    @ddt.unpack"},{"line_number":253,"context_line":"    def test_snapshot_list_metadata_filter(self, version, use_admin_context):"},{"line_number":254,"context_line":"        search_opts \u003d {"}],"source_content_type":"text/x-python","patch_set":39,"id":"9ed4657e_60e98018","line":251,"range":{"start_line":251,"start_character":4,"end_line":251,"end_character":61},"in_reply_to":"2d22a0af_2e3312ca","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"42c73ec198f6a258c2b3ee57c4ff4d61842380a8","unresolved":true,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        db_snapshots \u003d ["},{"line_number":269,"context_line":"            {\u0027id\u0027: \u0027id1\u0027, \u0027metadata\u0027: {\u0027foo\u0027: \u0027bar\u0027}},"},{"line_number":270,"context_line":"            {\u0027id\u0027: \u0027id2\u0027, \u0027metadata\u0027: {\u0027foo1\u0027: \u0027bar1\u0027}},"},{"line_number":271,"context_line":"            {\u0027id\u0027: \u0027id3\u0027, \u0027metadata\u0027: {\u0027foo1\u0027: \u0027bar1\u0027}},"},{"line_number":272,"context_line":"        ]"},{"line_number":273,"context_line":"        snapshots \u003d [db_snapshots[0]]"},{"line_number":274,"context_line":"        self.mock_object(share_api.API, \u0027get_all_snapshots\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"57ad3d3e_7c93781a","line":271,"range":{"start_line":270,"start_character":12,"end_line":271,"end_character":56},"updated":"2022-09-07 04:52:32.000000000","message":"nit why use these if you\u0027re splicing out a smaller list on line 273 to set as mock return?","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        db_snapshots \u003d ["},{"line_number":269,"context_line":"            {\u0027id\u0027: \u0027id1\u0027, \u0027metadata\u0027: {\u0027foo\u0027: \u0027bar\u0027}},"},{"line_number":270,"context_line":"            {\u0027id\u0027: \u0027id2\u0027, \u0027metadata\u0027: {\u0027foo1\u0027: \u0027bar1\u0027}},"},{"line_number":271,"context_line":"            {\u0027id\u0027: \u0027id3\u0027, \u0027metadata\u0027: {\u0027foo1\u0027: \u0027bar1\u0027}},"},{"line_number":272,"context_line":"        ]"},{"line_number":273,"context_line":"        snapshots \u003d [db_snapshots[0]]"},{"line_number":274,"context_line":"        self.mock_object(share_api.API, \u0027get_all_snapshots\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"06af7d23_d7c60a65","line":271,"range":{"start_line":270,"start_character":12,"end_line":271,"end_character":56},"in_reply_to":"57ad3d3e_7c93781a","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"42c73ec198f6a258c2b3ee57c4ff4d61842380a8","unresolved":true,"context_lines":[{"line_number":289,"context_line":"            sort_dir\u003dsearch_opts[\u0027sort_dir\u0027],"},{"line_number":290,"context_line":"            search_opts\u003dsearch_opts_expected,"},{"line_number":291,"context_line":"        )"},{"line_number":292,"context_line":"        print(search_opts_expected)"},{"line_number":293,"context_line":"        self.assertEqual(1, len(result[\u0027snapshots\u0027]))"},{"line_number":294,"context_line":"        self.assertEqual(snapshots[0][\u0027id\u0027], result[\u0027snapshots\u0027][0][\u0027id\u0027])"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"819f220c_6727a824","line":292,"range":{"start_line":292,"start_character":8,"end_line":292,"end_character":35},"updated":"2022-09-07 04:52:32.000000000","message":"remove","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            sort_dir\u003dsearch_opts[\u0027sort_dir\u0027],"},{"line_number":290,"context_line":"            search_opts\u003dsearch_opts_expected,"},{"line_number":291,"context_line":"        )"},{"line_number":292,"context_line":"        print(search_opts_expected)"},{"line_number":293,"context_line":"        self.assertEqual(1, len(result[\u0027snapshots\u0027]))"},{"line_number":294,"context_line":"        self.assertEqual(snapshots[0][\u0027id\u0027], result[\u0027snapshots\u0027][0][\u0027id\u0027])"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"8d93a360_18d36696","line":292,"range":{"start_line":292,"start_character":8,"end_line":292,"end_character":35},"in_reply_to":"819f220c_6727a824","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"}],"manila/tests/db/migrations/alembic/migrations_data_checks.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"5567c6903a7bf4cb88170be5825718b088203481","unresolved":true,"context_lines":[{"line_number":3225,"context_line":"        engine.execute(snap_i_table.insert(snapshot_instance_data))"},{"line_number":3226,"context_line":""},{"line_number":3227,"context_line":"    def check_upgrade(self, engine, data):"},{"line_number":3228,"context_line":"        data \u003d {"},{"line_number":3229,"context_line":"            \u0027id\u0027: 1,"},{"line_number":3230,"context_line":"            \u0027key\u0027: \u0027t\u0027 * 255,"},{"line_number":3231,"context_line":"            \u0027value\u0027: \u0027v\u0027 * 1023,"},{"line_number":3232,"context_line":"            \u0027share_snapshot_id\u0027: self.snapshot_id,"},{"line_number":3233,"context_line":"            \u0027deleted\u0027: \u0027False\u0027,"},{"line_number":3234,"context_line":"        }"},{"line_number":3235,"context_line":""},{"line_number":3236,"context_line":"        new_table \u003d utils.load_table(self.new_table_name, engine)"},{"line_number":3237,"context_line":"        engine.execute(new_table.insert(data))"},{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"    def check_downgrade(self, engine):"},{"line_number":3240,"context_line":"        self.test_case.assertRaises(sa_exc.NoSuchTableError, utils.load_table,"}],"source_content_type":"text/x-python","patch_set":31,"id":"f1742da5_2f499350","line":3237,"range":{"start_line":3228,"start_character":0,"end_line":3237,"end_character":46},"updated":"2022-08-04 19:09:05.000000000","message":"nit: while inserting data into the new table is a good test, you should also verify if the migration schema changes occurred fine; i.e., select all the data from the table, iterate over the rows and assert whether the data types you assigned are as expected.","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a85798614dd97107936468cfa68f135f9b445639","unresolved":false,"context_lines":[{"line_number":3225,"context_line":"        engine.execute(snap_i_table.insert(snapshot_instance_data))"},{"line_number":3226,"context_line":""},{"line_number":3227,"context_line":"    def check_upgrade(self, engine, data):"},{"line_number":3228,"context_line":"        data \u003d {"},{"line_number":3229,"context_line":"            \u0027id\u0027: 1,"},{"line_number":3230,"context_line":"            \u0027key\u0027: \u0027t\u0027 * 255,"},{"line_number":3231,"context_line":"            \u0027value\u0027: \u0027v\u0027 * 1023,"},{"line_number":3232,"context_line":"            \u0027share_snapshot_id\u0027: self.snapshot_id,"},{"line_number":3233,"context_line":"            \u0027deleted\u0027: \u0027False\u0027,"},{"line_number":3234,"context_line":"        }"},{"line_number":3235,"context_line":""},{"line_number":3236,"context_line":"        new_table \u003d utils.load_table(self.new_table_name, engine)"},{"line_number":3237,"context_line":"        engine.execute(new_table.insert(data))"},{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"    def check_downgrade(self, engine):"},{"line_number":3240,"context_line":"        self.test_case.assertRaises(sa_exc.NoSuchTableError, utils.load_table,"}],"source_content_type":"text/x-python","patch_set":31,"id":"bcabdf99_faa3a282","line":3237,"range":{"start_line":3228,"start_character":0,"end_line":3237,"end_character":46},"in_reply_to":"f1742da5_2f499350","updated":"2022-08-17 18:18:00.000000000","message":"Done","commit_id":"ba9668011d503b7e5cedca7f374060d7483a22d6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"7b10c37c767358a26e140141f1be3ea7ffd5b4d5","unresolved":true,"context_lines":[{"line_number":3237,"context_line":"        engine.execute(new_table.insert(data))"},{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        pop_table \u003d utils.load_table(\u0027share_snapshot_metadata\u0027, engine)"},{"line_number":3240,"context_line":"        item \u003d engine.execute(pop_table.select(id\u003ddata[\u0027id\u0027]))"},{"line_number":3241,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027id\u0027))"},{"line_number":3242,"context_line":"        self.test_case.assertEqual(data[\u0027id\u0027], item[\u0027id\u0027])"},{"line_number":3243,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027key\u0027))"}],"source_content_type":"text/x-python","patch_set":36,"id":"dce26860_9ccf175a","line":3240,"range":{"start_line":3240,"start_character":30,"end_line":3240,"end_character":61},"updated":"2022-09-01 14:14:18.000000000","message":"pop_table.select().where(pop_table.c.id \u003d\u003d data[\u0027id\u0027])","commit_id":"e08969e3edee039fcfe0875cc7994fa886c8f7a0"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"024427f6ee5c72074dd4d6d71b2d2aeebf5d51b9","unresolved":false,"context_lines":[{"line_number":3237,"context_line":"        engine.execute(new_table.insert(data))"},{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        pop_table \u003d utils.load_table(\u0027share_snapshot_metadata\u0027, engine)"},{"line_number":3240,"context_line":"        item \u003d engine.execute(pop_table.select(id\u003ddata[\u0027id\u0027]))"},{"line_number":3241,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027id\u0027))"},{"line_number":3242,"context_line":"        self.test_case.assertEqual(data[\u0027id\u0027], item[\u0027id\u0027])"},{"line_number":3243,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027key\u0027))"}],"source_content_type":"text/x-python","patch_set":36,"id":"f84b58e6_bc05a8b5","line":3240,"range":{"start_line":3240,"start_character":30,"end_line":3240,"end_character":61},"in_reply_to":"dce26860_9ccf175a","updated":"2022-09-01 14:22:27.000000000","message":"Done","commit_id":"e08969e3edee039fcfe0875cc7994fa886c8f7a0"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"b7e58bd3c03633118dd860c533e1dfa49574c2ee","unresolved":true,"context_lines":[{"line_number":3236,"context_line":"        new_table \u003d utils.load_table(self.new_table_name, engine)"},{"line_number":3237,"context_line":"        engine.execute(new_table.insert(data))"},{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        pop_table \u003d utils.load_table(\u0027share_snapshot_metadata\u0027, engine)"},{"line_number":3240,"context_line":"        item \u003d engine.execute("},{"line_number":3241,"context_line":"            pop_table.select().where(pop_table.c.id \u003d\u003d data[\u0027id\u0027]))"},{"line_number":3242,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027id\u0027))"}],"source_content_type":"text/x-python","patch_set":38,"id":"04456d6a_040b6cd9","line":3239,"range":{"start_line":3239,"start_character":8,"end_line":3239,"end_character":71},"updated":"2022-09-02 19:23:47.000000000","message":"new_table already has loaded the table we want, right? so we should maybe use it again here?\nI\u0027m afraid two instances of the same table being loaded can somehow confuse the engine, or I might be just too conservative about this :)","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"8afbeeddced310684d6d8257211fed3af7b41d53","unresolved":false,"context_lines":[{"line_number":3236,"context_line":"        new_table \u003d utils.load_table(self.new_table_name, engine)"},{"line_number":3237,"context_line":"        engine.execute(new_table.insert(data))"},{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        pop_table \u003d utils.load_table(\u0027share_snapshot_metadata\u0027, engine)"},{"line_number":3240,"context_line":"        item \u003d engine.execute("},{"line_number":3241,"context_line":"            pop_table.select().where(pop_table.c.id \u003d\u003d data[\u0027id\u0027]))"},{"line_number":3242,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027id\u0027))"}],"source_content_type":"text/x-python","patch_set":38,"id":"e88e138a_cba22cd2","line":3239,"range":{"start_line":3239,"start_character":8,"end_line":3239,"end_character":71},"in_reply_to":"04456d6a_040b6cd9","updated":"2022-09-06 14:36:49.000000000","message":"Done","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"60b2a79aa2454b9ef71166401fdf71eef0afdb71","unresolved":true,"context_lines":[{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        pop_table \u003d utils.load_table(\u0027share_snapshot_metadata\u0027, engine)"},{"line_number":3240,"context_line":"        item \u003d engine.execute("},{"line_number":3241,"context_line":"            pop_table.select().where(pop_table.c.id \u003d\u003d data[\u0027id\u0027]))"},{"line_number":3242,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027id\u0027))"},{"line_number":3243,"context_line":"        self.test_case.assertEqual(data[\u0027id\u0027], item[\u0027id\u0027])"},{"line_number":3244,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027key\u0027))"}],"source_content_type":"text/x-python","patch_set":38,"id":"30ced030_fa95ba5c","line":3241,"range":{"start_line":3241,"start_character":65,"end_line":3241,"end_character":67},"updated":"2022-09-02 19:59:06.000000000","message":")).first()","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"8afbeeddced310684d6d8257211fed3af7b41d53","unresolved":false,"context_lines":[{"line_number":3238,"context_line":""},{"line_number":3239,"context_line":"        pop_table \u003d utils.load_table(\u0027share_snapshot_metadata\u0027, engine)"},{"line_number":3240,"context_line":"        item \u003d engine.execute("},{"line_number":3241,"context_line":"            pop_table.select().where(pop_table.c.id \u003d\u003d data[\u0027id\u0027]))"},{"line_number":3242,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027id\u0027))"},{"line_number":3243,"context_line":"        self.test_case.assertEqual(data[\u0027id\u0027], item[\u0027id\u0027])"},{"line_number":3244,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027key\u0027))"}],"source_content_type":"text/x-python","patch_set":38,"id":"bf83518a_2c90707e","line":3241,"range":{"start_line":3241,"start_character":65,"end_line":3241,"end_character":67},"in_reply_to":"30ced030_fa95ba5c","updated":"2022-09-06 14:36:49.000000000","message":"Done","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"9a2187ce8a181986e65e0a206dddb79d8fec0e67","unresolved":true,"context_lines":[{"line_number":3249,"context_line":"        self.test_case.assertEqual(self.snapshot_id,"},{"line_number":3250,"context_line":"                                   item[\u0027share_snapshot_id\u0027])"},{"line_number":3251,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027deleted\u0027))"},{"line_number":3252,"context_line":"        self.test_case.assertEqual(False, item[\u0027deleted\u0027])"},{"line_number":3253,"context_line":""},{"line_number":3254,"context_line":"    def check_downgrade(self, engine):"},{"line_number":3255,"context_line":"        self.test_case.assertRaises(sa_exc.NoSuchTableError, utils.load_table,"}],"source_content_type":"text/x-python","patch_set":38,"id":"bc68affe_62a33e0d","line":3252,"range":{"start_line":3252,"start_character":35,"end_line":3252,"end_character":40},"updated":"2022-09-02 20:11:50.000000000","message":"I believe tis should be \u0027False\u0027, to match the insertion above","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"8afbeeddced310684d6d8257211fed3af7b41d53","unresolved":false,"context_lines":[{"line_number":3249,"context_line":"        self.test_case.assertEqual(self.snapshot_id,"},{"line_number":3250,"context_line":"                                   item[\u0027share_snapshot_id\u0027])"},{"line_number":3251,"context_line":"        self.test_case.assertTrue(hasattr(item, \u0027deleted\u0027))"},{"line_number":3252,"context_line":"        self.test_case.assertEqual(False, item[\u0027deleted\u0027])"},{"line_number":3253,"context_line":""},{"line_number":3254,"context_line":"    def check_downgrade(self, engine):"},{"line_number":3255,"context_line":"        self.test_case.assertRaises(sa_exc.NoSuchTableError, utils.load_table,"}],"source_content_type":"text/x-python","patch_set":38,"id":"e2505a98_c6867075","line":3252,"range":{"start_line":3252,"start_character":35,"end_line":3252,"end_character":40},"in_reply_to":"bc68affe_62a33e0d","updated":"2022-09-06 14:36:49.000000000","message":"Done","commit_id":"a27e85a631a0d590b47d9ecef8bcf5ff29c35af6"}],"releasenotes/notes/add_snapshot_metadata-bd986e338220c90e.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"42c73ec198f6a258c2b3ee57c4ff4d61842380a8","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds snapshot metadata capabilities inlcuding, create, update all,"},{"line_number":5,"context_line":"    update single, show, and delete metadata. Snapshots may be"},{"line_number":6,"context_line":"    filtered using metadata keys. Snapshot metadata is"},{"line_number":7,"context_line":"    available to admin and nonadmin users."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"6467c1af_fb0dd643","line":4,"range":{"start_line":4,"start_character":40,"end_line":4,"end_character":49},"updated":"2022-09-07 04:52:32.000000000","message":"including","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"42c73ec198f6a258c2b3ee57c4ff4d61842380a8","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds snapshot metadata capabilities inlcuding, create, update all,"},{"line_number":5,"context_line":"    update single, show, and delete metadata. Snapshots may be"},{"line_number":6,"context_line":"    filtered using metadata keys. Snapshot metadata is"},{"line_number":7,"context_line":"    available to admin and nonadmin users."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"0bf1ecc9_8703ec72","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":8},"updated":"2022-09-07 04:52:32.000000000","message":"s/Adds/Added","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds snapshot metadata capabilities inlcuding, create, update all,"},{"line_number":5,"context_line":"    update single, show, and delete metadata. Snapshots may be"},{"line_number":6,"context_line":"    filtered using metadata keys. Snapshot metadata is"},{"line_number":7,"context_line":"    available to admin and nonadmin users."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"58392240_0b2d82ae","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":8},"in_reply_to":"0bf1ecc9_8703ec72","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"451f5b7c8cf26edbffd84badd176b4290d68788f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds snapshot metadata capabilities inlcuding, create, update all,"},{"line_number":5,"context_line":"    update single, show, and delete metadata. Snapshots may be"},{"line_number":6,"context_line":"    filtered using metadata keys. Snapshot metadata is"},{"line_number":7,"context_line":"    available to admin and nonadmin users."}],"source_content_type":"text/x-yaml","patch_set":39,"id":"91bdf650_6c7dc886","line":4,"range":{"start_line":4,"start_character":40,"end_line":4,"end_character":49},"in_reply_to":"6467c1af_fb0dd643","updated":"2022-09-07 21:24:42.000000000","message":"Done","commit_id":"07efd2c8b0451f920ee1d6069cd5c7dacb746a45"}]}
