)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"53c1091cbcc0d5373cd62c9b7636745dce7ef4e4","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Yi Feng \u003cfengyi@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-12-03 12:06:05 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix some bugs related Kubernetes MgmtDriver function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"After the X version was released, regression tests were performed"},{"line_number":10,"context_line":"on all functions of MgmtDriver. This patch is used to fix"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"b11f8309_e0838fbe","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":52},"updated":"2021-12-09 13:34:02.000000000","message":"Could you make the first line 50 characters or less?\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"a4b6a998c7ee7617508e68ec629cc6b93a94c840","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yi Feng \u003cfengyi@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-12-03 12:06:05 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix some bugs related Kubernetes MgmtDriver function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"After the X version was released, regression tests were performed"},{"line_number":10,"context_line":"on all functions of MgmtDriver. This patch is used to fix"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"18aae3a5_2d9351cc","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":52},"in_reply_to":"a41ca57a_2d06f39c","updated":"2021-12-23 07:04:39.000000000","message":"Ack","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"c2d9cc55ac06e934481bc1c80d9a29e6308151d9","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Yi Feng \u003cfengyi@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-12-03 12:06:05 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix some bugs related Kubernetes MgmtDriver function"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"After the X version was released, regression tests were performed"},{"line_number":10,"context_line":"on all functions of MgmtDriver. This patch is used to fix"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"a41ca57a_2d06f39c","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":52},"in_reply_to":"b11f8309_e0838fbe","updated":"2021-12-10 02:14:01.000000000","message":"I have fixed it in PS 4.","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"53c1091cbcc0d5373cd62c9b7636745dce7ef4e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"95f51a25_65de76ad","updated":"2021-12-09 13:34:02.000000000","message":"Thanks for your patch, could you confirm my comments?","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"b0b862a565f4be0cbb196606912bc454107d78c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8e20acd2_f760f057","updated":"2021-12-06 07:08:57.000000000","message":"recheck","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"7985ee12a6eab9e444bba45b357391992a0561fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"98b2ccb8_0888b1df","updated":"2021-12-10 03:01:55.000000000","message":"Thank you for your work. I added some note to your patch, please kindly find out them.","commit_id":"474e9614a565aff0ca9340ee69b612f24996eec5"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"c2d9cc55ac06e934481bc1c80d9a29e6308151d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1da06934_ce9e681f","updated":"2021-12-10 02:14:01.000000000","message":"To Ayumu Ueha:\nThank you for your comments. I have fixed these bugs in PS 4. \nPlease kindly check them again.","commit_id":"474e9614a565aff0ca9340ee69b612f24996eec5"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"5c95c32fab6d5346e8b4cd5844a47e7f23abcee1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ec009850_037b8e78","updated":"2021-12-23 04:37:07.000000000","message":"Thank you for you rework. LGTM!","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"a4b6a998c7ee7617508e68ec629cc6b93a94c840","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"77ff1bc6_7dbc54ca","updated":"2021-12-23 07:04:39.000000000","message":"Thanks for your rework, LGTM.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"0f115b2d749693710fe34e283e7d2fd8a47e188c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c772ea29_e231faf1","updated":"2021-12-23 00:57:04.000000000","message":"To Masaki UENO:\nThank you for your comments. I have fixed them in PS5, please kindly check them again.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"e15aeb0e377ea2d962b7ba2c4a1076a9e525bbca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0c62473a_161b326c","updated":"2021-12-27 05:46:11.000000000","message":"To Yasufumi Ogawa:\n   Thank you for your comments. I have fixed them in PS6. Please kindly check them again.","commit_id":"b2b9e2430a5b1926aa5a3dc19a59e7487d734f46"}],"samples/mgmt_driver/kubernetes_mgmt.py":[{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"53c1091cbcc0d5373cd62c9b7636745dce7ef4e4","unresolved":true,"context_lines":[{"line_number":308,"context_line":"                    stack_id\u003dstack_id, resource_name\u003dlowest_res_name)"},{"line_number":309,"context_line":"                srv_groups \u003d worker_node_res_info.attributes.get("},{"line_number":310,"context_line":"                    \u0027server_groups\u0027)"},{"line_number":311,"context_line":"                srv_grp_phy_res_id \u003d \\"},{"line_number":312,"context_line":"                    set(srv_grp_phy_res_id_list) \u0026 set(srv_groups)"},{"line_number":313,"context_line":"                if srv_groups and srv_grp_phy_res_id:"},{"line_number":314,"context_line":"                    host_compute \u003d worker_node_res_info.attributes.get("}],"source_content_type":"text/x-python","patch_set":3,"id":"62407ed6_63d98f05","line":311,"range":{"start_line":311,"start_character":37,"end_line":311,"end_character":38},"updated":"2021-12-09 13:34:02.000000000","message":"Could you change to not use a line break with \\?","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"c2d9cc55ac06e934481bc1c80d9a29e6308151d9","unresolved":true,"context_lines":[{"line_number":308,"context_line":"                    stack_id\u003dstack_id, resource_name\u003dlowest_res_name)"},{"line_number":309,"context_line":"                srv_groups \u003d worker_node_res_info.attributes.get("},{"line_number":310,"context_line":"                    \u0027server_groups\u0027)"},{"line_number":311,"context_line":"                srv_grp_phy_res_id \u003d \\"},{"line_number":312,"context_line":"                    set(srv_grp_phy_res_id_list) \u0026 set(srv_groups)"},{"line_number":313,"context_line":"                if srv_groups and srv_grp_phy_res_id:"},{"line_number":314,"context_line":"                    host_compute \u003d worker_node_res_info.attributes.get("}],"source_content_type":"text/x-python","patch_set":3,"id":"8ac9eed8_612c35c2","line":311,"range":{"start_line":311,"start_character":37,"end_line":311,"end_character":38},"in_reply_to":"62407ed6_63d98f05","updated":"2021-12-10 02:14:01.000000000","message":"I have fixed it in PS 4","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"a4b6a998c7ee7617508e68ec629cc6b93a94c840","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                    stack_id\u003dstack_id, resource_name\u003dlowest_res_name)"},{"line_number":309,"context_line":"                srv_groups \u003d worker_node_res_info.attributes.get("},{"line_number":310,"context_line":"                    \u0027server_groups\u0027)"},{"line_number":311,"context_line":"                srv_grp_phy_res_id \u003d \\"},{"line_number":312,"context_line":"                    set(srv_grp_phy_res_id_list) \u0026 set(srv_groups)"},{"line_number":313,"context_line":"                if srv_groups and srv_grp_phy_res_id:"},{"line_number":314,"context_line":"                    host_compute \u003d worker_node_res_info.attributes.get("}],"source_content_type":"text/x-python","patch_set":3,"id":"6d32d30d_cd14054b","line":311,"range":{"start_line":311,"start_character":37,"end_line":311,"end_character":38},"in_reply_to":"8ac9eed8_612c35c2","updated":"2021-12-23 07:04:39.000000000","message":"Ack","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"53c1091cbcc0d5373cd62c9b7636745dce7ef4e4","unresolved":true,"context_lines":[{"line_number":310,"context_line":"                    \u0027server_groups\u0027)"},{"line_number":311,"context_line":"                srv_grp_phy_res_id \u003d \\"},{"line_number":312,"context_line":"                    set(srv_grp_phy_res_id_list) \u0026 set(srv_groups)"},{"line_number":313,"context_line":"                if srv_groups and srv_grp_phy_res_id:"},{"line_number":314,"context_line":"                    host_compute \u003d worker_node_res_info.attributes.get("},{"line_number":315,"context_line":"                        \u0027OS-EXT-SRV-ATTR:host\u0027)"},{"line_number":316,"context_line":"                    if self.SET_ZONE_ID_FLAG:"}],"source_content_type":"text/x-python","patch_set":3,"id":"f9b2508d_9812c34c","line":313,"range":{"start_line":313,"start_character":16,"end_line":313,"end_character":53},"updated":"2021-12-09 13:34:02.000000000","message":"As it have taken the intersection above, I think it is OK to just \"if srv_grp_phy_res_id:\"?","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"a4b6a998c7ee7617508e68ec629cc6b93a94c840","unresolved":false,"context_lines":[{"line_number":310,"context_line":"                    \u0027server_groups\u0027)"},{"line_number":311,"context_line":"                srv_grp_phy_res_id \u003d \\"},{"line_number":312,"context_line":"                    set(srv_grp_phy_res_id_list) \u0026 set(srv_groups)"},{"line_number":313,"context_line":"                if srv_groups and srv_grp_phy_res_id:"},{"line_number":314,"context_line":"                    host_compute \u003d worker_node_res_info.attributes.get("},{"line_number":315,"context_line":"                        \u0027OS-EXT-SRV-ATTR:host\u0027)"},{"line_number":316,"context_line":"                    if self.SET_ZONE_ID_FLAG:"}],"source_content_type":"text/x-python","patch_set":3,"id":"cb561455_661d65df","line":313,"range":{"start_line":313,"start_character":16,"end_line":313,"end_character":53},"in_reply_to":"c698f0ab_1af61893","updated":"2021-12-23 07:04:39.000000000","message":"Ack","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"c2d9cc55ac06e934481bc1c80d9a29e6308151d9","unresolved":true,"context_lines":[{"line_number":310,"context_line":"                    \u0027server_groups\u0027)"},{"line_number":311,"context_line":"                srv_grp_phy_res_id \u003d \\"},{"line_number":312,"context_line":"                    set(srv_grp_phy_res_id_list) \u0026 set(srv_groups)"},{"line_number":313,"context_line":"                if srv_groups and srv_grp_phy_res_id:"},{"line_number":314,"context_line":"                    host_compute \u003d worker_node_res_info.attributes.get("},{"line_number":315,"context_line":"                        \u0027OS-EXT-SRV-ATTR:host\u0027)"},{"line_number":316,"context_line":"                    if self.SET_ZONE_ID_FLAG:"}],"source_content_type":"text/x-python","patch_set":3,"id":"c698f0ab_1af61893","line":313,"range":{"start_line":313,"start_character":16,"end_line":313,"end_character":53},"in_reply_to":"f9b2508d_9812c34c","updated":"2021-12-10 02:14:01.000000000","message":"I have fixed it in PS 4","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"53c1091cbcc0d5373cd62c9b7636745dce7ef4e4","unresolved":true,"context_lines":[{"line_number":2153,"context_line":"        storage_server_param \u003d vnf_instance.instantiated_vnf_info \\"},{"line_number":2154,"context_line":"            .additional_params.get(\u0027k8s_cluster_installation_param\u0027)\\"},{"line_number":2155,"context_line":"            .get(\u0027storage_server\u0027, {})"},{"line_number":2156,"context_line":"        target_ss_cp_name \u003d storage_server_param.get(\u0027nic_cp_name\u0027, None)"},{"line_number":2157,"context_line":"        for vnfc_instance_id in heal_vnf_request.vnfc_instance_id:"},{"line_number":2158,"context_line":"            instantiated_vnf_info \u003d vnf_instance.instantiated_vnf_info"},{"line_number":2159,"context_line":"            vnfc_resource_info \u003d instantiated_vnf_info.vnfc_resource_info"}],"source_content_type":"text/x-python","patch_set":3,"id":"3bf1c6d8_5c17b526","line":2156,"range":{"start_line":2156,"start_character":28,"end_line":2156,"end_character":73},"updated":"2021-12-09 13:34:02.000000000","message":"`nic_cp_name` patameter is seems not exist in `additionalParams.k8s_cluster_installation_param.storage_server`.\nhttps://review.opendev.org/c/openstack/tacker/+/811937/3/doc/source/user/mgmt_driver_deploy_k8s_pv_usage_guide.rst#188\n\nThe patch has not been merged yet, do you need to change the document?","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"c2d9cc55ac06e934481bc1c80d9a29e6308151d9","unresolved":true,"context_lines":[{"line_number":2153,"context_line":"        storage_server_param \u003d vnf_instance.instantiated_vnf_info \\"},{"line_number":2154,"context_line":"            .additional_params.get(\u0027k8s_cluster_installation_param\u0027)\\"},{"line_number":2155,"context_line":"            .get(\u0027storage_server\u0027, {})"},{"line_number":2156,"context_line":"        target_ss_cp_name \u003d storage_server_param.get(\u0027nic_cp_name\u0027, None)"},{"line_number":2157,"context_line":"        for vnfc_instance_id in heal_vnf_request.vnfc_instance_id:"},{"line_number":2158,"context_line":"            instantiated_vnf_info \u003d vnf_instance.instantiated_vnf_info"},{"line_number":2159,"context_line":"            vnfc_resource_info \u003d instantiated_vnf_info.vnfc_resource_info"}],"source_content_type":"text/x-python","patch_set":3,"id":"e9f5df90_33570e1b","line":2156,"range":{"start_line":2156,"start_character":28,"end_line":2156,"end_character":73},"in_reply_to":"3bf1c6d8_5c17b526","updated":"2021-12-10 02:14:01.000000000","message":"Yes. I have uploaded a new patch to change the document.","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"a4b6a998c7ee7617508e68ec629cc6b93a94c840","unresolved":false,"context_lines":[{"line_number":2153,"context_line":"        storage_server_param \u003d vnf_instance.instantiated_vnf_info \\"},{"line_number":2154,"context_line":"            .additional_params.get(\u0027k8s_cluster_installation_param\u0027)\\"},{"line_number":2155,"context_line":"            .get(\u0027storage_server\u0027, {})"},{"line_number":2156,"context_line":"        target_ss_cp_name \u003d storage_server_param.get(\u0027nic_cp_name\u0027, None)"},{"line_number":2157,"context_line":"        for vnfc_instance_id in heal_vnf_request.vnfc_instance_id:"},{"line_number":2158,"context_line":"            instantiated_vnf_info \u003d vnf_instance.instantiated_vnf_info"},{"line_number":2159,"context_line":"            vnfc_resource_info \u003d instantiated_vnf_info.vnfc_resource_info"}],"source_content_type":"text/x-python","patch_set":3,"id":"d95d6156_4bb77930","line":2156,"range":{"start_line":2156,"start_character":28,"end_line":2156,"end_character":73},"in_reply_to":"e9f5df90_33570e1b","updated":"2021-12-23 07:04:39.000000000","message":"Ack","commit_id":"fbfae97dea148d23c91a6ee52ba38546aa3a1c48"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"7985ee12a6eab9e444bba45b357391992a0561fe","unresolved":true,"context_lines":[{"line_number":651,"context_line":"                        self._execute_command("},{"line_number":652,"context_line":"                            commander, ssh_command,"},{"line_number":653,"context_line":"                            PR_CMD_TIMEOUT, \u0027common\u0027, 0)"},{"line_number":654,"context_line":"                    transport.close()"},{"line_number":655,"context_line":"                    break"},{"line_number":656,"context_line":"                except paramiko.SSHException as e:"},{"line_number":657,"context_line":"                    LOG.debug(e)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c9c00f7c_39bcb591","line":654,"updated":"2021-12-10 03:01:55.000000000","message":"Why don\u0027t you move `transport.close()` to `finally` clause? If `_execute_command()` raises exceptions, will `transport` object be correctly closed?","commit_id":"474e9614a565aff0ca9340ee69b612f24996eec5"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"5c95c32fab6d5346e8b4cd5844a47e7f23abcee1","unresolved":false,"context_lines":[{"line_number":651,"context_line":"                        self._execute_command("},{"line_number":652,"context_line":"                            commander, ssh_command,"},{"line_number":653,"context_line":"                            PR_CMD_TIMEOUT, \u0027common\u0027, 0)"},{"line_number":654,"context_line":"                    transport.close()"},{"line_number":655,"context_line":"                    break"},{"line_number":656,"context_line":"                except paramiko.SSHException as e:"},{"line_number":657,"context_line":"                    LOG.debug(e)"}],"source_content_type":"text/x-python","patch_set":4,"id":"bc02cd30_83c5ad0d","line":654,"in_reply_to":"99b2bf98_14338d3d","updated":"2021-12-23 04:37:07.000000000","message":"Done","commit_id":"474e9614a565aff0ca9340ee69b612f24996eec5"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"0f115b2d749693710fe34e283e7d2fd8a47e188c","unresolved":true,"context_lines":[{"line_number":651,"context_line":"                        self._execute_command("},{"line_number":652,"context_line":"                            commander, ssh_command,"},{"line_number":653,"context_line":"                            PR_CMD_TIMEOUT, \u0027common\u0027, 0)"},{"line_number":654,"context_line":"                    transport.close()"},{"line_number":655,"context_line":"                    break"},{"line_number":656,"context_line":"                except paramiko.SSHException as e:"},{"line_number":657,"context_line":"                    LOG.debug(e)"}],"source_content_type":"text/x-python","patch_set":4,"id":"99b2bf98_14338d3d","line":654,"in_reply_to":"c9c00f7c_39bcb591","updated":"2021-12-23 00:57:04.000000000","message":"I have fixed it in PS 5.","commit_id":"474e9614a565aff0ca9340ee69b612f24996eec5"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"7985ee12a6eab9e444bba45b357391992a0561fe","unresolved":true,"context_lines":[{"line_number":630,"context_line":"        if cert_file_list:"},{"line_number":631,"context_line":"            retry \u003d 4"},{"line_number":632,"context_line":"            while retry \u003e 0:"},{"line_number":633,"context_line":"                try:"},{"line_number":634,"context_line":"                    transport \u003d paramiko.Transport(node_ip, 22)"},{"line_number":635,"context_line":"                    transport.connect("},{"line_number":636,"context_line":"                        username\u003dnode_username, password\u003dnode_password)"},{"line_number":637,"context_line":"                    sftp_client \u003d paramiko.SFTPClient.from_transport("},{"line_number":638,"context_line":"                        transport)"},{"line_number":639,"context_line":"                    for cert_item in cert_file_list:"},{"line_number":640,"context_line":"                        local_file_path \u003d cert_item[0]"},{"line_number":641,"context_line":"                        remote_tmp_path \u003d cert_item[1]"},{"line_number":642,"context_line":"                        remote_dir_path \u003d cert_item[2]"},{"line_number":643,"context_line":"                        remote_file_path \u003d cert_item[3]"},{"line_number":644,"context_line":"                        # send cert file to tmp directory"},{"line_number":645,"context_line":"                        sftp_client.put(local_file_path, remote_tmp_path)"},{"line_number":646,"context_line":"                        # copy under /etc/docker/certs.d/\u003cserver\u003e"},{"line_number":647,"context_line":"                        ssh_command \u003d (\"sudo mkdir -p {} \u0026\u0026 \""},{"line_number":648,"context_line":"                            \"sudo cp {} {} \u0026\u0026 sudo rm -f {}\".format("},{"line_number":649,"context_line":"                                remote_dir_path, remote_tmp_path,"},{"line_number":650,"context_line":"                                remote_file_path, remote_tmp_path))"},{"line_number":651,"context_line":"                        self._execute_command("},{"line_number":652,"context_line":"                            commander, ssh_command,"},{"line_number":653,"context_line":"                            PR_CMD_TIMEOUT, \u0027common\u0027, 0)"},{"line_number":654,"context_line":"                    transport.close()"},{"line_number":655,"context_line":"                    break"},{"line_number":656,"context_line":"                except paramiko.SSHException as e:"},{"line_number":657,"context_line":"                    LOG.debug(e)"},{"line_number":658,"context_line":"                    retry -\u003d 1"},{"line_number":659,"context_line":"                    if retry \u003d\u003d 0:"},{"line_number":660,"context_line":"                        LOG.error(e)"},{"line_number":661,"context_line":"                        commander.close_session()"},{"line_number":662,"context_line":"                        raise paramiko.SSHException()"},{"line_number":663,"context_line":"                    time.sleep(SERVER_WAIT_COMPLETE_TIME)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        # connect to private registries"},{"line_number":666,"context_line":"        for pr_info in pr_connection_info:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9090e4dd_5c442569","line":663,"range":{"start_line":633,"start_character":0,"end_line":663,"end_character":57},"updated":"2021-12-10 03:01:55.000000000","message":"Not directly related to the update in this patch, but I have one question; Should this `try-except` clause consider `exceptions.MgmtDriverRemoteCommandError` generated in `_execute_command` method?\n\n`try` clause contains those two processes that can raise exceptions:\n- Establishing connections with paramiko module\n- Command execution with `_execute_command()`\n\nError on 1st process seems to be correctly handled in `except` clause, but I think 2nd one should be also handled in `except` clause.","commit_id":"474e9614a565aff0ca9340ee69b612f24996eec5"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"0f115b2d749693710fe34e283e7d2fd8a47e188c","unresolved":true,"context_lines":[{"line_number":630,"context_line":"        if cert_file_list:"},{"line_number":631,"context_line":"            retry \u003d 4"},{"line_number":632,"context_line":"            while retry \u003e 0:"},{"line_number":633,"context_line":"                try:"},{"line_number":634,"context_line":"                    transport \u003d paramiko.Transport(node_ip, 22)"},{"line_number":635,"context_line":"                    transport.connect("},{"line_number":636,"context_line":"                        username\u003dnode_username, password\u003dnode_password)"},{"line_number":637,"context_line":"                    sftp_client \u003d paramiko.SFTPClient.from_transport("},{"line_number":638,"context_line":"                        transport)"},{"line_number":639,"context_line":"                    for cert_item in cert_file_list:"},{"line_number":640,"context_line":"                        local_file_path \u003d cert_item[0]"},{"line_number":641,"context_line":"                        remote_tmp_path \u003d cert_item[1]"},{"line_number":642,"context_line":"                        remote_dir_path \u003d cert_item[2]"},{"line_number":643,"context_line":"                        remote_file_path \u003d cert_item[3]"},{"line_number":644,"context_line":"                        # send cert file to tmp directory"},{"line_number":645,"context_line":"                        sftp_client.put(local_file_path, remote_tmp_path)"},{"line_number":646,"context_line":"                        # copy under /etc/docker/certs.d/\u003cserver\u003e"},{"line_number":647,"context_line":"                        ssh_command \u003d (\"sudo mkdir -p {} \u0026\u0026 \""},{"line_number":648,"context_line":"                            \"sudo cp {} {} \u0026\u0026 sudo rm -f {}\".format("},{"line_number":649,"context_line":"                                remote_dir_path, remote_tmp_path,"},{"line_number":650,"context_line":"                                remote_file_path, remote_tmp_path))"},{"line_number":651,"context_line":"                        self._execute_command("},{"line_number":652,"context_line":"                            commander, ssh_command,"},{"line_number":653,"context_line":"                            PR_CMD_TIMEOUT, \u0027common\u0027, 0)"},{"line_number":654,"context_line":"                    transport.close()"},{"line_number":655,"context_line":"                    break"},{"line_number":656,"context_line":"                except paramiko.SSHException as e:"},{"line_number":657,"context_line":"                    LOG.debug(e)"},{"line_number":658,"context_line":"                    retry -\u003d 1"},{"line_number":659,"context_line":"                    if retry \u003d\u003d 0:"},{"line_number":660,"context_line":"                        LOG.error(e)"},{"line_number":661,"context_line":"                        commander.close_session()"},{"line_number":662,"context_line":"                        raise paramiko.SSHException()"},{"line_number":663,"context_line":"                    time.sleep(SERVER_WAIT_COMPLETE_TIME)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        # connect to private registries"},{"line_number":666,"context_line":"        for pr_info in pr_connection_info:"}],"source_content_type":"text/x-python","patch_set":4,"id":"f64f8d20_42bf343f","line":663,"range":{"start_line":633,"start_character":0,"end_line":663,"end_character":57},"in_reply_to":"9090e4dd_5c442569","updated":"2021-12-23 00:57:04.000000000","message":"Yes. This is a mistake. I have fixed this `except` process in PS 5.","commit_id":"474e9614a565aff0ca9340ee69b612f24996eec5"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"5c95c32fab6d5346e8b4cd5844a47e7f23abcee1","unresolved":false,"context_lines":[{"line_number":630,"context_line":"        if cert_file_list:"},{"line_number":631,"context_line":"            retry \u003d 4"},{"line_number":632,"context_line":"            while retry \u003e 0:"},{"line_number":633,"context_line":"                try:"},{"line_number":634,"context_line":"                    transport \u003d paramiko.Transport(node_ip, 22)"},{"line_number":635,"context_line":"                    transport.connect("},{"line_number":636,"context_line":"                        username\u003dnode_username, password\u003dnode_password)"},{"line_number":637,"context_line":"                    sftp_client \u003d paramiko.SFTPClient.from_transport("},{"line_number":638,"context_line":"                        transport)"},{"line_number":639,"context_line":"                    for cert_item in cert_file_list:"},{"line_number":640,"context_line":"                        local_file_path \u003d cert_item[0]"},{"line_number":641,"context_line":"                        remote_tmp_path \u003d cert_item[1]"},{"line_number":642,"context_line":"                        remote_dir_path \u003d cert_item[2]"},{"line_number":643,"context_line":"                        remote_file_path \u003d cert_item[3]"},{"line_number":644,"context_line":"                        # send cert file to tmp directory"},{"line_number":645,"context_line":"                        sftp_client.put(local_file_path, remote_tmp_path)"},{"line_number":646,"context_line":"                        # copy under /etc/docker/certs.d/\u003cserver\u003e"},{"line_number":647,"context_line":"                        ssh_command \u003d (\"sudo mkdir -p {} \u0026\u0026 \""},{"line_number":648,"context_line":"                            \"sudo cp {} {} \u0026\u0026 sudo rm -f {}\".format("},{"line_number":649,"context_line":"                                remote_dir_path, remote_tmp_path,"},{"line_number":650,"context_line":"                                remote_file_path, remote_tmp_path))"},{"line_number":651,"context_line":"                        self._execute_command("},{"line_number":652,"context_line":"                            commander, ssh_command,"},{"line_number":653,"context_line":"                            PR_CMD_TIMEOUT, \u0027common\u0027, 0)"},{"line_number":654,"context_line":"                    transport.close()"},{"line_number":655,"context_line":"                    break"},{"line_number":656,"context_line":"                except paramiko.SSHException as e:"},{"line_number":657,"context_line":"                    LOG.debug(e)"},{"line_number":658,"context_line":"                    retry -\u003d 1"},{"line_number":659,"context_line":"                    if retry \u003d\u003d 0:"},{"line_number":660,"context_line":"                        LOG.error(e)"},{"line_number":661,"context_line":"                        commander.close_session()"},{"line_number":662,"context_line":"                        raise paramiko.SSHException()"},{"line_number":663,"context_line":"                    time.sleep(SERVER_WAIT_COMPLETE_TIME)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        # connect to private registries"},{"line_number":666,"context_line":"        for pr_info in pr_connection_info:"}],"source_content_type":"text/x-python","patch_set":4,"id":"41b116c0_4a26beb2","line":663,"range":{"start_line":633,"start_character":0,"end_line":663,"end_character":57},"in_reply_to":"f64f8d20_42bf343f","updated":"2021-12-23 04:37:07.000000000","message":"Done","commit_id":"474e9614a565aff0ca9340ee69b612f24996eec5"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"12ace710a487e50f5f8b16dc74d77cb76400f4ea","unresolved":true,"context_lines":[{"line_number":2723,"context_line":"        )"},{"line_number":2724,"context_line":"        ssh_ip_address \u003d resource_info.attributes.get(\u0027floating_ip_address\u0027)"},{"line_number":2725,"context_line":"        if not ssh_ip_address:"},{"line_number":2726,"context_line":"            ssh_ip_address \u003d heatclient.resource_get("},{"line_number":2727,"context_line":"                resource_info.physical_resource_id,"},{"line_number":2728,"context_line":"                ssh_cp_name).attributes.get("},{"line_number":2729,"context_line":"                \u0027fixed_ips\u0027)[0].get(\u0027ip_address\u0027)"},{"line_number":2730,"context_line":"        if not ssh_ip_address:"},{"line_number":2731,"context_line":"            raise exceptions.MgmtDriverOtherError("},{"line_number":2732,"context_line":"                error_message\u003d\"Failed to get IP address for \""}],"source_content_type":"text/x-python","patch_set":5,"id":"e225a3ac_688321e5","line":2729,"range":{"start_line":2726,"start_character":0,"end_line":2729,"end_character":49},"updated":"2021-12-23 08:41:31.000000000","message":"Such a method chaining can be failed if a mid value retrieved with get() is None. Or is there any `try` clause calling this method to catch the failure?","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"e15aeb0e377ea2d962b7ba2c4a1076a9e525bbca","unresolved":true,"context_lines":[{"line_number":2723,"context_line":"        )"},{"line_number":2724,"context_line":"        ssh_ip_address \u003d resource_info.attributes.get(\u0027floating_ip_address\u0027)"},{"line_number":2725,"context_line":"        if not ssh_ip_address:"},{"line_number":2726,"context_line":"            ssh_ip_address \u003d heatclient.resource_get("},{"line_number":2727,"context_line":"                resource_info.physical_resource_id,"},{"line_number":2728,"context_line":"                ssh_cp_name).attributes.get("},{"line_number":2729,"context_line":"                \u0027fixed_ips\u0027)[0].get(\u0027ip_address\u0027)"},{"line_number":2730,"context_line":"        if not ssh_ip_address:"},{"line_number":2731,"context_line":"            raise exceptions.MgmtDriverOtherError("},{"line_number":2732,"context_line":"                error_message\u003d\"Failed to get IP address for \""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba505bad_1aec8dc1","line":2729,"range":{"start_line":2726,"start_character":0,"end_line":2729,"end_character":49},"in_reply_to":"e225a3ac_688321e5","updated":"2021-12-27 05:46:11.000000000","message":"I have fixed it like private_registry_mgmt.py‘s #81line comment in PS 6. So I didn\u0027t add `try` clause.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"}],"samples/mgmt_driver/private_registry_mgmt.py":[{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"12ace710a487e50f5f8b16dc74d77cb76400f4ea","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        stack_id \u003d vnf_instance.instantiated_vnf_info.instance_id"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        # get IP address from heat"},{"line_number":70,"context_line":"        cp_ip_address \u003d \u0027\u0027"},{"line_number":71,"context_line":"        resource_info \u003d heatclient.resources.get("},{"line_number":72,"context_line":"            stack_id\u003dstack_id, resource_name\u003dcp_name)"},{"line_number":73,"context_line":"        if resource_info.attributes.get(\u0027floating_ip_address\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fdd67fa_1938e088","line":70,"updated":"2021-12-23 08:41:31.000000000","message":"No need here. It can be defined as below instead.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"e15aeb0e377ea2d962b7ba2c4a1076a9e525bbca","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        stack_id \u003d vnf_instance.instantiated_vnf_info.instance_id"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        # get IP address from heat"},{"line_number":70,"context_line":"        cp_ip_address \u003d \u0027\u0027"},{"line_number":71,"context_line":"        resource_info \u003d heatclient.resources.get("},{"line_number":72,"context_line":"            stack_id\u003dstack_id, resource_name\u003dcp_name)"},{"line_number":73,"context_line":"        if resource_info.attributes.get(\u0027floating_ip_address\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"38e4fca5_3206dc59","line":70,"in_reply_to":"3fdd67fa_1938e088","updated":"2021-12-27 05:46:11.000000000","message":"I have deleted it.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"12ace710a487e50f5f8b16dc74d77cb76400f4ea","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        cp_ip_address \u003d \u0027\u0027"},{"line_number":71,"context_line":"        resource_info \u003d heatclient.resources.get("},{"line_number":72,"context_line":"            stack_id\u003dstack_id, resource_name\u003dcp_name)"},{"line_number":73,"context_line":"        if resource_info.attributes.get(\u0027floating_ip_address\u0027):"},{"line_number":74,"context_line":"            cp_ip_address \u003d resource_info.attributes.get("},{"line_number":75,"context_line":"                \u0027floating_ip_address\u0027)"},{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            fixed_ips \u003d resource_info.attributes.get("},{"line_number":78,"context_line":"                \u0027fixed_ips\u0027)"},{"line_number":79,"context_line":"            if fixed_ips:"},{"line_number":80,"context_line":"                cp_ip_address \u003d resource_info.attributes.get("},{"line_number":81,"context_line":"                    \u0027fixed_ips\u0027)[0].get(\"ip_address\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # check result"},{"line_number":84,"context_line":"        if not cp_ip_address:"}],"source_content_type":"text/x-python","patch_set":5,"id":"8961030a_4b3f64da","line":81,"range":{"start_line":73,"start_character":8,"end_line":81,"end_character":53},"updated":"2021-12-23 08:41:31.000000000","message":"It looks a little bit redundant. Why don\u0027t you revise like as below?\n\n```\ncp_ip_address \u003d resource_info.attributes.get(\u0027floating_ip_address\u0027)\nif cp_ip_address is None and resource_info.attributes.get(\u0027fixed_ips\u0027):\n    cp_ip_address \u003d resource_info.attributes.get(\n        \u0027fixed_ips\u0027)[0].get(\"ip_address\")\n```","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"e15aeb0e377ea2d962b7ba2c4a1076a9e525bbca","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        cp_ip_address \u003d \u0027\u0027"},{"line_number":71,"context_line":"        resource_info \u003d heatclient.resources.get("},{"line_number":72,"context_line":"            stack_id\u003dstack_id, resource_name\u003dcp_name)"},{"line_number":73,"context_line":"        if resource_info.attributes.get(\u0027floating_ip_address\u0027):"},{"line_number":74,"context_line":"            cp_ip_address \u003d resource_info.attributes.get("},{"line_number":75,"context_line":"                \u0027floating_ip_address\u0027)"},{"line_number":76,"context_line":"        else:"},{"line_number":77,"context_line":"            fixed_ips \u003d resource_info.attributes.get("},{"line_number":78,"context_line":"                \u0027fixed_ips\u0027)"},{"line_number":79,"context_line":"            if fixed_ips:"},{"line_number":80,"context_line":"                cp_ip_address \u003d resource_info.attributes.get("},{"line_number":81,"context_line":"                    \u0027fixed_ips\u0027)[0].get(\"ip_address\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # check result"},{"line_number":84,"context_line":"        if not cp_ip_address:"}],"source_content_type":"text/x-python","patch_set":5,"id":"c42d890e_a39b27ad","line":81,"range":{"start_line":73,"start_character":8,"end_line":81,"end_character":53},"in_reply_to":"8961030a_4b3f64da","updated":"2021-12-27 05:46:11.000000000","message":"I have fixed it.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"12ace710a487e50f5f8b16dc74d77cb76400f4ea","unresolved":true,"context_lines":[{"line_number":80,"context_line":"                cp_ip_address \u003d resource_info.attributes.get("},{"line_number":81,"context_line":"                    \u0027fixed_ips\u0027)[0].get(\"ip_address\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # check result"},{"line_number":84,"context_line":"        if not cp_ip_address:"},{"line_number":85,"context_line":"            err_msg \u003d \"Failed to get IP address for Private registry VM\""},{"line_number":86,"context_line":"            LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"6c1915c0_d9549631","line":83,"updated":"2021-12-23 08:41:31.000000000","message":"What do you think to add checking the IP address is valid if `cp_ip_address` can be other than None? The checking can be done easily with builtin `ipaddress` library.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"e15aeb0e377ea2d962b7ba2c4a1076a9e525bbca","unresolved":true,"context_lines":[{"line_number":80,"context_line":"                cp_ip_address \u003d resource_info.attributes.get("},{"line_number":81,"context_line":"                    \u0027fixed_ips\u0027)[0].get(\"ip_address\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # check result"},{"line_number":84,"context_line":"        if not cp_ip_address:"},{"line_number":85,"context_line":"            err_msg \u003d \"Failed to get IP address for Private registry VM\""},{"line_number":86,"context_line":"            LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"268b7c3a_3be69446","line":83,"in_reply_to":"6c1915c0_d9549631","updated":"2021-12-27 05:46:11.000000000","message":"I have added this check.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"12ace710a487e50f5f8b16dc74d77cb76400f4ea","unresolved":true,"context_lines":[{"line_number":81,"context_line":"                    \u0027fixed_ips\u0027)[0].get(\"ip_address\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # check result"},{"line_number":84,"context_line":"        if not cp_ip_address:"},{"line_number":85,"context_line":"            err_msg \u003d \"Failed to get IP address for Private registry VM\""},{"line_number":86,"context_line":"            LOG.error(err_msg)"},{"line_number":87,"context_line":"            raise exceptions.MgmtDriverOtherError(error_message\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"cf20a7fb_6fccb7d4","line":84,"range":{"start_line":84,"start_character":11,"end_line":84,"end_character":28},"updated":"2021-12-23 08:41:31.000000000","message":"nit: better to check with `if a is None` explicitly if a is expected as None.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"e15aeb0e377ea2d962b7ba2c4a1076a9e525bbca","unresolved":true,"context_lines":[{"line_number":81,"context_line":"                    \u0027fixed_ips\u0027)[0].get(\"ip_address\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        # check result"},{"line_number":84,"context_line":"        if not cp_ip_address:"},{"line_number":85,"context_line":"            err_msg \u003d \"Failed to get IP address for Private registry VM\""},{"line_number":86,"context_line":"            LOG.error(err_msg)"},{"line_number":87,"context_line":"            raise exceptions.MgmtDriverOtherError(error_message\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"50fca081_7862f653","line":84,"range":{"start_line":84,"start_character":11,"end_line":84,"end_character":28},"in_reply_to":"cf20a7fb_6fccb7d4","updated":"2021-12-27 05:46:11.000000000","message":"I have fixed it in both this file and kubernetes_mgmt.py.","commit_id":"105c92d07288581244541bdbb61a0ab8fccf35b4"}]}
