)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"abf3e38aa1e8c0006266c5f243fd91a770695523","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Prevent raising exception if IP address is set in \"_hotplug_server\""},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In \"_hotplug_server\", when the new interfaces is added to the server,"},{"line_number":10,"context_line":"the function tries to configure the Neutron assigned IP address in"},{"line_number":11,"context_line":"this new interface. Although the IP addresses are listed before to"},{"line_number":12,"context_line":"check that the new port IP is not present, as reported in the bug,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df33271e_296f0c93","line":9,"range":{"start_line":9,"start_character":35,"end_line":9,"end_character":48},"updated":"2020-04-06 09:29:59.000000000","message":"nitty, nitty nit: \"interface is\" or \"interfaces are\" :)","commit_id":"1773488eddb083a0d829b87eff4e0405c057fc86"}],"tempest/scenario/test_network_basic_ops.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"0fb69da9a83c6751a6d0890a5749b11aca2276cd","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                        ip_address, ip_mask, new_nic))"},{"line_number":303,"context_line":"                ssh_client.exec_command(\"sudo ip link set %s up\" % new_nic)"},{"line_number":304,"context_line":"            except exceptions.SSHExecCommandFailed as exc:"},{"line_number":305,"context_line":"                if \u0027RTNETLINK answers: File exists\u0027 in str(exc):"},{"line_number":306,"context_line":"                    LOG.debug("},{"line_number":307,"context_line":"                        \u0027IP address %(ip_address)s is already set in device \u0027"},{"line_number":308,"context_line":"                        \u0027%(device)s\\nPrevious \"ip a\" output: %(ip_output)s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_b33a50e4","line":305,"range":{"start_line":305,"start_character":16,"end_line":305,"end_character":64},"updated":"2020-05-06 08:42:43.000000000","message":"I\u0027m curious when we get \"File exists\" error, what\u0027s the result of command \"ip a\" now? In other words, can we check command \"ip a\" on SSHExecCommandFailed exception, and ignore the exception when the result of \"ip a\" contains the ip_address?","commit_id":"1773488eddb083a0d829b87eff4e0405c057fc86"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"46ab13dd04a8f794ac7a8b68422da191c3b0bf46","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                        ip_address, ip_mask, new_nic))"},{"line_number":303,"context_line":"                ssh_client.exec_command(\"sudo ip link set %s up\" % new_nic)"},{"line_number":304,"context_line":"            except exceptions.SSHExecCommandFailed as exc:"},{"line_number":305,"context_line":"                if \u0027RTNETLINK answers: File exists\u0027 in str(exc):"},{"line_number":306,"context_line":"                    LOG.debug("},{"line_number":307,"context_line":"                        \u0027IP address %(ip_address)s is already set in device \u0027"},{"line_number":308,"context_line":"                        \u0027%(device)s\\nPrevious \"ip a\" output: %(ip_output)s\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_c5760507","line":305,"range":{"start_line":305,"start_character":16,"end_line":305,"end_character":64},"in_reply_to":"1f493fa4_b33a50e4","updated":"2020-05-08 10:15:04.000000000","message":"But that\u0027s the goal of this patch, to avoid this race condition. Sometimes we can see that, between the IP listing and the IP set, the IP address to be written is defined in the middle of those operations, despite of executing those commands one after the other.\n\nFor example, in our own CI system: http://paste.openstack.org/show/793310/\n\nBTW, in order to avoid this problem I can change the code to use \"ip a replace\" instead of \"ip a add\" because it\u0027s idempotent.","commit_id":"1773488eddb083a0d829b87eff4e0405c057fc86"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"98598b925d25733e4cef818362a30e62d33f12fc","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        ip_mask \u003d CONF.network.project_network_mask_bits"},{"line_number":298,"context_line":"        # check if the address is not already in use, if not, set it"},{"line_number":299,"context_line":"        if \u0027 \u0027 + ip_address + \u0027/\u0027 + str(ip_mask) not in ip_output:"},{"line_number":300,"context_line":"            ssh_client.exec_command(\"sudo ip addr replace %s/%s dev %s\" % ("},{"line_number":301,"context_line":"                                    ip_address, ip_mask, new_nic))"},{"line_number":302,"context_line":"            ssh_client.exec_command(\"sudo ip link set %s up\" % new_nic)"},{"line_number":303,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_eb46cb21","line":300,"range":{"start_line":300,"start_character":50,"end_line":300,"end_character":57},"updated":"2020-05-11 08:17:45.000000000","message":"cirros ip version does not support this input parameter:\n\nip: invalid argument \u0027replace\u0027 to \u0027ip\u0027\n\n\nI need to go back to the previous version.","commit_id":"20ff876fd07e4cee02bf217336e36b069a8445f3"}]}
