)]}'
{"tempest/api/compute/base.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e4f8fcd9b34752c2213a14c5ba7807a738fcb132","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                if address[\u0027version\u0027] \u003d\u003d CONF.validation.ip_version_for_ssh:"},{"line_number":369,"context_line":"                    return address[\u0027addr\u0027]"},{"line_number":370,"context_line":"            raise exceptions.ServerUnreachable()"},{"line_number":371,"context_line":"        raise exceptions.ServerUnreachable()"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"class BaseV2ComputeAdminTest(BaseV2ComputeTest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_7fcf9eb0","line":371,"updated":"2016-01-28 09:19:57.000000000","message":"This is a configuration error. If CONF.validation.connect_method is neither floating nor fixed, it\u0027s a bogus conf.","commit_id":"e96faf39323036b8dc108c193b197fc428a6425c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"e2f1f7a45d6c596e109256f769d29a7a1439ae86","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                if address[\u0027version\u0027] \u003d\u003d CONF.validation.ip_version_for_ssh:"},{"line_number":369,"context_line":"                    return address[\u0027addr\u0027]"},{"line_number":370,"context_line":"            raise exceptions.ServerUnreachable()"},{"line_number":371,"context_line":"        raise exceptions.ServerUnreachable()"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"class BaseV2ComputeAdminTest(BaseV2ComputeTest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_bfc196e6","line":371,"in_reply_to":"7a5de9d1_1ff9ca80","updated":"2016-01-28 09:27:41.000000000","message":"It doesn\u0027t mean it can\u0027t be changed to \"foobar\".","commit_id":"e96faf39323036b8dc108c193b197fc428a6425c"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"e642a966844ca1740e20ac749ba5101d49990e0a","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                if address[\u0027version\u0027] \u003d\u003d CONF.validation.ip_version_for_ssh:"},{"line_number":369,"context_line":"                    return address[\u0027addr\u0027]"},{"line_number":370,"context_line":"            raise exceptions.ServerUnreachable()"},{"line_number":371,"context_line":"        raise exceptions.ServerUnreachable()"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"class BaseV2ComputeAdminTest(BaseV2ComputeTest):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_1ff9ca80","line":371,"in_reply_to":"7a5de9d1_7fcf9eb0","updated":"2016-01-28 09:23:57.000000000","message":"CONF.validation.connect_method is floating by default.","commit_id":"e96faf39323036b8dc108c193b197fc428a6425c"}],"tempest/api/compute/servers/test_create_server.py":[{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"6133bdb4e4e4dd2f7286492064fd4e19f893a5b8","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        flavor \u003d self.flavors_client.show_flavor(self.flavor_ref)[\u0027flavor\u0027]"},{"line_number":119,"context_line":"        linux_client \u003d remote_client.RemoteClient("},{"line_number":120,"context_line":"            self.server,"},{"line_number":121,"context_line":"            self.validation_resources[\u0027floating_ip\u0027][\u0027ip\u0027],"},{"line_number":122,"context_line":"            self.ssh_user,"},{"line_number":123,"context_line":"            self.password,"},{"line_number":124,"context_line":"            self.validation_resources[\u0027keypair\u0027][\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_bf6fd929","line":121,"updated":"2016-01-24 01:53:39.000000000","message":"Will it wok when the \"fixed\" method to connect to instances is chosen? It looks like in this case we will get the \"KeyError\" exception. Maybe I am missing something...","commit_id":"c3e6ddbe7d72bc8db58d845b034628214045a2df"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"94ea26c211e05789779568761e1ee3037a35158d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        flavor \u003d self.flavors_client.show_flavor(self.flavor_ref)[\u0027flavor\u0027]"},{"line_number":119,"context_line":"        linux_client \u003d remote_client.RemoteClient("},{"line_number":120,"context_line":"            self.server,"},{"line_number":121,"context_line":"            self.validation_resources[\u0027floating_ip\u0027][\u0027ip\u0027],"},{"line_number":122,"context_line":"            self.ssh_user,"},{"line_number":123,"context_line":"            self.password,"},{"line_number":124,"context_line":"            self.validation_resources[\u0027keypair\u0027][\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_1167e2e9","line":121,"in_reply_to":"9a68dd71_bf6fd929","updated":"2016-01-25 09:53:22.000000000","message":"No, I\u0027ve not modified the way ssh validation is made with fixed IPs. This is the original implementation.","commit_id":"c3e6ddbe7d72bc8db58d845b034628214045a2df"}],"tempest/common/utils/linux/remote_client.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"36cff9e8b8e8944431d5fe157b004c2cf6bc315e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                if address[\u0027version\u0027] \u003d\u003d ip_version:"},{"line_number":44,"context_line":"                    ip_address \u003d address[\u0027addr\u0027]"},{"line_number":45,"context_line":"                    break"},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            raise exceptions.ServerUnreachable()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.ssh_client \u003d ssh.Client(ip_address, username, password,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_ddfdd0b1","line":46,"updated":"2016-01-15 10:21:17.000000000","message":"Nope. The \"else\" was correctly indented. We need to raise an exception in case, for example, ip_version \u003d 6 but the server only has IPv4 addresses.","commit_id":"171ce9a2f2623541efd24df2c4b63564c15540c0"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"20a0457e3277a878369ae7ec1b04cc2ee307d51d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                if address[\u0027version\u0027] \u003d\u003d ip_version:"},{"line_number":44,"context_line":"                    ip_address \u003d address[\u0027addr\u0027]"},{"line_number":45,"context_line":"                    break"},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            raise exceptions.ServerUnreachable()"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.ssh_client \u003d ssh.Client(ip_address, username, password,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_20f5e0eb","line":46,"in_reply_to":"da6ed579_ddfdd0b1","updated":"2016-01-15 10:40:52.000000000","message":"Done","commit_id":"171ce9a2f2623541efd24df2c4b63564c15540c0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"3b47768b9e99efd64968293fd9df2acf2c6c6bf4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class RemoteClient(object):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # NOTE(afazekas): It should always get an address instead of server"},{"line_number":31,"context_line":"    def __init__(self, server, ip_address\u003dNone, username\u003dNone,"},{"line_number":32,"context_line":"                 password\u003dNone, pkey\u003dNone):"},{"line_number":33,"context_line":"        ssh_timeout \u003d CONF.validation.ssh_timeout"},{"line_number":34,"context_line":"        network \u003d CONF.validation.network_for_ssh"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_ba61b9d5","line":31,"updated":"2016-01-17 17:33:01.000000000","message":"Let\u0027s see if I can ask more while we are at it:\n\nIn case \"CONF.validation.connect_method \u003d\u003d \u0027fixed\u0027\" we inspect the addresses of `server`. Why can\u0027t we do the same thing in case connect_method \u003d\u003d \u0027floating\u0027 ? It should be possible to find the floating IP of the server by iterating over its addresses.\n\nWhen I do a \"nova show\" on a server with a floating IP, I get \"...{\"OS-EXT-IPS-MAC:mac_addr\": \"fa:16:3e:d1:d7:c1\", \"version\": 4, \"addr\": \"167.a.b.199\", \"OS-EXT-IPS:type\": \"floating\"}...\"\n\nThis way, we could do without the \"ip_address\" parameter, which simplifies the signature of this `init` method.","commit_id":"a97feb8bd5233badea8ca57167ee1e2a3b492d2e"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"7e71be7c9ad3617a27622d4312bcf3c0ac55ed1e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class RemoteClient(object):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # NOTE(afazekas): It should always get an address instead of server"},{"line_number":31,"context_line":"    def __init__(self, server, ip_address\u003dNone, username\u003dNone,"},{"line_number":32,"context_line":"                 password\u003dNone, pkey\u003dNone):"},{"line_number":33,"context_line":"        ssh_timeout \u003d CONF.validation.ssh_timeout"},{"line_number":34,"context_line":"        network \u003d CONF.validation.network_for_ssh"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_e6d785eb","line":31,"in_reply_to":"da6ed579_0dee7fec","updated":"2016-01-18 11:21:49.000000000","message":"I don\u0027t agree :) We are already doing \"discovery\" for the fixed IP here so I don\u0027t see why we can\"t do the same for floating IP. \n\nI suggest we wait for Sean\u0027s input. And also raise this at the next QA meeting.","commit_id":"a97feb8bd5233badea8ca57167ee1e2a3b492d2e"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"5b31b1c96546e2fb696d7f7fe497a9223750511b","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class RemoteClient(object):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # NOTE(afazekas): It should always get an address instead of server"},{"line_number":31,"context_line":"    def __init__(self, server, ip_address\u003dNone, username\u003dNone,"},{"line_number":32,"context_line":"                 password\u003dNone, pkey\u003dNone):"},{"line_number":33,"context_line":"        ssh_timeout \u003d CONF.validation.ssh_timeout"},{"line_number":34,"context_line":"        network \u003d CONF.validation.network_for_ssh"}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_0dee7fec","line":31,"in_reply_to":"da6ed579_ba61b9d5","updated":"2016-01-18 09:00:19.000000000","message":"In fact, I don\u0027t want to have a discovery of the IP there (or anywhere) as it will be very complex to identify the correct IP in the case of multiple fixed or floating IPs attached to a server.\nI agree it would simplify the method but I would much prefer to specifically give the IP we want to use for the ssh validation.\nI have not thought through yet, but I would even prefer to be able to give the fixed IP as well without any discovery.","commit_id":"a97feb8bd5233badea8ca57167ee1e2a3b492d2e"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"c33697533ce2311d5124319e17d255a8dd05698d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class RemoteClient(object):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # NOTE(afazekas): It should always get an address instead of server"},{"line_number":31,"context_line":"    def __init__(self, server, ip_address\u003dNone, username\u003dNone,"},{"line_number":32,"context_line":"                 password\u003dNone, pkey\u003dNone):"},{"line_number":33,"context_line":"        ssh_timeout \u003d CONF.validation.ssh_timeout"},{"line_number":34,"context_line":"        network \u003d CONF.validation.network_for_ssh"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_2ffa5bbe","line":31,"updated":"2016-01-21 07:47:36.000000000","message":"The server should be optional arg, and it might be removed in the future if we can start using kwargs.","commit_id":"c3e6ddbe7d72bc8db58d845b034628214045a2df"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"a3dd2eaed6b185c56ca5d3da971959e89acba2a3","unresolved":false,"context_lines":[{"line_number":28,"context_line":"class RemoteClient(object):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # NOTE(afazekas): It should always get an address instead of server"},{"line_number":31,"context_line":"    def __init__(self, server, ip_address\u003dNone, username\u003dNone,"},{"line_number":32,"context_line":"                 password\u003dNone, pkey\u003dNone):"},{"line_number":33,"context_line":"        ssh_timeout \u003d CONF.validation.ssh_timeout"},{"line_number":34,"context_line":"        network \u003d CONF.validation.network_for_ssh"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_fe9072ee","line":31,"in_reply_to":"9a68dd71_2ffa5bbe","updated":"2016-01-21 09:02:54.000000000","message":"Attila, there is an ongoing discussion about this point and I think it would be good to keep the server there and perhaps to extend to scope of remote_client to manage the ssh resources. As I said this is under discussion with Sean and Andrea so your input is welcomed.","commit_id":"c3e6ddbe7d72bc8db58d845b034628214045a2df"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"cbe9bc848c64419568ab0646f43267573976fd2f","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class RemoteClient(object):"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    # NOTE(afazekas): It should always get an address instead of server"},{"line_number":31,"context_line":"    def __init__(self, ip_address, username, password\u003dNone, pkey\u003dNone):"},{"line_number":32,"context_line":"        ssh_timeout \u003d CONF.validation.ssh_timeout"},{"line_number":33,"context_line":"        connect_timeout \u003d CONF.validation.connect_timeout"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a5de9d1_df81f290","line":30,"updated":"2016-01-28 09:28:57.000000000","message":"This comment is not relevant anymore.","commit_id":"e96faf39323036b8dc108c193b197fc428a6425c"}],"tempest/scenario/manager.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"36cff9e8b8e8944431d5fe157b004c2cf6bc315e","unresolved":false,"context_lines":[{"line_number":352,"context_line":"    def get_remote_client(self, server, ip\u003dNone, username\u003dNone,"},{"line_number":353,"context_line":"                          private_key\u003dNone):"},{"line_number":354,"context_line":"        \"\"\"Get a SSH client to a remote server"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        @param username name of the Linux account on the remote server"},{"line_number":357,"context_line":"        @param private_key the SSH private key to use"},{"line_number":358,"context_line":"        @return a RemoteClient object"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_3db3cc0b","line":355,"updated":"2016-01-15 10:21:17.000000000","message":"You need to document the \"ip\" parameter","commit_id":"171ce9a2f2623541efd24df2c4b63564c15540c0"},{"author":{"_account_id":10016,"name":"Joseph Lanoux","email":"joseph.lanoux@hpe.com","username":"lanoux"},"change_message_id":"20a0457e3277a878369ae7ec1b04cc2ee307d51d","unresolved":false,"context_lines":[{"line_number":352,"context_line":"    def get_remote_client(self, server, ip\u003dNone, username\u003dNone,"},{"line_number":353,"context_line":"                          private_key\u003dNone):"},{"line_number":354,"context_line":"        \"\"\"Get a SSH client to a remote server"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        @param username name of the Linux account on the remote server"},{"line_number":357,"context_line":"        @param private_key the SSH private key to use"},{"line_number":358,"context_line":"        @return a RemoteClient object"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_400814da","line":355,"in_reply_to":"da6ed579_3db3cc0b","updated":"2016-01-15 10:40:52.000000000","message":"Done","commit_id":"171ce9a2f2623541efd24df2c4b63564c15540c0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"3b47768b9e99efd64968293fd9df2acf2c6c6bf4","unresolved":false,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        return secgroup"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def get_remote_client(self, server, ip\u003dNone, username\u003dNone,"},{"line_number":353,"context_line":"                          private_key\u003dNone):"},{"line_number":354,"context_line":"        \"\"\"Get a SSH client to a remote server"},{"line_number":355,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da6ed579_9a9f15b4","line":352,"updated":"2016-01-17 17:33:01.000000000","message":"Likewise, I think we could do without the \"ip\" parameter.","commit_id":"a97feb8bd5233badea8ca57167ee1e2a3b492d2e"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"b89f3ba9cd9415685efb3c17ad2d99cf027d5bfe","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                          private_key\u003dNone):"},{"line_number":354,"context_line":"        \"\"\"Get a SSH client to a remote server"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        @param ip is the floating IP to use for the ssh validation"},{"line_number":357,"context_line":"        @param username name of the Linux account on the remote server"},{"line_number":358,"context_line":"        @param private_key the SSH private key to use"},{"line_number":359,"context_line":"        @return a RemoteClient object"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba63e191_5e806746","line":356,"updated":"2016-01-20 11:02:18.000000000","message":"Can you use longer name here ? like ip_address ?","commit_id":"a97feb8bd5233badea8ca57167ee1e2a3b492d2e"}]}
