)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"04f0daf24cb493370acc128313aa42a113a8f7de","unresolved":true,"context_lines":[{"line_number":19,"context_line":"openstack_driver."},{"line_number":20,"context_line":"Support instantiate/terminate/scale/heal function."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"It also includes a shell script that actual install kubernets"},{"line_number":23,"context_line":"cluster and configure environment to support Docker private registry"},{"line_number":24,"context_line":"on vm."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"63013945_7f9b001a","line":22,"range":{"start_line":22,"start_character":52,"end_line":22,"end_character":61},"updated":"2021-08-23 08:12:09.000000000","message":"Misspelled word, \"kubernetes\".","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"87e859ee6f34aa94c2629f1d90b8ecb2986caa49","unresolved":true,"context_lines":[{"line_number":19,"context_line":"openstack_driver."},{"line_number":20,"context_line":"Support instantiate/terminate/scale/heal function."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"It also includes a shell script that actual install kubernets"},{"line_number":23,"context_line":"cluster and configure environment to support Docker private registry"},{"line_number":24,"context_line":"on vm."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"509e81f3_ac000c69","line":22,"range":{"start_line":22,"start_character":52,"end_line":22,"end_character":61},"in_reply_to":"63013945_7f9b001a","updated":"2021-08-31 02:08:14.000000000","message":"Change \"kubernets\" to \"kubernetes\".","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"}],"releasenotes/notes/support-cir-k8s-cluster-d2596de8fed78f6c.yaml":[{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"cce46158227c777f6bb0bd4f0fc6d133d1d15648","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    before deploying Kubernetes cluster VNF, and deploy Kubernetes cluster"},{"line_number":8,"context_line":"    VNF that can support both the Docker private registry created above"},{"line_number":9,"context_line":"    and any others created outside of Tacker."},{"line_number":10,"context_line":"    "},{"line_number":11,"context_line":"    Instantiate operation for Kubernetes cluster with MgmtDriver:"},{"line_number":12,"context_line":"    MgmtDriver configures connections with Docker private registries on"},{"line_number":13,"context_line":"    newly created all Master/Worker VMs."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3a2006ea_e4aea8c2","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":4},"updated":"2021-08-23 07:34:56.000000000","message":"useless spaces here and below.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"}],"samples/mgmt_driver/kubernetes_mgmt.py":[{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"bfe89e82e65862724b7f53aacb4bf12be5a04838","unresolved":true,"context_lines":[{"line_number":114,"context_line":"                err \u003d result.get_stderr()"},{"line_number":115,"context_line":"                LOG.error(err)"},{"line_number":116,"context_line":"                raise exceptions.MgmtDriverRemoteCommandError(err_info\u003derr)"},{"line_number":117,"context_line":"        elif type \u003d\u003d \u0027docker_login\u0027:"},{"line_number":118,"context_line":"            ret1 \u003d result.get_stdout()"},{"line_number":119,"context_line":"            ret2 \u003d result.get_stderr()"},{"line_number":120,"context_line":"            return ret1, ret2"}],"source_content_type":"text/x-python","patch_set":3,"id":"445b7b80_51ce035c","line":117,"updated":"2021-08-20 07:10:59.000000000","message":"In my opinion, those strings such as `docker_login` should be defined as constants in KubernetesMgmtDriver class to clarify which type is accepted in the class.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"87e859ee6f34aa94c2629f1d90b8ecb2986caa49","unresolved":true,"context_lines":[{"line_number":114,"context_line":"                err \u003d result.get_stderr()"},{"line_number":115,"context_line":"                LOG.error(err)"},{"line_number":116,"context_line":"                raise exceptions.MgmtDriverRemoteCommandError(err_info\u003derr)"},{"line_number":117,"context_line":"        elif type \u003d\u003d \u0027docker_login\u0027:"},{"line_number":118,"context_line":"            ret1 \u003d result.get_stdout()"},{"line_number":119,"context_line":"            ret2 \u003d result.get_stderr()"},{"line_number":120,"context_line":"            return ret1, ret2"}],"source_content_type":"text/x-python","patch_set":3,"id":"5306a052_936ad31f","line":117,"in_reply_to":"445b7b80_51ce035c","updated":"2021-08-31 02:08:14.000000000","message":"Thank you for your comment. This is the existing code, maybe it is better to use constants, but it is not wrong to use a string. Out of respect for the code of others, please allow me to maintain the status quo.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":114,"context_line":"                err \u003d result.get_stderr()"},{"line_number":115,"context_line":"                LOG.error(err)"},{"line_number":116,"context_line":"                raise exceptions.MgmtDriverRemoteCommandError(err_info\u003derr)"},{"line_number":117,"context_line":"        elif type \u003d\u003d \u0027docker_login\u0027:"},{"line_number":118,"context_line":"            ret1 \u003d result.get_stdout()"},{"line_number":119,"context_line":"            ret2 \u003d result.get_stderr()"},{"line_number":120,"context_line":"            return ret1, ret2"}],"source_content_type":"text/x-python","patch_set":3,"id":"66e0bf33_d4a91f3d","line":117,"in_reply_to":"5306a052_936ad31f","updated":"2021-09-07 07:02:21.000000000","message":"I see.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"bfe89e82e65862724b7f53aacb4bf12be5a04838","unresolved":true,"context_lines":[{"line_number":573,"context_line":"            # add host to /etc/hosts"},{"line_number":574,"context_line":"            pr_hosts_string \u003d pr_info.get(\u0027hosts_string\u0027)"},{"line_number":575,"context_line":"            if pr_hosts_string:"},{"line_number":576,"context_line":"                ssh_command \u003d (\"echo \u0027{}\u0027 | sudo tee -a /etc/hosts \""},{"line_number":577,"context_line":"                    \"\u003e/dev/null\".format(pr_hosts_string))"},{"line_number":578,"context_line":"                self._execute_command("},{"line_number":579,"context_line":"                    commander, ssh_command, PR_CMD_TIMEOUT, \u0027common\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"700e45be_a7c9eab1","line":576,"updated":"2021-08-20 07:10:59.000000000","message":"This is a simple question, not a comment to this code; Is `sudo` in ssh_command correctly accepted by remote environment? Is there no case that `sudo` asks password in CLI dialog?","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":573,"context_line":"            # add host to /etc/hosts"},{"line_number":574,"context_line":"            pr_hosts_string \u003d pr_info.get(\u0027hosts_string\u0027)"},{"line_number":575,"context_line":"            if pr_hosts_string:"},{"line_number":576,"context_line":"                ssh_command \u003d (\"echo \u0027{}\u0027 | sudo tee -a /etc/hosts \""},{"line_number":577,"context_line":"                    \"\u003e/dev/null\".format(pr_hosts_string))"},{"line_number":578,"context_line":"                self._execute_command("},{"line_number":579,"context_line":"                    commander, ssh_command, PR_CMD_TIMEOUT, \u0027common\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"34ebddf9_02c6154e","line":576,"in_reply_to":"43b7cbb4_22beec2c","updated":"2021-09-07 07:02:21.000000000","message":"I see. Thank you for your reply.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"87e859ee6f34aa94c2629f1d90b8ecb2986caa49","unresolved":true,"context_lines":[{"line_number":573,"context_line":"            # add host to /etc/hosts"},{"line_number":574,"context_line":"            pr_hosts_string \u003d pr_info.get(\u0027hosts_string\u0027)"},{"line_number":575,"context_line":"            if pr_hosts_string:"},{"line_number":576,"context_line":"                ssh_command \u003d (\"echo \u0027{}\u0027 | sudo tee -a /etc/hosts \""},{"line_number":577,"context_line":"                    \"\u003e/dev/null\".format(pr_hosts_string))"},{"line_number":578,"context_line":"                self._execute_command("},{"line_number":579,"context_line":"                    commander, ssh_command, PR_CMD_TIMEOUT, \u0027common\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"43b7cbb4_22beec2c","line":576,"in_reply_to":"700e45be_a7c9eab1","updated":"2021-08-31 02:08:14.000000000","message":"In the script \"install_k8s_cluster.sh\", the command ‘echo \"ubuntu ALL\u003d(ALL) NOPASSWD: ALL\" | sudo tee /etc/sudoers.d/ubuntu’ is executed, so ‘sudo’ will not ask for a password.\n[https://review.opendev.org/c/openstack/tacker/+/801423/3/samples/mgmt_driver/install_k8s_cluster.sh#L172]","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":574,"context_line":"        # send cert files to node"},{"line_number":575,"context_line":"        if cert_file_list:"},{"line_number":576,"context_line":"            transport \u003d paramiko.Transport(node_ip, 22)"},{"line_number":577,"context_line":"            transport.connect(username\u003dnode_username, password\u003dnode_password)"},{"line_number":578,"context_line":"            sftp_client \u003d paramiko.SFTPClient.from_transport(transport)"},{"line_number":579,"context_line":"            for cert_item in cert_file_list:"},{"line_number":580,"context_line":"                local_file_path \u003d cert_item[0]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1c55d6b4_ca0e7604","line":577,"updated":"2021-09-07 07:02:21.000000000","message":"I think `paramiko.Transport.connect()` needs error handling. As written in paramiko document[1], `connect()` returns SSHException in case of error.\n\n[1] http://docs.paramiko.org/en/stable/api/transport.html","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"8a97de5de95fd548975febb836bedf3f87d9c2b1","unresolved":true,"context_lines":[{"line_number":574,"context_line":"        # send cert files to node"},{"line_number":575,"context_line":"        if cert_file_list:"},{"line_number":576,"context_line":"            transport \u003d paramiko.Transport(node_ip, 22)"},{"line_number":577,"context_line":"            transport.connect(username\u003dnode_username, password\u003dnode_password)"},{"line_number":578,"context_line":"            sftp_client \u003d paramiko.SFTPClient.from_transport(transport)"},{"line_number":579,"context_line":"            for cert_item in cert_file_list:"},{"line_number":580,"context_line":"                local_file_path \u003d cert_item[0]"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f9129fb_492f8e9a","line":577,"in_reply_to":"1c55d6b4_ca0e7604","updated":"2021-09-13 06:38:02.000000000","message":"Thanks for your comment, I will fix it in patch 8.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"f821ad0780dac6f8f721cf0980a4fb36de9c400c","unresolved":true,"context_lines":[{"line_number":574,"context_line":"        # send cert files to node"},{"line_number":575,"context_line":"        if cert_file_list:"},{"line_number":576,"context_line":"            transport \u003d paramiko.Transport(node_ip, 22)"},{"line_number":577,"context_line":"            transport.connect(username\u003dnode_username, password\u003dnode_password)"},{"line_number":578,"context_line":"            sftp_client \u003d paramiko.SFTPClient.from_transport(transport)"},{"line_number":579,"context_line":"            for cert_item in cert_file_list:"},{"line_number":580,"context_line":"                local_file_path \u003d cert_item[0]"}],"source_content_type":"text/x-python","patch_set":7,"id":"f160599f_c0b67a95","line":577,"in_reply_to":"1f9129fb_492f8e9a","updated":"2021-09-16 01:13:15.000000000","message":"Thanks. I\u0027ve confirmed.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":604,"context_line":""},{"line_number":605,"context_line":"            # connect to private registry (run docker login)"},{"line_number":606,"context_line":"            pr_server \u003d pr_info.get(\u0027server\u0027)"},{"line_number":607,"context_line":"            login_username \u003d pr_info.get(\u0027username\u0027)"},{"line_number":608,"context_line":"            if not login_username:"},{"line_number":609,"context_line":"                login_username \u003d \"tacker\""},{"line_number":610,"context_line":"            login_password \u003d pr_info.get(\u0027password\u0027)"},{"line_number":611,"context_line":"            if not login_password:"},{"line_number":612,"context_line":"                login_password \u003d \"tacker\""},{"line_number":613,"context_line":"            ssh_command \u003d (\"sudo docker login {} \""},{"line_number":614,"context_line":"                \"--username {} --password {}\".format("},{"line_number":615,"context_line":"                    pr_server, login_username, login_password))"}],"source_content_type":"text/x-python","patch_set":7,"id":"c78558b8_0dd96cc2","line":612,"range":{"start_line":607,"start_character":0,"end_line":612,"end_character":41},"updated":"2021-09-07 07:02:21.000000000","message":"Fetching `login_username` and `login_password` can be simplified as below:\n\n```\nlogin_username \u003d pr_info.get(\u0027username\u0027, \"tacker\")\nlogin_password \u003d pr_info.get(\u0027password\u0027, \"tacker\")\n```","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"8a97de5de95fd548975febb836bedf3f87d9c2b1","unresolved":true,"context_lines":[{"line_number":604,"context_line":""},{"line_number":605,"context_line":"            # connect to private registry (run docker login)"},{"line_number":606,"context_line":"            pr_server \u003d pr_info.get(\u0027server\u0027)"},{"line_number":607,"context_line":"            login_username \u003d pr_info.get(\u0027username\u0027)"},{"line_number":608,"context_line":"            if not login_username:"},{"line_number":609,"context_line":"                login_username \u003d \"tacker\""},{"line_number":610,"context_line":"            login_password \u003d pr_info.get(\u0027password\u0027)"},{"line_number":611,"context_line":"            if not login_password:"},{"line_number":612,"context_line":"                login_password \u003d \"tacker\""},{"line_number":613,"context_line":"            ssh_command \u003d (\"sudo docker login {} \""},{"line_number":614,"context_line":"                \"--username {} --password {}\".format("},{"line_number":615,"context_line":"                    pr_server, login_username, login_password))"}],"source_content_type":"text/x-python","patch_set":7,"id":"fe6a7250_ade3544e","line":612,"range":{"start_line":607,"start_character":0,"end_line":612,"end_character":41},"in_reply_to":"c78558b8_0dd96cc2","updated":"2021-09-13 06:38:02.000000000","message":"Thanks for your comment, I will fix it in patch 8.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"f821ad0780dac6f8f721cf0980a4fb36de9c400c","unresolved":true,"context_lines":[{"line_number":604,"context_line":""},{"line_number":605,"context_line":"            # connect to private registry (run docker login)"},{"line_number":606,"context_line":"            pr_server \u003d pr_info.get(\u0027server\u0027)"},{"line_number":607,"context_line":"            login_username \u003d pr_info.get(\u0027username\u0027)"},{"line_number":608,"context_line":"            if not login_username:"},{"line_number":609,"context_line":"                login_username \u003d \"tacker\""},{"line_number":610,"context_line":"            login_password \u003d pr_info.get(\u0027password\u0027)"},{"line_number":611,"context_line":"            if not login_password:"},{"line_number":612,"context_line":"                login_password \u003d \"tacker\""},{"line_number":613,"context_line":"            ssh_command \u003d (\"sudo docker login {} \""},{"line_number":614,"context_line":"                \"--username {} --password {}\".format("},{"line_number":615,"context_line":"                    pr_server, login_username, login_password))"}],"source_content_type":"text/x-python","patch_set":7,"id":"2e0778d2_807cbde1","line":612,"range":{"start_line":607,"start_character":0,"end_line":612,"end_character":41},"in_reply_to":"fe6a7250_ade3544e","updated":"2021-09-16 01:13:15.000000000","message":"Thanks. I\u0027ve confirmed.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"36c012e9ac275c02199c0861850f376a6a6c02d9","unresolved":true,"context_lines":[{"line_number":479,"context_line":"        # if connecting to the private registries over HTTP,"},{"line_number":480,"context_line":"        # add \"export HTTP_PRIVATE_REGISTRIES\" command"},{"line_number":481,"context_line":"        if http_private_registries:"},{"line_number":482,"context_line":"            ssh_command \u003d (\"export HTTP_PRIVATE_REGISTRIES\u003d\\\"\""},{"line_number":483,"context_line":"                + http_private_registries + \"\\\";\" + ssh_command)"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        self._execute_command("},{"line_number":486,"context_line":"            commander, ssh_command, K8S_INSTALL_TIMEOUT, \u0027install\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"0bb82784_7d29a739","line":483,"range":{"start_line":482,"start_character":26,"end_line":483,"end_character":64},"updated":"2021-09-14 15:00:06.000000000","message":"Why don\u0027t you use \".format()\" like other part?","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"17f921754b8ee801f7c0ee8f2cf6d0f7ebb56c48","unresolved":true,"context_lines":[{"line_number":479,"context_line":"        # if connecting to the private registries over HTTP,"},{"line_number":480,"context_line":"        # add \"export HTTP_PRIVATE_REGISTRIES\" command"},{"line_number":481,"context_line":"        if http_private_registries:"},{"line_number":482,"context_line":"            ssh_command \u003d (\"export HTTP_PRIVATE_REGISTRIES\u003d\\\"\""},{"line_number":483,"context_line":"                + http_private_registries + \"\\\";\" + ssh_command)"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        self._execute_command("},{"line_number":486,"context_line":"            commander, ssh_command, K8S_INSTALL_TIMEOUT, \u0027install\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"868c6602_efb8782a","line":483,"range":{"start_line":482,"start_character":26,"end_line":483,"end_character":64},"in_reply_to":"0bb82784_7d29a739","updated":"2021-09-17 04:58:13.000000000","message":"I fixed it in patch 9.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"54244ba516ba9461b7ef71836c2bded7e49b97ad","unresolved":false,"context_lines":[{"line_number":479,"context_line":"        # if connecting to the private registries over HTTP,"},{"line_number":480,"context_line":"        # add \"export HTTP_PRIVATE_REGISTRIES\" command"},{"line_number":481,"context_line":"        if http_private_registries:"},{"line_number":482,"context_line":"            ssh_command \u003d (\"export HTTP_PRIVATE_REGISTRIES\u003d\\\"\""},{"line_number":483,"context_line":"                + http_private_registries + \"\\\";\" + ssh_command)"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        self._execute_command("},{"line_number":486,"context_line":"            commander, ssh_command, K8S_INSTALL_TIMEOUT, \u0027install\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"d7a5f2ec_afaf26a7","line":483,"range":{"start_line":482,"start_character":26,"end_line":483,"end_character":64},"in_reply_to":"868c6602_efb8782a","updated":"2021-09-17 05:18:13.000000000","message":"I\u0027ve confirmed.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"36c012e9ac275c02199c0861850f376a6a6c02d9","unresolved":true,"context_lines":[{"line_number":602,"context_line":"                    retry -\u003d 1"},{"line_number":603,"context_line":"                    if retry \u003d\u003d 0:"},{"line_number":604,"context_line":"                        LOG.error(e)"},{"line_number":605,"context_line":"                        raise paramiko.SSHException()"},{"line_number":606,"context_line":"                    time.sleep(SERVER_WAIT_COMPLETE_TIME)"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        # connect to private registries"}],"source_content_type":"text/x-python","patch_set":8,"id":"649a901a_f58aad08","line":605,"updated":"2021-09-14 15:00:06.000000000","message":"Is it not necessary to call `commander.close_session()` before raising exception like [1]\n\n[1] https://review.opendev.org/c/openstack/tacker/+/801423/8/samples/mgmt_driver/kubernetes_mgmt.py#563","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"c52a6d571ce3018d28705859779983ac85d5af54","unresolved":false,"context_lines":[{"line_number":602,"context_line":"                    retry -\u003d 1"},{"line_number":603,"context_line":"                    if retry \u003d\u003d 0:"},{"line_number":604,"context_line":"                        LOG.error(e)"},{"line_number":605,"context_line":"                        raise paramiko.SSHException()"},{"line_number":606,"context_line":"                    time.sleep(SERVER_WAIT_COMPLETE_TIME)"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        # connect to private registries"}],"source_content_type":"text/x-python","patch_set":8,"id":"b6dcff0d_ad9566d4","line":605,"in_reply_to":"22b0939d_4717fd49","updated":"2021-09-17 09:17:09.000000000","message":"Thanks for testing and updating, I got it.\nI\u0027ve confirmed the fixed contents on PS 11.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"17f921754b8ee801f7c0ee8f2cf6d0f7ebb56c48","unresolved":true,"context_lines":[{"line_number":602,"context_line":"                    retry -\u003d 1"},{"line_number":603,"context_line":"                    if retry \u003d\u003d 0:"},{"line_number":604,"context_line":"                        LOG.error(e)"},{"line_number":605,"context_line":"                        raise paramiko.SSHException()"},{"line_number":606,"context_line":"                    time.sleep(SERVER_WAIT_COMPLETE_TIME)"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        # connect to private registries"}],"source_content_type":"text/x-python","patch_set":8,"id":"9d21d8f3_504bd7b2","line":605,"in_reply_to":"649a901a_f58aad08","updated":"2021-09-17 04:58:13.000000000","message":"I fixed it in patch 9.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"54244ba516ba9461b7ef71836c2bded7e49b97ad","unresolved":true,"context_lines":[{"line_number":602,"context_line":"                    retry -\u003d 1"},{"line_number":603,"context_line":"                    if retry \u003d\u003d 0:"},{"line_number":604,"context_line":"                        LOG.error(e)"},{"line_number":605,"context_line":"                        raise paramiko.SSHException()"},{"line_number":606,"context_line":"                    time.sleep(SERVER_WAIT_COMPLETE_TIME)"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        # connect to private registries"}],"source_content_type":"text/x-python","patch_set":8,"id":"9e821848_22f4b7b9","line":605,"in_reply_to":"9d21d8f3_504bd7b2","updated":"2021-09-17 05:18:13.000000000","message":"Sorry, Can I confirm?\n\nYou have added a call to `transport.close()`.\nIs it not necessary to call `commander.close_session()` before raising an exception on this retry over?\n\nCompared to other parts, errors in commands like cp/rm are less likely to occur, and if they are not important, I would like to give priority to merge and add CR+2.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"62109e2d5b4a914404c35d8647d9d97373d24923","unresolved":true,"context_lines":[{"line_number":602,"context_line":"                    retry -\u003d 1"},{"line_number":603,"context_line":"                    if retry \u003d\u003d 0:"},{"line_number":604,"context_line":"                        LOG.error(e)"},{"line_number":605,"context_line":"                        raise paramiko.SSHException()"},{"line_number":606,"context_line":"                    time.sleep(SERVER_WAIT_COMPLETE_TIME)"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        # connect to private registries"}],"source_content_type":"text/x-python","patch_set":8,"id":"22b0939d_4717fd49","line":605,"in_reply_to":"9e821848_22f4b7b9","updated":"2021-09-17 07:03:37.000000000","message":"After testing, it was found that `paramiko.Transport(node_ip, 22)` reported an error during execution.\nDepending on the error, it may cause `transport` to not be assigned.\nIf you execute `transport.close()` at this time, the error \"transport is not defined\" will be reported, so delete `transport.close()` again here.\n\nSorry for missing \"commander.close_session()\", I will fix it in patch 11.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"36c012e9ac275c02199c0861850f376a6a6c02d9","unresolved":true,"context_lines":[{"line_number":636,"context_line":"                err_msg \u003d (\"Failed to login Docker private registry. \""},{"line_number":637,"context_line":"                    \"ErrInfo:{}\".format(err_info))"},{"line_number":638,"context_line":"                LOG.error(err_msg)"},{"line_number":639,"context_line":"                raise exceptions.MgmtDriverOtherError(error_message\u003derr_msg)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        commander.close_session()"},{"line_number":642,"context_line":"        LOG.debug(\"_connect_to_private_registries function complete.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"0d20bc3c_3859e202","line":639,"updated":"2021-09-14 15:00:06.000000000","message":"ditto.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"17f921754b8ee801f7c0ee8f2cf6d0f7ebb56c48","unresolved":true,"context_lines":[{"line_number":636,"context_line":"                err_msg \u003d (\"Failed to login Docker private registry. \""},{"line_number":637,"context_line":"                    \"ErrInfo:{}\".format(err_info))"},{"line_number":638,"context_line":"                LOG.error(err_msg)"},{"line_number":639,"context_line":"                raise exceptions.MgmtDriverOtherError(error_message\u003derr_msg)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        commander.close_session()"},{"line_number":642,"context_line":"        LOG.debug(\"_connect_to_private_registries function complete.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"157bd25a_ed57f84d","line":639,"in_reply_to":"0d20bc3c_3859e202","updated":"2021-09-17 04:58:13.000000000","message":"I fixed it in patch 9.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"54244ba516ba9461b7ef71836c2bded7e49b97ad","unresolved":false,"context_lines":[{"line_number":636,"context_line":"                err_msg \u003d (\"Failed to login Docker private registry. \""},{"line_number":637,"context_line":"                    \"ErrInfo:{}\".format(err_info))"},{"line_number":638,"context_line":"                LOG.error(err_msg)"},{"line_number":639,"context_line":"                raise exceptions.MgmtDriverOtherError(error_message\u003derr_msg)"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        commander.close_session()"},{"line_number":642,"context_line":"        LOG.debug(\"_connect_to_private_registries function complete.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"e9b4d155_a51de878","line":639,"in_reply_to":"157bd25a_ed57f84d","updated":"2021-09-17 05:18:13.000000000","message":"I\u0027ve confirmed in PS9.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"36c012e9ac275c02199c0861850f376a6a6c02d9","unresolved":true,"context_lines":[{"line_number":800,"context_line":"            # if connecting to the private registries over HTTP,"},{"line_number":801,"context_line":"            # add \"export HTTP_PRIVATE_REGISTRIES\" command"},{"line_number":802,"context_line":"            if http_private_registries:"},{"line_number":803,"context_line":"                ssh_command \u003d (\"export HTTP_PRIVATE_REGISTRIES\u003d\\\"\""},{"line_number":804,"context_line":"                    + http_private_registries + \"\\\";\" + ssh_command)"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"            results \u003d self._execute_command("},{"line_number":807,"context_line":"                commander, ssh_command, K8S_INSTALL_TIMEOUT, \u0027install\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"f6102176_b925acba","line":804,"range":{"start_line":803,"start_character":30,"end_line":804,"end_character":68},"updated":"2021-09-14 15:00:06.000000000","message":"Why don\u0027t you use \".format()\" like other part?","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"54244ba516ba9461b7ef71836c2bded7e49b97ad","unresolved":false,"context_lines":[{"line_number":800,"context_line":"            # if connecting to the private registries over HTTP,"},{"line_number":801,"context_line":"            # add \"export HTTP_PRIVATE_REGISTRIES\" command"},{"line_number":802,"context_line":"            if http_private_registries:"},{"line_number":803,"context_line":"                ssh_command \u003d (\"export HTTP_PRIVATE_REGISTRIES\u003d\\\"\""},{"line_number":804,"context_line":"                    + http_private_registries + \"\\\";\" + ssh_command)"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"            results \u003d self._execute_command("},{"line_number":807,"context_line":"                commander, ssh_command, K8S_INSTALL_TIMEOUT, \u0027install\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fbfe953d_2f38c5fa","line":804,"range":{"start_line":803,"start_character":30,"end_line":804,"end_character":68},"in_reply_to":"21b14064_66865347","updated":"2021-09-17 05:18:13.000000000","message":"I\u0027ve confirmed in PS9.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"17f921754b8ee801f7c0ee8f2cf6d0f7ebb56c48","unresolved":true,"context_lines":[{"line_number":800,"context_line":"            # if connecting to the private registries over HTTP,"},{"line_number":801,"context_line":"            # add \"export HTTP_PRIVATE_REGISTRIES\" command"},{"line_number":802,"context_line":"            if http_private_registries:"},{"line_number":803,"context_line":"                ssh_command \u003d (\"export HTTP_PRIVATE_REGISTRIES\u003d\\\"\""},{"line_number":804,"context_line":"                    + http_private_registries + \"\\\";\" + ssh_command)"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"            results \u003d self._execute_command("},{"line_number":807,"context_line":"                commander, ssh_command, K8S_INSTALL_TIMEOUT, \u0027install\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"21b14064_66865347","line":804,"range":{"start_line":803,"start_character":30,"end_line":804,"end_character":68},"in_reply_to":"f6102176_b925acba","updated":"2021-09-17 04:58:13.000000000","message":"I fixed it in patch 9.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"36c012e9ac275c02199c0861850f376a6a6c02d9","unresolved":true,"context_lines":[{"line_number":2117,"context_line":"            # if connecting to the private registries over HTTP,"},{"line_number":2118,"context_line":"            # add \"export HTTP_PRIVATE_REGISTRIES\" command"},{"line_number":2119,"context_line":"            if http_private_registries:"},{"line_number":2120,"context_line":"                ssh_command \u003d (\"export HTTP_PRIVATE_REGISTRIES\u003d\\\"\""},{"line_number":2121,"context_line":"                    + http_private_registries + \"\\\";\" + ssh_command)"},{"line_number":2122,"context_line":""},{"line_number":2123,"context_line":"            self._execute_command("},{"line_number":2124,"context_line":"                commander, ssh_command, K8S_INSTALL_TIMEOUT, \u0027install\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a42e307_e89ada2f","line":2121,"range":{"start_line":2120,"start_character":30,"end_line":2121,"end_character":68},"updated":"2021-09-14 15:00:06.000000000","message":"Why don\u0027t you use \".format()\" like other part?","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"54244ba516ba9461b7ef71836c2bded7e49b97ad","unresolved":false,"context_lines":[{"line_number":2117,"context_line":"            # if connecting to the private registries over HTTP,"},{"line_number":2118,"context_line":"            # add \"export HTTP_PRIVATE_REGISTRIES\" command"},{"line_number":2119,"context_line":"            if http_private_registries:"},{"line_number":2120,"context_line":"                ssh_command \u003d (\"export HTTP_PRIVATE_REGISTRIES\u003d\\\"\""},{"line_number":2121,"context_line":"                    + http_private_registries + \"\\\";\" + ssh_command)"},{"line_number":2122,"context_line":""},{"line_number":2123,"context_line":"            self._execute_command("},{"line_number":2124,"context_line":"                commander, ssh_command, K8S_INSTALL_TIMEOUT, \u0027install\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ca4df707_2b8746f4","line":2121,"range":{"start_line":2120,"start_character":30,"end_line":2121,"end_character":68},"in_reply_to":"5b82b3a4_2646f64c","updated":"2021-09-17 05:18:13.000000000","message":"I\u0027ve confirmed in PS9.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"17f921754b8ee801f7c0ee8f2cf6d0f7ebb56c48","unresolved":true,"context_lines":[{"line_number":2117,"context_line":"            # if connecting to the private registries over HTTP,"},{"line_number":2118,"context_line":"            # add \"export HTTP_PRIVATE_REGISTRIES\" command"},{"line_number":2119,"context_line":"            if http_private_registries:"},{"line_number":2120,"context_line":"                ssh_command \u003d (\"export HTTP_PRIVATE_REGISTRIES\u003d\\\"\""},{"line_number":2121,"context_line":"                    + http_private_registries + \"\\\";\" + ssh_command)"},{"line_number":2122,"context_line":""},{"line_number":2123,"context_line":"            self._execute_command("},{"line_number":2124,"context_line":"                commander, ssh_command, K8S_INSTALL_TIMEOUT, \u0027install\u0027, 0)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5b82b3a4_2646f64c","line":2121,"range":{"start_line":2120,"start_character":30,"end_line":2121,"end_character":68},"in_reply_to":"7a42e307_e89ada2f","updated":"2021-09-17 04:58:13.000000000","message":"I fixed it in patch 9.","commit_id":"d87567bd612039da2e1a796c51e07b38cb9d0f24"}],"samples/mgmt_driver/private_registry_mgmt.py":[{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"bfe89e82e65862724b7f53aacb4bf12be5a04838","unresolved":true,"context_lines":[{"line_number":103,"context_line":"                    PR_CMD_RETRY_INTERVAL)"},{"line_number":104,"context_line":"                LOG.debug(err_msg)"},{"line_number":105,"context_line":"                time.sleep(PR_CMD_RETRY_INTERVAL)"},{"line_number":106,"context_line":"        if type \u003d\u003d \"common\":"},{"line_number":107,"context_line":"            stderr \u003d result.get_stderr()"},{"line_number":108,"context_line":"            if stderr:"},{"line_number":109,"context_line":"                err_msg \u003d (\"Failed to execute command: {}, \""}],"source_content_type":"text/x-python","patch_set":3,"id":"672fd2cd_2e50753f","line":106,"updated":"2021-08-20 07:10:59.000000000","message":"The same comment as I mentioned in kubernetes_mgmt.py;\nIn my opinion, those strings such as `common` should be defined as constants in KubernetesMgmtDriver class to clarify which type is accepted in the class.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"87e859ee6f34aa94c2629f1d90b8ecb2986caa49","unresolved":true,"context_lines":[{"line_number":103,"context_line":"                    PR_CMD_RETRY_INTERVAL)"},{"line_number":104,"context_line":"                LOG.debug(err_msg)"},{"line_number":105,"context_line":"                time.sleep(PR_CMD_RETRY_INTERVAL)"},{"line_number":106,"context_line":"        if type \u003d\u003d \"common\":"},{"line_number":107,"context_line":"            stderr \u003d result.get_stderr()"},{"line_number":108,"context_line":"            if stderr:"},{"line_number":109,"context_line":"                err_msg \u003d (\"Failed to execute command: {}, \""}],"source_content_type":"text/x-python","patch_set":3,"id":"8410aa5e_e25728e3","line":106,"in_reply_to":"672fd2cd_2e50753f","updated":"2021-08-31 02:08:14.000000000","message":"Thank you for your comment, I will define constant instead of direct values in patch 5.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":103,"context_line":"                    PR_CMD_RETRY_INTERVAL)"},{"line_number":104,"context_line":"                LOG.debug(err_msg)"},{"line_number":105,"context_line":"                time.sleep(PR_CMD_RETRY_INTERVAL)"},{"line_number":106,"context_line":"        if type \u003d\u003d \"common\":"},{"line_number":107,"context_line":"            stderr \u003d result.get_stderr()"},{"line_number":108,"context_line":"            if stderr:"},{"line_number":109,"context_line":"                err_msg \u003d (\"Failed to execute command: {}, \""}],"source_content_type":"text/x-python","patch_set":3,"id":"7bd87f30_46399d15","line":106,"in_reply_to":"8410aa5e_e25728e3","updated":"2021-09-07 07:02:21.000000000","message":"Thanks. I found your modification in PS5.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"cce46158227c777f6bb0bd4f0fc6d133d1d15648","unresolved":true,"context_lines":[{"line_number":116,"context_line":"    def _wait_docker_running(self, commander, err_msg,"},{"line_number":117,"context_line":"                             retry\u003dPR_NUM_OF_RETRY_WAIT_DOCKER):"},{"line_number":118,"context_line":"        while retry \u003e\u003d 0:"},{"line_number":119,"context_line":"            ssh_command \u003d (\"sudo systemctl status docker \""},{"line_number":120,"context_line":"                \"| grep Active | grep -c running\")"},{"line_number":121,"context_line":"            result \u003d self._execute_command(commander, ssh_command)"},{"line_number":122,"context_line":"            count_result \u003d result[0].replace(\"\\n\", \"\")"},{"line_number":123,"context_line":"            if count_result \u003d\u003d \"0\":"},{"line_number":124,"context_line":"                retry -\u003d 1"},{"line_number":125,"context_line":"                if retry \u003c 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ec8795cd_7ca6b604","line":122,"range":{"start_line":119,"start_character":0,"end_line":122,"end_character":54},"updated":"2021-08-23 07:34:56.000000000","message":"It looks tricky a little, and might be different behaviors on different distros altough I\u0027m not sure exactly. Why don\u0027t use one liner with docker library instead? It must return True if dockerd is living.\n\n```\nsudo python3 -c \"import docker; print(docker.DockerClient().ping())\"\n```","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"87e859ee6f34aa94c2629f1d90b8ecb2986caa49","unresolved":true,"context_lines":[{"line_number":116,"context_line":"    def _wait_docker_running(self, commander, err_msg,"},{"line_number":117,"context_line":"                             retry\u003dPR_NUM_OF_RETRY_WAIT_DOCKER):"},{"line_number":118,"context_line":"        while retry \u003e\u003d 0:"},{"line_number":119,"context_line":"            ssh_command \u003d (\"sudo systemctl status docker \""},{"line_number":120,"context_line":"                \"| grep Active | grep -c running\")"},{"line_number":121,"context_line":"            result \u003d self._execute_command(commander, ssh_command)"},{"line_number":122,"context_line":"            count_result \u003d result[0].replace(\"\\n\", \"\")"},{"line_number":123,"context_line":"            if count_result \u003d\u003d \"0\":"},{"line_number":124,"context_line":"                retry -\u003d 1"},{"line_number":125,"context_line":"                if retry \u003c 0:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ed77296_e49126de","line":122,"range":{"start_line":119,"start_character":0,"end_line":122,"end_character":54},"in_reply_to":"ec8795cd_7ca6b604","updated":"2021-08-31 02:08:14.000000000","message":"Thank you for your comment. Ubuntu 20.04 is the only supported distro, this has been checked in the previous code. So I think there is no need to consider the differences between different distros. In addition, if I want to use python\u0027s docker library, I think I should run \"pip install docker\" first. Because the current code works well, I don\u0027t plan to modify it, so thank you for your suggestion.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"cce46158227c777f6bb0bd4f0fc6d133d1d15648","unresolved":true,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # check parameters"},{"line_number":169,"context_line":"        if not pr_installation_params:"},{"line_number":170,"context_line":"            LOG.error(\"The private_registry_installation_param \""},{"line_number":171,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":172,"context_line":"            raise exceptions.MgmtDriverNotFound("},{"line_number":173,"context_line":"                param\u003d\"private_registry_installation_param\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"70af8e6b_77985eba","line":170,"range":{"start_line":170,"start_character":23,"end_line":170,"end_character":27},"updated":"2021-08-23 07:34:56.000000000","message":"nit. No need to add \"the\" for variables here and all.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"87e859ee6f34aa94c2629f1d90b8ecb2986caa49","unresolved":true,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # check parameters"},{"line_number":169,"context_line":"        if not pr_installation_params:"},{"line_number":170,"context_line":"            LOG.error(\"The private_registry_installation_param \""},{"line_number":171,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":172,"context_line":"            raise exceptions.MgmtDriverNotFound("},{"line_number":173,"context_line":"                param\u003d\"private_registry_installation_param\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"323a8b31_cb274a46","line":170,"range":{"start_line":170,"start_character":23,"end_line":170,"end_character":27},"in_reply_to":"70af8e6b_77985eba","updated":"2021-08-31 02:08:14.000000000","message":"Sorry, my English is not very good, not sure if this sentence is correct. However, I think the log should be consistent with here [https://opendev.org/openstack/tacker/src/branch/master/tacker/common/exceptions.py#L402].","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"bfe89e82e65862724b7f53aacb4bf12be5a04838","unresolved":true,"context_lines":[{"line_number":166,"context_line":"            \"installation param: {}\".format(pr_installation_params))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # check parameters"},{"line_number":169,"context_line":"        if not pr_installation_params:"},{"line_number":170,"context_line":"            LOG.error(\"The private_registry_installation_param \""},{"line_number":171,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":172,"context_line":"            raise exceptions.MgmtDriverNotFound("},{"line_number":173,"context_line":"                param\u003d\"private_registry_installation_param\")"},{"line_number":174,"context_line":"        ssh_cp_name \u003d pr_installation_params.get(\"ssh_cp_name\")"},{"line_number":175,"context_line":"        ssh_username \u003d pr_installation_params.get(\"ssh_username\")"},{"line_number":176,"context_line":"        ssh_password \u003d pr_installation_params.get(\"ssh_password\")"},{"line_number":177,"context_line":"        image_path \u003d pr_installation_params.get(\"image_path\")"},{"line_number":178,"context_line":"        port_no \u003d pr_installation_params.get(\"port_no\")"},{"line_number":179,"context_line":"        proxy \u003d pr_installation_params.get(\"proxy\")"},{"line_number":180,"context_line":"        if not ssh_cp_name:"},{"line_number":181,"context_line":"            LOG.error(\"The ssh_cp_name \""},{"line_number":182,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":183,"context_line":"            raise exceptions.MgmtDriverNotFound(param\u003d\"ssh_cp_name\")"},{"line_number":184,"context_line":"        if not ssh_username:"},{"line_number":185,"context_line":"            LOG.error(\"The ssh_username \""},{"line_number":186,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":187,"context_line":"            raise exceptions.MgmtDriverNotFound(param\u003d\"ssh_username\")"},{"line_number":188,"context_line":"        if not ssh_password:"},{"line_number":189,"context_line":"            LOG.error(\"The ssh_password \""},{"line_number":190,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":191,"context_line":"            raise exceptions.MgmtDriverNotFound(param\u003d\"ssh_password\")"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        # get IP address from cp name"},{"line_number":194,"context_line":"        ssh_ip_address \u003d self._get_cp_ip_address("},{"line_number":195,"context_line":"            vnf_instance, vim_connection_info, ssh_cp_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"4a66eb5c_40d83532","line":192,"range":{"start_line":169,"start_character":0,"end_line":192,"end_character":0},"updated":"2021-08-20 07:10:59.000000000","message":"Can you separate those validating process into a dedicated method in this class? It seems that this `_install_private_registry` method is a little bit long....","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":166,"context_line":"            \"installation param: {}\".format(pr_installation_params))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # check parameters"},{"line_number":169,"context_line":"        if not pr_installation_params:"},{"line_number":170,"context_line":"            LOG.error(\"The private_registry_installation_param \""},{"line_number":171,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":172,"context_line":"            raise exceptions.MgmtDriverNotFound("},{"line_number":173,"context_line":"                param\u003d\"private_registry_installation_param\")"},{"line_number":174,"context_line":"        ssh_cp_name \u003d pr_installation_params.get(\"ssh_cp_name\")"},{"line_number":175,"context_line":"        ssh_username \u003d pr_installation_params.get(\"ssh_username\")"},{"line_number":176,"context_line":"        ssh_password \u003d pr_installation_params.get(\"ssh_password\")"},{"line_number":177,"context_line":"        image_path \u003d pr_installation_params.get(\"image_path\")"},{"line_number":178,"context_line":"        port_no \u003d pr_installation_params.get(\"port_no\")"},{"line_number":179,"context_line":"        proxy \u003d pr_installation_params.get(\"proxy\")"},{"line_number":180,"context_line":"        if not ssh_cp_name:"},{"line_number":181,"context_line":"            LOG.error(\"The ssh_cp_name \""},{"line_number":182,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":183,"context_line":"            raise exceptions.MgmtDriverNotFound(param\u003d\"ssh_cp_name\")"},{"line_number":184,"context_line":"        if not ssh_username:"},{"line_number":185,"context_line":"            LOG.error(\"The ssh_username \""},{"line_number":186,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":187,"context_line":"            raise exceptions.MgmtDriverNotFound(param\u003d\"ssh_username\")"},{"line_number":188,"context_line":"        if not ssh_password:"},{"line_number":189,"context_line":"            LOG.error(\"The ssh_password \""},{"line_number":190,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":191,"context_line":"            raise exceptions.MgmtDriverNotFound(param\u003d\"ssh_password\")"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        # get IP address from cp name"},{"line_number":194,"context_line":"        ssh_ip_address \u003d self._get_cp_ip_address("},{"line_number":195,"context_line":"            vnf_instance, vim_connection_info, ssh_cp_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5ea5664d_26e4f4dd","line":192,"range":{"start_line":169,"start_character":0,"end_line":192,"end_character":0},"in_reply_to":"29f4f523_0b769562","updated":"2021-09-07 07:02:21.000000000","message":"Thanks. I found those verification in `_check_pr_installation_params`.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"87e859ee6f34aa94c2629f1d90b8ecb2986caa49","unresolved":true,"context_lines":[{"line_number":166,"context_line":"            \"installation param: {}\".format(pr_installation_params))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # check parameters"},{"line_number":169,"context_line":"        if not pr_installation_params:"},{"line_number":170,"context_line":"            LOG.error(\"The private_registry_installation_param \""},{"line_number":171,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":172,"context_line":"            raise exceptions.MgmtDriverNotFound("},{"line_number":173,"context_line":"                param\u003d\"private_registry_installation_param\")"},{"line_number":174,"context_line":"        ssh_cp_name \u003d pr_installation_params.get(\"ssh_cp_name\")"},{"line_number":175,"context_line":"        ssh_username \u003d pr_installation_params.get(\"ssh_username\")"},{"line_number":176,"context_line":"        ssh_password \u003d pr_installation_params.get(\"ssh_password\")"},{"line_number":177,"context_line":"        image_path \u003d pr_installation_params.get(\"image_path\")"},{"line_number":178,"context_line":"        port_no \u003d pr_installation_params.get(\"port_no\")"},{"line_number":179,"context_line":"        proxy \u003d pr_installation_params.get(\"proxy\")"},{"line_number":180,"context_line":"        if not ssh_cp_name:"},{"line_number":181,"context_line":"            LOG.error(\"The ssh_cp_name \""},{"line_number":182,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":183,"context_line":"            raise exceptions.MgmtDriverNotFound(param\u003d\"ssh_cp_name\")"},{"line_number":184,"context_line":"        if not ssh_username:"},{"line_number":185,"context_line":"            LOG.error(\"The ssh_username \""},{"line_number":186,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":187,"context_line":"            raise exceptions.MgmtDriverNotFound(param\u003d\"ssh_username\")"},{"line_number":188,"context_line":"        if not ssh_password:"},{"line_number":189,"context_line":"            LOG.error(\"The ssh_password \""},{"line_number":190,"context_line":"                \"in the additionalParams does not exist.\")"},{"line_number":191,"context_line":"            raise exceptions.MgmtDriverNotFound(param\u003d\"ssh_password\")"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        # get IP address from cp name"},{"line_number":194,"context_line":"        ssh_ip_address \u003d self._get_cp_ip_address("},{"line_number":195,"context_line":"            vnf_instance, vim_connection_info, ssh_cp_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"29f4f523_0b769562","line":192,"range":{"start_line":169,"start_character":0,"end_line":192,"end_character":0},"in_reply_to":"4a66eb5c_40d83532","updated":"2021-08-31 02:08:14.000000000","message":"Thank you for your comment, I will separate those validating process into a dedicated method in this class in patch 5.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"04f0daf24cb493370acc128313aa42a113a8f7de","unresolved":true,"context_lines":[{"line_number":256,"context_line":"            \"export DEBIAN_FRONTEND\u003dnoninteractive;\""},{"line_number":257,"context_line":"            \"sudo -E apt-get install -y apt-transport-https \""},{"line_number":258,"context_line":"            \"ca-certificates curl gnupg-agent software-properties-common\")"},{"line_number":259,"context_line":"        self._execute_command(commander, ssh_command, PR_CMD_TIMEOUT_INSTALL)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        # execute add-apt-repository command"},{"line_number":262,"context_line":"        ssh_command \u003d \"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"2e3b6d90_4afa668b","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":77},"updated":"2021-08-23 08:12:09.000000000","message":"Would like to know about error handling, in case apt command failure, we should add error handler to at least validate command status.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"87e859ee6f34aa94c2629f1d90b8ecb2986caa49","unresolved":true,"context_lines":[{"line_number":256,"context_line":"            \"export DEBIAN_FRONTEND\u003dnoninteractive;\""},{"line_number":257,"context_line":"            \"sudo -E apt-get install -y apt-transport-https \""},{"line_number":258,"context_line":"            \"ca-certificates curl gnupg-agent software-properties-common\")"},{"line_number":259,"context_line":"        self._execute_command(commander, ssh_command, PR_CMD_TIMEOUT_INSTALL)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        # execute add-apt-repository command"},{"line_number":262,"context_line":"        ssh_command \u003d \"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"4b363a08_4480d2f9","line":259,"range":{"start_line":259,"start_character":8,"end_line":259,"end_character":77},"in_reply_to":"2e3b6d90_4afa668b","updated":"2021-08-31 02:08:14.000000000","message":"There is error handler in the method \"_excute_command\".Thank you for your comment.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"04f0daf24cb493370acc128313aa42a113a8f7de","unresolved":true,"context_lines":[{"line_number":273,"context_line":"            \"sudo add-apt-repository \\\"deb [arch\u003damd64] \""},{"line_number":274,"context_line":"            \"https://download.docker.com/linux/ubuntu \""},{"line_number":275,"context_line":"            \"$(lsb_release -cs) stable\\\"\")"},{"line_number":276,"context_line":"        self._execute_command(commander, ssh_command, PR_CMD_TIMEOUT_INSTALL)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        # install docker"},{"line_number":279,"context_line":"        ssh_command \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"d00be329_cd415b3a","line":276,"range":{"start_line":276,"start_character":8,"end_line":276,"end_character":77},"updated":"2021-08-23 08:12:09.000000000","message":"ditto","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"04f0daf24cb493370acc128313aa42a113a8f7de","unresolved":true,"context_lines":[{"line_number":282,"context_line":"            \"sudo -E apt-get install -y \""},{"line_number":283,"context_line":"            \"docker-ce\u003d5:19.03.11~3-0~ubuntu-focal \""},{"line_number":284,"context_line":"            \"docker-ce-cli containerd.io\")"},{"line_number":285,"context_line":"        self._execute_command(commander, ssh_command, PR_CMD_TIMEOUT_INSTALL)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"        # wait for the Docker service running"},{"line_number":288,"context_line":"        err_msg \u003d \"Failed to install Docker(Docker service is not running)\""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f351549_0c9d196b","line":285,"range":{"start_line":285,"start_character":8,"end_line":285,"end_character":77},"updated":"2021-08-23 08:12:09.000000000","message":"ditto","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":32102,"name":"Manpreet Kaur","email":"kaurmanpreet2620@gmail.com","username":"manpreet"},"change_message_id":"04f0daf24cb493370acc128313aa42a113a8f7de","unresolved":true,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":"        # run the Private registry container"},{"line_number":360,"context_line":"        if port_no is None:"},{"line_number":361,"context_line":"            port \u003d \"5000\""},{"line_number":362,"context_line":"        else:"},{"line_number":363,"context_line":"            port \u003d str(port_no)"},{"line_number":364,"context_line":"        ssh_command \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9f767361_745232ec","line":361,"range":{"start_line":361,"start_character":19,"end_line":361,"end_character":25},"updated":"2021-08-23 08:12:09.000000000","message":"If possible define constant instead of direct values.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"87e859ee6f34aa94c2629f1d90b8ecb2986caa49","unresolved":true,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":"        # run the Private registry container"},{"line_number":360,"context_line":"        if port_no is None:"},{"line_number":361,"context_line":"            port \u003d \"5000\""},{"line_number":362,"context_line":"        else:"},{"line_number":363,"context_line":"            port \u003d str(port_no)"},{"line_number":364,"context_line":"        ssh_command \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9a4b22_e007cfa4","line":361,"range":{"start_line":361,"start_character":19,"end_line":361,"end_character":25},"in_reply_to":"9f767361_745232ec","updated":"2021-08-31 02:08:14.000000000","message":"Thank you for your comment, I will define constant instead of direct values in patch 5.","commit_id":"591413a41834ab78baafab84e911f886cf69d5ae"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"import paramiko"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from tacker.common import cmd_executer"},{"line_number":24,"context_line":"from tacker.common import exceptions"}],"source_content_type":"text/x-python","patch_set":7,"id":"94fed06b_3cecacf6","line":21,"range":{"start_line":15,"start_character":0,"end_line":21,"end_character":15},"updated":"2021-09-07 07:02:21.000000000","message":"`os` and `time` are standard libraries, thus import statements should be sorted as below:\n\n```\nimport os\nimport time\n\nimport eventlet\nfrom oslo_log import log as logging\nimport paramiko\n```","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"8a97de5de95fd548975febb836bedf3f87d9c2b1","unresolved":true,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"import paramiko"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from tacker.common import cmd_executer"},{"line_number":24,"context_line":"from tacker.common import exceptions"}],"source_content_type":"text/x-python","patch_set":7,"id":"c5b2de83_478f431e","line":21,"range":{"start_line":15,"start_character":0,"end_line":21,"end_character":15},"in_reply_to":"94fed06b_3cecacf6","updated":"2021-09-13 06:38:02.000000000","message":"Thanks for your comment, I will fix it in patch 8.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"f821ad0780dac6f8f721cf0980a4fb36de9c400c","unresolved":true,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import eventlet"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import time"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"import paramiko"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from tacker.common import cmd_executer"},{"line_number":24,"context_line":"from tacker.common import exceptions"}],"source_content_type":"text/x-python","patch_set":7,"id":"86953a54_e757bac5","line":21,"range":{"start_line":15,"start_character":0,"end_line":21,"end_character":15},"in_reply_to":"c5b2de83_478f431e","updated":"2021-09-16 01:13:15.000000000","message":"Thanks. I\u0027ve confirmed.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        resource_info \u003d heatclient.resources.get("},{"line_number":71,"context_line":"            stack_id\u003dstack_id, resource_name\u003dcp_name)"},{"line_number":72,"context_line":"        fixed_ips \u003d resource_info.attributes.get(\"fixed_ips\")"},{"line_number":73,"context_line":"        if fixed_ips:"},{"line_number":74,"context_line":"            cp_ip_address \u003d fixed_ips[0].get(\"ip_address\")"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            cp_ip_address \u003d \"\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # check result"},{"line_number":79,"context_line":"        if not cp_ip_address:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1eecc259_fae1801e","line":76,"range":{"start_line":73,"start_character":0,"end_line":76,"end_character":30},"updated":"2021-09-07 07:02:21.000000000","message":"Is `if-else` clause required? The below is equivalent to this part:\n\n```\ncp_ip_address \u003d fixed_ips[0].get(\"ip_address\", \"\")\n# The 2nd attribute of dict.get() specifies the default value.\n```","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"8a97de5de95fd548975febb836bedf3f87d9c2b1","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        resource_info \u003d heatclient.resources.get("},{"line_number":71,"context_line":"            stack_id\u003dstack_id, resource_name\u003dcp_name)"},{"line_number":72,"context_line":"        fixed_ips \u003d resource_info.attributes.get(\"fixed_ips\")"},{"line_number":73,"context_line":"        if fixed_ips:"},{"line_number":74,"context_line":"            cp_ip_address \u003d fixed_ips[0].get(\"ip_address\")"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            cp_ip_address \u003d \"\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # check result"},{"line_number":79,"context_line":"        if not cp_ip_address:"}],"source_content_type":"text/x-python","patch_set":7,"id":"40c1ad63_6d0f6885","line":76,"range":{"start_line":73,"start_character":0,"end_line":76,"end_character":30},"in_reply_to":"1eecc259_fae1801e","updated":"2021-09-13 06:38:02.000000000","message":"Thank you for your comment. Yes, `if-else` clause is necessary.In the conditions that \"fixed_ips\" is none, \"cp_ip_address \u003d fixed_ips[0]\" will cause an array out of index error.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"f821ad0780dac6f8f721cf0980a4fb36de9c400c","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        resource_info \u003d heatclient.resources.get("},{"line_number":71,"context_line":"            stack_id\u003dstack_id, resource_name\u003dcp_name)"},{"line_number":72,"context_line":"        fixed_ips \u003d resource_info.attributes.get(\"fixed_ips\")"},{"line_number":73,"context_line":"        if fixed_ips:"},{"line_number":74,"context_line":"            cp_ip_address \u003d fixed_ips[0].get(\"ip_address\")"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            cp_ip_address \u003d \"\""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        # check result"},{"line_number":79,"context_line":"        if not cp_ip_address:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bcd720ca_7ae95a89","line":76,"range":{"start_line":73,"start_character":0,"end_line":76,"end_character":30},"in_reply_to":"40c1ad63_6d0f6885","updated":"2021-09-16 01:13:15.000000000","message":"OK, I see.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    def _wait_docker_running(self, commander, err_msg,"},{"line_number":123,"context_line":"                             retry\u003dPR_NUM_OF_RETRY_WAIT_DOCKER):"},{"line_number":124,"context_line":"        while retry \u003e\u003d 0:"},{"line_number":125,"context_line":"            ssh_command \u003d (\"sudo systemctl status docker \""},{"line_number":126,"context_line":"                \"| grep Active | grep -c running\")"},{"line_number":127,"context_line":"            result \u003d self._execute_command(commander, ssh_command)"},{"line_number":128,"context_line":"            count_result \u003d result[0].replace(\"\\n\", \"\")"},{"line_number":129,"context_line":"            if count_result \u003d\u003d \"0\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"33c5c6b2_cc77ff72","line":126,"range":{"start_line":125,"start_character":0,"end_line":126,"end_character":50},"updated":"2021-09-07 07:02:21.000000000","message":"I think we can simplify this command with `systemctl is-active`. This command will return the status of target service in string (e.g. \"active\", \"inactive\", \"failed\"), thus the below seems to be equivalent to the current code:\n\n```\nSTATE_ACTIVE \u003d \"active\"\n....\n\n    def _wait_docker_running(self, commander, err_msg,\n                             retry\u003dPR_NUM_OF_RETRY_WAIT_DOCKER):\n        while retry \u003e\u003d 0:\n            ssh_command \u003d (\"sudo systemctl is-active docker\")\n            result \u003d self._execute_command(commander, ssh_command)\n            str_result \u003d result[0].replace(\"\\n\", \"\")\n            if str_result !\u003d STATE_ACTIVE:\n                ....\n```","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"8a97de5de95fd548975febb836bedf3f87d9c2b1","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    def _wait_docker_running(self, commander, err_msg,"},{"line_number":123,"context_line":"                             retry\u003dPR_NUM_OF_RETRY_WAIT_DOCKER):"},{"line_number":124,"context_line":"        while retry \u003e\u003d 0:"},{"line_number":125,"context_line":"            ssh_command \u003d (\"sudo systemctl status docker \""},{"line_number":126,"context_line":"                \"| grep Active | grep -c running\")"},{"line_number":127,"context_line":"            result \u003d self._execute_command(commander, ssh_command)"},{"line_number":128,"context_line":"            count_result \u003d result[0].replace(\"\\n\", \"\")"},{"line_number":129,"context_line":"            if count_result \u003d\u003d \"0\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"faa2c435_db2dd77b","line":126,"range":{"start_line":125,"start_character":0,"end_line":126,"end_character":50},"in_reply_to":"33c5c6b2_cc77ff72","updated":"2021-09-13 06:38:02.000000000","message":"Thank you for your comment. Here not only must confirm that the status is active, but also running. \nSo \"sudo systemctl status docker | grep Active | grep -c running\" is used, but \"sudo systemctl is-active docker\" \ncan only confirm that the status is active.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"f821ad0780dac6f8f721cf0980a4fb36de9c400c","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    def _wait_docker_running(self, commander, err_msg,"},{"line_number":123,"context_line":"                             retry\u003dPR_NUM_OF_RETRY_WAIT_DOCKER):"},{"line_number":124,"context_line":"        while retry \u003e\u003d 0:"},{"line_number":125,"context_line":"            ssh_command \u003d (\"sudo systemctl status docker \""},{"line_number":126,"context_line":"                \"| grep Active | grep -c running\")"},{"line_number":127,"context_line":"            result \u003d self._execute_command(commander, ssh_command)"},{"line_number":128,"context_line":"            count_result \u003d result[0].replace(\"\\n\", \"\")"},{"line_number":129,"context_line":"            if count_result \u003d\u003d \"0\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"064ba79f_8bc281c2","line":126,"range":{"start_line":125,"start_character":0,"end_line":126,"end_character":50},"in_reply_to":"faa2c435_db2dd77b","updated":"2021-09-16 01:13:15.000000000","message":"Thanks. I understand the implementation.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"9b26ee8666aa41c02ddc2c2c80a175a98bc4d7f0","unresolved":true,"context_lines":[{"line_number":152,"context_line":"            if status \u003d\u003d \"running\":"},{"line_number":153,"context_line":"                LOG.debug(\"Private registry container is running.\")"},{"line_number":154,"context_line":"                break"},{"line_number":155,"context_line":"            else:"},{"line_number":156,"context_line":"                retry -\u003d 1"},{"line_number":157,"context_line":"                if retry \u003c 0:"},{"line_number":158,"context_line":"                    err_msg \u003d \"Failed to run Private registry container\""}],"source_content_type":"text/x-python","patch_set":7,"id":"6452a942_0ecea999","line":155,"updated":"2021-09-07 07:02:21.000000000","message":"`else` clause is unnecessary after `break`.\n\n```\nif status \u003d\u003d \"running\":\n    LOG.debug(\"Private registry container is running.\")\n    break\nretry -\u003d 1\n...\n```","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33492,"name":"Yi Feng","email":"fengyi@fujitsu.com","username":"YiFeng"},"change_message_id":"8a97de5de95fd548975febb836bedf3f87d9c2b1","unresolved":true,"context_lines":[{"line_number":152,"context_line":"            if status \u003d\u003d \"running\":"},{"line_number":153,"context_line":"                LOG.debug(\"Private registry container is running.\")"},{"line_number":154,"context_line":"                break"},{"line_number":155,"context_line":"            else:"},{"line_number":156,"context_line":"                retry -\u003d 1"},{"line_number":157,"context_line":"                if retry \u003c 0:"},{"line_number":158,"context_line":"                    err_msg \u003d \"Failed to run Private registry container\""}],"source_content_type":"text/x-python","patch_set":7,"id":"d3353ff4_e8535d4d","line":155,"in_reply_to":"6452a942_0ecea999","updated":"2021-09-13 06:38:02.000000000","message":"Thanks for your comment, I will fix it in patch 8.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"},{"author":{"_account_id":33292,"name":"Masaki UENO","email":"masaki.ueno.up@hco.ntt.co.jp","username":"masaki-ueno"},"change_message_id":"f821ad0780dac6f8f721cf0980a4fb36de9c400c","unresolved":true,"context_lines":[{"line_number":152,"context_line":"            if status \u003d\u003d \"running\":"},{"line_number":153,"context_line":"                LOG.debug(\"Private registry container is running.\")"},{"line_number":154,"context_line":"                break"},{"line_number":155,"context_line":"            else:"},{"line_number":156,"context_line":"                retry -\u003d 1"},{"line_number":157,"context_line":"                if retry \u003c 0:"},{"line_number":158,"context_line":"                    err_msg \u003d \"Failed to run Private registry container\""}],"source_content_type":"text/x-python","patch_set":7,"id":"ebb2e083_17e28390","line":155,"in_reply_to":"d3353ff4_e8535d4d","updated":"2021-09-16 01:13:15.000000000","message":"Thanks. I\u0027ve confirmed it.","commit_id":"242726af7e31b4e3921125011d0e103919f2ff72"}]}
