)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"9132ad41d1ee033312e4ab5e884394ea99daaf54","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     tspyderboy \u003ctspyderboy@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-03-27 18:02:49 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"filter/list resources that have no key\u003dvalue metadata/extra-specs"},{"line_number":8,"context_line":"metadata commands like: list --metadata \u0027\u0027 shouldn\u0027t be {\"\": None}, it should be {}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Closes-Bug: #1782847"},{"line_number":11,"context_line":"Change-Id: Iac33cd1295b1e7c2ff11e6d7bd003fde28785c0e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"abbd749f_0a3da0e5","line":8,"range":{"start_line":7,"start_character":0,"end_line":8,"end_character":83},"updated":"2024-03-27 15:43:01.000000000","message":"this is too long for the commit title. Please read https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure to find the best practice.\n\nProbably `Handle empty metadata properly in filter/list` is the appropriate title and then you can put details in the subsequent paragraph.","commit_id":"27b6ba0b5b844680d0629a6ea904eb83c76706a8"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"c0096a10127a2861e5a584281515fea3d5ffc8c7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     tspyderboy \u003ctspyderboy@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2024-03-27 18:02:49 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"filter/list resources that have no key\u003dvalue metadata/extra-specs"},{"line_number":8,"context_line":"metadata commands like: list --metadata \u0027\u0027 shouldn\u0027t be {\"\": None}, it should be {}"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Closes-Bug: #1782847"},{"line_number":11,"context_line":"Change-Id: Iac33cd1295b1e7c2ff11e6d7bd003fde28785c0e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"f2a3d180_fe52f99e","line":8,"range":{"start_line":7,"start_character":0,"end_line":8,"end_character":83},"in_reply_to":"abbd749f_0a3da0e5","updated":"2024-03-27 15:56:26.000000000","message":"Thanks Takashi, will shorten the title","commit_id":"27b6ba0b5b844680d0629a6ea904eb83c76706a8"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d8b214fc7c8eb8e907b2170e4abc4a989f69bb06","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2350b869_50432e99","updated":"2024-03-28 22:56:56.000000000","message":"Hey tspyderboy; you\u0027re tackling an interesting bug.. i\u0027ve left some thoughts inline","commit_id":"43427a5b16fd0a7ed2b157fbefd4af7c7a720f8d"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"4186cdc7243b67fc43cc8924b442c996fb67f125","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"61aa38a2_3f4e6d31","updated":"2024-04-01 07:58:53.000000000","message":"Hi,\nack the changes, have added test_list_filter_by_metadata_set_to_None for the changes.\nPlease review.\nThanks","commit_id":"2434334374d2259ba66d387292b6840a1cfe11a4"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"ab3e178074faed8093cf3e05aa2af00ec51b01b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"923a795b_0a6fbedf","updated":"2024-08-14 15:37:44.000000000","message":"Hi gouthamr,\nThanks for finding the extra space line.\nRegards","commit_id":"d24527a7f476a439a643dc972ff94a59bc11e395"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"1fe8d3aa18a35c38a3c41b0376ec23048923133e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"86052f5d_824eabe0","updated":"2024-08-20 14:17:15.000000000","message":"LGTM, thank you for working on this enhancement, Ariq","commit_id":"d24527a7f476a439a643dc972ff94a59bc11e395"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"29c380873339317ebd65c19dba1a040987d8f9ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"922a212b_00b30d43","updated":"2024-08-15 04:13:04.000000000","message":"Very cool; thank you @tspyderboy@gmail.com. This manilaclient shell is actively deprecated though.. if there\u0027s any chance you can implement this with openstack cli, we\u0027d be super appreciative!","commit_id":"d24527a7f476a439a643dc972ff94a59bc11e395"}],"manilaclient/v2/shell.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2690604eb071d6038f7331b17dd1d0daf9fc5520","unresolved":true,"context_lines":[{"line_number":419,"context_line":"            # unset doesn\u0027t require a val, so we have the if/else"},{"line_number":420,"context_line":"            if \u0027\u003d\u0027 in option:"},{"line_number":421,"context_line":"                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)"},{"line_number":422,"context_line":"            elif option \u003d\u003d \"\u0027\u0027\":"},{"line_number":423,"context_line":"                continue"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                key \u003d option"}],"source_content_type":"text/x-python","patch_set":2,"id":"fb930dbb_012c8476","line":422,"range":{"start_line":422,"start_character":27,"end_line":422,"end_character":31},"updated":"2024-03-27 17:10:16.000000000","message":"I wonder if this should be \u0027\u0027 (empty string) instead. The current logic may work in case a user gives\n\n```\n--metadata \"\u0027\u0027\"\n```\n\nrather than\n\n```\n--metadata \u0027\u0027\n```\n\nassuming the outer \u0027\u0027 or \"\" would be stripped by shell.","commit_id":"af7940a3ea1b0e254d5b5751a69bf6642307115b"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"17df3f01fdbc313f1b32d2496aa64264492c4fad","unresolved":false,"context_lines":[{"line_number":419,"context_line":"            # unset doesn\u0027t require a val, so we have the if/else"},{"line_number":420,"context_line":"            if \u0027\u003d\u0027 in option:"},{"line_number":421,"context_line":"                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)"},{"line_number":422,"context_line":"            elif option \u003d\u003d \"\u0027\u0027\":"},{"line_number":423,"context_line":"                continue"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                key \u003d option"}],"source_content_type":"text/x-python","patch_set":2,"id":"86697448_4e40f5cc","line":422,"range":{"start_line":422,"start_character":27,"end_line":422,"end_character":31},"in_reply_to":"19a71d9f_118b688c","updated":"2024-03-28 12:47:30.000000000","message":"Done","commit_id":"af7940a3ea1b0e254d5b5751a69bf6642307115b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"708044938e375471cbc1839aefe4981b8c8bd61f","unresolved":true,"context_lines":[{"line_number":419,"context_line":"            # unset doesn\u0027t require a val, so we have the if/else"},{"line_number":420,"context_line":"            if \u0027\u003d\u0027 in option:"},{"line_number":421,"context_line":"                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)"},{"line_number":422,"context_line":"            elif option \u003d\u003d \"\u0027\u0027\":"},{"line_number":423,"context_line":"                continue"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                key \u003d option"}],"source_content_type":"text/x-python","patch_set":2,"id":"bc844855_5613991d","line":422,"range":{"start_line":422,"start_character":27,"end_line":422,"end_character":31},"in_reply_to":"30207428_efc2ca66","updated":"2024-03-28 14:24:12.000000000","message":"I need some time to deploy actual manila env but if you run the modified code actually then I believe you see what I explained above.","commit_id":"af7940a3ea1b0e254d5b5751a69bf6642307115b"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"c9750dc6eeb119a7f424e9a04a281c3046857352","unresolved":true,"context_lines":[{"line_number":419,"context_line":"            # unset doesn\u0027t require a val, so we have the if/else"},{"line_number":420,"context_line":"            if \u0027\u003d\u0027 in option:"},{"line_number":421,"context_line":"                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)"},{"line_number":422,"context_line":"            elif option \u003d\u003d \"\u0027\u0027\":"},{"line_number":423,"context_line":"                continue"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                key \u003d option"}],"source_content_type":"text/x-python","patch_set":2,"id":"19a71d9f_118b688c","line":422,"range":{"start_line":422,"start_character":27,"end_line":422,"end_character":31},"in_reply_to":"40717b8f_173f00af","updated":"2024-03-27 19:18:43.000000000","message":"Hi, from added test:: test_list_filter_by_metadata_with_only_empty_metadata for which command is: list --metadata \u0027\u0027\n\nSo, if we use: list --metadata \u0027  \u0027 --\u003e option\u003d\"  \u0027  \u0027  \"\nIf we use: list --metadata \"  \"  --\u003e option\u003d\u0027  \"  \"  \u0027\nIf we use: list --metadata \"  \u0027  \u0027  \"  --\u003e option\u003d\"  \"  \u0027  \u0027  \"  \"\nIf we use: list --metadata \u0027  \"  \"  \u0027  --\u003e option\u003d\"  \u0027  \"  \"  \u0027  \"\nThis, is how it is behaving using tests.(have added extra space for clarity in reading)","commit_id":"af7940a3ea1b0e254d5b5751a69bf6642307115b"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"4186cdc7243b67fc43cc8924b442c996fb67f125","unresolved":false,"context_lines":[{"line_number":419,"context_line":"            # unset doesn\u0027t require a val, so we have the if/else"},{"line_number":420,"context_line":"            if \u0027\u003d\u0027 in option:"},{"line_number":421,"context_line":"                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)"},{"line_number":422,"context_line":"            elif option \u003d\u003d \"\u0027\u0027\":"},{"line_number":423,"context_line":"                continue"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                key \u003d option"}],"source_content_type":"text/x-python","patch_set":2,"id":"2026ce1e_015bcffc","line":422,"range":{"start_line":422,"start_character":27,"end_line":422,"end_character":31},"in_reply_to":"4f10a41c_de7d7af1","updated":"2024-04-01 07:58:53.000000000","message":"Done","commit_id":"af7940a3ea1b0e254d5b5751a69bf6642307115b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e6f5b7084ff8c89fab1259bcc0bbab0c2be2ec67","unresolved":true,"context_lines":[{"line_number":419,"context_line":"            # unset doesn\u0027t require a val, so we have the if/else"},{"line_number":420,"context_line":"            if \u0027\u003d\u0027 in option:"},{"line_number":421,"context_line":"                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)"},{"line_number":422,"context_line":"            elif option \u003d\u003d \"\u0027\u0027\":"},{"line_number":423,"context_line":"                continue"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                key \u003d option"}],"source_content_type":"text/x-python","patch_set":2,"id":"30207428_efc2ca66","line":422,"range":{"start_line":422,"start_character":27,"end_line":422,"end_character":31},"in_reply_to":"86697448_4e40f5cc","updated":"2024-03-28 14:23:02.000000000","message":"The problem is that the run_command method does not simulate how shell handles \"\" or \u0027\u0027 so what is tested in test_list_filter_by_metadata_with_only_empty_metadata behaves differently so the current tests passing does not mean the usage via shell is actually fixed.","commit_id":"af7940a3ea1b0e254d5b5751a69bf6642307115b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d8b214fc7c8eb8e907b2170e4abc4a989f69bb06","unresolved":true,"context_lines":[{"line_number":419,"context_line":"            # unset doesn\u0027t require a val, so we have the if/else"},{"line_number":420,"context_line":"            if \u0027\u003d\u0027 in option:"},{"line_number":421,"context_line":"                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)"},{"line_number":422,"context_line":"            elif option \u003d\u003d \"\u0027\u0027\":"},{"line_number":423,"context_line":"                continue"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                key \u003d option"}],"source_content_type":"text/x-python","patch_set":2,"id":"4f10a41c_de7d7af1","line":422,"range":{"start_line":422,"start_character":27,"end_line":422,"end_character":31},"in_reply_to":"bc844855_5613991d","updated":"2024-03-28 22:56:56.000000000","message":"I think it\u0027d be a better user experience to allow filtering with --metadata None instead of requiring the use of quotes of any kind.. today, if we used:\n\n```\nmanila list --metadata None\n```\n\nCurrently, if you do this, \n\nwe\u0027re sending a request to manila like:\n\ncurl -i -X GET http://sharedfilesystems.com/share/v2/shares/detail?metadata\u003d%7B%27None%27%3A+None%7D\n\n\nBasically, we\u0027re filtering by metadata key \"None\" and value \"None\".\n\nSo, perhaps here\u0027s what we can do:\n\n\nin the \"_extract_key_value_options\" method and the \"_extract_metadata\" method, add a kwarg (\"allow_empty_key\u003dTrue\"); then the logic of this method becomes:\n\n\nif allow_empty_key\u003dFalse, don\u0027t execute lines 424 through 426; i.e.:\n\n\n```\ndef _extract_key_value_options(args, option_name, allow_empty_key\u003dTrue):\n    result_dict \u003d {}\n    duplicate_options \u003d []\n\n    options \u003d getattr(args, option_name, None)\n\n    if options:\n        for option in options:\n            # unset doesn\u0027t require a val, so we have the if/else\n            if \u0027\u003d\u0027 in option:\n                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)\n            elif allow_empty_key:\n                key \u003d option\n                value \u003d None\n            else:\n                # this is an empty key, disallow it\n                continue\n\n            if key not in result_dict:\n                result_dict[key] \u003d value\n            else:\n                duplicate_options.append(key)\n\n        if len(duplicate_options) \u003e 0:\n            duplicate_str \u003d \u0027, \u0027.join(duplicate_options)\n            msg \u003d \"Following options were duplicated: %s\" % duplicate_str\n            raise exceptions.CommandError(msg)\n    return result_dict\n```\n\nOnce this is done, you can enhance the `do_list` method to behave like mentioned below:","commit_id":"af7940a3ea1b0e254d5b5751a69bf6642307115b"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"5a8b8680f579ed6a70f65674083e6f85eaf43f38","unresolved":true,"context_lines":[{"line_number":419,"context_line":"            # unset doesn\u0027t require a val, so we have the if/else"},{"line_number":420,"context_line":"            if \u0027\u003d\u0027 in option:"},{"line_number":421,"context_line":"                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)"},{"line_number":422,"context_line":"            elif option \u003d\u003d \"\u0027\u0027\":"},{"line_number":423,"context_line":"                continue"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                key \u003d option"}],"source_content_type":"text/x-python","patch_set":2,"id":"e8a3cf0a_df1af127","line":422,"range":{"start_line":422,"start_character":27,"end_line":422,"end_character":31},"in_reply_to":"bc844855_5613991d","updated":"2024-03-28 19:45:26.000000000","message":"Thanks Takashi, understood. Actual run might have different behaviour compared to unit-test simulation. I\u0027ll also try to set up above code in devstack and check.","commit_id":"af7940a3ea1b0e254d5b5751a69bf6642307115b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"31124364bdc2a3c9c1769906cd9f4df6e0b959c2","unresolved":true,"context_lines":[{"line_number":419,"context_line":"            # unset doesn\u0027t require a val, so we have the if/else"},{"line_number":420,"context_line":"            if \u0027\u003d\u0027 in option:"},{"line_number":421,"context_line":"                (key, value) \u003d option.split(\u0027\u003d\u0027, 1)"},{"line_number":422,"context_line":"            elif option \u003d\u003d \"\u0027\u0027\":"},{"line_number":423,"context_line":"                continue"},{"line_number":424,"context_line":"            else:"},{"line_number":425,"context_line":"                key \u003d option"}],"source_content_type":"text/x-python","patch_set":2,"id":"40717b8f_173f00af","line":422,"range":{"start_line":422,"start_character":27,"end_line":422,"end_character":31},"in_reply_to":"fb930dbb_012c8476","updated":"2024-03-27 17:13:41.000000000","message":"I\u0027m not quite sure how we simulate the strip behavior by shell in unit tests, though","commit_id":"af7940a3ea1b0e254d5b5751a69bf6642307115b"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d8b214fc7c8eb8e907b2170e4abc4a989f69bb06","unresolved":true,"context_lines":[{"line_number":2497,"context_line":"        \u0027share_network_id\u0027: share_network.id,"},{"line_number":2498,"context_line":"        \u0027snapshot_id\u0027: snapshot.id,"},{"line_number":2499,"context_line":"        \u0027share_type_id\u0027: share_type.id,"},{"line_number":2500,"context_line":"        \u0027metadata\u0027: _extract_metadata(args),"},{"line_number":2501,"context_line":"        \u0027extra_specs\u0027: _extract_extra_specs(args),"},{"line_number":2502,"context_line":"        \u0027share_server_id\u0027: args.share_server_id,"},{"line_number":2503,"context_line":"        \u0027project_id\u0027: args.project_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"10b0679f_756148c2","line":2500,"updated":"2024-03-28 22:56:56.000000000","message":"Make sure to pass \"allow_empty_key\u003dFalse\" \n\nhttps://review.opendev.org/c/openstack/python-manilaclient/+/914227/comment/fb930dbb_012c8476/","commit_id":"43427a5b16fd0a7ed2b157fbefd4af7c7a720f8d"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"4186cdc7243b67fc43cc8924b442c996fb67f125","unresolved":false,"context_lines":[{"line_number":2497,"context_line":"        \u0027share_network_id\u0027: share_network.id,"},{"line_number":2498,"context_line":"        \u0027snapshot_id\u0027: snapshot.id,"},{"line_number":2499,"context_line":"        \u0027share_type_id\u0027: share_type.id,"},{"line_number":2500,"context_line":"        \u0027metadata\u0027: _extract_metadata(args),"},{"line_number":2501,"context_line":"        \u0027extra_specs\u0027: _extract_extra_specs(args),"},{"line_number":2502,"context_line":"        \u0027share_server_id\u0027: args.share_server_id,"},{"line_number":2503,"context_line":"        \u0027project_id\u0027: args.project_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"4b0ccc79_52750c78","line":2500,"in_reply_to":"10b0679f_756148c2","updated":"2024-04-01 07:58:53.000000000","message":"Done","commit_id":"43427a5b16fd0a7ed2b157fbefd4af7c7a720f8d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"d8b214fc7c8eb8e907b2170e4abc4a989f69bb06","unresolved":true,"context_lines":[{"line_number":2552,"context_line":"        shares \u003d cs.shares.list("},{"line_number":2553,"context_line":"            search_opts\u003dsearch_opts, sort_key\u003dargs.sort_key,"},{"line_number":2554,"context_line":"            sort_dir\u003dargs.sort_dir"},{"line_number":2555,"context_line":"        )"},{"line_number":2556,"context_line":"    # NOTE(vponomaryov): usage of \u0027export_location\u0027 and"},{"line_number":2557,"context_line":"    # \u0027export_locations\u0027 columns may cause scaling issue using API 2.9+ and"},{"line_number":2558,"context_line":"    # when lots of shares are returned."}],"source_content_type":"text/x-python","patch_set":3,"id":"d49ffbd7_f6f8a754","line":2555,"range":{"start_line":2555,"start_character":8,"end_line":2555,"end_character":9},"updated":"2024-03-28 22:56:56.000000000","message":"After getting the list of shares, you can process the list and display those shares with no metadata if --metadata None was provided.. \n\n```\nif args.metadata\u003d\u003d\"None\":\n    // filter shares[\"metadata\"] set to {} (no metadata)\n```","commit_id":"43427a5b16fd0a7ed2b157fbefd4af7c7a720f8d"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"4186cdc7243b67fc43cc8924b442c996fb67f125","unresolved":false,"context_lines":[{"line_number":2552,"context_line":"        shares \u003d cs.shares.list("},{"line_number":2553,"context_line":"            search_opts\u003dsearch_opts, sort_key\u003dargs.sort_key,"},{"line_number":2554,"context_line":"            sort_dir\u003dargs.sort_dir"},{"line_number":2555,"context_line":"        )"},{"line_number":2556,"context_line":"    # NOTE(vponomaryov): usage of \u0027export_location\u0027 and"},{"line_number":2557,"context_line":"    # \u0027export_locations\u0027 columns may cause scaling issue using API 2.9+ and"},{"line_number":2558,"context_line":"    # when lots of shares are returned."}],"source_content_type":"text/x-python","patch_set":3,"id":"ebf6cac6_76d94ce5","line":2555,"range":{"start_line":2555,"start_character":8,"end_line":2555,"end_character":9},"in_reply_to":"d49ffbd7_f6f8a754","updated":"2024-04-01 07:58:53.000000000","message":"Done","commit_id":"43427a5b16fd0a7ed2b157fbefd4af7c7a720f8d"}],"releasenotes/notes/bug-1782847-filter-list-resources-with-empty-metadata-key-value-cc6f858994f6e9ee.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"96af44731a34fea187bf40bbaa48fa56f3666f35","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    The --metadata command should handle empty metadata in proper way."},{"line_number":5,"context_line":"    Introduced \"None\" metadata tag to filter list which have empty."},{"line_number":6,"context_line":"    Example: \"list --metadata None\" will return only elements with metadata\u003d{}"},{"line_number":7,"context_line":"    "}],"source_content_type":"text/x-yaml","patch_set":10,"id":"47caa627_f9f9c677","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":1},"updated":"2024-07-31 19:17:14.000000000","message":"could you please remove this line with trailing whitespace?","commit_id":"521c7e085431c4c6ab876aa7a02d10307366bfd4"},{"author":{"_account_id":36889,"name":"tspyderboy","display_name":"tspyderboy","email":"tspyderboy@gmail.com","username":"tspyderboy"},"change_message_id":"ab3e178074faed8093cf3e05aa2af00ec51b01b4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    The --metadata command should handle empty metadata in proper way."},{"line_number":5,"context_line":"    Introduced \"None\" metadata tag to filter list which have empty."},{"line_number":6,"context_line":"    Example: \"list --metadata None\" will return only elements with metadata\u003d{}"},{"line_number":7,"context_line":"    "}],"source_content_type":"text/x-yaml","patch_set":10,"id":"2dff0a6c_31522562","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":1},"in_reply_to":"47caa627_f9f9c677","updated":"2024-08-14 15:37:44.000000000","message":"Acknowledged","commit_id":"521c7e085431c4c6ab876aa7a02d10307366bfd4"}]}
