)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":14,"context_line":"This change allows for the affinity filter spec[1] implementation without"},{"line_number":15,"context_line":"the additional changes necessary in the metadata spec[2]."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Bumps microversion to 2.68."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://specs.openstack.org/openstack/manila-specs/specs/xena/affinity-antiaffinity-filter.html"},{"line_number":20,"context_line":"[2] https://specs.openstack.org/openstack/manila-specs/specs/wallaby/metadata-for-share-resources.html"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"8a0a7078_95cefcb1","line":17,"range":{"start_line":17,"start_character":26,"end_line":17,"end_character":27},"updated":"2022-02-02 21:58:52.000000000","message":"to indicate the change in API behavior; however, the policy changes committed will apply to prior API versions as well.","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a3916e36_6b55b032","updated":"2021-10-13 23:37:35.000000000","message":"Thanks for working on this; PTAL at some comments inline","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"4f2ef42138b79c2423f5278bac8aeeb10e990390","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"22c3b10d_77a43af5","updated":"2021-10-13 20:16:43.000000000","message":"recheck","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"bd2eac020786008361070514641c5ef6ae978076","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f1b845f0_245cedb9","updated":"2021-11-22 14:54:54.000000000","message":" recheck","commit_id":"54c2b245d997afa8d1f7af9896242002ea83c732"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"928e1c35b09e789f1c3082ad875c9bb9fb94aa34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"1af144e0_526198c1","updated":"2021-11-25 13:04:56.000000000","message":"Ashley, could you please rebase this change on top of the master branch?\nThe issue with the devstack has been fixed now [1] :)\n\n[1] https://review.opendev.org/c/openstack/manila/+/818617","commit_id":"54c2b245d997afa8d1f7af9896242002ea83c732"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"8a96ee4f591fd1bb0ac120b890eea5676459ebad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"3a51befc_25ef798e","updated":"2021-11-23 12:12:59.000000000","message":"Bumping oslo.log lower constraints to 4.6.0 should go on a different patch set\n","commit_id":"54c2b245d997afa8d1f7af9896242002ea83c732"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ccfd53f6_04b736c9","updated":"2021-11-18 18:39:40.000000000","message":"Thanks for the comments!","commit_id":"54c2b245d997afa8d1f7af9896242002ea83c732"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"928e1c35b09e789f1c3082ad875c9bb9fb94aa34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"dd839e40_58f5cf8f","in_reply_to":"3a51befc_25ef798e","updated":"2021-11-25 13:04:56.000000000","message":"++","commit_id":"54c2b245d997afa8d1f7af9896242002ea83c732"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"881e9027f2a523f04e110cb348a0acb8a25c467b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"bfdbaab2_38e4573d","updated":"2021-12-14 03:14:57.000000000","message":"Hi Ashley, thanks for working on this. some comments inline.","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b2c66fe8ece48fbb4953533cd3e8cc449fd481cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"ce0d58b9_bdb84b0a","updated":"2021-12-09 23:08:06.000000000","message":"Hi Ashley, thanks for working on this. some comments inline; can you please resolve comments from earlier patchsets? Thanks!","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"7e8f8c88_be581d2e","updated":"2021-12-14 23:08:48.000000000","message":"Thanks for the comments!","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"b12a31cf7a71330145969903576a025167641964","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"9bfcb282_ca61a2ea","updated":"2021-12-15 16:44:17.000000000","message":"recheck","commit_id":"aff38f7a7385e8bd1fa6edcff2afbfe347ed478e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"f25a39f740b93e9e9da566a010b0f57575b292eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"858e034a_1a5c15a5","updated":"2022-02-02 21:59:35.000000000","message":"Comments are minor, please submit a follow up patch if others find anything substantial to fix","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"9e9e6a77876abcff28eac03809a584c9eb6101a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"0013ea27_c5c6ed14","updated":"2022-02-04 22:54:08.000000000","message":"Please address comments in a follow up patch... Thanks!","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"96fedb2f822e82e64ba87d3cd3e910416d5c7997","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"38ba6674_e1b60099","updated":"2022-02-04 17:51:46.000000000","message":"Thank you for working on this change, Ashley!\nI agree with Goutham\u0027s comments... I think they could be addressed in a follow-up change if that\u0027s the case...","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"e3aab45e_9e71d84b","updated":"2022-02-02 21:58:52.000000000","message":"run-NetApp CI","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"}],"manila/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"2.67"},{"line_number":372,"context_line":"____"},{"line_number":373,"context_line":"  Added support for \u0027only_host\u0027 key in \"scheduler_hints\" in the request body"},{"line_number":374,"context_line":"  of the POST/shares request. This hint will invoke OnlyHost scheduler"},{"line_number":375,"context_line":"  filter during share creation."},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"c79cf2c0_329582fa","line":373,"range":{"start_line":373,"start_character":8,"end_line":373,"end_character":15},"updated":"2022-02-02 21:58:52.000000000","message":"thanks!","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"96fedb2f822e82e64ba87d3cd3e910416d5c7997","unresolved":true,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"2.67"},{"line_number":372,"context_line":"____"},{"line_number":373,"context_line":"  Added support for \u0027only_host\u0027 key in \"scheduler_hints\" in the request body"},{"line_number":374,"context_line":"  of the POST/shares request. This hint will invoke OnlyHost scheduler"},{"line_number":375,"context_line":"  filter during share creation."},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":21,"id":"a30e3a33_a9ca12f1","line":373,"range":{"start_line":373,"start_character":8,"end_line":373,"end_character":15},"in_reply_to":"c79cf2c0_329582fa","updated":"2022-02-04 17:51:46.000000000","message":"+1 :)","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"}],"manila/api/v1/share_metadata.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":92,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":95,"context_line":"        existing \u003d self._get_metadata(context, share_id)"},{"line_number":96,"context_line":"        share \u003d self.share_api.get(context, share_id)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        for id in existing:"},{"line_number":99,"context_line":"            self.share_api.delete_share_metadata(context, share, id)"},{"line_number":100,"context_line":"        new_metadata \u003d self._update_share_metadata("},{"line_number":101,"context_line":"            context, share_id, metadata, delete\u003dFalse)"},{"line_number":102,"context_line":"        return {\u0027metadata\u0027: new_metadata}"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def _update_share_metadata(self, context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"8b018536_0d192f6f","line":101,"range":{"start_line":95,"start_character":8,"end_line":101,"end_character":53},"updated":"2021-09-13 23:53:49.000000000","message":"Is this change necessary?","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a4b7f6638483d4cabd5245b7178b79ae89804808","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dexpl)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":95,"context_line":"        existing \u003d self._get_metadata(context, share_id)"},{"line_number":96,"context_line":"        share \u003d self.share_api.get(context, share_id)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        for id in existing:"},{"line_number":99,"context_line":"            self.share_api.delete_share_metadata(context, share, id)"},{"line_number":100,"context_line":"        new_metadata \u003d self._update_share_metadata("},{"line_number":101,"context_line":"            context, share_id, metadata, delete\u003dFalse)"},{"line_number":102,"context_line":"        return {\u0027metadata\u0027: new_metadata}"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def _update_share_metadata(self, context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"608295c9_6c51ca61","line":101,"range":{"start_line":95,"start_character":8,"end_line":101,"end_character":53},"in_reply_to":"8b018536_0d192f6f","updated":"2022-01-18 14:28:06.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":106,"context_line":"                               delete\u003dFalse):"},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":109,"context_line":"            for meta_key in metadata:"},{"line_number":110,"context_line":"                if meta_key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":111,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":112,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":113,"context_line":"            return self.share_api.update_share_metadata(context,"},{"line_number":114,"context_line":"                                                        share,"},{"line_number":115,"context_line":"                                                        metadata,"}],"source_content_type":"text/x-python","patch_set":4,"id":"047ed817_573df085","line":112,"range":{"start_line":109,"start_character":12,"end_line":112,"end_character":69},"updated":"2021-09-13 23:53:49.000000000","message":"With this, it\u0027s possible to update with new metadata not containing the scheduler hints, and still have the hint metadata items deleted.\n\n\ni.e., lets say a share has metadata: \u0027__affinity_same_host\u0027: \"UUID1,UUID2\"\n\na user sends a PUT request with {\u0027foo\u0027: \u0027bar\u0027}. \n\nThis check is ignored, because there\u0027s no \u0027__affinity_same_host\u0027, or \u0027affinity_different_host\u0027 in the metadata - but, all of the existing metadata is deleted and replaced with {\u0027foo\u0027: \u0027bar\u0027}","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a4b7f6638483d4cabd5245b7178b79ae89804808","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                               delete\u003dFalse):"},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":109,"context_line":"            for meta_key in metadata:"},{"line_number":110,"context_line":"                if meta_key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":111,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":112,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":113,"context_line":"            return self.share_api.update_share_metadata(context,"},{"line_number":114,"context_line":"                                                        share,"},{"line_number":115,"context_line":"                                                        metadata,"}],"source_content_type":"text/x-python","patch_set":4,"id":"010fbf4e_ce970ac1","line":112,"range":{"start_line":109,"start_character":12,"end_line":112,"end_character":69},"in_reply_to":"047ed817_573df085","updated":"2022-01-18 14:28:06.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":154,"context_line":"            self.share_api.delete_share_metadata(context, share, id)"},{"line_number":155,"context_line":"        except exception.NotFound:"},{"line_number":156,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"},{"line_number":157,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"708b8b9c_8fa38c1e","line":154,"range":{"start_line":154,"start_character":12,"end_line":154,"end_character":68},"updated":"2021-09-13 23:53:49.000000000","message":"Should perform the check here as well..","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a4b7f6638483d4cabd5245b7178b79ae89804808","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":154,"context_line":"            self.share_api.delete_share_metadata(context, share, id)"},{"line_number":155,"context_line":"        except exception.NotFound:"},{"line_number":156,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"},{"line_number":157,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"6e5a34fd_156b6487","line":154,"range":{"start_line":154,"start_character":12,"end_line":154,"end_character":68},"in_reply_to":"708b8b9c_8fa38c1e","updated":"2022-01-18 14:28:06.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6d66a1d71db4ec8112db1ce4937680c343d80ef0","unresolved":true,"context_lines":[{"line_number":182,"context_line":"            if id in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":183,"context_line":"                policy.check_policy(context, \u0027share\u0027,"},{"line_number":184,"context_line":"                                    \u0027update_admin_only_metadata\u0027)"},{"line_number":185,"context_line":"                self.share_api.delete_share_metadata(context, share, id)"},{"line_number":186,"context_line":"        except exception.NotFound:"},{"line_number":187,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"},{"line_number":188,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"f894fd4b_edf6acfc","line":185,"updated":"2021-09-20 16:33:13.000000000","message":"can we change to \n\n        try:\n            share \u003d self.share_api.get(context, share_id)\n            if id in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:\n                policy.check_policy(context, \u0027share\u0027,\n                                    \u0027update_admin_only_metadata\u0027)\n            self.share_api.delete_share_metadata(context, share, id)","commit_id":"de6d34d8a6b835fdea1574a157449fadde84fa23"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            if id in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":183,"context_line":"                policy.check_policy(context, \u0027share\u0027,"},{"line_number":184,"context_line":"                                    \u0027update_admin_only_metadata\u0027)"},{"line_number":185,"context_line":"                self.share_api.delete_share_metadata(context, share, id)"},{"line_number":186,"context_line":"        except exception.NotFound:"},{"line_number":187,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"},{"line_number":188,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1b845cd0_d2f25648","line":185,"in_reply_to":"f894fd4b_edf6acfc","updated":"2021-12-14 23:08:48.000000000","message":"Done","commit_id":"de6d34d8a6b835fdea1574a157449fadde84fa23"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":102,"context_line":"            if key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":103,"context_line":"                try:"},{"line_number":104,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":105,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":106,"context_line":"                except exception.PolicyNotAuthorized:"},{"line_number":107,"context_line":"                    msg \u003d _(\"Cannot change admin only metadata.\")"},{"line_number":108,"context_line":"                    LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"8310aa3d_55c2207e","line":105,"range":{"start_line":105,"start_character":68,"end_line":105,"end_character":69},"updated":"2021-10-13 23:37:35.000000000","message":"you could add a \"break\" after this","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            if key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":103,"context_line":"                try:"},{"line_number":104,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":105,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":106,"context_line":"                except exception.PolicyNotAuthorized:"},{"line_number":107,"context_line":"                    msg \u003d _(\"Cannot change admin only metadata.\")"},{"line_number":108,"context_line":"                    LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"c4e03a59_55b68578","line":105,"range":{"start_line":105,"start_character":68,"end_line":105,"end_character":69},"in_reply_to":"8310aa3d_55c2207e","updated":"2021-11-18 18:39:40.000000000","message":"Ack","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        for key in metadata:"},{"line_number":102,"context_line":"            if key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":103,"context_line":"                try:"},{"line_number":104,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":105,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":106,"context_line":"                except exception.PolicyNotAuthorized:"},{"line_number":107,"context_line":"                    msg \u003d _(\"Cannot change admin only metadata.\")"},{"line_number":108,"context_line":"                    LOG.exception(msg)"},{"line_number":109,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        can_update_admin_metadata \u003d policy.check_policy("},{"line_number":112,"context_line":"            context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027, do_raise\u003dFalse)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if not can_update_admin_metadata:"},{"line_number":115,"context_line":"            ignore_keys \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ec8a15f_044c468b","line":112,"range":{"start_line":101,"start_character":8,"end_line":112,"end_character":75},"updated":"2021-10-13 23:37:35.000000000","message":"Hmm, i see why you\u0027re doing this. however, wouldn\u0027t it be more readable if we did the policy check only once?\n\nsomething along these lines:\n\n user_can_update_admin_metadata \u003d policy.check_policy(\n            context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027, do_raise\u003dFalse)\n\n admin_only_keys \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS\n \n is_updating_admin_only_metadata \u003d any(key for key in metadata \n                                      if key in admin_only_keys)\n if is_updating_admin_only_metadata and not user_can_update_admin_metadata:\n    msg \u003d _(\"Cannot change admin only metadata.\")\n    LOG.exception(msg)\n    raise exc.HTTPForbidden(explanation\u003dmsg)\n elif not user_can_update_admin_metadata:\n    ignore_keys \u003d admin_only_keys\n\n ...","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        for key in metadata:"},{"line_number":102,"context_line":"            if key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":103,"context_line":"                try:"},{"line_number":104,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":105,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":106,"context_line":"                except exception.PolicyNotAuthorized:"},{"line_number":107,"context_line":"                    msg \u003d _(\"Cannot change admin only metadata.\")"},{"line_number":108,"context_line":"                    LOG.exception(msg)"},{"line_number":109,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        can_update_admin_metadata \u003d policy.check_policy("},{"line_number":112,"context_line":"            context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027, do_raise\u003dFalse)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if not can_update_admin_metadata:"},{"line_number":115,"context_line":"            ignore_keys \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS"}],"source_content_type":"text/x-python","patch_set":9,"id":"a4234eeb_d052d31b","line":112,"range":{"start_line":101,"start_character":8,"end_line":112,"end_character":75},"in_reply_to":"1ec8a15f_044c468b","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":114,"context_line":"        if not can_update_admin_metadata:"},{"line_number":115,"context_line":"            ignore_keys \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        new_metadata \u003d self._update_share_metadata("},{"line_number":118,"context_line":"            context, share_id, metadata, ignore_keys\u003dignore_keys, delete\u003dTrue)"},{"line_number":119,"context_line":"        return {\u0027metadata\u0027: new_metadata}"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _update_share_metadata(self, context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"a7732c08_7f7d2d07","line":118,"range":{"start_line":117,"start_character":23,"end_line":118,"end_character":78},"updated":"2021-10-13 23:37:35.000000000","message":"This method is also performing this policy check (Lines 128-131), why? \nPerhaps move this policy check logic into that common method since the other top level API methods (create, update, update_all) are all calling that method","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        if not can_update_admin_metadata:"},{"line_number":115,"context_line":"            ignore_keys \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        new_metadata \u003d self._update_share_metadata("},{"line_number":118,"context_line":"            context, share_id, metadata, ignore_keys\u003dignore_keys, delete\u003dTrue)"},{"line_number":119,"context_line":"        return {\u0027metadata\u0027: new_metadata}"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _update_share_metadata(self, context,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7260bbc0_089fc44b","line":118,"range":{"start_line":117,"start_character":23,"end_line":118,"end_character":78},"in_reply_to":"a7732c08_7f7d2d07","updated":"2021-11-18 18:39:40.000000000","message":"Ack","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":185,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"},{"line_number":186,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":187,"context_line":"        except exception.PolicyNotAuthorized:"},{"line_number":188,"context_line":"            msg \u003d _(\"Cannot change admin only metadata.\")"},{"line_number":189,"context_line":"            LOG.exception(msg)"},{"line_number":190,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":191,"context_line":"        return webob.Response(status_int\u003dhttp_client.OK)"}],"source_content_type":"text/x-python","patch_set":9,"id":"aee37bc6_b5de006e","line":188,"range":{"start_line":188,"start_character":28,"end_line":188,"end_character":34},"updated":"2021-10-13 23:37:35.000000000","message":"delete","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"},{"line_number":186,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":187,"context_line":"        except exception.PolicyNotAuthorized:"},{"line_number":188,"context_line":"            msg \u003d _(\"Cannot change admin only metadata.\")"},{"line_number":189,"context_line":"            LOG.exception(msg)"},{"line_number":190,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":191,"context_line":"        return webob.Response(status_int\u003dhttp_client.OK)"}],"source_content_type":"text/x-python","patch_set":9,"id":"4ffd74b8_1b3b4f68","line":188,"range":{"start_line":188,"start_character":28,"end_line":188,"end_character":34},"in_reply_to":"aee37bc6_b5de006e","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b2c66fe8ece48fbb4953533cd3e8cc449fd481cc","unresolved":true,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        for key in metadata:"},{"line_number":102,"context_line":"            if key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":103,"context_line":"                try:"},{"line_number":104,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":105,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":106,"context_line":"                except exception.PolicyNotAuthorized:"},{"line_number":107,"context_line":"                    msg \u003d _(\"Cannot change admin only metadata.\")"},{"line_number":108,"context_line":"                    LOG.exception(msg)"},{"line_number":109,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        can_update_admin_metadata \u003d policy.check_policy("},{"line_number":112,"context_line":"            context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027, do_raise\u003dFalse)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if not can_update_admin_metadata:"},{"line_number":115,"context_line":"            ignore_keys \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        new_metadata \u003d self._update_share_metadata("},{"line_number":118,"context_line":"            context, share_id, metadata, ignore_keys\u003dignore_keys, delete\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1fdd90f0_8db8c64b","line":115,"range":{"start_line":101,"start_character":8,"end_line":115,"end_character":71},"updated":"2021-12-09 23:08:06.000000000","message":"This policy checking is occurring thrice - twice in this method and once in the _update_share_metadata method.\n\nsince _update_share_metadata is being invoked by create, update and update_all - lets make all the changes there","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        for key in metadata:"},{"line_number":102,"context_line":"            if key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":103,"context_line":"                try:"},{"line_number":104,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":105,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":106,"context_line":"                except exception.PolicyNotAuthorized:"},{"line_number":107,"context_line":"                    msg \u003d _(\"Cannot change admin only metadata.\")"},{"line_number":108,"context_line":"                    LOG.exception(msg)"},{"line_number":109,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        can_update_admin_metadata \u003d policy.check_policy("},{"line_number":112,"context_line":"            context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027, do_raise\u003dFalse)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if not can_update_admin_metadata:"},{"line_number":115,"context_line":"            ignore_keys \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        new_metadata \u003d self._update_share_metadata("},{"line_number":118,"context_line":"            context, share_id, metadata, ignore_keys\u003dignore_keys, delete\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":16,"id":"580de628_af81327b","line":115,"range":{"start_line":101,"start_character":8,"end_line":115,"end_character":71},"in_reply_to":"1fdd90f0_8db8c64b","updated":"2021-12-14 23:08:48.000000000","message":"Ack","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b2c66fe8ece48fbb4953533cd3e8cc449fd481cc","unresolved":true,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _update_share_metadata(self, context,"},{"line_number":122,"context_line":"                               share_id, metadata,"},{"line_number":123,"context_line":"                               ignore_keys\u003dNone,"},{"line_number":124,"context_line":"                               delete\u003dFalse):"},{"line_number":125,"context_line":"        ignore_keys \u003d ignore_keys or []"},{"line_number":126,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"d96cfaa7_0b54d944","line":123,"range":{"start_line":123,"start_character":0,"end_line":123,"end_character":48},"updated":"2021-12-09 23:08:06.000000000","message":"no need for this parameter here","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def _update_share_metadata(self, context,"},{"line_number":122,"context_line":"                               share_id, metadata,"},{"line_number":123,"context_line":"                               ignore_keys\u003dNone,"},{"line_number":124,"context_line":"                               delete\u003dFalse):"},{"line_number":125,"context_line":"        ignore_keys \u003d ignore_keys or []"},{"line_number":126,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"376ab89a_7f805187","line":123,"range":{"start_line":123,"start_character":0,"end_line":123,"end_character":48},"in_reply_to":"d96cfaa7_0b54d944","updated":"2021-12-14 23:08:48.000000000","message":"Done","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b2c66fe8ece48fbb4953533cd3e8cc449fd481cc","unresolved":true,"context_lines":[{"line_number":122,"context_line":"                               share_id, metadata,"},{"line_number":123,"context_line":"                               ignore_keys\u003dNone,"},{"line_number":124,"context_line":"                               delete\u003dFalse):"},{"line_number":125,"context_line":"        ignore_keys \u003d ignore_keys or []"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":128,"context_line":"            for meta_key in metadata:"}],"source_content_type":"text/x-python","patch_set":16,"id":"7b6bb42c_dfac0134","line":125,"range":{"start_line":125,"start_character":0,"end_line":125,"end_character":39},"updated":"2021-12-09 23:08:06.000000000","message":"see suggestion below","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                               share_id, metadata,"},{"line_number":123,"context_line":"                               ignore_keys\u003dNone,"},{"line_number":124,"context_line":"                               delete\u003dFalse):"},{"line_number":125,"context_line":"        ignore_keys \u003d ignore_keys or []"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":128,"context_line":"            for meta_key in metadata:"}],"source_content_type":"text/x-python","patch_set":16,"id":"3be64693_8edbfeef","line":125,"range":{"start_line":125,"start_character":0,"end_line":125,"end_character":39},"in_reply_to":"7b6bb42c_dfac0134","updated":"2021-12-14 23:08:48.000000000","message":"Done","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b2c66fe8ece48fbb4953533cd3e8cc449fd481cc","unresolved":true,"context_lines":[{"line_number":125,"context_line":"        ignore_keys \u003d ignore_keys or []"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":128,"context_line":"            for meta_key in metadata:"},{"line_number":129,"context_line":"                if meta_key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":130,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":131,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":132,"context_line":"            return self.share_api.update_share_metadata("},{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"}],"source_content_type":"text/x-python","patch_set":16,"id":"2a381c9c_c1b3051e","line":131,"range":{"start_line":128,"start_character":12,"end_line":131,"end_character":69},"updated":"2021-12-09 23:08:06.000000000","message":"ignore_keys \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS\n if set(metadata).intersection(set(constants.AdminOnlyMetadata.SCHEDULER_FILTERS)):\n    try: \n        policy.check_policy(\n            context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027)\n    except exception.PolicyNotAuthorized:\n         msg \u003d _(\"Cannot set or update admin only metadata.\")\n         LOG.exception(msg)\n         raise exc.HTTPForbidden(explanation\u003dmsg)\n    ignore_keys \u003d None","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"881e9027f2a523f04e110cb348a0acb8a25c467b","unresolved":true,"context_lines":[{"line_number":125,"context_line":"        ignore_keys \u003d ignore_keys or []"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":128,"context_line":"            for meta_key in metadata:"},{"line_number":129,"context_line":"                if meta_key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":130,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":131,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":132,"context_line":"            return self.share_api.update_share_metadata("},{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"}],"source_content_type":"text/x-python","patch_set":16,"id":"daf03f2b_7bb07c84","line":131,"range":{"start_line":128,"start_character":12,"end_line":131,"end_character":69},"in_reply_to":"2a381c9c_c1b3051e","updated":"2021-12-14 03:14:57.000000000","message":"We can distinguish between the following four cases：\n1：admin user,      metadata contains admin_only_metadata\n2：admin user,      metadata not contains admin_only_metadata\n3: not admin user,  metadata contains admin_only_metadata\n4: not admin user,  metadata not contains admin_only_metadata\n\nin case 1:  ignore_keys can be None\nin case 2:  ignore_keys also can be None\nin case 3:  will raise exception.PolicyNotAuthorized, then won\u0027t execute the following                  self.share_api.update_share_metadata()\nin case 4:  ignore_keys also can be None","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        ignore_keys \u003d ignore_keys or []"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":128,"context_line":"            for meta_key in metadata:"},{"line_number":129,"context_line":"                if meta_key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":130,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":131,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":132,"context_line":"            return self.share_api.update_share_metadata("},{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"}],"source_content_type":"text/x-python","patch_set":16,"id":"75ee8101_a917df5d","line":131,"range":{"start_line":128,"start_character":12,"end_line":131,"end_character":69},"in_reply_to":"6c6c6bb0_6d9619f9","updated":"2021-12-14 23:08:48.000000000","message":"Ack","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"f8e238bad1e822b968782b9a7adf2b4acd0b2ee9","unresolved":true,"context_lines":[{"line_number":125,"context_line":"        ignore_keys \u003d ignore_keys or []"},{"line_number":126,"context_line":"        try:"},{"line_number":127,"context_line":"            share \u003d self.share_api.get(context, share_id)"},{"line_number":128,"context_line":"            for meta_key in metadata:"},{"line_number":129,"context_line":"                if meta_key in constants.AdminOnlyMetadata.SCHEDULER_FILTERS:"},{"line_number":130,"context_line":"                    policy.check_policy(context, \u0027share\u0027,"},{"line_number":131,"context_line":"                                        \u0027update_admin_only_metadata\u0027)"},{"line_number":132,"context_line":"            return self.share_api.update_share_metadata("},{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"}],"source_content_type":"text/x-python","patch_set":16,"id":"6c6c6bb0_6d9619f9","line":131,"range":{"start_line":128,"start_character":12,"end_line":131,"end_character":69},"in_reply_to":"daf03f2b_7bb07c84","updated":"2021-12-14 03:18:58.000000000","message":"so the code can be:\nadmin_only_metadata \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS\nif set(metadata).intersection(set(admin_only_metadata)):\n    try: \n        policy.check_policy(\n            context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027)\n    except exception.PolicyNotAuthorized:\n         msg \u003d _(\"Cannot set or update admin only metadata.\")\n         LOG.exception(msg)\n         raise exc.HTTPForbidden(explanation\u003dmsg)","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"881e9027f2a523f04e110cb348a0acb8a25c467b","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"},{"line_number":135,"context_line":"                metadata,"},{"line_number":136,"context_line":"                ignore_keys\u003dignore_keys,"},{"line_number":137,"context_line":"                delete\u003ddelete)"},{"line_number":138,"context_line":"        except exception.NotFound:"},{"line_number":139,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"cb37386c_fc42e206","line":136,"range":{"start_line":136,"start_character":16,"end_line":136,"end_character":40},"updated":"2021-12-14 03:14:57.000000000","message":"To sum up:\nWhether admin or not admin user, we no need for this parameter here,","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"b12a31cf7a71330145969903576a025167641964","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"},{"line_number":135,"context_line":"                metadata,"},{"line_number":136,"context_line":"                ignore_keys\u003dignore_keys,"},{"line_number":137,"context_line":"                delete\u003ddelete)"},{"line_number":138,"context_line":"        except exception.NotFound:"},{"line_number":139,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"de295558_281ae287","line":136,"range":{"start_line":136,"start_character":16,"end_line":136,"end_character":40},"in_reply_to":"00096fe4_3154d31a","updated":"2021-12-15 16:44:17.000000000","message":"So if end-user tries to update_all with metadata A and B, ignore key must include C or else it will be deleted (the delete parameter will be delete\u003dTrue from update_all). If ignore-keys is None, then with delete\u003dTrue metadata C will be deleted by end user, even though they may not have meant to. Does this clarify things?","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"b5475fbd156ca4eb4294389951246606b230e9d6","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"},{"line_number":135,"context_line":"                metadata,"},{"line_number":136,"context_line":"                ignore_keys\u003dignore_keys,"},{"line_number":137,"context_line":"                delete\u003ddelete)"},{"line_number":138,"context_line":"        except exception.NotFound:"},{"line_number":139,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"6cafc965_d70d0609","line":136,"range":{"start_line":136,"start_character":16,"end_line":136,"end_character":40},"in_reply_to":"5c8657ed_0b28085e","updated":"2021-12-15 01:54:43.000000000","message":"in case 4((non-admin user does not try to update admin-only keys),end user want to update metadata A and B of share, assumption the share has metadata A, B, C(admin only).\nignore_keys \u003d constants.AdminOnlyMetadata.SCHEDULER_FILTERS\n# ignore_keys is C and other admin only metadata.\ntry:\n    share \u003d self.share_api.get(context, share_id)\n        # The following if condition will not be satisfied\n        if set(metadata).intersection(set(ignore_keys)):\n            try:\n                policy.check_policy(\n                   context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027)\n                except exception.PolicyNotAuthorized:\n                    msg \u003d _(\"Cannot set or update admin only metadata.\")\n                    LOG.exception(msg)\n                    raise exc.HTTPForbidden(explanation\u003dmsg)\n                ignore_keys \u003d None\n            return self.share_api.update_share_metadata(\n                context,\n                share,\n                metadata,  # metadata is A and B, None of them are admin only metadata, Whether ignore_keys is None or C does not affect admin only metadata.\n                ignore_keys\u003dignore_keys,\n                delete\u003ddelete)\n\nHow do you think about this? or i missed something?","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"97d38e826aab2f86a11c7be8ac6bd8527e0e6b01","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"},{"line_number":135,"context_line":"                metadata,"},{"line_number":136,"context_line":"                ignore_keys\u003dignore_keys,"},{"line_number":137,"context_line":"                delete\u003ddelete)"},{"line_number":138,"context_line":"        except exception.NotFound:"},{"line_number":139,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"00096fe4_3154d31a","line":136,"range":{"start_line":136,"start_character":16,"end_line":136,"end_character":40},"in_reply_to":"6cafc965_d70d0609","updated":"2021-12-15 01:57:40.000000000","message":"There is something wrong with indentation of the code I copied, please refer to the main line code","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":true,"context_lines":[{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"},{"line_number":135,"context_line":"                metadata,"},{"line_number":136,"context_line":"                ignore_keys\u003dignore_keys,"},{"line_number":137,"context_line":"                delete\u003ddelete)"},{"line_number":138,"context_line":"        except exception.NotFound:"},{"line_number":139,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5c8657ed_0b28085e","line":136,"range":{"start_line":136,"start_character":16,"end_line":136,"end_character":40},"in_reply_to":"cb37386c_fc42e206","updated":"2021-12-14 23:08:48.000000000","message":"The ignore_keys parameter applies more to the update_all method. For example, if in case 4 (non-admin user does not try to update admin-only keys) BUT that metadata does already exist, the return code would be only line executed. The ignore_keys parameter will make sure that all OTHER metadata does get deleted but preserves the admin-only metadata. Otherwise, a nonadmin user could overwrite and delete what should have stayed. Does that make sense?","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"08c735abcf3dcc81c0e339adf08fe65d45167e48","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                context,"},{"line_number":134,"context_line":"                share,"},{"line_number":135,"context_line":"                metadata,"},{"line_number":136,"context_line":"                ignore_keys\u003dignore_keys,"},{"line_number":137,"context_line":"                delete\u003ddelete)"},{"line_number":138,"context_line":"        except exception.NotFound:"},{"line_number":139,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"92d2d1fc_791e8062","line":136,"range":{"start_line":136,"start_character":16,"end_line":136,"end_character":40},"in_reply_to":"de295558_281ae287","updated":"2021-12-16 01:35:11.000000000","message":"Thank you for your explanation. I ignored the delete parameter before.","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":112,"context_line":"                    policy.check_policy("},{"line_number":113,"context_line":"                        context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027)"},{"line_number":114,"context_line":"                except exception.PolicyNotAuthorized:"},{"line_number":115,"context_line":"                    msg \u003d _(\"Cannot set or update admin only metadata.\")"},{"line_number":116,"context_line":"                    LOG.exception(msg)"},{"line_number":117,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":118,"context_line":"                ignore_keys \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"f66ba4c2_3474d5fb","line":115,"range":{"start_line":115,"start_character":55,"end_line":115,"end_character":56},"updated":"2022-02-02 21:58:52.000000000","message":"hyphen","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":112,"context_line":"                    policy.check_policy("},{"line_number":113,"context_line":"                        context, \u0027share\u0027, \u0027update_admin_only_metadata\u0027)"},{"line_number":114,"context_line":"                except exception.PolicyNotAuthorized:"},{"line_number":115,"context_line":"                    msg \u003d _(\"Cannot set or update admin only metadata.\")"},{"line_number":116,"context_line":"                    LOG.exception(msg)"},{"line_number":117,"context_line":"                    raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":118,"context_line":"                ignore_keys \u003d None"}],"source_content_type":"text/x-python","patch_set":21,"id":"13d23218_a79e3124","line":115,"range":{"start_line":115,"start_character":69,"end_line":115,"end_character":70},"updated":"2022-02-02 21:58:52.000000000","message":"print keys you are avoiding","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":167,"context_line":"            msg \u003d _(\u0027share does not exist\u0027)"},{"line_number":168,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":169,"context_line":"        except exception.PolicyNotAuthorized:"},{"line_number":170,"context_line":"            msg \u003d _(\"Cannot delete admin only metadata.\")"},{"line_number":171,"context_line":"            LOG.exception(msg)"},{"line_number":172,"context_line":"            raise exc.HTTPForbidden(explanation\u003dmsg)"},{"line_number":173,"context_line":"        return webob.Response(status_int\u003dhttp_client.OK)"}],"source_content_type":"text/x-python","patch_set":21,"id":"06990ad6_34139595","line":170,"range":{"start_line":170,"start_character":40,"end_line":170,"end_character":41},"updated":"2022-02-02 21:58:52.000000000","message":"hyphen","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"}],"manila/common/constants.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":300,"context_line":"    AFFINITY_KEY \u003d \"__affinity_same_host\""},{"line_number":301,"context_line":"    ANTI_AFFINITY_KEY \u003d \"__affinity_different_host\""},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    SCHEDULER_FILTERS \u003d ("},{"line_number":304,"context_line":"        AFFINITY_KEY,"},{"line_number":305,"context_line":"        ANTI_AFFINITY_KEY"},{"line_number":306,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a7a835a_1a593779","line":303,"range":{"start_line":303,"start_character":4,"end_line":303,"end_character":21},"updated":"2021-10-13 23:37:35.000000000","message":"s/FILTERS/HINTS","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    AFFINITY_KEY \u003d \"__affinity_same_host\""},{"line_number":301,"context_line":"    ANTI_AFFINITY_KEY \u003d \"__affinity_different_host\""},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    SCHEDULER_FILTERS \u003d ("},{"line_number":304,"context_line":"        AFFINITY_KEY,"},{"line_number":305,"context_line":"        ANTI_AFFINITY_KEY"},{"line_number":306,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":9,"id":"15e2508e_77e9bfd6","line":303,"range":{"start_line":303,"start_character":4,"end_line":303,"end_character":21},"in_reply_to":"9a7a835a_1a593779","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"}],"manila/db/sqlalchemy/api.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5c76d84b_a0a6604a","updated":"2021-09-13 23:53:49.000000000","message":"If its just whitespace changes, please revert these changes.","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a4b7f6638483d4cabd5245b7178b79ae89804808","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"02218990_8382298c","in_reply_to":"5c76d84b_a0a6604a","updated":"2022-01-18 14:28:06.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"}],"manila/policies/shares.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":216,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027update_admin_only_metadata\u0027,"},{"line_number":217,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":218,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":219,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":220,"context_line":")"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"shares_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"723ee5d0_0c54a26b","line":219,"range":{"start_line":219,"start_character":45,"end_line":219,"end_character":52},"updated":"2021-09-13 23:53:49.000000000","message":"XENA","commit_id":"583d0dd480fb79f6e581432e638e10331701e1af"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a4b7f6638483d4cabd5245b7178b79ae89804808","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027update_admin_only_metadata\u0027,"},{"line_number":217,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":218,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":219,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":220,"context_line":")"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"shares_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"2111d63c_af2d3484","line":219,"range":{"start_line":219,"start_character":45,"end_line":219,"end_character":52},"in_reply_to":"723ee5d0_0c54a26b","updated":"2022-01-18 14:28:06.000000000","message":"Done","commit_id":"583d0dd480fb79f6e581432e638e10331701e1af"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":216,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027update_admin_only_metadata\u0027,"},{"line_number":217,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":218,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":219,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":220,"context_line":")"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"shares_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"99b6cb80_3eb2b64b","line":219,"range":{"start_line":219,"start_character":45,"end_line":219,"end_character":52},"updated":"2021-09-13 23:53:49.000000000","message":"XENA","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a4b7f6638483d4cabd5245b7178b79ae89804808","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027update_admin_only_metadata\u0027,"},{"line_number":217,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":218,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":219,"context_line":"    deprecated_since\u003dversionutils.deprecated.WALLABY"},{"line_number":220,"context_line":")"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"shares_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"e9b31fca_e2d5eef8","line":219,"range":{"start_line":219,"start_character":45,"end_line":219,"end_character":52},"in_reply_to":"99b6cb80_3eb2b64b","updated":"2022-01-18 14:28:06.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":658,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027update_admin_only_metadata\u0027,"},{"line_number":659,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN_OR_PROJECT_ADMIN,"},{"line_number":660,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":661,"context_line":"        description\u003d(\"Update share metadata with user_modifiable\u003dFalse.\"),"},{"line_number":662,"context_line":"        operations\u003d["},{"line_number":663,"context_line":"            {"},{"line_number":664,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"f1ac0cab_e608276b","line":661,"range":{"start_line":661,"start_character":22,"end_line":661,"end_character":71},"updated":"2021-09-13 23:53:49.000000000","message":"Update metadata items that are considered \"admin only\" by the service.","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a4b7f6638483d4cabd5245b7178b79ae89804808","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        name\u003dBASE_POLICY_NAME % \u0027update_admin_only_metadata\u0027,"},{"line_number":659,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN_OR_PROJECT_ADMIN,"},{"line_number":660,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":661,"context_line":"        description\u003d(\"Update share metadata with user_modifiable\u003dFalse.\"),"},{"line_number":662,"context_line":"        operations\u003d["},{"line_number":663,"context_line":"            {"},{"line_number":664,"context_line":"                \u0027method\u0027: \u0027PUT\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"a8acb527_c093650a","line":661,"range":{"start_line":661,"start_character":22,"end_line":661,"end_character":71},"in_reply_to":"f1ac0cab_e608276b","updated":"2022-01-18 14:28:06.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":216,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027update_admin_only_metadata\u0027,"},{"line_number":217,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":218,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":219,"context_line":"    deprecated_since\u003dversionutils.deprecated.XENA"},{"line_number":220,"context_line":")"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"shares_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":9,"id":"b701cb70_e9672d86","line":219,"range":{"start_line":219,"start_character":45,"end_line":219,"end_character":49},"updated":"2021-10-13 23:37:35.000000000","message":"YOGA","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    name\u003dBASE_POLICY_NAME % \u0027update_admin_only_metadata\u0027,"},{"line_number":217,"context_line":"    check_str\u003dbase.RULE_ADMIN_API,"},{"line_number":218,"context_line":"    deprecated_reason\u003dDEPRECATED_REASON,"},{"line_number":219,"context_line":"    deprecated_since\u003dversionutils.deprecated.XENA"},{"line_number":220,"context_line":")"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"shares_policies \u003d ["}],"source_content_type":"text/x-python","patch_set":9,"id":"0e36db64_dfd05d44","line":219,"range":{"start_line":219,"start_character":45,"end_line":219,"end_character":49},"in_reply_to":"b701cb70_e9672d86","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":659,"context_line":"        check_str\u003dbase.SYSTEM_ADMIN_OR_PROJECT_ADMIN,"},{"line_number":660,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":661,"context_line":"        description\u003d("},{"line_number":662,"context_line":"            \"Update metadata items that are considered \\\"admin only\\\" \""},{"line_number":663,"context_line":"            \"by the service.\"),"},{"line_number":664,"context_line":"        operations\u003d["},{"line_number":665,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":21,"id":"779a0af7_a7e26f39","line":662,"range":{"start_line":662,"start_character":62,"end_line":662,"end_character":63},"updated":"2022-02-02 21:58:52.000000000","message":"hyphen","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"}],"manila/share/api.py":[{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6d66a1d71db4ec8112db1ce4937680c343d80ef0","unresolved":true,"context_lines":[{"line_number":2199,"context_line":"                              delete\u003dFalse):"},{"line_number":2200,"context_line":"        \"\"\"Updates or creates share metadata."},{"line_number":2201,"context_line":""},{"line_number":2202,"context_line":"        If delete is True, metadata items that are not specified in the"},{"line_number":2203,"context_line":"        `metadata` argument will be deleted."},{"line_number":2204,"context_line":""},{"line_number":2205,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"36f91aaa_aa5fca4e","line":2202,"updated":"2021-09-20 16:33:13.000000000","message":"Need to update comment to specify behavior with new parameter ignore_keys","commit_id":"de6d34d8a6b835fdea1574a157449fadde84fa23"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":false,"context_lines":[{"line_number":2199,"context_line":"                              delete\u003dFalse):"},{"line_number":2200,"context_line":"        \"\"\"Updates or creates share metadata."},{"line_number":2201,"context_line":""},{"line_number":2202,"context_line":"        If delete is True, metadata items that are not specified in the"},{"line_number":2203,"context_line":"        `metadata` argument will be deleted."},{"line_number":2204,"context_line":""},{"line_number":2205,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"19c9813f_7e49d5bb","line":2202,"in_reply_to":"36f91aaa_aa5fca4e","updated":"2021-12-14 23:08:48.000000000","message":"Done","commit_id":"de6d34d8a6b835fdea1574a157449fadde84fa23"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":2202,"context_line":"        If delete is True, metadata items that are not specified in the"},{"line_number":2203,"context_line":"        `metadata` argument will be deleted."},{"line_number":2204,"context_line":""},{"line_number":2205,"context_line":"        Non-admin user may not attempt to create or update admin-only keys."},{"line_number":2206,"context_line":"        For example: \"__affinity_same_host\" or \"__affinity_different_host\"."},{"line_number":2207,"context_line":"        These keys will be ignored in update-all method, preserving their"},{"line_number":2208,"context_line":"        values, unless RBAC policy allows manipluation of this data."},{"line_number":2209,"context_line":""},{"line_number":2210,"context_line":"        \"\"\""},{"line_number":2211,"context_line":"        ignore_keys \u003d ignore_keys or []"}],"source_content_type":"text/x-python","patch_set":9,"id":"b0a23e4c_a9e08181","line":2208,"range":{"start_line":2205,"start_character":8,"end_line":2208,"end_character":68},"updated":"2021-10-13 23:37:35.000000000","message":"since the RBAC check is happening elsewhere, this comment can be reworded to communicate what the \"ignore_keys\" is about. \n\nignore_keys allows you to specify which metadata items must be preserved if they exist.","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":2202,"context_line":"        If delete is True, metadata items that are not specified in the"},{"line_number":2203,"context_line":"        `metadata` argument will be deleted."},{"line_number":2204,"context_line":""},{"line_number":2205,"context_line":"        Non-admin user may not attempt to create or update admin-only keys."},{"line_number":2206,"context_line":"        For example: \"__affinity_same_host\" or \"__affinity_different_host\"."},{"line_number":2207,"context_line":"        These keys will be ignored in update-all method, preserving their"},{"line_number":2208,"context_line":"        values, unless RBAC policy allows manipluation of this data."},{"line_number":2209,"context_line":""},{"line_number":2210,"context_line":"        \"\"\""},{"line_number":2211,"context_line":"        ignore_keys \u003d ignore_keys or []"}],"source_content_type":"text/x-python","patch_set":9,"id":"aa2912a7_4ca478c2","line":2208,"range":{"start_line":2205,"start_character":8,"end_line":2208,"end_character":68},"in_reply_to":"b0a23e4c_a9e08181","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"08c735abcf3dcc81c0e339adf08fe65d45167e48","unresolved":true,"context_lines":[{"line_number":1366,"context_line":"        except Exception:"},{"line_number":1367,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1368,"context_line":"                try:"},{"line_number":1369,"context_line":"                    self.db.snapshot_delete(context, share[\u0027id\u0027])"},{"line_number":1370,"context_line":"                finally:"},{"line_number":1371,"context_line":"                    QUOTAS.rollback("},{"line_number":1372,"context_line":"                        context, reservations,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7d67767f_a5dd1b87","line":1369,"range":{"start_line":1369,"start_character":20,"end_line":1369,"end_character":65},"updated":"2021-12-16 01:35:11.000000000","message":"there is no snapshot_delete method in manila/db/api.py. so we got error:\nhttps://zuul.opendev.org/t/openstack/build/f28a2ca7ad184cc890c47f9e43013681\n\nWhy change create_snapshot?","commit_id":"aff38f7a7385e8bd1fa6edcff2afbfe347ed478e"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"5c2c1ffa5f2270fadbc8099aa0234d493b7c809f","unresolved":true,"context_lines":[{"line_number":1366,"context_line":"        except Exception:"},{"line_number":1367,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1368,"context_line":"                try:"},{"line_number":1369,"context_line":"                    self.db.snapshot_delete(context, share[\u0027id\u0027])"},{"line_number":1370,"context_line":"                finally:"},{"line_number":1371,"context_line":"                    QUOTAS.rollback("},{"line_number":1372,"context_line":"                        context, reservations,"}],"source_content_type":"text/x-python","patch_set":17,"id":"869c457c_fc64f0b3","line":1369,"range":{"start_line":1369,"start_character":20,"end_line":1369,"end_character":65},"in_reply_to":"7d67767f_a5dd1b87","updated":"2021-12-16 17:07:35.000000000","message":"you\u0027re correct, that was an incorrect rebase on my part.","commit_id":"aff38f7a7385e8bd1fa6edcff2afbfe347ed478e"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"8e0889370268187e007ba7a1452d258eb2dee3a7","unresolved":false,"context_lines":[{"line_number":1366,"context_line":"        except Exception:"},{"line_number":1367,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":1368,"context_line":"                try:"},{"line_number":1369,"context_line":"                    self.db.snapshot_delete(context, share[\u0027id\u0027])"},{"line_number":1370,"context_line":"                finally:"},{"line_number":1371,"context_line":"                    QUOTAS.rollback("},{"line_number":1372,"context_line":"                        context, reservations,"}],"source_content_type":"text/x-python","patch_set":17,"id":"615fe9d2_54009ed0","line":1369,"range":{"start_line":1369,"start_character":20,"end_line":1369,"end_character":65},"in_reply_to":"869c457c_fc64f0b3","updated":"2022-01-18 14:29:13.000000000","message":"Done","commit_id":"aff38f7a7385e8bd1fa6edcff2afbfe347ed478e"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"41971aa948e186c6f10cb2fa7a185cdb0a426f28","unresolved":true,"context_lines":[{"line_number":1359,"context_line":"                   \u0027share_proto\u0027: share[\u0027share_proto\u0027]}"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"        try:"},{"line_number":1362,"context_line":"            snapshot \u003d None"},{"line_number":1363,"context_line":"            snapshot \u003d self.db.share_snapshot_create(context, options)"},{"line_number":1364,"context_line":"            QUOTAS.commit("},{"line_number":1365,"context_line":"                context, reservations,"}],"source_content_type":"text/x-python","patch_set":18,"id":"68c867ec_ba12ff64","side":"PARENT","line":1362,"range":{"start_line":1362,"start_character":12,"end_line":1362,"end_character":27},"updated":"2021-12-17 07:36:18.000000000","message":"you have missed this line in patchset 18.","commit_id":"5ff97f51a296443948e027a7e1fd302b3984dd16"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"028c54fca6506aec80de9a7c17f0054e45defcaa","unresolved":false,"context_lines":[{"line_number":1359,"context_line":"                   \u0027share_proto\u0027: share[\u0027share_proto\u0027]}"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"        try:"},{"line_number":1362,"context_line":"            snapshot \u003d None"},{"line_number":1363,"context_line":"            snapshot \u003d self.db.share_snapshot_create(context, options)"},{"line_number":1364,"context_line":"            QUOTAS.commit("},{"line_number":1365,"context_line":"                context, reservations,"}],"source_content_type":"text/x-python","patch_set":18,"id":"2814e051_1013173a","side":"PARENT","line":1362,"range":{"start_line":1362,"start_character":12,"end_line":1362,"end_character":27},"in_reply_to":"68c867ec_ba12ff64","updated":"2022-01-18 14:18:17.000000000","message":"Done","commit_id":"5ff97f51a296443948e027a7e1fd302b3984dd16"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":2212,"context_line":"        Non-admin user may not attempt to create or update admin-only keys."},{"line_number":2213,"context_line":"        For example: \"__affinity_same_host\" or \"__affinity_different_host\"."},{"line_number":2214,"context_line":"        These keys will be ignored in update-all method, preserving their"},{"line_number":2215,"context_line":"        values, unless RBAC policy allows manipluation of this data."},{"line_number":2216,"context_line":""},{"line_number":2217,"context_line":"        \"\"\""},{"line_number":2218,"context_line":"        ignore_keys \u003d ignore_keys or []"}],"source_content_type":"text/x-python","patch_set":21,"id":"bdc94751_eaea4668","line":2215,"range":{"start_line":2215,"start_character":42,"end_line":2215,"end_character":54},"updated":"2022-02-02 21:58:52.000000000","message":"sp","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"}],"manila/tests/api/v1/test_share_metadata.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":53,"context_line":"    def test_index(self):"},{"line_number":54,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"},{"line_number":55,"context_line":"        res_dict \u003d self.controller.index(req, self.share_id)"},{"line_number":56,"context_line":"        expected \u003d {"},{"line_number":57,"context_line":"            \u0027metadata\u0027: {"},{"line_number":58,"context_line":"                \u0027key1\u0027: \u0027value1\u0027,"},{"line_number":59,"context_line":"                \u0027key2\u0027: \u0027value2\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"aaf095d2_9a980b5e","line":56,"range":{"start_line":56,"start_character":3,"end_line":56,"end_character":4},"updated":"2021-09-13 23:53:49.000000000","message":"the blank line above was intentional.. \nit\u0027s a convention to space out unit test code like this:\n\n def some_unit_test(self):\n     # data/mocks setup\n     # blank line\n     # method invocation\n     # blank line\n     # asserts","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"a4b7f6638483d4cabd5245b7178b79ae89804808","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    def test_index(self):"},{"line_number":54,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"},{"line_number":55,"context_line":"        res_dict \u003d self.controller.index(req, self.share_id)"},{"line_number":56,"context_line":"        expected \u003d {"},{"line_number":57,"context_line":"            \u0027metadata\u0027: {"},{"line_number":58,"context_line":"                \u0027key1\u0027: \u0027value1\u0027,"},{"line_number":59,"context_line":"                \u0027key2\u0027: \u0027value2\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"f0a9c391_dad875ff","line":56,"range":{"start_line":56,"start_character":3,"end_line":56,"end_character":4},"in_reply_to":"aaf095d2_9a980b5e","updated":"2022-01-18 14:28:06.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":238,"context_line":"        db.share_metadata_update("},{"line_number":239,"context_line":"            self.userctxt, self.share_id, establish, delete\u003dFalse)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        body \u003d {\u0027metadata\u0027: {\u0027__affinity_same_host\u0027: \u0027share1,share2\u0027}}"},{"line_number":242,"context_line":"        req.body \u003d jsonutils.dumps(body).encode(\"utf-8\")"},{"line_number":243,"context_line":"        self.assertRaises("},{"line_number":244,"context_line":"            exception.PolicyNotAuthorized,"}],"source_content_type":"text/x-python","patch_set":4,"id":"8269b6da_e9099daf","line":241,"range":{"start_line":241,"start_character":30,"end_line":241,"end_character":50},"updated":"2021-09-13 23:53:49.000000000","message":"use ddt and test both as well as combinations of this:\n\n @ddt.data({\u0027__affinity_same_host\u0027: \u0027foo\u0027},\n           {\u0027__affinity_different_host\u0027: \u0027foo\u0027},\n           {\u0027__affinity_same_host\u0027: \u0027foo\u0027,\n            \u0027__affinity_different_host\u0027: \u0027bar\u0027},\n           {\u0027__affinity_same_host\u0027: \u0027foo\u0027,\n            \u0027__affinity_different_host\u0027: \u0027bar\u0027,\n            \u0027foo\u0027: \u0027bar\u0027},\n def test_update_all_affinities_user(self, metadata):\n        //setup\n        body \u003d {\u0027metadata\u0027: metadata}\n       ...","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"8e0889370268187e007ba7a1452d258eb2dee3a7","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        db.share_metadata_update("},{"line_number":239,"context_line":"            self.userctxt, self.share_id, establish, delete\u003dFalse)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        body \u003d {\u0027metadata\u0027: {\u0027__affinity_same_host\u0027: \u0027share1,share2\u0027}}"},{"line_number":242,"context_line":"        req.body \u003d jsonutils.dumps(body).encode(\"utf-8\")"},{"line_number":243,"context_line":"        self.assertRaises("},{"line_number":244,"context_line":"            exception.PolicyNotAuthorized,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ab699ebb_e9ec519c","line":241,"range":{"start_line":241,"start_character":30,"end_line":241,"end_character":50},"in_reply_to":"8269b6da_e9099daf","updated":"2022-01-18 14:29:13.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":245,"context_line":"            self.controller.update_all,"},{"line_number":246,"context_line":"            req, self.share_id, body)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def test_update_all_affinities_admin(self):"},{"line_number":249,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"},{"line_number":250,"context_line":"        req.method \u003d \u0027PUT\u0027"},{"line_number":251,"context_line":"        req.content_type \u003d \"application/json\""}],"source_content_type":"text/x-python","patch_set":4,"id":"c8559c7c_7d741b12","line":248,"range":{"start_line":248,"start_character":8,"end_line":248,"end_character":40},"updated":"2021-09-13 23:53:49.000000000","message":"same comment as above..","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"8e0889370268187e007ba7a1452d258eb2dee3a7","unresolved":false,"context_lines":[{"line_number":245,"context_line":"            self.controller.update_all,"},{"line_number":246,"context_line":"            req, self.share_id, body)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    def test_update_all_affinities_admin(self):"},{"line_number":249,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"},{"line_number":250,"context_line":"        req.method \u003d \u0027PUT\u0027"},{"line_number":251,"context_line":"        req.content_type \u003d \"application/json\""}],"source_content_type":"text/x-python","patch_set":4,"id":"25c1b4c6_33eca27a","line":248,"range":{"start_line":248,"start_character":8,"end_line":248,"end_character":40},"in_reply_to":"c8559c7c_7d741b12","updated":"2022-01-18 14:29:13.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3244edd6181be09ca9f958b21eef00063808d2d3","unresolved":true,"context_lines":[{"line_number":346,"context_line":"                          self.controller.update, req, self.share_id, \u0027bad\u0027,"},{"line_number":347,"context_line":"                          body)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def test_update_item_affinities_user(self):"},{"line_number":350,"context_line":"        self.userctxt \u003d context.RequestContext(\u0027demo\u0027, \u0027fake\u0027, False)"},{"line_number":351,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url + \u0027/key11\u0027)"},{"line_number":352,"context_line":"        req.method \u003d \u0027PUT\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfe0ef11_620892a8","line":349,"range":{"start_line":349,"start_character":8,"end_line":349,"end_character":40},"updated":"2021-09-13 23:53:49.000000000","message":"ddt can be used here as well for the two specific keys you\u0027re preventing..","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"8e0889370268187e007ba7a1452d258eb2dee3a7","unresolved":false,"context_lines":[{"line_number":346,"context_line":"                          self.controller.update, req, self.share_id, \u0027bad\u0027,"},{"line_number":347,"context_line":"                          body)"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    def test_update_item_affinities_user(self):"},{"line_number":350,"context_line":"        self.userctxt \u003d context.RequestContext(\u0027demo\u0027, \u0027fake\u0027, False)"},{"line_number":351,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url + \u0027/key11\u0027)"},{"line_number":352,"context_line":"        req.method \u003d \u0027PUT\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"a8e8db13_bb187996","line":349,"range":{"start_line":349,"start_character":8,"end_line":349,"end_character":40},"in_reply_to":"dfe0ef11_620892a8","updated":"2022-01-18 14:29:13.000000000","message":"Done","commit_id":"d4bb85a0370f5910134f22a3f9a5c6f3767816bc"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        #  test nothing was deleted or updated"},{"line_number":262,"context_line":"        after_update_all \u003d db.share_metadata_get(self.userctxt, self.share_id)"},{"line_number":263,"context_line":"        self.assertEqual(after_update_all, before_update_all)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    @ddt.data({AFFINITY_KEY: \u0027foo\u0027},"},{"line_number":266,"context_line":"              {ANTI_AFFINITY_KEY: \u0027foo\u0027},"}],"source_content_type":"text/x-python","patch_set":9,"id":"528f24bf_01dfb688","line":263,"range":{"start_line":263,"start_character":0,"end_line":263,"end_character":61},"updated":"2021-10-13 23:37:35.000000000","message":"nit: order of assertion matters for logging: expected, actual","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        #  test nothing was deleted or updated"},{"line_number":262,"context_line":"        after_update_all \u003d db.share_metadata_get(self.userctxt, self.share_id)"},{"line_number":263,"context_line":"        self.assertEqual(after_update_all, before_update_all)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    @ddt.data({AFFINITY_KEY: \u0027foo\u0027},"},{"line_number":266,"context_line":"              {ANTI_AFFINITY_KEY: \u0027foo\u0027},"}],"source_content_type":"text/x-python","patch_set":9,"id":"a626c438_51d209a4","line":263,"range":{"start_line":263,"start_character":0,"end_line":263,"end_character":61},"in_reply_to":"528f24bf_01dfb688","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":394,"context_line":"        data \u003d db.share_metadata_get(self.userctxt, self.share_id)"},{"line_number":395,"context_line":"        if AFFINITY_KEY in data:"},{"line_number":396,"context_line":"            res_dict \u003d {\u0027meta\u0027: {AFFINITY_KEY: data[AFFINITY_KEY]}}"},{"line_number":397,"context_line":"        self.assertEqual(res_dict, {\u0027meta\u0027: establish})"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    @ddt.data((AFFINITY_KEY, \u0027/\u0027 + AFFINITY_KEY),"},{"line_number":400,"context_line":"              (ANTI_AFFINITY_KEY, \u0027/\u0027 + ANTI_AFFINITY_KEY))"}],"source_content_type":"text/x-python","patch_set":9,"id":"a1c7015e_2636bff4","line":397,"range":{"start_line":397,"start_character":0,"end_line":397,"end_character":55},"updated":"2021-10-13 23:37:35.000000000","message":"self.assertEqual({\u0027meta\u0027: establish}, res_dict)","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        data \u003d db.share_metadata_get(self.userctxt, self.share_id)"},{"line_number":395,"context_line":"        if AFFINITY_KEY in data:"},{"line_number":396,"context_line":"            res_dict \u003d {\u0027meta\u0027: {AFFINITY_KEY: data[AFFINITY_KEY]}}"},{"line_number":397,"context_line":"        self.assertEqual(res_dict, {\u0027meta\u0027: establish})"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    @ddt.data((AFFINITY_KEY, \u0027/\u0027 + AFFINITY_KEY),"},{"line_number":400,"context_line":"              (ANTI_AFFINITY_KEY, \u0027/\u0027 + ANTI_AFFINITY_KEY))"}],"source_content_type":"text/x-python","patch_set":9,"id":"2661fba1_6b31c48b","line":397,"range":{"start_line":397,"start_character":0,"end_line":397,"end_character":55},"in_reply_to":"a1c7015e_2636bff4","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":414,"context_line":"        res_dict \u003d self.controller.update("},{"line_number":415,"context_line":"            req, self.share_id, key, body)"},{"line_number":416,"context_line":"        expected \u003d body"},{"line_number":417,"context_line":"        self.assertEqual(res_dict, expected)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def test_invalid_metadata_items_on_create(self):"},{"line_number":420,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"}],"source_content_type":"text/x-python","patch_set":9,"id":"e8af4854_d327b467","line":417,"range":{"start_line":417,"start_character":8,"end_line":417,"end_character":44},"updated":"2021-10-13 23:37:35.000000000","message":"self.assertEqual(expected, res_dict)","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        res_dict \u003d self.controller.update("},{"line_number":415,"context_line":"            req, self.share_id, key, body)"},{"line_number":416,"context_line":"        expected \u003d body"},{"line_number":417,"context_line":"        self.assertEqual(res_dict, expected)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def test_invalid_metadata_items_on_create(self):"},{"line_number":420,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"}],"source_content_type":"text/x-python","patch_set":9,"id":"52ce3a6a_9b76815b","line":417,"range":{"start_line":417,"start_character":8,"end_line":417,"end_character":44},"in_reply_to":"e8af4854_d327b467","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":415,"context_line":"            req, self.share_id, key, body)"},{"line_number":416,"context_line":"        expected \u003d body"},{"line_number":417,"context_line":"        self.assertEqual(res_dict, expected)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def test_invalid_metadata_items_on_create(self):"},{"line_number":420,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"},{"line_number":421,"context_line":"        req.method \u003d \u0027POST\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"fb6f2b09_21d1dec2","line":418,"range":{"start_line":418,"start_character":0,"end_line":418,"end_character":0},"updated":"2021-10-13 23:37:35.000000000","message":"Can you add similar tests for deleting metadata as well?","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            req, self.share_id, key, body)"},{"line_number":416,"context_line":"        expected \u003d body"},{"line_number":417,"context_line":"        self.assertEqual(res_dict, expected)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def test_invalid_metadata_items_on_create(self):"},{"line_number":420,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"},{"line_number":421,"context_line":"        req.method \u003d \u0027POST\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"4e3c8190_26feae83","line":418,"range":{"start_line":418,"start_character":0,"end_line":418,"end_character":0},"in_reply_to":"fb6f2b09_21d1dec2","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b2c66fe8ece48fbb4953533cd3e8cc449fd481cc","unresolved":true,"context_lines":[{"line_number":416,"context_line":"        expected \u003d body"},{"line_number":417,"context_line":"        self.assertEqual(res_dict, expected)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def test_invalid_metadata_items_on_create(self):"},{"line_number":420,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"},{"line_number":421,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":422,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""}],"source_content_type":"text/x-python","patch_set":16,"id":"ade6a44c_6c667221","line":419,"range":{"start_line":419,"start_character":0,"end_line":419,"end_character":4},"updated":"2021-12-09 23:08:06.000000000","message":"Can you add similar test cases for the delete API interface as well?","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        expected \u003d body"},{"line_number":417,"context_line":"        self.assertEqual(res_dict, expected)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def test_invalid_metadata_items_on_create(self):"},{"line_number":420,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"},{"line_number":421,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":422,"context_line":"        req.headers[\"content-type\"] \u003d \"application/json\""}],"source_content_type":"text/x-python","patch_set":16,"id":"9bd016e1_47e4f479","line":419,"range":{"start_line":419,"start_character":0,"end_line":419,"end_character":4},"in_reply_to":"ade6a44c_6c667221","updated":"2021-12-14 23:08:48.000000000","message":"Ack","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        #  test that nothing was deleted"},{"line_number":142,"context_line":"        data \u003d db.share_metadata_get(self.userctxt, self.share_id)"},{"line_number":143,"context_line":"        if key in data:"},{"line_number":144,"context_line":"            res_dict \u003d {\u0027meta\u0027: {key: data[key]}}"},{"line_number":145,"context_line":"        self.assertEqual(res_dict, {\u0027meta\u0027: establish})"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    @ddt.data((AFFINITY_KEY, \u0027/\u0027 + AFFINITY_KEY),"}],"source_content_type":"text/x-python","patch_set":21,"id":"96295f85_e0fcb4a1","line":144,"range":{"start_line":143,"start_character":8,"end_line":144,"end_character":12},"updated":"2022-02-02 21:58:52.000000000","message":"don\u0027t need this","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        #  test that nothing was updated"},{"line_number":439,"context_line":"        data \u003d db.share_metadata_get(self.ctxt, self.share_id)"},{"line_number":440,"context_line":"        if AFFINITY_KEY in data:"},{"line_number":441,"context_line":"            res_dict \u003d {\u0027meta\u0027: {AFFINITY_KEY: data[AFFINITY_KEY]}}"},{"line_number":442,"context_line":"        self.assertEqual(res_dict, {\u0027meta\u0027: establish})"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    @ddt.data((AFFINITY_KEY, \u0027/\u0027 + AFFINITY_KEY),"}],"source_content_type":"text/x-python","patch_set":21,"id":"35356d6d_cb1aed06","line":441,"range":{"start_line":440,"start_character":8,"end_line":441,"end_character":12},"updated":"2022-02-02 21:58:52.000000000","message":"not required..","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"82cb2ec9991f0ec82c2a2c17f29eba6fc0c23f7f","unresolved":true,"context_lines":[{"line_number":459,"context_line":"        res_dict \u003d self.controller.update("},{"line_number":460,"context_line":"            req, self.share_id, key, body)"},{"line_number":461,"context_line":"        expected \u003d body"},{"line_number":462,"context_line":"        self.assertEqual(res_dict, expected)"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def test_invalid_metadata_items_on_create(self):"},{"line_number":465,"context_line":"        req \u003d fakes.HTTPRequest.blank(self.url)"}],"source_content_type":"text/x-python","patch_set":21,"id":"7b877536_bc85673d","line":462,"range":{"start_line":462,"start_character":25,"end_line":462,"end_character":43},"updated":"2022-02-02 21:58:52.000000000","message":"flipped order:\n\nself.assertEqual(expected, actual)","commit_id":"0f161ce17a3116c0777091e1551204fecccabc61"}],"releasenotes/notes/add-admin-only-keys-to-share-metadata-5301424ccd9edf8a.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"issues:"},{"line_number":4,"context_line":"  - |"},{"line_number":5,"context_line":"    User specified scheduler hints such as \"affinity_same_host\" and"},{"line_number":6,"context_line":"    \"affinity_different_host\" are stored as share metadata. These can be"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"c317612a_efb98687","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":6},"updated":"2021-10-13 23:37:35.000000000","message":"fixes","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"issues:"},{"line_number":4,"context_line":"  - |"},{"line_number":5,"context_line":"    User specified scheduler hints such as \"affinity_same_host\" and"},{"line_number":6,"context_line":"    \"affinity_different_host\" are stored as share metadata. These can be"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3d3bc9bc_dfe69fd3","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":6},"in_reply_to":"c317612a_efb98687","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8ce445b0e84998e974d4bc473851c1268860e37d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6b4bc061_cc3b9575","line":10,"range":{"start_line":6,"start_character":60,"end_line":10,"end_character":0},"updated":"2021-10-13 23:37:35.000000000","message":"there is now a new RBAC policy: \"share:update_admin_only_metadata\" that prevents the manipulation of these hints if they are present. This policy defaults to allowing system or project administrators if scope is enforced, else to users with administrator roles.","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"1f0cf1883956c0c2867fb4ee6cc2176e2996c048","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e1078321_f1a0d124","line":10,"range":{"start_line":6,"start_character":60,"end_line":10,"end_character":0},"in_reply_to":"6b4bc061_cc3b9575","updated":"2021-11-18 18:39:40.000000000","message":"Done","commit_id":"f88f38b90ecb40ae9f9548f61cff569e445416c8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b2c66fe8ece48fbb4953533cd3e8cc449fd481cc","unresolved":true,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"fixes:"},{"line_number":4,"context_line":"  - |"},{"line_number":5,"context_line":"    User specified scheduler hints such as \"affinity_same_host\" and"},{"line_number":6,"context_line":"    \"affinity_different_host\" are stored as share metadata. These can be"},{"line_number":7,"context_line":"    manipulated or deleted by end users like all metadata unless prevented by"},{"line_number":8,"context_line":"    RBAC policy.  In a future release, the service will restrict the deletion"},{"line_number":9,"context_line":"    or manipulation of these specific metadata items."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"a8302513_b33e4626","line":9,"range":{"start_line":5,"start_character":4,"end_line":9,"end_character":53},"updated":"2021-12-09 23:08:06.000000000","message":"This note is what we\u0027re publishing as the \"issues\" note for stable/xena: https://review.opendev.org/c/openstack/manila/+/821043","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"},{"author":{"_account_id":32594,"name":"Ashley Rodriguez","email":"ashrod98@redhat.com","username":"ashrod98"},"change_message_id":"81e624b773c758d435d1d593c114c5579d329ed7","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"fixes:"},{"line_number":4,"context_line":"  - |"},{"line_number":5,"context_line":"    User specified scheduler hints such as \"affinity_same_host\" and"},{"line_number":6,"context_line":"    \"affinity_different_host\" are stored as share metadata. These can be"},{"line_number":7,"context_line":"    manipulated or deleted by end users like all metadata unless prevented by"},{"line_number":8,"context_line":"    RBAC policy.  In a future release, the service will restrict the deletion"},{"line_number":9,"context_line":"    or manipulation of these specific metadata items."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"8d698bfe_eb92a2f0","line":9,"range":{"start_line":5,"start_character":4,"end_line":9,"end_character":53},"in_reply_to":"a8302513_b33e4626","updated":"2021-12-14 23:08:48.000000000","message":"Ack","commit_id":"e1f0e4ef9b34fc34bf441245ebc7d8c61bd28736"}]}
