)]}'
{"tempest/api/network/test_load_balancer.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"8e2ace4b52e361c791278b1bbf522ad292579ede","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        resp, body \u003d self.client.list_vips()"},{"line_number":60,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":61,"context_line":"        vips \u003d body[\u0027vips\u0027]"},{"line_number":62,"context_line":"        self.assertEqual(len(vips), 1)"},{"line_number":63,"context_line":"        self.assertEqual(vips[0][\u0027id\u0027], self.vip[\u0027id\u0027])"},{"line_number":64,"context_line":"        resp, body \u003d self.client.list_vips(filters\u003d{\u0027id\u0027: self.vip[\u0027id\u0027]})"},{"line_number":65,"context_line":"        vips \u003d body[\u0027vips\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F8srg%3D","line":62,"updated":"2013-12-22 23:52:39.000000000","message":"Ann, Salvatore,\n\nAs suggested in Salvatore\u0027s last line, tenant isolation will prevent this assertion to be a problem. This is why:\n\n1) self.client.list_vips() only lists the vips belonging to the tenant under which this test is running\n\n2) Before turning parallel testing on for Neutron, we are going to enable tenant isolation. This means that each test case will run under its own tenant\n\n3) As a consequence, other tenant cases creating vips won\u0027t interfere with this assertion\n\nCheers","commit_id":"48832f0805b3c67538997b31dbf8eff7bd476c78"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5799f31311892d563c17bb7cd220f55aeec994c1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        resp, body \u003d self.client.list_vips()"},{"line_number":60,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":61,"context_line":"        vips \u003d body[\u0027vips\u0027]"},{"line_number":62,"context_line":"        self.assertEqual(len(vips), 1)"},{"line_number":63,"context_line":"        self.assertEqual(vips[0][\u0027id\u0027], self.vip[\u0027id\u0027])"},{"line_number":64,"context_line":"        resp, body \u003d self.client.list_vips(filters\u003d{\u0027id\u0027: self.vip[\u0027id\u0027]})"},{"line_number":65,"context_line":"        vips \u003d body[\u0027vips\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F88%2Fg%3D","line":62,"updated":"2013-12-18 13:00:05.000000000","message":"this might lead to future failures arousing from parallel testing.\nIndeed we might have some other test case creating a vip which executes concurrently with this (think about xml/json test cases running concurrently).\n\nThe test might therefore fail because 1 !\u003d 2\nI would therefore not do the explicit count check\n\nIf you reckon tenant isolation would prevent this problem, ignore my comment.","commit_id":"48832f0805b3c67538997b31dbf8eff7bd476c78"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"07d3b10cd531a016031225032368bd2c913b8cbb","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        resp, body \u003d self.client.list_vips()"},{"line_number":60,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":61,"context_line":"        vips \u003d body[\u0027vips\u0027]"},{"line_number":62,"context_line":"        self.assertEqual(len(vips), 1)"},{"line_number":63,"context_line":"        self.assertEqual(vips[0][\u0027id\u0027], self.vip[\u0027id\u0027])"},{"line_number":64,"context_line":"        resp, body \u003d self.client.list_vips(filters\u003d{\u0027id\u0027: self.vip[\u0027id\u0027]})"},{"line_number":65,"context_line":"        vips \u003d body[\u0027vips\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F84gk%3D","line":62,"in_reply_to":"AAAATn%2F88%2Fg%3D","updated":"2013-12-19 08:16:58.000000000","message":"It seems that you are right. Thank you, for your comments they are very valuable. I\u0027ll correct my work.","commit_id":"48832f0805b3c67538997b31dbf8eff7bd476c78"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5799f31311892d563c17bb7cd220f55aeec994c1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.assertEqual(vips[0][\u0027id\u0027], self.vip[\u0027id\u0027])"},{"line_number":64,"context_line":"        resp, body \u003d self.client.list_vips(filters\u003d{\u0027id\u0027: self.vip[\u0027id\u0027]})"},{"line_number":65,"context_line":"        vips \u003d body[\u0027vips\u0027]"},{"line_number":66,"context_line":"        self.assertEqual(len(vips), 1)"},{"line_number":67,"context_line":"        self.assertEqual(vips[0][\u0027id\u0027], self.vip[\u0027id\u0027])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F88%2FM%3D","line":66,"updated":"2013-12-18 13:00:05.000000000","message":"the check here is fine, but IMHO, this should be in another UT called test_list_vips_with_filters","commit_id":"48832f0805b3c67538997b31dbf8eff7bd476c78"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5799f31311892d563c17bb7cd220f55aeec994c1","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        resp, body \u003d self.client.list_vips()"},{"line_number":80,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":81,"context_line":"        vips \u003d body[\u0027vips\u0027]"},{"line_number":82,"context_line":"        self.assertEqual(len(vips), 2)"},{"line_number":83,"context_line":"        resp, body \u003d self.client.delete_vip(vip[\u0027id\u0027])"},{"line_number":84,"context_line":"        resp, body \u003d self.client.delete_pool(pool[\u0027id\u0027])"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F88%2Bg%3D","line":82,"updated":"2013-12-18 13:00:05.000000000","message":"once you have more vips it would be also useful doing the filter test and checking that the vip which does not match filters is not returned","commit_id":"48832f0805b3c67538997b31dbf8eff7bd476c78"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"40ea190416572fb30cecc850fe59cb0bd4daa7f3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        resp, body \u003d self.client.list_vips()"},{"line_number":84,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":85,"context_line":"        vips \u003d body[\u0027vips\u0027]"},{"line_number":86,"context_line":"        self.assertIn(self.vip[\u0027id\u0027] and vip[\u0027id\u0027],"},{"line_number":87,"context_line":"                      [v[\u0027id\u0027] for v in vips])"},{"line_number":88,"context_line":"        resp, body \u003d self.client.delete_vip(vip[\u0027id\u0027])"},{"line_number":89,"context_line":"        resp, body \u003d self.client.delete_pool(pool[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2FrBE%3D","line":86,"updated":"2014-01-09 19:39:51.000000000","message":"This is a correct check, essentially it checks for vip[\u0027id\u0027] only.\n\nPlease make two separate checks","commit_id":"829a768332e05001127c9bed826894d87297705e"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"749417dc07461f30730c8caac55d188b2f41459b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        resp, body \u003d self.client.delete_vip(vip[\u0027id\u0027])"},{"line_number":107,"context_line":"        resp, body \u003d self.client.delete_pool(pool[\u0027id\u0027])"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test_create_update_delete_pool_vip(self):"},{"line_number":110,"context_line":"        # Creates a vip"},{"line_number":111,"context_line":"        name \u003d data_utils.rand_name(\u0027vip-\u0027)"},{"line_number":112,"context_line":"        resp, body \u003d self.client.create_pool("}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAUH%2F%2FYl0%3D","line":109,"updated":"2014-01-14 11:20:10.000000000","message":"please add @test.attr(type\u003d\u0027smoke\u0027)","commit_id":"857ae9a8fe5cdf60df1bb407b2245553ba1f3efe"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"f8745698503685cd39706e978c907c309980757a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.assertIn(self.vip[\u0027id\u0027], vips)"},{"line_number":85,"context_line":"        self.assertIn(vip[\u0027id\u0027], vips)"},{"line_number":86,"context_line":"        self.client.delete_vip(vip[\u0027id\u0027])"},{"line_number":87,"context_line":"        self.client.delete_pool(pool[\u0027id\u0027])"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":90,"context_line":"    def test_list_vips_two_vips_with_filter(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F96Lw%3D","line":87,"updated":"2014-02-01 16:39:02.000000000","message":"Consider replacing it with addCleanup()","commit_id":"2aa86520594bfe4c0479b883a52b85f337511da4"},{"author":{"_account_id":7293,"name":"Elena Ezhova","email":"ezhovaelena19@gmail.com","username":"elena"},"change_message_id":"f8745698503685cd39706e978c907c309980757a","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.assertIn(vip[\u0027id\u0027], vips)"},{"line_number":103,"context_line":"        self.assertNotIn(self.vip[\u0027id\u0027], vips)"},{"line_number":104,"context_line":"        self.client.delete_vip(vip[\u0027id\u0027])"},{"line_number":105,"context_line":"        self.client.delete_pool(pool[\u0027id\u0027])"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":108,"context_line":"    def test_create_update_delete_pool_vip(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUH%2F96Lo%3D","line":105,"updated":"2014-02-01 16:39:02.000000000","message":"ditto","commit_id":"2aa86520594bfe4c0479b883a52b85f337511da4"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"c669d812805363cc47baf4398119adbcebe60cfb","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        vips \u003d [v[\u0027id\u0027] for v in body[\u0027vips\u0027]]"},{"line_number":84,"context_line":"        self.assertIn(self.vip[\u0027id\u0027], vips)"},{"line_number":85,"context_line":"        self.assertIn(vip[\u0027id\u0027], vips)"},{"line_number":86,"context_line":"        self.client.delete_vip(vip[\u0027id\u0027])"},{"line_number":87,"context_line":"        self.addCleanup(self.client.delete_pool, pool[\u0027id\u0027])"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F92iM%3D","line":86,"updated":"2014-02-03 10:06:15.000000000","message":"Any reason for not using addCleanup as well here?","commit_id":"33c27d938d5c75019a8ebe94c1bb4326247c2b2d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"c669d812805363cc47baf4398119adbcebe60cfb","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.assertIn(self.vip[\u0027id\u0027], vips)"},{"line_number":85,"context_line":"        self.assertIn(vip[\u0027id\u0027], vips)"},{"line_number":86,"context_line":"        self.client.delete_vip(vip[\u0027id\u0027])"},{"line_number":87,"context_line":"        self.addCleanup(self.client.delete_pool, pool[\u0027id\u0027])"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":90,"context_line":"    def test_list_vips_two_vips_with_filter(self):"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F92iU%3D","line":87,"updated":"2014-02-03 10:06:15.000000000","message":"the addCleanup should be right after you create the pool, in my opinion.\n\nOtherwise if an assertion fails, the cleanup won\u0027t be executed as it was never added to the list of cleanup actions","commit_id":"33c27d938d5c75019a8ebe94c1bb4326247c2b2d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"c669d812805363cc47baf4398119adbcebe60cfb","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        self.addCleanup(self.client.delete_pool, pool[\u0027id\u0027])"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":90,"context_line":"    def test_list_vips_two_vips_with_filter(self):"},{"line_number":91,"context_line":"        name \u003d data_utils.rand_name(\u0027vip-\u0027)"},{"line_number":92,"context_line":"        resp, body \u003d self.client.create_pool("},{"line_number":93,"context_line":"            name\u003ddata_utils.rand_name(\"pool-\"), lb_method\u003d\"ROUND_ROBIN\","}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F92h8%3D","line":90,"updated":"2014-02-03 10:06:15.000000000","message":"thanks for adding this kind of test\nWhat about another tests validating the fields query param attribute works as expected?","commit_id":"33c27d938d5c75019a8ebe94c1bb4326247c2b2d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"c669d812805363cc47baf4398119adbcebe60cfb","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        self.assertIn(vip[\u0027id\u0027], vips)"},{"line_number":103,"context_line":"        self.assertNotIn(self.vip[\u0027id\u0027], vips)"},{"line_number":104,"context_line":"        self.client.delete_vip(vip[\u0027id\u0027])"},{"line_number":105,"context_line":"        self.addCleanup(self.client.delete_pool, pool[\u0027id\u0027])"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":108,"context_line":"    def test_create_update_delete_pool_vip(self):"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F92h0%3D","line":105,"updated":"2014-02-03 10:06:15.000000000","message":"same comments as above for lines 104-105","commit_id":"33c27d938d5c75019a8ebe94c1bb4326247c2b2d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"8404c108ba598e4585a996cb705662b3a9c6b896","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        self.assertEqual(self.vip[\u0027protocol_port\u0027], vip[\u0027protocol_port\u0027])"},{"line_number":154,"context_line":"        self.assertEqual(self.vip[\u0027port_id\u0027], vip[\u0027port_id\u0027])"},{"line_number":155,"context_line":"        self.assertEqual(self.vip[\u0027tenant_id\u0027], vip[\u0027tenant_id\u0027])"},{"line_number":156,"context_line":"        self.assertEqual(self.vip[\u0027connection_limit\u0027], vip[\u0027connection_limit\u0027])"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":159,"context_line":"    def test_show_pool(self):"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F92Zk%3D","line":156,"updated":"2014-02-03 10:35:12.000000000","message":"It is nice that you\u0027ve added checks on all attributes.\nIf you want but this is optional and pedant, move those checks into an utility method and perform them on the list test as well for each vip","commit_id":"33c27d938d5c75019a8ebe94c1bb4326247c2b2d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"8404c108ba598e4585a996cb705662b3a9c6b896","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self.assertEqual(self.pool[\u0027tenant_id\u0027], pool[\u0027tenant_id\u0027])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":173,"context_line":"    def test_list_pools(self):"},{"line_number":174,"context_line":"        # Verify the pool exists in the list of all pools"},{"line_number":175,"context_line":"        resp, body \u003d self.client.list_pools()"},{"line_number":176,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAUH%2F92Y4%3D","line":173,"updated":"2014-02-03 10:35:12.000000000","message":"the same improvement you made for list vip tests could have been done for pools and load balancer.\n\nIgnore this comment if you have this in another patch. I see indeed other patches from you with similar commit messages","commit_id":"33c27d938d5c75019a8ebe94c1bb4326247c2b2d"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cc4a69495d210296a6ec3a390e202cc2dd18eb2e","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        name \u003d data_utils.rand_name(\u0027vip-\u0027)"},{"line_number":75,"context_line":"        resp, body \u003d self.client.create_pool("},{"line_number":76,"context_line":"            name\u003ddata_utils.rand_name(\"pool-\"), lb_method\u003d\"ROUND_ROBIN\","},{"line_number":77,"context_line":"            protocol\u003d\"HTTP\", subnet_id\u003dself.subnet[\u0027id\u0027])"},{"line_number":78,"context_line":"        pool \u003d body[\u0027pool\u0027]"},{"line_number":79,"context_line":"        self.addCleanup(self.client.delete_pool, pool[\u0027id\u0027])"},{"line_number":80,"context_line":"        resp, body \u003d self.client.create_vip(name\u003dname, protocol\u003d\"HTTP\","}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F9r8I%3D","line":77,"updated":"2014-02-05 00:15:09.000000000","message":"Here","commit_id":"27d734e2efa97bd02f26f072d9c6c502d3103935"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cc4a69495d210296a6ec3a390e202cc2dd18eb2e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        resp, body \u003d self.client.create_vip(name\u003dname, protocol\u003d\"HTTP\","},{"line_number":81,"context_line":"                                            protocol_port\u003d80,"},{"line_number":82,"context_line":"                                            subnet_id\u003dself.subnet[\u0027id\u0027],"},{"line_number":83,"context_line":"                                            pool_id\u003dpool[\u0027id\u0027])"},{"line_number":84,"context_line":"        vip \u003d body[\u0027vip\u0027]"},{"line_number":85,"context_line":"        self.addCleanup(self.client.delete_vip, vip[\u0027id\u0027])"},{"line_number":86,"context_line":"        resp, body \u003d self.client.list_vips()"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F9r8A%3D","line":83,"updated":"2014-02-05 00:15:09.000000000","message":"Here","commit_id":"27d734e2efa97bd02f26f072d9c6c502d3103935"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cc4a69495d210296a6ec3a390e202cc2dd18eb2e","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        name \u003d data_utils.rand_name(\u0027vip-\u0027)"},{"line_number":95,"context_line":"        resp, body \u003d self.client.create_pool("},{"line_number":96,"context_line":"            name\u003ddata_utils.rand_name(\"pool-\"), lb_method\u003d\"ROUND_ROBIN\","},{"line_number":97,"context_line":"            protocol\u003d\"HTTPS\", subnet_id\u003dself.subnet[\u0027id\u0027])"},{"line_number":98,"context_line":"        pool \u003d body[\u0027pool\u0027]"},{"line_number":99,"context_line":"        self.addCleanup(self.client.delete_pool, pool[\u0027id\u0027])"},{"line_number":100,"context_line":"        resp, body \u003d self.client.create_vip("}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F9r70%3D","line":97,"updated":"2014-02-05 00:15:09.000000000","message":"Here","commit_id":"27d734e2efa97bd02f26f072d9c6c502d3103935"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cc4a69495d210296a6ec3a390e202cc2dd18eb2e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            name\u003dname, protocol\u003d\"HTTPS\", protocol_port\u003d81,"},{"line_number":102,"context_line":"            subnet_id\u003dself.subnet[\u0027id\u0027], pool_id\u003dpool[\u0027id\u0027],"},{"line_number":103,"context_line":"            description\u003ddata_utils.rand_name(\u0027description-\u0027),"},{"line_number":104,"context_line":"            admin_state_up\u003dFalse)"},{"line_number":105,"context_line":"        vip \u003d body[\u0027vip\u0027]"},{"line_number":106,"context_line":"        self.addCleanup(self.client.delete_vip, vip[\u0027id\u0027])"},{"line_number":107,"context_line":"        attr_exceptions \u003d [\u0027status\u0027, \u0027session_persistence\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F9r7s%3D","line":104,"updated":"2014-02-05 00:15:09.000000000","message":"Here","commit_id":"27d734e2efa97bd02f26f072d9c6c502d3103935"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cc4a69495d210296a6ec3a390e202cc2dd18eb2e","unresolved":false,"context_lines":[{"line_number":171,"context_line":"            name\u003ddata_utils.rand_name(\"pool-\"),"},{"line_number":172,"context_line":"            lb_method\u003d\u0027ROUND_ROBIN\u0027,"},{"line_number":173,"context_line":"            protocol\u003d\u0027HTTP\u0027,"},{"line_number":174,"context_line":"            subnet_id\u003dself.subnet[\u0027id\u0027])"},{"line_number":175,"context_line":"        pool \u003d body[\u0027pool\u0027]"},{"line_number":176,"context_line":"        self.addCleanup(self.client.delete_pool, pool[\u0027id\u0027])"},{"line_number":177,"context_line":"        # Verifies the details of a pool"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F9r7Y%3D","line":174,"updated":"2014-02-05 00:15:09.000000000","message":"Here","commit_id":"27d734e2efa97bd02f26f072d9c6c502d3103935"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cc4a69495d210296a6ec3a390e202cc2dd18eb2e","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            name\u003ddata_utils.rand_name(\"pool-\"), lb_method\u003d\"ROUND_ROBIN\","},{"line_number":198,"context_line":"            protocol\u003d\"HTTPS\", subnet_id\u003dself.subnet[\u0027id\u0027],"},{"line_number":199,"context_line":"            description\u003ddata_utils.rand_name(\u0027description-\u0027),"},{"line_number":200,"context_line":"            admin_state_up\u003dFalse)"},{"line_number":201,"context_line":"        pool \u003d body[\u0027pool\u0027]"},{"line_number":202,"context_line":"        self.addCleanup(self.client.delete_pool, pool[\u0027id\u0027])"},{"line_number":203,"context_line":"        attr_exceptions \u003d [\u0027status\u0027, \u0027vip_id\u0027, \u0027members\u0027, \u0027provider\u0027,"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F9r7U%3D","line":200,"updated":"2014-02-05 00:15:09.000000000","message":"Here","commit_id":"27d734e2efa97bd02f26f072d9c6c502d3103935"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cc4a69495d210296a6ec3a390e202cc2dd18eb2e","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":223,"context_line":"    def test_list_members_with_filters(self):"},{"line_number":224,"context_line":"        resp, body \u003d self.client.create_member(\"10.0.9.47\", 80,"},{"line_number":225,"context_line":"                                               self.pool[\u0027id\u0027])"},{"line_number":226,"context_line":"        member \u003d body[\u0027member\u0027]"},{"line_number":227,"context_line":"        self.addCleanup(self.client.delete_member, member[\u0027id\u0027])"},{"line_number":228,"context_line":"        attr_exceptions \u003d [\u0027status\u0027, \u0027status_description\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F9r7M%3D","line":225,"updated":"2014-02-05 00:15:09.000000000","message":"Here","commit_id":"27d734e2efa97bd02f26f072d9c6c502d3103935"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"cc4a69495d210296a6ec3a390e202cc2dd18eb2e","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        resp, body \u003d self.client.create_health_monitor(delay\u003d5,"},{"line_number":277,"context_line":"                                                       max_retries\u003d4,"},{"line_number":278,"context_line":"                                                       type\u003d\"TCP\","},{"line_number":279,"context_line":"                                                       timeout\u003d2)"},{"line_number":280,"context_line":"        health_monitor \u003d body[\u0027health_monitor\u0027]"},{"line_number":281,"context_line":"        self.addCleanup(self.client.delete_health_monitor,"},{"line_number":282,"context_line":"                        health_monitor[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":26,"id":"AAAAUH%2F9r7E%3D","line":279,"updated":"2014-02-05 00:15:09.000000000","message":"Here","commit_id":"27d734e2efa97bd02f26f072d9c6c502d3103935"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"8cf3d7765d7c9ca1ff307ffad99043f2b718ca86","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        # Verifies the details of a pool"},{"line_number":182,"context_line":"        resp, body \u003d self.client.show_pool(pool[\u0027id\u0027])"},{"line_number":183,"context_line":"        self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":184,"context_line":"        pool \u003d body[\u0027pool\u0027]"},{"line_number":185,"context_line":"        for key, value in pool.iteritems():"},{"line_number":186,"context_line":"            # \u0027status\u0027 should not be confirmed in api tests"},{"line_number":187,"context_line":"            if key !\u003d \u0027status\u0027:"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUX%2F%2FeBM%3D","line":184,"updated":"2014-02-13 00:03:55.000000000","message":"You might change this to:\n\npool_show \u003d body[\u0027pool\u0027]","commit_id":"9a90327115120245e4df3958bde1d10f5bc6d1ed"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"8cf3d7765d7c9ca1ff307ffad99043f2b718ca86","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        for key, value in pool.iteritems():"},{"line_number":186,"context_line":"            # \u0027status\u0027 should not be confirmed in api tests"},{"line_number":187,"context_line":"            if key !\u003d \u0027status\u0027:"},{"line_number":188,"context_line":"                self.assertEqual(pool[key], value)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":191,"context_line":"    def test_list_pools(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUX%2F%2FeBY%3D","line":188,"updated":"2014-02-13 00:03:55.000000000","message":"I think this assert is trivial. You are testing Python\u0027s dictionaries and iterators, not Neutron. To really add value, I would change this line to:\n\nself.assertEqual(pool[key], pool_show[key])\n\nSee complementary comment to line 184","commit_id":"9a90327115120245e4df3958bde1d10f5bc6d1ed"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e925caa8ac900ac3850dbdfd51a0db46d5413abc","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        for key, value in pool.iteritems():"},{"line_number":186,"context_line":"            # \u0027status\u0027 should not be confirmed in api tests"},{"line_number":187,"context_line":"            if key !\u003d \u0027status\u0027:"},{"line_number":188,"context_line":"                self.assertEqual(pool[key], value)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":191,"context_line":"    def test_list_pools(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUX%2F%2FcOc%3D","line":188,"in_reply_to":"AAAAUX%2F%2FeBY%3D","updated":"2014-02-13 07:17:29.000000000","message":"Thank you! Nice catch!","commit_id":"9a90327115120245e4df3958bde1d10f5bc6d1ed"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"8cf3d7765d7c9ca1ff307ffad99043f2b718ca86","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        for key, value in member.iteritems():"},{"line_number":267,"context_line":"             # \u0027status\u0027 should not be confirmed in api tests"},{"line_number":268,"context_line":"            if key !\u003d \u0027status\u0027:"},{"line_number":269,"context_line":"                self.assertEqual(self.member[key], value)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":272,"context_line":"    def test_list_health_monitors(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAUX%2F%2FeAc%3D","line":269,"updated":"2014-02-13 00:03:55.000000000","message":"This assert valuable and reflects the idea of what I am proposing for line 188","commit_id":"9a90327115120245e4df3958bde1d10f5bc6d1ed"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"f76d66275c09862b87ac64c8000196a42778d860","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        for key, value in pool.iteritems():"},{"line_number":186,"context_line":"            # \u0027status\u0027 should not be confirmed in api tests"},{"line_number":187,"context_line":"            if key !\u003d \u0027status\u0027:"},{"line_number":188,"context_line":"                self.assertEqual(value, shown_pool[key])"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":191,"context_line":"    def test_list_pools(self):"}],"source_content_type":"text/x-python","patch_set":31,"id":"AAAAUX%2F%2FXSY%3D","line":188,"updated":"2014-02-13 17:56:20.000000000","message":"Yeah! Even nicer of what I proposed yesterday. :-)","commit_id":"ddc91fbd34045f4eefeea6a985ee82331619b36e"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"541f6f8eae7c8fbef596754ab640c218ead48f71","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertIn(self.vip[\u0027id\u0027], [v[\u0027id\u0027] for v in vips])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":73,"context_line":"    def test_list_vips_two_vips(self):"},{"line_number":74,"context_line":"        name \u003d data_utils.rand_name(\u0027vip-\u0027)"},{"line_number":75,"context_line":"        resp, body \u003d self.client.create_pool("},{"line_number":76,"context_line":"            name\u003ddata_utils.rand_name(\"pool-\"), lb_method\u003d\"ROUND_ROBIN\","}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAVn%2F%2B7bM%3D","line":73,"updated":"2014-03-11 08:48:08.000000000","message":"I am not sure about the scenario that we test here, what is so different in listing one or two vip\u0027s? I would suggest to remove this test and just keep  test_list_two_vips_with_filter() since with this test you don\u0027t test any new code path.","commit_id":"45bb725b62ec82505c0e528b648b77800c003809"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"163f7b7b0f805cd09bbdae6f882683d440b71091","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.assertIn(self.vip[\u0027id\u0027], [v[\u0027id\u0027] for v in vips])"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":73,"context_line":"    def test_list_vips_two_vips(self):"},{"line_number":74,"context_line":"        name \u003d data_utils.rand_name(\u0027vip-\u0027)"},{"line_number":75,"context_line":"        resp, body \u003d self.client.create_pool("},{"line_number":76,"context_line":"            name\u003ddata_utils.rand_name(\"pool-\"), lb_method\u003d\"ROUND_ROBIN\","}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAVn%2F%2B7MA%3D","line":73,"in_reply_to":"AAAAVn%2F%2B7bM%3D","updated":"2014-03-11 12:11:23.000000000","message":"ok, will do.","commit_id":"45bb725b62ec82505c0e528b648b77800c003809"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"541f6f8eae7c8fbef596754ab640c218ead48f71","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                resp, body \u003d self.client.list_vips(**{key: value})"},{"line_number":117,"context_line":"                self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":118,"context_line":"                vips \u003d [v[key] for v in body[\u0027vips\u0027]]"},{"line_number":119,"context_line":"                self.assertIn(value, vips)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":122,"context_line":"    def test_create_update_delete_pool_vip(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAVn%2F%2B7UI%3D","line":119,"updated":"2014-03-11 08:48:08.000000000","message":"Can you also test that none vip\u0027s are in the list that doesn\u0027t meet the filter requirements?","commit_id":"45bb725b62ec82505c0e528b648b77800c003809"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"163f7b7b0f805cd09bbdae6f882683d440b71091","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                resp, body \u003d self.client.list_vips(**{key: value})"},{"line_number":117,"context_line":"                self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":118,"context_line":"                vips \u003d [v[key] for v in body[\u0027vips\u0027]]"},{"line_number":119,"context_line":"                self.assertIn(value, vips)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":122,"context_line":"    def test_create_update_delete_pool_vip(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAVn%2F%2B7Kw%3D","line":119,"in_reply_to":"AAAAVn%2F%2B7UI%3D","updated":"2014-03-11 12:11:23.000000000","message":"It is no relevant to do here. As tests can run parallel and some objects are created in setUp.","commit_id":"45bb725b62ec82505c0e528b648b77800c003809"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"541f6f8eae7c8fbef596754ab640c218ead48f71","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                resp, body \u003d self.client.list_pools(**{key: value})"},{"line_number":215,"context_line":"                self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":216,"context_line":"                pools \u003d [p[key] for p in body[\u0027pools\u0027]]"},{"line_number":217,"context_line":"                self.assertIn(value, pools)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":220,"context_line":"    def test_list_members(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAVn%2F%2B7Rw%3D","line":217,"updated":"2014-03-11 08:48:08.000000000","message":"See above.","commit_id":"45bb725b62ec82505c0e528b648b77800c003809"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"541f6f8eae7c8fbef596754ab640c218ead48f71","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                resp, body \u003d self.client.list_members(**{key: value})"},{"line_number":240,"context_line":"                self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":241,"context_line":"                members \u003d [m[key] for m in body[\u0027members\u0027]]"},{"line_number":242,"context_line":"                self.assertIn(value, members)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":245,"context_line":"    def test_create_update_delete_member(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAVn%2F%2B7Rc%3D","line":242,"updated":"2014-03-11 08:48:08.000000000","message":"See above.","commit_id":"45bb725b62ec82505c0e528b648b77800c003809"},{"author":{"_account_id":7872,"name":"Marc Koderer","email":"marc@koderer.com","username":"mkoderer"},"change_message_id":"541f6f8eae7c8fbef596754ab640c218ead48f71","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                resp, body \u003d self.client.list_health_monitors(**{key: value})"},{"line_number":296,"context_line":"                self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":297,"context_line":"                health_monitors \u003d [h[key] for h in body[\u0027health_monitors\u0027]]"},{"line_number":298,"context_line":"                self.assertIn(value, health_monitors)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":301,"context_line":"    def test_create_update_delete_health_monitor(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAVn%2F%2B7RA%3D","line":298,"updated":"2014-03-11 08:48:08.000000000","message":"See above. I see that this code is quite often duplicated. It maybe not easy but it would be really nice to have a helper function that can test any kind of filtering.","commit_id":"45bb725b62ec82505c0e528b648b77800c003809"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"163f7b7b0f805cd09bbdae6f882683d440b71091","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                resp, body \u003d self.client.list_health_monitors(**{key: value})"},{"line_number":296,"context_line":"                self.assertEqual(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":297,"context_line":"                health_monitors \u003d [h[key] for h in body[\u0027health_monitors\u0027]]"},{"line_number":298,"context_line":"                self.assertIn(value, health_monitors)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":301,"context_line":"    def test_create_update_delete_health_monitor(self):"}],"source_content_type":"text/x-python","patch_set":35,"id":"AAAAVn%2F%2B6AM%3D","line":298,"in_reply_to":"AAAAVn%2F%2B7RA%3D","updated":"2014-03-11 12:11:23.000000000","message":"Done","commit_id":"45bb725b62ec82505c0e528b648b77800c003809"}]}
