)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"c58b45b2dcb68b0368d254d5ea31667008ba1a7d","unresolved":true,"context_lines":[{"line_number":20,"context_line":"  * \u003efail"},{"line_number":21,"context_line":"  * changedExtConnectivity"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- This patch has 2 BP feature. Since both features"},{"line_number":24,"context_line":"are related , they are merged to one patch. This is"},{"line_number":25,"context_line":"why this patch have 2 BPs."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Filtering for the following attributes:"},{"line_number":28,"context_line":"operationParams, error, resourceChanges and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da079bed_40c36ad3","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":26},"updated":"2021-03-21 18:24:44.000000000","message":"It\u0027s saying almost nothing for the reason why actually. It\u0027s enough to notice that it includes two blueprints at the top of this commit message.","commit_id":"e227a3f9ea4ee1503cdbe28029a9f80ca7d04b80"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"9ec904a3c510ac4976ce5777cfe7d2c383c73a1b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"  * \u003efail"},{"line_number":21,"context_line":"  * changedExtConnectivity"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- This patch has 2 BP feature. Since both features"},{"line_number":24,"context_line":"are related , they are merged to one patch. This is"},{"line_number":25,"context_line":"why this patch have 2 BPs."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Filtering for the following attributes:"},{"line_number":28,"context_line":"operationParams, error, resourceChanges and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"94864cb3_93d91dd5","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":26},"in_reply_to":"473cb09c_dd5c6d08","updated":"2021-03-25 09:10:02.000000000","message":"Ack","commit_id":"e227a3f9ea4ee1503cdbe28029a9f80ca7d04b80"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"ac1d41e932aac8843acc4d5fff83e77bf4f02c1c","unresolved":true,"context_lines":[{"line_number":20,"context_line":"  * \u003efail"},{"line_number":21,"context_line":"  * changedExtConnectivity"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- This patch has 2 BP feature. Since both features"},{"line_number":24,"context_line":"are related , they are merged to one patch. This is"},{"line_number":25,"context_line":"why this patch have 2 BPs."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"- Filtering for the following attributes:"},{"line_number":28,"context_line":"operationParams, error, resourceChanges and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"473cb09c_dd5c6d08","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":26},"in_reply_to":"da079bed_40c36ad3","updated":"2021-03-24 02:31:06.000000000","message":"\u003e It\u0027s saying almost nothing for the reason why actually. It\u0027s enough to notice that it includes two blueprints at the top of this commit message.\n\nModified the commit message to mention the 2 features.","commit_id":"e227a3f9ea4ee1503cdbe28029a9f80ca7d04b80"}],"tacker/api/common/attribute_filter.py":[{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"c619c0af4a5e3284a9c79018e14561cae30c98c8","unresolved":true,"context_lines":[{"line_number":170,"context_line":"        if (tokens[2].startswith(\"\u0027\\\"{\") and"},{"line_number":171,"context_line":"                tokens[len(tokens) - 1].endswith(\"}\\\"\u0027\")):"},{"line_number":172,"context_line":"            new_token \u003d \u0027\u0027"},{"line_number":173,"context_line":"            for index, token in enumerate(tokens[2:len(tokens)]):"},{"line_number":174,"context_line":"                new_token \u003d new_token + token + \u0027,\u0027"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"            # remove last character as it adds \u0027,\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"a702aa84_e33b26e3","line":173,"updated":"2021-03-18 00:31:22.000000000","message":"It is just a comment. (comment of L.177 is important.)\nyou don\u0027t use index. and tokens[2:len(tokens)] is equal to tokens[2:].\nso, it should be \"for token in tokens[2:]:\"","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"637c8e7e11e71ec7d51b2c25a53471b925a9ee0c","unresolved":true,"context_lines":[{"line_number":170,"context_line":"        if (tokens[2].startswith(\"\u0027\\\"{\") and"},{"line_number":171,"context_line":"                tokens[len(tokens) - 1].endswith(\"}\\\"\u0027\")):"},{"line_number":172,"context_line":"            new_token \u003d \u0027\u0027"},{"line_number":173,"context_line":"            for index, token in enumerate(tokens[2:len(tokens)]):"},{"line_number":174,"context_line":"                new_token \u003d new_token + token + \u0027,\u0027"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"            # remove last character as it adds \u0027,\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"d2d3bd4c_3a8f31ff","line":173,"in_reply_to":"a702aa84_e33b26e3","updated":"2021-03-24 02:44:11.000000000","message":"\u003e It is just a comment. (comment of L.177 is important.)\n\u003e you don\u0027t use index. and tokens[2:len(tokens)] is equal to tokens[2:].\n\u003e so, it should be \"for token in tokens[2:]:\"\n\nremoved because of comment in L177.","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"c619c0af4a5e3284a9c79018e14561cae30c98c8","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                new_token \u003d new_token + token + \u0027,\u0027"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"            # remove last character as it adds \u0027,\u0027"},{"line_number":177,"context_line":"            tokens[2] \u003d new_token[:-1]"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            # retain first 3 indices and remove the rest"},{"line_number":180,"context_line":"            # to process as string"}],"source_content_type":"text/x-python","patch_set":5,"id":"2a5a948b_63380488","line":177,"updated":"2021-03-18 00:31:22.000000000","message":"L.172 - L.177 can be replaced to just one line;\ntokens[2] \u003d \u0027,\u0027.join(tokens[2:])","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"637c8e7e11e71ec7d51b2c25a53471b925a9ee0c","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                new_token \u003d new_token + token + \u0027,\u0027"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"            # remove last character as it adds \u0027,\u0027"},{"line_number":177,"context_line":"            tokens[2] \u003d new_token[:-1]"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            # retain first 3 indices and remove the rest"},{"line_number":180,"context_line":"            # to process as string"}],"source_content_type":"text/x-python","patch_set":5,"id":"1647ed3c_19db9cb2","line":177,"in_reply_to":"2a5a948b_63380488","updated":"2021-03-24 02:44:11.000000000","message":"\u003e L.172 - L.177 can be replaced to just one line;\n\u003e tokens[2] \u003d \u0027,\u0027.join(tokens[2:])\n\nremoved L172-L177  replaced with what was suggested","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"c58b45b2dcb68b0368d254d5ea31667008ba1a7d","unresolved":true,"context_lines":[{"line_number":164,"context_line":"        tokens \u003d filter_rule.split(\u0027,\u0027)"},{"line_number":165,"context_line":"        filter_type \u003d None"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        # TODO(esto-aln): Added support for JSON Strings \u0027\"{...}\"\u0027 in"},{"line_number":168,"context_line":"        # the values part of the filter expression because the values in"},{"line_number":169,"context_line":"        # the database are saved as String."},{"line_number":170,"context_line":"        if (tokens[2].startswith(\"\u0027\\\"{\") and"},{"line_number":171,"context_line":"                tokens[len(tokens) - 1].endswith(\"}\\\"\u0027\")):"},{"line_number":172,"context_line":"            new_token \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1c984a_acd87151","line":169,"range":{"start_line":167,"start_character":0,"end_line":169,"end_character":43},"updated":"2021-03-21 18:24:44.000000000","message":"Could you describe only your TODO simply?","commit_id":"e227a3f9ea4ee1503cdbe28029a9f80ca7d04b80"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"9ec904a3c510ac4976ce5777cfe7d2c383c73a1b","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        tokens \u003d filter_rule.split(\u0027,\u0027)"},{"line_number":165,"context_line":"        filter_type \u003d None"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        # TODO(esto-aln): Added support for JSON Strings \u0027\"{...}\"\u0027 in"},{"line_number":168,"context_line":"        # the values part of the filter expression because the values in"},{"line_number":169,"context_line":"        # the database are saved as String."},{"line_number":170,"context_line":"        if (tokens[2].startswith(\"\u0027\\\"{\") and"},{"line_number":171,"context_line":"                tokens[len(tokens) - 1].endswith(\"}\\\"\u0027\")):"},{"line_number":172,"context_line":"            new_token \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"38ceb471_2cdf5883","line":169,"range":{"start_line":167,"start_character":0,"end_line":169,"end_character":43},"in_reply_to":"0b6d61e1_3641546a","updated":"2021-03-25 09:10:02.000000000","message":"Ack","commit_id":"e227a3f9ea4ee1503cdbe28029a9f80ca7d04b80"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"ac1d41e932aac8843acc4d5fff83e77bf4f02c1c","unresolved":true,"context_lines":[{"line_number":164,"context_line":"        tokens \u003d filter_rule.split(\u0027,\u0027)"},{"line_number":165,"context_line":"        filter_type \u003d None"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        # TODO(esto-aln): Added support for JSON Strings \u0027\"{...}\"\u0027 in"},{"line_number":168,"context_line":"        # the values part of the filter expression because the values in"},{"line_number":169,"context_line":"        # the database are saved as String."},{"line_number":170,"context_line":"        if (tokens[2].startswith(\"\u0027\\\"{\") and"},{"line_number":171,"context_line":"                tokens[len(tokens) - 1].endswith(\"}\\\"\u0027\")):"},{"line_number":172,"context_line":"            new_token \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"0b6d61e1_3641546a","line":169,"range":{"start_line":167,"start_character":0,"end_line":169,"end_character":43},"in_reply_to":"1f1c984a_acd87151","updated":"2021-03-24 02:31:06.000000000","message":"\u003e Could you describe only your TODO simply?\n\nmodified the TODO statement","commit_id":"e227a3f9ea4ee1503cdbe28029a9f80ca7d04b80"}],"tacker/api/views/vnf_lcm.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"1aac6743c9eec565b4d7d027144f29262fd02b5d","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        return vim_connections"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _get_lcm_op_occs_links(self, vnf_lcm_op_occs):"},{"line_number":93,"context_line":"        # TODO(esto-aln): This method will be transferred to"},{"line_number":94,"context_line":"        # tacker/api/views/vnf_lcm_op_occs.py in the future"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        _links \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"eaa9e250_356983f4","line":93,"range":{"start_line":93,"start_character":10,"end_line":93,"end_character":25},"updated":"2021-03-12 08:26:50.000000000","message":"https://review.opendev.org/c/openstack/tacker/+/774733/7/tacker/api/views/vnf_lcm.py\nAs above, I think TODO should be listed at the top of the function.","commit_id":"524e01b61e019aacbbe05fefb4b811f1cf35b047"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"e1c1a797ca508a82a9172a7fd1c547aa3a33762d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return vim_connections"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _get_lcm_op_occs_links(self, vnf_lcm_op_occs):"},{"line_number":93,"context_line":"        # TODO(esto-aln): This method will be transferred to"},{"line_number":94,"context_line":"        # tacker/api/views/vnf_lcm_op_occs.py in the future"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        _links \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"52d20dff_1ad5baec","line":93,"range":{"start_line":93,"start_character":10,"end_line":93,"end_character":25},"in_reply_to":"b047e3a5_4f689b47","updated":"2021-03-19 09:24:23.000000000","message":"I\u0027ve confirmed.","commit_id":"524e01b61e019aacbbe05fefb4b811f1cf35b047"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"c7fede357af9d42f2f716ce6d3be7a131b203d7d","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        return vim_connections"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _get_lcm_op_occs_links(self, vnf_lcm_op_occs):"},{"line_number":93,"context_line":"        # TODO(esto-aln): This method will be transferred to"},{"line_number":94,"context_line":"        # tacker/api/views/vnf_lcm_op_occs.py in the future"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        _links \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"b047e3a5_4f689b47","line":93,"range":{"start_line":93,"start_character":10,"end_line":93,"end_character":25},"in_reply_to":"eaa9e250_356983f4","updated":"2021-03-17 04:51:40.000000000","message":"\u003e https://review.opendev.org/c/openstack/tacker/+/774733/7/tacker/api/views/vnf_lcm.py\n\u003e As above, I think TODO should be listed at the top of the function.\n\ntransferred TODO to the top of the function","commit_id":"524e01b61e019aacbbe05fefb4b811f1cf35b047"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"1aac6743c9eec565b4d7d027144f29262fd02b5d","unresolved":true,"context_lines":[{"line_number":145,"context_line":"        return vnf_instance_dict"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _get_vnf_lcm_op_occs(self, vnf_lcm_op_occs):"},{"line_number":148,"context_line":"        # TODO(esto-aln): This method will be transferred to"},{"line_number":149,"context_line":"        # tacker/api/views/vnf_lcm_op_occs.py in the future"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        vnf_lcm_op_occs_dict \u003d vnf_lcm_op_occs.to_dict()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3b9ac21b_71f9f6a6","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":26},"updated":"2021-03-12 08:26:50.000000000","message":"ditto","commit_id":"524e01b61e019aacbbe05fefb4b811f1cf35b047"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"c7fede357af9d42f2f716ce6d3be7a131b203d7d","unresolved":true,"context_lines":[{"line_number":145,"context_line":"        return vnf_instance_dict"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _get_vnf_lcm_op_occs(self, vnf_lcm_op_occs):"},{"line_number":148,"context_line":"        # TODO(esto-aln): This method will be transferred to"},{"line_number":149,"context_line":"        # tacker/api/views/vnf_lcm_op_occs.py in the future"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        vnf_lcm_op_occs_dict \u003d vnf_lcm_op_occs.to_dict()"}],"source_content_type":"text/x-python","patch_set":4,"id":"4c03f4b2_4bc3f51a","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":26},"in_reply_to":"3b9ac21b_71f9f6a6","updated":"2021-03-17 04:51:40.000000000","message":"\u003e ditto\n\ntransferred TODO to the top of the function","commit_id":"524e01b61e019aacbbe05fefb4b811f1cf35b047"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"e1c1a797ca508a82a9172a7fd1c547aa3a33762d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        return vnf_instance_dict"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def _get_vnf_lcm_op_occs(self, vnf_lcm_op_occs):"},{"line_number":148,"context_line":"        # TODO(esto-aln): This method will be transferred to"},{"line_number":149,"context_line":"        # tacker/api/views/vnf_lcm_op_occs.py in the future"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        vnf_lcm_op_occs_dict \u003d vnf_lcm_op_occs.to_dict()"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f1a4122_fc963539","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":26},"in_reply_to":"4c03f4b2_4bc3f51a","updated":"2021-03-19 09:24:23.000000000","message":"I\u0027ve confirmed.","commit_id":"524e01b61e019aacbbe05fefb4b811f1cf35b047"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"1aac6743c9eec565b4d7d027144f29262fd02b5d","unresolved":true,"context_lines":[{"line_number":276,"context_line":"        return self._get_vnf_lcm_subscription(vnf_lcm_subscriptions)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def show_lcm_op_occs(self, vnf_lcm_op_occs):"},{"line_number":279,"context_line":"        # TODO(esto-aln): This method will be transferred to"},{"line_number":280,"context_line":"        # tacker/api/views/vnf_lcm_op_occs.py in the future"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        return self._get_vnf_lcm_op_occs(vnf_lcm_op_occs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c9c56d50_d9f9d41d","line":279,"range":{"start_line":279,"start_character":10,"end_line":279,"end_character":25},"updated":"2021-03-12 08:26:50.000000000","message":"ditto","commit_id":"524e01b61e019aacbbe05fefb4b811f1cf35b047"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"e1c1a797ca508a82a9172a7fd1c547aa3a33762d","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        return self._get_vnf_lcm_subscription(vnf_lcm_subscriptions)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def show_lcm_op_occs(self, vnf_lcm_op_occs):"},{"line_number":279,"context_line":"        # TODO(esto-aln): This method will be transferred to"},{"line_number":280,"context_line":"        # tacker/api/views/vnf_lcm_op_occs.py in the future"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        return self._get_vnf_lcm_op_occs(vnf_lcm_op_occs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"b09728bc_3958c4ae","line":279,"range":{"start_line":279,"start_character":10,"end_line":279,"end_character":25},"in_reply_to":"9ff59d8a_e404feb6","updated":"2021-03-19 09:24:23.000000000","message":"I\u0027ve confirmed.","commit_id":"524e01b61e019aacbbe05fefb4b811f1cf35b047"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"c7fede357af9d42f2f716ce6d3be7a131b203d7d","unresolved":true,"context_lines":[{"line_number":276,"context_line":"        return self._get_vnf_lcm_subscription(vnf_lcm_subscriptions)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def show_lcm_op_occs(self, vnf_lcm_op_occs):"},{"line_number":279,"context_line":"        # TODO(esto-aln): This method will be transferred to"},{"line_number":280,"context_line":"        # tacker/api/views/vnf_lcm_op_occs.py in the future"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        return self._get_vnf_lcm_op_occs(vnf_lcm_op_occs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ff59d8a_e404feb6","line":279,"range":{"start_line":279,"start_character":10,"end_line":279,"end_character":25},"in_reply_to":"c9c56d50_d9f9d41d","updated":"2021-03-17 04:51:40.000000000","message":"\u003e ditto\n\ntransferred TODO to the top of the function","commit_id":"524e01b61e019aacbbe05fefb4b811f1cf35b047"}],"tacker/api/views/vnf_lcm_op_occs.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"042d18bd40eb34234a3cdbdcdb205b644f5e305a","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ViewBuilder(base.BaseViewBuilder):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    FLATTEN_ATTRIBUTES \u003d _vnf_lcm_op_occs.VnfLcmOpOcc.FLATTEN_ATTRIBUTES"},{"line_number":28,"context_line":"    COMPLEX_ATTRIBUTES \u003d _vnf_lcm_op_occs.VnfLcmOpOcc.COMPLEX_ATTRIBUTES"},{"line_number":29,"context_line":"    FLATTEN_COMPLEX_ATTRIBUTES \u003d [key for key in FLATTEN_ATTRIBUTES.keys()"},{"line_number":30,"context_line":"        if \u0027/\u0027 in key]"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa3d10a8_a5c682d0","line":27,"updated":"2021-03-04 03:18:06.000000000","message":"https://review.opendev.org/c/openstack/tacker/+/774733/4/tacker/api/views/vnf_subscriptions.py#76\nFor the same reason as above patch, I understand that it is separated into \u0027vnf_lcm_op_occs.py\u0027.\nHowever, I think that \u0027vnf_lcm.py\u0027 already has vnf_lcm_op_occs related processing.\nI think it\u0027s not appropriate to fix it in this patch, so can you add a TODO description to \u0027vnf_lcm.py\u0027 in this patch?","commit_id":"7ce3d40d3fdf8e0bc236d26ead365cfe23920d37"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"e1c1a797ca508a82a9172a7fd1c547aa3a33762d","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ViewBuilder(base.BaseViewBuilder):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    FLATTEN_ATTRIBUTES \u003d _vnf_lcm_op_occs.VnfLcmOpOcc.FLATTEN_ATTRIBUTES"},{"line_number":28,"context_line":"    COMPLEX_ATTRIBUTES \u003d _vnf_lcm_op_occs.VnfLcmOpOcc.COMPLEX_ATTRIBUTES"},{"line_number":29,"context_line":"    FLATTEN_COMPLEX_ATTRIBUTES \u003d [key for key in FLATTEN_ATTRIBUTES.keys()"},{"line_number":30,"context_line":"        if \u0027/\u0027 in key]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1210e072_d8aec1a4","line":27,"in_reply_to":"bf4b23ec_27c4e1f3","updated":"2021-03-19 09:24:23.000000000","message":"I\u0027ve confirmed.","commit_id":"7ce3d40d3fdf8e0bc236d26ead365cfe23920d37"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"68dcaf5d209a51dd77668810a62f2804afbb355d","unresolved":true,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class ViewBuilder(base.BaseViewBuilder):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    FLATTEN_ATTRIBUTES \u003d _vnf_lcm_op_occs.VnfLcmOpOcc.FLATTEN_ATTRIBUTES"},{"line_number":28,"context_line":"    COMPLEX_ATTRIBUTES \u003d _vnf_lcm_op_occs.VnfLcmOpOcc.COMPLEX_ATTRIBUTES"},{"line_number":29,"context_line":"    FLATTEN_COMPLEX_ATTRIBUTES \u003d [key for key in FLATTEN_ATTRIBUTES.keys()"},{"line_number":30,"context_line":"        if \u0027/\u0027 in key]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf4b23ec_27c4e1f3","line":27,"in_reply_to":"fa3d10a8_a5c682d0","updated":"2021-03-09 04:40:19.000000000","message":"\u003e https://review.opendev.org/c/openstack/tacker/+/774733/4/tacker/api/views/vnf_subscriptions.py#76\n\u003e For the same reason as above patch, I understand that it is separated into \u0027vnf_lcm_op_occs.py\u0027.\n\u003e However, I think that \u0027vnf_lcm.py\u0027 already has vnf_lcm_op_occs related processing.\n\u003e I think it\u0027s not appropriate to fix it in this patch, so can you add a TODO description to \u0027vnf_lcm.py\u0027 in this patch?\n\nAdded TODO comment on the method\n        # TODO(esto-aln): This method will be transferred to\n        # tacker/api/views/vnf_lcm_op_occs.py in the future","commit_id":"7ce3d40d3fdf8e0bc236d26ead365cfe23920d37"}],"tacker/api/vnflcm/v1/controller.py":[{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"c619c0af4a5e3284a9c79018e14561cae30c98c8","unresolved":true,"context_lines":[{"line_number":1476,"context_line":"        context \u003d request.environ[\u0027tacker.context\u0027]"},{"line_number":1477,"context_line":"        context.can(vnf_lcm_policies.VNFLCM % \u0027list_lcm_op_occs\u0027)"},{"line_number":1478,"context_line":""},{"line_number":1479,"context_line":"        def _key_exists(key, validate_value\u003dTrue):"},{"line_number":1480,"context_line":"            try:"},{"line_number":1481,"context_line":"                request.GET[key]"},{"line_number":1482,"context_line":"            except KeyError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"a58a2158_3773e256","line":1479,"updated":"2021-03-18 00:31:22.000000000","message":"It is a redundant and unnecessary method. see L.1487,1488","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"637c8e7e11e71ec7d51b2c25a53471b925a9ee0c","unresolved":true,"context_lines":[{"line_number":1476,"context_line":"        context \u003d request.environ[\u0027tacker.context\u0027]"},{"line_number":1477,"context_line":"        context.can(vnf_lcm_policies.VNFLCM % \u0027list_lcm_op_occs\u0027)"},{"line_number":1478,"context_line":""},{"line_number":1479,"context_line":"        def _key_exists(key, validate_value\u003dTrue):"},{"line_number":1480,"context_line":"            try:"},{"line_number":1481,"context_line":"                request.GET[key]"},{"line_number":1482,"context_line":"            except KeyError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"4e3696cb_50157bbe","line":1479,"in_reply_to":"a58a2158_3773e256","updated":"2021-03-24 02:44:11.000000000","message":"\u003e It is a redundant and unnecessary method. see L.1487,1488\n\nThis method is needed since the values returned from request.GET are processed as String. Removing this method might cause errors in the conditions that will follow. This implementation is based from tacker/api/vnfpkgm/v1/controller.py in index method.","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"c619c0af4a5e3284a9c79018e14561cae30c98c8","unresolved":true,"context_lines":[{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"            return True"},{"line_number":1486,"context_line":""},{"line_number":1487,"context_line":"        all_fields \u003d _key_exists(\u0027all_fields\u0027)"},{"line_number":1488,"context_line":"        exclude_default \u003d _key_exists(\u0027exclude_default\u0027)"},{"line_number":1489,"context_line":"        fields \u003d request.GET.get(\u0027fields\u0027)"},{"line_number":1490,"context_line":"        exclude_fields \u003d request.GET.get(\u0027exclude_fields\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"17a557ad_fb0a473f","line":1487,"updated":"2021-03-18 00:31:22.000000000","message":"all_fields \u003d \u0027all_fields\u0027 in request.GET","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"637c8e7e11e71ec7d51b2c25a53471b925a9ee0c","unresolved":true,"context_lines":[{"line_number":1484,"context_line":""},{"line_number":1485,"context_line":"            return True"},{"line_number":1486,"context_line":""},{"line_number":1487,"context_line":"        all_fields \u003d _key_exists(\u0027all_fields\u0027)"},{"line_number":1488,"context_line":"        exclude_default \u003d _key_exists(\u0027exclude_default\u0027)"},{"line_number":1489,"context_line":"        fields \u003d request.GET.get(\u0027fields\u0027)"},{"line_number":1490,"context_line":"        exclude_fields \u003d request.GET.get(\u0027exclude_fields\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"c739c5f1_1765e3d3","line":1487,"in_reply_to":"17a557ad_fb0a473f","updated":"2021-03-24 02:44:11.000000000","message":"\u003e all_fields \u003d \u0027all_fields\u0027 in request.GET\n\nUsing this will cause all_fields to have the wrong values and might cause errors.","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"c619c0af4a5e3284a9c79018e14561cae30c98c8","unresolved":true,"context_lines":[{"line_number":1485,"context_line":"            return True"},{"line_number":1486,"context_line":""},{"line_number":1487,"context_line":"        all_fields \u003d _key_exists(\u0027all_fields\u0027)"},{"line_number":1488,"context_line":"        exclude_default \u003d _key_exists(\u0027exclude_default\u0027)"},{"line_number":1489,"context_line":"        fields \u003d request.GET.get(\u0027fields\u0027)"},{"line_number":1490,"context_line":"        exclude_fields \u003d request.GET.get(\u0027exclude_fields\u0027)"},{"line_number":1491,"context_line":"        filters \u003d request.GET.get(\u0027filter\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"767e05fd_20075422","line":1488,"updated":"2021-03-18 00:31:22.000000000","message":"exculed_default \u003d \u0027exclude_default\u0027 in request.GET","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"637c8e7e11e71ec7d51b2c25a53471b925a9ee0c","unresolved":true,"context_lines":[{"line_number":1485,"context_line":"            return True"},{"line_number":1486,"context_line":""},{"line_number":1487,"context_line":"        all_fields \u003d _key_exists(\u0027all_fields\u0027)"},{"line_number":1488,"context_line":"        exclude_default \u003d _key_exists(\u0027exclude_default\u0027)"},{"line_number":1489,"context_line":"        fields \u003d request.GET.get(\u0027fields\u0027)"},{"line_number":1490,"context_line":"        exclude_fields \u003d request.GET.get(\u0027exclude_fields\u0027)"},{"line_number":1491,"context_line":"        filters \u003d request.GET.get(\u0027filter\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"a58d56b4_396cfd7d","line":1488,"in_reply_to":"767e05fd_20075422","updated":"2021-03-24 02:44:11.000000000","message":"\u003e exculed_default \u003d \u0027exclude_default\u0027 in request.GET\n\nUsing this will cause exclude_default to have the wrong values and might cause errors.","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"652b8cb058b1f5b080699ceb30c1e0b25bbfebda","unresolved":true,"context_lines":[{"line_number":1504,"context_line":"                vnf_lcm_op_occs_obj.VnfLcmOpOccList.get_by_filters("},{"line_number":1505,"context_line":"                    request.context, read_deleted\u003d\u0027no\u0027, filters\u003dfilters)"},{"line_number":1506,"context_line":"        except Exception as e:"},{"line_number":1507,"context_line":"            LOG.error(traceback.format_exc())"},{"line_number":1508,"context_line":"            return self._make_problem_detail("},{"line_number":1509,"context_line":"                str(e), 500, title\u003d\u0027Internal Server Error\u0027)"},{"line_number":1510,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a828467_e2ad3a36","line":1507,"updated":"2021-03-18 00:46:49.000000000","message":"use LOG.exception","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"637c8e7e11e71ec7d51b2c25a53471b925a9ee0c","unresolved":true,"context_lines":[{"line_number":1504,"context_line":"                vnf_lcm_op_occs_obj.VnfLcmOpOccList.get_by_filters("},{"line_number":1505,"context_line":"                    request.context, read_deleted\u003d\u0027no\u0027, filters\u003dfilters)"},{"line_number":1506,"context_line":"        except Exception as e:"},{"line_number":1507,"context_line":"            LOG.error(traceback.format_exc())"},{"line_number":1508,"context_line":"            return self._make_problem_detail("},{"line_number":1509,"context_line":"                str(e), 500, title\u003d\u0027Internal Server Error\u0027)"},{"line_number":1510,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"c919e9ed_8c88f721","line":1507,"in_reply_to":"5a828467_e2ad3a36","updated":"2021-03-24 02:44:11.000000000","message":"\u003e use LOG.exception\n\nreplaced with LOG.exception","commit_id":"906820fa601a5c3f8dfe5e9590cafac07ddfcf8b"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"0ee8e03a17a0c38f1f848c3f63e7ed2e977e8cdd","unresolved":true,"context_lines":[{"line_number":1512,"context_line":"        context \u003d request.environ[\u0027tacker.context\u0027]"},{"line_number":1513,"context_line":"        context.can(vnf_lcm_policies.VNFLCM % \u0027list_lcm_op_occs\u0027)"},{"line_number":1514,"context_line":""},{"line_number":1515,"context_line":"        def _key_exists(key, validate_value\u003dTrue):"},{"line_number":1516,"context_line":"            try:"},{"line_number":1517,"context_line":"                request.GET[key]"},{"line_number":1518,"context_line":"            except KeyError:"}],"source_content_type":"text/x-python","patch_set":11,"id":"95bd6eec_716e19ae","line":1515,"updated":"2021-03-24 03:56:44.000000000","message":"validate_value is not used in this method.","commit_id":"9c459efd2d929a231762f568a1091c8309de7c6a"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"ba540feee531394209d100bdc9a22f855dd97571","unresolved":true,"context_lines":[{"line_number":1512,"context_line":"        context \u003d request.environ[\u0027tacker.context\u0027]"},{"line_number":1513,"context_line":"        context.can(vnf_lcm_policies.VNFLCM % \u0027list_lcm_op_occs\u0027)"},{"line_number":1514,"context_line":""},{"line_number":1515,"context_line":"        def _key_exists(key, validate_value\u003dTrue):"},{"line_number":1516,"context_line":"            try:"},{"line_number":1517,"context_line":"                request.GET[key]"},{"line_number":1518,"context_line":"            except KeyError:"}],"source_content_type":"text/x-python","patch_set":11,"id":"67954dec_c1aeac68","line":1515,"in_reply_to":"95bd6eec_716e19ae","updated":"2021-03-24 13:02:44.000000000","message":"\u003e validate_value is not used in this method.\n\nremoved this method.","commit_id":"9c459efd2d929a231762f568a1091c8309de7c6a"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"0ee8e03a17a0c38f1f848c3f63e7ed2e977e8cdd","unresolved":true,"context_lines":[{"line_number":1514,"context_line":""},{"line_number":1515,"context_line":"        def _key_exists(key, validate_value\u003dTrue):"},{"line_number":1516,"context_line":"            try:"},{"line_number":1517,"context_line":"                request.GET[key]"},{"line_number":1518,"context_line":"            except KeyError:"},{"line_number":1519,"context_line":"                return False"},{"line_number":1520,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"4654871c_8a3d73c2","line":1517,"updated":"2021-03-24 03:56:44.000000000","message":"This does not check the value is string or not. This only checks key existence.\nThus \"_key_exists(\u0027all_fields\u0027)\" is completely equivalent with \"\u0027all_fields\u0027 in request.GET\".","commit_id":"9c459efd2d929a231762f568a1091c8309de7c6a"},{"author":{"_account_id":32219,"name":"Aldinson C. Esto","email":"esto.aln@nec.com","username":"esto-aln"},"change_message_id":"ba540feee531394209d100bdc9a22f855dd97571","unresolved":true,"context_lines":[{"line_number":1514,"context_line":""},{"line_number":1515,"context_line":"        def _key_exists(key, validate_value\u003dTrue):"},{"line_number":1516,"context_line":"            try:"},{"line_number":1517,"context_line":"                request.GET[key]"},{"line_number":1518,"context_line":"            except KeyError:"},{"line_number":1519,"context_line":"                return False"},{"line_number":1520,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a3293fd_c08af896","line":1517,"in_reply_to":"4654871c_8a3d73c2","updated":"2021-03-24 13:02:44.000000000","message":"\u003e This does not check the value is string or not. This only checks key existence.\n\u003e Thus \"_key_exists(\u0027all_fields\u0027)\" is completely equivalent with \"\u0027all_fields\u0027 in request.GET\".\n\nused request.GET properties instead","commit_id":"9c459efd2d929a231762f568a1091c8309de7c6a"}]}
