)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8aa2101cc9f8cb813ab5124b74af5e662f6e2b45","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Migrate test_load_balancer_basic to tempest client"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch migrates the load balancer basic ops scenario test from official"},{"line_number":10,"context_line":"client to tempest clients."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially-implements: bp:tempest-client-scenarios"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa98f980_56a86b77","line":10,"updated":"2014-09-17 06:28:40.000000000","message":"Since you are removing the NeutronRetriever class, I think this should be mentioned here","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"}],"tempest/scenario/manager.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8aa2101cc9f8cb813ab5124b74af5e662f6e2b45","unresolved":false,"context_lines":[{"line_number":895,"context_line":"        if not client:"},{"line_number":896,"context_line":"            client \u003d self.network_client"},{"line_number":897,"context_line":"        name \u003d data_utils.rand_name(namestart)"},{"line_number":898,"context_line":"        body \u003d {"},{"line_number":899,"context_line":"            \"protocol\": protocol,"},{"line_number":900,"context_line":"            \"name\": name,"},{"line_number":901,"context_line":"            \"subnet_id\": subnet_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_bbcfc228","line":898,"updated":"2014-09-17 06:28:40.000000000","message":"nit: since the method is accepting kwargs, you could drop the \"body\" dict and pass the arguments directly to the method.","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"78946708dac7c344deef7fdea00a8fc88c8289cf","unresolved":false,"context_lines":[{"line_number":895,"context_line":"        if not client:"},{"line_number":896,"context_line":"            client \u003d self.network_client"},{"line_number":897,"context_line":"        name \u003d data_utils.rand_name(namestart)"},{"line_number":898,"context_line":"        body \u003d {"},{"line_number":899,"context_line":"            \"protocol\": protocol,"},{"line_number":900,"context_line":"            \"name\": name,"},{"line_number":901,"context_line":"            \"subnet_id\": subnet_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_71dba07d","line":898,"in_reply_to":"fa98f980_bbcfc228","updated":"2014-09-17 23:45:58.000000000","message":"Done","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8aa2101cc9f8cb813ab5124b74af5e662f6e2b45","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            \"subnet_id\": subnet_id,"},{"line_number":902,"context_line":"            \"lb_method\": lb_method"},{"line_number":903,"context_line":"        }"},{"line_number":904,"context_line":"        resp_pool \u003d client.create_pool(**body)[1][\u0027pool\u0027]"},{"line_number":905,"context_line":"        pool \u003d net_common.DeletablePool(client\u003dclient, **resp_pool)"},{"line_number":906,"context_line":"        self.assertEqual(pool[\u0027name\u0027], name)"},{"line_number":907,"context_line":"        self.addCleanup(self.delete_wrapper, pool.delete)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_db5d667b","line":904,"updated":"2014-09-17 06:28:40.000000000","message":"This is inconsistent, and, IMO, prone to errors. Please unpack the method output explicitly, as done in other places.\n_, resp_pool \u003d client.create_pool()\npool \u003d DeletablePool(client\u003dclient, **resp_pool)","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"78946708dac7c344deef7fdea00a8fc88c8289cf","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            \"subnet_id\": subnet_id,"},{"line_number":902,"context_line":"            \"lb_method\": lb_method"},{"line_number":903,"context_line":"        }"},{"line_number":904,"context_line":"        resp_pool \u003d client.create_pool(**body)[1][\u0027pool\u0027]"},{"line_number":905,"context_line":"        pool \u003d net_common.DeletablePool(client\u003dclient, **resp_pool)"},{"line_number":906,"context_line":"        self.assertEqual(pool[\u0027name\u0027], name)"},{"line_number":907,"context_line":"        self.addCleanup(self.delete_wrapper, pool.delete)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_51f77cf5","line":904,"in_reply_to":"fa98f980_db5d667b","updated":"2014-09-17 23:45:58.000000000","message":"Done","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8aa2101cc9f8cb813ab5124b74af5e662f6e2b45","unresolved":false,"context_lines":[{"line_number":902,"context_line":"            \"lb_method\": lb_method"},{"line_number":903,"context_line":"        }"},{"line_number":904,"context_line":"        resp_pool \u003d client.create_pool(**body)[1][\u0027pool\u0027]"},{"line_number":905,"context_line":"        pool \u003d net_common.DeletablePool(client\u003dclient, **resp_pool)"},{"line_number":906,"context_line":"        self.assertEqual(pool[\u0027name\u0027], name)"},{"line_number":907,"context_line":"        self.addCleanup(self.delete_wrapper, pool.delete)"},{"line_number":908,"context_line":"        return pool"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_9bcafe18","line":905,"updated":"2014-09-17 06:28:40.000000000","message":"net_common is to be deprecated, since it\u0027s using old clients,\nuse net_resources instead.","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"78946708dac7c344deef7fdea00a8fc88c8289cf","unresolved":false,"context_lines":[{"line_number":902,"context_line":"            \"lb_method\": lb_method"},{"line_number":903,"context_line":"        }"},{"line_number":904,"context_line":"        resp_pool \u003d client.create_pool(**body)[1][\u0027pool\u0027]"},{"line_number":905,"context_line":"        pool \u003d net_common.DeletablePool(client\u003dclient, **resp_pool)"},{"line_number":906,"context_line":"        self.assertEqual(pool[\u0027name\u0027], name)"},{"line_number":907,"context_line":"        self.addCleanup(self.delete_wrapper, pool.delete)"},{"line_number":908,"context_line":"        return pool"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_31f2f806","line":905,"in_reply_to":"fa98f980_9bcafe18","updated":"2014-09-17 23:45:58.000000000","message":"Done","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8aa2101cc9f8cb813ab5124b74af5e662f6e2b45","unresolved":false,"context_lines":[{"line_number":907,"context_line":"        self.addCleanup(self.delete_wrapper, pool.delete)"},{"line_number":908,"context_line":"        return pool"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"    def _create_member(self, address, protocol_port, pool_id, client\u003dNone):"},{"line_number":911,"context_line":"        \"\"\"Wrapper utility that returns a test member.\"\"\""},{"line_number":912,"context_line":"        if not client:"},{"line_number":913,"context_line":"            client \u003d self.network_client"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_3be3d2a5","line":910,"updated":"2014-09-17 06:28:40.000000000","message":"all comments above, apply here","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"78946708dac7c344deef7fdea00a8fc88c8289cf","unresolved":false,"context_lines":[{"line_number":907,"context_line":"        self.addCleanup(self.delete_wrapper, pool.delete)"},{"line_number":908,"context_line":"        return pool"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"    def _create_member(self, address, protocol_port, pool_id, client\u003dNone):"},{"line_number":911,"context_line":"        \"\"\"Wrapper utility that returns a test member.\"\"\""},{"line_number":912,"context_line":"        if not client:"},{"line_number":913,"context_line":"            client \u003d self.network_client"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_f1e79044","line":910,"in_reply_to":"fa98f980_3be3d2a5","updated":"2014-09-17 23:45:58.000000000","message":"Done","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8aa2101cc9f8cb813ab5124b74af5e662f6e2b45","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        self.addCleanup(self.delete_wrapper, member.delete)"},{"line_number":922,"context_line":"        return member"},{"line_number":923,"context_line":""},{"line_number":924,"context_line":"    def _create_vip(self, protocol, protocol_port, subnet_id, pool_id,"},{"line_number":925,"context_line":"                    client\u003dNone, namestart\u003d\u0027pool-smoke\u0027):"},{"line_number":926,"context_line":"        \"\"\"Wrapper utility that returns a test vip.\"\"\""},{"line_number":927,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_9692d349","line":924,"updated":"2014-09-17 06:28:40.000000000","message":"and here","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"78946708dac7c344deef7fdea00a8fc88c8289cf","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        self.addCleanup(self.delete_wrapper, member.delete)"},{"line_number":922,"context_line":"        return member"},{"line_number":923,"context_line":""},{"line_number":924,"context_line":"    def _create_vip(self, protocol, protocol_port, subnet_id, pool_id,"},{"line_number":925,"context_line":"                    client\u003dNone, namestart\u003d\u0027pool-smoke\u0027):"},{"line_number":926,"context_line":"        \"\"\"Wrapper utility that returns a test vip.\"\"\""},{"line_number":927,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_9191e49c","line":924,"in_reply_to":"fa98f980_9692d349","updated":"2014-09-17 23:45:58.000000000","message":"Done","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b330049aff200e9d09bf4287a1a32697725c71bd","unresolved":false,"context_lines":[{"line_number":908,"context_line":"        return rules"},{"line_number":909,"context_line":""},{"line_number":910,"context_line":"    def _create_pool(self, lb_method, protocol, subnet_id, client\u003dNone,"},{"line_number":911,"context_line":"                     namestart\u003d\u0027pool-smoke\u0027):"},{"line_number":912,"context_line":"        \"\"\"Wrapper utility that returns a test pool.\"\"\""},{"line_number":913,"context_line":"        if not client:"},{"line_number":914,"context_line":"            client \u003d self.network_client"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9df570_4b90c695","line":911,"updated":"2014-09-22 10:00:50.000000000","message":"Adding client and namestart parameters here looks like an unrelated change. They are not used in LB test anyways.\nChanging the default name from \"pool-\" to \"pool-smoke\" is unrelated as well, and I don\u0027t see the value in it anyways.","commit_id":"2403f40c922f8bda1d0e8ca9482f079f263f7b4c"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b330049aff200e9d09bf4287a1a32697725c71bd","unresolved":false,"context_lines":[{"line_number":921,"context_line":"        self.addCleanup(self.delete_wrapper, pool.delete)"},{"line_number":922,"context_line":"        return pool"},{"line_number":923,"context_line":""},{"line_number":924,"context_line":"    def _create_member(self, address, protocol_port, pool_id, client\u003dNone):"},{"line_number":925,"context_line":"        \"\"\"Wrapper utility that returns a test member.\"\"\""},{"line_number":926,"context_line":"        if not client:"},{"line_number":927,"context_line":"            client \u003d self.network_client"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9df570_0bf95ec8","line":924,"updated":"2014-09-22 10:00:50.000000000","message":"Ditto L911 - why adding client here?","commit_id":"2403f40c922f8bda1d0e8ca9482f079f263f7b4c"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b330049aff200e9d09bf4287a1a32697725c71bd","unresolved":false,"context_lines":[{"line_number":933,"context_line":"        self.addCleanup(self.delete_wrapper, member.delete)"},{"line_number":934,"context_line":"        return member"},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"    def _create_vip(self, protocol, protocol_port, subnet_id, pool_id,"},{"line_number":937,"context_line":"                    client\u003dNone, namestart\u003d\u0027pool-smoke\u0027):"},{"line_number":938,"context_line":"        \"\"\"Wrapper utility that returns a test vip.\"\"\""},{"line_number":939,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9df570_eb2b3a2e","line":936,"updated":"2014-09-22 10:00:50.000000000","message":"Ditto L911 - why adding client and namestart here?","commit_id":"2403f40c922f8bda1d0e8ca9482f079f263f7b4c"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"455ab1a648faee4f59041ed860cbda626c068bbf","unresolved":false,"context_lines":[{"line_number":910,"context_line":"    def _create_pool(self, lb_method, protocol, subnet_id):"},{"line_number":911,"context_line":"        \"\"\"Wrapper utility that returns a test pool.\"\"\""},{"line_number":912,"context_line":"        client \u003d self.network_client"},{"line_number":913,"context_line":"        name \u003d data_utils.rand_name(\u0027pool-\u0027)"},{"line_number":914,"context_line":"        _, resp_pool \u003d client.create_pool(protocol\u003dprotocol, name\u003dname,"},{"line_number":915,"context_line":"                                          subnet_id\u003dsubnet_id,"},{"line_number":916,"context_line":"                                          lb_method\u003dlb_method)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_b0db441a","line":913,"updated":"2014-09-23 05:57:47.000000000","message":"nit: s/pool-/pool","commit_id":"1cd7731bc1279bc60964c37de0087b2840d8845d"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"455ab1a648faee4f59041ed860cbda626c068bbf","unresolved":false,"context_lines":[{"line_number":933,"context_line":"    def _create_vip(self, protocol, protocol_port, subnet_id, pool_id):"},{"line_number":934,"context_line":"        \"\"\"Wrapper utility that returns a test vip.\"\"\""},{"line_number":935,"context_line":"        client \u003d self.network_client"},{"line_number":936,"context_line":"        name \u003d data_utils.rand_name(\u0027vip-\u0027)"},{"line_number":937,"context_line":"        _, resp_vip \u003d client.create_vip(protocol\u003dprotocol, name\u003dname,"},{"line_number":938,"context_line":"                                        subnet_id\u003dsubnet_id, pool_id\u003dpool_id,"},{"line_number":939,"context_line":"                                        protocol_port\u003dprotocol_port)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_903c8031","line":936,"updated":"2014-09-23 05:57:47.000000000","message":"same here","commit_id":"1cd7731bc1279bc60964c37de0087b2840d8845d"}],"tempest/scenario/test_load_balancer_basic.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"6dc056a5785842b1b0a450bbfee6df742320d8d8","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        self._check_load_balancing()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"class NeutronRetriever(object):"},{"line_number":299,"context_line":"    \"\"\""},{"line_number":300,"context_line":"    Helper class to make possible handling neutron objects returned by GET"},{"line_number":301,"context_line":"    requests as attribute dicts."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_0d321710","line":298,"updated":"2014-09-02 06:17:14.000000000","message":"this should now be discarded. waiters can be handled by waiter method added to network_resources in https://review.openstack.org/#/c/102700/","commit_id":"033faf896b07c5c8618168ae93185920d7b14fc4"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"244523ec14b3932596ac2c1d578582088e2416bd","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        self._check_load_balancing()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"class NeutronRetriever(object):"},{"line_number":299,"context_line":"    \"\"\""},{"line_number":300,"context_line":"    Helper class to make possible handling neutron objects returned by GET"},{"line_number":301,"context_line":"    requests as attribute dicts."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_ec12dd07","line":298,"in_reply_to":"fa98f980_0d321710","updated":"2014-09-04 00:10:52.000000000","message":"Thanks for looking at such an early version of this! OK, I\u0027ll use the waiter methods in network resources","commit_id":"033faf896b07c5c8618168ae93185920d7b14fc4"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8aa2101cc9f8cb813ab5124b74af5e662f6e2b45","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                server_or_ip\u003dip,"},{"line_number":170,"context_line":"                private_key\u003dprivate_key)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            # TODO continue here"},{"line_number":173,"context_line":"            # Write a backend\u0027s response into a file"},{"line_number":174,"context_line":"            resp \u003d \"\"\"echo -ne \"HTTP/1.1 200 OK\\r\\nContent-Length: 7\\r\\n\"\"\" \\"},{"line_number":175,"context_line":"                   \"\"\"Connection: close\\r\\nContent-Type: text/html; \"\"\" \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_9b2e7ef9","line":172,"updated":"2014-09-17 06:28:40.000000000","message":"what\u0027s this?","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8aa2101cc9f8cb813ab5124b74af5e662f6e2b45","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        # However the linuxbridge-agent does, and it is necessary to add a"},{"line_number":286,"context_line":"        # security group with a rule that allows tcp port 80 to the vip port."},{"line_number":287,"context_line":"        self.network_client.update_port("},{"line_number":288,"context_line":"            self.vip.port_id, security_groups\u003d[self.security_group.id])"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def _check_load_balancing(self):"},{"line_number":291,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_fb3cea32","line":288,"updated":"2014-09-17 06:28:40.000000000","message":"I think you don\u0027t need \"id\" here. you can pass the whole dict","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"78946708dac7c344deef7fdea00a8fc88c8289cf","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        # However the linuxbridge-agent does, and it is necessary to add a"},{"line_number":286,"context_line":"        # security group with a rule that allows tcp port 80 to the vip port."},{"line_number":287,"context_line":"        self.network_client.update_port("},{"line_number":288,"context_line":"            self.vip.port_id, security_groups\u003d[self.security_group.id])"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    def _check_load_balancing(self):"},{"line_number":291,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_1186d465","line":288,"in_reply_to":"fa98f980_fb3cea32","updated":"2014-09-17 23:45:58.000000000","message":"\"id\" is needed. I tested it. In fact, in the diff you sent me with the work you had done with this test. \"id\" is there","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"}],"tempest/services/network/network_client_base.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8aa2101cc9f8cb813ab5124b74af5e662f6e2b45","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    def wait_for_resource_status(self, resource_type, id, status):"},{"line_number":233,"context_line":"        \"\"\"Waits for a resource to reach a status\"\"\""},{"line_number":234,"context_line":"        try:"},{"line_number":235,"context_line":"            show_method \u003d getattr(self, \u0027show_\u0027 + resource_type)"},{"line_number":236,"context_line":"        except AttributeError:"},{"line_number":237,"context_line":"            raise Exception(\"Unknown resource type %s \" % resource_type)"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_d601bb6b","line":235,"updated":"2014-09-17 06:28:40.000000000","message":"That\u0027s just my personal opinion, but I don\u0027t like this \"magic\". it assumes too much about the method name. I\u0027d prefer to get the method as a callable argument, instead of \"guessing\" it.\nThat way, we could use this method more generally down the road.\n\nI understand that\u0027s how it\u0027s done in this module (like is_resource_deleted), but I don\u0027t like it, personally.","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"78946708dac7c344deef7fdea00a8fc88c8289cf","unresolved":false,"context_lines":[{"line_number":232,"context_line":"    def wait_for_resource_status(self, resource_type, id, status):"},{"line_number":233,"context_line":"        \"\"\"Waits for a resource to reach a status\"\"\""},{"line_number":234,"context_line":"        try:"},{"line_number":235,"context_line":"            show_method \u003d getattr(self, \u0027show_\u0027 + resource_type)"},{"line_number":236,"context_line":"        except AttributeError:"},{"line_number":237,"context_line":"            raise Exception(\"Unknown resource type %s \" % resource_type)"},{"line_number":238,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa98f980_31c918ad","line":235,"in_reply_to":"fa98f980_d601bb6b","updated":"2014-09-17 23:45:58.000000000","message":"Done","commit_id":"f23cbec07720b4dbeddfac46e6dfdddf291fad4d"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a13765844fc43e53de9928d8cc5ef73ae470abf9","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            return True"},{"line_number":230,"context_line":"        return False"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def wait_for_resource_status(self, fetch, status):"},{"line_number":233,"context_line":"        \"\"\"Waits for a resource to reach a status\"\"\""},{"line_number":234,"context_line":"        resource \u003d fetch()"},{"line_number":235,"context_line":"        resource_status \u003d resource[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_972d51ab","line":232,"updated":"2014-09-18 06:27:42.000000000","message":"please add timeout and interval as method arguments. we might want to use non-defaults in the future","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f5e392d4642b607284f644b1f7e08db8e8de5006","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            return True"},{"line_number":230,"context_line":"        return False"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def wait_for_resource_status(self, fetch, status):"},{"line_number":233,"context_line":"        \"\"\"Waits for a resource to reach a status\"\"\""},{"line_number":234,"context_line":"        resource \u003d fetch()"},{"line_number":235,"context_line":"        resource_status \u003d resource[\u0027status\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_5f14c69e","line":232,"in_reply_to":"fa98f980_972d51ab","updated":"2014-09-19 00:07:38.000000000","message":"Done","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a13765844fc43e53de9928d8cc5ef73ae470abf9","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        return False"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def wait_for_resource_status(self, fetch, status):"},{"line_number":233,"context_line":"        \"\"\"Waits for a resource to reach a status\"\"\""},{"line_number":234,"context_line":"        resource \u003d fetch()"},{"line_number":235,"context_line":"        resource_status \u003d resource[\u0027status\u0027]"},{"line_number":236,"context_line":"        start_time \u003d int(time.time())"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_f71bfd7d","line":233,"updated":"2014-09-18 06:27:42.000000000","message":"nit: I think this method needs an appropriate docstring.","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f5e392d4642b607284f644b1f7e08db8e8de5006","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        return False"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def wait_for_resource_status(self, fetch, status):"},{"line_number":233,"context_line":"        \"\"\"Waits for a resource to reach a status\"\"\""},{"line_number":234,"context_line":"        resource \u003d fetch()"},{"line_number":235,"context_line":"        resource_status \u003d resource[\u0027status\u0027]"},{"line_number":236,"context_line":"        start_time \u003d int(time.time())"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_bf24d20e","line":233,"in_reply_to":"fa98f980_f71bfd7d","updated":"2014-09-19 00:07:38.000000000","message":"Done","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a13765844fc43e53de9928d8cc5ef73ae470abf9","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def wait_for_resource_status(self, fetch, status):"},{"line_number":233,"context_line":"        \"\"\"Waits for a resource to reach a status\"\"\""},{"line_number":234,"context_line":"        resource \u003d fetch()"},{"line_number":235,"context_line":"        resource_status \u003d resource[\u0027status\u0027]"},{"line_number":236,"context_line":"        start_time \u003d int(time.time())"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_b72a558e","line":234,"updated":"2014-09-18 06:27:42.000000000","message":"If you move these 2 into the beginning of the loop, you don\u0027t need to fetch twice.","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f5e392d4642b607284f644b1f7e08db8e8de5006","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def wait_for_resource_status(self, fetch, status):"},{"line_number":233,"context_line":"        \"\"\"Waits for a resource to reach a status\"\"\""},{"line_number":234,"context_line":"        resource \u003d fetch()"},{"line_number":235,"context_line":"        resource_status \u003d resource[\u0027status\u0027]"},{"line_number":236,"context_line":"        start_time \u003d int(time.time())"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_df1fd6b6","line":234,"in_reply_to":"fa98f980_b72a558e","updated":"2014-09-19 00:07:38.000000000","message":"Done","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a13765844fc43e53de9928d8cc5ef73ae470abf9","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        resource_status \u003d resource[\u0027status\u0027]"},{"line_number":236,"context_line":"        start_time \u003d int(time.time())"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        while True:"},{"line_number":239,"context_line":"            if resource_status \u003d\u003d status:"},{"line_number":240,"context_line":"                return"},{"line_number":241,"context_line":"            time.sleep(self.build_interval)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_d716f957","line":238,"updated":"2014-09-18 06:27:42.000000000","message":"you can loop on (time.time() - start_time \u003e\u003d self.build_timeout)","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f5e392d4642b607284f644b1f7e08db8e8de5006","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        resource_status \u003d resource[\u0027status\u0027]"},{"line_number":236,"context_line":"        start_time \u003d int(time.time())"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        while True:"},{"line_number":239,"context_line":"            if resource_status \u003d\u003d status:"},{"line_number":240,"context_line":"                return"},{"line_number":241,"context_line":"            time.sleep(self.build_interval)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_1f1a3ec6","line":238,"in_reply_to":"fa98f980_d716f957","updated":"2014-09-19 00:07:38.000000000","message":"Done","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"a13765844fc43e53de9928d8cc5ef73ae470abf9","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            if resource_status \u003d\u003d status:"},{"line_number":240,"context_line":"                return"},{"line_number":241,"context_line":"            time.sleep(self.build_interval)"},{"line_number":242,"context_line":"            timed_out \u003d int(time.time()) - start_time \u003e\u003d self.build_timeout"},{"line_number":243,"context_line":"            if timed_out:"},{"line_number":244,"context_line":"                message \u003d \u0027Resource %s\u0027 % (str(resource))"},{"line_number":245,"context_line":"                message +\u003d \u0027 failed to reach status %s\u0027 % status"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_f734ddfc","line":242,"range":{"start_line":242,"start_character":24,"end_line":242,"end_character":75},"updated":"2014-09-18 06:27:42.000000000","message":"I don\u0027t think you need to int() this value.\nwhy can\u0027t you do (float \u003e\u003d int)?","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f5e392d4642b607284f644b1f7e08db8e8de5006","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            if resource_status \u003d\u003d status:"},{"line_number":240,"context_line":"                return"},{"line_number":241,"context_line":"            time.sleep(self.build_interval)"},{"line_number":242,"context_line":"            timed_out \u003d int(time.time()) - start_time \u003e\u003d self.build_timeout"},{"line_number":243,"context_line":"            if timed_out:"},{"line_number":244,"context_line":"                message \u003d \u0027Resource %s\u0027 % (str(resource))"},{"line_number":245,"context_line":"                message +\u003d \u0027 failed to reach status %s\u0027 % status"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_3f78e2f7","line":242,"in_reply_to":"fa98f980_f734ddfc","updated":"2014-09-19 00:07:38.000000000","message":"Done","commit_id":"8ec7868fb2d5e2c0c29893a9d0cbc242f632818c"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b330049aff200e9d09bf4287a1a32697725c71bd","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        \"\"\""},{"line_number":235,"context_line":"        @summary: Waits for a network resource to reach a status"},{"line_number":236,"context_line":"        @param fetch: the callable to be used to query the resource status"},{"line_number":237,"context_line":"        @type fecth: Python callable"},{"line_number":238,"context_line":"        @param status: the status that the resource has to reach"},{"line_number":239,"context_line":"        @type status: String"},{"line_number":240,"context_line":"        @param interval: the number of seconds to wait between each status"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9df570_cbb6768a","line":237,"range":{"start_line":237,"start_character":28,"end_line":237,"end_character":36},"updated":"2014-09-22 10:00:50.000000000","message":"\"callable that takes no parameters and returns the status of the resource\"","commit_id":"2403f40c922f8bda1d0e8ca9482f079f263f7b4c"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"455ab1a648faee4f59041ed860cbda626c068bbf","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        @summary: Waits for a network resource to reach a status"},{"line_number":236,"context_line":"        @param fetch: the callable to be used to query the resource status"},{"line_number":237,"context_line":"        @type fecth: callable that takes no parameters and returns the status"},{"line_number":238,"context_line":"          of the resource"},{"line_number":239,"context_line":"        @param status: the status that the resource has to reach"},{"line_number":240,"context_line":"        @type status: String"},{"line_number":241,"context_line":"        @param interval: the number of seconds to wait between each status"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_10e330da","line":238,"updated":"2014-09-23 05:57:47.000000000","message":"\"returns the resource\" (the status is part of the resource)","commit_id":"1cd7731bc1279bc60964c37de0087b2840d8845d"}],"tempest/services/network/resources.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b330049aff200e9d09bf4287a1a32697725c71bd","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        if not hasattr(self, \u0027status\u0027):"},{"line_number":59,"context_line":"            return"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        fetch \u003d self.show"},{"line_number":62,"context_line":"        return self.client.wait_for_resource_status(fetch, status)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da9df570_cb83d6ca","line":61,"updated":"2014-09-22 10:00:50.000000000","message":"I don\u0027t think this is ok as it is.\n\"show\" is not defined as part of the abstract class, so we\u0027re passing here an attribute (method) which in most cases isn\u0027t defined.\n\nI would add it as an abstract method to DeletableResource.","commit_id":"2403f40c922f8bda1d0e8ca9482f079f263f7b4c"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b330049aff200e9d09bf4287a1a32697725c71bd","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            return"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        fetch \u003d self.show"},{"line_number":62,"context_line":"        return self.client.wait_for_resource_status(fetch, status)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class DeletableNetwork(DeletableResource):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9df570_be09722e","line":62,"updated":"2014-09-22 10:00:50.000000000","message":"Why not wait_for_resources(self.show, status)","commit_id":"2403f40c922f8bda1d0e8ca9482f079f263f7b4c"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"b330049aff200e9d09bf4287a1a32697725c71bd","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    def delete(self):"},{"line_number":170,"context_line":"        self.client.delete_vip(self.id)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def show(self, *args, **kwargs):"},{"line_number":173,"context_line":"        _, result \u003d self.client.show_vip(self.id, *args, **kwargs)"},{"line_number":174,"context_line":"        super(DeletableVip, self).update(**result[\u0027vip\u0027])"},{"line_number":175,"context_line":"        return self"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9df570_8b60ee36","line":172,"updated":"2014-09-22 10:00:50.000000000","message":"What\u0027s the need for args and kwargs here?","commit_id":"2403f40c922f8bda1d0e8ca9482f079f263f7b4c"}]}
