)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"ffad2dfc7075a4bb1f3ca92974bf33b361f91904","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patchset adds the JSON clients and tests for following"},{"line_number":10,"context_line":"Trove Datastore APIs:"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"1. list datastore types"},{"line_number":13,"context_line":"2. show datastore type"},{"line_number":14,"context_line":"3. list available versions for datastore type"},{"line_number":15,"context_line":"4. show versions"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1ae5cdf2_3d0f8789","line":12,"updated":"2014-06-05 02:58:35.000000000","message":"They\u0027re actually just called datastores, not datastore types","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"ffad2dfc7075a4bb1f3ca92974bf33b361f91904","unresolved":false,"context_lines":[{"line_number":12,"context_line":"1. list datastore types"},{"line_number":13,"context_line":"2. show datastore type"},{"line_number":14,"context_line":"3. list available versions for datastore type"},{"line_number":15,"context_line":"4. show versions"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I7043f080d115089eacf0d00e165e8a383619d1b0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1ae5cdf2_1d5acb82","line":15,"updated":"2014-06-05 02:58:35.000000000","message":"This should probably be \u0027show datastore version\u0027 so as not to be confused with the version API","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"}],"etc/tempest.conf.sample":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"c8f8f0731101643b5517c2e8f8249df4672f9f8d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"# Catalog type of the baremetal provisioning service. (string"},{"line_number":105,"context_line":"# value)"},{"line_number":106,"context_line":"#catalog_type\u003dbaremetal"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"# The endpoint type to use for the baremetal provisioning"},{"line_number":109,"context_line":"# service. (string value)"},{"line_number":110,"context_line":"#endpoint_type\u003dpublicURL"}],"source_content_type":"application/octet-stream","patch_set":13,"id":"AAAAXH%2F%2FRLE%3D","line":107,"updated":"2014-04-22 21:31:56.000000000","message":"A number of the changes in this file look like some sort of cleanup, unrelated to Trove.  Please break this out into its own patch or modify the commit message","commit_id":"8c4a77f547bec825fce2e6f5c83f94c2a1a568da"}],"tempest/api/database/datastores/test_datastores.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e34bfc15bc24106a07c24b55cddddf9e1e050735","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":32,"context_line":"    def test_list_datastores(self):"},{"line_number":33,"context_line":"        # List datastores types"},{"line_number":34,"context_line":"        resp, datastores \u003d self.client.list_datastores()"},{"line_number":35,"context_line":"        LOG.debug(\u0027Available datastore are: %s\u0027 % str(datastores))"},{"line_number":36,"context_line":"        if len(datastores) \u003d\u003d 0:"},{"line_number":37,"context_line":"            raise self.skipException(\u0027No datastore found\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9ad9bd40_b4c2f582","line":34,"updated":"2014-05-07 16:02:54.000000000","message":"You missed checking resp.status here (and in other places)","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"00b5558cafffd1cb5140b31b8e8d96fa68b06754","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":32,"context_line":"    def test_list_datastores(self):"},{"line_number":33,"context_line":"        # List datastores types"},{"line_number":34,"context_line":"        resp, datastores \u003d self.client.list_datastores()"},{"line_number":35,"context_line":"        LOG.debug(\u0027Available datastore are: %s\u0027 % str(datastores))"},{"line_number":36,"context_line":"        if len(datastores) \u003d\u003d 0:"},{"line_number":37,"context_line":"            raise self.skipException(\u0027No datastore found\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7adec928_5f1a2818","line":34,"in_reply_to":"9ad9bd40_b4c2f582","updated":"2014-05-08 18:52:49.000000000","message":"Done","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e34bfc15bc24106a07c24b55cddddf9e1e050735","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if len(datastores) \u003d\u003d 0:"},{"line_number":37,"context_line":"            raise self.skipException(\u0027No datastore found\u0027)"},{"line_number":38,"context_line":"        else:"},{"line_number":39,"context_line":"            self.assertEqual(self.db_datastore_ref, datastores[0][\u0027name\u0027])"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":42,"context_line":"    def test_get_datastore_details(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"7adec928_6d820102","line":39,"updated":"2014-05-07 16:02:54.000000000","message":"You\u0027ve changed this test to now be dependent on the order of the datastores returned.  I think your old method was more robust (if another datastore is added and is first in the list, this test will break even though nothing is wrong).  Maybe pull this out into its own method - something like this:\n\n    def get_ref_datastore(self):\n        resp, datastores \u003d self.client.list_datastores()\n        self.assertEqual(200, resp.status)\n        self.assertTrue(len(datastores) \u003e 0, \"No datastores found\")\n        for datastore in datastores:\n            if self.db_datastore_ref \u003d\u003d datastore[\u0027name\u0027]:\n                return datastore\n        self.fail(\"Could not find reference datastore \u0027%s\u0027\" %\n                  self.db_datastore_ref)","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"ada8ed0f46f43456f2467e7cae17967a30f5adee","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if len(datastores) \u003d\u003d 0:"},{"line_number":37,"context_line":"            raise self.skipException(\u0027No datastore found\u0027)"},{"line_number":38,"context_line":"        else:"},{"line_number":39,"context_line":"            self.assertEqual(self.db_datastore_ref, datastores[0][\u0027name\u0027])"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":42,"context_line":"    def test_get_datastore_details(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"7adec928_b34aaa25","line":39,"in_reply_to":"7adec928_6d820102","updated":"2014-05-07 16:17:00.000000000","message":"Sorry, this would probably be better:\n\n    def _get_ref_datastore(self):\n        if not self.ref_datastore:\n            resp, datastores \u003d self.client.list_datastores()\n            self.assertEqual(200, resp.status)\n            self.assertTrue(len(datastores) \u003e 0, \"No datastores found\")\n            for datastore in datastores:\n                if self.db_datastore_ref \u003d\u003d datastore[\u0027name\u0027]:\n                    self.ref_datastore \u003d datastore\n            self.assertTrue(self.ref_datastore,\n                            \"Could not find reference datastore \u0027%s\u0027\" %\n                            self.db_datastore_ref)\n\nThen you could call:\n    _get_ref_datastore()\n    datastore \u003d self.ref_datastore\netc.","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"00b5558cafffd1cb5140b31b8e8d96fa68b06754","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if len(datastores) \u003d\u003d 0:"},{"line_number":37,"context_line":"            raise self.skipException(\u0027No datastore found\u0027)"},{"line_number":38,"context_line":"        else:"},{"line_number":39,"context_line":"            self.assertEqual(self.db_datastore_ref, datastores[0][\u0027name\u0027])"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":42,"context_line":"    def test_get_datastore_details(self):"}],"source_content_type":"text/x-python","patch_set":15,"id":"7adec928_1fe7c013","line":39,"in_reply_to":"7adec928_b34aaa25","updated":"2014-05-08 18:52:49.000000000","message":"Done","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e34bfc15bc24106a07c24b55cddddf9e1e050735","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":42,"context_line":"    def test_get_datastore_details(self):"},{"line_number":43,"context_line":"        # The expected datastores details should be returned"},{"line_number":44,"context_line":"        resp, datastores \u003d self.client.list_datastores()"},{"line_number":45,"context_line":"        if len(datastores) \u003d\u003d 0:"},{"line_number":46,"context_line":"            raise self.skipException(\u0027No datastore found\u0027)"},{"line_number":47,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"9ad9bd40_146001a4","line":44,"updated":"2014-05-07 16:02:54.000000000","message":"Could be replaced with:\n    datastore \u003d get_ref_datastore()\n    datastore_id \u003d datastore[\u0027id\u0027]\nif the above method is used (here and in other places)","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"00b5558cafffd1cb5140b31b8e8d96fa68b06754","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":42,"context_line":"    def test_get_datastore_details(self):"},{"line_number":43,"context_line":"        # The expected datastores details should be returned"},{"line_number":44,"context_line":"        resp, datastores \u003d self.client.list_datastores()"},{"line_number":45,"context_line":"        if len(datastores) \u003d\u003d 0:"},{"line_number":46,"context_line":"            raise self.skipException(\u0027No datastore found\u0027)"},{"line_number":47,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":15,"id":"7adec928_3fe47c0c","line":44,"in_reply_to":"9ad9bd40_146001a4","updated":"2014-05-08 18:52:49.000000000","message":"Done","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e34bfc15bc24106a07c24b55cddddf9e1e050735","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            datastore_id \u003d str(datastores[0][\u0027id\u0027])"},{"line_number":61,"context_line":"            resp, datastore \u003d self.client.list_datastore_version("},{"line_number":62,"context_line":"                datastore_id)"},{"line_number":63,"context_line":"            LOG.debug(\u0027Datastore version is: %s\u0027 % str(datastore))"},{"line_number":64,"context_line":"            self.assertEqual(200, resp.status)"},{"line_number":65,"context_line":"            self.assertEqual(datastore_id, datastore[0][\u0027datastore\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"7adec928_f81c116d","line":62,"updated":"2014-05-07 16:02:54.000000000","message":"You\u0027re putting a datastore_version into a datastore variable name - a bit confusing.  Plus, list_datastore_version returns a list of versions, so it should be called datastore_versions (and the method should be called list_datastore_versions)","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"00b5558cafffd1cb5140b31b8e8d96fa68b06754","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            datastore_id \u003d str(datastores[0][\u0027id\u0027])"},{"line_number":61,"context_line":"            resp, datastore \u003d self.client.list_datastore_version("},{"line_number":62,"context_line":"                datastore_id)"},{"line_number":63,"context_line":"            LOG.debug(\u0027Datastore version is: %s\u0027 % str(datastore))"},{"line_number":64,"context_line":"            self.assertEqual(200, resp.status)"},{"line_number":65,"context_line":"            self.assertEqual(datastore_id, datastore[0][\u0027datastore\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"7adec928_dfab9887","line":62,"in_reply_to":"7adec928_f81c116d","updated":"2014-05-08 18:52:49.000000000","message":"Method name changed. Variable name also changed.","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"debcdc3977ac9ee19c0b63c9bafefc11a0122c75","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def setUpClass(cls):"},{"line_number":28,"context_line":"        super(DatabaseDatastoresTest, cls).setUpClass()"},{"line_number":29,"context_line":"        cls.client \u003d cls.database_datastores_client"},{"line_number":30,"context_line":"        cls.ref_datastore \u003d \u0027\u0027"},{"line_number":31,"context_line":"        cls.isFound \u003d False"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _get_ref_datastore(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"7adec928_53793f2e","line":30,"updated":"2014-05-08 22:24:06.000000000","message":"Maybe initialize to None ?\n\n(and change to\n\n    cls.datastore_id \u003d None\n\nif you choose to implement what I mention below)","commit_id":"7a416289505e05ab131e9b3fcd4f85162a93915f"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"debcdc3977ac9ee19c0b63c9bafefc11a0122c75","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        super(DatabaseDatastoresTest, cls).setUpClass()"},{"line_number":29,"context_line":"        cls.client \u003d cls.database_datastores_client"},{"line_number":30,"context_line":"        cls.ref_datastore \u003d \u0027\u0027"},{"line_number":31,"context_line":"        cls.isFound \u003d False"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _get_ref_datastore(self):"},{"line_number":34,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"7adec928_f3b08bdf","line":31,"updated":"2014-05-08 22:24:06.000000000","message":"I think this is only used in one method, so it could probably be removed from here (and declared as only isFound)","commit_id":"7a416289505e05ab131e9b3fcd4f85162a93915f"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"debcdc3977ac9ee19c0b63c9bafefc11a0122c75","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        self._get_ref_datastore()"},{"line_number":64,"context_line":"        datastore \u003d self.ref_datastore"},{"line_number":65,"context_line":"        datastore_id \u003d datastore[\u0027id\u0027]"},{"line_number":66,"context_line":"        resp, body \u003d self.client.get_datastore_details(datastore_id)"},{"line_number":67,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":68,"context_line":"        LOG.debug(\u0027Datastore details are: %s\u0027 % str(body))"}],"source_content_type":"text/x-python","patch_set":16,"id":"7adec928_d37e2fe4","line":65,"updated":"2014-05-08 22:24:06.000000000","message":"I see these 3 lines of code in multiple places - how about putting the extra two into _get_ref_datastore and making the datastore_id a class variable?  That way you can reference it directly.  For example:\n\n    if not self.ref_datastore:\n        resp, datastores \u003d self.client.list_datastores()\n        self.assertEqual(200, resp.status)\n        LOG.debug(\u0027Available datastore are: %s\u0027 % str(datastores))\n        self.assertTrue(len(datastores) \u003e 0, \"No datastores found\")\n        for datastore in datastores:\n            if self.db_datastore_ref \u003d\u003d datastore[\u0027name\u0027]:\n                self.datastore_id \u003d datastore[\u0027id\u0027]\n                ^^^ changed line\n                break\n        self.assertTrue(self.ref_datastore_id,\n\t\t\t\"Could not found referenced datastore \u0027%s\u0027 \" %\n\t\t\tself.db_datastore_ref)\n\nThen you could just reference the datastore id directly (for example, from the line below:)\n\n    resp, body \u003d self.client.get_datastore_details(self.datastore_id)\n\nJust a thought ...","commit_id":"7a416289505e05ab131e9b3fcd4f85162a93915f"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"debcdc3977ac9ee19c0b63c9bafefc11a0122c75","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        datastore_id \u003d datastore[\u0027id\u0027]"},{"line_number":79,"context_line":"        resp, body \u003d self.client.list_datastore_versions(datastore_id)"},{"line_number":80,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":81,"context_line":"        LOG.debug(\u0027Datastore versions are: %s\u0027 % str(body))"},{"line_number":82,"context_line":"        for ds_dict in body:"},{"line_number":83,"context_line":"            if datastore_id \u003d\u003d ds_dict[\u0027datastore\u0027]:"},{"line_number":84,"context_line":"                self.isFound \u003d True"}],"source_content_type":"text/x-python","patch_set":16,"id":"7adec928_f35a4b82","line":81,"updated":"2014-05-08 22:24:06.000000000","message":"You could use \u0027isFound \u003d False\u0027 here - no need to make it a class variable since it\u0027s only used in this method","commit_id":"7a416289505e05ab131e9b3fcd4f85162a93915f"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"debcdc3977ac9ee19c0b63c9bafefc11a0122c75","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        LOG.debug(\u0027Datastore versions are: %s\u0027 % str(body))"},{"line_number":82,"context_line":"        for ds_dict in body:"},{"line_number":83,"context_line":"            if datastore_id \u003d\u003d ds_dict[\u0027datastore\u0027]:"},{"line_number":84,"context_line":"                self.isFound \u003d True"},{"line_number":85,"context_line":"        self.assertTrue(self.isFound, True)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7adec928_b360c336","line":84,"updated":"2014-05-08 22:24:06.000000000","message":"This could be just isFound \u003d True","commit_id":"7a416289505e05ab131e9b3fcd4f85162a93915f"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"debcdc3977ac9ee19c0b63c9bafefc11a0122c75","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        for ds_dict in body:"},{"line_number":83,"context_line":"            if datastore_id \u003d\u003d ds_dict[\u0027datastore\u0027]:"},{"line_number":84,"context_line":"                self.isFound \u003d True"},{"line_number":85,"context_line":"        self.assertTrue(self.isFound, True)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":88,"context_line":"    def test_get_datastore_version_details(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"7adec928_536a1f1b","line":85,"updated":"2014-05-08 22:24:06.000000000","message":"I think assertTrue just needs the one argument, the second one is an optional message string.","commit_id":"7a416289505e05ab131e9b3fcd4f85162a93915f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e8ffff6a9db0e91ab5e8bfbf62243333dfe0aaf7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                if self.db_datastore_ref \u003d\u003d datastore[\u0027name\u0027]:"},{"line_number":43,"context_line":"                    self.datastore_id \u003d datastore[\u0027id\u0027]"},{"line_number":44,"context_line":"                    break"},{"line_number":45,"context_line":"            self.assertTrue(self.datastore_id,"},{"line_number":46,"context_line":"                            \"Could not found referenced datastore \u0027%s\u0027 \" %"},{"line_number":47,"context_line":"                            self.db_datastore_ref)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7adec928_2dfe046c","line":45,"updated":"2014-05-22 09:50:07.000000000","message":"does name and id are same in DB? from trove code it looks like both are different.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"46f94bcd5f73f60d5a507e9320608b59e4343c77","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                if self.db_datastore_ref \u003d\u003d datastore[\u0027name\u0027]:"},{"line_number":43,"context_line":"                    self.datastore_id \u003d datastore[\u0027id\u0027]"},{"line_number":44,"context_line":"                    break"},{"line_number":45,"context_line":"            self.assertTrue(self.datastore_id,"},{"line_number":46,"context_line":"                            \"Could not found referenced datastore \u0027%s\u0027 \" %"},{"line_number":47,"context_line":"                            self.db_datastore_ref)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1ae5cdf2_617c85b6","line":45,"in_reply_to":"3ae8d1ca_7183bacc","updated":"2014-06-10 04:05:50.000000000","message":"Thanks for clarification.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"be5975be0fbf50a71183a8967d400758690ad4b1","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                if self.db_datastore_ref \u003d\u003d datastore[\u0027name\u0027]:"},{"line_number":43,"context_line":"                    self.datastore_id \u003d datastore[\u0027id\u0027]"},{"line_number":44,"context_line":"                    break"},{"line_number":45,"context_line":"            self.assertTrue(self.datastore_id,"},{"line_number":46,"context_line":"                            \"Could not found referenced datastore \u0027%s\u0027 \" %"},{"line_number":47,"context_line":"                            self.db_datastore_ref)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3ae8d1ca_7183bacc","line":45,"in_reply_to":"7adec928_2dfe046c","updated":"2014-05-27 07:00:15.000000000","message":"name and id are different. Here id is used for checking condition and name is used for displaying proper message to user.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e8ffff6a9db0e91ab5e8bfbf62243333dfe0aaf7","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self._get_ref_datastore()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":58,"context_line":"    def test_get_datastore_details(self):"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        Function to return datastore details for a given datastore."},{"line_number":61,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"7adec928_cd2be092","line":58,"updated":"2014-05-22 09:50:07.000000000","message":"This test can be merged with previous one. So that self.datastore_id can be populated once.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"46f94bcd5f73f60d5a507e9320608b59e4343c77","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self._get_ref_datastore()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":58,"context_line":"    def test_get_datastore_details(self):"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        Function to return datastore details for a given datastore."},{"line_number":61,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1ae5cdf2_21635dde","line":58,"in_reply_to":"1ae5cdf2_1de72be5","updated":"2014-06-10 04:05:50.000000000","message":"Yes, I missed that. Thanks.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"46f94bcd5f73f60d5a507e9320608b59e4343c77","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self._get_ref_datastore()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":58,"context_line":"    def test_get_datastore_details(self):"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        Function to return datastore details for a given datastore."},{"line_number":61,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1ae5cdf2_016821b9","line":58,"in_reply_to":"3ae8d1ca_51179ea3","updated":"2014-06-10 04:05:50.000000000","message":"Agree. \nBut we can always merge the multiple same type of APIs tests to reuse resources and make execution fast.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"be5975be0fbf50a71183a8967d400758690ad4b1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self._get_ref_datastore()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":58,"context_line":"    def test_get_datastore_details(self):"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        Function to return datastore details for a given datastore."},{"line_number":61,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"3ae8d1ca_51179ea3","line":58,"in_reply_to":"7adec928_cd2be092","updated":"2014-05-27 07:00:15.000000000","message":"I wrote tests for 4 different APIs. Each test is calling a different resource. So the merger can be done but imho it will violate the standard practice of writing tests. You can see reference from glance project.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"9f00464e34e689d373872be1e747eb9633691075","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        self._get_ref_datastore()"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":58,"context_line":"    def test_get_datastore_details(self):"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        Function to return datastore details for a given datastore."},{"line_number":61,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1ae5cdf2_1de72be5","line":58,"in_reply_to":"7adec928_cd2be092","updated":"2014-06-05 02:54:09.000000000","message":"self.datastore_id *is* only populated once, no matter how many times _get_ref_datastore() is called.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9ecdee0c6bbf45902afae8baa4f46c44851b1a3c","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":69,"context_line":"    def test_get_datastore_versions(self):"},{"line_number":70,"context_line":"        \"\"\""},{"line_number":71,"context_line":"        Function to return datastore versions for a given datastore."},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        self._get_ref_datastore()"}],"source_content_type":"text/x-python","patch_set":17,"id":"1ae5cdf2_fe52b010","line":70,"updated":"2014-06-26 07:13:44.000000000","message":"name of this test should be test_list_datastore_versions instead test_get_datastore_versions","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e8ffff6a9db0e91ab5e8bfbf62243333dfe0aaf7","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.assertTrue(isFound)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":84,"context_line":"    def test_get_datastore_version_details(self):"},{"line_number":85,"context_line":"        \"\"\""},{"line_number":86,"context_line":"        Function to return datastore version details for a given datastore."},{"line_number":87,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"7adec928_900f2f2e","line":84,"updated":"2014-05-22 09:50:07.000000000","message":"This also can be merged with previous one to avoid duplicate code and execution.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9ecdee0c6bbf45902afae8baa4f46c44851b1a3c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.assertTrue(isFound)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":84,"context_line":"    def test_get_datastore_version_details(self):"},{"line_number":85,"context_line":"        \"\"\""},{"line_number":86,"context_line":"        Function to return datastore version details for a given datastore."},{"line_number":87,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1ae5cdf2_a3fe5504","line":84,"in_reply_to":"1ae5cdf2_01b0218a","updated":"2014-06-26 07:13:44.000000000","message":"If merging is not preferred then, I would like to have the duplicate code in common place.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"46f94bcd5f73f60d5a507e9320608b59e4343c77","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.assertTrue(isFound)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":84,"context_line":"    def test_get_datastore_version_details(self):"},{"line_number":85,"context_line":"        \"\"\""},{"line_number":86,"context_line":"        Function to return datastore version details for a given datastore."},{"line_number":87,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1ae5cdf2_01b0218a","line":84,"in_reply_to":"3ae8d1ca_710c9a95","updated":"2014-06-10 04:05:50.000000000","message":"My only concern is almost same execution is done in this test ( which includes the extra API call.) + fetching version details.\nIMO, these test can be merged. But let\u0027s see other reviewers opinion.\n\ntest can be -\u003e test_list_get_datastore_versions","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"be5975be0fbf50a71183a8967d400758690ad4b1","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        self.assertTrue(isFound)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":84,"context_line":"    def test_get_datastore_version_details(self):"},{"line_number":85,"context_line":"        \"\"\""},{"line_number":86,"context_line":"        Function to return datastore version details for a given datastore."},{"line_number":87,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"3ae8d1ca_710c9a95","line":84,"in_reply_to":"7adec928_900f2f2e","updated":"2014-05-27 07:00:15.000000000","message":"Same as above.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b38b2b9e0267682dc6705a191e67f64b135c5804","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":52,"context_line":"    def test_get_datastore_details(self):"},{"line_number":53,"context_line":"        \"\"\"This function returns datastore details for a given datastore.\"\"\""},{"line_number":54,"context_line":"        self._get_ref_datastore()"},{"line_number":55,"context_line":"        resp, body \u003d self.client.get_datastore_details(self.datastore_id)"},{"line_number":56,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dab895d6_0a9319a4","line":53,"updated":"2014-06-30 07:15:41.000000000","message":"Doc string needs to be changed. This does not return anything. it can be something like-\nThis function verify detail of referenced datastore.","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"4618ea5bf5ca1adb51553f9001f3375c47c6037b","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":52,"context_line":"    def test_get_datastore_details(self):"},{"line_number":53,"context_line":"        \"\"\"This function returns datastore details for a given datastore.\"\"\""},{"line_number":54,"context_line":"        self._get_ref_datastore()"},{"line_number":55,"context_line":"        resp, body \u003d self.client.get_datastore_details(self.datastore_id)"},{"line_number":56,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_c7408fa7","line":53,"in_reply_to":"dab895d6_0a9319a4","updated":"2014-07-05 11:50:53.000000000","message":"Done","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"0590c77cb3cfa79e08ad1c507586dada1c506eeb","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.assertEqual(self.db_datastore_ref, body[\u0027name\u0027])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":61,"context_line":"    def test_get_datastore_versions(self):"},{"line_number":62,"context_line":"        \"\"\"This function returns datastore versions for a given datastore.\"\"\""},{"line_number":63,"context_line":"        self._get_ref_datastore()"},{"line_number":64,"context_line":"        resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1ae5cdf2_52ca824f","line":61,"updated":"2014-06-27 14:33:24.000000000","message":"This should definitely match the call it\u0027s testing:\n  def test_list_datastore_versions(self):","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"4618ea5bf5ca1adb51553f9001f3375c47c6037b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.assertEqual(self.db_datastore_ref, body[\u0027name\u0027])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":61,"context_line":"    def test_get_datastore_versions(self):"},{"line_number":62,"context_line":"        \"\"\"This function returns datastore versions for a given datastore.\"\"\""},{"line_number":63,"context_line":"        self._get_ref_datastore()"},{"line_number":64,"context_line":"        resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_8758578b","line":61,"in_reply_to":"1ae5cdf2_52ca824f","updated":"2014-07-05 11:50:53.000000000","message":"Done","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b38b2b9e0267682dc6705a191e67f64b135c5804","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":61,"context_line":"    def test_get_datastore_versions(self):"},{"line_number":62,"context_line":"        \"\"\"This function returns datastore versions for a given datastore.\"\"\""},{"line_number":63,"context_line":"        self._get_ref_datastore()"},{"line_number":64,"context_line":"        resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"},{"line_number":65,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dab895d6_caf841e8","line":62,"updated":"2014-06-30 07:15:41.000000000","message":"Ditto, Please correct the docstring","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"4618ea5bf5ca1adb51553f9001f3375c47c6037b","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":61,"context_line":"    def test_get_datastore_versions(self):"},{"line_number":62,"context_line":"        \"\"\"This function returns datastore versions for a given datastore.\"\"\""},{"line_number":63,"context_line":"        self._get_ref_datastore()"},{"line_number":64,"context_line":"        resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"},{"line_number":65,"context_line":"        self.assertEqual(200, resp.status)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_6767c34d","line":62,"in_reply_to":"dab895d6_caf841e8","updated":"2014-07-05 11:50:53.000000000","message":"Done","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"cc922b22d6ff9f2e04cca1cb28da746b3c8799bf","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"},{"line_number":65,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":66,"context_line":"        LOG.debug(\u0027Datastore versions are: %s\u0027 % str(body))"},{"line_number":67,"context_line":"        isFound \u003d False"},{"line_number":68,"context_line":"        for ds_dict in body:"},{"line_number":69,"context_line":"            if self.datastore_id \u003d\u003d ds_dict[\u0027datastore\u0027]:"},{"line_number":70,"context_line":"                isFound \u003d True"}],"source_content_type":"text/x-python","patch_set":19,"id":"dab895d6_7331edeb","line":67,"updated":"2014-06-30 11:26:41.000000000","message":"isFound -\u003e is_found","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"4618ea5bf5ca1adb51553f9001f3375c47c6037b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"},{"line_number":65,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":66,"context_line":"        LOG.debug(\u0027Datastore versions are: %s\u0027 % str(body))"},{"line_number":67,"context_line":"        isFound \u003d False"},{"line_number":68,"context_line":"        for ds_dict in body:"},{"line_number":69,"context_line":"            if self.datastore_id \u003d\u003d ds_dict[\u0027datastore\u0027]:"},{"line_number":70,"context_line":"                isFound \u003d True"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_27722b11","line":67,"in_reply_to":"dab895d6_7331edeb","updated":"2014-07-05 11:50:53.000000000","message":"Logic changed so variable no more.","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"0590c77cb3cfa79e08ad1c507586dada1c506eeb","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertTrue(isFound)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":74,"context_line":"    def test_get_datastore_version_details(self):"},{"line_number":75,"context_line":"        \"\"\"Get datastore version details.\"\"\""},{"line_number":76,"context_line":"        self._get_ref_datastore()"},{"line_number":77,"context_line":"        resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1ae5cdf2_fd299f89","line":74,"updated":"2014-06-27 14:33:24.000000000","message":"I tend to agree with GM.  You could pull the code out into _get_ref_datastore_version_list (just like _get_ref_datastore) - that way it won\u0027t be executed twice (and it won\u0027t be duplicated either).","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"4618ea5bf5ca1adb51553f9001f3375c47c6037b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertTrue(isFound)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":74,"context_line":"    def test_get_datastore_version_details(self):"},{"line_number":75,"context_line":"        \"\"\"Get datastore version details.\"\"\""},{"line_number":76,"context_line":"        self._get_ref_datastore()"},{"line_number":77,"context_line":"        resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_e2110153","line":74,"in_reply_to":"1ae5cdf2_fd299f89","updated":"2014-07-05 11:50:53.000000000","message":"Done","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b38b2b9e0267682dc6705a191e67f64b135c5804","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertTrue(isFound)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":74,"context_line":"    def test_get_datastore_version_details(self):"},{"line_number":75,"context_line":"        \"\"\"Get datastore version details.\"\"\""},{"line_number":76,"context_line":"        self._get_ref_datastore()"},{"line_number":77,"context_line":"        resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dab895d6_cacf61af","line":74,"in_reply_to":"1ae5cdf2_fd299f89","updated":"2014-06-30 07:15:41.000000000","message":"Yes, idea of not executing twice is really good.","commit_id":"ed163a02db410fd8129bdd5bc498b5a1f1098ecb"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d081618acb32f0fdcdff66cbf9ab2eae43d2eb68","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class DatabaseDatastoresTest(base.BaseDatabaseTest):"},{"line_number":21,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"},{"line_number":24,"context_line":"    def setUpClass(cls):"}],"source_content_type":"text/x-python","patch_set":23,"id":"baa201ad_cfe364a2","line":21,"updated":"2014-10-06 04:56:11.000000000","message":"Please add class docstring with link to API ref","commit_id":"91fdc7def9794bdf77e939cfd4c734d14f324219"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d081618acb32f0fdcdff66cbf9ab2eae43d2eb68","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    _interface \u003d \u0027json\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"},{"line_number":24,"context_line":"    def setUpClass(cls):"},{"line_number":25,"context_line":"        super(DatabaseDatastoresTest, cls).setUpClass()"},{"line_number":26,"context_line":"        cls.client \u003d cls.database_datastores_client"},{"line_number":27,"context_line":"        cls.datastore_id \u003d None"}],"source_content_type":"text/x-python","patch_set":23,"id":"baa201ad_efe02898","line":24,"updated":"2014-10-06 04:56:11.000000000","message":"Need to use resource_setup (https://blueprints.launchpad.net/tempest/+spec/resource-cleanup), Please rebase and do the changes.","commit_id":"91fdc7def9794bdf77e939cfd4c734d14f324219"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d081618acb32f0fdcdff66cbf9ab2eae43d2eb68","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \"\"\""},{"line_number":35,"context_line":"        if not self.datastore_id:"},{"line_number":36,"context_line":"            resp, datastores \u003d self.client.list_datastores()"},{"line_number":37,"context_line":"            self.assertEqual(200, resp.status)"},{"line_number":38,"context_line":"            LOG.debug(\u0027Available datastore are: %s\u0027 % str(datastores))"},{"line_number":39,"context_line":"            self.assertTrue(len(datastores) \u003e 0, \"No datastores found\")"},{"line_number":40,"context_line":"            for datastore in datastores:"}],"source_content_type":"text/x-python","patch_set":23,"id":"baa201ad_2ff6b063","line":37,"updated":"2014-10-06 04:56:11.000000000","message":"Status code check have been moved to client side.","commit_id":"91fdc7def9794bdf77e939cfd4c734d14f324219"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d081618acb32f0fdcdff66cbf9ab2eae43d2eb68","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        if not self.datastore_ver_id:"},{"line_number":53,"context_line":"            self._get_ref_datastore()"},{"line_number":54,"context_line":"            resp, body \u003d self.client.list_datastore_versions(self.datastore_id)"},{"line_number":55,"context_line":"            self.assertEqual(200, resp.status)"},{"line_number":56,"context_line":"            LOG.debug(\u0027Datastore versions are: %s\u0027 % str(body))"},{"line_number":57,"context_line":"            for ds_dict in body:"},{"line_number":58,"context_line":"                if self.datastore_id \u003d\u003d ds_dict[\u0027datastore\u0027]:"}],"source_content_type":"text/x-python","patch_set":23,"id":"baa201ad_4fe774ac","line":55,"updated":"2014-10-06 04:56:11.000000000","message":"ditto","commit_id":"91fdc7def9794bdf77e939cfd4c734d14f324219"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d081618acb32f0fdcdff66cbf9ab2eae43d2eb68","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        \"\"\""},{"line_number":75,"context_line":"        self._get_ref_datastore()"},{"line_number":76,"context_line":"        resp, body \u003d self.client.get_datastore_details(self.datastore_id)"},{"line_number":77,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":78,"context_line":"        LOG.debug(\u0027Datastore details are: %s\u0027 % str(body))"},{"line_number":79,"context_line":"        self.assertEqual(self.db_datastore_ref, body[\u0027name\u0027])"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"baa201ad_6fec3890","line":77,"updated":"2014-10-06 04:56:11.000000000","message":"ditto","commit_id":"91fdc7def9794bdf77e939cfd4c734d14f324219"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d081618acb32f0fdcdff66cbf9ab2eae43d2eb68","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self._get_ref_datastore_version_list()"},{"line_number":94,"context_line":"        resp, body \u003d self.client.get_datastore_version_details("},{"line_number":95,"context_line":"            self.datastore_id, self.datastore_ver_id)"},{"line_number":96,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":97,"context_line":"        LOG.debug(\u0027Datastore version details are: %s\u0027 % str(body))"},{"line_number":98,"context_line":"        self.assertEqual(self.datastore_id, body[\u0027datastore\u0027])"}],"source_content_type":"text/x-python","patch_set":23,"id":"baa201ad_af01c039","line":96,"updated":"2014-10-06 04:56:11.000000000","message":"ditto","commit_id":"91fdc7def9794bdf77e939cfd4c734d14f324219"}],"tempest/clients.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"c8f8f0731101643b5517c2e8f8249df4672f9f8d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"from tempest.services.compute.json.interfaces_client import \\"},{"line_number":54,"context_line":"    InterfacesClientJSON"},{"line_number":55,"context_line":"from tempest.services.compute.json.keypairs_client import KeyPairsClientJSON"},{"line_number":56,"context_line":"from tempest.services.compute.json.limits_client import LimitsClientJSON"},{"line_number":57,"context_line":"from tempest.services.compute.json.quotas_client import QuotasClientJSON"},{"line_number":58,"context_line":"from tempest.services.compute.json.security_groups_client import \\"},{"line_number":59,"context_line":"    SecurityGroupsClientJSON"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAXH%2F%2FRLk%3D","line":56,"updated":"2014-04-22 21:31:56.000000000","message":"A number of the changes in this file look like some sort of cleanup, unrelated to Trove.  Please break this out into its own patch or modify the commit message","commit_id":"8c4a77f547bec825fce2e6f5c83f94c2a1a568da"}],"tempest/config.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"c8f8f0731101643b5517c2e8f8249df4672f9f8d","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                     \"OpenStack Identity API admin credentials are known.\"),"},{"line_number":127,"context_line":"    cfg.StrOpt(\u0027image_ref\u0027,"},{"line_number":128,"context_line":"               default\u003d\"{$IMAGE_ID}\","},{"line_number":129,"context_line":"               help\u003d\"Valid secondary image reference to be used in tests.\"),"},{"line_number":130,"context_line":"    cfg.StrOpt(\u0027image_ref_alt\u0027,"},{"line_number":131,"context_line":"               default\u003d\"{$IMAGE_ID_ALT}\","},{"line_number":132,"context_line":"               help\u003d\"Valid secondary image reference to be used in tests.\"),"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAXH%2F%2FRKs%3D","line":129,"updated":"2014-04-22 21:31:56.000000000","message":"A number of the changes in this file look like some sort of cleanup, unrelated to Trove.  Please break this out into its own patch or modify the commit message","commit_id":"8c4a77f547bec825fce2e6f5c83f94c2a1a568da"}],"tempest/services/database/json/datastores_client.py":[{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e34bfc15bc24106a07c24b55cddddf9e1e050735","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        resp, body \u003d self.get(\"datastores/%s\" % datastore_id)"},{"line_number":41,"context_line":"        return resp, self._parse_resp(body)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def list_datastore_version(self, datastore_id):"},{"line_number":44,"context_line":"        resp, body \u003d self.get(\"datastores/%s/versions\" % datastore_id)"},{"line_number":45,"context_line":"        return resp, self._parse_resp(body)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7adec928_b895298a","line":43,"updated":"2014-05-07 16:02:54.000000000","message":"This should be called list_datastore_versions (plural)","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"00b5558cafffd1cb5140b31b8e8d96fa68b06754","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        resp, body \u003d self.get(\"datastores/%s\" % datastore_id)"},{"line_number":41,"context_line":"        return resp, self._parse_resp(body)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def list_datastore_version(self, datastore_id):"},{"line_number":44,"context_line":"        resp, body \u003d self.get(\"datastores/%s/versions\" % datastore_id)"},{"line_number":45,"context_line":"        return resp, self._parse_resp(body)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"7adec928_df263868","line":43,"in_reply_to":"7adec928_b895298a","updated":"2014-05-08 18:52:49.000000000","message":"Done","commit_id":"b92fe2331ff02554217efb72e82d63c43815f027"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e8ffff6a9db0e91ab5e8bfbf62243333dfe0aaf7","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":"# import json"},{"line_number":17,"context_line":"import urllib"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.common import rest_client"}],"source_content_type":"text/x-python","patch_set":17,"id":"7adec928_1a36e003","line":16,"updated":"2014-05-22 09:50:07.000000000","message":"Please remove this line","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"be5975be0fbf50a71183a8967d400758690ad4b1","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":"# import json"},{"line_number":17,"context_line":"import urllib"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.common import rest_client"}],"source_content_type":"text/x-python","patch_set":17,"id":"3ae8d1ca_d1c64e49","line":16,"in_reply_to":"7adec928_1a36e003","updated":"2014-05-27 07:00:15.000000000","message":"Will do it once trove datastore support patch (91487) is merged.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"e8ffff6a9db0e91ab5e8bfbf62243333dfe0aaf7","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":37,"context_line":"        return resp, self._parse_resp(body)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def get_datastore_details(self, datastore_id):"},{"line_number":40,"context_line":"        resp, body \u003d self.get(\"datastores/%s\" % datastore_id)"},{"line_number":41,"context_line":"        return resp, self._parse_resp(body)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7adec928_cd19207b","line":39,"updated":"2014-05-22 09:50:07.000000000","message":"Please write doc string for better readability of function and documentation. Same for below functions.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":11019,"name":"Ashish Nigam","email":"ashish.nigam1@globallogic.com","username":"ashishsnigam"},"change_message_id":"be5975be0fbf50a71183a8967d400758690ad4b1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":37,"context_line":"        return resp, self._parse_resp(body)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def get_datastore_details(self, datastore_id):"},{"line_number":40,"context_line":"        resp, body \u003d self.get(\"datastores/%s\" % datastore_id)"},{"line_number":41,"context_line":"        return resp, self._parse_resp(body)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3ae8d1ca_11c1962e","line":39,"in_reply_to":"7adec928_cd19207b","updated":"2014-05-27 07:00:15.000000000","message":"Same as above.","commit_id":"ce767ccafa211f210ecc7a37063dc92c5241caff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d081618acb32f0fdcdff66cbf9ab2eae43d2eb68","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        if params:"},{"line_number":31,"context_line":"            url +\u003d \u0027?%s\u0027 % urllib.urlencode(params)"},{"line_number":32,"context_line":"        resp, body \u003d self.get(url)"},{"line_number":33,"context_line":"        return resp, self._parse_resp(body)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def get_datastore_details(self, datastore_id):"},{"line_number":36,"context_line":"        \"\"\"Get datastore details for referenced datastore.\"\"\""}],"source_content_type":"text/x-python","patch_set":23,"id":"baa201ad_cffa8442","line":33,"updated":"2014-10-06 04:56:11.000000000","message":"status code check needs to moved here. - https://blueprints.launchpad.net/tempest/+spec/client-checks-success","commit_id":"91fdc7def9794bdf77e939cfd4c734d14f324219"}]}
