)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"e9a112deac2e5c09de6cff2c08a0d1378babb53e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In isolated jobs tenant network is being created for each test"},{"line_number":10,"context_line":"and host doesn\u0027t have direct access to it. To solve this problem"},{"line_number":11,"context_line":"we need to assign a floating ip to the server and use it unstead."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Also fix inconsistent ssh timeout used in loadbalancer scenario."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUH%2F9VgU%3D","line":11,"updated":"2014-02-07 16:38:04.000000000","message":"s/unstead/instead/","commit_id":"b1dab0262d870337358130f9176f97c8bcc2c766"}],"tempest/scenario/test_load_balancer_basic.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"fa03d1547d83d38690a14ec9d964f10ce13c397c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                   \u0027public_network_id must be defined.\u0027)"},{"line_number":56,"context_line":"            cls.enabled \u003d False"},{"line_number":57,"context_line":"            raise cls.skipException(msg)"},{"line_number":58,"context_line":"        if config.compute.allow_tenant_isolation and \\"},{"line_number":59,"context_line":"                (not config.network.tenant_networks_reachable):"},{"line_number":60,"context_line":"            msg \u003d (\u0027Tenant networks must configured to be reachable \u0027"},{"line_number":61,"context_line":"                   \u0027for isolated tests.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9WoM%3D","line":58,"updated":"2014-02-07 14:31:14.000000000","message":"use parens instead of \\:\n if (config.compute.allow_tenant_isolation and\n     not config.network.tenant_networks_reachable): \n     ...","commit_id":"1b9158183e2654ad58e12e0affd235f613783437"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"799ab3df4f58ce086a57994eeded9eadd859067a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                   \u0027public_network_id must be defined.\u0027)"},{"line_number":56,"context_line":"            cls.enabled \u003d False"},{"line_number":57,"context_line":"            raise cls.skipException(msg)"},{"line_number":58,"context_line":"        if config.compute.allow_tenant_isolation and \\"},{"line_number":59,"context_line":"                (not config.network.tenant_networks_reachable):"},{"line_number":60,"context_line":"            msg \u003d (\u0027Tenant networks must configured to be reachable \u0027"},{"line_number":61,"context_line":"                   \u0027for isolated tests.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9WfA%3D","line":58,"in_reply_to":"AAAAUH%2F9WoM%3D","updated":"2014-02-07 14:52:41.000000000","message":"Done","commit_id":"1b9158183e2654ad58e12e0affd235f613783437"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"87b897a3aa644364de34936af48a18f889edbde8","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                   \u0027public_network_id must be defined.\u0027)"},{"line_number":56,"context_line":"            cls.enabled \u003d False"},{"line_number":57,"context_line":"            raise cls.skipException(msg)"},{"line_number":58,"context_line":"        if (config.compute.allow_tenant_isolation and"},{"line_number":59,"context_line":"                not config.network.tenant_networks_reachable):"},{"line_number":60,"context_line":"            msg \u003d (\u0027Tenant networks must configured to be reachable \u0027"},{"line_number":61,"context_line":"                   \u0027for isolated tests.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9WLk%3D","line":58,"updated":"2014-02-07 15:28:22.000000000","message":"So we\u0027re moving the neutron gate jobs to be only tenant isolated. This will prevent us from running this test in the gate. If this is the long term solution we should just remove the scenario instead because then it won\u0027t ever be run with proposed commits. When that happens things tend to bitrot fairly quickly. It\u0027s why we have a policy that things don\u0027t get approved unless they run in the gate.\n\nIs there a path to enabling this test with tenant isolation? If so open a bug outlining the steps and make this a skip_because with the bug number on the test method below ( you can still keep the conditions that way)\n\nOtherwise I think https://review.openstack.org/#/c/71738/ is the solution.","commit_id":"c720ed051546d7218ecbfc87598f9e6ce3503e7e"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"069ceece56bf11274adc1e0c5c26f03e4433b8be","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                   \u0027public_network_id must be defined.\u0027)"},{"line_number":56,"context_line":"            cls.enabled \u003d False"},{"line_number":57,"context_line":"            raise cls.skipException(msg)"},{"line_number":58,"context_line":"        if (config.compute.allow_tenant_isolation and"},{"line_number":59,"context_line":"                not config.network.tenant_networks_reachable):"},{"line_number":60,"context_line":"            msg \u003d (\u0027Tenant networks must configured to be reachable \u0027"},{"line_number":61,"context_line":"                   \u0027for isolated tests.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9WHU%3D","line":58,"in_reply_to":"AAAAUH%2F9WLk%3D","updated":"2014-02-07 15:36:39.000000000","message":"There is another solution of this problem.\n\nThe test works if we assign a floating ip to a server. I am going to upload a patch right now.","commit_id":"c720ed051546d7218ecbfc87598f9e6ce3503e7e"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b40d2855a6be12dcf4f74b393be273fbd731334a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    def _start_servers(self):"},{"line_number":105,"context_line":"        \"\"\""},{"line_number":106,"context_line":"        1. SSH to the instance"},{"line_number":107,"context_line":"        2. Start two servers listening on ports 80 and 88 respectively"},{"line_number":108,"context_line":"        \"\"\""},{"line_number":109,"context_line":"        for floating_ip, server in self.floating_ips.iteritems():"},{"line_number":110,"context_line":"            ssh_login \u003d config.compute.image_ssh_user"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9V%2F8%3D","line":107,"updated":"2014-02-07 15:49:37.000000000","message":"please fix the commen:\n \u00272. Start two http backends ... \n\n\u0027servers\u0027 are VMs in terms of tempest","commit_id":"78564540fcfcfb7b482964d8d4d47d025350d92c"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"e37ccfed93162019b5ef2cbae0e68093bf46e0d0","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    def _start_servers(self):"},{"line_number":105,"context_line":"        \"\"\""},{"line_number":106,"context_line":"        1. SSH to the instance"},{"line_number":107,"context_line":"        2. Start two servers listening on ports 80 and 88 respectively"},{"line_number":108,"context_line":"        \"\"\""},{"line_number":109,"context_line":"        for floating_ip, server in self.floating_ips.iteritems():"},{"line_number":110,"context_line":"            ssh_login \u003d config.compute.image_ssh_user"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9V4A%3D","line":107,"in_reply_to":"AAAAUH%2F9V%2F8%3D","updated":"2014-02-07 15:58:36.000000000","message":"Done","commit_id":"78564540fcfcfb7b482964d8d4d47d025350d92c"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"e9a112deac2e5c09de6cff2c08a0d1378babb53e","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        for count in range(10):"},{"line_number":219,"context_line":"            resp.append("},{"line_number":220,"context_line":"                urllib.urlopen("},{"line_number":221,"context_line":"                    \"http://{0}/\".format(floating_ip_vip)).read())"},{"line_number":222,"context_line":"        self.assertEqual({\"server1\\n\", \"server2\\n\"}, set(resp))"},{"line_number":223,"context_line":"        self.assertEqual(5, resp.count(\"server1\\n\"))"},{"line_number":224,"context_line":"        self.assertEqual(5, resp.count(\"server2\\n\"))"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F9Vf8%3D","line":221,"updated":"2014-02-07 16:38:04.000000000","message":"python 2.6 does not have set expression, but you can use set((\"server1\\n\", \"server2\\n\"))","commit_id":"b1dab0262d870337358130f9176f97c8bcc2c766"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"01d7ab35fc3fac00d981065f80b1ec9191c10810","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        for count in range(10):"},{"line_number":219,"context_line":"            resp.append("},{"line_number":220,"context_line":"                urllib.urlopen("},{"line_number":221,"context_line":"                    \"http://{0}/\".format(floating_ip_vip)).read())"},{"line_number":222,"context_line":"        self.assertEqual({\"server1\\n\", \"server2\\n\"}, set(resp))"},{"line_number":223,"context_line":"        self.assertEqual(5, resp.count(\"server1\\n\"))"},{"line_number":224,"context_line":"        self.assertEqual(5, resp.count(\"server2\\n\"))"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F9VbM%3D","line":221,"in_reply_to":"AAAAUH%2F9Vf8%3D","updated":"2014-02-07 16:53:07.000000000","message":"This issue is outside the scope of this change.","commit_id":"b1dab0262d870337358130f9176f97c8bcc2c766"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"31ba5c1f1f035fe03bbcf4162c1bab11245a27d3","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                public_network_id \u003d config.network.public_network_id"},{"line_number":98,"context_line":"                floating_ip \u003d self._create_floating_ip("},{"line_number":99,"context_line":"                    server, public_network_id)"},{"line_number":100,"context_line":"                self.floating_ips[floating_ip] \u003d server"},{"line_number":101,"context_line":"                break"},{"line_number":102,"context_line":"        self.assertTrue(self.servers_keypairs)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F9U4g%3D","line":100,"updated":"2014-02-07 18:03:02.000000000","message":"as you\u0027re creating two servers perhaps you could just create a single floating IP and then reassign it from one server to another.\nThis just for preventing possible exhaustion of ip pool on the public network once parallelism is enabled.","commit_id":"5c44ecb332d2be4a07a43807026387a6876bdb0f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b3cccacda2942ff8f1758880ffda3257762ea16b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                public_network_id \u003d config.network.public_network_id"},{"line_number":98,"context_line":"                floating_ip \u003d self._create_floating_ip("},{"line_number":99,"context_line":"                    server, public_network_id)"},{"line_number":100,"context_line":"                self.floating_ips[floating_ip] \u003d server"},{"line_number":101,"context_line":"                break"},{"line_number":102,"context_line":"        self.assertTrue(self.servers_keypairs)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F9UzA%3D","line":100,"in_reply_to":"AAAAUH%2F9U3M%3D","updated":"2014-02-07 18:17:04.000000000","message":"cool np","commit_id":"5c44ecb332d2be4a07a43807026387a6876bdb0f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"7ddffc08a90bc0eadc98b811966762418c83c7d6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                public_network_id \u003d config.network.public_network_id"},{"line_number":98,"context_line":"                floating_ip \u003d self._create_floating_ip("},{"line_number":99,"context_line":"                    server, public_network_id)"},{"line_number":100,"context_line":"                self.floating_ips[floating_ip] \u003d server"},{"line_number":101,"context_line":"                break"},{"line_number":102,"context_line":"        self.assertTrue(self.servers_keypairs)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F9U3M%3D","line":100,"in_reply_to":"AAAAUH%2F9U4g%3D","updated":"2014-02-07 18:04:48.000000000","message":"Salvatore, there is only one server created, I asked Elena to fix confusing comment below.","commit_id":"5c44ecb332d2be4a07a43807026387a6876bdb0f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"69a4e3ac300f4de1a0f1e8c90efc3b837c86bd6c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        keypair \u003d self.create_keypair(name\u003d\u0027keypair-%s\u0027 % name)"},{"line_number":80,"context_line":"        security_groups \u003d [self.security_groups[tenant_id].name]"},{"line_number":81,"context_line":"        net \u003d self._list_networks(tenant_id\u003dself.tenant_id)[0]"},{"line_number":82,"context_line":"        self.network \u003d net_common.DeletableNetwork(client\u003dself.network_client,"},{"line_number":83,"context_line":"                                                   **net)"},{"line_number":84,"context_line":"        create_kwargs \u003d {"},{"line_number":85,"context_line":"            \u0027nics\u0027: ["}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2F8T0%3D","line":82,"updated":"2014-02-27 08:16:30.000000000","message":"is this ever used?","commit_id":"129f3e81ced9bc5dfb79d49deb5da526054b28b0"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"02ba57fd5dc9e7ab57bc850f51c0bd4b7f3d26f4","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            self.floating_ips[floating_ip] \u003d server"},{"line_number":100,"context_line":"            self.server_ip \u003d floating_ip.floating_ip_address"},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            self.server_ip \u003d server.networks[net[\u0027name\u0027]][0]"},{"line_number":103,"context_line":"        self.assertTrue(self.servers_keypairs)"},{"line_number":104,"context_line":"        return server"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAU3%2F%2FclA%3D","line":102,"updated":"2014-02-26 15:44:11.000000000","message":"Why not net.name instead of net[\u0027name\u0027]","commit_id":"129f3e81ced9bc5dfb79d49deb5da526054b28b0"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"788e8ed6bddecd8c87a3e37270c0fc981046818f","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            self.floating_ips[floating_ip] \u003d server"},{"line_number":100,"context_line":"            self.server_ip \u003d floating_ip.floating_ip_address"},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            self.server_ip \u003d server.networks[net[\u0027name\u0027]][0]"},{"line_number":103,"context_line":"        self.assertTrue(self.servers_keypairs)"},{"line_number":104,"context_line":"        return server"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2F81w%3D","line":102,"in_reply_to":"AAAAU3%2F%2FclA%3D","updated":"2014-02-27 07:11:46.000000000","message":"Dict-like access is preferred, but also \"net\" here is dictionary, so attribute is not available.","commit_id":"129f3e81ced9bc5dfb79d49deb5da526054b28b0"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"7f91beb3476e548faa92371e0c99c0982f3725be","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            self.floating_ips[floating_ip] \u003d server"},{"line_number":100,"context_line":"            self.server_ip \u003d floating_ip.floating_ip_address"},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            self.server_ip \u003d server.networks[net[\u0027name\u0027]][0]"},{"line_number":103,"context_line":"        self.assertTrue(self.servers_keypairs)"},{"line_number":104,"context_line":"        return server"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2F8zs%3D","line":102,"in_reply_to":"AAAAVX%2F%2F81w%3D","updated":"2014-02-27 07:26:54.000000000","message":"net is assigned to self.network - and that\u0027s an object.","commit_id":"129f3e81ced9bc5dfb79d49deb5da526054b28b0"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"02ba57fd5dc9e7ab57bc850f51c0bd4b7f3d26f4","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        ssh_login \u003d config.compute.image_ssh_user"},{"line_number":113,"context_line":"        private_key \u003d self.servers_keypairs[server].private_key"},{"line_number":114,"context_line":"        ssh_client \u003d ssh.Client("},{"line_number":115,"context_line":"            self.server_ip, ssh_login,"},{"line_number":116,"context_line":"            pkey\u003dprivate_key,"},{"line_number":117,"context_line":"            timeout\u003dconfig.compute.ssh_timeout,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAU3%2F%2Fckg%3D","line":114,"updated":"2014-02-26 15:44:11.000000000","message":"Why not use \nself.get_remote_client(server_or_ip\u003dip_address, username\u003dssh_login, private_key\u003dprivate_key)","commit_id":"129f3e81ced9bc5dfb79d49deb5da526054b28b0"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"788e8ed6bddecd8c87a3e37270c0fc981046818f","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        ssh_login \u003d config.compute.image_ssh_user"},{"line_number":113,"context_line":"        private_key \u003d self.servers_keypairs[server].private_key"},{"line_number":114,"context_line":"        ssh_client \u003d ssh.Client("},{"line_number":115,"context_line":"            self.server_ip, ssh_login,"},{"line_number":116,"context_line":"            pkey\u003dprivate_key,"},{"line_number":117,"context_line":"            timeout\u003dconfig.compute.ssh_timeout,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2F82g%3D","line":114,"in_reply_to":"AAAAU3%2F%2Fckg%3D","updated":"2014-02-27 07:11:46.000000000","message":"Looks like RemoteClient is a wrapper on top of ssh.Client but it doesn\u0027t expose exec_command.\nIn order to use RemoteClient here, it needs to be improved. I think RemoteClient is not necessary here, but is an option.","commit_id":"129f3e81ced9bc5dfb79d49deb5da526054b28b0"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"7f91beb3476e548faa92371e0c99c0982f3725be","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        ssh_login \u003d config.compute.image_ssh_user"},{"line_number":113,"context_line":"        private_key \u003d self.servers_keypairs[server].private_key"},{"line_number":114,"context_line":"        ssh_client \u003d ssh.Client("},{"line_number":115,"context_line":"            self.server_ip, ssh_login,"},{"line_number":116,"context_line":"            pkey\u003dprivate_key,"},{"line_number":117,"context_line":"            timeout\u003dconfig.compute.ssh_timeout,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2F8wg%3D","line":114,"in_reply_to":"AAAAVX%2F%2F82g%3D","updated":"2014-02-27 07:26:54.000000000","message":"then use RemoteClient.ssh_client. that\u0027s basically the same thing","commit_id":"129f3e81ced9bc5dfb79d49deb5da526054b28b0"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"02ba57fd5dc9e7ab57bc850f51c0bd4b7f3d26f4","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            pkey\u003dprivate_key,"},{"line_number":117,"context_line":"            timeout\u003dconfig.compute.ssh_timeout,"},{"line_number":118,"context_line":"            channel_timeout\u003dconfig.compute.ssh_channel_timeout)"},{"line_number":119,"context_line":"        start_server \u003d \"while true; do echo -e \u0027HTTP/1.0 200 OK\\r\\n\\r\\n\" \\"},{"line_number":120,"context_line":"                       \"%(server)s\u0027 | sudo nc -l -p %(port)s ; done \u0026\""},{"line_number":121,"context_line":"        cmd \u003d start_server % {\u0027server\u0027: \u0027server1\u0027,"},{"line_number":122,"context_line":"                              \u0027port\u0027: self.port1}"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAU3%2F%2Fcl8%3D","line":119,"updated":"2014-02-26 15:44:11.000000000","message":"shouldn\u0027t this go in tempest/common/utils/linux/remote_client.py?","commit_id":"129f3e81ced9bc5dfb79d49deb5da526054b28b0"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"788e8ed6bddecd8c87a3e37270c0fc981046818f","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            pkey\u003dprivate_key,"},{"line_number":117,"context_line":"            timeout\u003dconfig.compute.ssh_timeout,"},{"line_number":118,"context_line":"            channel_timeout\u003dconfig.compute.ssh_channel_timeout)"},{"line_number":119,"context_line":"        start_server \u003d \"while true; do echo -e \u0027HTTP/1.0 200 OK\\r\\n\\r\\n\" \\"},{"line_number":120,"context_line":"                       \"%(server)s\u0027 | sudo nc -l -p %(port)s ; done \u0026\""},{"line_number":121,"context_line":"        cmd \u003d start_server % {\u0027server\u0027: \u0027server1\u0027,"},{"line_number":122,"context_line":"                              \u0027port\u0027: self.port1}"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVX%2F%2F84g%3D","line":119,"in_reply_to":"AAAAU3%2F%2Fcl8%3D","updated":"2014-02-27 07:11:46.000000000","message":"No. we need specific command here. It\u0027s not any kind of \u0027util\u0027","commit_id":"129f3e81ced9bc5dfb79d49deb5da526054b28b0"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"5411932d8de5a935e1b4c6d5db0669754b034137","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        private_key \u003d self.servers_keypairs[server].private_key"},{"line_number":111,"context_line":"        ssh_client \u003d self.get_remote_client("},{"line_number":112,"context_line":"            server_or_ip\u003dself.server_ip,"},{"line_number":113,"context_line":"            username\u003dssh_login,"},{"line_number":114,"context_line":"            private_key\u003dprivate_key).ssh_client"},{"line_number":115,"context_line":"        start_server \u003d \"while true; do echo -e \u0027HTTP/1.0 200 OK\\r\\n\\r\\n\" \\"},{"line_number":116,"context_line":"                       \"%(server)s\u0027 | sudo nc -l -p %(port)s ; done \u0026\""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAVX%2F%2FpBA%3D","line":113,"updated":"2014-03-02 06:25:34.000000000","message":"nit - that\u0027s already the default of get_remote_client()","commit_id":"f03b7be682afb52ac6e902305770eda9a0fb39f9"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"7d8f1043220d01cbe50b006ed48c47a69b55bc78","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        private_key \u003d self.servers_keypairs[server].private_key"},{"line_number":111,"context_line":"        ssh_client \u003d self.get_remote_client("},{"line_number":112,"context_line":"            server_or_ip\u003dself.server_ip,"},{"line_number":113,"context_line":"            username\u003dssh_login,"},{"line_number":114,"context_line":"            private_key\u003dprivate_key).ssh_client"},{"line_number":115,"context_line":"        start_server \u003d \"while true; do echo -e \u0027HTTP/1.0 200 OK\\r\\n\\r\\n\" \\"},{"line_number":116,"context_line":"                       \"%(server)s\u0027 | sudo nc -l -p %(port)s ; done \u0026\""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAVn%2F%2F6Oo%3D","line":113,"in_reply_to":"AAAAVX%2F%2FpBA%3D","updated":"2014-03-03 13:53:23.000000000","message":"Done","commit_id":"f03b7be682afb52ac6e902305770eda9a0fb39f9"}]}
