)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"33f8829da14da940e7e49d1ad82cf940563aa93f","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Koji Shimizu \u003cshimizu.koji@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-11-25 10:54:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix server notification mgmt driver script initialization"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In sample mgmt driver script for server notification, the"},{"line_number":10,"context_line":"initialization about config and rpc is forgotten. This"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"461124d5_283a5a95","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":57},"updated":"2022-11-30 06:28:42.000000000","message":"Please shorten the commit message to 50 characters.\nRefer: https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"54137b9298f947b442acae8339ad11f80842c99c","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Koji Shimizu \u003cshimizu.koji@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-11-25 10:54:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix server notification mgmt driver script initialization"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In sample mgmt driver script for server notification, the"},{"line_number":10,"context_line":"initialization about config and rpc is forgotten. This"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"34155963_00987460","line":7,"updated":"2022-11-30 06:57:34.000000000","message":"This title can be more specific for what is fixed in the update, such as \"Fix missing rpc.init for mgmt driver\".","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"058d163b36805389401b01bd29e89a8dd10e3d43","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Koji Shimizu \u003cshimizu.koji@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-11-25 10:54:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix server notification mgmt driver script initialization"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In sample mgmt driver script for server notification, the"},{"line_number":10,"context_line":"initialization about config and rpc is forgotten. This"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"de9cdfed_36d49627","line":7,"in_reply_to":"34155963_00987460","updated":"2022-11-30 08:32:09.000000000","message":"Commit message has been changed.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"058d163b36805389401b01bd29e89a8dd10e3d43","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Koji Shimizu \u003cshimizu.koji@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-11-25 10:54:18 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix server notification mgmt driver script initialization"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In sample mgmt driver script for server notification, the"},{"line_number":10,"context_line":"initialization about config and rpc is forgotten. This"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"10c7e502_81c0e885","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":57},"in_reply_to":"461124d5_283a5a95","updated":"2022-11-30 08:32:09.000000000","message":"Commit message has been changed.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"54137b9298f947b442acae8339ad11f80842c99c","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix server notification mgmt driver script initialization"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In sample mgmt driver script for server notification, the"},{"line_number":10,"context_line":"initialization about config and rpc is forgotten. This"},{"line_number":11,"context_line":"causes config misreading and failure in terminate_start."},{"line_number":12,"context_line":"This patch fixes the problem."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bdd53cf1_9626299e","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":28},"updated":"2022-11-30 06:57:34.000000000","message":"It isn\u0027t correct because `tacker/sol_refactored/mgmt_drivers/server_notification.py` is not a sample script.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"058d163b36805389401b01bd29e89a8dd10e3d43","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix server notification mgmt driver script initialization"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In sample mgmt driver script for server notification, the"},{"line_number":10,"context_line":"initialization about config and rpc is forgotten. This"},{"line_number":11,"context_line":"causes config misreading and failure in terminate_start."},{"line_number":12,"context_line":"This patch fixes the problem."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"25137c65_2aa624f0","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":28},"in_reply_to":"bdd53cf1_9626299e","updated":"2022-11-30 08:32:09.000000000","message":"Commit message has been changed.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"425086063ad32b57c9b4c70f2a98816bc94be4a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"819cc0f6_d3f11396","updated":"2022-11-27 02:20:53.000000000","message":"Please kindly review this patch.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"33f8829da14da940e7e49d1ad82cf940563aa93f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bd46745e_84524e29","updated":"2022-11-30 06:28:42.000000000","message":"Thanks for your patch. Please find review comment.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"0bf726e340a5176dc944b5d3eebc52f1074d7d81","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3f9e430b_642d422c","updated":"2022-11-26 12:53:44.000000000","message":"recheck\nAssertionError: \u0027vdu1-update-5b9d95d894-mwshd\u0027 \u003d\u003d \u0027vdu1-update-5b9d95d894-mwshd\u0027","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"125654143ae0744b974afbcee89f7ce89b2d11ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"27a2c201_bb60de1a","updated":"2022-12-06 08:21:51.000000000","message":"Thank you very much for your comment.","commit_id":"8157fffe86df0d95177a301fd3147ec87d5650e4"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"7b6196d98a5d6ab6f60574a2a06d7373e253beef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"817cee59_eaa79730","updated":"2022-12-01 08:53:26.000000000","message":"Thank you very much for your comment.","commit_id":"8157fffe86df0d95177a301fd3147ec87d5650e4"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"c857a90a21637fda8dcf7521dcde066367c61c40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"88d3b004_e51fd747","updated":"2022-12-01 00:37:00.000000000","message":"Thank you very much for your comment.","commit_id":"8157fffe86df0d95177a301fd3147ec87d5650e4"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"058d163b36805389401b01bd29e89a8dd10e3d43","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"50787f2f_907bd3b2","updated":"2022-11-30 08:32:09.000000000","message":"Thank you very much for your review.","commit_id":"8157fffe86df0d95177a301fd3147ec87d5650e4"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"59fb17fe271b19665e541e201cbf3f60c8477b57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"98f53547_0058fcc1","updated":"2022-12-06 04:55:57.000000000","message":"Thanks for the long discussion, but I\u0027m not still sure our replies. Sorry.","commit_id":"8157fffe86df0d95177a301fd3147ec87d5650e4"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"f3f3176e87825e321bda03a0f7839b805d434bfe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f19a23b2_0bc9b13e","updated":"2022-12-01 00:58:31.000000000","message":"recheck","commit_id":"8157fffe86df0d95177a301fd3147ec87d5650e4"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"9f1a39301acd40b153cc6255ed3dd1070aa5ee90","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e54e50a3_1c1a2b41","updated":"2022-12-02 00:58:50.000000000","message":"thank you very much for your comment.","commit_id":"8157fffe86df0d95177a301fd3147ec87d5650e4"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"7a2fda91cdab263da175b30bbd26aea36893d3e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a0f0ee53_9e61e882","updated":"2022-12-08 07:59:54.000000000","message":"Shimizu-san,\nI\u0027d appreciate if you tell me where the RPC server is created with variables initialized in rpc.init() you added in this patch to understand the procedure correctly. Thanks. ","commit_id":"61241b2179f208cfe3f979df7c8c99accfe33765"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"8781b4c54c9125d44a016273c35a5ab8e444b219","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e85097d9_43fa5c3a","updated":"2022-12-08 11:46:40.000000000","message":"Thank you very much for your comment.","commit_id":"61241b2179f208cfe3f979df7c8c99accfe33765"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"ec83b56b69a6f5c14a558f25d9b8201dfa106fb8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8c974037_f6f5d11e","updated":"2022-12-08 00:06:25.000000000","message":"recheck 2022-12-07 13:21:15.468202 | controller-tacker |     testtools.matchers._impl.MismatchError: \u0027PENDING_CREATE\u0027 !\u003d \u0027ACTIVE\u0027: vnf e414fbd2-e745-48f5-ac3c-6ec1b87b97ae with status PENDING_CREATE is expected to be ACTIVE\n","commit_id":"61241b2179f208cfe3f979df7c8c99accfe33765"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"f9bf29da8528bf2400d264ad5efd4b4c8290e4e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"45963f78_1fc8891a","updated":"2022-12-18 04:55:59.000000000","message":"Thank you very much for your comment.","commit_id":"8fe35f3c9834674dad59d51f82e35186aebf8867"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"c34bb82cd99ea80e7996d3667a5bf62074856cf5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8bf9b2fc_8ede3fbb","updated":"2023-01-12 06:38:51.000000000","message":"thank you very much for your comment.","commit_id":"8fe35f3c9834674dad59d51f82e35186aebf8867"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"6bce7d9122fbcd4c1d3cceb1483db23b4aa9f45e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"20f1af2e_c882568b","updated":"2023-01-24 23:55:33.000000000","message":"As we discussed in our meeting, this patch applies PS1 and using global variable in rpc will be improved in another patch.","commit_id":"5c851b34ba8eb002626ba055fcef74652d116501"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"3344f5840c0e3d666ffd74ca0a987e0c7cfae73d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"39b469db_0fc45268","updated":"2023-01-25 09:57:05.000000000","message":"LGTM","commit_id":"5c851b34ba8eb002626ba055fcef74652d116501"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"bf30edc7e64e09ea193878bae68135b4e5f579d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ec509fa2_4d1478ae","updated":"2023-01-25 01:16:43.000000000","message":"Thank you for your patch \u0026 discussion. LGTM","commit_id":"5c851b34ba8eb002626ba055fcef74652d116501"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"482a51c7a5b77d14132ed98eeca1be20bec35062","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7f018763_73befa84","updated":"2023-01-27 04:31:59.000000000","message":"Thanks for your patch! LTGM.","commit_id":"5c851b34ba8eb002626ba055fcef74652d116501"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"d0c4154db00e5203f7562b4ef02f2a272c1c679f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3ad205c5_2336dda2","updated":"2023-01-24 12:03:29.000000000","message":"recheck","commit_id":"5c851b34ba8eb002626ba055fcef74652d116501"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"588dbabe0df0a321532acb2b2fbd66f76b9d3996","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c1b42dc8_318bf211","updated":"2023-01-30 05:39:25.000000000","message":"recheck, Jan 30 05:14:09.213550 np0032903281 tacker-conductor[24571]: 2023-01-30 05:14:09.212 ERROR tacker.sol_refactored.conductor.conductor_v2 [req-098fabbc-b4ae-465a-95b9-6429fdaabdb4 nfv_user nfv] PROCESSING INSTANTIATE failed: tacker.sol_refactored.common.exceptions.StackOperationFailed: Resource CREATE failed: resources.rxwvyz6kzb6b: resources.VDU1_scale_group.Property error: resources.VDU1_CP1.properties.network: Error validating value \u0027errornetwork\u0027: Unable to find network with name or id \u0027errornetwork\u0027","commit_id":"68ff7a676663609e219654428c55dde4f1c16248"}],"tacker/sol_refactored/mgmt_drivers/server_notification.py":[{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"54137b9298f947b442acae8339ad11f80842c99c","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"6cfce08d_3fb652bc","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"updated":"2022-11-30 06:57:34.000000000","message":"Why don\u0027t you call init while instantiating VnfLcmRpcApiV2? Is it not feasible?","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"a7415c3d99cf95a9be1f932fa07672d2147d0cd8","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"81c88cd8_e7894e2d","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"1a0a8423_910cb4ad","updated":"2023-01-12 05:52:31.000000000","message":"Shimizu-san,\n\nI\u0027m also wondering if this locking is necessary.\nIs this change caused by calling rpc.init() from VnfLcmRpcV2? (suppose not) or we have to do this whenever there\u0027re multiple instances using RPC?","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"59fb17fe271b19665e541e201cbf3f60c8477b57","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ef40ddeb_a9be3323","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"3083332d_a4069491","updated":"2022-12-06 04:55:57.000000000","message":"\u003e Are you mean processes can be re-initialized every single shot of rpc?\nI don\u0027t mean anything. I just want to confirm what do you mean by \"In other words, rpc.init() is a initialization of \"rpc service\", VnfLcmRpcApiV2() is a initialization of \"rpc client\"\". What\u0027s the difference in the context of initializing rpc actually?\n\n\u003e In addition, there are a number of codes where rpc clients are implemented with similar policies. \nWe don\u0027t have any policy that we should do implement so. It\u0027s just a result of our thoughtless of reviewing. I think changing only VnfLcmRpcApiV2 is still better and no exceptional.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"ec2bbb82c87d774dddc633e494cf700d7524cbdf","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"82e3acc8_7dbc875a","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"684b3172_1b683b0c","updated":"2022-12-08 07:53:11.000000000","message":"I think one of the reason why we\u0027ve confused is current tacker\u0027s impl is something complex. However, in rpc.init(), it\u0027s just initializing global variables such as \"TRANSPORT\" which is used both for server and client. In tacker, RPC server is initialized in tacker.common.rpc.get_server() [1], but this function is not called in rpc.init().\n\nIn addition, rpc.init() might not be expected directly from anywhere but we\u0027d better to use tacker.common.config.init() instead because it looks a wrapper of rpc.init() [2].\n\nAnyway, although I\u0027m not sure where the get_server is called in the mgmt driver, I wonder rpc.init() here is called for the RPC client because TRANSPORT is also used in get_client() which is called in serveral functions in VnfLcmRpcV2. If so, rpc.init() should be called in VnfLcmRpcV2. What do you think?\n\n[1] https://opendev.org/openstack/tacker/src/branch/master/tacker/common/rpc.py#L206\n[2] https://opendev.org/openstack/tacker/src/branch/master/tacker/common/config.py#L97","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"058d163b36805389401b01bd29e89a8dd10e3d43","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"e5eb7b89_5040f8cb","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"6cfce08d_3fb652bc","updated":"2022-11-30 08:32:09.000000000","message":"Do you say about timing of initialization? Mgmt script is executed in a independent process. I understand even if rpc was initialized for tacker-server or tacker-conductor, another initialization is needed here. VnfLcmRpcApiV2 is also instantiated at the same time here.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"994ac568596d33c303fb664313076e675ed4acdc","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"e8325343_21a19eb3","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"7b614dcb_f871c5d8","updated":"2022-12-01 18:15:37.000000000","message":"I don\u0027t still understand two things.\n- What is the different between \"rpc service\" and \"rpc client\"?\n- What is done in rpc.init()? In my understanding, it initializes three global variables, TRANSPORT, NOTIFICATION_TRANSPORT and NOTIFIER, and it\u0027s enough to be done at once anywhere while initializing ServerNotificationMgmtDriver. Initializing VnfLcmRpcApiV2 is a part of ServerNotificationMgmtDriver and it\u0027s enough. Is that correct?","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"f9bf29da8528bf2400d264ad5efd4b4c8290e4e7","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a0a8423_910cb4ad","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"7c88a352_94a19a49","updated":"2022-12-18 04:55:59.000000000","message":"In PS6, it is modifyed so that rpc.init() is contained in VnfLcmRpcV2 as you suggested. So please check it again.\n\n\u003eCould I confirm again where rpc.init() should be called for rpc server? Or don\u0027t we need to discuss about that anymore although I don\u0027t know why the reason? Thanks.\n\n\u003e def init(conf):\n\u003e global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER\n\nI\u0027m sorry the word \"rpc server\" as I said wasn\u0027t accurate. I meant each global variable have only one object in the process and should be avoided from overwriting in the uncertain timing. the \"server\" meant just that \"it belongs to the process\".","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"c34bb82cd99ea80e7996d3667a5bf62074856cf5","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"28a52889_3929f5a8","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"81c88cd8_e7894e2d","updated":"2023-01-12 06:38:51.000000000","message":"Yes, this change is caused by calling rpc.init() from VnfLcmRpcV2.\nIn case, if multiple VnfLcmRpcV2() are processed in thread1 and thread2,\nmultiple rpc.init() are also called.\nIn each rpc.init(), single global variable can be overwritten at the same time.\nThat causes trouble and that\u0027s why it need to lock.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"8781b4c54c9125d44a016273c35a5ab8e444b219","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"f838196e_b4ca39a4","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"82e3acc8_7dbc875a","updated":"2022-12-08 11:46:40.000000000","message":"I think there are two points to be concern when it includes rpc.init() in VnfLcmRpcV2.\n\n(1)The first point is about race condition. As I said, VnfLcmRpcV2 can be called multiple times. If VnfLcmRpcV2 and rpc.init() are mixed,\nrpc.init() can be also called multiple times in a process, TRANSPORT or NOTIFIER might be deleted and re-created at unexpected timing.\nWhen another rpc transport in VnfLcmRpcV2 is asynchronously used at the just same time, (I think that is very rare case,) that might cause trouble.\n\n(2)The second point is about CONF.\nrpc.init() needs CONF as its parameter. that includes configuration about which driver does rpc use. I mean CONF is high level system information.\nHigh level script(mgmt driver scrpit) should treat such content. Low level component (VnfLcmRpcV2) should not care about system information.\nHowever, If VnfLcmRpcV2 and rpc.init() are mixed, it turns upside down. VnfLcmRpcV2 itsself reads CONF and use it for rpc.init(), That means High level script doesn\u0027t care about system information and Low level component has initiative about system configuration. I\u0027m afraid it gets unnecessarily complex.\n\nTo avoid (1), singletone and locking must be considered in tacker/common/rpc.py.\nTo avoid (2), VnfLcmRpcV2 must be modified to pass config (e.g: VnfLcmRpcV2() -\u003e VnfLcmRpcV2(CONF))\nHowever, my current implementation is not affected by these points.\n\n\u003e My suggestion is to move this two lines into initialization in `VnfLcmRpcApiV2` \n\nI would like to know why you want to move these lines.\n\nI try to improve rpc.py and conductor_rpc_v2.py. But it needs a while for implimentation and testing.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"86424866d6ffe63c0a4b225a0adc6cb7cd3e5575","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ebcc506f_5d8f6094","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"d9cc06f4_a63705c8","updated":"2022-12-01 08:26:20.000000000","message":"Sorry, I don\u0027t get your point. What do you mean by consistency? In these example you mentioned, it just defining its init() and calling tacker.common.rpc.init(), and it\u0027s just a little bit different from your update.\n\nI also not sure what do you mean by \"additional init()\". I\u0027ve just suggested to call it in initialization in VnfLcmRpcApiV2 instead of here.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"c857a90a21637fda8dcf7521dcde066367c61c40","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"d9cc06f4_a63705c8","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"dc9f1c3a_55e80f7f","updated":"2022-12-01 00:37:00.000000000","message":"I\u0027m afraid your suggestion could not keep consistency with the other codes that use rpc. It affects tacker-server or tacker-conductor. They already initialize rpc in\ntacker/common/config.py, tacker/conductor/conductor_server.py. Additional init() may causes trouble.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"a5b2ab949cbc6798e0633acdd9ca5eb1b42db25d","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dc9f1c3a_55e80f7f","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"e5eb7b89_5040f8cb","updated":"2022-11-30 13:34:01.000000000","message":"I don\u0027t mean so. In your update, there are two `ServerNotificationMgmtDriver` doing the same rpc.init(). My suggestion is to move this two lines into initialization in `VnfLcmRpcApiV2` which is called in the next line as you mentioned. Is it not feasible?","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"9f1a39301acd40b153cc6255ed3dd1070aa5ee90","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3083332d_a4069491","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"e8325343_21a19eb3","updated":"2022-12-02 00:58:50.000000000","message":"Thank you for your question, I would like to explain more.\n\u003e - What is the different between \"rpc service\" and \"rpc client\"?\n\"rpc service\" is a part of process starting. \"rpc client\" is used for transporting. Are you mean processes can be re-initialized every single shot of rpc? \n\u003e - What is done in rpc.init()? In my understanding, it initializes three global variables, TRANSPORT, NOTIFICATION_TRANSPORT and NOTIFIER\nYes, that\u0027s right. These values decide where rpc can transport message. If rpc client itsself decides these values as your suggestion, versatility is decreased. (As if a http client that cannot specify addresses.)\nIn addition, there are a number of codes where rpc clients are implemented with similar policies. (tacker/conductor/conductorrpc/vnf_lcm_rpc.py, vnfpkgmrpc.py)\nIs only VnfLcmRpcApiV2 exceptionally changed?","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"7b6196d98a5d6ab6f60574a2a06d7373e253beef","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7b614dcb_f871c5d8","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"ebcc506f_5d8f6094","updated":"2022-12-01 08:53:26.000000000","message":"I\u0027m sorry I didn\u0027t explain it enough. In other words, rpc.init() is a initialization of \"rpc service\", VnfLcmRpcApiV2() is a initialization of \"rpc client\". Multiple rpc clients can be created. However, rpc service must be create only once in a process. So VnfLcmRpcApiV2 should not include rpc.init().","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":35016,"name":"Koji Shimizu","email":"shimizu.koji@fujitsu.com","username":"shimizu-koji"},"change_message_id":"125654143ae0744b974afbcee89f7ce89b2d11ce","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"684b3172_1b683b0c","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"ef40ddeb_a9be3323","updated":"2022-12-06 08:21:51.000000000","message":"Thank you for your comment.\n\n\"rpc service\" is a function of oslo_messaging. (https://docs.openstack.org/oslo.messaging/latest/reference/server.html)\nand \"rpc client\" is also a function of oslo_messaging.\n(https://docs.openstack.org/oslo.messaging/latest/reference/rpcclient.html)\n\nVnfLcmRpcApiV2 is used for controlling rpc client.\nrpc.init() is used for controlling rpc server.\nI\u0027d like to avoid mixing them.\n\nthe difference between them is its lifecycle.\n\nthe lifecycle of rpc server is\n1-1. start process\n1-2. start rpc server on the process\n1-3. rpc service is enabled until the end of process.\n\nthe lifecycle of rpc client is\n2-1. create oslo_messaging.RPCClient when process need to send RPC\n2-2. send RCP.\n2-3. delete RPCClient.\n2-4. re-create oslo_messaging.RPCClient when process need to send another RPC\n2-5. send RCP.\n2-6. delete RPCClient.\n\nIf they are mixed, I can\u0027t keep each lifecycle.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"28e5536da923205157ca74348252ac4bb3ade407","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.csar_dir \u003d csar_dir"},{"line_number":41,"context_line":"        auth_handle \u003d http_client.NoAuthHandle()"},{"line_number":42,"context_line":"        self.client \u003d http_client.HttpClient(auth_handle)"},{"line_number":43,"context_line":"        CONF(project\u003d\u0027tacker\u0027)"},{"line_number":44,"context_line":"        rpc.init(CONF)"},{"line_number":45,"context_line":"        self.rpc \u003d conductor_rpc_v2.VnfLcmRpcApiV2()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def make_output_dict(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7c88a352_94a19a49","line":44,"range":{"start_line":43,"start_character":8,"end_line":44,"end_character":22},"in_reply_to":"f838196e_b4ca39a4","updated":"2022-12-14 07:55:14.000000000","message":"I don\u0027t strongly think we should rpc init in VnfLcmRpcV2, but not clear where it should be done.\n\n\u003e I would like to know why you want to move these lines.\nIt\u0027s just I thought it\u0027s no need to add rpc.init() in all mgmt driver if it\u0027s added into VnfLcmRpcV2. No other reasons. So, you can surely reject my comment if there is a reason to do so. It\u0027s welcome for me.\n\nFor (1), I\u0027m not sure where the race condition is happened. If such a case can be happened, we should add some lock mechanism to avoid the race as you mentioned even if we implement rpc.init in . correct?\n\nFor (2), I think it cannot be a strong reason so that because we don\u0027t have any agreement what is high level or low level for CONF among our team.\n\nCould I confirm again where rpc.init() should be called for rpc server? Or don\u0027t we need to discuss about that anymore although I don\u0027t know why the reason? Thanks.","commit_id":"86e160b50c72bf6e848f77fc1bc1a3627794241c"}]}
