)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"b6587a0e9058c4b41b6bb3574cadfce003e82210","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lance Bragstad \u003clbragstad@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-09 15:02:03 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Unsure validation of percent encoded fernet tokens"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In change I674bad86ccc9027ac3b365c10b3b142fc9d73c17 we removed the padding from"},{"line_number":10,"context_line":"Fernet tokens. This commit makes it so that we can validate Fernet tokens that"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da20952f_aa715b79","line":7,"updated":"2015-09-09 15:13:10.000000000","message":"This is kind of a strange title....I\u0027m still not quite sure what it means! Do we mean we re unsure of how we are doing it now?  With this fix in place? Or just \"Ensure validate works irrespective of padding\"","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8a7f9beb360d8f7561747675a5fc9298cb6ba724","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lance Bragstad \u003clbragstad@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-09 15:02:03 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Unsure validation of percent encoded fernet tokens"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In change I674bad86ccc9027ac3b365c10b3b142fc9d73c17 we removed the padding from"},{"line_number":10,"context_line":"Fernet tokens. This commit makes it so that we can validate Fernet tokens that"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da20952f_7bf1d794","line":7,"in_reply_to":"da20952f_aa715b79","updated":"2015-09-09 16:19:43.000000000","message":"Done, fixing the title based on your suggestion. Thanks!","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e96d42977f1255e119f42ccfe340fd16a90c5949","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Fernet tokens. This commit makes it so that we can validate Fernet tokens that"},{"line_number":11,"context_line":"come in with and without padding. This should be reverted when Mitaka opens for"},{"line_number":12,"context_line":"development because the Liberty release won\u0027t issue tokens with any sort of"},{"line_number":13,"context_line":"padding."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I60e52af6c4cb39f2d136540a487bba8505a2c6b4"},{"line_number":16,"context_line":"Partial-Bug: 1491926"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7a2fa921_bfa31b4f","line":13,"updated":"2015-10-05 15:09:35.000000000","message":"Remove this last sentence.","commit_id":"4d0f6ef807c8ea2eb1bd00a6ea9da454038d32d2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e96d42977f1255e119f42ccfe340fd16a90c5949","unresolved":false,"context_lines":[{"line_number":13,"context_line":"padding."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I60e52af6c4cb39f2d136540a487bba8505a2c6b4"},{"line_number":16,"context_line":"Partial-Bug: 1491926"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7a2fa921_df94d7e9","line":16,"updated":"2015-10-05 15:09:35.000000000","message":"Use Closes-Bug otherwise I\u0027m going to be looking for the commit that fixes it.","commit_id":"4d0f6ef807c8ea2eb1bd00a6ea9da454038d32d2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0410fda00df463f6846b102445091f5ef624e1ae","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Fernet tokens. This commit makes it so that we can validate Fernet tokens that"},{"line_number":11,"context_line":"come in with and without padding. This ensures that fernet tokens can still be"},{"line_number":12,"context_line":"validated during upgrades. This change should be backported to stable/liberty"},{"line_number":13,"context_line":"and stable/kilo."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I60e52af6c4cb39f2d136540a487bba8505a2c6b4"},{"line_number":16,"context_line":"Partial-Bug: 1491926"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a2fa921_eafeaf04","line":13,"updated":"2015-10-05 15:13:26.000000000","message":"suggest remove this last sentence the bug already makes this clear.","commit_id":"eb07348ac1c78a5231397455fe6d0bd73973e6c2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"744004dfcaef68a110e9a6b4e9307b94cc651842","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Fernet tokens. This commit makes it so that we can validate Fernet tokens that"},{"line_number":11,"context_line":"come in with and without padding. This ensures that fernet tokens can still be"},{"line_number":12,"context_line":"validated during upgrades. This change should be backported to stable/liberty"},{"line_number":13,"context_line":"and stable/kilo."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I60e52af6c4cb39f2d136540a487bba8505a2c6b4"},{"line_number":16,"context_line":"Partial-Bug: 1491926"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a2fa921_eac6af15","line":13,"in_reply_to":"7a2fa921_eafeaf04","updated":"2015-10-05 15:37:23.000000000","message":"Done","commit_id":"eb07348ac1c78a5231397455fe6d0bd73973e6c2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0410fda00df463f6846b102445091f5ef624e1ae","unresolved":false,"context_lines":[{"line_number":13,"context_line":"and stable/kilo."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I60e52af6c4cb39f2d136540a487bba8505a2c6b4"},{"line_number":16,"context_line":"Partial-Bug: 1491926"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a2fa921_9f117f60","line":16,"updated":"2015-10-05 15:13:26.000000000","message":"Closes-Bug.","commit_id":"eb07348ac1c78a5231397455fe6d0bd73973e6c2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"744004dfcaef68a110e9a6b4e9307b94cc651842","unresolved":false,"context_lines":[{"line_number":13,"context_line":"and stable/kilo."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I60e52af6c4cb39f2d136540a487bba8505a2c6b4"},{"line_number":16,"context_line":"Partial-Bug: 1491926"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a2fa921_8a513b65","line":16,"in_reply_to":"7a2fa921_9f117f60","updated":"2015-10-05 15:37:23.000000000","message":"Done","commit_id":"eb07348ac1c78a5231397455fe6d0bd73973e6c2"}],"keystone/tests/unit/token/test_fernet_provider.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"f3909461a459ce7d07273d484487c27343aca5b9","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        payload \u003d (first_value, second_value)"},{"line_number":82,"context_line":"        msgpack_payload \u003d msgpack.packb(payload)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # NOTE(lbragstad): This method perserves the way that keystone use to"},{"line_number":85,"context_line":"        # percent encode the tokens, prior to bug #1491926."},{"line_number":86,"context_line":"        def legacy_encoding_logic(payload):"},{"line_number":87,"context_line":"            tf \u003d token_formatters.TokenFormatter()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_a4dc3475","line":84,"updated":"2015-09-09 14:36:09.000000000","message":"s/use/uses","commit_id":"70337ead6316796a82db3ab681d20979a5f8e3eb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d9cdbf76970d5c347cd3915be1e9a201f9cb51e8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        payload \u003d (first_value, second_value)"},{"line_number":82,"context_line":"        msgpack_payload \u003d msgpack.packb(payload)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # NOTE(lbragstad): This method perserves the way that keystone use to"},{"line_number":85,"context_line":"        # percent encode the tokens, prior to bug #1491926."},{"line_number":86,"context_line":"        def legacy_encoding_logic(payload):"},{"line_number":87,"context_line":"            tf \u003d token_formatters.TokenFormatter()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_e439ccf3","line":84,"in_reply_to":"da20952f_a4dc3475","updated":"2015-09-09 14:46:46.000000000","message":"Done","commit_id":"70337ead6316796a82db3ab681d20979a5f8e3eb"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2e2c839fdb1821f37a6ac3929dbb87683d404304","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # NOTE(lbragstad): This method perserves the way that keystone used to"},{"line_number":85,"context_line":"        # percent encode the tokens, prior to bug #1491926."},{"line_number":86,"context_line":"        def legacy_encoding_logic(payload):"},{"line_number":87,"context_line":"            tf \u003d token_formatters.TokenFormatter()"},{"line_number":88,"context_line":"            return urllib.parse.quote(tf.crypto.encrypt(payload))"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_db06e320","line":86,"updated":"2015-09-09 16:27:58.000000000","message":"legacy_pack ?","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1a699090b605a7f708b932555ed52b57064ff187","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        # NOTE(lbragstad): This method perserves the way that keystone used to"},{"line_number":85,"context_line":"        # percent encode the tokens, prior to bug #1491926."},{"line_number":86,"context_line":"        def legacy_encoding_logic(payload):"},{"line_number":87,"context_line":"            tf \u003d token_formatters.TokenFormatter()"},{"line_number":88,"context_line":"            return urllib.parse.quote(tf.crypto.encrypt(payload))"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_8df02ccb","line":86,"in_reply_to":"da20952f_db06e320","updated":"2015-09-09 17:29:16.000000000","message":"Done","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2e2c839fdb1821f37a6ac3929dbb87683d404304","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # percent encode the tokens, prior to bug #1491926."},{"line_number":86,"context_line":"        def legacy_encoding_logic(payload):"},{"line_number":87,"context_line":"            tf \u003d token_formatters.TokenFormatter()"},{"line_number":88,"context_line":"            return urllib.parse.quote(tf.crypto.encrypt(payload))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        token_with_legacy_encoding \u003d legacy_encoding_logic(msgpack_payload)"},{"line_number":91,"context_line":"        tf \u003d token_formatters.TokenFormatter()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_db1fc36e","line":88,"updated":"2015-09-09 16:27:58.000000000","message":"can you add an assertion to ensure/illustrate that the fernet token requires quoting, per the old scheme? in other words, ensure that the encrypted result has padding\u003d\u003d that must be encoded%3d%3d","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1a699090b605a7f708b932555ed52b57064ff187","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # percent encode the tokens, prior to bug #1491926."},{"line_number":86,"context_line":"        def legacy_encoding_logic(payload):"},{"line_number":87,"context_line":"            tf \u003d token_formatters.TokenFormatter()"},{"line_number":88,"context_line":"            return urllib.parse.quote(tf.crypto.encrypt(payload))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        token_with_legacy_encoding \u003d legacy_encoding_logic(msgpack_payload)"},{"line_number":91,"context_line":"        tf \u003d token_formatters.TokenFormatter()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_0dd09cc8","line":88,"in_reply_to":"da20952f_db1fc36e","updated":"2015-09-09 17:29:16.000000000","message":"Done","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2e2c839fdb1821f37a6ac3929dbb87683d404304","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        token_with_legacy_encoding \u003d legacy_encoding_logic(msgpack_payload)"},{"line_number":91,"context_line":"        tf \u003d token_formatters.TokenFormatter()"},{"line_number":92,"context_line":"        serialized_payload \u003d tf.unpack(token_with_legacy_encoding)"},{"line_number":93,"context_line":"        returned_payload \u003d msgpack.unpackb(serialized_payload)"},{"line_number":94,"context_line":"        self.assertEqual(first_value, returned_payload[0])"},{"line_number":95,"context_line":"        self.assertEqual(second_value, returned_payload[1])"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_56014a03","line":92,"updated":"2015-09-09 16:27:58.000000000","message":"maybe add an inline comment that points out that you\u0027re using the new unpack() against the old pack() implementation","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1a699090b605a7f708b932555ed52b57064ff187","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        token_with_legacy_encoding \u003d legacy_encoding_logic(msgpack_payload)"},{"line_number":91,"context_line":"        tf \u003d token_formatters.TokenFormatter()"},{"line_number":92,"context_line":"        serialized_payload \u003d tf.unpack(token_with_legacy_encoding)"},{"line_number":93,"context_line":"        returned_payload \u003d msgpack.unpackb(serialized_payload)"},{"line_number":94,"context_line":"        self.assertEqual(first_value, returned_payload[0])"},{"line_number":95,"context_line":"        self.assertEqual(second_value, returned_payload[1])"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_2dd320d7","line":92,"in_reply_to":"da20952f_56014a03","updated":"2015-09-09 17:29:16.000000000","message":"Done","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"539c040360097c61f9e0733c0812d1e28b99ed15","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            tf \u003d token_formatters.TokenFormatter()"},{"line_number":92,"context_line":"            encrypted_payload \u003d tf.crypto.encrypt(payload)"},{"line_number":93,"context_line":"            # the encrypted_payload is returned with padding appended"},{"line_number":94,"context_line":"            self.assertTrue(encrypted_payload.endswith(\u0027\u003d\u0027))"},{"line_number":95,"context_line":"            # using urllib.parse.quote will percent encode the padding, like"},{"line_number":96,"context_line":"            # keystone did in Kilo."},{"line_number":97,"context_line":"            percent_encoded_payload \u003d urllib.parse.quote(encrypted_payload)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_c8a029a2","line":94,"updated":"2015-09-17 13:58:41.000000000","message":"should add line breaks on inline comments, such that the line or lines of code described by the inline comment is clearly delineated as such.\n\n  # This inline comment applies to the next line.\n  pass\n\n  # This inline comment applies to the next two lines.\n  pass\n  pass\n\n  pass  # The above inline comments do not apply here.","commit_id":"4d0f6ef807c8ea2eb1bd00a6ea9da454038d32d2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"f142c9aecbb99a1fc0df35d3ebaec90698eb36c8","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            tf \u003d token_formatters.TokenFormatter()"},{"line_number":92,"context_line":"            encrypted_payload \u003d tf.crypto.encrypt(payload)"},{"line_number":93,"context_line":"            # the encrypted_payload is returned with padding appended"},{"line_number":94,"context_line":"            self.assertTrue(encrypted_payload.endswith(\u0027\u003d\u0027))"},{"line_number":95,"context_line":"            # using urllib.parse.quote will percent encode the padding, like"},{"line_number":96,"context_line":"            # keystone did in Kilo."},{"line_number":97,"context_line":"            percent_encoded_payload \u003d urllib.parse.quote(encrypted_payload)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a1a9d01_53ca8ea2","line":94,"in_reply_to":"ba15a1d1_c8a029a2","updated":"2015-10-05 13:57:10.000000000","message":"++","commit_id":"4d0f6ef807c8ea2eb1bd00a6ea9da454038d32d2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6d4988fa268a968a3048180e5f50fbed4c6210e2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            tf \u003d token_formatters.TokenFormatter()"},{"line_number":92,"context_line":"            encrypted_payload \u003d tf.crypto.encrypt(payload)"},{"line_number":93,"context_line":"            # the encrypted_payload is returned with padding appended"},{"line_number":94,"context_line":"            self.assertTrue(encrypted_payload.endswith(\u0027\u003d\u0027))"},{"line_number":95,"context_line":"            # using urllib.parse.quote will percent encode the padding, like"},{"line_number":96,"context_line":"            # keystone did in Kilo."},{"line_number":97,"context_line":"            percent_encoded_payload \u003d urllib.parse.quote(encrypted_payload)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_d97877fb","line":94,"in_reply_to":"ba15a1d1_c8a029a2","updated":"2015-10-05 14:29:55.000000000","message":"Done","commit_id":"4d0f6ef807c8ea2eb1bd00a6ea9da454038d32d2"}],"keystone/token/providers/fernet/token_formatters.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"f3909461a459ce7d07273d484487c27343aca5b9","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo_log import log"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":"from six.moves import urllib, map"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystone.auth import plugins as auth_plugins"},{"line_number":27,"context_line":"from keystone.common import utils as ks_utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_648ffc75","line":24,"updated":"2015-09-09 14:36:09.000000000","message":"I think its generally nicer to have an import per line.","commit_id":"70337ead6316796a82db3ab681d20979a5f8e3eb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d9cdbf76970d5c347cd3915be1e9a201f9cb51e8","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo_log import log"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":"from six.moves import urllib, map"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystone.auth import plugins as auth_plugins"},{"line_number":27,"context_line":"from keystone.common import utils as ks_utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_a488b4c7","line":24,"in_reply_to":"da20952f_648ffc75","updated":"2015-09-09 14:46:46.000000000","message":"agreed, I did it this way because it was originally done like this - https://github.com/openstack/keystone/blob/c5b194300a4b6befbdc75e3142207e5709d42736/keystone/token/providers/fernet/token_formatters.py#L24\n\nbut I can do it either way.","commit_id":"70337ead6316796a82db3ab681d20979a5f8e3eb"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"f3909461a459ce7d07273d484487c27343aca5b9","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        token \u003d six.binary_type(token)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # FIXME(lbragstad): Restore padding on token before decoding it."},{"line_number":77,"context_line":"        # Initially, Fernet tokens were returned to the user with padding"},{"line_number":78,"context_line":"        # appended to the token. Later this padding was removed and restored in"},{"line_number":79,"context_line":"        # the Fernet provider. The following if statement ensures that we can"},{"line_number":80,"context_line":"        # validate tokens with and without token padding, in the event of an"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_e4978c38","line":77,"updated":"2015-09-09 14:36:09.000000000","message":"Should this mention \"initially in Kilo\" had padding and \"later in liberty\" it was removed?","commit_id":"70337ead6316796a82db3ab681d20979a5f8e3eb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d9cdbf76970d5c347cd3915be1e9a201f9cb51e8","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        token \u003d six.binary_type(token)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # FIXME(lbragstad): Restore padding on token before decoding it."},{"line_number":77,"context_line":"        # Initially, Fernet tokens were returned to the user with padding"},{"line_number":78,"context_line":"        # appended to the token. Later this padding was removed and restored in"},{"line_number":79,"context_line":"        # the Fernet provider. The following if statement ensures that we can"},{"line_number":80,"context_line":"        # validate tokens with and without token padding, in the event of an"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_0446407b","line":77,"in_reply_to":"da20952f_e4978c38","updated":"2015-09-09 14:46:46.000000000","message":"Done","commit_id":"70337ead6316796a82db3ab681d20979a5f8e3eb"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2e2c839fdb1821f37a6ac3929dbb87683d404304","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\"Unpack a token, and validate the payload.\"\"\""},{"line_number":74,"context_line":"        token \u003d six.binary_type(token)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # FIXME(lbragstad): Restore padding on token before decoding it."},{"line_number":77,"context_line":"        # Initially in Kilo, Fernet tokens were returned to the user with"},{"line_number":78,"context_line":"        # padding appended to the token. Later in Liberty this padding was"},{"line_number":79,"context_line":"        # removed and restored in the Fernet provider. The following if"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_56286a85","line":76,"updated":"2015-09-09 16:27:58.000000000","message":"FIXME indicates that the following code should not be used/trusted without further work... this just sounds like an action item for later (TODO).","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1a699090b605a7f708b932555ed52b57064ff187","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        \"\"\"Unpack a token, and validate the payload.\"\"\""},{"line_number":74,"context_line":"        token \u003d six.binary_type(token)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # FIXME(lbragstad): Restore padding on token before decoding it."},{"line_number":77,"context_line":"        # Initially in Kilo, Fernet tokens were returned to the user with"},{"line_number":78,"context_line":"        # padding appended to the token. Later in Liberty this padding was"},{"line_number":79,"context_line":"        # removed and restored in the Fernet provider. The following if"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_0de73cad","line":76,"in_reply_to":"da20952f_56286a85","updated":"2015-09-09 17:29:16.000000000","message":"Done","commit_id":"c67d19d2bae652f23051c25cf75d9cac987aa503"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"e00c3f5fd87ffca317a2f2d878707118785d4da4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo_log import log"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":"from six.moves import urllib, map"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystone.auth import plugins as auth_plugins"},{"line_number":27,"context_line":"from keystone.common import utils as ks_utils"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_6ab9392e","line":24,"updated":"2015-09-14 03:17:22.000000000","message":"If as you stated in PS1 that this matches the original import (https://github.com/openstack/keystone/blob/c5b194300a4b6befbdc75e3142207e5709d42736/keystone/token/providers/fernet/token_formatters.py#L24), shouldn\u0027t it be:\n\nfrom six.moves import map, urllib\n\nnot:\n\nfrom six.moves import urllib, map","commit_id":"ce5f0415eeaaf31c38791d8d4b1fc74fa84f198b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"fbd519efa64c6f3b8bac4678d6f0a29408b719d9","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo_log import log"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":"from six.moves import urllib, map"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystone.auth import plugins as auth_plugins"},{"line_number":27,"context_line":"from keystone.common import utils as ks_utils"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba15a1d1_bbe761e3","line":24,"in_reply_to":"ba15a1d1_6ab9392e","updated":"2015-09-15 13:05:23.000000000","message":"Yes, good catch!","commit_id":"ce5f0415eeaaf31c38791d8d4b1fc74fa84f198b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"539c040360097c61f9e0733c0812d1e28b99ed15","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo_log import log"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":"from six.moves import map, urllib"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystone.auth import plugins as auth_plugins"},{"line_number":27,"context_line":"from keystone.common import utils as ks_utils"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_9008ccdb","line":24,"updated":"2015-09-17 13:58:41.000000000","message":"... pep8? one import per line\n\n  https://www.python.org/dev/peps/pep-0008/#imports\n\nI don\u0027t understand why the pep8 tool didn\u0027t catch this.","commit_id":"4d0f6ef807c8ea2eb1bd00a6ea9da454038d32d2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6d4988fa268a968a3048180e5f50fbed4c6210e2","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo_log import log"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"import six"},{"line_number":24,"context_line":"from six.moves import map, urllib"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from keystone.auth import plugins as auth_plugins"},{"line_number":27,"context_line":"from keystone.common import utils as ks_utils"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_5989c7c9","line":24,"in_reply_to":"ba15a1d1_9008ccdb","updated":"2015-10-05 14:29:55.000000000","message":"Done","commit_id":"4d0f6ef807c8ea2eb1bd00a6ea9da454038d32d2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"f142c9aecbb99a1fc0df35d3ebaec90698eb36c8","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # throughout the upgrade. Remove this if statement when Mitaka opens"},{"line_number":83,"context_line":"        # for development and exclusively use the restore_padding() class"},{"line_number":84,"context_line":"        # method."},{"line_number":85,"context_line":"        if token.endswith(\u0027%3D\u0027):"},{"line_number":86,"context_line":"            token \u003d urllib.parse.unquote(token)"},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            token \u003d TokenFormatter.restore_padding(token)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a1a9d01_53992e6d","line":85,"updated":"2015-10-05 13:57:10.000000000","message":"Wasn\u0027t it better to put in a constant ? Like LEGACY_FERNET_PADDING ?","commit_id":"4d0f6ef807c8ea2eb1bd00a6ea9da454038d32d2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6d4988fa268a968a3048180e5f50fbed4c6210e2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # throughout the upgrade. Remove this if statement when Mitaka opens"},{"line_number":83,"context_line":"        # for development and exclusively use the restore_padding() class"},{"line_number":84,"context_line":"        # method."},{"line_number":85,"context_line":"        if token.endswith(\u0027%3D\u0027):"},{"line_number":86,"context_line":"            token \u003d urllib.parse.unquote(token)"},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            token \u003d TokenFormatter.restore_padding(token)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_d9bb9774","line":85,"in_reply_to":"9a1a9d01_53992e6d","updated":"2015-10-05 14:29:55.000000000","message":"We could, but it\u0027s only used in one place.","commit_id":"4d0f6ef807c8ea2eb1bd00a6ea9da454038d32d2"}]}
