)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad8ab4016f8d84b434eb36f6a491d6c9d05ba90","unresolved":false,"context_lines":[{"line_number":10,"context_line":"about to expire. This is generally correct however there are times where"},{"line_number":11,"context_line":"this re-authentication doesn\u0027t make sense and we should be able to"},{"line_number":12,"context_line":"prevent it."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I66b50b1e650501e7f076139895473e8d1791ce27"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_65017438","line":13,"updated":"2014-08-04 00:12:48.000000000","message":"This needs a bug or a spec.","commit_id":"30919b4c6f457d0b5864bbcb1526370c03afaa1b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f14d97850f4038ff5682b66b0dcc7c85c4577810","unresolved":false,"context_lines":[{"line_number":10,"context_line":"about to expire. This is generally correct however there are times where"},{"line_number":11,"context_line":"this re-authentication doesn\u0027t make sense and we should be able to"},{"line_number":12,"context_line":"prevent it."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I66b50b1e650501e7f076139895473e8d1791ce27"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_f74c5778","line":13,"in_reply_to":"baada198_65017438","updated":"2014-08-04 02:15:33.000000000","message":"Done","commit_id":"30919b4c6f457d0b5864bbcb1526370c03afaa1b"}],"keystoneclient/auth/identity/base.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad8ab4016f8d84b434eb36f6a491d6c9d05ba90","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        if not self.auth_ref:"},{"line_number":97,"context_line":"            self.auth_ref \u003d self.get_auth_ref(session)"},{"line_number":98,"context_line":"        elif (self.reauthenticate and"},{"line_number":99,"context_line":"              self.auth_ref.will_expire_soon(self.MIN_TOKEN_LIFE_SECONDS)):"},{"line_number":100,"context_line":"            self.auth_ref \u003d self.get_auth_ref(session)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        return self.auth_ref"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e594a4e9","line":99,"updated":"2014-08-04 00:12:48.000000000","message":"these tests should be put into a method so that the logic isn\u0027t as complicated and doesn\u0027t require code duplication.","commit_id":"30919b4c6f457d0b5864bbcb1526370c03afaa1b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f14d97850f4038ff5682b66b0dcc7c85c4577810","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        if not self.auth_ref:"},{"line_number":97,"context_line":"            self.auth_ref \u003d self.get_auth_ref(session)"},{"line_number":98,"context_line":"        elif (self.reauthenticate and"},{"line_number":99,"context_line":"              self.auth_ref.will_expire_soon(self.MIN_TOKEN_LIFE_SECONDS)):"},{"line_number":100,"context_line":"            self.auth_ref \u003d self.get_auth_ref(session)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        return self.auth_ref"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_b7465f4e","line":99,"in_reply_to":"baada198_e594a4e9","updated":"2014-08-04 02:15:33.000000000","message":"Done","commit_id":"30919b4c6f457d0b5864bbcb1526370c03afaa1b"}],"keystoneclient/auth/identity/v2.py":[{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"fcbd5f7cfaa68a48b92847dba781f98a0f11f9f1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                 trust_id\u003dNone,"},{"line_number":45,"context_line":"                 tenant_id\u003dNone,"},{"line_number":46,"context_line":"                 tenant_name\u003dNone,"},{"line_number":47,"context_line":"                 reauthenticate\u003dTrue):"},{"line_number":48,"context_line":"        \"\"\"Construct an Identity V2 Authentication Plugin."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param string auth_url: Identity service endpoint for authorization."}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_a50bf020","line":47,"updated":"2014-07-31 06:25:52.000000000","message":"Don\u0027t we want the default value to be False","commit_id":"30919b4c6f457d0b5864bbcb1526370c03afaa1b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f14d97850f4038ff5682b66b0dcc7c85c4577810","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                 trust_id\u003dNone,"},{"line_number":45,"context_line":"                 tenant_id\u003dNone,"},{"line_number":46,"context_line":"                 tenant_name\u003dNone,"},{"line_number":47,"context_line":"                 reauthenticate\u003dTrue):"},{"line_number":48,"context_line":"        \"\"\"Construct an Identity V2 Authentication Plugin."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param string auth_url: Identity service endpoint for authorization."}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_576d03ca","line":47,"in_reply_to":"baada198_a50bf020","updated":"2014-08-04 02:15:33.000000000","message":"No, The current behaviour is that it should reauthenticate if the token is about to expire and we want to keep that.","commit_id":"30919b4c6f457d0b5864bbcb1526370c03afaa1b"}],"keystoneclient/tests/auth/test_identity_common.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3ad8ab4016f8d84b434eb36f6a491d6c9d05ba90","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        a.auth_ref \u003d expired_auth_ref"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        s \u003d session.Session(auth\u003da)"},{"line_number":215,"context_line":"        self.assertIs(expired_auth_ref, a.get_access(s))"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"class V3(CommonIdentityTests, utils.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_658894c6","line":215,"updated":"2014-08-04 00:12:48.000000000","message":"the copy-pasted code between these two tests should be consolidated into a function.","commit_id":"30919b4c6f457d0b5864bbcb1526370c03afaa1b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f14d97850f4038ff5682b66b0dcc7c85c4577810","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        a.auth_ref \u003d expired_auth_ref"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        s \u003d session.Session(auth\u003da)"},{"line_number":215,"context_line":"        self.assertIs(expired_auth_ref, a.get_access(s))"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"class V3(CommonIdentityTests, utils.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_5a1fea59","line":215,"in_reply_to":"baada198_658894c6","updated":"2014-08-04 02:15:33.000000000","message":"Done","commit_id":"30919b4c6f457d0b5864bbcb1526370c03afaa1b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"625deb0efb8b2832a3dbf2ef961df1875143f03f","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        a \u003d self._create_expired_auth_plugin(reauthenticate\u003dFalse)"},{"line_number":208,"context_line":"        expired_auth_ref \u003d a.auth_ref"},{"line_number":209,"context_line":"        s \u003d session.Session(auth\u003da)"},{"line_number":210,"context_line":"        self.assertIs(expired_auth_ref, a.get_access(s))"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"class V3(CommonIdentityTests, utils.TestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_014402b6","line":210,"updated":"2014-08-04 23:13:21.000000000","message":"there\u0027s still copy-pasted code between these 2 tests. They\u0027re essentially the same except one has reauthenticate\u003dFalse.","commit_id":"e2f1845549258b1e01adca0f3979b9f1c0f475bf"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"aabd5e5561f0230b96f4eae9e44985f7c0a31382","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        a \u003d self._create_expired_auth_plugin(reauthenticate\u003dFalse)"},{"line_number":208,"context_line":"        expired_auth_ref \u003d a.auth_ref"},{"line_number":209,"context_line":"        s \u003d session.Session(auth\u003da)"},{"line_number":210,"context_line":"        self.assertIs(expired_auth_ref, a.get_access(s))"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"class V3(CommonIdentityTests, utils.TestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_004f71c0","line":210,"in_reply_to":"baada198_014402b6","updated":"2014-08-05 22:10:43.000000000","message":"and the assert is reversed.  Duplication here is better than the tangle of trying to make them common","commit_id":"e2f1845549258b1e01adca0f3979b9f1c0f475bf"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"3d477851c6087264dad4fa4ed1a204d2f2f35608","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    def create_auth_plugin(self, **kwargs):"},{"line_number":242,"context_line":"        kwargs.setdefault(\u0027auth_url\u0027, self.TEST_URL)"},{"line_number":243,"context_line":"        kwargs.setdefault(\u0027username\u0027, self.TEST_USER)"},{"line_number":244,"context_line":"        kwargs.setdefault(\u0027password\u0027, self.TEST_PASS)"},{"line_number":245,"context_line":"        return v3.Password(**kwargs)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_e49c7c5d","line":244,"updated":"2014-08-04 23:51:22.000000000","message":"username only for v3? I would\u0027ve expected v3.Password to raise an exception on instantiation for incomplete data.","commit_id":"e2f1845549258b1e01adca0f3979b9f1c0f475bf"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d35d0b1f182ac13530155f01f2e542eb080ccd75","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    def create_auth_plugin(self, **kwargs):"},{"line_number":242,"context_line":"        kwargs.setdefault(\u0027auth_url\u0027, self.TEST_URL)"},{"line_number":243,"context_line":"        kwargs.setdefault(\u0027username\u0027, self.TEST_USER)"},{"line_number":244,"context_line":"        kwargs.setdefault(\u0027password\u0027, self.TEST_PASS)"},{"line_number":245,"context_line":"        return v3.Password(**kwargs)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_204c75c9","line":244,"in_reply_to":"baada198_e49c7c5d","updated":"2014-08-05 22:08:42.000000000","message":"No, there is no enforcement of the required parameters in the plugin creation. This won\u0027t happen until the actual request time, which in our case we are mocking out.","commit_id":"e2f1845549258b1e01adca0f3979b9f1c0f475bf"}]}
