)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"9d494f1d80759343ec1ab428cfa2a1e6494e84f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"78dc9498_e14dd555","updated":"2022-02-01 23:54:30.000000000","message":"Thank you for the review.","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"f083f46ca9c8ae0061d945088c8ecb32776f2d9c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4a31e4b2_f59adc7d","updated":"2022-02-02 01:52:57.000000000","message":"Thank you for the review.","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"7f07bb2416e02967e7bdb587a15e3d588b8e4b9b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1e3beaed_4d1b270d","updated":"2022-02-03 01:34:26.000000000","message":"Thank you for the review.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"7b7339d3cbefad84f95f7a5bb43b96362f4afed0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"47fe27b5_433b2ce6","updated":"2022-02-03 01:26:53.000000000","message":"Thank you for the review.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"2d61b45b397ba6e2b0aa596e23175ff53e704d14","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5b6696d5_0c035979","updated":"2022-02-03 02:52:28.000000000","message":"Thank you for the review.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"26525c966b901df599bc87564f7c5d10a1fbf9a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"86c84342_e7fe67aa","updated":"2022-02-03 02:04:56.000000000","message":"Thank you for the review.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":32581,"name":"Hirofumi Noguchi","email":"hirofumi.noguchi.rs@hco.ntt.co.jp","username":"hirofumi-noguchi"},"change_message_id":"897b49fb41094f6d3f55ef40108197904a65d1c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6c394884_522f529d","updated":"2022-02-02 05:00:01.000000000","message":"Thank you for your work. I have a comment.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"d57d7823f90b50508179dd7b0270c174266f0b91","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d3c399eb_f76d3217","updated":"2022-02-02 09:09:44.000000000","message":"Thanks for your patch, please kindly find my comment.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"fba1862d8355e21fae0d987ada371bf51212ab5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b60574d1_83984eda","updated":"2022-02-16 23:14:58.000000000","message":"Thank you for the review.","commit_id":"243e0dae4e69d84ad23f72c8cbb9857e4bafdc88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"1bf56d08535ae80eefa8e9325047c6c804b81ad5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ef433c0e_7542d09a","updated":"2022-02-10 04:39:34.000000000","message":"patch set 6: rebase only","commit_id":"243e0dae4e69d84ad23f72c8cbb9857e4bafdc88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"7ed1c3c5a7cdfc1fc736636df16dc270fa7e6460","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d8d33afa_44026afc","updated":"2022-02-18 04:12:42.000000000","message":"patch set 8: rebase only","commit_id":"a4d8b2ef85ac660b8e0177af619c0d7dc4a8fdd4"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"6e0dec55e33f34d52c059b619b697e4626a161a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b658dd93_6d15a9d4","updated":"2022-02-22 04:13:24.000000000","message":"Thank you for the review.","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"fb8d21ec03138d28cb49235957686ddb3b950624","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"6aaeaf5c_d62ff989","updated":"2022-02-21 23:12:21.000000000","message":"patch set 10: rebase only","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"c560d6b6c368621c06683e0948fecc8e61061edf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d235bff2_2731853e","updated":"2022-02-24 05:56:12.000000000","message":"Thanks for your rework, I will add CR+2 after Zuul-1 resolved.","commit_id":"91968a070d41e03578443e9f18550cc3cb7253dd"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"e05cfc7f5efdf6913cb8df82bf6db51dcaf60818","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"135eeed2_ff9d858e","updated":"2022-02-24 14:25:12.000000000","message":"recheck","commit_id":"91968a070d41e03578443e9f18550cc3cb7253dd"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"f997e801a9c2d6cd18200bfa3d9e0d1c9182dfc7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"daec7a0a_7e88ab7b","updated":"2022-02-24 21:32:52.000000000","message":"recheck","commit_id":"91968a070d41e03578443e9f18550cc3cb7253dd"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"50f827b5c7b57cf7bd6dad8e6ee9bb6e352a0236","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"266773c2_4ce26a8a","updated":"2022-02-28 01:40:08.000000000","message":"Thank you for the review.","commit_id":"13e365cffcacf1e19ddbb7a4d23e9c4dc4b52b23"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"9eeffc31f218fe7c5d2888e39e5677a7535d3ce3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"46c58cb0_c98cc270","updated":"2022-02-25 00:15:51.000000000","message":"patch set 12: rebase only\n\nUeha-san, Thank you for the review. Note that this patch is based on https://review.opendev.org/c/openstack/tacker/+/825985. ","commit_id":"13e365cffcacf1e19ddbb7a4d23e9c4dc4b52b23"},{"author":{"_account_id":32581,"name":"Hirofumi Noguchi","email":"hirofumi.noguchi.rs@hco.ntt.co.jp","username":"hirofumi-noguchi"},"change_message_id":"1086b1e122eae22ade2539021ad3e007b7b4bcd9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"5a1af60a_8d21ed12","updated":"2022-02-28 07:36:55.000000000","message":"Thank you for excellent work.","commit_id":"f28bac477d2b86db71b0f04d39e743c76747758a"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"c67c6548ddc9a0d75d34040cce0277ba4ed1fa0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"b6af56ca_6d24d883","updated":"2022-02-28 05:36:13.000000000","message":"Thanks. I will add +1 after Zuul adds +1.","commit_id":"f28bac477d2b86db71b0f04d39e743c76747758a"}],"tacker/sol_refactored/api/policies/vnflcm_v2.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"5281a92949871d29938d3c248498c5c2fbbd5bdc","unresolved":true,"context_lines":[{"line_number":128,"context_line":"            {\u0027method\u0027: \u0027POST\u0027,"},{"line_number":129,"context_line":"             \u0027path\u0027: VNF_INSTANCES_ID_PATH + \u0027/change_ext_conn\u0027}"},{"line_number":130,"context_line":"        ]"},{"line_number":131,"context_line":"    ),"},{"line_number":132,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":133,"context_line":"        name\u003dPOLICY_NAME.format(\u0027subscription_create\u0027),"},{"line_number":134,"context_line":"        check_str\u003dRULE_ANY,"}],"source_content_type":"text/x-python","patch_set":4,"id":"d5c36e68_2b341ce8","line":131,"updated":"2022-02-02 07:06:27.000000000","message":"Same with \"tacker/sol_refactored/common/vnf_instance_utils.py\", why not leave the following comments?\n---\n# NOTE: add when the operation supported","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"26a352e40f3eccefc843d9409daf4f8f86bbbd9f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            {\u0027method\u0027: \u0027POST\u0027,"},{"line_number":129,"context_line":"             \u0027path\u0027: VNF_INSTANCES_ID_PATH + \u0027/change_ext_conn\u0027}"},{"line_number":130,"context_line":"        ]"},{"line_number":131,"context_line":"    ),"},{"line_number":132,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":133,"context_line":"        name\u003dPOLICY_NAME.format(\u0027subscription_create\u0027),"},{"line_number":134,"context_line":"        check_str\u003dRULE_ANY,"}],"source_content_type":"text/x-python","patch_set":4,"id":"53008d6f_9a4ec097","line":131,"in_reply_to":"cf0e747f_7f3aa02b","updated":"2022-02-03 04:24:16.000000000","message":"Done","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"26525c966b901df599bc87564f7c5d10a1fbf9a7","unresolved":true,"context_lines":[{"line_number":128,"context_line":"            {\u0027method\u0027: \u0027POST\u0027,"},{"line_number":129,"context_line":"             \u0027path\u0027: VNF_INSTANCES_ID_PATH + \u0027/change_ext_conn\u0027}"},{"line_number":130,"context_line":"        ]"},{"line_number":131,"context_line":"    ),"},{"line_number":132,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":133,"context_line":"        name\u003dPOLICY_NAME.format(\u0027subscription_create\u0027),"},{"line_number":134,"context_line":"        check_str\u003dRULE_ANY,"}],"source_content_type":"text/x-python","patch_set":4,"id":"cf0e747f_7f3aa02b","line":131,"in_reply_to":"d5c36e68_2b341ce8","updated":"2022-02-03 02:04:56.000000000","message":"The reason why I leave the comment in vnf_instance_utils.py because I thought it is easy to forget to add to the link because the error does not occur.\nBut it is not strong reason. I will add NOTE to this file.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"}],"tacker/sol_refactored/common/lcm_op_occ_utils.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"a4dc31398b24d3c05221afa8cac223af568ea055","unresolved":true,"context_lines":[{"line_number":119,"context_line":"    return notif_data"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def _make_affected_vnfc(vnfc, change_type, removed_strgs, added_strgs):"},{"line_number":123,"context_line":"    affected_vnfc \u003d objects.AffectedVnfcV2("},{"line_number":124,"context_line":"        id\u003dvnfc.id,"},{"line_number":125,"context_line":"        vduId\u003dvnfc.vduId,"}],"source_content_type":"text/x-python","patch_set":1,"id":"26f7bed9_97fe004e","line":122,"updated":"2022-02-01 07:44:55.000000000","message":"How about refactoring as follows?\n```\n@@ -119,7 +119,7 @@ def make_lcmocc_notif_data(subsc, lcmocc, endpoint):\n     return notif_data\n\n\n-def _make_affected_vnfc(vnfc, change_type, removed_strgs, added_strgs):\n+def _make_affected_vnfc(vnfc, change_type, strgs):\n     affected_vnfc \u003d objects.AffectedVnfcV2(\n         id\u003dvnfc.id,\n         vduId\u003dvnfc.vduId,\n@@ -133,12 +133,12 @@ def _make_affected_vnfc(vnfc, change_type, removed_strgs, added_strgs):\n         # NOTE: in case of heal, volume may not be deleted/re-created.\n         if change_type \u003d\u003d \u0027ADDED\u0027:\n             str_ids \u003d [str_id for str_id in vnfc.storageResourceIds\n-                       if str_id in added_strgs]\n+                       if str_id in strgs]\n             if str_ids:\n                 affected_vnfc.addedStorageResourceIds \u003d str_ids\n         else:  # \u0027REMOVED\u0027\n             str_ids \u003d [str_id for str_id in vnfc.storageResourceIds\n-                       if str_id in removed_strgs]\n+                       if str_id in strgs]\n             if str_ids:\n                 affected_vnfc.removedStorageResourceIds \u003d str_ids\n\n@@ -344,13 +344,13 @@ def update_lcmocc(lcmocc, inst_saved, inst):\n     affected_vnfcs \u003d []\n     if removed_vnfcs:\n         affected_vnfcs +\u003d [\n-            _make_affected_vnfc(vnfc, \u0027REMOVED\u0027, removed_strgs, added_strgs)\n+            _make_affected_vnfc(vnfc, \u0027REMOVED\u0027, removed_strgs)\n             for vnfc in inst_info_saved.vnfcResourceInfo\n             if vnfc.id in removed_vnfcs\n         ]\n     if added_vnfcs:\n         affected_vnfcs +\u003d [\n-            _make_affected_vnfc(vnfc, \u0027ADDED\u0027, removed_strgs, added_strgs)\n+            _make_affected_vnfc(vnfc, \u0027ADDED\u0027, added_strgs)\n```","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"243023ef575c871a9407bd287089f342ad7f5481","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    return notif_data"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def _make_affected_vnfc(vnfc, change_type, removed_strgs, added_strgs):"},{"line_number":123,"context_line":"    affected_vnfc \u003d objects.AffectedVnfcV2("},{"line_number":124,"context_line":"        id\u003dvnfc.id,"},{"line_number":125,"context_line":"        vduId\u003dvnfc.vduId,"}],"source_content_type":"text/x-python","patch_set":1,"id":"8df13769_0d10c672","line":122,"in_reply_to":"06565946_edd564fd","updated":"2022-02-02 00:54:06.000000000","message":"Done","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"9d494f1d80759343ec1ab428cfa2a1e6494e84f7","unresolved":true,"context_lines":[{"line_number":119,"context_line":"    return notif_data"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def _make_affected_vnfc(vnfc, change_type, removed_strgs, added_strgs):"},{"line_number":123,"context_line":"    affected_vnfc \u003d objects.AffectedVnfcV2("},{"line_number":124,"context_line":"        id\u003dvnfc.id,"},{"line_number":125,"context_line":"        vduId\u003dvnfc.vduId,"}],"source_content_type":"text/x-python","patch_set":1,"id":"06565946_edd564fd","line":122,"in_reply_to":"26f7bed9_97fe004e","updated":"2022-02-01 23:54:30.000000000","message":"Ok, I think it is better. I will fix.","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"a9d005952a371b82d9b4e5425b72403d908f88e3","unresolved":true,"context_lines":[{"line_number":186,"context_line":"                vnfLinkPortIds\u003dlist(add_ports)"},{"line_number":187,"context_line":"            )"},{"line_number":188,"context_line":"            affected_vls.append(affected_vl)"},{"line_number":189,"context_line":"        elif rm_ports:"},{"line_number":190,"context_line":"            affected_vl \u003d objects.AffectedVirtualLinkV2("},{"line_number":191,"context_line":"                id\u003dold_vl.id,"},{"line_number":192,"context_line":"                vnfVirtualLinkDescId\u003dold_vl.vnfVirtualLinkDescId,"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a74479d_53f1ace3","line":189,"updated":"2022-02-27 23:27:17.000000000","message":"In the case of SOL003 Heal (all\u003dtrue), isn\u0027t both ADDED and REMOVED necessary?","commit_id":"13e365cffcacf1e19ddbb7a4d23e9c4dc4b52b23"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"50f827b5c7b57cf7bd6dad8e6ee9bb6e352a0236","unresolved":true,"context_lines":[{"line_number":186,"context_line":"                vnfLinkPortIds\u003dlist(add_ports)"},{"line_number":187,"context_line":"            )"},{"line_number":188,"context_line":"            affected_vls.append(affected_vl)"},{"line_number":189,"context_line":"        elif rm_ports:"},{"line_number":190,"context_line":"            affected_vl \u003d objects.AffectedVirtualLinkV2("},{"line_number":191,"context_line":"                id\u003dold_vl.id,"},{"line_number":192,"context_line":"                vnfVirtualLinkDescId\u003dold_vl.vnfVirtualLinkDescId,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9517eed1_132ccde2","line":189,"in_reply_to":"7a74479d_53f1ace3","updated":"2022-02-28 01:40:08.000000000","message":"In case of SOL003 all, there is no \u0027common_vl\u0027 (in L.389). Thus this method is not called in case of SOL003 all.","commit_id":"13e365cffcacf1e19ddbb7a4d23e9c4dc4b52b23"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"ebc7729eac48fe06fb2426601d5ac9e769a70233","unresolved":true,"context_lines":[{"line_number":186,"context_line":"                vnfLinkPortIds\u003dlist(add_ports)"},{"line_number":187,"context_line":"            )"},{"line_number":188,"context_line":"            affected_vls.append(affected_vl)"},{"line_number":189,"context_line":"        elif rm_ports:"},{"line_number":190,"context_line":"            affected_vl \u003d objects.AffectedVirtualLinkV2("},{"line_number":191,"context_line":"                id\u003dold_vl.id,"},{"line_number":192,"context_line":"                vnfVirtualLinkDescId\u003dold_vl.vnfVirtualLinkDescId,"}],"source_content_type":"text/x-python","patch_set":12,"id":"d5367aff_c0862be8","line":189,"in_reply_to":"9517eed1_132ccde2","updated":"2022-02-28 02:31:34.000000000","message":"Sorry, I am wrong. I found there is such case for extManagedVls. I will fix.","commit_id":"13e365cffcacf1e19ddbb7a4d23e9c4dc4b52b23"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"c67c6548ddc9a0d75d34040cce0277ba4ed1fa0d","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                vnfLinkPortIds\u003dlist(add_ports)"},{"line_number":187,"context_line":"            )"},{"line_number":188,"context_line":"            affected_vls.append(affected_vl)"},{"line_number":189,"context_line":"        elif rm_ports:"},{"line_number":190,"context_line":"            affected_vl \u003d objects.AffectedVirtualLinkV2("},{"line_number":191,"context_line":"                id\u003dold_vl.id,"},{"line_number":192,"context_line":"                vnfVirtualLinkDescId\u003dold_vl.vnfVirtualLinkDescId,"}],"source_content_type":"text/x-python","patch_set":12,"id":"11db6534_f59a31a4","line":189,"in_reply_to":"d5367aff_c0862be8","updated":"2022-02-28 05:36:13.000000000","message":"Done","commit_id":"13e365cffcacf1e19ddbb7a4d23e9c4dc4b52b23"}],"tacker/sol_refactored/conductor/vnflcm_driver_v2.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"a4dc31398b24d3c05221afa8cac223af568ea055","unresolved":true,"context_lines":[{"line_number":442,"context_line":"                    if re_create:"},{"line_number":443,"context_line":"                        add_reses.append("},{"line_number":444,"context_line":"                            objects.ResourceDefinitionV1("},{"line_number":445,"context_line":"                                id\u003d\"{}-{}\".format(cp_info.cpdId,"},{"line_number":446,"context_line":"                                                  add_vdu_res_id),"},{"line_number":447,"context_line":"                                resourceTemplateId\u003dcp_info.cpdId,"},{"line_number":448,"context_line":"                                type\u003d\u0027LINKPORT\u0027"},{"line_number":449,"context_line":"                            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3e3cb496_d1f319a2","line":446,"range":{"start_line":445,"start_character":35,"end_line":446,"end_character":65},"updated":"2022-02-01 07:44:55.000000000","message":"I think it\u0027s better to define \"_make_combination_id\" as well as openstack.py.\n---\nhttps://opendev.org/openstack/tacker/src/branch/master/tacker/sol_refactored/infra_drivers/openstack/openstack.py#L64","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"9d494f1d80759343ec1ab428cfa2a1e6494e84f7","unresolved":true,"context_lines":[{"line_number":442,"context_line":"                    if re_create:"},{"line_number":443,"context_line":"                        add_reses.append("},{"line_number":444,"context_line":"                            objects.ResourceDefinitionV1("},{"line_number":445,"context_line":"                                id\u003d\"{}-{}\".format(cp_info.cpdId,"},{"line_number":446,"context_line":"                                                  add_vdu_res_id),"},{"line_number":447,"context_line":"                                resourceTemplateId\u003dcp_info.cpdId,"},{"line_number":448,"context_line":"                                type\u003d\u0027LINKPORT\u0027"},{"line_number":449,"context_line":"                            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"f8c7b892_9f106d19","line":446,"range":{"start_line":445,"start_character":35,"end_line":446,"end_character":65},"in_reply_to":"3e3cb496_d1f319a2","updated":"2022-02-01 23:54:30.000000000","message":"I will fix.","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"008f68d159f113b732b1e550f57c6678a529bf36","unresolved":false,"context_lines":[{"line_number":442,"context_line":"                    if re_create:"},{"line_number":443,"context_line":"                        add_reses.append("},{"line_number":444,"context_line":"                            objects.ResourceDefinitionV1("},{"line_number":445,"context_line":"                                id\u003d\"{}-{}\".format(cp_info.cpdId,"},{"line_number":446,"context_line":"                                                  add_vdu_res_id),"},{"line_number":447,"context_line":"                                resourceTemplateId\u003dcp_info.cpdId,"},{"line_number":448,"context_line":"                                type\u003d\u0027LINKPORT\u0027"},{"line_number":449,"context_line":"                            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"280cc752_eab7aa1a","line":446,"range":{"start_line":445,"start_character":35,"end_line":446,"end_character":65},"in_reply_to":"45ab6369_a36b6afe","updated":"2022-02-02 04:32:04.000000000","message":"Done","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"f083f46ca9c8ae0061d945088c8ecb32776f2d9c","unresolved":true,"context_lines":[{"line_number":442,"context_line":"                    if re_create:"},{"line_number":443,"context_line":"                        add_reses.append("},{"line_number":444,"context_line":"                            objects.ResourceDefinitionV1("},{"line_number":445,"context_line":"                                id\u003d\"{}-{}\".format(cp_info.cpdId,"},{"line_number":446,"context_line":"                                                  add_vdu_res_id),"},{"line_number":447,"context_line":"                                resourceTemplateId\u003dcp_info.cpdId,"},{"line_number":448,"context_line":"                                type\u003d\u0027LINKPORT\u0027"},{"line_number":449,"context_line":"                            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"45ab6369_a36b6afe","line":446,"range":{"start_line":445,"start_character":35,"end_line":446,"end_character":65},"in_reply_to":"5f56f319_29a5e088","updated":"2022-02-02 01:52:57.000000000","message":"Oops, I missed too. will fix.","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"243023ef575c871a9407bd287089f342ad7f5481","unresolved":true,"context_lines":[{"line_number":442,"context_line":"                    if re_create:"},{"line_number":443,"context_line":"                        add_reses.append("},{"line_number":444,"context_line":"                            objects.ResourceDefinitionV1("},{"line_number":445,"context_line":"                                id\u003d\"{}-{}\".format(cp_info.cpdId,"},{"line_number":446,"context_line":"                                                  add_vdu_res_id),"},{"line_number":447,"context_line":"                                resourceTemplateId\u003dcp_info.cpdId,"},{"line_number":448,"context_line":"                                type\u003d\u0027LINKPORT\u0027"},{"line_number":449,"context_line":"                            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f56f319_29a5e088","line":446,"range":{"start_line":445,"start_character":35,"end_line":446,"end_character":65},"in_reply_to":"f8c7b892_9f106d19","updated":"2022-02-02 00:54:06.000000000","message":"Oops, it seems that there are still some points that need to be fixed, including this one.\nCould you check it?","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"008f68d159f113b732b1e550f57c6678a529bf36","unresolved":true,"context_lines":[{"line_number":733,"context_line":"                                       inst_info.vnfcResourceInfo)"},{"line_number":734,"context_line":"            rm_vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":735,"context_line":"            add_vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":736,"context_line":"            rm_reses.append("},{"line_number":737,"context_line":"                objects.ResourceDefinitionV1("},{"line_number":738,"context_line":"                    id\u003drm_vdu_res_id,"},{"line_number":739,"context_line":"                    type\u003d\u0027COMPUTE\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"f126a3d5_a937e2f9","line":736,"updated":"2022-02-02 04:32:04.000000000","message":"Similar processes are defined for each rm_reses and add_reses, so can you refactor as follows?\n```\n@@ -721,6 +721,23 @@ class VnfLcmDriverV2(object):\n         # DB is not updated, rollback does nothing and makes it successful.\n         pass\n\n+    def _create_rm_res(self, res_type, res_name, res_obj,\n+                       rm_id\u003duuidutils.generate_uuid()):\n+        return objects.ResourceDefinitionV1(\n+            id\u003drm_id,\n+            type\u003dres_type,\n+            resourceTemplateId\u003dres_name,\n+            resource\u003dres_obj\n+        )\n+\n+    def _create_add_res(self, res_type, res_name,\n+                        add_id\u003duuidutils.generate_uuid()):\n+        return objects.ResourceDefinitionV1(\n+            id\u003dadd_id,\n+            type\u003dres_type,\n+            resourceTemplateId\u003dres_name\n+        )\n+\n     def _make_SOL002_heal_grant_request(self, grant_req, req, inst_info,\n             is_all):\n         rm_reses \u003d []\n@@ -733,42 +750,27 @@ class VnfLcmDriverV2(object):\n                                        inst_info.vnfcResourceInfo)\n             rm_vdu_res_id \u003d uuidutils.generate_uuid()\n             add_vdu_res_id \u003d uuidutils.generate_uuid()\n-            rm_reses.append(\n-                objects.ResourceDefinitionV1(\n-                    id\u003drm_vdu_res_id,\n-                    type\u003d\u0027COMPUTE\u0027,\n-                    resourceTemplateId\u003dinst_vnfc.vduId,\n-                    resource\u003dinst_vnfc.computeResource\n-                )\n-            )\n-            add_reses.append(\n-                objects.ResourceDefinitionV1(\n-                    id\u003dadd_vdu_res_id,\n-                    type\u003d\u0027COMPUTE\u0027,\n-                    resourceTemplateId\u003dinst_vnfc.vduId,\n-                )\n-            )\n+            vdu_name \u003d inst_vnfc.vduId\n+\n+            rm_reses.append(self._create_rm_res(\n+                \u0027COMPUTE\u0027, vdu_name, inst_vnfc.computeResource,\n+                rm_id\u003drm_vdu_res_id))\n+            add_reses.append(self._create_add_res(\n+                \u0027COMPUTE\u0027, vdu_name, add_id\u003dadd_vdu_res_id))\n\n             if is_all and inst_vnfc.obj_attr_is_set(\u0027storageResourceIds\u0027):\n                 for storage_id in inst_vnfc.storageResourceIds:\n                     inst_str \u003d _get_obj_by_id(storage_id,\n                         inst_info.virtualStorageResourceInfo)\n                     str_name \u003d inst_str.virtualStorageDescId\n-                    rm_reses.append(\n-                        objects.ResourceDefinitionV1(\n-                            id\u003d\"{}-{}\".format(str_name, rm_vdu_res_id),\n-                            type\u003d\u0027STORAGE\u0027,\n-                            resourceTemplateId\u003dstr_name,\n-                            resource\u003dinst_str.storageResource\n-                        )\n-                    )\n-                    add_reses.append(\n-                        objects.ResourceDefinitionV1(\n-                            id\u003d\"{}-{}\".format(str_name, add_vdu_res_id),\n-                            type\u003d\u0027STORAGE\u0027,\n-                            resourceTemplateId\u003dstr_name,\n-                        )\n-                    )\n+                    rm_str_res_id \u003d _make_combination_id(str_name, rm_vdu_res_id)\n+                    add_str_res_id \u003d _make_combination_id(str_name, add_vdu_res_id)\n+\n+                    rm_reses.append(self._create_rm_res(\n+                        \u0027STORAGE\u0027, str_name, inst_str.storageResource,\n+                        rm_id\u003drm_str_res_id))\n+                    add_reses.append(self._create_add_res(\n+                        \u0027STORAGE\u0027, str_name, add_id\u003dadd_str_res_id))\n\n         if rm_reses:\n             grant_req.removeResources \u003d rm_reses\n@@ -804,23 +806,11 @@ class VnfLcmDriverV2(object):\n                 ]\n         else:\n             if inst_info.obj_attr_is_set(\u0027vnfcResourceInfo\u0027):\n-                rm_reses \u003d [\n-                    objects.ResourceDefinitionV1(\n-                        id\u003duuidutils.generate_uuid(),\n-                        type\u003d\u0027COMPUTE\u0027,\n-                        resourceTemplateId\u003dinst_vnfc.vduId,\n-                        resource\u003dinst_vnfc.computeResource\n-                    )\n-                    for inst_vnfc in inst_info.vnfcResourceInfo\n-                ]\n-                add_reses \u003d [\n-                    objects.ResourceDefinitionV1(\n-                        id\u003duuidutils.generate_uuid(),\n-                        type\u003d\u0027COMPUTE\u0027,\n-                        resourceTemplateId\u003dinst_vnfc.vduId,\n-                    )\n-                    for inst_vnfc in inst_info.vnfcResourceInfo\n-                ]\n+                for inst_vnfc in inst_info.vnfcResourceInfo:\n+                    vdu_name \u003d inst_vnfc.vduId\n+                    rm_reses.append(self._create_rm_res(\n+                        \u0027COMPUTE\u0027, vdu_name, inst_vnfc.computeResource))\n+                    add_reses.append(self._create_add_res(\u0027COMPUTE\u0027, vdu_name))\n\n         if rm_reses:\n             grant_req.removeResources \u003d rm_reses\n```","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"7b7339d3cbefad84f95f7a5bb43b96362f4afed0","unresolved":true,"context_lines":[{"line_number":733,"context_line":"                                       inst_info.vnfcResourceInfo)"},{"line_number":734,"context_line":"            rm_vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":735,"context_line":"            add_vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":736,"context_line":"            rm_reses.append("},{"line_number":737,"context_line":"                objects.ResourceDefinitionV1("},{"line_number":738,"context_line":"                    id\u003drm_vdu_res_id,"},{"line_number":739,"context_line":"                    type\u003d\u0027COMPUTE\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fc4d6527_222c78c0","line":736,"in_reply_to":"9e2209e7_f02c1852","updated":"2022-02-03 01:26:53.000000000","message":"Ok I see. I will fix but may change a bit.","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"108fecfaeb4115b59f39d3f2dbb46b1d61475ead","unresolved":true,"context_lines":[{"line_number":733,"context_line":"                                       inst_info.vnfcResourceInfo)"},{"line_number":734,"context_line":"            rm_vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":735,"context_line":"            add_vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":736,"context_line":"            rm_reses.append("},{"line_number":737,"context_line":"                objects.ResourceDefinitionV1("},{"line_number":738,"context_line":"                    id\u003drm_vdu_res_id,"},{"line_number":739,"context_line":"                    type\u003d\u0027COMPUTE\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9e2209e7_f02c1852","line":736,"in_reply_to":"f126a3d5_a937e2f9","updated":"2022-02-02 04:58:12.000000000","message":"Hmmm, I\u0027m sorry, the refactoring I proposed earlier is not effective.\nHow about the following?\n```\n@@ -721,6 +721,24 @@ class VnfLcmDriverV2(object):\n         # DB is not updated, rollback does nothing and makes it successful.\n         pass\n\n+    def _set_rm_add_reses(self, rm_reses, add_reses,\n+                          res_type, res_name, res_obj,\n+                          rm_id\u003duuidutils.generate_uuid(),\n+                          add_id\u003duuidutils.generate_uuid()):\n+        rm_reses.append(\n+            objects.ResourceDefinitionV1(\n+                id\u003drm_id,\n+                type\u003dres_type,\n+                resourceTemplateId\u003dres_name,\n+                resource\u003dres_obj)\n+        )\n+        add_reses.append(\n+            objects.ResourceDefinitionV1(\n+                id\u003dadd_id,\n+                type\u003dres_type,\n+                resourceTemplateId\u003dres_name)\n+        )\n+\n     def _make_SOL002_heal_grant_request(self, grant_req, req, inst_info,\n             is_all):\n         rm_reses \u003d []\n@@ -733,42 +751,25 @@ class VnfLcmDriverV2(object):\n                                        inst_info.vnfcResourceInfo)\n             rm_vdu_res_id \u003d uuidutils.generate_uuid()\n             add_vdu_res_id \u003d uuidutils.generate_uuid()\n-            rm_reses.append(\n-                objects.ResourceDefinitionV1(\n-                    id\u003drm_vdu_res_id,\n-                    type\u003d\u0027COMPUTE\u0027,\n-                    resourceTemplateId\u003dinst_vnfc.vduId,\n-                    resource\u003dinst_vnfc.computeResource\n-                )\n-            )\n-            add_reses.append(\n-                objects.ResourceDefinitionV1(\n-                    id\u003dadd_vdu_res_id,\n-                    type\u003d\u0027COMPUTE\u0027,\n-                    resourceTemplateId\u003dinst_vnfc.vduId,\n-                )\n-            )\n+            vdu_name \u003d inst_vnfc.vduId\n+\n+            self._set_rm_add_reses(\n+                rm_reses, add_reses,\n+                \u0027COMPUTE\u0027, vdu_name, inst_vnfc.computeResource,\n+                rm_id\u003drm_vdu_res_id, add_id\u003dadd_vdu_res_id)\n\n             if is_all and inst_vnfc.obj_attr_is_set(\u0027storageResourceIds\u0027):\n                 for storage_id in inst_vnfc.storageResourceIds:\n                     inst_str \u003d _get_obj_by_id(storage_id,\n                         inst_info.virtualStorageResourceInfo)\n                     str_name \u003d inst_str.virtualStorageDescId\n-                    rm_reses.append(\n-                        objects.ResourceDefinitionV1(\n-                            id\u003d\"{}-{}\".format(str_name, rm_vdu_res_id),\n-                            type\u003d\u0027STORAGE\u0027,\n-                            resourceTemplateId\u003dstr_name,\n-                            resource\u003dinst_str.storageResource\n-                        )\n-                    )\n-                    add_reses.append(\n-                        objects.ResourceDefinitionV1(\n-                            id\u003d\"{}-{}\".format(str_name, add_vdu_res_id),\n-                            type\u003d\u0027STORAGE\u0027,\n-                            resourceTemplateId\u003dstr_name,\n-                        )\n-                    )\n+                    rm_str_res_id \u003d _make_combination_id(str_name, rm_vdu_res_id)\n+                    add_str_res_id \u003d _make_combination_id(str_name, add_vdu_res_id)\n+\n+                    self._set_rm_add_reses(\n+                        rm_reses, add_reses,\n+                        \u0027STORAGE\u0027, str_name, inst_str.storageResource,\n+                        rm_id\u003drm_str_res_id, add_id\u003dadd_str_res_id)\n\n         if rm_reses:\n             grant_req.removeResources \u003d rm_reses\n@@ -804,23 +805,11 @@ class VnfLcmDriverV2(object):\n                 ]\n         else:\n             if inst_info.obj_attr_is_set(\u0027vnfcResourceInfo\u0027):\n-                rm_reses \u003d [\n-                    objects.ResourceDefinitionV1(\n-                        id\u003duuidutils.generate_uuid(),\n-                        type\u003d\u0027COMPUTE\u0027,\n-                        resourceTemplateId\u003dinst_vnfc.vduId,\n-                        resource\u003dinst_vnfc.computeResource\n-                    )\n-                    for inst_vnfc in inst_info.vnfcResourceInfo\n-                ]\n-                add_reses \u003d [\n-                    objects.ResourceDefinitionV1(\n-                        id\u003duuidutils.generate_uuid(),\n-                        type\u003d\u0027COMPUTE\u0027,\n-                        resourceTemplateId\u003dinst_vnfc.vduId,\n-                    )\n-                    for inst_vnfc in inst_info.vnfcResourceInfo\n-                ]\n+                for inst_vnfc in inst_info.vnfcResourceInfo:\n+                    vdu_name \u003d inst_vnfc.vduId\n+                    self._set_rm_add_reses(\n+                        rm_reses, add_reses,\n+                        \u0027COMPUTE\u0027, vdu_name, inst_vnfc.computeResource)\n\n         if rm_reses:\n             grant_req.removeResources \u003d rm_reses\n```","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"64db2f0197b852d955d883c8f89abd32907fb627","unresolved":false,"context_lines":[{"line_number":733,"context_line":"                                       inst_info.vnfcResourceInfo)"},{"line_number":734,"context_line":"            rm_vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":735,"context_line":"            add_vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":736,"context_line":"            rm_reses.append("},{"line_number":737,"context_line":"                objects.ResourceDefinitionV1("},{"line_number":738,"context_line":"                    id\u003drm_vdu_res_id,"},{"line_number":739,"context_line":"                    type\u003d\u0027COMPUTE\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"c90800be_4d861cfc","line":736,"in_reply_to":"fc4d6527_222c78c0","updated":"2022-02-04 01:31:54.000000000","message":"Done","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"243023ef575c871a9407bd287089f342ad7f5481","unresolved":true,"context_lines":[{"line_number":756,"context_line":"                    str_name \u003d inst_str.virtualStorageDescId"},{"line_number":757,"context_line":"                    rm_reses.append("},{"line_number":758,"context_line":"                        objects.ResourceDefinitionV1("},{"line_number":759,"context_line":"                            id\u003d\"{}-{}\".format(str_name, rm_vdu_res_id),"},{"line_number":760,"context_line":"                            type\u003d\u0027STORAGE\u0027,"},{"line_number":761,"context_line":"                            resourceTemplateId\u003dstr_name,"},{"line_number":762,"context_line":"                            resource\u003dinst_str.storageResource"}],"source_content_type":"text/x-python","patch_set":3,"id":"ee0561a0_10f765ac","line":759,"updated":"2022-02-02 00:54:06.000000000","message":"ditto","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"f083f46ca9c8ae0061d945088c8ecb32776f2d9c","unresolved":true,"context_lines":[{"line_number":756,"context_line":"                    str_name \u003d inst_str.virtualStorageDescId"},{"line_number":757,"context_line":"                    rm_reses.append("},{"line_number":758,"context_line":"                        objects.ResourceDefinitionV1("},{"line_number":759,"context_line":"                            id\u003d\"{}-{}\".format(str_name, rm_vdu_res_id),"},{"line_number":760,"context_line":"                            type\u003d\u0027STORAGE\u0027,"},{"line_number":761,"context_line":"                            resourceTemplateId\u003dstr_name,"},{"line_number":762,"context_line":"                            resource\u003dinst_str.storageResource"}],"source_content_type":"text/x-python","patch_set":3,"id":"fc6d07d3_22ec2aa4","line":759,"in_reply_to":"ee0561a0_10f765ac","updated":"2022-02-02 01:52:57.000000000","message":"ditto","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"008f68d159f113b732b1e550f57c6678a529bf36","unresolved":false,"context_lines":[{"line_number":756,"context_line":"                    str_name \u003d inst_str.virtualStorageDescId"},{"line_number":757,"context_line":"                    rm_reses.append("},{"line_number":758,"context_line":"                        objects.ResourceDefinitionV1("},{"line_number":759,"context_line":"                            id\u003d\"{}-{}\".format(str_name, rm_vdu_res_id),"},{"line_number":760,"context_line":"                            type\u003d\u0027STORAGE\u0027,"},{"line_number":761,"context_line":"                            resourceTemplateId\u003dstr_name,"},{"line_number":762,"context_line":"                            resource\u003dinst_str.storageResource"}],"source_content_type":"text/x-python","patch_set":3,"id":"c68a71ab_3466a77d","line":759,"in_reply_to":"fc6d07d3_22ec2aa4","updated":"2022-02-02 04:32:04.000000000","message":"Done","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"243023ef575c871a9407bd287089f342ad7f5481","unresolved":true,"context_lines":[{"line_number":764,"context_line":"                    )"},{"line_number":765,"context_line":"                    add_reses.append("},{"line_number":766,"context_line":"                        objects.ResourceDefinitionV1("},{"line_number":767,"context_line":"                            id\u003d\"{}-{}\".format(str_name, add_vdu_res_id),"},{"line_number":768,"context_line":"                            type\u003d\u0027STORAGE\u0027,"},{"line_number":769,"context_line":"                            resourceTemplateId\u003dstr_name,"},{"line_number":770,"context_line":"                        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"8d92c3e8_67415e91","line":767,"updated":"2022-02-02 00:54:06.000000000","message":"ditto","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"f083f46ca9c8ae0061d945088c8ecb32776f2d9c","unresolved":true,"context_lines":[{"line_number":764,"context_line":"                    )"},{"line_number":765,"context_line":"                    add_reses.append("},{"line_number":766,"context_line":"                        objects.ResourceDefinitionV1("},{"line_number":767,"context_line":"                            id\u003d\"{}-{}\".format(str_name, add_vdu_res_id),"},{"line_number":768,"context_line":"                            type\u003d\u0027STORAGE\u0027,"},{"line_number":769,"context_line":"                            resourceTemplateId\u003dstr_name,"},{"line_number":770,"context_line":"                        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"dc5ecafb_67d589d8","line":767,"in_reply_to":"8d92c3e8_67415e91","updated":"2022-02-02 01:52:57.000000000","message":"ditto","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"008f68d159f113b732b1e550f57c6678a529bf36","unresolved":false,"context_lines":[{"line_number":764,"context_line":"                    )"},{"line_number":765,"context_line":"                    add_reses.append("},{"line_number":766,"context_line":"                        objects.ResourceDefinitionV1("},{"line_number":767,"context_line":"                            id\u003d\"{}-{}\".format(str_name, add_vdu_res_id),"},{"line_number":768,"context_line":"                            type\u003d\u0027STORAGE\u0027,"},{"line_number":769,"context_line":"                            resourceTemplateId\u003dstr_name,"},{"line_number":770,"context_line":"                        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffabe0c0_0c4936f3","line":767,"in_reply_to":"dc5ecafb_67d589d8","updated":"2022-02-02 04:32:04.000000000","message":"Done","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"d57d7823f90b50508179dd7b0270c174266f0b91","unresolved":true,"context_lines":[{"line_number":221,"context_line":"        if method:"},{"line_number":222,"context_line":"            method(context, lcmocc, inst, grant_req, grant, vnfd)"},{"line_number":223,"context_line":"        else:"},{"line_number":224,"context_line":"            raise sol_ex.RollbackNotSupported(op\u003dlcmocc.operation)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def _get_link_ports(self, inst_req):"},{"line_number":227,"context_line":"        names \u003d set()"}],"source_content_type":"text/x-python","patch_set":4,"id":"45675c3e_92e800cc","line":224,"updated":"2022-02-02 09:09:44.000000000","message":"In the case of rollback after Heal, since the `heal_rollback` method is not defined, is it correct that entering this route and causing an error?\nAlso, the operator has already received a 202 (Accepted) response [1], so the user may recognize that the rollback has been performed.\nThe V1 API implementation [2] returned a 409 (Conflict) error on the controller.\nDon\u0027t you need to do the same as V1 API?\n\n[1] https://review.opendev.org/c/openstack/tacker/+/827189/4/tacker/sol_refactored/controller/vnflcm_v2.py#335\n[2] https://opendev.org/openstack/tacker/src/branch/master/tacker/api/vnflcm/v1/controller.py#L1353-L1358","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"634cd6d933b41cd28cb91b42456f5364052587c9","unresolved":true,"context_lines":[{"line_number":221,"context_line":"        if method:"},{"line_number":222,"context_line":"            method(context, lcmocc, inst, grant_req, grant, vnfd)"},{"line_number":223,"context_line":"        else:"},{"line_number":224,"context_line":"            raise sol_ex.RollbackNotSupported(op\u003dlcmocc.operation)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def _get_link_ports(self, inst_req):"},{"line_number":227,"context_line":"        names \u003d set()"}],"source_content_type":"text/x-python","patch_set":4,"id":"d8d6d7b2_57d045f2","line":224,"in_reply_to":"2e97ade7_2e24fff8","updated":"2022-02-03 06:44:53.000000000","message":"Thanks for your explanation, I understood it.\n\nAnd the 409 error description in SOL003 [1] is as follows, and it doesn\u0027t seem appropriate to return 409 in this case.\n\u003e Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with the state of the resource.\n\u003e Typically, this is due to the fact that the \"Individual VNF instance\" resource is in NOT_INSTANTIATED state, that another lifecycle management operation is ongoing, or that a required (see note) child attribute of the \"extensions\" attribute has not been set.\n\n[1] https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_nfv-sol003v030301p.pdf : Table 5.4.9.3.1-2: Details of the POST request/response on this resource","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"2d61b45b397ba6e2b0aa596e23175ff53e704d14","unresolved":true,"context_lines":[{"line_number":221,"context_line":"        if method:"},{"line_number":222,"context_line":"            method(context, lcmocc, inst, grant_req, grant, vnfd)"},{"line_number":223,"context_line":"        else:"},{"line_number":224,"context_line":"            raise sol_ex.RollbackNotSupported(op\u003dlcmocc.operation)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def _get_link_ports(self, inst_req):"},{"line_number":227,"context_line":"        names \u003d set()"}],"source_content_type":"text/x-python","patch_set":4,"id":"2e97ade7_2e24fff8","line":224,"in_reply_to":"45675c3e_92e800cc","updated":"2022-02-03 02:52:28.000000000","message":"I understand it is better to return error as soon as possible for an operator. But it is difficult to check in the controller since rollback support may be dependent to VIM. The operator checks lcm_op_occ after all and can find rollback is not supported. I think it is enough at the moment.\nAbout V1 API, I think 409 is not appropriate for the error of unsupported rollback.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"6b3646ee7293797447f23fb687d8c94cb67cd4c7","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        if method:"},{"line_number":222,"context_line":"            method(context, lcmocc, inst, grant_req, grant, vnfd)"},{"line_number":223,"context_line":"        else:"},{"line_number":224,"context_line":"            raise sol_ex.RollbackNotSupported(op\u003dlcmocc.operation)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    def _get_link_ports(self, inst_req):"},{"line_number":227,"context_line":"        names \u003d set()"}],"source_content_type":"text/x-python","patch_set":4,"id":"acbbdee2_8f5c8f4d","line":224,"in_reply_to":"d8d6d7b2_57d045f2","updated":"2022-02-16 09:58:57.000000000","message":"Done","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":32581,"name":"Hirofumi Noguchi","email":"hirofumi.noguchi.rs@hco.ntt.co.jp","username":"hirofumi-noguchi"},"change_message_id":"897b49fb41094f6d3f55ef40108197904a65d1c9","unresolved":true,"context_lines":[{"line_number":407,"context_line":"        add_reses \u003d []"},{"line_number":408,"context_line":"        vnfc_cps \u003d {}"},{"line_number":409,"context_line":"        for inst_vnfc in inst_vnfcs:"},{"line_number":410,"context_line":"            vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":411,"context_line":"            rm_reses.append("},{"line_number":412,"context_line":"                objects.ResourceDefinitionV1("},{"line_number":413,"context_line":"                    id\u003dvdu_res_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"f3870bfe_8c1d0c51","line":410,"updated":"2022-02-02 05:00:01.000000000","message":"nits, I think \"rm_vdu_res_id\" is better than \"vdu_res_id\".\nSimilar code in _make_SOL002_heal_grant_request (#L734) uses \"rm_vdu_res_id\".\n\nI also think you can leave it as it is because the main target of this function is remove vnfc as function\u0027s name is \"_make_res_def_for_remove_vnfcs\".","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":32581,"name":"Hirofumi Noguchi","email":"hirofumi.noguchi.rs@hco.ntt.co.jp","username":"hirofumi-noguchi"},"change_message_id":"ddea23894f6a90895b2a10c3523ebdb68d589326","unresolved":false,"context_lines":[{"line_number":407,"context_line":"        add_reses \u003d []"},{"line_number":408,"context_line":"        vnfc_cps \u003d {}"},{"line_number":409,"context_line":"        for inst_vnfc in inst_vnfcs:"},{"line_number":410,"context_line":"            vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":411,"context_line":"            rm_reses.append("},{"line_number":412,"context_line":"                objects.ResourceDefinitionV1("},{"line_number":413,"context_line":"                    id\u003dvdu_res_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"b44b6700_8c122223","line":410,"in_reply_to":"8dbbf731_bace6bea","updated":"2022-02-28 07:44:58.000000000","message":"Thank you for fixing it.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"7f07bb2416e02967e7bdb587a15e3d588b8e4b9b","unresolved":true,"context_lines":[{"line_number":407,"context_line":"        add_reses \u003d []"},{"line_number":408,"context_line":"        vnfc_cps \u003d {}"},{"line_number":409,"context_line":"        for inst_vnfc in inst_vnfcs:"},{"line_number":410,"context_line":"            vdu_res_id \u003d uuidutils.generate_uuid()"},{"line_number":411,"context_line":"            rm_reses.append("},{"line_number":412,"context_line":"                objects.ResourceDefinitionV1("},{"line_number":413,"context_line":"                    id\u003dvdu_res_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"8dbbf731_bace6bea","line":410,"in_reply_to":"f3870bfe_8c1d0c51","updated":"2022-02-03 01:34:26.000000000","message":"I think rm_vdu_res_id is better. I will fix.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"}],"tacker/sol_refactored/controller/vnflcm_v2.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"a4dc31398b24d3c05221afa8cac223af568ea055","unresolved":true,"context_lines":[{"line_number":309,"context_line":"        lcmocc_utils.check_lcmocc_in_progress(context, id)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        # check parameter for later use"},{"line_number":312,"context_line":"        if \u0027additionalParams\u0027 in body and \u0027all\u0027 in body[\u0027additionalParams\u0027]:"},{"line_number":313,"context_line":"            if not isinstance(body[\u0027additionalParams\u0027][\u0027all\u0027], bool):"},{"line_number":314,"context_line":"                raise sol_ex.SolValidationError("},{"line_number":315,"context_line":"                    detail\u003d\"additionalParams[\u0027all\u0027] must be bool.\")"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7911a904_6457f21c","line":313,"range":{"start_line":312,"start_character":8,"end_line":313,"end_character":69},"updated":"2022-02-01 07:44:55.000000000","message":"How about refactoring as follows?\n```\n@@ -309,10 +309,10 @@ class VnfLcmControllerV2(sol_wsgi.SolAPIController):\n         lcmocc_utils.check_lcmocc_in_progress(context, id)\n\n         # check parameter for later use\n-        if \u0027additionalParams\u0027 in body and \u0027all\u0027 in body[\u0027additionalParams\u0027]:\n-            if not isinstance(body[\u0027additionalParams\u0027][\u0027all\u0027], bool):\n-                raise sol_ex.SolValidationError(\n-                    detail\u003d\"additionalParams[\u0027all\u0027] must be bool.\")\n+        is_all \u003d body.get(\u0027additionalParams\u0027, {}).get(\u0027all\u0027, None)\n+        if not isinstance(is_all, bool):\n+            raise sol_ex.SolValidationError(\n+                detail\u003d\"additionalParams[\u0027all\u0027] must be bool.\")\n```","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"9d494f1d80759343ec1ab428cfa2a1e6494e84f7","unresolved":true,"context_lines":[{"line_number":309,"context_line":"        lcmocc_utils.check_lcmocc_in_progress(context, id)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        # check parameter for later use"},{"line_number":312,"context_line":"        if \u0027additionalParams\u0027 in body and \u0027all\u0027 in body[\u0027additionalParams\u0027]:"},{"line_number":313,"context_line":"            if not isinstance(body[\u0027additionalParams\u0027][\u0027all\u0027], bool):"},{"line_number":314,"context_line":"                raise sol_ex.SolValidationError("},{"line_number":315,"context_line":"                    detail\u003d\"additionalParams[\u0027all\u0027] must be bool.\")"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8186b34e_3fa87e79","line":313,"range":{"start_line":312,"start_character":8,"end_line":313,"end_character":69},"in_reply_to":"7911a904_6457f21c","updated":"2022-02-01 23:54:30.000000000","message":"\u003e +        is_all \u003d body.get(\u0027additionalParams\u0027, {}).get(\u0027all\u0027, None)\nget(\u0027all\u0027, False) is correct.\nbut I think it is better, I will fix.","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"243023ef575c871a9407bd287089f342ad7f5481","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        lcmocc_utils.check_lcmocc_in_progress(context, id)"},{"line_number":310,"context_line":""},{"line_number":311,"context_line":"        # check parameter for later use"},{"line_number":312,"context_line":"        if \u0027additionalParams\u0027 in body and \u0027all\u0027 in body[\u0027additionalParams\u0027]:"},{"line_number":313,"context_line":"            if not isinstance(body[\u0027additionalParams\u0027][\u0027all\u0027], bool):"},{"line_number":314,"context_line":"                raise sol_ex.SolValidationError("},{"line_number":315,"context_line":"                    detail\u003d\"additionalParams[\u0027all\u0027] must be bool.\")"},{"line_number":316,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4e4caba0_5ae9b574","line":313,"range":{"start_line":312,"start_character":8,"end_line":313,"end_character":69},"in_reply_to":"8186b34e_3fa87e79","updated":"2022-02-02 00:54:06.000000000","message":"Okay, I\u0027ve confirmed.","commit_id":"c12bc8c45a5eb08d7ff45a34697115acec194daa"}],"tacker/sol_refactored/infra_drivers/openstack/heat_utils.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"008f68d159f113b732b1e550f57c6678a529bf36","unresolved":true,"context_lines":[{"line_number":118,"context_line":"            [\"UPDATE_COMPLETE\"], [\"UPDATE_IN_PROGRESS\"], [\"UPDATE_FAILED\"])"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def wait_stack_delete(self, stack_name, wait_delete):"},{"line_number":121,"context_line":"        if wait_delete:"},{"line_number":122,"context_line":"            # wait until stack is deleted in the DB. It is expected that"},{"line_number":123,"context_line":"            # it takes short time after \"DELETE_COMPLETE\". So timeout after"},{"line_number":124,"context_line":"            # \"DELETE_COMPLETE\" is not specified."},{"line_number":125,"context_line":"            self._wait_completion(stack_name, \"Stack delete\","},{"line_number":126,"context_line":"                [None], [\"DELETE_IN_PROGRESS\", \"DELETE_COMPLETE\"],"},{"line_number":127,"context_line":"                [\"DELETE_FAILED\"])"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            self._wait_completion(stack_name, \"Stack delete\","},{"line_number":130,"context_line":"                [\"DELETE_COMPLETE\", None], [\"DELETE_IN_PROGRESS\"],"},{"line_number":131,"context_line":"                [\"DELETE_FAILED\"])"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def get_parameters(self, stack_name):"},{"line_number":134,"context_line":"        path \u003d \"stacks/{}\".format(stack_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3af2e7b1_848ba7d6","line":131,"range":{"start_line":121,"start_character":8,"end_line":131,"end_character":34},"updated":"2022-02-02 04:32:04.000000000","message":"Just a question.\n\"instantiate_rollback\" and \"terminate\" are \"wait_delete\u003dFlase\", and \"heal\" is \"wait_delete\u003dTrue\", but is it possible to set \"wait_delete\u003dTrue\" uniformly?\nIn other words, delete this branch and remove the argument.\nDo these need to be distinguished?","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"7b7339d3cbefad84f95f7a5bb43b96362f4afed0","unresolved":true,"context_lines":[{"line_number":118,"context_line":"            [\"UPDATE_COMPLETE\"], [\"UPDATE_IN_PROGRESS\"], [\"UPDATE_FAILED\"])"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def wait_stack_delete(self, stack_name, wait_delete):"},{"line_number":121,"context_line":"        if wait_delete:"},{"line_number":122,"context_line":"            # wait until stack is deleted in the DB. It is expected that"},{"line_number":123,"context_line":"            # it takes short time after \"DELETE_COMPLETE\". So timeout after"},{"line_number":124,"context_line":"            # \"DELETE_COMPLETE\" is not specified."},{"line_number":125,"context_line":"            self._wait_completion(stack_name, \"Stack delete\","},{"line_number":126,"context_line":"                [None], [\"DELETE_IN_PROGRESS\", \"DELETE_COMPLETE\"],"},{"line_number":127,"context_line":"                [\"DELETE_FAILED\"])"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            self._wait_completion(stack_name, \"Stack delete\","},{"line_number":130,"context_line":"                [\"DELETE_COMPLETE\", None], [\"DELETE_IN_PROGRESS\"],"},{"line_number":131,"context_line":"                [\"DELETE_FAILED\"])"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def get_parameters(self, stack_name):"},{"line_number":134,"context_line":"        path \u003d \"stacks/{}\".format(stack_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"40156d15_bee47ea6","line":131,"range":{"start_line":121,"start_character":8,"end_line":131,"end_character":34},"in_reply_to":"3af2e7b1_848ba7d6","updated":"2022-02-03 01:26:53.000000000","message":"good point. I thought it is better to return as fast as possible (ex. for terminate). But it is very short time that state is DELETE_COMPLETE. I will remove wait_delete and make it default.","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"64db2f0197b852d955d883c8f89abd32907fb627","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            [\"UPDATE_COMPLETE\"], [\"UPDATE_IN_PROGRESS\"], [\"UPDATE_FAILED\"])"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def wait_stack_delete(self, stack_name, wait_delete):"},{"line_number":121,"context_line":"        if wait_delete:"},{"line_number":122,"context_line":"            # wait until stack is deleted in the DB. It is expected that"},{"line_number":123,"context_line":"            # it takes short time after \"DELETE_COMPLETE\". So timeout after"},{"line_number":124,"context_line":"            # \"DELETE_COMPLETE\" is not specified."},{"line_number":125,"context_line":"            self._wait_completion(stack_name, \"Stack delete\","},{"line_number":126,"context_line":"                [None], [\"DELETE_IN_PROGRESS\", \"DELETE_COMPLETE\"],"},{"line_number":127,"context_line":"                [\"DELETE_FAILED\"])"},{"line_number":128,"context_line":"        else:"},{"line_number":129,"context_line":"            self._wait_completion(stack_name, \"Stack delete\","},{"line_number":130,"context_line":"                [\"DELETE_COMPLETE\", None], [\"DELETE_IN_PROGRESS\"],"},{"line_number":131,"context_line":"                [\"DELETE_FAILED\"])"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def get_parameters(self, stack_name):"},{"line_number":134,"context_line":"        path \u003d \"stacks/{}\".format(stack_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f2fe66be_00675108","line":131,"range":{"start_line":121,"start_character":8,"end_line":131,"end_character":34},"in_reply_to":"40156d15_bee47ea6","updated":"2022-02-04 01:31:54.000000000","message":"Done","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"}],"tacker/sol_refactored/infra_drivers/openstack/openstack.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"008f68d159f113b732b1e550f57c6678a529bf36","unresolved":true,"context_lines":[{"line_number":223,"context_line":"        stack_name \u003d heat_utils.get_stack_name(inst)"},{"line_number":224,"context_line":"        fields \u003d self._update_nfv_dict(heat_client, stack_name, fields)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        re_create \u003d False"},{"line_number":227,"context_line":"        if (req.obj_attr_is_set(\u0027additionalParams\u0027) and"},{"line_number":228,"context_line":"                req.additionalParams.get(\u0027all\u0027, False) and"},{"line_number":229,"context_line":"                not req.obj_attr_is_set(\u0027vnfcInstanceId\u0027)):"},{"line_number":230,"context_line":"            re_create \u003d True"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if re_create:"},{"line_number":233,"context_line":"            # NOTE: DefaultUserData::heal() don\u0027t care about \"template\" and"}],"source_content_type":"text/x-python","patch_set":3,"id":"6674494e_7c4aea87","line":230,"range":{"start_line":226,"start_character":8,"end_line":230,"end_character":28},"updated":"2022-02-02 04:32:04.000000000","message":"I think it would be better to comment that \"re_create\" is set to True only when SOL003 heal(without vnfcInstanceId) and \"all\u003dTrue\" in additionalParams.\nIn addition, could you refactor as follow?\n```\n@@ -224,8 +224,7 @@ class Openstack(object):\n         fields \u003d self._update_nfv_dict(heat_client, stack_name, fields)\n\n         re_create \u003d False\n-        if (req.obj_attr_is_set(\u0027additionalParams\u0027) and\n-                req.additionalParams.get(\u0027all\u0027, False) and\n+        if (req.get(\u0027additionalParams\u0027, {}).get(\u0027all\u0027, False) and\n```","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"26a352e40f3eccefc843d9409daf4f8f86bbbd9f","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        stack_name \u003d heat_utils.get_stack_name(inst)"},{"line_number":224,"context_line":"        fields \u003d self._update_nfv_dict(heat_client, stack_name, fields)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        re_create \u003d False"},{"line_number":227,"context_line":"        if (req.obj_attr_is_set(\u0027additionalParams\u0027) and"},{"line_number":228,"context_line":"                req.additionalParams.get(\u0027all\u0027, False) and"},{"line_number":229,"context_line":"                not req.obj_attr_is_set(\u0027vnfcInstanceId\u0027)):"},{"line_number":230,"context_line":"            re_create \u003d True"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if re_create:"},{"line_number":233,"context_line":"            # NOTE: DefaultUserData::heal() don\u0027t care about \"template\" and"}],"source_content_type":"text/x-python","patch_set":3,"id":"f283953d_43fbc0fc","line":230,"range":{"start_line":226,"start_character":8,"end_line":230,"end_character":28},"in_reply_to":"5e6d18b4_6604ea91","updated":"2022-02-03 04:24:16.000000000","message":"Done","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"7b7339d3cbefad84f95f7a5bb43b96362f4afed0","unresolved":true,"context_lines":[{"line_number":223,"context_line":"        stack_name \u003d heat_utils.get_stack_name(inst)"},{"line_number":224,"context_line":"        fields \u003d self._update_nfv_dict(heat_client, stack_name, fields)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        re_create \u003d False"},{"line_number":227,"context_line":"        if (req.obj_attr_is_set(\u0027additionalParams\u0027) and"},{"line_number":228,"context_line":"                req.additionalParams.get(\u0027all\u0027, False) and"},{"line_number":229,"context_line":"                not req.obj_attr_is_set(\u0027vnfcInstanceId\u0027)):"},{"line_number":230,"context_line":"            re_create \u003d True"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if re_create:"},{"line_number":233,"context_line":"            # NOTE: DefaultUserData::heal() don\u0027t care about \"template\" and"}],"source_content_type":"text/x-python","patch_set":3,"id":"5e6d18b4_6604ea91","line":230,"range":{"start_line":226,"start_character":8,"end_line":230,"end_character":28},"in_reply_to":"6674494e_7c4aea87","updated":"2022-02-03 01:26:53.000000000","message":"Ok, I will add comment.\nthough req is dict compat, req is treated as object over all in this file. So I keep current code.","commit_id":"104570a9650897e4b1ea0cf4b66b91c0292aec88"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"6b3646ee7293797447f23fb687d8c94cb67cd4c7","unresolved":true,"context_lines":[{"line_number":260,"context_line":"            storage_ids \u003d [res_def.resource.resourceId"},{"line_number":261,"context_line":"                           for res_def in grant_req.removeResources"},{"line_number":262,"context_line":"                           if res_def.type \u003d\u003d \u0027STORAGE\u0027]"},{"line_number":263,"context_line":"            for storage_info in inst_info.virtualStorageResourceInfo:"},{"line_number":264,"context_line":"                if storage_info.storageResource.resourceId in storage_ids:"},{"line_number":265,"context_line":"                    heat_client.mark_unhealthy("},{"line_number":266,"context_line":"                        storage_info.metadata[\u0027stack_id\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"1b3c7c6b_20a36dd9","line":263,"range":{"start_line":263,"start_character":32,"end_line":263,"end_character":68},"updated":"2022-02-16 09:58:57.000000000","message":"Do you need to consider `inst_info` not having a virtualStorageResourceInfo?\nI think it\u0027s better to check the existence before performing the processing.","commit_id":"243e0dae4e69d84ad23f72c8cbb9857e4bafdc88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"fba1862d8355e21fae0d987ada371bf51212ab5a","unresolved":true,"context_lines":[{"line_number":260,"context_line":"            storage_ids \u003d [res_def.resource.resourceId"},{"line_number":261,"context_line":"                           for res_def in grant_req.removeResources"},{"line_number":262,"context_line":"                           if res_def.type \u003d\u003d \u0027STORAGE\u0027]"},{"line_number":263,"context_line":"            for storage_info in inst_info.virtualStorageResourceInfo:"},{"line_number":264,"context_line":"                if storage_info.storageResource.resourceId in storage_ids:"},{"line_number":265,"context_line":"                    heat_client.mark_unhealthy("},{"line_number":266,"context_line":"                        storage_info.metadata[\u0027stack_id\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"e3eafe49_0d8249c5","line":263,"range":{"start_line":263,"start_character":32,"end_line":263,"end_character":68},"in_reply_to":"1b3c7c6b_20a36dd9","updated":"2022-02-16 23:14:58.000000000","message":"You are right. I will fix.","commit_id":"243e0dae4e69d84ad23f72c8cbb9857e4bafdc88"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"c560d6b6c368621c06683e0948fecc8e61061edf","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            storage_ids \u003d [res_def.resource.resourceId"},{"line_number":261,"context_line":"                           for res_def in grant_req.removeResources"},{"line_number":262,"context_line":"                           if res_def.type \u003d\u003d \u0027STORAGE\u0027]"},{"line_number":263,"context_line":"            for storage_info in inst_info.virtualStorageResourceInfo:"},{"line_number":264,"context_line":"                if storage_info.storageResource.resourceId in storage_ids:"},{"line_number":265,"context_line":"                    heat_client.mark_unhealthy("},{"line_number":266,"context_line":"                        storage_info.metadata[\u0027stack_id\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"d385fe54_2cabaae0","line":263,"range":{"start_line":263,"start_character":32,"end_line":263,"end_character":68},"in_reply_to":"e3eafe49_0d8249c5","updated":"2022-02-24 05:56:12.000000000","message":"I\u0027ve confirmed.","commit_id":"243e0dae4e69d84ad23f72c8cbb9857e4bafdc88"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"6b3646ee7293797447f23fb687d8c94cb67cd4c7","unresolved":true,"context_lines":[{"line_number":257,"context_line":"                    heat_client.mark_unhealthy("},{"line_number":258,"context_line":"                        vnfc.metadata[\u0027stack_id\u0027], vnfc.vduId)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"            storage_ids \u003d [res_def.resource.resourceId"},{"line_number":261,"context_line":"                           for res_def in grant_req.removeResources"},{"line_number":262,"context_line":"                           if res_def.type \u003d\u003d \u0027STORAGE\u0027]"},{"line_number":263,"context_line":"            for storage_info in inst_info.virtualStorageResourceInfo:"},{"line_number":264,"context_line":"                if storage_info.storageResource.resourceId in storage_ids:"},{"line_number":265,"context_line":"                    heat_client.mark_unhealthy("},{"line_number":266,"context_line":"                        storage_info.metadata[\u0027stack_id\u0027],"},{"line_number":267,"context_line":"                        storage_info.virtualStorageDescId)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"            # update stack"},{"line_number":270,"context_line":"            heat_client.update_stack(stack_name, fields)"}],"source_content_type":"text/x-python","patch_set":6,"id":"8ce8a977_57cf8475","line":267,"range":{"start_line":260,"start_character":0,"end_line":267,"end_character":58},"updated":"2022-02-16 09:58:57.000000000","message":"I looked at Spec [1], If `all` parameter of additionalParams is \"False\", I think VirtualStorage should not be targeted for healing.\n\n[1] https://specs.openstack.org/openstack/tacker-specs/specs/yoga/enhance-nfv-solv3-lcm-operation.html#flow-of-heal-vnf","commit_id":"243e0dae4e69d84ad23f72c8cbb9857e4bafdc88"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"fba1862d8355e21fae0d987ada371bf51212ab5a","unresolved":true,"context_lines":[{"line_number":257,"context_line":"                    heat_client.mark_unhealthy("},{"line_number":258,"context_line":"                        vnfc.metadata[\u0027stack_id\u0027], vnfc.vduId)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"            storage_ids \u003d [res_def.resource.resourceId"},{"line_number":261,"context_line":"                           for res_def in grant_req.removeResources"},{"line_number":262,"context_line":"                           if res_def.type \u003d\u003d \u0027STORAGE\u0027]"},{"line_number":263,"context_line":"            for storage_info in inst_info.virtualStorageResourceInfo:"},{"line_number":264,"context_line":"                if storage_info.storageResource.resourceId in storage_ids:"},{"line_number":265,"context_line":"                    heat_client.mark_unhealthy("},{"line_number":266,"context_line":"                        storage_info.metadata[\u0027stack_id\u0027],"},{"line_number":267,"context_line":"                        storage_info.virtualStorageDescId)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"            # update stack"},{"line_number":270,"context_line":"            heat_client.update_stack(stack_name, fields)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ca09aa3d_8e3b9250","line":267,"range":{"start_line":260,"start_character":0,"end_line":267,"end_character":58},"in_reply_to":"8ce8a977_57cf8475","updated":"2022-02-16 23:14:58.000000000","message":"It was checked by heal_grant (conductor/vnflcm_driver_v2.py). There is no storage id in grant_req.removeResources if \u0027all\u0027 is False.","commit_id":"243e0dae4e69d84ad23f72c8cbb9857e4bafdc88"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"c560d6b6c368621c06683e0948fecc8e61061edf","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                    heat_client.mark_unhealthy("},{"line_number":258,"context_line":"                        vnfc.metadata[\u0027stack_id\u0027], vnfc.vduId)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"            storage_ids \u003d [res_def.resource.resourceId"},{"line_number":261,"context_line":"                           for res_def in grant_req.removeResources"},{"line_number":262,"context_line":"                           if res_def.type \u003d\u003d \u0027STORAGE\u0027]"},{"line_number":263,"context_line":"            for storage_info in inst_info.virtualStorageResourceInfo:"},{"line_number":264,"context_line":"                if storage_info.storageResource.resourceId in storage_ids:"},{"line_number":265,"context_line":"                    heat_client.mark_unhealthy("},{"line_number":266,"context_line":"                        storage_info.metadata[\u0027stack_id\u0027],"},{"line_number":267,"context_line":"                        storage_info.virtualStorageDescId)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"            # update stack"},{"line_number":270,"context_line":"            heat_client.update_stack(stack_name, fields)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f119064_f05fa460","line":267,"range":{"start_line":260,"start_character":0,"end_line":267,"end_character":58},"in_reply_to":"ca09aa3d_8e3b9250","updated":"2022-02-24 05:56:12.000000000","message":"Thanks for your explanation, I understood.","commit_id":"243e0dae4e69d84ad23f72c8cbb9857e4bafdc88"}],"tacker/sol_refactored/objects/v2/heal_vnf_request.py":[{"author":{"_account_id":31668,"deleted":true},"change_message_id":"ffc8cab15856b6a06b6a9e846e239859d573a03b","unresolved":true,"context_lines":[{"line_number":30,"context_line":"        \u0027additionalParams\u0027: fields.KeyValuePairsField(nullable\u003dTrue),"},{"line_number":31,"context_line":"        # NOTE: following fields are defined in NFV-SOL 002 v3.3.1 5.5.2.9"},{"line_number":32,"context_line":"        \u0027vnfcInstanceId\u0027: fields.ListOfStringsField(nullable\u003dTrue),"},{"line_number":33,"context_line":"        \u0027healScript\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":10,"id":"0e1cd504_121e2399","line":33,"updated":"2022-02-22 02:16:18.000000000","message":"\u0027healScript\u0027 is not supported as described in spec, so please explain to that effect in the comments.","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"6e0dec55e33f34d52c059b619b697e4626a161a6","unresolved":true,"context_lines":[{"line_number":30,"context_line":"        \u0027additionalParams\u0027: fields.KeyValuePairsField(nullable\u003dTrue),"},{"line_number":31,"context_line":"        # NOTE: following fields are defined in NFV-SOL 002 v3.3.1 5.5.2.9"},{"line_number":32,"context_line":"        \u0027vnfcInstanceId\u0027: fields.ListOfStringsField(nullable\u003dTrue),"},{"line_number":33,"context_line":"        \u0027healScript\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":10,"id":"4154731c_b71c49c7","line":33,"in_reply_to":"0e1cd504_121e2399","updated":"2022-02-22 04:13:24.000000000","message":"I see. I will add an comment.","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"a9d005952a371b82d9b4e5425b72403d908f88e3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        \u0027additionalParams\u0027: fields.KeyValuePairsField(nullable\u003dTrue),"},{"line_number":31,"context_line":"        # NOTE: following fields are defined in NFV-SOL 002 v3.3.1 5.5.2.9"},{"line_number":32,"context_line":"        \u0027vnfcInstanceId\u0027: fields.ListOfStringsField(nullable\u003dTrue),"},{"line_number":33,"context_line":"        \u0027healScript\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":10,"id":"fec1f8b4_07f9690e","line":33,"in_reply_to":"4154731c_b71c49c7","updated":"2022-02-27 23:27:17.000000000","message":"Done","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"}],"tacker/tests/unit/sol_refactored/common/test_lcm_op_occ_utils.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"5281a92949871d29938d3c248498c5c2fbbd5bdc","unresolved":true,"context_lines":[{"line_number":700,"context_line":""},{"line_number":701,"context_line":"# example_4 is for lccmop_update test in case of heal. based on example_2."},{"line_number":702,"context_line":"# VDU1_1: update server only. VDU1_2: update both server and volume."},{"line_number":703,"context_line":"# NOTE: it is not really data."},{"line_number":704,"context_line":"_inst_info_example_4 \u003d {"},{"line_number":705,"context_line":"    # \"flavourId\", \"vnfState\", \"scaleStatus\", \"maxScaleLevels\" are omitted"},{"line_number":706,"context_line":"    # \"extCpInfo\": omitted"}],"source_content_type":"text/x-python","patch_set":4,"id":"67eb09ba_b353b416","line":703,"updated":"2022-02-02 07:06:27.000000000","message":"I think other samples are the same, but is there any reason to write this NOTE only in this sample?\nUnless you have a specific reason, you can delete it.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"26525c966b901df599bc87564f7c5d10a1fbf9a7","unresolved":true,"context_lines":[{"line_number":700,"context_line":""},{"line_number":701,"context_line":"# example_4 is for lccmop_update test in case of heal. based on example_2."},{"line_number":702,"context_line":"# VDU1_1: update server only. VDU1_2: update both server and volume."},{"line_number":703,"context_line":"# NOTE: it is not really data."},{"line_number":704,"context_line":"_inst_info_example_4 \u003d {"},{"line_number":705,"context_line":"    # \"flavourId\", \"vnfState\", \"scaleStatus\", \"maxScaleLevels\" are omitted"},{"line_number":706,"context_line":"    # \"extCpInfo\": omitted"}],"source_content_type":"text/x-python","patch_set":4,"id":"7969c01a_a238eca1","line":703,"in_reply_to":"67eb09ba_b353b416","updated":"2022-02-03 02:04:56.000000000","message":"I mean the above sentence \"VDU1_1: update server only. VDU1_2: update both server and volume.\" can not be happened really. I will change the comment more clearly.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"26a352e40f3eccefc843d9409daf4f8f86bbbd9f","unresolved":false,"context_lines":[{"line_number":700,"context_line":""},{"line_number":701,"context_line":"# example_4 is for lccmop_update test in case of heal. based on example_2."},{"line_number":702,"context_line":"# VDU1_1: update server only. VDU1_2: update both server and volume."},{"line_number":703,"context_line":"# NOTE: it is not really data."},{"line_number":704,"context_line":"_inst_info_example_4 \u003d {"},{"line_number":705,"context_line":"    # \"flavourId\", \"vnfState\", \"scaleStatus\", \"maxScaleLevels\" are omitted"},{"line_number":706,"context_line":"    # \"extCpInfo\": omitted"}],"source_content_type":"text/x-python","patch_set":4,"id":"807d6de3_4347959e","line":703,"in_reply_to":"7969c01a_a238eca1","updated":"2022-02-03 04:24:16.000000000","message":"Done","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"ffc8cab15856b6a06b6a9e846e239859d573a03b","unresolved":true,"context_lines":[{"line_number":686,"context_line":"        }"},{"line_number":687,"context_line":"    ],"},{"line_number":688,"context_line":"    # NOTE: vnfcCpInfo of VnfcResourceInfo is changed exactly, but it is"},{"line_number":689,"context_line":"    # not looked at lcmocc_update."},{"line_number":690,"context_line":"    \"vnfcResourceInfo\": _inst_info_example_1[\"vnfcResourceInfo\"],"},{"line_number":691,"context_line":"    # other members are same as example_1"},{"line_number":692,"context_line":"    \"extManagedVirtualLinkInfo\":"}],"source_content_type":"text/x-python","patch_set":10,"id":"124ca627_efd85897","line":689,"range":{"start_line":689,"start_character":20,"end_line":689,"end_character":33},"updated":"2022-02-22 02:16:18.000000000","message":"\"update_lcmocc\" is better according to the actual method name.\nCould you please fix this as well?","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"6e0dec55e33f34d52c059b619b697e4626a161a6","unresolved":true,"context_lines":[{"line_number":686,"context_line":"        }"},{"line_number":687,"context_line":"    ],"},{"line_number":688,"context_line":"    # NOTE: vnfcCpInfo of VnfcResourceInfo is changed exactly, but it is"},{"line_number":689,"context_line":"    # not looked at lcmocc_update."},{"line_number":690,"context_line":"    \"vnfcResourceInfo\": _inst_info_example_1[\"vnfcResourceInfo\"],"},{"line_number":691,"context_line":"    # other members are same as example_1"},{"line_number":692,"context_line":"    \"extManagedVirtualLinkInfo\":"}],"source_content_type":"text/x-python","patch_set":10,"id":"5c432ac8_9e6b8f0e","line":689,"range":{"start_line":689,"start_character":20,"end_line":689,"end_character":33},"in_reply_to":"124ca627_efd85897","updated":"2022-02-22 04:13:24.000000000","message":"I will fix.","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"a9d005952a371b82d9b4e5425b72403d908f88e3","unresolved":false,"context_lines":[{"line_number":686,"context_line":"        }"},{"line_number":687,"context_line":"    ],"},{"line_number":688,"context_line":"    # NOTE: vnfcCpInfo of VnfcResourceInfo is changed exactly, but it is"},{"line_number":689,"context_line":"    # not looked at lcmocc_update."},{"line_number":690,"context_line":"    \"vnfcResourceInfo\": _inst_info_example_1[\"vnfcResourceInfo\"],"},{"line_number":691,"context_line":"    # other members are same as example_1"},{"line_number":692,"context_line":"    \"extManagedVirtualLinkInfo\":"}],"source_content_type":"text/x-python","patch_set":10,"id":"a1b6d2d5_1ac9c022","line":689,"range":{"start_line":689,"start_character":20,"end_line":689,"end_character":33},"in_reply_to":"5c432ac8_9e6b8f0e","updated":"2022-02-27 23:27:17.000000000","message":"Done","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"ffc8cab15856b6a06b6a9e846e239859d573a03b","unresolved":true,"context_lines":[{"line_number":698,"context_line":"    # \"vnfcInfo\": omitted"},{"line_number":699,"context_line":"}"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"# example_4 is for lccmop_update test in case of heal. based on example_2."},{"line_number":702,"context_line":"# VDU1_1: update server only. VDU1_2: update both server and volume."},{"line_number":703,"context_line":"# NOTE: combination of the above sentence can not be happened really."},{"line_number":704,"context_line":"# it is the data for unit test."}],"source_content_type":"text/x-python","patch_set":10,"id":"a6921a74_cb6e3faf","line":701,"range":{"start_line":701,"start_character":19,"end_line":701,"end_character":32},"updated":"2022-02-22 02:16:18.000000000","message":"\"update_lcmocc\" is better according to the actual method name.","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"a9d005952a371b82d9b4e5425b72403d908f88e3","unresolved":false,"context_lines":[{"line_number":698,"context_line":"    # \"vnfcInfo\": omitted"},{"line_number":699,"context_line":"}"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"# example_4 is for lccmop_update test in case of heal. based on example_2."},{"line_number":702,"context_line":"# VDU1_1: update server only. VDU1_2: update both server and volume."},{"line_number":703,"context_line":"# NOTE: combination of the above sentence can not be happened really."},{"line_number":704,"context_line":"# it is the data for unit test."}],"source_content_type":"text/x-python","patch_set":10,"id":"110a0da6_5a0bc131","line":701,"range":{"start_line":701,"start_character":19,"end_line":701,"end_character":32},"in_reply_to":"87843a2a_889cad52","updated":"2022-02-27 23:27:17.000000000","message":"Done","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"6e0dec55e33f34d52c059b619b697e4626a161a6","unresolved":true,"context_lines":[{"line_number":698,"context_line":"    # \"vnfcInfo\": omitted"},{"line_number":699,"context_line":"}"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"# example_4 is for lccmop_update test in case of heal. based on example_2."},{"line_number":702,"context_line":"# VDU1_1: update server only. VDU1_2: update both server and volume."},{"line_number":703,"context_line":"# NOTE: combination of the above sentence can not be happened really."},{"line_number":704,"context_line":"# it is the data for unit test."}],"source_content_type":"text/x-python","patch_set":10,"id":"87843a2a_889cad52","line":701,"range":{"start_line":701,"start_character":19,"end_line":701,"end_character":32},"in_reply_to":"a6921a74_cb6e3faf","updated":"2022-02-22 04:13:24.000000000","message":"I will fix.","commit_id":"04744ed68411de56de6ce351ff4287abccda9944"}],"tacker/tests/unit/sol_refactored/conductor/test_vnflcm_driver_v2.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"5281a92949871d29938d3c248498c5c2fbbd5bdc","unresolved":true,"context_lines":[{"line_number":1348,"context_line":"        return inst, lcmocc"},{"line_number":1349,"context_line":""},{"line_number":1350,"context_line":"    @mock.patch.object(nfvo_client.NfvoClient, \u0027grant\u0027)"},{"line_number":1351,"context_line":"    def test_heal_grant_SOL002(self, mocked_grant):"},{"line_number":1352,"context_line":"        # prepare"},{"line_number":1353,"context_line":"        req \u003d objects.HealVnfRequest("},{"line_number":1354,"context_line":"            vnfcInstanceId\u003d[\"VDU1-vnfc_res_info_id_VDU1_2\","}],"source_content_type":"text/x-python","patch_set":4,"id":"8de40037_59af88b0","line":1351,"updated":"2022-02-02 07:06:27.000000000","message":"I think it would be better to import \"ddt\" and pass this test even if \"additionalParams \u003d {\u0027all\u0027: False}\".","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"fe1f4c21c89b6c8810ae45800bc3b5cc54e7bc4e","unresolved":false,"context_lines":[{"line_number":1348,"context_line":"        return inst, lcmocc"},{"line_number":1349,"context_line":""},{"line_number":1350,"context_line":"    @mock.patch.object(nfvo_client.NfvoClient, \u0027grant\u0027)"},{"line_number":1351,"context_line":"    def test_heal_grant_SOL002(self, mocked_grant):"},{"line_number":1352,"context_line":"        # prepare"},{"line_number":1353,"context_line":"        req \u003d objects.HealVnfRequest("},{"line_number":1354,"context_line":"            vnfcInstanceId\u003d[\"VDU1-vnfc_res_info_id_VDU1_2\","}],"source_content_type":"text/x-python","patch_set":4,"id":"b1cc3b57_cb70fb43","line":1351,"in_reply_to":"424f4923_77a07160","updated":"2022-02-28 08:06:52.000000000","message":"Okay, I see.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"26525c966b901df599bc87564f7c5d10a1fbf9a7","unresolved":true,"context_lines":[{"line_number":1348,"context_line":"        return inst, lcmocc"},{"line_number":1349,"context_line":""},{"line_number":1350,"context_line":"    @mock.patch.object(nfvo_client.NfvoClient, \u0027grant\u0027)"},{"line_number":1351,"context_line":"    def test_heal_grant_SOL002(self, mocked_grant):"},{"line_number":1352,"context_line":"        # prepare"},{"line_number":1353,"context_line":"        req \u003d objects.HealVnfRequest("},{"line_number":1354,"context_line":"            vnfcInstanceId\u003d[\"VDU1-vnfc_res_info_id_VDU1_2\","}],"source_content_type":"text/x-python","patch_set":4,"id":"424f4923_77a07160","line":1351,"in_reply_to":"8de40037_59af88b0","updated":"2022-02-03 02:04:56.000000000","message":"main purpose of this test is to check constructing grant_req properly. I understand it is better to increase coverage. But let me make it the next opportunity.","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"5281a92949871d29938d3c248498c5c2fbbd5bdc","unresolved":true,"context_lines":[{"line_number":1472,"context_line":"                self.assertEqual(len(expected_res_ids[key][name]), len(ids))"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    @mock.patch.object(nfvo_client.NfvoClient, \u0027grant\u0027)"},{"line_number":1475,"context_line":"    def test_heal_grant_SOL003(self, mocked_grant):"},{"line_number":1476,"context_line":"        # prepare"},{"line_number":1477,"context_line":"        req \u003d objects.HealVnfRequest()"},{"line_number":1478,"context_line":"        inst, lcmocc \u003d self._heal_grant_prepare(req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"be690ed2_d25471ab","line":1475,"updated":"2022-02-02 07:06:27.000000000","message":"ditto","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"fe1f4c21c89b6c8810ae45800bc3b5cc54e7bc4e","unresolved":false,"context_lines":[{"line_number":1472,"context_line":"                self.assertEqual(len(expected_res_ids[key][name]), len(ids))"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    @mock.patch.object(nfvo_client.NfvoClient, \u0027grant\u0027)"},{"line_number":1475,"context_line":"    def test_heal_grant_SOL003(self, mocked_grant):"},{"line_number":1476,"context_line":"        # prepare"},{"line_number":1477,"context_line":"        req \u003d objects.HealVnfRequest()"},{"line_number":1478,"context_line":"        inst, lcmocc \u003d self._heal_grant_prepare(req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"aaba83ea_b98bb0a9","line":1475,"in_reply_to":"1ee1641f_57562d15","updated":"2022-02-28 08:06:52.000000000","message":"Done","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"26525c966b901df599bc87564f7c5d10a1fbf9a7","unresolved":true,"context_lines":[{"line_number":1472,"context_line":"                self.assertEqual(len(expected_res_ids[key][name]), len(ids))"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    @mock.patch.object(nfvo_client.NfvoClient, \u0027grant\u0027)"},{"line_number":1475,"context_line":"    def test_heal_grant_SOL003(self, mocked_grant):"},{"line_number":1476,"context_line":"        # prepare"},{"line_number":1477,"context_line":"        req \u003d objects.HealVnfRequest()"},{"line_number":1478,"context_line":"        inst, lcmocc \u003d self._heal_grant_prepare(req)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ee1641f_57562d15","line":1475,"in_reply_to":"be690ed2_d25471ab","updated":"2022-02-03 02:04:56.000000000","message":"ditto","commit_id":"bb33b286027f8b8137c1aa67a73804b6a50951c7"}]}
