)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"f0e2ad1d7ed95086a99f3e0e6080bb6f41c50d3c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e82a7723_6da4f1cf","updated":"2022-01-12 09:49:47.000000000","message":"Could you please follow the guideline?\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure\n\n\u003e * The first line should be limited to 50 characters and should not end with a period.\n\u003e * Subsequent lines should be wrapped at 72 characters.","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"ee574b86825af10272162e6ae429cb1b684860b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9b64faee_ecba2279","in_reply_to":"e82a7723_6da4f1cf","updated":"2022-01-20 05:51:20.000000000","message":"I\u0027ve confirmed in PS3.","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"9b2bac060985457e97ffa06ffa44819ba17e6700","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     IWAMOTO Toshihiro \u003ciwamoto@valinux.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-01-14 17:09:34 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make the v2 API follow the spec better"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some functionalities in the attribute selector and filter were"},{"line_number":10,"context_line":"missing.  In the attribute filter, use of @key is now supported."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"6979f2b3_dafe4a68","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":38},"updated":"2022-01-17 01:57:19.000000000","message":"I think it\u0027s better to express the contents of the patch concretely.\nFor example, what about the following title?\n---\nSupport new attribute selector/filter in V2-API","commit_id":"04f134720b47e7a4794e33b8f7c701bcdc424b81"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"d1766f5e7722021f701d49b4c9df5b5772edf6ba","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     IWAMOTO Toshihiro \u003ciwamoto@valinux.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-01-14 17:09:34 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Make the v2 API follow the spec better"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some functionalities in the attribute selector and filter were"},{"line_number":10,"context_line":"missing.  In the attribute filter, use of @key is now supported."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"a0544a7c_e96065db","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":38},"in_reply_to":"6979f2b3_dafe4a68","updated":"2022-01-19 07:12:08.000000000","message":"I\u0027ve confirmed.","commit_id":"04f134720b47e7a4794e33b8f7c701bcdc424b81"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"9b2bac060985457e97ffa06ffa44819ba17e6700","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Make the v2 API follow the spec better"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some functionalities in the attribute selector and filter were"},{"line_number":10,"context_line":"missing.  In the attribute filter, use of @key is now supported."},{"line_number":11,"context_line":"Also incorrect handling of boolean values is fixed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Cardinality zero checks in the attribute selector now work even in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"b66dbea2_64e12139","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":10},"updated":"2022-01-17 01:57:19.000000000","message":"There is double space.","commit_id":"04f134720b47e7a4794e33b8f7c701bcdc424b81"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"2520ad451a7b1dfa3e0d7ba03bcb408f4ab8bb3c","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Make the v2 API follow the spec better"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some functionalities in the attribute selector and filter were"},{"line_number":10,"context_line":"missing.  In the attribute filter, use of @key is now supported."},{"line_number":11,"context_line":"Also incorrect handling of boolean values is fixed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Cardinality zero checks in the attribute selector now work even in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"975abd40_49cb9cce","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":10},"in_reply_to":"6796c290_92409be3","updated":"2022-01-20 00:56:41.000000000","message":"Double space is a valid writing style. It seems a few openstack developers prefer this style.","commit_id":"04f134720b47e7a4794e33b8f7c701bcdc424b81"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"0715dd32bf372fb61e8d1079647a63d7d6d97ce8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Make the v2 API follow the spec better"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some functionalities in the attribute selector and filter were"},{"line_number":10,"context_line":"missing.  In the attribute filter, use of @key is now supported."},{"line_number":11,"context_line":"Also incorrect handling of boolean values is fixed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Cardinality zero checks in the attribute selector now work even in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"44ec7b34_db4d4d71","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":10},"in_reply_to":"975abd40_49cb9cce","updated":"2022-01-20 01:12:43.000000000","message":"Okay, I see.","commit_id":"04f134720b47e7a4794e33b8f7c701bcdc424b81"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"d1766f5e7722021f701d49b4c9df5b5772edf6ba","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Make the v2 API follow the spec better"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some functionalities in the attribute selector and filter were"},{"line_number":10,"context_line":"missing.  In the attribute filter, use of @key is now supported."},{"line_number":11,"context_line":"Also incorrect handling of boolean values is fixed."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Cardinality zero checks in the attribute selector now work even in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"6796c290_92409be3","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":10},"in_reply_to":"b66dbea2_64e12139","updated":"2022-01-19 07:12:08.000000000","message":"This is a nit comment, but could you check it?","commit_id":"04f134720b47e7a4794e33b8f7c701bcdc424b81"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"f0e2ad1d7ed95086a99f3e0e6080bb6f41c50d3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f1f785d3_c5bb3255","updated":"2022-01-12 09:49:47.000000000","message":"Thanks for your patch, please kindly find my comments.","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"a293516d5d3dce9bfa06f46ce83c9cef1eeb7195","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5b8e41ee_5ede75e8","updated":"2022-01-14 08:19:57.000000000","message":"I also rearranged the commit message. Please review.","commit_id":"04f134720b47e7a4794e33b8f7c701bcdc424b81"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"0e15b14ec22836372cd3149eac11345df050fc17","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f49106ed_8b4b6ee3","updated":"2022-01-19 01:14:25.000000000","message":"I tweaked the commit message. How about this?","commit_id":"f9547f5e433626e807dc151fb934f9d908c472cf"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"ee574b86825af10272162e6ae429cb1b684860b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5fcb2ce9_758bb349","updated":"2022-01-20 05:51:20.000000000","message":"LGTM, Thanks for your re-work.","commit_id":"f9547f5e433626e807dc151fb934f9d908c472cf"}],"tacker/sol_refactored/controller/vnflcm_view.py":[{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"3f0edd00cecb2900c1a8ed63e63b64fb16fd11b6","unresolved":true,"context_lines":[{"line_number":156,"context_line":"            # Check if the specified attribute has a lower cardinality bound"},{"line_number":157,"context_line":"            # of 0. (SOL013 5.3.2.1)"},{"line_number":158,"context_line":"            obj1 \u003d obj"},{"line_number":159,"context_line":"            for k in klist[:-1]:"},{"line_number":160,"context_line":"                obj1 \u003d getattr(obj1, k)"},{"line_number":161,"context_line":"            if not obj1.fields[klist[-1]].nullable:"},{"line_number":162,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"8a7fe091_fddf9994","line":159,"updated":"2022-01-06 05:07:14.000000000","message":"I found this loop variable may conflict with the above. will fix.","commit_id":"053bd2235c295701fd4e30ed3239b1cdfb81ae2b"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"04aa45dbcde536865fd5ca0ff7c21b1796faffe2","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            # Check if the specified attribute has a lower cardinality bound"},{"line_number":157,"context_line":"            # of 0. (SOL013 5.3.2.1)"},{"line_number":158,"context_line":"            obj1 \u003d obj"},{"line_number":159,"context_line":"            for k in klist[:-1]:"},{"line_number":160,"context_line":"                obj1 \u003d getattr(obj1, k)"},{"line_number":161,"context_line":"            if not obj1.fields[klist[-1]].nullable:"},{"line_number":162,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":1,"id":"00c229ad_ab4f8c8f","line":159,"in_reply_to":"8a7fe091_fddf9994","updated":"2022-01-07 02:05:16.000000000","message":"Done","commit_id":"053bd2235c295701fd4e30ed3239b1cdfb81ae2b"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"101c9f5d2af2d2f6173f618649a2afd7af7885f6","unresolved":true,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            # Check if the specified attribute has a lower cardinality bound"},{"line_number":157,"context_line":"            # of 0. (SOL013 5.3.2.1)"},{"line_number":158,"context_line":"            obj1 \u003d obj"},{"line_number":159,"context_line":"            for k in klist[:-1]:"},{"line_number":160,"context_line":"                obj1 \u003d getattr(obj1, k)"},{"line_number":161,"context_line":"            if not obj1.fields[klist[-1]].nullable:"},{"line_number":162,"context_line":"                continue"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            val \u003d odict"}],"source_content_type":"text/x-python","patch_set":1,"id":"19595a3b_f95b3ee1","line":161,"range":{"start_line":158,"start_character":12,"end_line":161,"end_character":51},"updated":"2022-01-05 08:31:30.000000000","message":"Do you need to assign \"obj\" to \"obj1\"?\nIs it possible to use \"obj\" as it is?","commit_id":"053bd2235c295701fd4e30ed3239b1cdfb81ae2b"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"ef3cfcd394ab364957272b675657a917288ff279","unresolved":true,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            # Check if the specified attribute has a lower cardinality bound"},{"line_number":157,"context_line":"            # of 0. (SOL013 5.3.2.1)"},{"line_number":158,"context_line":"            obj1 \u003d obj"},{"line_number":159,"context_line":"            for k in klist[:-1]:"},{"line_number":160,"context_line":"                obj1 \u003d getattr(obj1, k)"},{"line_number":161,"context_line":"            if not obj1.fields[klist[-1]].nullable:"},{"line_number":162,"context_line":"                continue"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            val \u003d odict"}],"source_content_type":"text/x-python","patch_set":1,"id":"db2c4583_aaf1a7b8","line":161,"range":{"start_line":158,"start_character":12,"end_line":161,"end_character":51},"in_reply_to":"19595a3b_f95b3ee1","updated":"2022-01-05 23:44:01.000000000","message":"It is necessary when len(excl_fields) \u003e 1","commit_id":"053bd2235c295701fd4e30ed3239b1cdfb81ae2b"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"3f0edd00cecb2900c1a8ed63e63b64fb16fd11b6","unresolved":true,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            # Check if the specified attribute has a lower cardinality bound"},{"line_number":157,"context_line":"            # of 0. (SOL013 5.3.2.1)"},{"line_number":158,"context_line":"            obj1 \u003d obj"},{"line_number":159,"context_line":"            for k in klist[:-1]:"},{"line_number":160,"context_line":"                obj1 \u003d getattr(obj1, k)"},{"line_number":161,"context_line":"            if not obj1.fields[klist[-1]].nullable:"},{"line_number":162,"context_line":"                continue"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            val \u003d odict"}],"source_content_type":"text/x-python","patch_set":1,"id":"bb999abb_3c346fc9","line":161,"range":{"start_line":158,"start_character":12,"end_line":161,"end_character":51},"in_reply_to":"a165826f_030a0244","updated":"2022-01-06 05:07:14.000000000","message":"test_filter_default has no \u0027/\u0027 in its exclude_fields, so the problem won\u0027t manifest in that unit test.\nobj1 (or obj) must point to the top level object at line 159.\n\nI\u0027ll try to tweak the unit test for clarity.","commit_id":"053bd2235c295701fd4e30ed3239b1cdfb81ae2b"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"04aa45dbcde536865fd5ca0ff7c21b1796faffe2","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            # Check if the specified attribute has a lower cardinality bound"},{"line_number":157,"context_line":"            # of 0. (SOL013 5.3.2.1)"},{"line_number":158,"context_line":"            obj1 \u003d obj"},{"line_number":159,"context_line":"            for k in klist[:-1]:"},{"line_number":160,"context_line":"                obj1 \u003d getattr(obj1, k)"},{"line_number":161,"context_line":"            if not obj1.fields[klist[-1]].nullable:"},{"line_number":162,"context_line":"                continue"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            val \u003d odict"}],"source_content_type":"text/x-python","patch_set":1,"id":"dc240854_ec9676b4","line":161,"range":{"start_line":158,"start_character":12,"end_line":161,"end_character":51},"in_reply_to":"bb999abb_3c346fc9","updated":"2022-01-07 02:05:16.000000000","message":"Done","commit_id":"053bd2235c295701fd4e30ed3239b1cdfb81ae2b"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"b3e9787905e5abfa926e104a2029b199ee2dad4b","unresolved":true,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            # Check if the specified attribute has a lower cardinality bound"},{"line_number":157,"context_line":"            # of 0. (SOL013 5.3.2.1)"},{"line_number":158,"context_line":"            obj1 \u003d obj"},{"line_number":159,"context_line":"            for k in klist[:-1]:"},{"line_number":160,"context_line":"                obj1 \u003d getattr(obj1, k)"},{"line_number":161,"context_line":"            if not obj1.fields[klist[-1]].nullable:"},{"line_number":162,"context_line":"                continue"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            val \u003d odict"}],"source_content_type":"text/x-python","patch_set":1,"id":"a165826f_030a0244","line":161,"range":{"start_line":158,"start_character":12,"end_line":161,"end_character":51},"in_reply_to":"db2c4583_aaf1a7b8","updated":"2022-01-06 02:22:46.000000000","message":"Let me confirm.\nI tried the unittest with \"len(excl_fields)\u003e1\" with the following modifications, and it seems to pass without any problems.\nIf my understanding is wrong, could you point it out?\n---\n$ git diff\ndiff --git a/tacker/sol_refactored/controller/vnflcm_view.py b/tacker/sol_refactored/controller/vnflcm_view.py\nindex 207106d8..176da350 100644\n--- a/tacker/sol_refactored/controller/vnflcm_view.py\n+++ b/tacker/sol_refactored/controller/vnflcm_view.py\n@@ -155,10 +155,9 @@ class AttributeSelector(object):\n\n             # Check if the specified attribute has a lower cardinality bound\n             # of 0. (SOL013 5.3.2.1)\n-            obj1 \u003d obj\n             for k in klist[:-1]:\n-                obj1 \u003d getattr(obj1, k)\n-            if not obj1.fields[klist[-1]].nullable:\n+                obj \u003d getattr(obj, k)\n+            if not obj.fields[klist[-1]].nullable:\n                 continue\n\n             val \u003d odict\n$ tox -e py38 tacker.tests.unit.sol_refactored.controller.test_vnflcm_view.TestAttributeSelector.test_filter_default\n...snip...\n{0} tacker.tests.unit.sol_refactored.controller.test_vnflcm_view.TestAttributeSelector.test_filter_default [0.038153s] ... ok","commit_id":"053bd2235c295701fd4e30ed3239b1cdfb81ae2b"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"7d858efd44a6e4c91c01d3d6931502dab6f9b7c0","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"            # Check if the specified attribute has a lower cardinality bound"},{"line_number":157,"context_line":"            # of 0. (SOL013 5.3.2.1)"},{"line_number":158,"context_line":"            obj1 \u003d obj"},{"line_number":159,"context_line":"            for k in klist[:-1]:"},{"line_number":160,"context_line":"                obj1 \u003d getattr(obj1, k)"},{"line_number":161,"context_line":"            if not obj1.fields[klist[-1]].nullable:"},{"line_number":162,"context_line":"                continue"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            val \u003d odict"}],"source_content_type":"text/x-python","patch_set":1,"id":"99ec57b8_c354b723","line":161,"range":{"start_line":158,"start_character":12,"end_line":161,"end_character":51},"in_reply_to":"dc240854_ec9676b4","updated":"2022-01-11 08:28:32.000000000","message":"Thank you for adding a new check point of the unittest.\nThis unittest made me realize that obj1 is needed.","commit_id":"053bd2235c295701fd4e30ed3239b1cdfb81ae2b"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"f0e2ad1d7ed95086a99f3e0e6080bb6f41c50d3c","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                self.values[0] \u003d parser.isoparse(self.values[0])"},{"line_number":94,"context_line":"            elif isinstance(val, bool):"},{"line_number":95,"context_line":"                if self.values[0] \u003d\u003d \u0027true\u0027:"},{"line_number":96,"context_line":"                    self.values[0] \u003d True"},{"line_number":97,"context_line":"                elif self.values[0] \u003d\u003d \u0027false\u0027:"},{"line_number":98,"context_line":"                    self.values[0] \u003d False"},{"line_number":99,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"72b64d54_c430bf0a","line":96,"range":{"start_line":96,"start_character":20,"end_line":96,"end_character":41},"updated":"2022-01-12 09:49:47.000000000","message":"There seems to be no unit test through this route. Could you add it?","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"a293516d5d3dce9bfa06f46ce83c9cef1eeb7195","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                self.values[0] \u003d parser.isoparse(self.values[0])"},{"line_number":94,"context_line":"            elif isinstance(val, bool):"},{"line_number":95,"context_line":"                if self.values[0] \u003d\u003d \u0027true\u0027:"},{"line_number":96,"context_line":"                    self.values[0] \u003d True"},{"line_number":97,"context_line":"                elif self.values[0] \u003d\u003d \u0027false\u0027:"},{"line_number":98,"context_line":"                    self.values[0] \u003d False"},{"line_number":99,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9acb090a_1e68c8a7","line":96,"range":{"start_line":96,"start_character":20,"end_line":96,"end_character":41},"in_reply_to":"72b64d54_c430bf0a","updated":"2022-01-14 08:19:57.000000000","message":"Added UTs for these cases.","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"ee574b86825af10272162e6ae429cb1b684860b1","unresolved":false,"context_lines":[{"line_number":93,"context_line":"                self.values[0] \u003d parser.isoparse(self.values[0])"},{"line_number":94,"context_line":"            elif isinstance(val, bool):"},{"line_number":95,"context_line":"                if self.values[0] \u003d\u003d \u0027true\u0027:"},{"line_number":96,"context_line":"                    self.values[0] \u003d True"},{"line_number":97,"context_line":"                elif self.values[0] \u003d\u003d \u0027false\u0027:"},{"line_number":98,"context_line":"                    self.values[0] \u003d False"},{"line_number":99,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"f58bddfa_2e1e13ea","line":96,"range":{"start_line":96,"start_character":20,"end_line":96,"end_character":41},"in_reply_to":"9acb090a_1e68c8a7","updated":"2022-01-20 05:51:20.000000000","message":"I\u0027ve confirmed in PS3.","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"f0e2ad1d7ed95086a99f3e0e6080bb6f41c50d3c","unresolved":true,"context_lines":[{"line_number":97,"context_line":"                elif self.values[0] \u003d\u003d \u0027false\u0027:"},{"line_number":98,"context_line":"                    self.values[0] \u003d False"},{"line_number":99,"context_line":"                else:"},{"line_number":100,"context_line":"                    raise sol_ex.InvalidAttributeFilter("},{"line_number":101,"context_line":"                        sol_detail\u003d\"invalid value for boolean\")"},{"line_number":102,"context_line":"            elif isinstance(val, int):"},{"line_number":103,"context_line":"                self.values \u003d [int(v) for v in self.values]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7b6f7628_345dce37","line":100,"range":{"start_line":100,"start_character":20,"end_line":100,"end_character":56},"updated":"2022-01-12 09:49:47.000000000","message":"ditto.","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"ee574b86825af10272162e6ae429cb1b684860b1","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                elif self.values[0] \u003d\u003d \u0027false\u0027:"},{"line_number":98,"context_line":"                    self.values[0] \u003d False"},{"line_number":99,"context_line":"                else:"},{"line_number":100,"context_line":"                    raise sol_ex.InvalidAttributeFilter("},{"line_number":101,"context_line":"                        sol_detail\u003d\"invalid value for boolean\")"},{"line_number":102,"context_line":"            elif isinstance(val, int):"},{"line_number":103,"context_line":"                self.values \u003d [int(v) for v in self.values]"}],"source_content_type":"text/x-python","patch_set":2,"id":"2615526f_91263008","line":100,"range":{"start_line":100,"start_character":20,"end_line":100,"end_character":56},"in_reply_to":"7b6f7628_345dce37","updated":"2022-01-20 05:51:20.000000000","message":"I\u0027ve confirmed in PS3.","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"7d858efd44a6e4c91c01d3d6931502dab6f9b7c0","unresolved":true,"context_lines":[{"line_number":173,"context_line":"                        if k1 not in deleted_ptr:"},{"line_number":174,"context_line":"                            deleted_ptr[k1] \u003d {}"},{"line_number":175,"context_line":"                        deleted_ptr \u003d deleted_ptr[k1]"},{"line_number":176,"context_line":"            except (KeyError, TypeError):"},{"line_number":177,"context_line":"                pass"},{"line_number":178,"context_line":"        if not self.fields:"},{"line_number":179,"context_line":"            return odict"}],"source_content_type":"text/x-python","patch_set":2,"id":"1c7ebe0e_c13eb4ff","line":176,"range":{"start_line":176,"start_character":30,"end_line":176,"end_character":39},"updated":"2022-01-11 08:28:32.000000000","message":"Just a question.\nThis patch doesn\u0027t fix the try clause, but in what cases would this exception occur?","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"9b2bac060985457e97ffa06ffa44819ba17e6700","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                        if k1 not in deleted_ptr:"},{"line_number":174,"context_line":"                            deleted_ptr[k1] \u003d {}"},{"line_number":175,"context_line":"                        deleted_ptr \u003d deleted_ptr[k1]"},{"line_number":176,"context_line":"            except (KeyError, TypeError):"},{"line_number":177,"context_line":"                pass"},{"line_number":178,"context_line":"        if not self.fields:"},{"line_number":179,"context_line":"            return odict"}],"source_content_type":"text/x-python","patch_set":2,"id":"37d2eab6_2a453e2a","line":176,"range":{"start_line":176,"start_character":30,"end_line":176,"end_character":39},"in_reply_to":"13498d09_f5c2019a","updated":"2022-01-17 01:57:19.000000000","message":"Thank you for the answer. I see.","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"a293516d5d3dce9bfa06f46ce83c9cef1eeb7195","unresolved":true,"context_lines":[{"line_number":173,"context_line":"                        if k1 not in deleted_ptr:"},{"line_number":174,"context_line":"                            deleted_ptr[k1] \u003d {}"},{"line_number":175,"context_line":"                        deleted_ptr \u003d deleted_ptr[k1]"},{"line_number":176,"context_line":"            except (KeyError, TypeError):"},{"line_number":177,"context_line":"                pass"},{"line_number":178,"context_line":"        if not self.fields:"},{"line_number":179,"context_line":"            return odict"}],"source_content_type":"text/x-python","patch_set":2,"id":"13498d09_f5c2019a","line":176,"range":{"start_line":176,"start_character":30,"end_line":176,"end_character":39},"in_reply_to":"1c7ebe0e_c13eb4ff","updated":"2022-01-14 08:19:57.000000000","message":"TypeError happens when val isn\u0027t a dict.\nFor example, klist\u003d[\u0027foo\u0027,\u0027bar\u0027] and odict[\u0027foo\u0027] is an integer.","commit_id":"3e029e698f403bd996f7994bbee6a833b69ac700"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"b624e5b7db3c98faeb232d92dc6f6c9892493efc","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        match_fn \u003d getattr(self, \"match_\" + self.op)"},{"line_number":110,"context_line":"        if isinstance(val, list):"},{"line_number":111,"context_line":"            for v in val:"},{"line_number":112,"context_line":"                if match_fn(v):"},{"line_number":113,"context_line":"                    return True"},{"line_number":114,"context_line":"            return False"},{"line_number":115,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"943a2a57_5189ccff","line":112,"updated":"2022-01-20 08:56:03.000000000","message":"In the case of \"neq\" and \"nin\", if there is even one key different from the one specified by filter, it will be True.\nFor example, if the key of \"vimConnectionInfo\" is \"vim1\" and \"vim2\", it is not excluded by the filter\u003d\"(neq,vimConnectionInfo/@key,vim1)\".\nIs this the intended specification?","commit_id":"f9547f5e433626e807dc151fb934f9d908c472cf"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"011fa7c2fd575767dfec83e14982f25b02110d71","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        match_fn \u003d getattr(self, \"match_\" + self.op)"},{"line_number":110,"context_line":"        if isinstance(val, list):"},{"line_number":111,"context_line":"            for v in val:"},{"line_number":112,"context_line":"                if match_fn(v):"},{"line_number":113,"context_line":"                    return True"},{"line_number":114,"context_line":"            return False"},{"line_number":115,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"cb105a0d_bc9374e5","line":112,"in_reply_to":"943a2a57_5189ccff","updated":"2022-01-20 09:20:34.000000000","message":"The spec for AttributeFilter is only concisely written in SOL013 5.2.2.\nThe spec doesn\u0027t say much when the dict in question has more than one key.\n\nAs the spec isn\u0027t very clear, I think it is better to be permissive and return maybe extra results.","commit_id":"f9547f5e433626e807dc151fb934f9d908c472cf"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"ae129bf364e9de827ccae1a9c5fe70037c192d62","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        match_fn \u003d getattr(self, \"match_\" + self.op)"},{"line_number":110,"context_line":"        if isinstance(val, list):"},{"line_number":111,"context_line":"            for v in val:"},{"line_number":112,"context_line":"                if match_fn(v):"},{"line_number":113,"context_line":"                    return True"},{"line_number":114,"context_line":"            return False"},{"line_number":115,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fd7fd3a_f0bf25b5","line":112,"in_reply_to":"a9ca81b4_addcbb09","updated":"2022-01-21 08:22:04.000000000","message":"Thanks for testing.\n\nThat\u0027s because currentVnfExtCpData is a list, and unfortunately the spec isn\u0027t clear how the code should behave.\nI think it\u0027s better to return a 400 error in such cases.\nPlease wait for the next patchset.","commit_id":"f9547f5e433626e807dc151fb934f9d908c472cf"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"025cae08e7a3cd145315579c860eeec2517e1464","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        match_fn \u003d getattr(self, \"match_\" + self.op)"},{"line_number":110,"context_line":"        if isinstance(val, list):"},{"line_number":111,"context_line":"            for v in val:"},{"line_number":112,"context_line":"                if match_fn(v):"},{"line_number":113,"context_line":"                    return True"},{"line_number":114,"context_line":"            return False"},{"line_number":115,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"a9ca81b4_addcbb09","line":112,"in_reply_to":"cb105a0d_bc9374e5","updated":"2022-01-21 07:02:56.000000000","message":"Thank you for sharing your thoughts.\n(I also think that the description of SOL013 is not clear…)\nI understand that the specifications of \"@key\" in Tacker are as follows.\n-----\neq, in -\u003e Return record if even one key contains the same value\nneq, nin -\u003e Return record if even one key contains different value\n-----\n\nI tried the following filter and it returned a 500 error.\n-----\nfilter\u003d\"(eq,instantiatedVnfInfo/extVirtualLinkInfo/currentVnfExtCpData/cpConfig/@key,VDU1_CP1)\"\n-----\nIf it\u0027s not supported, could you please add a comment and return a 400 error instead of a 500 error?","commit_id":"f9547f5e433626e807dc151fb934f9d908c472cf"}]}
