)]}'
{"neutron_tempest_plugin/common/ping.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"85f0746bb6adac9a521af4ec2609070df87eb04a","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def ping_command(destination, source\u003dNone, count\u003dPING_COUNT,"},{"line_number":30,"context_line":"                 size\u003dPING_SIZE, deadline\u003dPING_DEADLINE,"},{"line_number":31,"context_line":"                 interval\u003dPING_INTERVAL, ip_version\u003dNone, fragmentation\u003dTrue):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    if not ip_version:"},{"line_number":34,"context_line":"        ip_version \u003d netaddr.IPAddress(destination).version"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_9a7ae221","line":31,"range":{"start_line":31,"start_character":41,"end_line":31,"end_character":56},"updated":"2018-09-04 14:36:33.000000000","message":"does this argument make sense?  If destination address is IPv6 we have to use ping6, so could just decide based on that, right?","commit_id":"de3f7f8966487f79a0d161f09725507e77b54682"},{"author":{"_account_id":27329,"name":"Federico Ressi","email":"fressi@redhat.com","username":"fressi_redhat"},"change_message_id":"625574c183198d242587cc4f367ef9b13f13a777","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def ping_command(destination, source\u003dNone, count\u003dPING_COUNT,"},{"line_number":30,"context_line":"                 size\u003dPING_SIZE, deadline\u003dPING_DEADLINE,"},{"line_number":31,"context_line":"                 interval\u003dPING_INTERVAL, ip_version\u003dNone, fragmentation\u003dTrue):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    if not ip_version:"},{"line_number":34,"context_line":"        ip_version \u003d netaddr.IPAddress(destination).version"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_5bee0522","line":31,"range":{"start_line":31,"start_character":41,"end_line":31,"end_character":56},"in_reply_to":"3f79a3b5_9a7ae221","updated":"2018-10-03 09:49:58.000000000","message":"Done","commit_id":"de3f7f8966487f79a0d161f09725507e77b54682"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"85f0746bb6adac9a521af4ec2609070df87eb04a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        options +\u003d \u0027 -I {source}\u0027.format(source\u003dsource)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    if size:"},{"line_number":47,"context_line":"        options +\u003d \u0027 -s{size}\u0027.format(size\u003dint(size))"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    if count:"},{"line_number":50,"context_line":"        options +\u003d \u0027 -c{count}\u0027.format(count\u003dint(count))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_7a4a6627","line":47,"range":{"start_line":47,"start_character":22,"end_line":47,"end_character":24},"updated":"2018-09-04 14:36:33.000000000","message":"nit: should be consistent in putting space between option and argument, below as well","commit_id":"de3f7f8966487f79a0d161f09725507e77b54682"},{"author":{"_account_id":27329,"name":"Federico Ressi","email":"fressi@redhat.com","username":"fressi_redhat"},"change_message_id":"625574c183198d242587cc4f367ef9b13f13a777","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        options +\u003d \u0027 -I {source}\u0027.format(source\u003dsource)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    if size:"},{"line_number":47,"context_line":"        options +\u003d \u0027 -s{size}\u0027.format(size\u003dint(size))"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    if count:"},{"line_number":50,"context_line":"        options +\u003d \u0027 -c{count}\u0027.format(count\u003dint(count))"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_1bd88d7e","line":47,"range":{"start_line":47,"start_character":22,"end_line":47,"end_character":24},"in_reply_to":"3f79a3b5_7a4a6627","updated":"2018-10-03 09:49:58.000000000","message":"Done","commit_id":"de3f7f8966487f79a0d161f09725507e77b54682"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3117616dc15f09df8aacb21306614e41e4a1dea6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    if interval:"},{"line_number":65,"context_line":"        options +\u003d \u0027 -i \u0027 + str(int(interval))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    if not fragmentation:"},{"line_number":68,"context_line":"        options +\u003d \u0027 -M do\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    return \u0027{ping} {options} {destination}\u0027.format("}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_8c727f7b","line":67,"updated":"2018-10-02 09:32:06.000000000","message":"maybe You could add here some warning/error logging that it will not work if cirros image is used in tests","commit_id":"7d437f70aa89c1a2062a79da831b2d2b51ee173a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"64131a2898e07de0cc65f9d10f42541e779068af","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    if interval:"},{"line_number":65,"context_line":"        options +\u003d \u0027 -i \u0027 + str(int(interval))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    if not fragmentation:"},{"line_number":68,"context_line":"        options +\u003d \u0027 -M do\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    return \u0027{ping} {options} {destination}\u0027.format("}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_4fe67c15","line":67,"in_reply_to":"3f79a3b5_5e17109e","updated":"2018-10-03 11:50:39.000000000","message":"yes, that\u0027s exactly what I was thinking of. I remember that I spent some time on debugging issue in D/S test and it was cause by trying to use \"ping -M\" on cirros which don\u0027t works :)","commit_id":"7d437f70aa89c1a2062a79da831b2d2b51ee173a"},{"author":{"_account_id":27329,"name":"Federico Ressi","email":"fressi@redhat.com","username":"fressi_redhat"},"change_message_id":"625574c183198d242587cc4f367ef9b13f13a777","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    if interval:"},{"line_number":65,"context_line":"        options +\u003d \u0027 -i \u0027 + str(int(interval))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    if not fragmentation:"},{"line_number":68,"context_line":"        options +\u003d \u0027 -M do\u0027"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    return \u0027{ping} {options} {destination}\u0027.format("}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_5e17109e","line":67,"in_reply_to":"3f79a3b5_8c727f7b","updated":"2018-10-03 09:49:58.000000000","message":"I could check the config if advanced image is enabled and if not I would raise a ValueError to remember test developer to skip such type of test cases.","commit_id":"7d437f70aa89c1a2062a79da831b2d2b51ee173a"}],"neutron_tempest_plugin/config.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"85f0746bb6adac9a521af4ec2609070df87eb04a","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                    \"received.\"),"},{"line_number":66,"context_line":"    cfg.IntOpt(\u0027ping_interval\u0027,"},{"line_number":67,"context_line":"               default\u003d1,"},{"line_number":68,"context_line":"               help\u003d\"Ping waits for interval seconds between sending each \""},{"line_number":69,"context_line":"                    \"packet.\"),"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    # Option for feature to connect via SSH to VMs using an intermediate SSH"},{"line_number":72,"context_line":"    # server"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_da35ba46","line":69,"range":{"start_line":68,"start_character":21,"end_line":69,"end_character":27},"updated":"2018-09-04 14:36:33.000000000","message":"nit: can make like the other, since it needs a slight modification from the man page to make sense\n\n\"Specify an interval, in seconds, between sending each ping packet.\"","commit_id":"de3f7f8966487f79a0d161f09725507e77b54682"}],"neutron_tempest_plugin/scenario/loginable.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"85f0746bb6adac9a521af4ec2609070df87eb04a","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":312,"context_line":"                self.log_server_console_output(port\u003dport)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def ping_to_port(self, destination_port\u003dNone, source_port\u003dNone,"},{"line_number":315,"context_line":"                     ssh_client\u003dNone, ip_version\u003dNone, **ping_params):"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        ip_version \u003d ip_version or self._ip_version"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_5add2adb","line":314,"range":{"start_line":314,"start_character":27,"end_line":314,"end_character":48},"updated":"2018-09-04 14:36:33.000000000","message":"Can this be None?  seems to be required argument","commit_id":"de3f7f8966487f79a0d161f09725507e77b54682"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"85f0746bb6adac9a521af4ec2609070df87eb04a","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                self.log_server_console_output(port\u003dport)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    def ping_to_port(self, destination_port\u003dNone, source_port\u003dNone,"},{"line_number":315,"context_line":"                     ssh_client\u003dNone, ip_version\u003dNone, **ping_params):"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        ip_version \u003d ip_version or self._ip_version"},{"line_number":318,"context_line":"        destination \u003d get_fixed_ip(destination_port, ip_version\u003dip_version)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_da5cda7e","line":315,"range":{"start_line":315,"start_character":38,"end_line":315,"end_character":53},"updated":"2018-09-04 14:36:33.000000000","message":"like the other place, do you ever specify a destination different from the version?  probably not needed","commit_id":"de3f7f8966487f79a0d161f09725507e77b54682"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"85f0746bb6adac9a521af4ec2609070df87eb04a","unresolved":false,"context_lines":[{"line_number":344,"context_line":"    def log_server_console_output(self, server\u003dNone, port\u003dNone, client\u003dNone):"},{"line_number":345,"context_line":"        if server is None:"},{"line_number":346,"context_line":"            server_id \u003d port.get(\u0027server_id\u0027)"},{"line_number":347,"context_line":"            if server_id is None:"},{"line_number":348,"context_line":"                LOG.warning(\"Port was never used with \""},{"line_number":349,"context_line":"                            \"create_loginable_server method.\")"},{"line_number":350,"context_line":"                return"},{"line_number":351,"context_line":"        else:"},{"line_number":352,"context_line":"            server_id \u003d server[\u0027id\u0027]"},{"line_number":353,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_7a5fc640","line":350,"range":{"start_line":347,"start_character":12,"end_line":350,"end_character":22},"updated":"2018-09-04 14:36:33.000000000","message":"should this block be after L352?  for example, if server[\u0027id\u0027] can be None it would catch it too","commit_id":"de3f7f8966487f79a0d161f09725507e77b54682"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3117616dc15f09df8aacb21306614e41e4a1dea6","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            ssh_port \u003d destination_port"},{"line_number":499,"context_line":"            source \u003d None"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        ssh_client \u003d ssh_client or self.ssh_client_to_port(port\u003dssh_port)"},{"line_number":502,"context_line":"        command \u003d ping.ping_command(source\u003dsource,"},{"line_number":503,"context_line":"                                    destination\u003ddestination,"},{"line_number":504,"context_line":"                                    **ping_params)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_ec5773c8","line":501,"updated":"2018-10-02 09:32:06.000000000","message":"am I missunderstanding something or You are connect via ssh to destination port if there is no source and execute \"ping \u003cdest_ip\u003e\" from destination node? IMO You should execute ping command from local host (where test is running) if there is no source_port given","commit_id":"7d437f70aa89c1a2062a79da831b2d2b51ee173a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"64131a2898e07de0cc65f9d10f42541e779068af","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            ssh_port \u003d destination_port"},{"line_number":499,"context_line":"            source \u003d None"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        ssh_client \u003d ssh_client or self.ssh_client_to_port(port\u003dssh_port)"},{"line_number":502,"context_line":"        command \u003d ping.ping_command(source\u003dsource,"},{"line_number":503,"context_line":"                                    destination\u003ddestination,"},{"line_number":504,"context_line":"                                    **ping_params)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_cfa84c8c","line":501,"in_reply_to":"3f79a3b5_be0e643a","updated":"2018-10-03 11:50:39.000000000","message":"Ok, but maybe some short comment with explanation would be useful here also :) To not make other readers confused in the future","commit_id":"7d437f70aa89c1a2062a79da831b2d2b51ee173a"},{"author":{"_account_id":27329,"name":"Federico Ressi","email":"fressi@redhat.com","username":"fressi_redhat"},"change_message_id":"625574c183198d242587cc4f367ef9b13f13a777","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            ssh_port \u003d destination_port"},{"line_number":499,"context_line":"            source \u003d None"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"        ssh_client \u003d ssh_client or self.ssh_client_to_port(port\u003dssh_port)"},{"line_number":502,"context_line":"        command \u003d ping.ping_command(source\u003dsource,"},{"line_number":503,"context_line":"                                    destination\u003ddestination,"},{"line_number":504,"context_line":"                                    **ping_params)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_be0e643a","line":501,"in_reply_to":"3f79a3b5_ec5773c8","updated":"2018-10-03 09:49:58.000000000","message":"The command accept one or two ports in input:\n- 2 ports means ping from source to destination port\n- 1 port means ping from the port to himself.\nThe case of 1 port could be used to check IP stack is properly configured to work (it has the IP address? it is routing?). I created this before writing the code that gets actual IP addresses using \u0027ip address show\u0027 command. So the user case for it is now the following: to verify IP is properly set up execute this command with only one port. If it fails to ping then it is going to investigate on the reasons it fails (IPs, routes, etc). This is equivalent to check connectivity method. It is a safe way to check many things in one single call:\n- Is floating IP is working?\n- Is IP stack well configured?\n- If not, why is not configured well?\nLet assume you are writing a test case for multicast. If you want to see for example why multicast messages are not being delivered, then you can executed this method in the error handling code block to have better error reporting.\nThis is not the last version of this code, I have a better version of this patch almost ready for review.","commit_id":"7d437f70aa89c1a2062a79da831b2d2b51ee173a"}]}
