)]}'
{"tempest/api/compute/admin/test_floating_ips_bulk.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5a6f20b15941f2146bc785d61cdaba11e9adc26d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_create_delete_floating_ips_bulk(self):"},{"line_number":61,"context_line":"        # Create and delete the Floating IPs Bulk"},{"line_number":62,"context_line":"        pool \u003d \u0027test_pool\u0027"},{"line_number":63,"context_line":"        interface \u003d \u0027eth0\u0027"},{"line_number":64,"context_line":"        resp, body \u003d self.client.create_floating_ips_bulk(self.ip_range,"},{"line_number":65,"context_line":"                                                          pool,"},{"line_number":66,"context_line":"                                                          interface)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FVXU%3D","line":63,"updated":"2014-04-22 13:11:15.000000000","message":"is eth0 always going to be the interface in all situations?","commit_id":"6137429a744140b591c31f55387704ca586897c6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e2321368e6fdbd57b855d152af55b724f18fbe51","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_create_delete_floating_ips_bulk(self):"},{"line_number":61,"context_line":"        # Create and delete the Floating IPs Bulk"},{"line_number":62,"context_line":"        pool \u003d \u0027test_pool\u0027"},{"line_number":63,"context_line":"        interface \u003d \u0027eth0\u0027"},{"line_number":64,"context_line":"        resp, body \u003d self.client.create_floating_ips_bulk(self.ip_range,"},{"line_number":65,"context_line":"                                                          pool,"},{"line_number":66,"context_line":"                                                          interface)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPss%3D","line":63,"in_reply_to":"AAAAXH%2F%2FVXU%3D","updated":"2014-04-23 02:53:25.000000000","message":"Thanks Sean for review.\nIn these test cases, I have taken the interface as eth0 for all cases. \n\nActually if no interface is given in request then, default interface (conf-\u003epublic_interface) will be taken for all create request (https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/contrib/floating_ips_bulk.py#L95).\n\nPlease let me know if you have any suggestion on this.","commit_id":"6137429a744140b591c31f55387704ca586897c6"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"b42a661781e7f759425c9bff1c13bea6e2050917","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def get_unallocated_floating_ip_range(self):"},{"line_number":39,"context_line":"        ip_range \u003d \u002710.0.0.0/29\u0027"},{"line_number":40,"context_line":"        resp, body \u003d self.client.list_floating_ips_bulk()"},{"line_number":41,"context_line":"        allocated_ips_list \u003d map(lambda x: x[\u0027address\u0027], body)"},{"line_number":42,"context_line":"        success \u003d False"},{"line_number":43,"context_line":"        for i in range(255):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bad4c104_ba67e1e9","line":40,"updated":"2014-04-29 07:54:11.000000000","message":"unused variable \"resp\"","commit_id":"01afcea1834d5358eb07be878b306e25cd88cea2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"88e148c46547a600a7d2ce3fe5789a5a130fbeba","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def get_unallocated_floating_ip_range(self):"},{"line_number":39,"context_line":"        ip_range \u003d \u002710.0.0.0/29\u0027"},{"line_number":40,"context_line":"        resp, body \u003d self.client.list_floating_ips_bulk()"},{"line_number":41,"context_line":"        allocated_ips_list \u003d map(lambda x: x[\u0027address\u0027], body)"},{"line_number":42,"context_line":"        success \u003d False"},{"line_number":43,"context_line":"        for i in range(255):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_c07a4e76","line":40,"in_reply_to":"bad4c104_ba67e1e9","updated":"2014-05-07 02:02:53.000000000","message":"Done","commit_id":"01afcea1834d5358eb07be878b306e25cd88cea2"},{"author":{"_account_id":8824,"name":"Sergey Murashov","email":"smurashov@mirantis.com","username":"SergeyMurashov"},"change_message_id":"b42a661781e7f759425c9bff1c13bea6e2050917","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                break"},{"line_number":53,"context_line":"        msg \u003d (\"IP range already present. Needs to expand this function \""},{"line_number":54,"context_line":"               \"to get the unallocated IP range\")"},{"line_number":55,"context_line":"        if success is not True:"},{"line_number":56,"context_line":"            raise exceptions.NotFound(msg)"},{"line_number":57,"context_line":"        return ip_range"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bad4c104_bac36189","line":55,"updated":"2014-04-29 07:54:11.000000000","message":"may be would be better:\n\nif not success:\n\n?","commit_id":"01afcea1834d5358eb07be878b306e25cd88cea2"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"88e148c46547a600a7d2ce3fe5789a5a130fbeba","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                break"},{"line_number":53,"context_line":"        msg \u003d (\"IP range already present. Needs to expand this function \""},{"line_number":54,"context_line":"               \"to get the unallocated IP range\")"},{"line_number":55,"context_line":"        if success is not True:"},{"line_number":56,"context_line":"            raise exceptions.NotFound(msg)"},{"line_number":57,"context_line":"        return ip_range"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_e07f5264","line":55,"in_reply_to":"bad4c104_bac36189","updated":"2014-05-07 02:02:53.000000000","message":"Thanks.Done.","commit_id":"01afcea1834d5358eb07be878b306e25cd88cea2"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"c8fb80c87d33061b6e3a1b32eb5f9c294d945fab","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def get_unallocated_floating_ip_range(self):"},{"line_number":39,"context_line":"        ip_range \u003d \u002710.0.0.0/29\u0027"},{"line_number":40,"context_line":"        _, body \u003d self.client.list_floating_ips_bulk()"},{"line_number":41,"context_line":"        allocated_ips_list \u003d map(lambda x: x[\u0027address\u0027], body)"},{"line_number":42,"context_line":"        success \u003d False"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_b6492ab9","line":39,"updated":"2014-05-16 10:09:57.000000000","message":"I\u0027m not sure we can make assumptions about the available network subnets, maybe you can find this in some config setting OR get it from neutron at runtime?","commit_id":"4071003bc4e3301573f2ee8dd8f6fe64d97c971f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8e254448f8a54a50986f6c5ea1f140fb4feb744d","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def get_unallocated_floating_ip_range(self):"},{"line_number":39,"context_line":"        ip_range \u003d \u002710.0.0.0/29\u0027"},{"line_number":40,"context_line":"        _, body \u003d self.client.list_floating_ips_bulk()"},{"line_number":41,"context_line":"        allocated_ips_list \u003d map(lambda x: x[\u0027address\u0027], body)"},{"line_number":42,"context_line":"        success \u003d False"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_5a7308b1","line":39,"in_reply_to":"7adec928_b6492ab9","updated":"2014-05-22 08:21:21.000000000","message":"Actually here we are not making assumption about available subnets, in below lines it is being confirmed that range is not assigned.","commit_id":"4071003bc4e3301573f2ee8dd8f6fe64d97c971f"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"c8fb80c87d33061b6e3a1b32eb5f9c294d945fab","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        _, body \u003d self.client.list_floating_ips_bulk()"},{"line_number":41,"context_line":"        allocated_ips_list \u003d map(lambda x: x[\u0027address\u0027], body)"},{"line_number":42,"context_line":"        success \u003d False"},{"line_number":43,"context_line":"        for i in range(255):"},{"line_number":44,"context_line":"            found \u003d False"},{"line_number":45,"context_line":"            for ip_addr in netaddr.IPNetwork(ip_range).iter_hosts():"},{"line_number":46,"context_line":"                if str(ip_addr) in allocated_ips_list:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_b6e04a97","line":43,"updated":"2014-05-16 10:09:57.000000000","message":"just to make sure I got it right, is the purpose of lines from 43 to 56 just to make sure none of the IPs in the range has already been assigned?","commit_id":"4071003bc4e3301573f2ee8dd8f6fe64d97c971f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8e254448f8a54a50986f6c5ea1f140fb4feb744d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        _, body \u003d self.client.list_floating_ips_bulk()"},{"line_number":41,"context_line":"        allocated_ips_list \u003d map(lambda x: x[\u0027address\u0027], body)"},{"line_number":42,"context_line":"        success \u003d False"},{"line_number":43,"context_line":"        for i in range(255):"},{"line_number":44,"context_line":"            found \u003d False"},{"line_number":45,"context_line":"            for ip_addr in netaddr.IPNetwork(ip_range).iter_hosts():"},{"line_number":46,"context_line":"                if str(ip_addr) in allocated_ips_list:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_ba616cd5","line":43,"in_reply_to":"7adec928_b6e04a97","updated":"2014-05-22 08:21:21.000000000","message":"yes, your understanding is right.","commit_id":"4071003bc4e3301573f2ee8dd8f6fe64d97c971f"},{"author":{"_account_id":6796,"name":"Giulio Fidente","email":"gfidente@redhat.com","username":"gfidente"},"change_message_id":"c8fb80c87d33061b6e3a1b32eb5f9c294d945fab","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertEqual(self.ip_range, body)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":74,"context_line":"    def test_list_floating_ips_bulk(self):"},{"line_number":75,"context_line":"        # Create the Floating IPs Bulk and list those."},{"line_number":76,"context_line":"        pool \u003d \u0027test_pool\u0027"},{"line_number":77,"context_line":"        interface \u003d \u0027eth0\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_160bbe7d","line":74,"updated":"2014-05-16 10:09:57.000000000","message":"I\u0027d move the list step in between the create/delete of previous test so we don\u0027t duplicate the create/delete action","commit_id":"4071003bc4e3301573f2ee8dd8f6fe64d97c971f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8e254448f8a54a50986f6c5ea1f140fb4feb744d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertEqual(self.ip_range, body)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":74,"context_line":"    def test_list_floating_ips_bulk(self):"},{"line_number":75,"context_line":"        # Create the Floating IPs Bulk and list those."},{"line_number":76,"context_line":"        pool \u003d \u0027test_pool\u0027"},{"line_number":77,"context_line":"        interface \u003d \u0027eth0\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_fa9a14c4","line":74,"in_reply_to":"7adec928_160bbe7d","updated":"2014-05-22 08:21:21.000000000","message":"Nice idea, I will do that.","commit_id":"4071003bc4e3301573f2ee8dd8f6fe64d97c971f"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"25c43df3496738df747424910773e2ee343a5958","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":"    Tests Floating IPs Bulk APIs Create, List and  Delete that"},{"line_number":27,"context_line":"    require admin privileges"},{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_ec6a05ed","line":27,"updated":"2014-06-03 23:45:12.000000000","message":"Can you include a reference to the api spec that is being tested here?","commit_id":"8b64705114d908b9f299faffae18b88e1e664827"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f12432af61737b4363c40acdfebc6149f745b32b","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":"    Tests Floating IPs Bulk APIs Create, List and  Delete that"},{"line_number":27,"context_line":"    require admin privileges"},{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_a228aa33","line":27,"in_reply_to":"1ae5cdf2_ec6a05ed","updated":"2014-06-06 07:42:20.000000000","message":"Done.","commit_id":"8b64705114d908b9f299faffae18b88e1e664827"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"25c43df3496738df747424910773e2ee343a5958","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def get_unallocated_floating_ip_range(self):"},{"line_number":39,"context_line":"        ip_range \u003d \u002710.0.0.0/29\u0027"},{"line_number":40,"context_line":"        _, body \u003d self.client.list_floating_ips_bulk()"},{"line_number":41,"context_line":"        allocated_ips_list \u003d map(lambda x: x[\u0027address\u0027], body)"},{"line_number":42,"context_line":"        success \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_8c7fc1aa","line":39,"updated":"2014-06-03 23:45:12.000000000","message":"Where is this range coming from? This feels like maybe this should be a configurable. The test didn\u0027t fail if the hardcoded range corresponds to an in use ip range.","commit_id":"8b64705114d908b9f299faffae18b88e1e664827"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f12432af61737b4363c40acdfebc6149f745b32b","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def get_unallocated_floating_ip_range(self):"},{"line_number":39,"context_line":"        ip_range \u003d \u002710.0.0.0/29\u0027"},{"line_number":40,"context_line":"        _, body \u003d self.client.list_floating_ips_bulk()"},{"line_number":41,"context_line":"        allocated_ips_list \u003d map(lambda x: x[\u0027address\u0027], body)"},{"line_number":42,"context_line":"        success \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_e21d5210","line":39,"in_reply_to":"1ae5cdf2_8c7fc1aa","updated":"2014-06-06 07:42:20.000000000","message":"Yes, you are right. Done","commit_id":"8b64705114d908b9f299faffae18b88e1e664827"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"25c43df3496738df747424910773e2ee343a5958","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_create_list_delete_floating_ips_bulk(self):"},{"line_number":61,"context_line":"        # Create, List  and delete the Floating IPs Bulk"},{"line_number":62,"context_line":"        pool \u003d \u0027test_pool\u0027"},{"line_number":63,"context_line":"        interface \u003d \u0027eth0\u0027"},{"line_number":64,"context_line":"        resp, body \u003d self.client.create_floating_ips_bulk(self.ip_range,"},{"line_number":65,"context_line":"                                                          pool,"},{"line_number":66,"context_line":"                                                          interface)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_971b4a72","line":63,"updated":"2014-06-03 23:45:12.000000000","message":"How is it safe to hardcode an interface to use. I get that you\u0027re just reserving the range and not actually attaching it to anything, but it still seems a little weird to me. Maybe just put a comment saying the interface isn\u0027t ever expected to be used. But if that\u0027s the case then we definitely need to be careful about cleanup here.","commit_id":"8b64705114d908b9f299faffae18b88e1e664827"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f12432af61737b4363c40acdfebc6149f745b32b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def test_create_list_delete_floating_ips_bulk(self):"},{"line_number":61,"context_line":"        # Create, List  and delete the Floating IPs Bulk"},{"line_number":62,"context_line":"        pool \u003d \u0027test_pool\u0027"},{"line_number":63,"context_line":"        interface \u003d \u0027eth0\u0027"},{"line_number":64,"context_line":"        resp, body \u003d self.client.create_floating_ips_bulk(self.ip_range,"},{"line_number":65,"context_line":"                                                          pool,"},{"line_number":66,"context_line":"                                                          interface)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_02195e21","line":63,"in_reply_to":"1ae5cdf2_971b4a72","updated":"2014-06-06 07:42:20.000000000","message":"Done.","commit_id":"8b64705114d908b9f299faffae18b88e1e664827"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"25c43df3496738df747424910773e2ee343a5958","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertNotEqual(0, len(body))"},{"line_number":72,"context_line":"        for ip in netaddr.IPNetwork(self.ip_range).iter_hosts():"},{"line_number":73,"context_line":"            self.assertIn(str(ip), map(lambda x: x[\u0027address\u0027], ips_list))"},{"line_number":74,"context_line":"        resp, body \u003d self.client.delete_floating_ips_bulk(self.ip_range)"},{"line_number":75,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":76,"context_line":"        self.assertEqual(self.ip_range, body)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_1743ba6c","line":74,"updated":"2014-06-03 23:45:12.000000000","message":"This definitely needs to be a a cleanup. I\u0027d break it out into a separate method with the verification to call addCleanup() on. Especially since you have a hardcoded interface name if the test fails for any reason before this you\u0027ll leave the ip range with a potentially bogus interface name lying around.","commit_id":"8b64705114d908b9f299faffae18b88e1e664827"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f12432af61737b4363c40acdfebc6149f745b32b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertNotEqual(0, len(body))"},{"line_number":72,"context_line":"        for ip in netaddr.IPNetwork(self.ip_range).iter_hosts():"},{"line_number":73,"context_line":"            self.assertIn(str(ip), map(lambda x: x[\u0027address\u0027], ips_list))"},{"line_number":74,"context_line":"        resp, body \u003d self.client.delete_floating_ips_bulk(self.ip_range)"},{"line_number":75,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":76,"context_line":"        self.assertEqual(self.ip_range, body)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_a2dfca38","line":74,"in_reply_to":"1ae5cdf2_1743ba6c","updated":"2014-06-06 07:42:20.000000000","message":"This is nice catch. Thanks. Done.","commit_id":"8b64705114d908b9f299faffae18b88e1e664827"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b3a5a8ab8b9f7e66fdb3b25d57d481dfd5fc2691","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class FloatingIPsBulkAdminTestJSON(base.BaseV2ComputeAdminTest):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    \"\"\""},{"line_number":28,"context_line":"    Tests Floating IPs Bulk APIs Create, List and  Delete that"},{"line_number":29,"context_line":"    require admin privileges."}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_add1e458","line":26,"updated":"2014-06-11 10:36:30.000000000","message":"need to remove this blank line to represent the below string as class string.","commit_id":"2dd000f7cc89a6797fd4c862aedc4c95d9dae968"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a2fde6978ebc9d0c19e7844d50a7e7618621211f","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class FloatingIPsBulkAdminTestJSON(base.BaseV2ComputeAdminTest):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    \"\"\""},{"line_number":28,"context_line":"    Tests Floating IPs Bulk APIs Create, List and  Delete that"},{"line_number":29,"context_line":"    require admin privileges."}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_88efb6b0","line":26,"in_reply_to":"1ae5cdf2_add1e458","updated":"2014-06-11 11:15:04.000000000","message":"Thanks. Done","commit_id":"2dd000f7cc89a6797fd4c862aedc4c95d9dae968"}]}
