)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0ca0f8338afdc55b7f42ffb2399048fab9b64ab5","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Mridula Joshi \u003cmrjoshi@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-08-18 08:31:08 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"It was observed that md-tag-create-multiple"},{"line_number":8,"context_line":"(/v2/metadefs/namespaces/{namespace_name}/tags)  API overwrites existing tags"},{"line_number":9,"context_line":"for specified namespace rather than creating new one in addition to the existing tags."},{"line_number":10,"context_line":"This patch resolves the issue by not deleting the previous data and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"f9728be2_e1636849","line":7,"updated":"2021-08-18 10:08:55.000000000","message":"Commit message should always start with the one liner brief description of your change with few more guidelines[1]\n\n[1]: https://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"8ef00d2a465293b3bb4eab4ceda40bac4b886d23"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"aeef3d87f521a18ea1a2d0e0434c7322813aeef5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mridula Joshi \u003cmrjoshi@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-08-18 08:31:08 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"It was observed that md-tag-create-multiple"},{"line_number":8,"context_line":"(/v2/metadefs/namespaces/{namespace_name}/tags)  API overwrites existing tags"},{"line_number":9,"context_line":"for specified namespace rather than creating new one in addition to the existing tags."},{"line_number":10,"context_line":"This patch resolves the issue by not deleting the previous data and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"c2042b31_b90f1fcb","line":7,"in_reply_to":"f9728be2_e1636849","updated":"2021-08-27 06:12:41.000000000","message":"Ack","commit_id":"8ef00d2a465293b3bb4eab4ceda40bac4b886d23"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fdd8353458be01d2d63e72197afb60ec5e9672b0","unresolved":true,"context_lines":[{"line_number":14,"context_line":"which on being True will append the new tags to existing ones and"},{"line_number":15,"context_line":"if False will continue to overwrite the tags."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1939169"},{"line_number":18,"context_line":"Change-Id: I29448746b14c542e5fbf0283011968ae1516642e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"caad6602_823de36a","line":17,"updated":"2022-01-04 04:30:10.000000000","message":"You also need to tag the blueprint here;\n\nImplements: blueprint \u003cblueprint-name\u003e","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"ea297ea34aa0c23a00d27ea39f42df4fddc4dfaa","unresolved":false,"context_lines":[{"line_number":14,"context_line":"which on being True will append the new tags to existing ones and"},{"line_number":15,"context_line":"if False will continue to overwrite the tags."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1939169"},{"line_number":18,"context_line":"Change-Id: I29448746b14c542e5fbf0283011968ae1516642e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"e8d814aa_c29946ce","line":17,"in_reply_to":"caad6602_823de36a","updated":"2022-01-10 11:33:22.000000000","message":"Ack","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"edb29e59a2304aa34964e3c5360713830f49a806","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"aa69f823_a0295cec","updated":"2021-10-12 13:48:06.000000000","message":"Agree with all of Rajat\u0027s comments, especially that the append flag should be resolved in the api and passed down only as a boolean to the deeper layers.","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f1a89b1e1675ed79756778b2fd983ecbff30e6b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"28b4e6b6_b6c3051b","updated":"2021-10-12 06:41:51.000000000","message":"Hi Mridula,\n\ngood update but I\u0027ve a few comments inline that could be improved.","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fdd8353458be01d2d63e72197afb60ec5e9672b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"a82d2177_38e10dee","updated":"2022-01-04 04:30:10.000000000","message":"You also need to modify API reference documents for the same.","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a08b2fd3ca4870180cb02090b604255aa32002e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"175b1880_44d58e1d","updated":"2022-01-28 05:17:05.000000000","message":"Getting close, few suggestions inline.","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"0126e7e1ff64c24dd1793fd685edd705a1188924","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"da2df482_a7ed5b00","updated":"2022-01-31 14:31:08.000000000","message":"Looks better now,\nI think you should write new/modify the function test case here to cover our actual scenario.\nhttps://github.com/openstack/glance/blob/master/glance/tests/functional/v2/test_metadef_tags.py","commit_id":"8ec1d27ccfd25d22a7e1f71a27c09dba8f662594"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"368d0d81162d2d861488cb50ca883bea0f95af77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"c90666f5_39908c1c","updated":"2022-02-11 14:11:24.000000000","message":"1 minor comment and 1 suggestion, else looks good to me.","commit_id":"51ebf1566f9db473024c052aa55f48165d716bdc"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d422d8f869aeffb751d9fe92f7dff93fc54e3496","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"08590ee2_347f0944","updated":"2022-02-14 14:06:56.000000000","message":"One nit in release note, else looks fine to me.","commit_id":"febc7c3385163bf01e10aba1b635862ea6335635"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1038ec114a430f5b9547ea2461c5880710ff0272","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"f8b64b98_80ac7154","updated":"2022-02-15 23:24:27.000000000","message":"A couple of nitpicks, but I\u0027m not opposed to merging as is.","commit_id":"e2296fee755cb811e3312741e68b6feada7483be"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2bd1db780d9a10896fe9116ce215ad5d0492db0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"655dbec3_cdcc3cf8","updated":"2022-02-15 14:18:14.000000000","message":"recheck cinder failure","commit_id":"e2296fee755cb811e3312741e68b6feada7483be"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"ea50ed81bf23cefbaac69a886bb22940511a96a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"7c438497_413d3955","updated":"2022-02-16 17:07:12.000000000","message":"Thank you!","commit_id":"2a9a4c8e0e095f3cd788e2f24b2dce508538e0d5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c8feb36f0c5ee7893e07be7567f21f921a4ec9cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"74985c1c_f680b782","updated":"2022-02-16 10:24:33.000000000","message":"recheck\n\ntempest wasn\u0027t able to configure\n2022-02-16 08:07:59.594721 | controller | ++ lib/tempest:configure_tempest:181        :   echo \u0027Found no valid images to use!\u0027\n2022-02-16 08:07:59.594748 | controller | Found no valid images to use!","commit_id":"2a9a4c8e0e095f3cd788e2f24b2dce508538e0d5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"07e4fce753960b0a5ef5dee5f33a465eb618fad0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"3e181d96_554d9216","updated":"2022-02-16 13:47:20.000000000","message":"recheck same issue","commit_id":"2a9a4c8e0e095f3cd788e2f24b2dce508538e0d5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"5ccd4b620dfa5b46e1894e02852a90b30b87d691","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"c11e1539_0146a998","updated":"2022-02-16 15:20:58.000000000","message":"recheck unrelate glance failure","commit_id":"2a9a4c8e0e095f3cd788e2f24b2dce508538e0d5"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c4f666ea8450d677797eedcf558fe185a1dff8a4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"3031d2fa_694ff87d","updated":"2022-02-16 07:48:48.000000000","message":"recheck unrelated glance failure","commit_id":"2a9a4c8e0e095f3cd788e2f24b2dce508538e0d5"}],"api-ref/source/v2/metadefs-namespaces-tags.inc":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a08b2fd3ca4870180cb02090b604255aa32002e","unresolved":true,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":".. rest_parameters:: metadefs-parameters.yaml"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"   - X-Openstack-Append: append "},{"line_number":195,"context_line":"   - namespace_name: namespace_name"},{"line_number":196,"context_line":"   - tags: tags"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":11,"id":"ed892be5_e068f7a1","line":194,"range":{"start_line":194,"start_character":31,"end_line":194,"end_character":32},"updated":"2022-01-28 05:17:05.000000000","message":"remove this trailing whitespace","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"b7d165d170a84a600af1a35212886f0a1114c88d","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":".. rest_parameters:: metadefs-parameters.yaml"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"   - X-Openstack-Append: append "},{"line_number":195,"context_line":"   - namespace_name: namespace_name"},{"line_number":196,"context_line":"   - tags: tags"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":11,"id":"cf1c9cc0_27ec1c00","line":194,"range":{"start_line":194,"start_character":31,"end_line":194,"end_character":32},"in_reply_to":"ed892be5_e068f7a1","updated":"2022-01-31 14:23:37.000000000","message":"Done","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"}],"api-ref/source/v2/metadefs-parameters.yaml":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a08b2fd3ca4870180cb02090b604255aa32002e","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# variables in header"},{"line_number":2,"context_line":"append:"},{"line_number":3,"context_line":"  description: |"},{"line_number":4,"context_line":"    If present it allows to append the newly-created metadef-tags"},{"line_number":5,"context_line":"    to the existing tags instead of overwriting them."},{"line_number":6,"context_line":"  in: header"},{"line_number":7,"context_line":"  required: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"a6202a2b_59ecb9e0","line":4,"range":{"start_line":4,"start_character":39,"end_line":4,"end_character":52},"updated":"2022-01-28 05:17:05.000000000","message":"new","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"b7d165d170a84a600af1a35212886f0a1114c88d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# variables in header"},{"line_number":2,"context_line":"append:"},{"line_number":3,"context_line":"  description: |"},{"line_number":4,"context_line":"    If present it allows to append the newly-created metadef-tags"},{"line_number":5,"context_line":"    to the existing tags instead of overwriting them."},{"line_number":6,"context_line":"  in: header"},{"line_number":7,"context_line":"  required: false"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"b5f630e5_bfadbb2b","line":4,"range":{"start_line":4,"start_character":39,"end_line":4,"end_character":52},"in_reply_to":"a6202a2b_59ecb9e0","updated":"2022-01-31 14:23:37.000000000","message":"Done","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1038ec114a430f5b9547ea2461c5880710ff0272","unresolved":true,"context_lines":[{"line_number":2,"context_line":"append:"},{"line_number":3,"context_line":"  description: |"},{"line_number":4,"context_line":"    If present it allows to append the new metadef-tags"},{"line_number":5,"context_line":"    to the existing tags instead of overwriting them."},{"line_number":6,"context_line":"  in: header"},{"line_number":7,"context_line":"  required: false"},{"line_number":8,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9de0a06f_e334e074","line":5,"range":{"start_line":5,"start_character":11,"end_line":5,"end_character":19},"updated":"2022-02-15 23:24:27.000000000","message":"I think this header can be *present* but set to False, in which case new tags are not appended. Also, I think one would say \"allow someone to do something\" or \"allow doing something\". I would replace this description with:\n\n\n\"If present and set to True, new metadefs tags are appended to the existing ones. Otherwise, existing tags are overwritten.\"","commit_id":"e2296fee755cb811e3312741e68b6feada7483be"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"5d62ece163b8d8f30bd0353a0143d908633f391c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"append:"},{"line_number":3,"context_line":"  description: |"},{"line_number":4,"context_line":"    If present it allows to append the new metadef-tags"},{"line_number":5,"context_line":"    to the existing tags instead of overwriting them."},{"line_number":6,"context_line":"  in: header"},{"line_number":7,"context_line":"  required: false"},{"line_number":8,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"50ee0932_e251b7d6","line":5,"range":{"start_line":5,"start_character":11,"end_line":5,"end_character":19},"in_reply_to":"9de0a06f_e334e074","updated":"2022-02-16 05:48:44.000000000","message":"Ack","commit_id":"e2296fee755cb811e3312741e68b6feada7483be"}],"glance/api/policy.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a08b2fd3ca4870180cb02090b604255aa32002e","unresolved":true,"context_lines":[{"line_number":862,"context_line":"        self.policy.enforce(self.context, \u0027add_metadef_tag\u0027, {})"},{"line_number":863,"context_line":"        return super(MetadefTagRepoProxy, self).add(meta_tag)"},{"line_number":864,"context_line":""},{"line_number":865,"context_line":"    def add_tags(self, meta_tags, can_append\u003dFalse):"},{"line_number":866,"context_line":"        self.policy.enforce(self.context, \u0027add_metadef_tags\u0027, {})"},{"line_number":867,"context_line":"        return super(MetadefTagRepoProxy, self).add_tags(meta_tags, can_append)"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"    def remove(self, meta_tag):"},{"line_number":870,"context_line":"        self.policy.enforce(self.context, \u0027delete_metadef_tag\u0027, {})"}],"source_content_type":"text/x-python","patch_set":11,"id":"83550bb8_5216ed62","line":867,"range":{"start_line":865,"start_character":4,"end_line":867,"end_character":79},"updated":"2022-01-28 05:17:05.000000000","message":"You can revert this change as this code base is now out of flow since we moved policy enforcement at API layer.","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"b7d165d170a84a600af1a35212886f0a1114c88d","unresolved":false,"context_lines":[{"line_number":862,"context_line":"        self.policy.enforce(self.context, \u0027add_metadef_tag\u0027, {})"},{"line_number":863,"context_line":"        return super(MetadefTagRepoProxy, self).add(meta_tag)"},{"line_number":864,"context_line":""},{"line_number":865,"context_line":"    def add_tags(self, meta_tags, can_append\u003dFalse):"},{"line_number":866,"context_line":"        self.policy.enforce(self.context, \u0027add_metadef_tags\u0027, {})"},{"line_number":867,"context_line":"        return super(MetadefTagRepoProxy, self).add_tags(meta_tags, can_append)"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"    def remove(self, meta_tag):"},{"line_number":870,"context_line":"        self.policy.enforce(self.context, \u0027delete_metadef_tag\u0027, {})"}],"source_content_type":"text/x-python","patch_set":11,"id":"f3009d12_aaabd2fd","line":867,"range":{"start_line":865,"start_character":4,"end_line":867,"end_character":79},"in_reply_to":"83550bb8_5216ed62","updated":"2022-01-31 14:23:37.000000000","message":"Ack","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"}],"glance/api/v2/metadef_tags.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d4f2466d7a677231fb9100b12ca873df1a6cb3f9","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        return MetadefTag.to_wsme_model(new_meta_tag)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def create_tags(self, req, metadata_tags, namespace):"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        tag_factory \u003d self.gateway.get_metadef_tag_factory(req.context)"},{"line_number":84,"context_line":"        tag_repo \u003d self.gateway.get_metadef_tag_repo(req.context)"},{"line_number":85,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"c881d608_3b52d42e","line":82,"updated":"2021-08-23 14:12:22.000000000","message":"Not related, you can remove this new line.","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"aeef3d87f521a18ea1a2d0e0434c7322813aeef5","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return MetadefTag.to_wsme_model(new_meta_tag)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def create_tags(self, req, metadata_tags, namespace):"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        tag_factory \u003d self.gateway.get_metadef_tag_factory(req.context)"},{"line_number":84,"context_line":"        tag_repo \u003d self.gateway.get_metadef_tag_repo(req.context)"},{"line_number":85,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"025f4bbb_6d17af7a","line":82,"in_reply_to":"c881d608_3b52d42e","updated":"2021-08-27 06:12:41.000000000","message":"Done","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fdd8353458be01d2d63e72197afb60ec5e9672b0","unresolved":true,"context_lines":[{"line_number":97,"context_line":"        return MetadefTag.to_wsme_model(new_meta_tag)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def create_tags(self, req, metadata_tags, namespace):"},{"line_number":100,"context_line":"        append_param \u003d req.headers.get(\u0027X-Openstack-Append\u0027, False)"},{"line_number":101,"context_line":"        if append_param !\u003d \u0027True\u0027:"},{"line_number":102,"context_line":"            append_param \u003d False"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        tag_factory \u003d self.gateway.get_metadef_tag_factory("},{"line_number":105,"context_line":"            req.context, authorization_layer\u003dFalse)"},{"line_number":106,"context_line":"        tag_repo \u003d self.gateway.get_metadef_tag_repo("}],"source_content_type":"text/x-python","patch_set":10,"id":"50583dac_9b8b6b81","line":103,"range":{"start_line":100,"start_character":8,"end_line":103,"end_character":0},"updated":"2022-01-04 04:30:10.000000000","message":"Can be replaced with;\n\nfrom oslo_utils import strutils (add this after line #18)\ncan_append \u003d strutils.bool_from_string(req.headers.get(\u0027X-Openstack-Append\u0027)","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"11b8b5f9f09f9a3de74005f93e3ff8420434a54d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        return MetadefTag.to_wsme_model(new_meta_tag)"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def create_tags(self, req, metadata_tags, namespace):"},{"line_number":100,"context_line":"        append_param \u003d req.headers.get(\u0027X-Openstack-Append\u0027, False)"},{"line_number":101,"context_line":"        if append_param !\u003d \u0027True\u0027:"},{"line_number":102,"context_line":"            append_param \u003d False"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        tag_factory \u003d self.gateway.get_metadef_tag_factory("},{"line_number":105,"context_line":"            req.context, authorization_layer\u003dFalse)"},{"line_number":106,"context_line":"        tag_repo \u003d self.gateway.get_metadef_tag_repo("}],"source_content_type":"text/x-python","patch_set":10,"id":"7113223d_160fc758","line":103,"range":{"start_line":100,"start_character":8,"end_line":103,"end_character":0},"in_reply_to":"50583dac_9b8b6b81","updated":"2022-01-05 13:34:16.000000000","message":"Ack","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"dc542f9e16a69d3711f098de2b3a75d83ddbba9b","unresolved":true,"context_lines":[{"line_number":104,"context_line":"        tag_factory \u003d self.gateway.get_metadef_tag_factory("},{"line_number":105,"context_line":"            req.context, authorization_layer\u003dFalse)"},{"line_number":106,"context_line":"        tag_repo \u003d self.gateway.get_metadef_tag_repo("},{"line_number":107,"context_line":"            req.context, append_param, authorization_layer\u003dFalse)"},{"line_number":108,"context_line":"        ns_repo \u003d self.gateway.get_metadef_namespace_repo("},{"line_number":109,"context_line":"            req.context, authorization_layer\u003dFalse)"},{"line_number":110,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"d1db7c95_c983b158","line":107,"updated":"2022-01-17 16:22:54.000000000","message":"It seems really strange to me to make this a parameter of the repo itself, basically changing the behavior of the add_tags() method for the life of the repo, if you pass this in during init. Seems like this would be better to be a flag to add_tags() itself, no? Especially since you\u0027re just storing the flag on the repo, and passing it to the lower-level create method when you call add_tags().","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"04de63229ad10353c96af0f396628143bc854efb","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        tag_factory \u003d self.gateway.get_metadef_tag_factory("},{"line_number":105,"context_line":"            req.context, authorization_layer\u003dFalse)"},{"line_number":106,"context_line":"        tag_repo \u003d self.gateway.get_metadef_tag_repo("},{"line_number":107,"context_line":"            req.context, append_param, authorization_layer\u003dFalse)"},{"line_number":108,"context_line":"        ns_repo \u003d self.gateway.get_metadef_namespace_repo("},{"line_number":109,"context_line":"            req.context, authorization_layer\u003dFalse)"},{"line_number":110,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"64c96369_2437ec09","line":107,"in_reply_to":"d1db7c95_c983b158","updated":"2022-01-27 15:54:02.000000000","message":"Ack","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"368d0d81162d2d861488cb50ca883bea0f95af77","unresolved":true,"context_lines":[{"line_number":98,"context_line":"        return MetadefTag.to_wsme_model(new_meta_tag)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def create_tags(self, req, metadata_tags, namespace):"},{"line_number":101,"context_line":"        can_append \u003d strutils.bool_from_string(req.headers.get("},{"line_number":102,"context_line":"            \u0027X-Openstack-Append\u0027))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        tag_factory \u003d self.gateway.get_metadef_tag_factory("},{"line_number":105,"context_line":"            req.context, authorization_layer\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":13,"id":"031cfe93_b5888b83","line":102,"range":{"start_line":101,"start_character":8,"end_line":102,"end_character":34},"updated":"2022-02-11 14:11:24.000000000","message":"Suggestion, if new PS is required then you can consider it.\n\nI think its good to move this line after policy check at line, 125","commit_id":"51ebf1566f9db473024c052aa55f48165d716bdc"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"1465bd0e2e383d58d8cf8b8c5b86bb45dffaf5c0","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        return MetadefTag.to_wsme_model(new_meta_tag)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def create_tags(self, req, metadata_tags, namespace):"},{"line_number":101,"context_line":"        can_append \u003d strutils.bool_from_string(req.headers.get("},{"line_number":102,"context_line":"            \u0027X-Openstack-Append\u0027))"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        tag_factory \u003d self.gateway.get_metadef_tag_factory("},{"line_number":105,"context_line":"            req.context, authorization_layer\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":13,"id":"68eabda6_83015492","line":102,"range":{"start_line":101,"start_character":8,"end_line":102,"end_character":34},"in_reply_to":"031cfe93_b5888b83","updated":"2022-02-14 09:09:41.000000000","message":"Done","commit_id":"51ebf1566f9db473024c052aa55f48165d716bdc"}],"glance/db/__init__.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f1a89b1e1675ed79756778b2fd983ecbff30e6b1","unresolved":true,"context_lines":[{"line_number":818,"context_line":""},{"line_number":819,"context_line":"class MetadefTagRepo(object):"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    def __init__(self, context, db_api, param\u003d{}):"},{"line_number":822,"context_line":"        self.context \u003d context"},{"line_number":823,"context_line":"        self.db_api \u003d db_api"},{"line_number":824,"context_line":"        self.param \u003d param"}],"source_content_type":"text/x-python","patch_set":8,"id":"367cb12f_257b6a23","line":821,"range":{"start_line":821,"start_character":40,"end_line":821,"end_character":48},"updated":"2021-10-12 06:41:51.000000000","message":"I\u0027m not sure how glance does this but with my understanding, the append value should be resolved from the params in the API layer and params shouldn\u0027t reach database code.\nThe only thing that we should pass to database is the append value with default as False.","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"37e91cc3d083ae7b526cc785576b41e028c84e3d","unresolved":false,"context_lines":[{"line_number":818,"context_line":""},{"line_number":819,"context_line":"class MetadefTagRepo(object):"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    def __init__(self, context, db_api, param\u003d{}):"},{"line_number":822,"context_line":"        self.context \u003d context"},{"line_number":823,"context_line":"        self.db_api \u003d db_api"},{"line_number":824,"context_line":"        self.param \u003d param"}],"source_content_type":"text/x-python","patch_set":8,"id":"7dfddc68_a22f5ce3","line":821,"range":{"start_line":821,"start_character":40,"end_line":821,"end_character":48},"in_reply_to":"0d7cd8c0_4813dec5","updated":"2021-10-14 06:44:04.000000000","message":"Ack","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"edb29e59a2304aa34964e3c5360713830f49a806","unresolved":true,"context_lines":[{"line_number":818,"context_line":""},{"line_number":819,"context_line":"class MetadefTagRepo(object):"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    def __init__(self, context, db_api, param\u003d{}):"},{"line_number":822,"context_line":"        self.context \u003d context"},{"line_number":823,"context_line":"        self.db_api \u003d db_api"},{"line_number":824,"context_line":"        self.param \u003d param"}],"source_content_type":"text/x-python","patch_set":8,"id":"0d7cd8c0_4813dec5","line":821,"range":{"start_line":821,"start_character":40,"end_line":821,"end_character":48},"in_reply_to":"367cb12f_257b6a23","updated":"2021-10-12 13:48:06.000000000","message":"Absolutely agree.","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"}],"glance/db/simple/api.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d4f2466d7a677231fb9100b12ca873df1a6cb3f9","unresolved":true,"context_lines":[{"line_number":1921,"context_line":"    required_attributes \u003d [\u0027name\u0027]"},{"line_number":1922,"context_line":"    allowed_attributes \u003d [\u0027name\u0027]"},{"line_number":1923,"context_line":"    data_tag_list \u003d []"},{"line_number":1924,"context_line":"    tag_name_list \u003d [tag[\u0027name\u0027]"},{"line_number":1925,"context_line":"                     for tag in metadef_tag_get_all(context, namespace_name)]"},{"line_number":1926,"context_line":"    for tag_value in tag_list:"},{"line_number":1927,"context_line":"        tag_values \u003d copy.deepcopy(tag_value)"},{"line_number":1928,"context_line":"        tag_name \u003d tag_values[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1b33b665_5a1f2e42","line":1925,"range":{"start_line":1924,"start_character":4,"end_line":1925,"end_character":77},"updated":"2021-08-23 14:12:22.000000000","message":"add a note here before this line explaining why are you doing this change,\nfor example;\nNOTE(mrjoshi): We need to fetch existing tags here for duplicate check while adding new one.","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"aeef3d87f521a18ea1a2d0e0434c7322813aeef5","unresolved":false,"context_lines":[{"line_number":1921,"context_line":"    required_attributes \u003d [\u0027name\u0027]"},{"line_number":1922,"context_line":"    allowed_attributes \u003d [\u0027name\u0027]"},{"line_number":1923,"context_line":"    data_tag_list \u003d []"},{"line_number":1924,"context_line":"    tag_name_list \u003d [tag[\u0027name\u0027]"},{"line_number":1925,"context_line":"                     for tag in metadef_tag_get_all(context, namespace_name)]"},{"line_number":1926,"context_line":"    for tag_value in tag_list:"},{"line_number":1927,"context_line":"        tag_values \u003d copy.deepcopy(tag_value)"},{"line_number":1928,"context_line":"        tag_name \u003d tag_values[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"43f685b0_b3a2712c","line":1925,"range":{"start_line":1924,"start_character":4,"end_line":1925,"end_character":77},"in_reply_to":"1b33b665_5a1f2e42","updated":"2021-08-27 06:12:41.000000000","message":"Done","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f1a89b1e1675ed79756778b2fd983ecbff30e6b1","unresolved":true,"context_lines":[{"line_number":1917,"context_line":""},{"line_number":1918,"context_line":"    namespace \u003d metadef_namespace_get(context, namespace_name)"},{"line_number":1919,"context_line":"    _check_namespace_visibility(context, namespace, namespace_name)"},{"line_number":1920,"context_line":"    append \u003d param.get(\u0027append\u0027, \u0027False\u0027)"},{"line_number":1921,"context_line":""},{"line_number":1922,"context_line":"    required_attributes \u003d [\u0027name\u0027]"},{"line_number":1923,"context_line":"    allowed_attributes \u003d [\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ab6cb2b_42fa19be","line":1920,"range":{"start_line":1920,"start_character":33,"end_line":1920,"end_character":40},"updated":"2021-10-12 06:41:51.000000000","message":"This should be False","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"37e91cc3d083ae7b526cc785576b41e028c84e3d","unresolved":false,"context_lines":[{"line_number":1917,"context_line":""},{"line_number":1918,"context_line":"    namespace \u003d metadef_namespace_get(context, namespace_name)"},{"line_number":1919,"context_line":"    _check_namespace_visibility(context, namespace, namespace_name)"},{"line_number":1920,"context_line":"    append \u003d param.get(\u0027append\u0027, \u0027False\u0027)"},{"line_number":1921,"context_line":""},{"line_number":1922,"context_line":"    required_attributes \u003d [\u0027name\u0027]"},{"line_number":1923,"context_line":"    allowed_attributes \u003d [\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"a8e89575_83d8253a","line":1920,"range":{"start_line":1920,"start_character":33,"end_line":1920,"end_character":40},"in_reply_to":"5ab6cb2b_42fa19be","updated":"2021-10-14 06:44:04.000000000","message":"Ack","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f1a89b1e1675ed79756778b2fd983ecbff30e6b1","unresolved":true,"context_lines":[{"line_number":1922,"context_line":"    required_attributes \u003d [\u0027name\u0027]"},{"line_number":1923,"context_line":"    allowed_attributes \u003d [\u0027name\u0027]"},{"line_number":1924,"context_line":"    data_tag_list \u003d []"},{"line_number":1925,"context_line":"    if append \u003d\u003d \u0027True\u0027:"},{"line_number":1926,"context_line":"        # NOTE(mrjoshi): We need to fetch existing tags here for duplicate"},{"line_number":1927,"context_line":"        # check while adding new one"},{"line_number":1928,"context_line":"        tag_name_list \u003d [tag[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"13324a82_2e3f0c0f","line":1925,"range":{"start_line":1925,"start_character":17,"end_line":1925,"end_character":23},"updated":"2021-10-12 06:41:51.000000000","message":"This isn\u0027t right. you should convert the parameter received on L#1920 from string to boolean.\nAlso then you can change this line to:\n    if append:\n        ...","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"37e91cc3d083ae7b526cc785576b41e028c84e3d","unresolved":false,"context_lines":[{"line_number":1922,"context_line":"    required_attributes \u003d [\u0027name\u0027]"},{"line_number":1923,"context_line":"    allowed_attributes \u003d [\u0027name\u0027]"},{"line_number":1924,"context_line":"    data_tag_list \u003d []"},{"line_number":1925,"context_line":"    if append \u003d\u003d \u0027True\u0027:"},{"line_number":1926,"context_line":"        # NOTE(mrjoshi): We need to fetch existing tags here for duplicate"},{"line_number":1927,"context_line":"        # check while adding new one"},{"line_number":1928,"context_line":"        tag_name_list \u003d [tag[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"a2ff66a5_d49b0c11","line":1925,"range":{"start_line":1925,"start_character":17,"end_line":1925,"end_character":23},"in_reply_to":"13324a82_2e3f0c0f","updated":"2021-10-14 06:44:04.000000000","message":"Ack","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f1a89b1e1675ed79756778b2fd983ecbff30e6b1","unresolved":true,"context_lines":[{"line_number":1929,"context_line":"                         for tag in metadef_tag_get_all(context,"},{"line_number":1930,"context_line":"                                                        namespace_name)]"},{"line_number":1931,"context_line":"    else:"},{"line_number":1932,"context_line":"        tag_name_list \u003d []"},{"line_number":1933,"context_line":"    for tag_value in tag_list:"},{"line_number":1934,"context_line":"        tag_values \u003d copy.deepcopy(tag_value)"},{"line_number":1935,"context_line":"        tag_name \u003d tag_values[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3061f280_7c5334fd","line":1932,"range":{"start_line":1932,"start_character":0,"end_line":1932,"end_character":26},"updated":"2021-10-12 06:41:51.000000000","message":"remove the else and move this before L#1925","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"37e91cc3d083ae7b526cc785576b41e028c84e3d","unresolved":false,"context_lines":[{"line_number":1929,"context_line":"                         for tag in metadef_tag_get_all(context,"},{"line_number":1930,"context_line":"                                                        namespace_name)]"},{"line_number":1931,"context_line":"    else:"},{"line_number":1932,"context_line":"        tag_name_list \u003d []"},{"line_number":1933,"context_line":"    for tag_value in tag_list:"},{"line_number":1934,"context_line":"        tag_values \u003d copy.deepcopy(tag_value)"},{"line_number":1935,"context_line":"        tag_name \u003d tag_values[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"02f43108_152cba63","line":1932,"range":{"start_line":1932,"start_character":0,"end_line":1932,"end_character":26},"in_reply_to":"3061f280_7c5334fd","updated":"2021-10-14 06:44:04.000000000","message":"Ack","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f1a89b1e1675ed79756778b2fd983ecbff30e6b1","unresolved":true,"context_lines":[{"line_number":1954,"context_line":""},{"line_number":1955,"context_line":"        tag_values[\u0027namespace_id\u0027] \u003d namespace[\u0027id\u0027]"},{"line_number":1956,"context_line":"        data_tag_list.append(_format_tag(tag_values))"},{"line_number":1957,"context_line":"    if append !\u003d \u0027True\u0027:"},{"line_number":1958,"context_line":"        DATA[\u0027metadef_tags\u0027] \u003d []"},{"line_number":1959,"context_line":"    for tag in data_tag_list:"},{"line_number":1960,"context_line":"        DATA[\u0027metadef_tags\u0027].append(tag)"}],"source_content_type":"text/x-python","patch_set":8,"id":"f2450cbf_7e2f65d7","line":1957,"range":{"start_line":1957,"start_character":4,"end_line":1957,"end_character":24},"updated":"2021-10-12 06:41:51.000000000","message":"when you do changes as mentioned in L#1925, change this to:\n    if not append:","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"37e91cc3d083ae7b526cc785576b41e028c84e3d","unresolved":false,"context_lines":[{"line_number":1954,"context_line":""},{"line_number":1955,"context_line":"        tag_values[\u0027namespace_id\u0027] \u003d namespace[\u0027id\u0027]"},{"line_number":1956,"context_line":"        data_tag_list.append(_format_tag(tag_values))"},{"line_number":1957,"context_line":"    if append !\u003d \u0027True\u0027:"},{"line_number":1958,"context_line":"        DATA[\u0027metadef_tags\u0027] \u003d []"},{"line_number":1959,"context_line":"    for tag in data_tag_list:"},{"line_number":1960,"context_line":"        DATA[\u0027metadef_tags\u0027].append(tag)"}],"source_content_type":"text/x-python","patch_set":8,"id":"afdb1cc4_47bdf3e1","line":1957,"range":{"start_line":1957,"start_character":4,"end_line":1957,"end_character":24},"in_reply_to":"f2450cbf_7e2f65d7","updated":"2021-10-14 06:44:04.000000000","message":"Ack","commit_id":"59583eefb635f22d3630a57bc69aebc53d72dd47"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fdd8353458be01d2d63e72197afb60ec5e9672b0","unresolved":true,"context_lines":[{"line_number":1925,"context_line":"    if append:"},{"line_number":1926,"context_line":"        # NOTE(mrjoshi): We need to fetch existing tags here for duplicate"},{"line_number":1927,"context_line":"        # check while adding new one"},{"line_number":1928,"context_line":"        tag_name_list \u003d [tag[\u0027name\u0027]"},{"line_number":1929,"context_line":"                         for tag in metadef_tag_get_all(context,"},{"line_number":1930,"context_line":"                                                        namespace_name)]"},{"line_number":1931,"context_line":"    for tag_value in tag_list:"}],"source_content_type":"text/x-python","patch_set":10,"id":"72b12075_37dbb0d3","line":1928,"range":{"start_line":1928,"start_character":8,"end_line":1928,"end_character":21},"updated":"2022-01-04 04:30:10.000000000","message":"where is this used?","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"ea297ea34aa0c23a00d27ea39f42df4fddc4dfaa","unresolved":true,"context_lines":[{"line_number":1925,"context_line":"    if append:"},{"line_number":1926,"context_line":"        # NOTE(mrjoshi): We need to fetch existing tags here for duplicate"},{"line_number":1927,"context_line":"        # check while adding new one"},{"line_number":1928,"context_line":"        tag_name_list \u003d [tag[\u0027name\u0027]"},{"line_number":1929,"context_line":"                         for tag in metadef_tag_get_all(context,"},{"line_number":1930,"context_line":"                                                        namespace_name)]"},{"line_number":1931,"context_line":"    for tag_value in tag_list:"}],"source_content_type":"text/x-python","patch_set":10,"id":"75f480ee_a651c0df","line":1928,"range":{"start_line":1928,"start_character":8,"end_line":1928,"end_character":21},"in_reply_to":"13b64cc8_d7a4bba4","updated":"2022-01-10 11:33:22.000000000","message":"It\u0027s on line #1944 for validating the tags\nhttps://review.opendev.org/c/openstack/glance/+/804966/10/glance/db/simple/api.py#1944","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"11b8b5f9f09f9a3de74005f93e3ff8420434a54d","unresolved":true,"context_lines":[{"line_number":1925,"context_line":"    if append:"},{"line_number":1926,"context_line":"        # NOTE(mrjoshi): We need to fetch existing tags here for duplicate"},{"line_number":1927,"context_line":"        # check while adding new one"},{"line_number":1928,"context_line":"        tag_name_list \u003d [tag[\u0027name\u0027]"},{"line_number":1929,"context_line":"                         for tag in metadef_tag_get_all(context,"},{"line_number":1930,"context_line":"                                                        namespace_name)]"},{"line_number":1931,"context_line":"    for tag_value in tag_list:"}],"source_content_type":"text/x-python","patch_set":10,"id":"13b64cc8_d7a4bba4","line":1928,"range":{"start_line":1928,"start_character":8,"end_line":1928,"end_character":21},"in_reply_to":"72b12075_37dbb0d3","updated":"2022-01-05 13:34:16.000000000","message":"This was added to check that when we are adding new tags using the new functionality and if a tag already exists then it should be reported as Error.\nFor example, If the new Tags are Tag3,Tag4,Tag5 and already existing tags are Tag1,Tag2,Tag3 ,This should be reported as an error Tag already exists(Tag3 already exists).","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"bc1459a7fa1578888dbf263742433209688956b4","unresolved":false,"context_lines":[{"line_number":1925,"context_line":"    if append:"},{"line_number":1926,"context_line":"        # NOTE(mrjoshi): We need to fetch existing tags here for duplicate"},{"line_number":1927,"context_line":"        # check while adding new one"},{"line_number":1928,"context_line":"        tag_name_list \u003d [tag[\u0027name\u0027]"},{"line_number":1929,"context_line":"                         for tag in metadef_tag_get_all(context,"},{"line_number":1930,"context_line":"                                                        namespace_name)]"},{"line_number":1931,"context_line":"    for tag_value in tag_list:"}],"source_content_type":"text/x-python","patch_set":10,"id":"f050ae3c_25ad4293","line":1928,"range":{"start_line":1928,"start_character":8,"end_line":1928,"end_character":21},"in_reply_to":"75f480ee_a651c0df","updated":"2022-01-10 13:27:08.000000000","message":"Ack","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"}],"glance/db/sqlalchemy/metadef_api/tag.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"629afbf3f12c87b83166fc904baa4feb37722052","unresolved":true,"context_lines":[{"line_number":118,"context_line":"        namespace \u003d namespace_api.get(context, namespace_name, session)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        try:"},{"line_number":121,"context_line":"            with session.begin():"},{"line_number":122,"context_line":"                query \u003d (session.query(models.MetadefTag).filter_by("},{"line_number":123,"context_line":"                    namespace_id\u003dnamespace[\u0027id\u0027]))"},{"line_number":124,"context_line":"                query.delete(synchronize_session\u003d\u0027fetch\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"91a8446c_a9b617f3","side":"PARENT","line":121,"range":{"start_line":121,"start_character":12,"end_line":121,"end_character":33},"updated":"2021-08-19 07:43:00.000000000","message":"IMO this shouldn\u0027t be removed since this ensures in case of multiple create tags requests, we don\u0027t end up with race conditions","commit_id":"284189222923f60bd883dd95ff0354b80850a4ce"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"aeef3d87f521a18ea1a2d0e0434c7322813aeef5","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        namespace \u003d namespace_api.get(context, namespace_name, session)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        try:"},{"line_number":121,"context_line":"            with session.begin():"},{"line_number":122,"context_line":"                query \u003d (session.query(models.MetadefTag).filter_by("},{"line_number":123,"context_line":"                    namespace_id\u003dnamespace[\u0027id\u0027]))"},{"line_number":124,"context_line":"                query.delete(synchronize_session\u003d\u0027fetch\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8f87ae56_cc2bb79d","side":"PARENT","line":121,"range":{"start_line":121,"start_character":12,"end_line":121,"end_character":33},"in_reply_to":"91a8446c_a9b617f3","updated":"2021-08-27 06:12:41.000000000","message":"Ack","commit_id":"284189222923f60bd883dd95ff0354b80850a4ce"}],"glance/gateway.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"fdd8353458be01d2d63e72197afb60ec5e9672b0","unresolved":true,"context_lines":[{"line_number":346,"context_line":"        the DB at the bottom."},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        :param context: The RequestContext"},{"line_number":349,"context_line":"        :param append: The Header to append the new tags"},{"line_number":350,"context_line":"        :param authorization_layer: Controls whether or not we add the legacy"},{"line_number":351,"context_line":"                                    glance.authorization and glance.policy"},{"line_number":352,"context_line":"                                    layers."}],"source_content_type":"text/x-python","patch_set":10,"id":"652a9677_3c6df547","line":349,"range":{"start_line":349,"start_character":23,"end_line":349,"end_character":56},"updated":"2022-01-04 04:30:10.000000000","message":"Here it is not header;\nYou can term it a Flag to decide whether to append or replace tags","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"11b8b5f9f09f9a3de74005f93e3ff8420434a54d","unresolved":false,"context_lines":[{"line_number":346,"context_line":"        the DB at the bottom."},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        :param context: The RequestContext"},{"line_number":349,"context_line":"        :param append: The Header to append the new tags"},{"line_number":350,"context_line":"        :param authorization_layer: Controls whether or not we add the legacy"},{"line_number":351,"context_line":"                                    glance.authorization and glance.policy"},{"line_number":352,"context_line":"                                    layers."}],"source_content_type":"text/x-python","patch_set":10,"id":"3e42eea7_55c268a4","line":349,"range":{"start_line":349,"start_character":23,"end_line":349,"end_character":56},"in_reply_to":"652a9677_3c6df547","updated":"2022-01-05 13:34:16.000000000","message":"Ack","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a08b2fd3ca4870180cb02090b604255aa32002e","unresolved":true,"context_lines":[{"line_number":338,"context_line":"        return factory"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def get_metadef_tag_repo(self, context,"},{"line_number":341,"context_line":"                             authorization_layer\u003dTrue):"},{"line_number":342,"context_line":"        \"\"\"Get the layered MetadefTagRepo model."},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        This is where we construct the \"the onion\" by layering"}],"source_content_type":"text/x-python","patch_set":11,"id":"81d52c21_e58b6314","line":341,"range":{"start_line":341,"start_character":8,"end_line":341,"end_character":28},"updated":"2022-01-28 05:17:05.000000000","message":"you can revert this change as it is unintended.","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"b7d165d170a84a600af1a35212886f0a1114c88d","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        return factory"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    def get_metadef_tag_repo(self, context,"},{"line_number":341,"context_line":"                             authorization_layer\u003dTrue):"},{"line_number":342,"context_line":"        \"\"\"Get the layered MetadefTagRepo model."},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        This is where we construct the \"the onion\" by layering"}],"source_content_type":"text/x-python","patch_set":11,"id":"e6b5b7c6_a8d78a69","line":341,"range":{"start_line":341,"start_character":8,"end_line":341,"end_character":28},"in_reply_to":"81d52c21_e58b6314","updated":"2022-01-31 14:23:37.000000000","message":"Ack","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"}],"glance/tests/functional/db/base_metadef.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"dc542f9e16a69d3711f098de2b3a75d83ddbba9b","unresolved":true,"context_lines":[{"line_number":645,"context_line":"                                    name\u003d\u0027Tag3\u0027)"},{"line_number":646,"context_line":"        self.assertRaises(exception.Duplicate,"},{"line_number":647,"context_line":"                          self.db_api.metadef_tag_create,"},{"line_number":648,"context_line":"                          self.context, created_ns[\u0027namespace\u0027], dup_tag)"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    def test_tag_get(self):"},{"line_number":651,"context_line":"        fixture_ns \u003d build_namespace_fixture()"}],"source_content_type":"text/x-python","patch_set":10,"id":"d1903d3e_b8a16536","line":648,"updated":"2022-01-17 16:22:54.000000000","message":"Can you add another test here to make sure that with append\u003dTrue we catch and handle the duplicate exception? Looks from the code like we should expect none of the tags to be saved if there is one duplicate, so we should make sure that actually happens. I think the only way to get a duplicate before is if you pass a duplicate in the \"replace all tags with these\" request, but now it\u0027s a little different.","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"04de63229ad10353c96af0f396628143bc854efb","unresolved":false,"context_lines":[{"line_number":645,"context_line":"                                    name\u003d\u0027Tag3\u0027)"},{"line_number":646,"context_line":"        self.assertRaises(exception.Duplicate,"},{"line_number":647,"context_line":"                          self.db_api.metadef_tag_create,"},{"line_number":648,"context_line":"                          self.context, created_ns[\u0027namespace\u0027], dup_tag)"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    def test_tag_get(self):"},{"line_number":651,"context_line":"        fixture_ns \u003d build_namespace_fixture()"}],"source_content_type":"text/x-python","patch_set":10,"id":"de7472b7_ebfd214b","line":648,"in_reply_to":"d1903d3e_b8a16536","updated":"2022-01-27 15:54:02.000000000","message":"Ack","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"}],"glance/tests/unit/test_policy.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a08b2fd3ca4870180cb02090b604255aa32002e","unresolved":true,"context_lines":[{"line_number":239,"context_line":"    def add(self, tag):"},{"line_number":240,"context_line":"        return \u0027mdtag_add\u0027"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def add_tags(self, tags, can_append\u003dFalse):"},{"line_number":243,"context_line":"        return [\u0027mdtag_add_tags\u0027]"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def get(self, ns, tag_name):"}],"source_content_type":"text/x-python","patch_set":11,"id":"61206123_3ac61a93","line":242,"range":{"start_line":242,"start_character":29,"end_line":242,"end_character":47},"updated":"2022-01-28 05:17:05.000000000","message":"Once you remove changes in policy.py this needs to be removed as well","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"b7d165d170a84a600af1a35212886f0a1114c88d","unresolved":false,"context_lines":[{"line_number":239,"context_line":"    def add(self, tag):"},{"line_number":240,"context_line":"        return \u0027mdtag_add\u0027"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"    def add_tags(self, tags, can_append\u003dFalse):"},{"line_number":243,"context_line":"        return [\u0027mdtag_add_tags\u0027]"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def get(self, ns, tag_name):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9870b76d_f4460036","line":242,"range":{"start_line":242,"start_character":29,"end_line":242,"end_character":47},"in_reply_to":"61206123_3ac61a93","updated":"2022-01-31 14:23:37.000000000","message":"Ack","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"}],"glance/tests/unit/v2/test_metadef_resources.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d4f2466d7a677231fb9100b12ca873df1a6cb3f9","unresolved":true,"context_lines":[{"line_number":1986,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        metadef_tags \u003d tags.MetadefTags()"},{"line_number":1989,"context_line":"        metadef_tags.tags \u003d _db_tags_fixture([TAG2, TAG3])"},{"line_number":1990,"context_line":"        output \u003d self.tag_controller.create_tags("},{"line_number":1991,"context_line":"            request, metadef_tags, NAMESPACE1)"},{"line_number":1992,"context_line":"        output \u003d output.to_dict()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7face9a3_8e5c0565","line":1989,"range":{"start_line":1989,"start_character":8,"end_line":1989,"end_character":58},"updated":"2021-08-23 14:12:22.000000000","message":"add a comment here like;\n# As TAG1 is already created in setup, just creating other two tags.","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"aeef3d87f521a18ea1a2d0e0434c7322813aeef5","unresolved":false,"context_lines":[{"line_number":1986,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        metadef_tags \u003d tags.MetadefTags()"},{"line_number":1989,"context_line":"        metadef_tags.tags \u003d _db_tags_fixture([TAG2, TAG3])"},{"line_number":1990,"context_line":"        output \u003d self.tag_controller.create_tags("},{"line_number":1991,"context_line":"            request, metadef_tags, NAMESPACE1)"},{"line_number":1992,"context_line":"        output \u003d output.to_dict()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7d19fe7f_04a72599","line":1989,"range":{"start_line":1989,"start_character":8,"end_line":1989,"end_character":58},"in_reply_to":"7face9a3_8e5c0565","updated":"2021-08-27 06:12:41.000000000","message":"Done","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d4f2466d7a677231fb9100b12ca873df1a6cb3f9","unresolved":true,"context_lines":[{"line_number":2002,"context_line":"        )"},{"line_number":2003,"context_line":""},{"line_number":2004,"context_line":"    def test_tag_create_duplicate_tags(self):"},{"line_number":2005,"context_line":""},{"line_number":2006,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":2007,"context_line":""},{"line_number":2008,"context_line":"        metadef_tags \u003d tags.MetadefTags()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f4c27f5_169c1438","line":2005,"updated":"2021-08-23 14:12:22.000000000","message":"Remove ths new line","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"aeef3d87f521a18ea1a2d0e0434c7322813aeef5","unresolved":false,"context_lines":[{"line_number":2002,"context_line":"        )"},{"line_number":2003,"context_line":""},{"line_number":2004,"context_line":"    def test_tag_create_duplicate_tags(self):"},{"line_number":2005,"context_line":""},{"line_number":2006,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":2007,"context_line":""},{"line_number":2008,"context_line":"        metadef_tags \u003d tags.MetadefTags()"}],"source_content_type":"text/x-python","patch_set":2,"id":"214c300b_2087ae6f","line":2005,"in_reply_to":"1f4c27f5_169c1438","updated":"2021-08-27 06:12:41.000000000","message":"Done","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d4f2466d7a677231fb9100b12ca873df1a6cb3f9","unresolved":true,"context_lines":[{"line_number":2017,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":2018,"context_line":""},{"line_number":2019,"context_line":"        metadef_tags \u003d tags.MetadefTags()"},{"line_number":2020,"context_line":"        metadef_tags.tags \u003d _db_tags_fixture([TAG2, TAG3])"},{"line_number":2021,"context_line":"        output \u003d self.tag_controller.create_tags("},{"line_number":2022,"context_line":"            request, metadef_tags, NAMESPACE1)"},{"line_number":2023,"context_line":"        output \u003d output.to_dict()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ad5aae00_0995b3b1","line":2020,"range":{"start_line":2020,"start_character":8,"end_line":2020,"end_character":58},"updated":"2021-08-23 14:12:22.000000000","message":"Same comment will go here as well","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"aeef3d87f521a18ea1a2d0e0434c7322813aeef5","unresolved":false,"context_lines":[{"line_number":2017,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":2018,"context_line":""},{"line_number":2019,"context_line":"        metadef_tags \u003d tags.MetadefTags()"},{"line_number":2020,"context_line":"        metadef_tags.tags \u003d _db_tags_fixture([TAG2, TAG3])"},{"line_number":2021,"context_line":"        output \u003d self.tag_controller.create_tags("},{"line_number":2022,"context_line":"            request, metadef_tags, NAMESPACE1)"},{"line_number":2023,"context_line":"        output \u003d output.to_dict()"}],"source_content_type":"text/x-python","patch_set":2,"id":"4c61e84a_ae4c4566","line":2020,"range":{"start_line":2020,"start_character":8,"end_line":2020,"end_character":58},"in_reply_to":"ad5aae00_0995b3b1","updated":"2021-08-27 06:12:41.000000000","message":"Done","commit_id":"6dda5a39fd596205e003001f764fb4847a189924"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"47987cd9ac96ce45970cccbe40738100cb6d2845","unresolved":true,"context_lines":[{"line_number":1982,"context_line":"                          self.tag_controller.create,"},{"line_number":1983,"context_line":"                          request, NAMESPACE1, u\u0027\\U0001f693\u0027)"},{"line_number":1984,"context_line":""},{"line_number":1985,"context_line":"    def test_tag_create_tags(self):"},{"line_number":1986,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        metadef_tags \u003d tags.MetadefTags()"}],"source_content_type":"text/x-python","patch_set":3,"id":"6b63374f_84219bfd","line":1985,"range":{"start_line":1985,"start_character":4,"end_line":1985,"end_character":35},"updated":"2021-08-25 05:59:32.000000000","message":"You need to write one new unit test for your change to verify;\n\n1. Create tags tag1, tag2, tag3\n2. Create tags tag4, tag5\n3. get tags should return all 5 tags\n\ntest name should be something like;\n\ntest_create_tags_multiple_check","commit_id":"57c2c4dddcc93a096304cbf577bbc608fdcd52d3"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"368d0d81162d2d861488cb50ca883bea0f95af77","unresolved":false,"context_lines":[{"line_number":1982,"context_line":"                          self.tag_controller.create,"},{"line_number":1983,"context_line":"                          request, NAMESPACE1, u\u0027\\U0001f693\u0027)"},{"line_number":1984,"context_line":""},{"line_number":1985,"context_line":"    def test_tag_create_tags(self):"},{"line_number":1986,"context_line":"        request \u003d unit_test_utils.get_fake_request(roles\u003d[\u0027admin\u0027])"},{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        metadef_tags \u003d tags.MetadefTags()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3bb2fa4d_5443ab1e","line":1985,"range":{"start_line":1985,"start_character":4,"end_line":1985,"end_character":35},"in_reply_to":"6b63374f_84219bfd","updated":"2022-02-11 14:11:24.000000000","message":"Done","commit_id":"57c2c4dddcc93a096304cbf577bbc608fdcd52d3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"dc542f9e16a69d3711f098de2b3a75d83ddbba9b","unresolved":true,"context_lines":[{"line_number":2073,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":2074,"context_line":"        self.assertNotificationLog("},{"line_number":2075,"context_line":"            \"metadef_tag.create\", ["},{"line_number":2076,"context_line":"                {\u0027name\u0027: TAG2, \u0027namespace\u0027: NAMESPACE1},"},{"line_number":2077,"context_line":"                {\u0027name\u0027: TAG3, \u0027namespace\u0027: NAMESPACE1},"},{"line_number":2078,"context_line":"            ]"},{"line_number":2079,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":10,"id":"7578fd13_c18afe7f","line":2076,"updated":"2022-01-17 16:22:54.000000000","message":"I think you should duplicate this test for the append case, as you\u0027re effectively reducing coverage here by not testing the non-append case anymore. Especially since it\u0027s the default, that\u0027s less than ideal.","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"04de63229ad10353c96af0f396628143bc854efb","unresolved":false,"context_lines":[{"line_number":2073,"context_line":"        self.assertEqual(expected, actual)"},{"line_number":2074,"context_line":"        self.assertNotificationLog("},{"line_number":2075,"context_line":"            \"metadef_tag.create\", ["},{"line_number":2076,"context_line":"                {\u0027name\u0027: TAG2, \u0027namespace\u0027: NAMESPACE1},"},{"line_number":2077,"context_line":"                {\u0027name\u0027: TAG3, \u0027namespace\u0027: NAMESPACE1},"},{"line_number":2078,"context_line":"            ]"},{"line_number":2079,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f6e8dfc_69930142","line":2076,"in_reply_to":"7578fd13_c18afe7f","updated":"2022-01-27 15:54:02.000000000","message":"Ack","commit_id":"06a353cc6f3f45e3a5e539656b4a69c5aa4cf168"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"1038ec114a430f5b9547ea2461c5880710ff0272","unresolved":true,"context_lines":[{"line_number":2005,"context_line":"    def test_tag_create_tags_with_append_true(self):"},{"line_number":2006,"context_line":"        request \u003d unit_test_utils.get_fake_request("},{"line_number":2007,"context_line":"            headers\u003d{\u0027X-Openstack-Append\u0027: \u0027True\u0027}, roles\u003d[\u0027admin\u0027])"},{"line_number":2008,"context_line":""},{"line_number":2009,"context_line":"        metadef_tags \u003d tags.MetadefTags()"},{"line_number":2010,"context_line":"        # As TAG1 is already created in setup, just creating other two tags."},{"line_number":2011,"context_line":"        metadef_tags.tags \u003d _db_tags_fixture([TAG2, TAG3])"}],"source_content_type":"text/x-python","patch_set":15,"id":"2042098f_d3b0f62a","line":2008,"updated":"2022-02-15 23:24:27.000000000","message":"It would be nice to have a similar test with \u0027X-Openstack-Append\u0027 set to False, even though users should probably not do that :)","commit_id":"e2296fee755cb811e3312741e68b6feada7483be"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"5d62ece163b8d8f30bd0353a0143d908633f391c","unresolved":false,"context_lines":[{"line_number":2005,"context_line":"    def test_tag_create_tags_with_append_true(self):"},{"line_number":2006,"context_line":"        request \u003d unit_test_utils.get_fake_request("},{"line_number":2007,"context_line":"            headers\u003d{\u0027X-Openstack-Append\u0027: \u0027True\u0027}, roles\u003d[\u0027admin\u0027])"},{"line_number":2008,"context_line":""},{"line_number":2009,"context_line":"        metadef_tags \u003d tags.MetadefTags()"},{"line_number":2010,"context_line":"        # As TAG1 is already created in setup, just creating other two tags."},{"line_number":2011,"context_line":"        metadef_tags.tags \u003d _db_tags_fixture([TAG2, TAG3])"}],"source_content_type":"text/x-python","patch_set":15,"id":"bef3a801_7d0802de","line":2008,"in_reply_to":"2042098f_d3b0f62a","updated":"2022-02-16 05:48:44.000000000","message":"Ack","commit_id":"e2296fee755cb811e3312741e68b6feada7483be"}],"releasenotes/notes/fix-md-tag-create-multiple-c04756cf5155983d.yaml":[{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"0ca0f8338afdc55b7f42ffb2399048fab9b64ab5","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #1939169 \u003chttps://bugs.launchpad.net/glance/+bug/1939169\u003e`_:"},{"line_number":5,"context_line":"    Fixed md-tag-create-multiple which overwrites the existing tags"},{"line_number":6,"context_line":"    for specified namespace rather than creating new one in addition"},{"line_number":7,"context_line":"    to the existing tags."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"44b5c904_f9450525","line":4,"updated":"2021-08-18 10:08:55.000000000","message":"I think bug details are not required here since the reference is already given in commit message.","commit_id":"8ef00d2a465293b3bb4eab4ceda40bac4b886d23"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"aeef3d87f521a18ea1a2d0e0434c7322813aeef5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #1939169 \u003chttps://bugs.launchpad.net/glance/+bug/1939169\u003e`_:"},{"line_number":5,"context_line":"    Fixed md-tag-create-multiple which overwrites the existing tags"},{"line_number":6,"context_line":"    for specified namespace rather than creating new one in addition"},{"line_number":7,"context_line":"    to the existing tags."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"c57a23e1_66c2cd5c","line":4,"in_reply_to":"44b5c904_f9450525","updated":"2021-08-27 06:12:41.000000000","message":"Ack","commit_id":"8ef00d2a465293b3bb4eab4ceda40bac4b886d23"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a08b2fd3ca4870180cb02090b604255aa32002e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"97ca3ecd_32639d40","line":7,"updated":"2022-01-28 05:17:05.000000000","message":"I think here you also need to add some more information under;\nfeatures:","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"b7d165d170a84a600af1a35212886f0a1114c88d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c04656b1_9f85e851","line":7,"in_reply_to":"97ca3ecd_32639d40","updated":"2022-01-31 14:23:37.000000000","message":"Ack","commit_id":"a345495de43136e1f3d673001f18457037cf5fe3"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"368d0d81162d2d861488cb50ca883bea0f95af77","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new optional header ``X-Openstack-Append`` has been added to append the"},{"line_number":5,"context_line":"    new metadef tags to the existing tags. If the header is present it will"},{"line_number":6,"context_line":"    append the new tags to the existing one, if not then it will default to the "},{"line_number":7,"context_line":"    old behaviour i.e. overwriting the existing tags with the new one."},{"line_number":8,"context_line":"Fixes:"},{"line_number":9,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"19416ce7_1bbaea40","line":6,"range":{"start_line":6,"start_character":79,"end_line":6,"end_character":80},"updated":"2022-02-11 14:11:24.000000000","message":"remove trailing white space","commit_id":"51ebf1566f9db473024c052aa55f48165d716bdc"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"1465bd0e2e383d58d8cf8b8c5b86bb45dffaf5c0","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new optional header ``X-Openstack-Append`` has been added to append the"},{"line_number":5,"context_line":"    new metadef tags to the existing tags. If the header is present it will"},{"line_number":6,"context_line":"    append the new tags to the existing one, if not then it will default to the "},{"line_number":7,"context_line":"    old behaviour i.e. overwriting the existing tags with the new one."},{"line_number":8,"context_line":"Fixes:"},{"line_number":9,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"bc7b904f_4dcc3c6d","line":6,"range":{"start_line":6,"start_character":79,"end_line":6,"end_character":80},"in_reply_to":"19416ce7_1bbaea40","updated":"2022-02-14 09:09:41.000000000","message":"Done","commit_id":"51ebf1566f9db473024c052aa55f48165d716bdc"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d422d8f869aeffb751d9fe92f7dff93fc54e3496","unresolved":true,"context_lines":[{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    * Bug 1939169_: glance md-tag-create-multiple overwrites existing tags"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"     .. _1939169: https://bugs.launchpad.net/glance/+bug/1939169---"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"8e59391d_4bdc3be3","line":12,"range":{"start_line":12,"start_character":64,"end_line":12,"end_character":67},"updated":"2022-02-14 14:06:56.000000000","message":"I think this is left by mistake?","commit_id":"febc7c3385163bf01e10aba1b635862ea6335635"},{"author":{"_account_id":33765,"name":"Mridula Joshi","email":"mrjoshi@redhat.com","username":"mrjoshi"},"change_message_id":"e8d9bde49cfbce19ac843d03d022d6cc45c501c7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    * Bug 1939169_: glance md-tag-create-multiple overwrites existing tags"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"     .. _1939169: https://bugs.launchpad.net/glance/+bug/1939169---"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"180d2a79_3f5e3ed5","line":12,"range":{"start_line":12,"start_character":64,"end_line":12,"end_character":67},"in_reply_to":"8e59391d_4bdc3be3","updated":"2022-02-15 07:03:29.000000000","message":"Ack","commit_id":"febc7c3385163bf01e10aba1b635862ea6335635"}]}
