)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2513563bdf91613380d860056ec615dc5812c748","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Manager instead of direct driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Make calls via the maanger as opposed to the drivers"},{"line_number":10,"context_line":"in order to support refactoring of common code"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Bug 1193420"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAPn%2F%2FjkQ%3D","line":9,"updated":"2013-06-27 20:59:23.000000000","message":"Change \"maanger\" to \"manager\"","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"}],"keystone/test.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"a474f666dc2fe3781ae055ca49164945dce56b38","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            CONF.set_override(k, v)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def load_backends(self):"},{"line_number":226,"context_line":"        \"\"\"Create shortcut references to each driver for data manipulation.\"\"\""},{"line_number":227,"context_line":"        for manager in MANAGERS:"},{"line_number":228,"context_line":"            name \u003d manager.__name__.split(\u0027.\u0027)[1]"},{"line_number":229,"context_line":"            man \u003d manager.Manager()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2FhWg%3D","line":226,"updated":"2013-06-28 16:13:42.000000000","message":"comment should be updated to say  \"references to each manager for data manipulation\"  instead of to each driver","commit_id":"98a603dc88392d9852ebceef702ac8b09feea473"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a7e6b6f86abb09edad81011f11247af6bd009037","unresolved":false,"context_lines":[{"line_number":56,"context_line":"TESTSDIR \u003d os.path.join(ROOTDIR, \u0027tests\u0027)"},{"line_number":57,"context_line":"ETCDIR \u003d os.path.join(ROOTDIR, \u0027etc\u0027)"},{"line_number":58,"context_line":"CONF \u003d config.CONF"},{"line_number":59,"context_line":"MANAGERS \u003d [catalog, credential, identity, policy, token, trust]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"cd \u003d os.chdir"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2Fg6w%3D","line":59,"updated":"2013-06-28 18:23:16.000000000","message":"these aren\u0027t managers at all, though...\n\ncan this list just be hardcoded into the load_backends method below?","commit_id":"138ff0309cefab69f2eff8317840d7f5b8d5dec2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a7e6b6f86abb09edad81011f11247af6bd009037","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def load_backends(self):"},{"line_number":226,"context_line":"        \"\"\"Initializes each manager and assigns them to an attribute.\"\"\""},{"line_number":227,"context_line":"        for manager in MANAGERS:"},{"line_number":228,"context_line":"            name \u003d manager.__name__.split(\u0027.\u0027)[1]"},{"line_number":229,"context_line":"            man \u003d manager.Manager()"},{"line_number":230,"context_line":"            setattr(self, name + \u0027_api\u0027, man)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2Fg6o%3D","line":227,"updated":"2013-06-28 18:23:16.000000000","message":"based on the above:\n\n  for module in [catalog, credential, identity, policy, token, trust]:","commit_id":"138ff0309cefab69f2eff8317840d7f5b8d5dec2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a7e6b6f86abb09edad81011f11247af6bd009037","unresolved":false,"context_lines":[{"line_number":225,"context_line":"    def load_backends(self):"},{"line_number":226,"context_line":"        \"\"\"Initializes each manager and assigns them to an attribute.\"\"\""},{"line_number":227,"context_line":"        for manager in MANAGERS:"},{"line_number":228,"context_line":"            name \u003d manager.__name__.split(\u0027.\u0027)[1]"},{"line_number":229,"context_line":"            man \u003d manager.Manager()"},{"line_number":230,"context_line":"            setattr(self, name + \u0027_api\u0027, man)"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2Fg78%3D","line":228,"updated":"2013-06-28 18:23:16.000000000","message":"the [1] is super arbitrary and fragile :-/ ... if you\u0027re going to do this dynamically, i\u0027d suggest:\n\n  manager_name \u003d \u0027%s_api\u0027 % module.__name__.split(\u0027.\u0027)[-1]","commit_id":"138ff0309cefab69f2eff8317840d7f5b8d5dec2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2969d5d5c43ed29d6dd77d6d62f39ab97ccb06a8","unresolved":false,"context_lines":[{"line_number":225,"context_line":"    def load_backends(self):"},{"line_number":226,"context_line":"        \"\"\"Initializes each manager and assigns them to an attribute.\"\"\""},{"line_number":227,"context_line":"        for manager in MANAGERS:"},{"line_number":228,"context_line":"            name \u003d manager.__name__.split(\u0027.\u0027)[1]"},{"line_number":229,"context_line":"            man \u003d manager.Manager()"},{"line_number":230,"context_line":"            setattr(self, name + \u0027_api\u0027, man)"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2Fg5o%3D","line":228,"in_reply_to":"AAAAPn%2F%2Fg78%3D","updated":"2013-06-28 18:24:52.000000000","message":"for example, adding ec2 into the mix would result in:\n\n  http://paste.openstack.org/raw/39360/","commit_id":"138ff0309cefab69f2eff8317840d7f5b8d5dec2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a7e6b6f86abb09edad81011f11247af6bd009037","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        for manager in MANAGERS:"},{"line_number":228,"context_line":"            name \u003d manager.__name__.split(\u0027.\u0027)[1]"},{"line_number":229,"context_line":"            man \u003d manager.Manager()"},{"line_number":230,"context_line":"            setattr(self, name + \u0027_api\u0027, man)"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def load_fixtures(self, fixtures):"},{"line_number":233,"context_line":"        \"\"\"Hacky basic and naive fixture loading based on a python module."}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2Fg6E%3D","line":230,"updated":"2013-06-28 18:23:16.000000000","message":"and then:\n\n  setattr(self, manager_name, module.Manager())","commit_id":"138ff0309cefab69f2eff8317840d7f5b8d5dec2"}],"tests/test_auth.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2513563bdf91613380d860056ec615dc5812c748","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"CONF \u003d config.CONF"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"TIME_FORMAT \u003d \u0027%Y-%m-%dT%H:%M:%S.%fZ\u0027"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2FjjU%3D","line":32,"updated":"2013-06-27 20:59:23.000000000","message":"suggest don\u0027t mix whitespace changes, see https://wiki.openstack.org/wiki/GitCommitMessages#Things_to_avoid_when_creating_commits","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"}],"tests/test_backend.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2513563bdf91613380d860056ec615dc5812c748","unresolved":false,"context_lines":[{"line_number":2094,"context_line":"        self.token_api.delete_token(token_id)"},{"line_number":2095,"context_line":"        self.assertRaises(exception.TokenNotFound,"},{"line_number":2096,"context_line":"                          self.token_api.get_token,"},{"line_number":2097,"context_line":"                          token_id)"},{"line_number":2098,"context_line":"        self.assertRaises(exception.TokenNotFound,"},{"line_number":2099,"context_line":"                          self.token_api.delete_token,"},{"line_number":2100,"context_line":"                          token_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2FjjI%3D","line":2097,"updated":"2013-06-27 20:59:23.000000000","message":"suggest revert whitespace changes.","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"}],"tests/test_backend_kvs.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2513563bdf91613380d860056ec615dc5812c748","unresolved":false,"context_lines":[{"line_number":69,"context_line":"class KvsToken(test.TestCase, test_backend.TokenTests):"},{"line_number":70,"context_line":"    def setUp(self):"},{"line_number":71,"context_line":"        super(KvsToken, self).setUp()"},{"line_number":72,"context_line":"        identity.CONF.identity.driver \u003d \\"},{"line_number":73,"context_line":"            \u0027keystone.identity.backends.kvs.Identity\u0027"},{"line_number":74,"context_line":"        self.load_backends()"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fjig%3D","line":72,"updated":"2013-06-27 20:59:23.000000000","message":"prefer () to continue a line, see PEP8 - http://www.python.org/dev/peps/pep-0008/#maximum-line-length\n\nThis applies throughout this file (82, 84, etc)","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"533177fe7c41383425b440e829edeae560ba2690","unresolved":false,"context_lines":[{"line_number":69,"context_line":"class KvsToken(test.TestCase, test_backend.TokenTests):"},{"line_number":70,"context_line":"    def setUp(self):"},{"line_number":71,"context_line":"        super(KvsToken, self).setUp()"},{"line_number":72,"context_line":"        identity.CONF.identity.driver \u003d \\"},{"line_number":73,"context_line":"            \u0027keystone.identity.backends.kvs.Identity\u0027"},{"line_number":74,"context_line":"        self.load_backends()"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fi1U%3D","line":72,"in_reply_to":"AAAAPn%2F%2Fjig%3D","updated":"2013-06-28 04:06:26.000000000","message":"These really can\u0027t be broken up these ways, as assignments can\u0027t be wrapped in parens.  I could put parens around the strings, but that would be less readable.","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6ebf762fce8f8136ffac2d1635cc457d97991806","unresolved":false,"context_lines":[{"line_number":69,"context_line":"class KvsToken(test.TestCase, test_backend.TokenTests):"},{"line_number":70,"context_line":"    def setUp(self):"},{"line_number":71,"context_line":"        super(KvsToken, self).setUp()"},{"line_number":72,"context_line":"        identity.CONF.identity.driver \u003d \\"},{"line_number":73,"context_line":"            \u0027keystone.identity.backends.kvs.Identity\u0027"},{"line_number":74,"context_line":"        self.load_backends()"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPn%2F%2Fhrw%3D","line":72,"updated":"2013-06-28 14:33:30.000000000","message":"prefer () to continue a line, see PEP8 - http://www.python.org/dev/peps/pep-0008/#maximum-line-length\n\nThis applies throughout this file (82, 84, etc)\n\nIf you don\u0027t agree with this rule then update HACKING.rst.\n\nSuggest:\n\n identity.CONF.identity.driver \u003d (\n  \u0027keystone.identity.backends.kvs.Identity\u0027)","commit_id":"33304a077d15d3e8d9e6c19ac7cd0eef7f143b3b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0defea83ea78fc1f841f19b14e33096c9bfeb4d9","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def setUp(self):"},{"line_number":71,"context_line":"        super(KvsToken, self).setUp()"},{"line_number":72,"context_line":"        identity.CONF.identity.driver \u003d \\"},{"line_number":73,"context_line":"            \u0027keystone.identity.backends.kvs.Identity\u0027"},{"line_number":74,"context_line":"        self.load_backends()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2FhUg%3D","line":73,"updated":"2013-06-28 16:17:10.000000000","message":"The other lines were changed but this one wasn\u0027t. (prefer () to continue a line)","commit_id":"98a603dc88392d9852ebceef702ac8b09feea473"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6ab031a0aa325383c28031289b0617766c73cfdf","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def setUp(self):"},{"line_number":71,"context_line":"        super(KvsToken, self).setUp()"},{"line_number":72,"context_line":"        identity.CONF.identity.driver \u003d \\"},{"line_number":73,"context_line":"            \u0027keystone.identity.backends.kvs.Identity\u0027"},{"line_number":74,"context_line":"        self.load_backends()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FhIg%3D","line":73,"updated":"2013-06-28 17:18:42.000000000","message":"The other lines were changed but this one wasn\u0027t. (prefer () to continue a line)","commit_id":"1c7c32da4095703501efac05c6e85ffb0d867fe5"}],"tests/test_backend_ldap.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"05d025c1b8b1466d89a7997cee3777f0521f9d8c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"EMPTY_CONTEXT \u003d {}"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class LDAPTests(test.TestCase):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def clear_database(self):"},{"line_number":40,"context_line":"        db \u003d fakeldap.FakeShelve().get_instance()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FsZE%3D","line":37,"updated":"2013-06-25 05:26:55.000000000","message":"Any reason for extracting this? I don\u0027t disagree but you don\u0027t use it anywhere else.","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"5d0ac1498f3e3bd5eb107aa0a2c4cda1c23534fc","unresolved":false,"context_lines":[{"line_number":34,"context_line":"EMPTY_CONTEXT \u003d {}"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class LDAPTests(test.TestCase):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def clear_database(self):"},{"line_number":40,"context_line":"        db \u003d fakeldap.FakeShelve().get_instance()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FqPg%3D","line":37,"in_reply_to":"AAAAPn%2F%2FsZE%3D","updated":"2013-06-25 20:15:38.000000000","message":"Ah, was going to use this for the LDAPIdentityEnabledEmulation and live tests as well.\n\nRemoved","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"05d025c1b8b1466d89a7997cee3777f0521f9d8c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.assertEquals(user_api.tree_dn, \"ou\u003dUsers,%s\" % CONF.ldap.suffix)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_configurable_allowed_user_actions(self):"},{"line_number":81,"context_line":"        self.load_backends()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        user \u003d {\u0027id\u0027: \u0027fake1\u0027,"},{"line_number":84,"context_line":"                \u0027name\u0027: \u0027fake1\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FsaU%3D","line":81,"updated":"2013-06-25 05:26:55.000000000","message":"Isn\u0027t this already loaded from setUp? there\u0027s no conf change here","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"5d0ac1498f3e3bd5eb107aa0a2c4cda1c23534fc","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.assertEquals(user_api.tree_dn, \"ou\u003dUsers,%s\" % CONF.ldap.suffix)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_configurable_allowed_user_actions(self):"},{"line_number":81,"context_line":"        self.load_backends()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        user \u003d {\u0027id\u0027: \u0027fake1\u0027,"},{"line_number":84,"context_line":"                \u0027name\u0027: \u0027fake1\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FqPk%3D","line":81,"in_reply_to":"AAAAPn%2F%2FsaU%3D","updated":"2013-06-25 20:15:38.000000000","message":"I think you are right.  This is just a one-for-one change with the origianl code, but I suspect it would test the same thing without this line.","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"05d025c1b8b1466d89a7997cee3777f0521f9d8c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                          self.user_foo[\u0027id\u0027])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def test_configurable_allowed_project_actions(self):"},{"line_number":133,"context_line":"        self.load_backends()"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        tenant \u003d {\u0027id\u0027: \u0027fake1\u0027, \u0027name\u0027: \u0027fake1\u0027, \u0027enabled\u0027: True}"},{"line_number":136,"context_line":"        self.identity_api.create_project(EMPTY_CONTEXT,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FsZA%3D","line":133,"updated":"2013-06-25 05:26:55.000000000","message":"again","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"05d025c1b8b1466d89a7997cee3777f0521f9d8c","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                          self.tenant_bar[\u0027id\u0027])"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def test_configurable_allowed_role_actions(self):"},{"line_number":178,"context_line":"        self.load_backends()"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        role \u003d {\u0027id\u0027: \u0027fake1\u0027, \u0027name\u0027: \u0027fake1\u0027}"},{"line_number":181,"context_line":"        self.identity_api.create_role(EMPTY_CONTEXT,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FsY8%3D","line":178,"updated":"2013-06-25 05:26:55.000000000","message":".","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"05d025c1b8b1466d89a7997cee3777f0521f9d8c","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                                             \u0027enabled\u0027]"},{"line_number":338,"context_line":"        self.clear_database()"},{"line_number":339,"context_line":"        self.load_backends()"},{"line_number":340,"context_line":"        self.load_backends()"},{"line_number":341,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":342,"context_line":"        tenant_ref \u003d self.identity_api.get_project(EMPTY_CONTEXT,"},{"line_number":343,"context_line":"                                                   self.tenant_baz[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FsaY%3D","line":340,"updated":"2013-06-25 05:26:55.000000000","message":"twice?","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1f6048d0c0fb47d416d712340b485aef09122968","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        CONF.ldap.tenant_allow_create \u003d False"},{"line_number":141,"context_line":"        CONF.ldap.tenant_allow_update \u003d False"},{"line_number":142,"context_line":"        CONF.ldap.tenant_allow_delete \u003d False"},{"line_number":143,"context_line":"        self.load_backends()"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        tenant \u003d {\u0027id\u0027: \u0027fake1\u0027, \u0027name\u0027: \u0027fake1\u0027}"},{"line_number":146,"context_line":"        self.assertRaises(exception.ForbiddenAction,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2Fp%2FI%3D","line":143,"updated":"2013-06-25 21:16:42.000000000","message":"So even though this is done in setUp() we are doing it again? Unless lines 140 - 143 make calling self.load_backends() specific to this test case? I could be missing something.","commit_id":"4ecfa3a0c82e05733344e5c2337bf86027afb398"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"d69fe814524b1e122f9d4a7827d794341578e1e8","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        CONF.ldap.tenant_allow_create \u003d False"},{"line_number":141,"context_line":"        CONF.ldap.tenant_allow_update \u003d False"},{"line_number":142,"context_line":"        CONF.ldap.tenant_allow_delete \u003d False"},{"line_number":143,"context_line":"        self.load_backends()"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        tenant \u003d {\u0027id\u0027: \u0027fake1\u0027, \u0027name\u0027: \u0027fake1\u0027}"},{"line_number":146,"context_line":"        self.assertRaises(exception.ForbiddenAction,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2FnfU%3D","line":143,"in_reply_to":"AAAAPn%2F%2Fp%2FI%3D","updated":"2013-06-26 17:01:44.000000000","message":"this call applies the  changes to the CONF to the various backends.  It could be made more efficient, but this is a direct translation of the original call :  self.identity_api \u003d identity.backends.ldap.Identity()","commit_id":"4ecfa3a0c82e05733344e5c2337bf86027afb398"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2513563bdf91613380d860056ec615dc5812c748","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.clear_database()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # populate the engine with tables \u0026 fixtures"},{"line_number":56,"context_line":"        self.load_backends()"},{"line_number":57,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":58,"context_line":"        #defaulted by the data load"},{"line_number":59,"context_line":"        self.user_foo[\u0027enabled\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2FjiE%3D","line":56,"updated":"2013-06-27 20:59:23.000000000","message":"why do load_backends in setUp() if just going to do it again in the tests? (Just wondering... maybe split out the ones that require different configs and have to load_backends themselves.)","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"533177fe7c41383425b440e829edeae560ba2690","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        self.clear_database()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        # populate the engine with tables \u0026 fixtures"},{"line_number":56,"context_line":"        self.load_backends()"},{"line_number":57,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":58,"context_line":"        #defaulted by the data load"},{"line_number":59,"context_line":"        self.user_foo[\u0027enabled\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fi1I%3D","line":56,"in_reply_to":"AAAAPn%2F%2FjiE%3D","updated":"2013-06-28 04:06:26.000000000","message":"Most use the \u0027load_backends\u0027 with the default configurations.  Some require custom configurations and thus reload.  This code is the most straightforward port of the original intention.  About all I could do would be to further split out the tests that require additional configuration into their own test suite, and skip the first \u0027load_backends\u0027 call.  I think the current code is fine, as duplicating the call for a subset of tests does not substantially slow things down.","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"}],"tests/test_backend_sql.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"05d025c1b8b1466d89a7997cee3777f0521f9d8c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        sql.ModelBase.metadata.create_all(bind\u003dself.engine)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # populate the engine with tables \u0026 fixtures"},{"line_number":49,"context_line":"        self.load_backends()"},{"line_number":50,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":51,"context_line":"        #defaulted by the data load"},{"line_number":52,"context_line":"        self.user_foo[\u0027enabled\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FsYg%3D","line":49,"updated":"2013-06-25 05:26:55.000000000","message":"twice?","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"5d0ac1498f3e3bd5eb107aa0a2c4cda1c23534fc","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        sql.ModelBase.metadata.create_all(bind\u003dself.engine)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # populate the engine with tables \u0026 fixtures"},{"line_number":49,"context_line":"        self.load_backends()"},{"line_number":50,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":51,"context_line":"        #defaulted by the data load"},{"line_number":52,"context_line":"        self.user_foo[\u0027enabled\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FqF0%3D","line":49,"in_reply_to":"AAAAPn%2F%2FsYg%3D","updated":"2013-06-25 20:15:38.000000000","message":"Done","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"}],"tests/test_backend_templated.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"05d025c1b8b1466d89a7997cee3777f0521f9d8c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def setUp(self):"},{"line_number":55,"context_line":"        super(TestTemplatedCatalog, self).setUp()"},{"line_number":56,"context_line":"        self.opt_in_group(\u0027catalog\u0027, template_file\u003dDEFAULT_CATALOG_TEMPLATES)"},{"line_number":57,"context_line":"        #self.catalog_api \u003d catalog_templated.TemplatedCatalog()"},{"line_number":58,"context_line":"        self.catalog_man \u003d catalog.Manager()"},{"line_number":59,"context_line":"        self.load_backends()"},{"line_number":60,"context_line":"        self.load_fixtures(default_fixtures)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FsYc%3D","line":57,"updated":"2013-06-25 05:26:55.000000000","message":"delete it","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"5d0ac1498f3e3bd5eb107aa0a2c4cda1c23534fc","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    def setUp(self):"},{"line_number":55,"context_line":"        super(TestTemplatedCatalog, self).setUp()"},{"line_number":56,"context_line":"        self.opt_in_group(\u0027catalog\u0027, template_file\u003dDEFAULT_CATALOG_TEMPLATES)"},{"line_number":57,"context_line":"        #self.catalog_api \u003d catalog_templated.TemplatedCatalog()"},{"line_number":58,"context_line":"        self.catalog_man \u003d catalog.Manager()"},{"line_number":59,"context_line":"        self.load_backends()"},{"line_number":60,"context_line":"        self.load_fixtures(default_fixtures)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FqFw%3D","line":57,"in_reply_to":"AAAAPn%2F%2FsYc%3D","updated":"2013-06-25 20:15:38.000000000","message":"Done","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2513563bdf91613380d860056ec615dc5812c748","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    def setUp(self):"},{"line_number":54,"context_line":"        super(TestTemplatedCatalog, self).setUp()"},{"line_number":55,"context_line":"        self.opt_in_group(\u0027catalog\u0027, template_file\u003dDEFAULT_CATALOG_TEMPLATES)"},{"line_number":56,"context_line":"        self.catalog_man \u003d catalog.Manager()"},{"line_number":57,"context_line":"        self.load_backends()"},{"line_number":58,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fjhg%3D","line":56,"updated":"2013-06-27 20:59:23.000000000","message":"is this still needed? (was it ever needed?)","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"533177fe7c41383425b440e829edeae560ba2690","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    def setUp(self):"},{"line_number":54,"context_line":"        super(TestTemplatedCatalog, self).setUp()"},{"line_number":55,"context_line":"        self.opt_in_group(\u0027catalog\u0027, template_file\u003dDEFAULT_CATALOG_TEMPLATES)"},{"line_number":56,"context_line":"        self.catalog_man \u003d catalog.Manager()"},{"line_number":57,"context_line":"        self.load_backends()"},{"line_number":58,"context_line":"        self.load_fixtures(default_fixtures)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fi1E%3D","line":56,"in_reply_to":"AAAAPn%2F%2Fjhg%3D","updated":"2013-06-28 04:06:26.000000000","message":"gone","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"}],"tests/test_keystoneclient.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2513563bdf91613380d860056ec615dc5812c748","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"CONF \u003d config.CONF"},{"line_number":31,"context_line":"DEFAULT_DOMAIN_ID \u003d CONF.identity.default_domain_id"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"OPENSTACK_REPO \u003d \u0027https://review.openstack.org/p/openstack\u0027"},{"line_number":34,"context_line":"KEYSTONECLIENT_REPO \u003d \u0027%s/python-keystoneclient.git\u0027 % OPENSTACK_REPO"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fjhc%3D","line":32,"updated":"2013-06-27 20:59:23.000000000","message":"suggest revert whitespace change.","commit_id":"0695722cfe9d1f59c4ca390a606c41aed043b224"}],"tests/test_migrate_nova_auth.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"05d025c1b8b1466d89a7997cee3777f0521f9d8c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    def _create_role(self, role_name):"},{"line_number":87,"context_line":"        role_id \u003d uuid.uuid4().hex"},{"line_number":88,"context_line":"        role_dict \u003d {\u0027id\u0027: role_id, \u0027name\u0027: role_name}"},{"line_number":89,"context_line":"        self.identity_api.create_role({}, role_id, role_dict)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_import(self):"},{"line_number":92,"context_line":"        self._create_role(\u0027role1\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FsYU%3D","line":89,"updated":"2013-06-25 05:26:55.000000000","message":"EMPTY_CONTEXT","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"5d0ac1498f3e3bd5eb107aa0a2c4cda1c23534fc","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    def _create_role(self, role_name):"},{"line_number":87,"context_line":"        role_id \u003d uuid.uuid4().hex"},{"line_number":88,"context_line":"        role_dict \u003d {\u0027id\u0027: role_id, \u0027name\u0027: role_name}"},{"line_number":89,"context_line":"        self.identity_api.create_role({}, role_id, role_dict)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_import(self):"},{"line_number":92,"context_line":"        self._create_role(\u0027role1\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FqFQ%3D","line":89,"in_reply_to":"AAAAPn%2F%2FsYU%3D","updated":"2013-06-25 20:15:38.000000000","message":"Done","commit_id":"9566ff4b3b5ea25c0a92f1d8868ea7f0772cd441"}]}
