)]}'
{"tempest/api/database/limits/test_limits.py":[{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"df0c4fa0635c56d09482cb61c3ef81b599f7d759","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _list_db_limits(self):"},{"line_number":29,"context_line":"        resp, self.limits \u003d self.client.list_db_limits()"},{"line_number":30,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":33,"context_line":"    def test_all_verbs_limits(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_0babf6d6","line":30,"updated":"2014-12-09 14:45:27.000000000","message":"can you please move the status to the client? There was a bp  client-checks-success ( https://review.openstack.org/#/q/topic:bp/client-checks-success,n,z ) which did this, so would be nice to keep such pattern.","commit_id":"e44c4efb199a43c1d46cd3633f62fd36174f9dd1"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"57774b73573c9f95e85f0202c7fe6aaa73e5ef19","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def _list_db_limits(self):"},{"line_number":29,"context_line":"        resp, self.limits \u003d self.client.list_db_limits()"},{"line_number":30,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":33,"context_line":"    def test_all_verbs_limits(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_82032a41","line":30,"in_reply_to":"3a961159_0babf6d6","updated":"2014-12-10 09:18:07.000000000","message":"Done","commit_id":"e44c4efb199a43c1d46cd3633f62fd36174f9dd1"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"df0c4fa0635c56d09482cb61c3ef81b599f7d759","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        # Test to verify if all verbs are present in list limits response"},{"line_number":35,"context_line":"        self._list_db_limits()"},{"line_number":36,"context_line":"        # New addition of POST verb with uri as \u0027*/mgmt\u0027"},{"line_number":37,"context_line":"        expected_verbs \u003d sorted([\u0027ABSOLUTE\u0027, \u0027POST\u0027, \u0027POST\u0027, \u0027PUT\u0027,"},{"line_number":38,"context_line":"                                \u0027GET\u0027, \u0027DELETE\u0027])"},{"line_number":39,"context_line":"        found_verbs \u003d sorted([l[\u0027verb\u0027] for l in self.limits])"},{"line_number":40,"context_line":"        self.assertEqual(expected_verbs, found_verbs, \"Failed to match actual\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_3973ab16","line":37,"updated":"2014-12-09 14:45:27.000000000","message":"double POST here is causing problems with icehouse, not sure why it happens only to icehouse though","commit_id":"e44c4efb199a43c1d46cd3633f62fd36174f9dd1"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"cc2365196e759800c9161f2afe27c8cb57d22edb","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                         \"verb is allowed. Fetched %s\""},{"line_number":40,"context_line":"                         % len(absolute_limit))"},{"line_number":41,"context_line":"        actual_abs_limits \u003d absolute_limit[0].keys()"},{"line_number":42,"context_line":"        missing_abs_limit \u003d [a for a in expected_abs_limits"},{"line_number":43,"context_line":"                             if a not in actual_abs_limits]"},{"line_number":44,"context_line":"        self.assertEqual(0, len(missing_abs_limit),"},{"line_number":45,"context_line":"                         \"Failed to find the following absolute limit(s)\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_24b83410","line":42,"updated":"2014-12-15 12:43:27.000000000","message":"Use :\n\nmissing_abs_limit \u003d set(actual_abs_limits) ^ set(expected_abs_limits)","commit_id":"a440b3c8c404944cee541a116f70c4a45ecfdddf"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"696b7566a6eb172d4f005ad436e0b1c9e59d921b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                         \"verb is allowed. Fetched %s\""},{"line_number":40,"context_line":"                         % len(absolute_limit))"},{"line_number":41,"context_line":"        actual_abs_limits \u003d absolute_limit[0].keys()"},{"line_number":42,"context_line":"        missing_abs_limit \u003d [a for a in expected_abs_limits"},{"line_number":43,"context_line":"                             if a not in actual_abs_limits]"},{"line_number":44,"context_line":"        self.assertEqual(0, len(missing_abs_limit),"},{"line_number":45,"context_line":"                         \"Failed to find the following absolute limit(s)\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_bba41e09","line":42,"in_reply_to":"3a961159_24b83410","updated":"2014-12-16 10:33:43.000000000","message":"Done","commit_id":"a440b3c8c404944cee541a116f70c4a45ecfdddf"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"cc2365196e759800c9161f2afe27c8cb57d22edb","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        actual_abs_limits \u003d absolute_limit[0].keys()"},{"line_number":42,"context_line":"        missing_abs_limit \u003d [a for a in expected_abs_limits"},{"line_number":43,"context_line":"                             if a not in actual_abs_limits]"},{"line_number":44,"context_line":"        self.assertEqual(0, len(missing_abs_limit),"},{"line_number":45,"context_line":"                         \"Failed to find the following absolute limit(s)\""},{"line_number":46,"context_line":"                         \" in a fetched list: %s\" %"},{"line_number":47,"context_line":"                         \u0027, \u0027.join(str(a) for a in missing_abs_limit))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_248af463","line":44,"updated":"2014-12-15 12:43:27.000000000","message":"use assertEmpty()","commit_id":"a440b3c8c404944cee541a116f70c4a45ecfdddf"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"696b7566a6eb172d4f005ad436e0b1c9e59d921b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        actual_abs_limits \u003d absolute_limit[0].keys()"},{"line_number":42,"context_line":"        missing_abs_limit \u003d [a for a in expected_abs_limits"},{"line_number":43,"context_line":"                             if a not in actual_abs_limits]"},{"line_number":44,"context_line":"        self.assertEqual(0, len(missing_abs_limit),"},{"line_number":45,"context_line":"                         \"Failed to find the following absolute limit(s)\""},{"line_number":46,"context_line":"                         \" in a fetched list: %s\" %"},{"line_number":47,"context_line":"                         \u0027, \u0027.join(str(a) for a in missing_abs_limit))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_fbadc6eb","line":44,"in_reply_to":"3a961159_248af463","updated":"2014-12-16 10:33:43.000000000","message":"Done","commit_id":"a440b3c8c404944cee541a116f70c4a45ecfdddf"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"b6dfbdd9492d3d9d5471f578a99cdc8b2eb73d11","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        _, limits \u003d self.client.list_db_limits()"},{"line_number":33,"context_line":"        expected_abs_limits \u003d [\u0027max_backups\u0027, \u0027max_volumes\u0027,"},{"line_number":34,"context_line":"                               \u0027max_instances\u0027, \u0027verb\u0027]"},{"line_number":35,"context_line":"        actual_abs_limits \u003d list()"},{"line_number":36,"context_line":"        absolute_limit \u003d [l for l in limits"},{"line_number":37,"context_line":"                          if l[\u0027verb\u0027] \u003d\u003d \u0027ABSOLUTE\u0027]"},{"line_number":38,"context_line":"        self.assertEqual(1, len(absolute_limit), \"One ABSOLUTE limit \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_5c45d715","line":35,"updated":"2014-12-30 06:46:33.000000000","message":"L35 is unnecessary. L41 either override the list() or raises on exception, the variable is not derefrenced before L42. (-1)","commit_id":"b100d395f316ede39dcacb526bcfeec180c10d1d"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"f6f1fd97b197d8ce170cb357a07e3e5f325169be","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        _, limits \u003d self.client.list_db_limits()"},{"line_number":33,"context_line":"        expected_abs_limits \u003d [\u0027max_backups\u0027, \u0027max_volumes\u0027,"},{"line_number":34,"context_line":"                               \u0027max_instances\u0027, \u0027verb\u0027]"},{"line_number":35,"context_line":"        actual_abs_limits \u003d list()"},{"line_number":36,"context_line":"        absolute_limit \u003d [l for l in limits"},{"line_number":37,"context_line":"                          if l[\u0027verb\u0027] \u003d\u003d \u0027ABSOLUTE\u0027]"},{"line_number":38,"context_line":"        self.assertEqual(1, len(absolute_limit), \"One ABSOLUTE limit \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_36df2e0e","line":35,"in_reply_to":"3a961159_5c45d715","updated":"2014-12-31 11:03:55.000000000","message":"Done","commit_id":"b100d395f316ede39dcacb526bcfeec180c10d1d"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"b6dfbdd9492d3d9d5471f578a99cdc8b2eb73d11","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                         \"verb is allowed. Fetched %s\""},{"line_number":40,"context_line":"                         % len(absolute_limit))"},{"line_number":41,"context_line":"        actual_abs_limits \u003d absolute_limit[0].keys()"},{"line_number":42,"context_line":"        missing_abs_limit \u003d set(actual_abs_limits) ^ set(expected_abs_limits)"},{"line_number":43,"context_line":"        self.assertEmpty(missing_abs_limit,"},{"line_number":44,"context_line":"                         \"Failed to find the following absolute limit(s)\""},{"line_number":45,"context_line":"                         \" in a fetched list: %s\" %"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_fc03e3bb","line":42,"updated":"2014-12-30 06:46:33.000000000","message":"The test will fail if you get a new unexpected NEW limit key.\nUsually the tempest tests allows new key addition.\n\nWhy not ?\nset(expected_abs_limit) - set(actual_abs_limit)","commit_id":"b100d395f316ede39dcacb526bcfeec180c10d1d"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"f6f1fd97b197d8ce170cb357a07e3e5f325169be","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                         \"verb is allowed. Fetched %s\""},{"line_number":40,"context_line":"                         % len(absolute_limit))"},{"line_number":41,"context_line":"        actual_abs_limits \u003d absolute_limit[0].keys()"},{"line_number":42,"context_line":"        missing_abs_limit \u003d set(actual_abs_limits) ^ set(expected_abs_limits)"},{"line_number":43,"context_line":"        self.assertEmpty(missing_abs_limit,"},{"line_number":44,"context_line":"                         \"Failed to find the following absolute limit(s)\""},{"line_number":45,"context_line":"                         \" in a fetched list: %s\" %"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_56e67ae9","line":42,"in_reply_to":"3a961159_fc03e3bb","updated":"2014-12-31 11:03:55.000000000","message":"Done","commit_id":"b100d395f316ede39dcacb526bcfeec180c10d1d"}],"tempest/clients.py":[{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"1e33664b768846083ed1de65151ab1e57923ca0d","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        self.database_flavors_client \u003d DatabaseFlavorsClientJSON("},{"line_number":155,"context_line":"            self.auth_provider)"},{"line_number":156,"context_line":"        self.database_limits_client \u003d DatabaseLimitsClientJSON("},{"line_number":157,"context_line":"            self.auth_provider)"},{"line_number":158,"context_line":"        self.database_versions_client \u003d DatabaseVersionsClientJSON("},{"line_number":159,"context_line":"            self.auth_provider)"},{"line_number":160,"context_line":"        self.messaging_client \u003d MessagingClientJSON(self.auth_provider)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_ccd492bd","line":157,"updated":"2015-01-02 14:19:37.000000000","message":"Now is the time to decide if the trove tests will have different clients for each little sub-api, like nova does, or have a single client as most of the other services do. IMO, the trove api is small enough that having a single client would be less complex. But if there are going to be many, there should be a separate method for setting them like with compute, identity, volume, etc.","commit_id":"7e8f83caaa946dd8abcb5e70fbae1f58376b08f8"}],"tempest/services/database/json/limits_client.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"d4c05033fadc522a2454a63a413c1f4162dc0090","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":35,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":36,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":37,"context_line":"        return resp, self._parse_resp(body)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_6ee7fd40","line":37,"updated":"2014-12-18 15:09:58.000000000","message":"I thought of this blueprint : https://blueprints.launchpad.net/tempest/+spec/clients-return-one-value but imo, this could be merged as is and the BP implemented in another patch.","commit_id":"b100d395f316ede39dcacb526bcfeec180c10d1d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a9e3622540b4c2792f69b3408ac2bfdd889031fe","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import urllib"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.common import rest_client"},{"line_number":19,"context_line":"from tempest import config"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_0f57ac28","line":18,"updated":"2015-01-20 04:49:09.000000000","message":"Now rest_client module is switched to tempest-lib\u0027s one with I8e99eb11bffe3014d5bf3fd52d447e8c4249732f .\nso here should be\n\n from tempest_lib.common import rest_client","commit_id":"94f5962cd9e181c9e575560a381d8191ca6a87ad"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"96ba441a8b239f9f929da10e1493dc678f3406c2","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import urllib"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.common import rest_client"},{"line_number":19,"context_line":"from tempest import config"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_0afb137c","line":18,"in_reply_to":"3a961159_0f57ac28","updated":"2015-01-20 10:20:54.000000000","message":"Done","commit_id":"94f5962cd9e181c9e575560a381d8191ca6a87ad"}]}
