)]}'
{"tempest/api/identity/admin/v3/test_services.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c4fb2e0ec287c5107c7b2ceec2b8896635892044","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from six import moves"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.identity import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_e2830d02","line":16,"updated":"2014-05-05 13:11:37.000000000","message":"Is moves a separate module? In other words will this pass H302 (which isn\u0027t enabled yet but we plan to eventually)","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"e75e5c41e920bea00e478e57b56bea2f95018b56","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from six import moves"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.identity import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_13dd0d71","line":16,"in_reply_to":"9ad9bd40_e2830d02","updated":"2014-05-08 05:27:06.000000000","message":"\u003e\u003e\u003e six.moves\n\u003cmodule \u0027six.moves\u0027 (built-in)\u003e","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"8ebe02ede0977cde5ccd96dda75541c26cdeb8d3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from six import moves"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from tempest.api.identity import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_cf2fee86","line":16,"in_reply_to":"9ad9bd40_e2830d02","updated":"2014-05-08 07:03:32.000000000","message":"Hi Matthew,\n\nActually we have taken this import statement from /tempest/api/identity/admin/test_services.py\n\nImplementations are related to missing v2 tests in v3\n\nHence used the same.\n\n\nRegards,\nHarika","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c4fb2e0ec287c5107c7b2ceec2b8896635892044","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        desc \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":41,"context_line":"        resp, service_data \u003d self.service_client.create_service("},{"line_number":42,"context_line":"            serv_type, name\u003dname, description\u003ddesc)"},{"line_number":43,"context_line":"        self.assertFalse(service_data[\u0027id\u0027] is None)"},{"line_number":44,"context_line":"        self.addCleanup(self._del_service, service_data[\u0027id\u0027])"},{"line_number":45,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_825ec110","line":43,"updated":"2014-05-05 13:11:37.000000000","message":"This check seems bizarre to me. Why not just use:\n\nhttps://docs.python.org/2/library/unittest.html#unittest.TestCase.assertIsNotNone\n\nBut will it really ever be none? Does json.loads() ever return none? I think you need to re-evaluate what it is you\u0027re intending to check here.","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"8ebe02ede0977cde5ccd96dda75541c26cdeb8d3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        desc \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":41,"context_line":"        resp, service_data \u003d self.service_client.create_service("},{"line_number":42,"context_line":"            serv_type, name\u003dname, description\u003ddesc)"},{"line_number":43,"context_line":"        self.assertFalse(service_data[\u0027id\u0027] is None)"},{"line_number":44,"context_line":"        self.addCleanup(self._del_service, service_data[\u0027id\u0027])"},{"line_number":45,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_16725b7c","line":43,"in_reply_to":"9ad9bd40_825ec110","updated":"2014-05-08 07:03:32.000000000","message":"Done\n\nChanged the assert statement","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"e75e5c41e920bea00e478e57b56bea2f95018b56","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        desc \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":41,"context_line":"        resp, service_data \u003d self.service_client.create_service("},{"line_number":42,"context_line":"            serv_type, name\u003dname, description\u003ddesc)"},{"line_number":43,"context_line":"        self.assertFalse(service_data[\u0027id\u0027] is None)"},{"line_number":44,"context_line":"        self.addCleanup(self._del_service, service_data[\u0027id\u0027])"},{"line_number":45,"context_line":"        self.assertEqual(\u0027201\u0027, resp[\u0027status\u0027])"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_13c42d91","line":43,"in_reply_to":"9ad9bd40_825ec110","updated":"2014-05-08 05:27:06.000000000","message":"null can be in a json.","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"ef023404f2a2ce6831550388ba980f6f014694ac","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":85,"context_line":"            serv_type, name\u003dname)"},{"line_number":86,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":87,"context_line":"        self.assertTrue(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":88,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":89,"context_line":"        self.assertIn(\u0027name\u0027, service)"},{"line_number":90,"context_line":"        self.assertEqual(name, service[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_87c0932b","line":87,"updated":"2014-05-05 12:44:56.000000000","message":"Why do you use self.assertTrue(\u0027200\u0027, resp[\u0027status\u0027]) instead of self.assertassertEqual(200, resp.status)?","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"8ebe02ede0977cde5ccd96dda75541c26cdeb8d3","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":85,"context_line":"            serv_type, name\u003dname)"},{"line_number":86,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":87,"context_line":"        self.assertTrue(\u0027200\u0027, resp[\u0027status\u0027])"},{"line_number":88,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":89,"context_line":"        self.assertIn(\u0027name\u0027, service)"},{"line_number":90,"context_line":"        self.assertEqual(name, service[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_7600ffaa","line":87,"in_reply_to":"9ad9bd40_87c0932b","updated":"2014-05-08 07:03:32.000000000","message":"Hi Yaroslav,\n\nThe tests cases in already existing script was using the convention resp[\u0027status\u0027] and not resp.status.\nThus we also used the same convention so as not to deviate from other tests in script. Nevertheless, changed to resp.status through out the script","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c4fb2e0ec287c5107c7b2ceec2b8896635892044","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":102,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":103,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"},{"line_number":104,"context_line":"            self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":105,"context_line":"            services.append(service)"},{"line_number":106,"context_line":"        service_ids \u003d map(lambda x: x[\u0027id\u0027], services)"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_4247591d","line":104,"updated":"2014-05-05 13:11:37.000000000","message":"Why don\u0027t you use the helper you made above?","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"8ebe02ede0977cde5ccd96dda75541c26cdeb8d3","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":102,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":103,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"},{"line_number":104,"context_line":"            self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":105,"context_line":"            services.append(service)"},{"line_number":106,"context_line":"        service_ids \u003d map(lambda x: x[\u0027id\u0027], services)"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_f6ec0fca","line":104,"in_reply_to":"9ad9bd40_4247591d","updated":"2014-05-08 07:03:32.000000000","message":"Hi Matthew,\n\nThe reason for not using helper function is, it has assertion of delete code. But, in general we do assertions for the aim of the test case. Like, in this case we are testing list services. Hence we do not assert delete service.","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c4fb2e0ec287c5107c7b2ceec2b8896635892044","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        resp, body \u003d self.service_client.list_services()"},{"line_number":110,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":111,"context_line":"        found \u003d [service for service in body if service[\u0027id\u0027] in service_ids]"},{"line_number":112,"context_line":"        self.assertEqual(len(found), len(services), \u0027Services not found\u0027)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class ServicesTestXML(ServicesTestJSON):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_62c9bd77","line":112,"updated":"2014-05-05 13:11:37.000000000","message":"Honestly why not just loop over the list service_ids and check if that id is found in the list return. (Make sure you put a clear descrption for the comparison)\n\nThat feels like it would be a bit more clear. While this will work fine it\u0027s not exactly intuitive as to what your checking.","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"8ebe02ede0977cde5ccd96dda75541c26cdeb8d3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        resp, body \u003d self.service_client.list_services()"},{"line_number":110,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":111,"context_line":"        found \u003d [service for service in body if service[\u0027id\u0027] in service_ids]"},{"line_number":112,"context_line":"        self.assertEqual(len(found), len(services), \u0027Services not found\u0027)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"class ServicesTestXML(ServicesTestJSON):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_76c1df2d","line":112,"in_reply_to":"9ad9bd40_62c9bd77","updated":"2014-05-08 07:03:32.000000000","message":"Done\n\n\nActually it is code from v2 test_services.py. We understood to be accepted at this location too.","commit_id":"eaa319c6f30e8970839c88068a62456dfe1d2244"},{"author":{"_account_id":8085,"name":"anju Tiwari","email":"anjutiwari5@gmail.com","username":"Anju"},"change_message_id":"a9b754636db4877222823f627e7e70253ea59697","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                          service_id)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":36,"context_line":"    def test_create_update_get_delete_service(self):"},{"line_number":37,"context_line":"        # Creating a Service"},{"line_number":38,"context_line":"        name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":39,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_c95854fd","line":36,"updated":"2014-05-08 07:15:56.000000000","message":"If here we are saying that test delete service.\nThen why the created  service is not deleted and verified.","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":8085,"name":"anju Tiwari","email":"anjutiwari5@gmail.com","username":"Anju"},"change_message_id":"76736d10020869cc177c004e53e718e343b6f535","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                          service_id)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":36,"context_line":"    def test_create_update_get_delete_service(self):"},{"line_number":37,"context_line":"        # Creating a Service"},{"line_number":38,"context_line":"        name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":39,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_391e5171","line":36,"in_reply_to":"7adec928_187444ce","updated":"2014-05-09 02:59:01.000000000","message":"I agree, but cleanup is used in every test case where any service is created.\nMy point is to delete the service and also verify that service have been deleted or not.\n\nyou can take a look of my patch, although it is in progress.\n\nhttps://review.openstack.org/#/c/91747/","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"0d4a4ff3341b3f9b0187451c68e35a03fcbf5c38","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                          service_id)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":36,"context_line":"    def test_create_update_get_delete_service(self):"},{"line_number":37,"context_line":"        # Creating a Service"},{"line_number":38,"context_line":"        name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":39,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_9adaf076","line":36,"in_reply_to":"7adec928_391e5171","updated":"2014-05-09 11:16:58.000000000","message":"I have seen your patch, code changes related test_services.py, you are deleting the service in line # 72 and also calling self.addCleanup in line # 48, this will do delete_service twice.\n\nAnd result in NotFound expection while _del_service function is being called by self.addCleanup. And you are catching that exception in try, expect block.\n\nPlease understand the addCleanup function and do the code changes.\n\nThis is implementation of addCleanup is being done after good discussion among contributors in community.\n\nRegards,\nHarika","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"188965e401c40a30a480306b9a9e5cab25ff685e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                          service_id)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @attr(type\u003d\u0027gate\u0027)"},{"line_number":36,"context_line":"    def test_create_update_get_delete_service(self):"},{"line_number":37,"context_line":"        # Creating a Service"},{"line_number":38,"context_line":"        name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":39,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_187444ce","line":36,"in_reply_to":"7adec928_c95854fd","updated":"2014-05-08 11:19:53.000000000","message":"We are verifying deleted service in _del_service helper function, and calling the same in self.addCleaup. You can see the same in line #45","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":10966,"name":"Abhijeet Jain","email":"abhijeetjpjain@gmail.com","username":"Abhijeet.Jain"},"change_message_id":"8f88cf6116f3c3177f29074fbd32db788eecdd67","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # Verifying response body of create service"},{"line_number":48,"context_line":"        self.assertIn(\u0027id\u0027, service_data)"},{"line_number":49,"context_line":"        self.assertIn(\u0027name\u0027, service_data)"},{"line_number":50,"context_line":"        self.assertEqual(name, service_data[\u0027name\u0027])"},{"line_number":51,"context_line":"        self.assertIn(\u0027type\u0027, service_data)"},{"line_number":52,"context_line":"        self.assertEqual(serv_type, service_data[\u0027type\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_262085ab","line":49,"updated":"2014-05-16 14:04:20.000000000","message":"Reuse the code and remove redundancy.\nsomething like :\nexpected \u003d {\u0027name\u0027 : name, \u0027type\u0027: serv_type, \u0027description\u0027: desc}\nfor key in expected.keys():\n    self.assertIn( key, service_data )\n    self.assertEqual( expected[key] , service_data[key] )","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"7c13144cc114be7821204ac593b4c60f7d73c11d","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        # Verifying response body of create service"},{"line_number":48,"context_line":"        self.assertIn(\u0027id\u0027, service_data)"},{"line_number":49,"context_line":"        self.assertIn(\u0027name\u0027, service_data)"},{"line_number":50,"context_line":"        self.assertEqual(name, service_data[\u0027name\u0027])"},{"line_number":51,"context_line":"        self.assertIn(\u0027type\u0027, service_data)"},{"line_number":52,"context_line":"        self.assertEqual(serv_type, service_data[\u0027type\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_4f49e42f","line":49,"in_reply_to":"7adec928_262085ab","updated":"2014-05-19 12:38:54.000000000","message":"Done","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":10966,"name":"Abhijeet Jain","email":"abhijeetjpjain@gmail.com","username":"Abhijeet.Jain"},"change_message_id":"8f88cf6116f3c3177f29074fbd32db788eecdd67","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.assertNotEqual(resp1_desc, resp2_desc)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        # Get service"},{"line_number":67,"context_line":"        resp, fetched_service \u003d self.service_client.get_service(s_id)"},{"line_number":68,"context_line":"        resp3_desc \u003d fetched_service[\u0027description\u0027]"},{"line_number":69,"context_line":"        self.assertNotEqual(resp1_desc, resp3_desc)"},{"line_number":70,"context_line":"        self.assertEqual(resp2_desc, resp3_desc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_192e8e92","line":67,"updated":"2014-05-16 14:04:20.000000000","message":"unused variable \u0027resp\u0027","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"7c13144cc114be7821204ac593b4c60f7d73c11d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.assertNotEqual(resp1_desc, resp2_desc)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        # Get service"},{"line_number":67,"context_line":"        resp, fetched_service \u003d self.service_client.get_service(s_id)"},{"line_number":68,"context_line":"        resp3_desc \u003d fetched_service[\u0027description\u0027]"},{"line_number":69,"context_line":"        self.assertNotEqual(resp1_desc, resp3_desc)"},{"line_number":70,"context_line":"        self.assertEqual(resp2_desc, resp3_desc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_6f54e0c9","line":67,"in_reply_to":"7adec928_192e8e92","updated":"2014-05-19 12:38:54.000000000","message":"Done","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":10966,"name":"Abhijeet Jain","email":"abhijeetjpjain@gmail.com","username":"Abhijeet.Jain"},"change_message_id":"8f88cf6116f3c3177f29074fbd32db788eecdd67","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertNotEqual(resp1_desc, resp3_desc)"},{"line_number":70,"context_line":"        self.assertEqual(resp2_desc, resp3_desc)"},{"line_number":71,"context_line":"        self.assertIn(\u0027id\u0027, fetched_service)"},{"line_number":72,"context_line":"        self.assertEqual(fetched_service[\u0027id\u0027], service_data[\u0027id\u0027])"},{"line_number":73,"context_line":"        self.assertIn(\u0027name\u0027, fetched_service)"},{"line_number":74,"context_line":"        self.assertEqual(fetched_service[\u0027name\u0027], service_data[\u0027name\u0027])"},{"line_number":75,"context_line":"        self.assertIn(\u0027type\u0027, fetched_service)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_99129e55","line":72,"updated":"2014-05-16 14:04:20.000000000","message":"Same as Above :\nReuse the code and remove redundancy.\nsomething like :\n\nfor key in [\u0027id\u0027, \u0027name\u0027, \u0027type\u0027, \u0027description\u0027]:\n    self.assertIn( key, fetched_service )\n    self.assertEqual( fetched_service[key] , service_data[key] )","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"7c13144cc114be7821204ac593b4c60f7d73c11d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.assertNotEqual(resp1_desc, resp3_desc)"},{"line_number":70,"context_line":"        self.assertEqual(resp2_desc, resp3_desc)"},{"line_number":71,"context_line":"        self.assertIn(\u0027id\u0027, fetched_service)"},{"line_number":72,"context_line":"        self.assertEqual(fetched_service[\u0027id\u0027], service_data[\u0027id\u0027])"},{"line_number":73,"context_line":"        self.assertIn(\u0027name\u0027, fetched_service)"},{"line_number":74,"context_line":"        self.assertEqual(fetched_service[\u0027name\u0027], service_data[\u0027name\u0027])"},{"line_number":75,"context_line":"        self.assertIn(\u0027type\u0027, fetched_service)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_8f4f6c33","line":72,"in_reply_to":"7adec928_99129e55","updated":"2014-05-19 12:38:54.000000000","message":"Done","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":10966,"name":"Abhijeet Jain","email":"abhijeetjpjain@gmail.com","username":"Abhijeet.Jain"},"change_message_id":"8f88cf6116f3c3177f29074fbd32db788eecdd67","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":87,"context_line":"        self.assertTrue(200, resp.status)"},{"line_number":88,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":89,"context_line":"        self.assertIn(\u0027name\u0027, service)"},{"line_number":90,"context_line":"        self.assertEqual(name, service[\u0027name\u0027])"},{"line_number":91,"context_line":"        self.assertIn(\u0027type\u0027, service)"},{"line_number":92,"context_line":"        self.assertEqual(serv_type, service[\u0027type\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_9939bed9","line":89,"updated":"2014-05-16 14:04:20.000000000","message":"same as above for \u0027name\u0027 and \u0027type\u0027","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":10966,"name":"Abhijeet Jain","email":"abhijeetjpjain@gmail.com","username":"Abhijeet.Jain"},"change_message_id":"8f88cf6116f3c3177f29074fbd32db788eecdd67","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":101,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":102,"context_line":"            description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":103,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":104,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"},{"line_number":105,"context_line":"            self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":106,"context_line":"            services.append(service)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_4611115c","line":103,"updated":"2014-05-16 14:04:20.000000000","message":"unused variable \u0027resp\u0027","commit_id":"f750ccdcb0ee6793dc3856b34e66c5caee1bb2b6"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"e30f1176d66e001ca318a4d6de5b054baaddd112","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":83,"context_line":"            serv_type, name\u003dname)"},{"line_number":84,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":85,"context_line":"        self.assertTrue(200, resp.status)"},{"line_number":86,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":87,"context_line":"        self.assertIn(\u0027name\u0027, service)"},{"line_number":88,"context_line":"        self.assertEqual(name, service[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_091f9c0a","line":85,"updated":"2014-05-21 11:09:48.000000000","message":"I think self.assertTrue(200, resp.status) should be in front of self.assertIn(\u0027id\u0027, service).","commit_id":"08445bf58b54d4dd9973f7c98ba350d55b66a9f9"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"f1059ecec2d16c944ed77b0045de54205fadcdf3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":83,"context_line":"            serv_type, name\u003dname)"},{"line_number":84,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":85,"context_line":"        self.assertTrue(200, resp.status)"},{"line_number":86,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":87,"context_line":"        self.assertIn(\u0027name\u0027, service)"},{"line_number":88,"context_line":"        self.assertEqual(name, service[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_450faae1","line":85,"in_reply_to":"7adec928_091f9c0a","updated":"2014-05-22 06:42:07.000000000","message":"Will make the change in next patch Set","commit_id":"08445bf58b54d4dd9973f7c98ba350d55b66a9f9"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"e30f1176d66e001ca318a4d6de5b054baaddd112","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        fetched_ids \u003d list()"},{"line_number":97,"context_line":"        for _ in moves.xrange(3):"},{"line_number":98,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":99,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":100,"context_line":"            description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":101,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":102,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_2978d82a","line":99,"updated":"2014-05-21 11:09:48.000000000","message":"Why do you create serv_type and description three times in the cycle? You can create them in front of the cycle once.","commit_id":"08445bf58b54d4dd9973f7c98ba350d55b66a9f9"},{"author":{"_account_id":1795,"name":"Ravikumar Venkatesan","email":"ravikumar.venkatesan@hpe.com","username":"ravikumar-venkatesan"},"change_message_id":"6fb98b1de5116524f196acdc017dfccc99d36479","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        fetched_ids \u003d list()"},{"line_number":97,"context_line":"        for _ in moves.xrange(3):"},{"line_number":98,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":99,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":100,"context_line":"            description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":101,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":102,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_97e65a43","line":99,"in_reply_to":"7adec928_2978d82a","updated":"2014-05-21 17:25:46.000000000","message":"I think the code is clean to put it in loop all the variables - name ,description, and serv_type","commit_id":"08445bf58b54d4dd9973f7c98ba350d55b66a9f9"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"03800048a694ebee601baebf72d44ac76c6bb513","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        fetched_ids \u003d list()"},{"line_number":97,"context_line":"        for _ in moves.xrange(3):"},{"line_number":98,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":99,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":100,"context_line":"            description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":101,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":102,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_d047f749","line":99,"in_reply_to":"7adec928_8571b279","updated":"2014-05-22 09:53:13.000000000","message":"OK. Then I think you can remove description variable. Is it possible? There is no check for this parameter here. So I think there is no need to create it.","commit_id":"08445bf58b54d4dd9973f7c98ba350d55b66a9f9"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"f1059ecec2d16c944ed77b0045de54205fadcdf3","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        fetched_ids \u003d list()"},{"line_number":97,"context_line":"        for _ in moves.xrange(3):"},{"line_number":98,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":99,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":100,"context_line":"            description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":101,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":102,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7adec928_8571b279","line":99,"in_reply_to":"7adec928_97e65a43","updated":"2014-05-22 06:42:07.000000000","message":"Yes, I agree with Ravi. To explain in detail, variables will be initialized for each iteration to create three unique services.","commit_id":"08445bf58b54d4dd9973f7c98ba350d55b66a9f9"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"1372398cbcde70a5be295ec6389fa0af0c5f6c81","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest.api.identity import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest import exceptions"},{"line_number":21,"context_line":"from tempest.test import attr"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class ServicesTestJSON(base.BaseIdentityV3AdminTest):"},{"line_number":24,"context_line":"    _interface \u003d \u0027json\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_0d65c844","line":21,"updated":"2014-05-22 09:53:07.000000000","message":"Please, import \"test\" module instead of \"attr\" function.","commit_id":"bcf3f6888e5bef709b1be3f0fb6aca6f8b1c7dd2"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"772fbcc3e84b0837de5454d54decf517ccdb1478","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest.api.identity import base"},{"line_number":19,"context_line":"from tempest.common.utils import data_utils"},{"line_number":20,"context_line":"from tempest import exceptions"},{"line_number":21,"context_line":"from tempest.test import attr"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class ServicesTestJSON(base.BaseIdentityV3AdminTest):"},{"line_number":24,"context_line":"    _interface \u003d \u0027json\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_c64addab","line":21,"in_reply_to":"7adec928_0d65c844","updated":"2014-05-22 11:24:24.000000000","message":"Done","commit_id":"bcf3f6888e5bef709b1be3f0fb6aca6f8b1c7dd2"},{"author":{"_account_id":10966,"name":"Abhijeet Jain","email":"abhijeetjpjain@gmail.com","username":"Abhijeet.Jain"},"change_message_id":"298da2bfd49bdc3abc99dae0d29396562b342924","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        resp3_desc \u003d fetched_service[\u0027description\u0027]"},{"line_number":66,"context_line":"        self.assertNotEqual(resp1_desc, resp3_desc)"},{"line_number":67,"context_line":"        self.assertEqual(resp2_desc, resp3_desc)"},{"line_number":68,"context_line":"        self.assertIn(\u0027id\u0027, fetched_service)"},{"line_number":69,"context_line":"        self.assertEqual(fetched_service[\u0027id\u0027], service_data[\u0027id\u0027])"},{"line_number":70,"context_line":"        expected_data \u003d {\u0027name\u0027: fetched_service[\u0027name\u0027],"},{"line_number":71,"context_line":"                         \u0027type\u0027: fetched_service[\u0027type\u0027]}"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_d7f8d14b","line":68,"updated":"2014-05-22 08:10:51.000000000","message":"Why didn\u0027t you include the  \"id\" in the loop below.\nand by using expected_data, you are just increasing an unnecessary variable.\nYou can directly use like this :\n\nfor key in [\u0027id\u0027, \u0027name\u0027, \u0027type\u0027]:\n    self.assertIn(key, service_data)\n    self.assertEqual(fetched_service[key], service_data[key])\n\n\nBetter method is to create a help method.\n\ndef _check(self, expected, actual, keys):\n    for key in keys:\n        self.assertIn(key, actual)\n        self.assertEqual(expected[key], actual[key])\n\nand here call the function like :\n\nself._check(fetched_service, service_data, [\u0027id\u0027, \u0027name\u0027, \u0027type\u0027])","commit_id":"bcf3f6888e5bef709b1be3f0fb6aca6f8b1c7dd2"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"772fbcc3e84b0837de5454d54decf517ccdb1478","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        resp3_desc \u003d fetched_service[\u0027description\u0027]"},{"line_number":66,"context_line":"        self.assertNotEqual(resp1_desc, resp3_desc)"},{"line_number":67,"context_line":"        self.assertEqual(resp2_desc, resp3_desc)"},{"line_number":68,"context_line":"        self.assertIn(\u0027id\u0027, fetched_service)"},{"line_number":69,"context_line":"        self.assertEqual(fetched_service[\u0027id\u0027], service_data[\u0027id\u0027])"},{"line_number":70,"context_line":"        expected_data \u003d {\u0027name\u0027: fetched_service[\u0027name\u0027],"},{"line_number":71,"context_line":"                         \u0027type\u0027: fetched_service[\u0027type\u0027]}"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_e6c6f915","line":68,"in_reply_to":"7adec928_d7f8d14b","updated":"2014-05-22 11:24:24.000000000","message":"Done","commit_id":"bcf3f6888e5bef709b1be3f0fb6aca6f8b1c7dd2"},{"author":{"_account_id":10966,"name":"Abhijeet Jain","email":"abhijeetjpjain@gmail.com","username":"Abhijeet.Jain"},"change_message_id":"298da2bfd49bdc3abc99dae0d29396562b342924","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.assertTrue(200, resp.status)"},{"line_number":84,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":85,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":86,"context_line":"        self.assertIn(\u0027name\u0027, service)"},{"line_number":87,"context_line":"        self.assertEqual(name, service[\u0027name\u0027])"},{"line_number":88,"context_line":"        self.assertIn(\u0027type\u0027, service)"},{"line_number":89,"context_line":"        self.assertEqual(serv_type, service[\u0027type\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_f7306d09","line":86,"updated":"2014-05-22 08:10:51.000000000","message":"here call that help function :\n\nexpected \u003d {\u0027name\u0027 : name, \u0027type\u0027: serv_type}\nself._check(expected, service, expected.keys())","commit_id":"bcf3f6888e5bef709b1be3f0fb6aca6f8b1c7dd2"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"772fbcc3e84b0837de5454d54decf517ccdb1478","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.assertTrue(200, resp.status)"},{"line_number":84,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":85,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":86,"context_line":"        self.assertIn(\u0027name\u0027, service)"},{"line_number":87,"context_line":"        self.assertEqual(name, service[\u0027name\u0027])"},{"line_number":88,"context_line":"        self.assertIn(\u0027type\u0027, service)"},{"line_number":89,"context_line":"        self.assertEqual(serv_type, service[\u0027type\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7adec928_06ccc534","line":86,"in_reply_to":"7adec928_f7306d09","updated":"2014-05-22 11:24:24.000000000","message":"Done","commit_id":"bcf3f6888e5bef709b1be3f0fb6aca6f8b1c7dd2"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"e1228bcceec01af4c4b6aa0eb24e4f6119aee319","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        for _ in moves.xrange(3):"},{"line_number":88,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":89,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":90,"context_line":"            description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":91,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":92,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"},{"line_number":93,"context_line":"            self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"7adec928_e11183b0","line":90,"updated":"2014-05-22 11:50:36.000000000","message":"Please, see my the last comment in patch set #3.","commit_id":"19c18164302e2e27a976020dc94bf9a9666f2c4f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"248046762dc50d18b490a44c8027c01aac6c2dfd","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":44,"context_line":"        self.assertIsNotNone(service_data[\u0027id\u0027])"},{"line_number":45,"context_line":"        self.assertIn(\u0027id\u0027, service_data)"},{"line_number":46,"context_line":"        self.addCleanup(self._del_service, service_data[\u0027id\u0027])"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Verifying response body of create service"},{"line_number":49,"context_line":"        expected_data \u003d {\u0027name\u0027: name, \u0027type\u0027: serv_type, \u0027description\u0027: desc}"}],"source_content_type":"text/x-python","patch_set":6,"id":"5adbc538_05f5c482","line":46,"updated":"2014-05-26 10:53:39.000000000","message":"it is better to move addCleanup before resp.status check.","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"1b824461206704659991e83d42cbe48f5aebab98","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":44,"context_line":"        self.assertIsNotNone(service_data[\u0027id\u0027])"},{"line_number":45,"context_line":"        self.assertIn(\u0027id\u0027, service_data)"},{"line_number":46,"context_line":"        self.addCleanup(self._del_service, service_data[\u0027id\u0027])"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Verifying response body of create service"},{"line_number":49,"context_line":"        expected_data \u003d {\u0027name\u0027: name, \u0027type\u0027: serv_type, \u0027description\u0027: desc}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_79e7f212","line":46,"in_reply_to":"5adbc538_05f5c482","updated":"2014-05-28 10:10:21.000000000","message":"Done","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"248046762dc50d18b490a44c8027c01aac6c2dfd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        resp, body \u003d self.service_client.update_service("},{"line_number":57,"context_line":"            s_id, description\u003ds_desc2)"},{"line_number":58,"context_line":"        resp2_desc \u003d body[\u0027description\u0027]"},{"line_number":59,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":60,"context_line":"        self.assertNotEqual(resp1_desc, resp2_desc)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Get service"}],"source_content_type":"text/x-python","patch_set":6,"id":"5adbc538_c53afc35","line":59,"updated":"2014-05-26 10:53:39.000000000","message":"move resp status check before getting any response body attribute.","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"1b824461206704659991e83d42cbe48f5aebab98","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        resp, body \u003d self.service_client.update_service("},{"line_number":57,"context_line":"            s_id, description\u003ds_desc2)"},{"line_number":58,"context_line":"        resp2_desc \u003d body[\u0027description\u0027]"},{"line_number":59,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":60,"context_line":"        self.assertNotEqual(resp1_desc, resp2_desc)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Get service"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_99e4be0e","line":59,"in_reply_to":"5adbc538_c53afc35","updated":"2014-05-28 10:10:21.000000000","message":"Done","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"a46c5605e000232ea4cd29a82a7c7bf6a3825e7f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":74,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":75,"context_line":"            serv_type, name\u003dname)"},{"line_number":76,"context_line":"        self.assertTrue(200, resp.status)"},{"line_number":77,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":78,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":79,"context_line":"        expected \u003d {\u0027name\u0027: name, \u0027type\u0027: serv_type}"}],"source_content_type":"text/x-python","patch_set":6,"id":"5adbc538_c1602638","line":76,"updated":"2014-05-26 16:57:37.000000000","message":"I think it will be better to use self.assertEqual(...) here.","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"1b824461206704659991e83d42cbe48f5aebab98","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":74,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":75,"context_line":"            serv_type, name\u003dname)"},{"line_number":76,"context_line":"        self.assertTrue(200, resp.status)"},{"line_number":77,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":78,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":79,"context_line":"        expected \u003d {\u0027name\u0027: name, \u0027type\u0027: serv_type}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_d9ee46ec","line":76,"in_reply_to":"5adbc538_c1602638","updated":"2014-05-28 10:10:21.000000000","message":"Done","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"248046762dc50d18b490a44c8027c01aac6c2dfd","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            serv_type, name\u003dname)"},{"line_number":76,"context_line":"        self.assertTrue(200, resp.status)"},{"line_number":77,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":78,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":79,"context_line":"        expected \u003d {\u0027name\u0027: name, \u0027type\u0027: serv_type}"},{"line_number":80,"context_line":"        self._check(expected, service, expected.keys())"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5adbc538_25c4803f","line":78,"updated":"2014-05-26 10:53:39.000000000","message":"ditto","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"1b824461206704659991e83d42cbe48f5aebab98","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            serv_type, name\u003dname)"},{"line_number":76,"context_line":"        self.assertTrue(200, resp.status)"},{"line_number":77,"context_line":"        self.assertIn(\u0027id\u0027, service)"},{"line_number":78,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":79,"context_line":"        expected \u003d {\u0027name\u0027: name, \u0027type\u0027: serv_type}"},{"line_number":80,"context_line":"        self._check(expected, service, expected.keys())"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_19c0ae4f","line":78,"in_reply_to":"5adbc538_25c4803f","updated":"2014-05-28 10:10:21.000000000","message":"Done","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"0480810a1ddec95ed80676aba31f493941c715a9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # Create, List, Verify and Delete Services"},{"line_number":85,"context_line":"        services \u003d list()"},{"line_number":86,"context_line":"        fetched_ids \u003d list()"},{"line_number":87,"context_line":"        description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":88,"context_line":"        for _ in moves.xrange(3):"},{"line_number":89,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":90,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7adec928_bf7153aa","line":87,"updated":"2014-05-22 13:35:34.000000000","message":"Sorry for inconvenience. Is it possible to remove description variable at all? I mean, can you write \n\n    resp, service \u003d self.service_client.create_service(\n          serv_type, name\u003dname)\n\n?\n\nI think this variable may have some default value.","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"39d069695e88e5bf36247e8cbfb9ea1c717ade3a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # Create, List, Verify and Delete Services"},{"line_number":85,"context_line":"        services \u003d list()"},{"line_number":86,"context_line":"        fetched_ids \u003d list()"},{"line_number":87,"context_line":"        description \u003d data_utils.rand_name(\u0027description-\u0027)"},{"line_number":88,"context_line":"        for _ in moves.xrange(3):"},{"line_number":89,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":90,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_d97486ff","line":87,"in_reply_to":"7adec928_bf7153aa","updated":"2014-05-28 10:19:22.000000000","message":"Done.","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"248046762dc50d18b490a44c8027c01aac6c2dfd","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            0, len(missing_services), \"Failed to find service %s in fetched \""},{"line_number":105,"context_line":"            \"list\" % \u0027, \u0027.join(m_service for m_service in missing_services))"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _check(self, expected, actual, keys):"},{"line_number":108,"context_line":"        for key in keys:"},{"line_number":109,"context_line":"            self.assertIn(key, actual)"},{"line_number":110,"context_line":"            self.assertEqual(expected[key], actual[key])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5adbc538_85cc7437","line":107,"updated":"2014-05-26 10:53:39.000000000","message":"it better to have this kind of helper function in base class. As in https://review.openstack.org/#/c/92524/8/tempest/test.py.\nplease use that function by putting dependency etc.","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"1b824461206704659991e83d42cbe48f5aebab98","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            0, len(missing_services), \"Failed to find service %s in fetched \""},{"line_number":105,"context_line":"            \"list\" % \u0027, \u0027.join(m_service for m_service in missing_services))"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def _check(self, expected, actual, keys):"},{"line_number":108,"context_line":"        for key in keys:"},{"line_number":109,"context_line":"            self.assertIn(key, actual)"},{"line_number":110,"context_line":"            self.assertEqual(expected[key], actual[key])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ae8d1ca_79ce1285","line":107,"in_reply_to":"5adbc538_85cc7437","updated":"2014-05-28 10:10:21.000000000","message":"Done","commit_id":"8f6215f60126d9ee197faeedce63c21703cdedc8"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"aad431e1e407eb831066396a584d75a2ec83a75c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            serv_type, name\u003dname, description\u003ddesc)"},{"line_number":43,"context_line":"        self.addCleanup(self._del_service, service_data[\u0027id\u0027])"},{"line_number":44,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":45,"context_line":"        self.assertIsNotNone(service_data[\u0027id\u0027])"},{"line_number":46,"context_line":"        self.assertIn(\u0027id\u0027, service_data)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Verifying response body of create service"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_df81e24b","line":45,"updated":"2014-05-27 18:08:35.000000000","message":"At first you should check ID is in service data.\n\n    self.assertIn(\u0027id\u0027, service_data)\n    self.assertIsNotNone(service_data[\u0027id\u0027])","commit_id":"f973676f7acc16dfe86bcd620ba4749f13db08f9"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"fd82424241800828a0a0b0416d8247becc5b2273","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            serv_type, name\u003dname, description\u003ddesc)"},{"line_number":43,"context_line":"        self.addCleanup(self._del_service, service_data[\u0027id\u0027])"},{"line_number":44,"context_line":"        self.assertEqual(201, resp.status)"},{"line_number":45,"context_line":"        self.assertIsNotNone(service_data[\u0027id\u0027])"},{"line_number":46,"context_line":"        self.assertIn(\u0027id\u0027, service_data)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Verifying response body of create service"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_d90006ad","line":45,"in_reply_to":"3ae8d1ca_df81e24b","updated":"2014-05-28 10:07:29.000000000","message":"Done","commit_id":"f973676f7acc16dfe86bcd620ba4749f13db08f9"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"aad431e1e407eb831066396a584d75a2ec83a75c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":92,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"},{"line_number":93,"context_line":"            self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":94,"context_line":"            services.append(service)"},{"line_number":95,"context_line":"        service_ids \u003d map(lambda x: x[\u0027id\u0027], services)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # List and Verify Services"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_c4d119cf","line":94,"updated":"2014-05-27 18:08:35.000000000","message":"I think you can write\n  \n    service_ids \u003d []\n    ...\n    for ...\n        ...\n        service_ids.append(service[\u0027id\u0027])\n\nand remove L95.","commit_id":"f973676f7acc16dfe86bcd620ba4749f13db08f9"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"fd82424241800828a0a0b0416d8247becc5b2273","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":92,"context_line":"                serv_type, name\u003dname, description\u003ddescription)"},{"line_number":93,"context_line":"            self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"},{"line_number":94,"context_line":"            services.append(service)"},{"line_number":95,"context_line":"        service_ids \u003d map(lambda x: x[\u0027id\u0027], services)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # List and Verify Services"}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_19326ea7","line":94,"in_reply_to":"3ae8d1ca_c4d119cf","updated":"2014-05-28 10:07:29.000000000","message":"Done","commit_id":"f973676f7acc16dfe86bcd620ba4749f13db08f9"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"aad431e1e407eb831066396a584d75a2ec83a75c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        # List and Verify Services"},{"line_number":98,"context_line":"        resp, body \u003d self.service_client.list_services()"},{"line_number":99,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":100,"context_line":"        for s in body:"},{"line_number":101,"context_line":"            fetched_ids.append(s[\u0027id\u0027])"},{"line_number":102,"context_line":"        missing_services \u003d [s for s in service_ids if s not in fetched_ids]"},{"line_number":103,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_e47295e4","line":100,"updated":"2014-05-27 18:08:35.000000000","message":"I think you can write \n\n    resp, services\u003d self.service_client.list_services()\n    ...\n    fetched_ids \u003d [service[\u0027id\u0027] for service in services]\n\nand remove L86.","commit_id":"f973676f7acc16dfe86bcd620ba4749f13db08f9"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"fd82424241800828a0a0b0416d8247becc5b2273","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        # List and Verify Services"},{"line_number":98,"context_line":"        resp, body \u003d self.service_client.list_services()"},{"line_number":99,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":100,"context_line":"        for s in body:"},{"line_number":101,"context_line":"            fetched_ids.append(s[\u0027id\u0027])"},{"line_number":102,"context_line":"        missing_services \u003d [s for s in service_ids if s not in fetched_ids]"},{"line_number":103,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":7,"id":"3ae8d1ca_39272a66","line":100,"in_reply_to":"3ae8d1ca_e47295e4","updated":"2014-05-28 10:07:29.000000000","message":"Done","commit_id":"f973676f7acc16dfe86bcd620ba4749f13db08f9"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"caca16fb3f44c858dddab629ab0557c2abbb8e3b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":70,"context_line":"    def test_create_service_without_description(self):"},{"line_number":71,"context_line":"        # Create a service only with name and type"},{"line_number":72,"context_line":"        name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":73,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":74,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":75,"context_line":"            serv_type, name\u003dname)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ae8d1ca_4815feef","line":72,"updated":"2014-05-28 12:57:44.000000000","message":"Useless trailing \u0027-\u0027. rand_name() already adds a \u0027-\u0027.","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"450a26b6e252ea7218e93d4f78abff2f8fb4075d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":70,"context_line":"    def test_create_service_without_description(self):"},{"line_number":71,"context_line":"        # Create a service only with name and type"},{"line_number":72,"context_line":"        name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":73,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":74,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":75,"context_line":"            serv_type, name\u003dname)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_a03159a4","line":72,"in_reply_to":"3ae8d1ca_4815feef","updated":"2014-05-30 16:02:38.000000000","message":"Done","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"caca16fb3f44c858dddab629ab0557c2abbb8e3b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def test_create_service_without_description(self):"},{"line_number":71,"context_line":"        # Create a service only with name and type"},{"line_number":72,"context_line":"        name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":73,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":74,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":75,"context_line":"            serv_type, name\u003dname)"},{"line_number":76,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ae8d1ca_88f626d6","line":73,"updated":"2014-05-28 12:57:44.000000000","message":"Useless trailing \u0027-\u0027. rand_name() already adds a \u0027-\u0027.","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"450a26b6e252ea7218e93d4f78abff2f8fb4075d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def test_create_service_without_description(self):"},{"line_number":71,"context_line":"        # Create a service only with name and type"},{"line_number":72,"context_line":"        name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":73,"context_line":"        serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":74,"context_line":"        resp, service \u003d self.service_client.create_service("},{"line_number":75,"context_line":"            serv_type, name\u003dname)"},{"line_number":76,"context_line":"        self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_c0266568","line":73,"in_reply_to":"3ae8d1ca_88f626d6","updated":"2014-05-30 16:02:38.000000000","message":"Done","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"caca16fb3f44c858dddab629ab0557c2abbb8e3b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # Create, List, Verify and Delete Services"},{"line_number":85,"context_line":"        service_ids \u003d list()"},{"line_number":86,"context_line":"        for _ in moves.xrange(3):"},{"line_number":87,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":88,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":89,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":90,"context_line":"                serv_type, name\u003dname)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ae8d1ca_c8002ead","line":87,"updated":"2014-05-28 12:57:44.000000000","message":"Useless trailing \u0027-\u0027. rand_name() already adds a \u0027-\u0027.","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"450a26b6e252ea7218e93d4f78abff2f8fb4075d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # Create, List, Verify and Delete Services"},{"line_number":85,"context_line":"        service_ids \u003d list()"},{"line_number":86,"context_line":"        for _ in moves.xrange(3):"},{"line_number":87,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":88,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":89,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":90,"context_line":"                serv_type, name\u003dname)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_40f175cc","line":87,"in_reply_to":"3ae8d1ca_c8002ead","updated":"2014-05-30 16:02:38.000000000","message":"Done","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"caca16fb3f44c858dddab629ab0557c2abbb8e3b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        service_ids \u003d list()"},{"line_number":86,"context_line":"        for _ in moves.xrange(3):"},{"line_number":87,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":88,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":89,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":90,"context_line":"                serv_type, name\u003dname)"},{"line_number":91,"context_line":"            self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ae8d1ca_e82c0a4d","line":88,"updated":"2014-05-28 12:57:44.000000000","message":"Useless trailing \u0027-\u0027. rand_name() already adds a \u0027-\u0027.","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"450a26b6e252ea7218e93d4f78abff2f8fb4075d","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        service_ids \u003d list()"},{"line_number":86,"context_line":"        for _ in moves.xrange(3):"},{"line_number":87,"context_line":"            name \u003d data_utils.rand_name(\u0027service-\u0027)"},{"line_number":88,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type--\u0027)"},{"line_number":89,"context_line":"            resp, service \u003d self.service_client.create_service("},{"line_number":90,"context_line":"                serv_type, name\u003dname)"},{"line_number":91,"context_line":"            self.addCleanup(self.service_client.delete_service, service[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_60c5915a","line":88,"in_reply_to":"3ae8d1ca_e82c0a4d","updated":"2014-05-30 16:02:38.000000000","message":"Done","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"caca16fb3f44c858dddab629ab0557c2abbb8e3b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        fetched_ids \u003d [service[\u0027id\u0027] for service in services]"},{"line_number":98,"context_line":"        missing_services \u003d [s for s in service_ids if s not in fetched_ids]"},{"line_number":99,"context_line":"        self.assertEqual("},{"line_number":100,"context_line":"            0, len(missing_services), \"Failed to find service %s in fetched \""},{"line_number":101,"context_line":"            \"list\" % \u0027, \u0027.join(m_service for m_service in missing_services))"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3ae8d1ca_288432d3","line":100,"updated":"2014-05-28 12:57:44.000000000","message":"I fear that if several services were left due to a cleanup failure OR if tempest is run against a non-devstack environment  more services could exist.\n\nCould you, instead, check that all the services you explicitely create are in the list of returned service ?","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"450a26b6e252ea7218e93d4f78abff2f8fb4075d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        fetched_ids \u003d [service[\u0027id\u0027] for service in services]"},{"line_number":98,"context_line":"        missing_services \u003d [s for s in service_ids if s not in fetched_ids]"},{"line_number":99,"context_line":"        self.assertEqual("},{"line_number":100,"context_line":"            0, len(missing_services), \"Failed to find service %s in fetched \""},{"line_number":101,"context_line":"            \"list\" % \u0027, \u0027.join(m_service for m_service in missing_services))"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_9b04cc16","line":100,"in_reply_to":"3ae8d1ca_288432d3","updated":"2014-05-30 16:02:38.000000000","message":"Hi Pittier,\n\nYes Pitter you are right. There are chances of other services being left in the environment, other than the ones created in this test case.\n\nBut the logic written above will check \"only if the services created in this test case are present in the fetched_ids\". It does not verify about other services though they would be present.\n\nThus the logic written above is as per your comment \"check that all the services you explicitely create are in the list of returned service\"\n\nNevertheless the logic has been changed to following lines in next patch.\n\nfetched_ids \u003d [service[\u0027id\u0027] for service in services]\nfound \u003d [s for s in fetched_ids if s in service_ids]\nself.assertEqual(len(found), len(service_ids))\n\nRegards,\nRajalakshmi Ganesan","commit_id":"16ba52f838657ecb6f3f96bf1f4bf125d63dec05"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"1dd2c7c05edb3c103af791e83961a697be69c15c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.assertRaises(exceptions.NotFound, self.service_client.get_service,"},{"line_number":33,"context_line":"                          service_id)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":36,"context_line":"    def test_create_update_get_service(self):"},{"line_number":37,"context_line":"        # Creating a Service"},{"line_number":38,"context_line":"        name \u003d data_utils.rand_name(\u0027service\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_3a0a6d26","line":35,"updated":"2014-06-11 19:05:27.000000000","message":"Can you please not use the \"gate\" tag from all tests? It\u0027s vestigial and not used any more.\nI\u0027m working on updating HACKING.rst about this.\nhttps://review.openstack.org/#/c/99302/","commit_id":"4fcfbef0b62d3be9f8e5e06cc7f7ad7a4fdc2d9f"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"8807edb259eae7501dc7ec5f8f4531fcead376a0","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        self.assertRaises(exceptions.NotFound, self.service_client.get_service,"},{"line_number":33,"context_line":"                          service_id)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @test.attr(type\u003d\u0027gate\u0027)"},{"line_number":36,"context_line":"    def test_create_update_get_service(self):"},{"line_number":37,"context_line":"        # Creating a Service"},{"line_number":38,"context_line":"        name \u003d data_utils.rand_name(\u0027service\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_36b68ddd","line":35,"in_reply_to":"1ae5cdf2_3a0a6d26","updated":"2014-08-18 11:52:20.000000000","message":"Done","commit_id":"4fcfbef0b62d3be9f8e5e06cc7f7ad7a4fdc2d9f"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"6c837ad4036dcf808a80e5129c8ccc36a23eea97","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    def test_list_services(self):"},{"line_number":84,"context_line":"        # Create, List, Verify and Delete Services"},{"line_number":85,"context_line":"        service_ids \u003d list()"},{"line_number":86,"context_line":"        for _ in moves.xrange(3):"},{"line_number":87,"context_line":"            name \u003d data_utils.rand_name(\u0027service\u0027)"},{"line_number":88,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type\u0027)"},{"line_number":89,"context_line":"            resp, service \u003d self.service_client.create_service("}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_43dd916f","line":86,"updated":"2014-06-18 16:06:15.000000000","message":"Why not use range here? I think there is no need to use xrange. You just do three iteration here.","commit_id":"4fcfbef0b62d3be9f8e5e06cc7f7ad7a4fdc2d9f"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"8807edb259eae7501dc7ec5f8f4531fcead376a0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    def test_list_services(self):"},{"line_number":84,"context_line":"        # Create, List, Verify and Delete Services"},{"line_number":85,"context_line":"        service_ids \u003d list()"},{"line_number":86,"context_line":"        for _ in moves.xrange(3):"},{"line_number":87,"context_line":"            name \u003d data_utils.rand_name(\u0027service\u0027)"},{"line_number":88,"context_line":"            serv_type \u003d data_utils.rand_name(\u0027type\u0027)"},{"line_number":89,"context_line":"            resp, service \u003d self.service_client.create_service("}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_76b005de","line":86,"in_reply_to":"1ae5cdf2_43dd916f","updated":"2014-08-18 11:52:20.000000000","message":"Done","commit_id":"4fcfbef0b62d3be9f8e5e06cc7f7ad7a4fdc2d9f"}],"tempest/api/identity/base.py":[{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"1dd2c7c05edb3c103af791e83961a697be69c15c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if len(role) \u003e 0:"},{"line_number":66,"context_line":"            return role[0]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _check(self, expected, actual, keys):"},{"line_number":69,"context_line":"        for key in keys:"},{"line_number":70,"context_line":"            self.assertIn(key, actual)"},{"line_number":71,"context_line":"            self.assertEqual(expected[key], actual[key])"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_7a29559a","line":68,"updated":"2014-06-11 19:05:27.000000000","message":"_check is not used in this class, so it would be better to use a name not starting with \"_\" and a bit more descriptive about what it\u0027s being checked.\n\nAlso the parameter names are a bit confusing for me because expected is not in fact what is expected, only a subset of it indicated by keys.\n\nCould rename \"keys\" to something else (\"filter\"?) and add a docstring explaining this function?","commit_id":"4fcfbef0b62d3be9f8e5e06cc7f7ad7a4fdc2d9f"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"8807edb259eae7501dc7ec5f8f4531fcead376a0","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        if len(role) \u003e 0:"},{"line_number":66,"context_line":"            return role[0]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _check(self, expected, actual, keys):"},{"line_number":69,"context_line":"        for key in keys:"},{"line_number":70,"context_line":"            self.assertIn(key, actual)"},{"line_number":71,"context_line":"            self.assertEqual(expected[key], actual[key])"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_ce6db406","line":68,"in_reply_to":"1ae5cdf2_7a29559a","updated":"2014-08-18 11:52:20.000000000","message":"Hi Frittoli,\n\nYes the name has been changed to \"assertDictActualResponse\" in next patch.\n\nThis method is written to check if the expected keys and corresponding values in expected data are present in the actual response.\n\nThus the method is modified to following:\n\ndef assertDictActualResponse(self, expected_data, actual_resp):\n\"\"\"\"\nAssert if all keys and corresponding values of expected data\nare present in actual response\n\"\"\"\nfor key in expected_data.keys():\n\tself.assertIn(key, actual_resp)\n\tself.assertEqual(expected_data[key], actual_resp[key])\n\nPlease suggest if any changes are required.","commit_id":"4fcfbef0b62d3be9f8e5e06cc7f7ad7a4fdc2d9f"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"1dd2c7c05edb3c103af791e83961a697be69c15c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            return role[0]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _check(self, expected, actual, keys):"},{"line_number":69,"context_line":"        for key in keys:"},{"line_number":70,"context_line":"            self.assertIn(key, actual)"},{"line_number":71,"context_line":"            self.assertEqual(expected[key], actual[key])"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_151f2d6d","line":69,"updated":"2014-06-11 19:05:27.000000000","message":"This does not work well if not all keys are in expected.\n\nWhat about something like this:\n\nfiltered_expected \u003d dict((k, v) for (k, v) in expected.iteritems() if k in keys)\nfiltered_actual \u003d dict((k, v) for (k, v) in actual.iteritems() if k in keys)\nassertEqual(filter_expected, filtered_actual)","commit_id":"4fcfbef0b62d3be9f8e5e06cc7f7ad7a4fdc2d9f"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"8807edb259eae7501dc7ec5f8f4531fcead376a0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            return role[0]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _check(self, expected, actual, keys):"},{"line_number":69,"context_line":"        for key in keys:"},{"line_number":70,"context_line":"            self.assertIn(key, actual)"},{"line_number":71,"context_line":"            self.assertEqual(expected[key], actual[key])"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_4e2fe4a1","line":69,"in_reply_to":"1ae5cdf2_151f2d6d","updated":"2014-08-18 11:52:20.000000000","message":"The argument keys is removed and instead \"expected_data.keys()\" is being used for looping as all keys in expected data are for sure supposed to be there in actual response.","commit_id":"4fcfbef0b62d3be9f8e5e06cc7f7ad7a4fdc2d9f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6b31ee70f936eb093f044e763ba9ebb0418a655c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        Assert if all keys and corresponding values of expected data"},{"line_number":71,"context_line":"        are present in actual response"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        for key in expected_data.keys():"},{"line_number":74,"context_line":"            self.assertIn(key, actual_resp)"},{"line_number":75,"context_line":"            self.assertEqual(expected_data[key], actual_resp[key])"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_f33891d6","line":73,"updated":"2014-08-25 17:21:48.000000000","message":"since this doesn\u0027t actually deal with ordering you can probably use assertDictEqual instead... unless you\u0027re testing for a subset where assertDictContainsSubset could probably be used","commit_id":"ca70e201fc0ecdd977aa831192db68691e1083d8"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"7b1aecbc41e46c6bb3736d6890d26165df99ead1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        Assert if all keys and corresponding values of expected data"},{"line_number":71,"context_line":"        are present in actual response"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        for key in expected_data.keys():"},{"line_number":74,"context_line":"            self.assertIn(key, actual_resp)"},{"line_number":75,"context_line":"            self.assertEqual(expected_data[key], actual_resp[key])"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_b09fc65e","line":73,"in_reply_to":"1abeadc6_f33891d6","updated":"2014-09-01 16:55:39.000000000","message":"Hi Chung,\n\nAfter adding  \"assertDictContainsSubset\"  the  function has turned to one line code.\n\nHence removed the function and added the same \"assertDictContainsSubset\"assert statement in the test script and submitted in the next patch.","commit_id":"ca70e201fc0ecdd977aa831192db68691e1083d8"}],"tempest/services/identity/v3/json/service_client.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c4fb2e0ec287c5107c7b2ceec2b8896635892044","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        return resp, body[\u0027service\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def create_service(self, serv_type, name\u003dNone, description\u003dNone,"},{"line_number":56,"context_line":"                       enabled\u003dTrue):"},{"line_number":57,"context_line":"        body_dict \u003d {"},{"line_number":58,"context_line":"            \"name\": name,"},{"line_number":59,"context_line":"            \u0027type\u0027: serv_type,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_c767fb23","side":"PARENT","line":56,"updated":"2014-05-05 13:11:37.000000000","message":"Why are you removing this? You need to mention why this change is necessary in the commit message. Otherwise it\u0027s an unrelated change.","commit_id":"0b5d804d44d89c85a7815f80e59ff80d4c10569b"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"8ebe02ede0977cde5ccd96dda75541c26cdeb8d3","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        return resp, body[\u0027service\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def create_service(self, serv_type, name\u003dNone, description\u003dNone,"},{"line_number":56,"context_line":"                       enabled\u003dTrue):"},{"line_number":57,"context_line":"        body_dict \u003d {"},{"line_number":58,"context_line":"            \"name\": name,"},{"line_number":59,"context_line":"            \u0027type\u0027: serv_type,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_f63a4f35","side":"PARENT","line":56,"in_reply_to":"7adec928_d3264568","updated":"2014-05-08 07:03:32.000000000","message":"Yes, Afazekas. The attribute is removed in v3/services.","commit_id":"0b5d804d44d89c85a7815f80e59ff80d4c10569b"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"e75e5c41e920bea00e478e57b56bea2f95018b56","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        return resp, body[\u0027service\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def create_service(self, serv_type, name\u003dNone, description\u003dNone,"},{"line_number":56,"context_line":"                       enabled\u003dTrue):"},{"line_number":57,"context_line":"        body_dict \u003d {"},{"line_number":58,"context_line":"            \"name\": name,"},{"line_number":59,"context_line":"            \u0027type\u0027: serv_type,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_d3264568","side":"PARENT","line":56,"in_reply_to":"9ad9bd40_c767fb23","updated":"2014-05-08 05:27:06.000000000","message":"I guess, It was removed because this attubte does not exists,\nIt should be mentioned in the commit message.","commit_id":"0b5d804d44d89c85a7815f80e59ff80d4c10569b"},{"author":{"_account_id":6455,"name":"Harika Vakadi","email":"harika_vakadi@persistent.co.in","username":"harika-vakadi"},"change_message_id":"8ebe02ede0977cde5ccd96dda75541c26cdeb8d3","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        return resp, body[\u0027service\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def create_service(self, serv_type, name\u003dNone, description\u003dNone,"},{"line_number":56,"context_line":"                       enabled\u003dTrue):"},{"line_number":57,"context_line":"        body_dict \u003d {"},{"line_number":58,"context_line":"            \"name\": name,"},{"line_number":59,"context_line":"            \u0027type\u0027: serv_type,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7adec928_d6355347","side":"PARENT","line":56,"in_reply_to":"9ad9bd40_c767fb23","updated":"2014-05-08 07:03:32.000000000","message":"Shall mention in the commit message.","commit_id":"0b5d804d44d89c85a7815f80e59ff80d4c10569b"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"c4fb2e0ec287c5107c7b2ceec2b8896635892044","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        body_dict \u003d {"},{"line_number":58,"context_line":"            \"name\": name,"},{"line_number":59,"context_line":"            \u0027type\u0027: serv_type,"},{"line_number":60,"context_line":"            \u0027enabled\u0027: enabled,"},{"line_number":61,"context_line":"            \"description\": description,"},{"line_number":62,"context_line":"        }"},{"line_number":63,"context_line":"        body \u003d json.dumps({\u0027service\u0027: body_dict})"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad9bd40_22a415a5","side":"PARENT","line":60,"updated":"2014-05-05 13:11:37.000000000","message":"same here","commit_id":"0b5d804d44d89c85a7815f80e59ff80d4c10569b"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6b31ee70f936eb093f044e763ba9ebb0418a655c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        return resp, body[\u0027service\u0027]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def create_service(self, serv_type, name\u003dNone, description\u003dNone,"},{"line_number":58,"context_line":"                       enabled\u003dTrue):"},{"line_number":59,"context_line":"        body_dict \u003d {"},{"line_number":60,"context_line":"            \"name\": name,"},{"line_number":61,"context_line":"            \u0027type\u0027: serv_type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_93d75d23","side":"PARENT","line":58,"updated":"2014-08-25 17:21:48.000000000","message":"curious why this was removed?","commit_id":"3226ca1450f53ab7d6c94f2886968bc62ed851b7"},{"author":{"_account_id":2222,"name":"meenakshi-m","username":"meenakshi-m"},"change_message_id":"7b1aecbc41e46c6bb3736d6890d26165df99ead1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        return resp, body[\u0027service\u0027]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def create_service(self, serv_type, name\u003dNone, description\u003dNone,"},{"line_number":58,"context_line":"                       enabled\u003dTrue):"},{"line_number":59,"context_line":"        body_dict \u003d {"},{"line_number":60,"context_line":"            \"name\": name,"},{"line_number":61,"context_line":"            \u0027type\u0027: serv_type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa98f980_b0fc2640","side":"PARENT","line":58,"in_reply_to":"1abeadc6_93d75d23","updated":"2014-09-01 16:55:39.000000000","message":"Hi Chung,\n\nAs per the link,\n\"https://github.com/openstack/identity-api/blob/master/v3/src/markdown/identity-api-v3.md\",\nunder POST /services section, it hasn’t mentioned  \"enabled\" parameter in the request_body  and  so the \"enabled\" parameter was removed  from the create_service function.\n\nNow,  it is able to create service with \"enabled\" parameter and hence added the option in \"create_service\" function and submitted in the next patch.\n\nThanks,\nMeenakshi","commit_id":"3226ca1450f53ab7d6c94f2886968bc62ed851b7"}]}
