)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"0a3eaa0232bc6a9d625b92445859e25a706d102d","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Some instances of federation constants were removed because"},{"line_number":14,"context_line":"they were causing a circular dependency, these can be refactored in"},{"line_number":15,"context_line":"a later patch."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"DocImpact: You should no longer run the migrations for this extension"},{"line_number":18,"context_line":"Implements: bp move-extensions"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"1a26ad4f_3f56cb5c","line":15,"updated":"2015-10-30 01:07:02.000000000","message":"Great commit message!","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"01413f33d35b36271740bb6bd69db9d8f8db15fd","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Some instances of federation constants were removed because"},{"line_number":14,"context_line":"they were causing a circular dependency, these can be refactored in"},{"line_number":15,"context_line":"a later patch."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"DocImpact: You should no longer run the migrations for this extension"},{"line_number":18,"context_line":"Implements: bp move-extensions"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"fa80f949_11f8ede4","line":15,"updated":"2015-11-03 20:56:37.000000000","message":"open a bug so we don\u0027t forget.","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"}],"etc/keystone-paste.ini":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"01413f33d35b36271740bb6bd69db9d8f8db15fd","unresolved":false,"context_lines":[{"line_number":30,"context_line":"[filter:ec2_extension_v3]"},{"line_number":31,"context_line":"use \u003d egg:keystone#ec2_extension_v3"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"[filter:federation_extension]"},{"line_number":34,"context_line":"use \u003d egg:keystone#federation_extension"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[filter:oauth1_extension]"}],"source_content_type":"text/x-properties","patch_set":29,"id":"fa80f949_31d09153","line":33,"updated":"2015-11-03 20:56:37.000000000","message":"remove this since it\u0027s not used.","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"b8b334bc3ff6af79875d1401c5878686ca32fcf7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"[filter:ec2_extension_v3]"},{"line_number":31,"context_line":"use \u003d egg:keystone#ec2_extension_v3"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"[filter:federation_extension]"},{"line_number":34,"context_line":"use \u003d egg:keystone#federation_extension"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"[filter:oauth1_extension]"}],"source_content_type":"text/x-properties","patch_set":29,"id":"fa80f949_eb8ff827","line":33,"in_reply_to":"fa80f949_31d09153","updated":"2015-11-06 13:57:24.000000000","message":"Done","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"}],"keystone/auth/controllers.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"67edd512e4e2ef74d0476e5b0ff39f347f73df01","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            return"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        # Skip scoping when unscoped federated token is being issued"},{"line_number":425,"context_line":"        if \u0027OS-FEDERATION:identity_provider\u0027 in auth_context:"},{"line_number":426,"context_line":"            return"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        # Do not scope if request is for explicitly unscoped token"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_b631d40d","line":425,"updated":"2015-10-14 09:13:17.000000000","message":"better to add some comments here, so we won\u0027t miss your message left before.","commit_id":"e2b0ea36fff7cab673a2f3d96342f99f849e8a9b"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"53a6b3e3b6a3cd97d80c4a191d3aa2274f49c04a","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            return"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        # Skip scoping when unscoped federated token is being issued"},{"line_number":425,"context_line":"        if \u0027OS-FEDERATION:identity_provider\u0027 in auth_context:"},{"line_number":426,"context_line":"            return"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        # Do not scope if request is for explicitly unscoped token"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_a690dded","line":425,"updated":"2015-10-19 08:26:39.000000000","message":"why not keep using constant? Just import it from different localization.","commit_id":"b7b3cef4a4e2e3296969347ef7272fa3b72a5981"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"0a3eaa0232bc6a9d625b92445859e25a706d102d","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            return"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        # Skip scoping when unscoped federated token is being issued"},{"line_number":425,"context_line":"        if \u0027OS-FEDERATION:identity_provider\u0027 in auth_context:"},{"line_number":426,"context_line":"            return"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        # Do not scope if request is for explicitly unscoped token"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_ff07f319","line":425,"updated":"2015-10-30 01:07:02.000000000","message":"Looking forward to this being turned back into a constant.  Magic strings affect my OCD!","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f434e511361d330722d3dacda4ab72bac1d75c4f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from keystone.common import utils"},{"line_number":29,"context_line":"from keystone.common import wsgi"},{"line_number":30,"context_line":"from keystone import config"},{"line_number":31,"context_line":"from keystone.contrib.federation import constants as federation_constants"},{"line_number":32,"context_line":"from keystone import exception"},{"line_number":33,"context_line":"from keystone.i18n import _, _LI, _LW"},{"line_number":34,"context_line":"from keystone.resource import controllers as resource_controllers"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_10c13954","side":"PARENT","line":31,"updated":"2015-11-11 15:45:44.000000000","message":"shouldn\u0027t this be replaced with:\n\n    from keystone.federation import constants as federation_constants","commit_id":"9ee582a48c15835bfa7de8e2b543ce58a37fbe6c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f434e511361d330722d3dacda4ab72bac1d75c4f","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            return"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        # Skip scoping when unscoped federated token is being issued"},{"line_number":425,"context_line":"        if \u0027OS-FEDERATION:identity_provider\u0027 in auth_context:"},{"line_number":426,"context_line":"            return"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        # Do not scope if request is for explicitly unscoped token"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_501581e2","line":425,"updated":"2015-11-11 15:45:44.000000000","message":"should we still have a constant for this?","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"ac63f0c8cd620a8e24d884ab4ff9f86bca7ac324","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            return"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        # Skip scoping when unscoped federated token is being issued"},{"line_number":425,"context_line":"        if \u0027OS-FEDERATION:identity_provider\u0027 in auth_context:"},{"line_number":426,"context_line":"            return"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        # Do not scope if request is for explicitly unscoped token"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_ee3931d8","line":425,"in_reply_to":"da85f559_501581e2","updated":"2015-11-11 16:25:32.000000000","message":"makes sense. we\u0027d need to change the import","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"13feedf11ba91fc2f3a221dd0d27a80884bf7def","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            return"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        # Skip scoping when unscoped federated token is being issued"},{"line_number":425,"context_line":"        if \u0027OS-FEDERATION:identity_provider\u0027 in auth_context:"},{"line_number":426,"context_line":"            return"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        # Do not scope if request is for explicitly unscoped token"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_eb80ed4b","line":425,"in_reply_to":"da85f559_9977839f","updated":"2015-11-12 21:41:08.000000000","message":"Then I would add a note saying that this should be a constant again at some point. Or open a bug so that we don\u0027t lose track of it.","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"dd83b99f6683096528aa66abb54adf1949b625cf","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            return"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        # Skip scoping when unscoped federated token is being issued"},{"line_number":425,"context_line":"        if \u0027OS-FEDERATION:identity_provider\u0027 in auth_context:"},{"line_number":426,"context_line":"            return"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        # Do not scope if request is for explicitly unscoped token"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba8a016a_87453c18","line":425,"in_reply_to":"da85f559_eb80ed4b","updated":"2015-11-17 19:30:49.000000000","message":"i\u0027ll add a note","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"68c0547bfee7f67b59668088e128f2ea6a90d75d","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            return"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        # Skip scoping when unscoped federated token is being issued"},{"line_number":425,"context_line":"        if \u0027OS-FEDERATION:identity_provider\u0027 in auth_context:"},{"line_number":426,"context_line":"            return"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        # Do not scope if request is for explicitly unscoped token"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_9977839f","line":425,"in_reply_to":"da85f559_ee3931d8","updated":"2015-11-11 20:59:23.000000000","message":"see the commit message, and as my comment it in the much early review, it\u0027s better to some notes here, so no one will raise this again and again. :)","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"}],"keystone/auth/plugins/mapped.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"0a3eaa0232bc6a9d625b92445859e25a706d102d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from keystone.auth import plugins as auth_plugins"},{"line_number":21,"context_line":"from keystone.common import dependency"},{"line_number":22,"context_line":"from keystone import exception"},{"line_number":23,"context_line":"from keystone.federation import constants as federation_constants"},{"line_number":24,"context_line":"from keystone.federation import utils"},{"line_number":25,"context_line":"from keystone.i18n import _"},{"line_number":26,"context_line":"from keystone.models import token_model"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_a2ce44b2","line":23,"updated":"2015-10-30 01:07:02.000000000","message":"I always like how you remember put the imports in the proper place when you do this","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"}],"keystone/cmd/cli.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a353a69759291627825fd6a02469fe4a9d80c287","unresolved":false,"context_lines":[{"line_number":540,"context_line":"    def main():"},{"line_number":541,"context_line":"        # NOTE(marek-denis): Since federation is currently an extension import"},{"line_number":542,"context_line":"        # corresponding modules only when they are really going to be used."},{"line_number":543,"context_line":"        from keystone.federation import idp"},{"line_number":544,"context_line":"        metadata \u003d idp.MetadataGenerator().generate_metadata()"},{"line_number":545,"context_line":"        print(metadata.to_string())"},{"line_number":546,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_37a380a0","line":543,"updated":"2015-10-13 04:21:28.000000000","message":"no longer an extension, can be imported normally.","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"16f7a4b723915389a8a1e396fbe86b3977b44e50","unresolved":false,"context_lines":[{"line_number":540,"context_line":"    def main():"},{"line_number":541,"context_line":"        # NOTE(marek-denis): Since federation is currently an extension import"},{"line_number":542,"context_line":"        # corresponding modules only when they are really going to be used."},{"line_number":543,"context_line":"        from keystone.federation import idp"},{"line_number":544,"context_line":"        metadata \u003d idp.MetadataGenerator().generate_metadata()"},{"line_number":545,"context_line":"        print(metadata.to_string())"},{"line_number":546,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_6265b4df","line":543,"in_reply_to":"7a2fa921_37a380a0","updated":"2015-10-13 04:41:08.000000000","message":"Done","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a353a69759291627825fd6a02469fe4a9d80c287","unresolved":false,"context_lines":[{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    @classmethod"},{"line_number":600,"context_line":"    def main(cls):"},{"line_number":601,"context_line":"        from keystone.federation import utils as mapping_engine"},{"line_number":602,"context_line":"        if not CONF.command.engine_debug:"},{"line_number":603,"context_line":"            mapping_engine.LOG.logger.setLevel(\u0027WARN\u0027)"},{"line_number":604,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_f7ac288e","line":601,"updated":"2015-10-13 04:21:28.000000000","message":"import normally.","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"16f7a4b723915389a8a1e396fbe86b3977b44e50","unresolved":false,"context_lines":[{"line_number":598,"context_line":""},{"line_number":599,"context_line":"    @classmethod"},{"line_number":600,"context_line":"    def main(cls):"},{"line_number":601,"context_line":"        from keystone.federation import utils as mapping_engine"},{"line_number":602,"context_line":"        if not CONF.command.engine_debug:"},{"line_number":603,"context_line":"            mapping_engine.LOG.logger.setLevel(\u0027WARN\u0027)"},{"line_number":604,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_225fbc0f","line":601,"in_reply_to":"7a2fa921_f7ac288e","updated":"2015-10-13 04:41:08.000000000","message":"Done","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"0a3eaa0232bc6a9d625b92445859e25a706d102d","unresolved":false,"context_lines":[{"line_number":539,"context_line":"    name \u003d \u0027saml_idp_metadata\u0027"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    @staticmethod"},{"line_number":542,"context_line":"    def main():"},{"line_number":543,"context_line":"        metadata \u003d idp.MetadataGenerator().generate_metadata()"},{"line_number":544,"context_line":"        print(metadata.to_string())"},{"line_number":545,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_e230bca0","line":542,"updated":"2015-10-30 01:07:02.000000000","message":"Nice removal!","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"}],"keystone/common/config.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8a6238e18f99bb364e5d519821100d4dc58f1bf1","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                   help\u003d\u0027Duration (in seconds) for the OAuth Access Token.\u0027),"},{"line_number":430,"context_line":"    ],"},{"line_number":431,"context_line":"    \u0027federation\u0027: ["},{"line_number":432,"context_line":"        cfg.BoolOpt(\u0027enabled\u0027,"},{"line_number":433,"context_line":"                    default\u003dTrue,"},{"line_number":434,"context_line":"                    help\u003d\u0027Enable federation functionality.\u0027),"},{"line_number":435,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a26ad4f_5bc5fb39","line":432,"updated":"2015-10-29 02:50:17.000000000","message":"federation is part of the core API, so why are we providing an option to disable? I don\u0027t think we should provide an option to disable it.","commit_id":"6dc9816771950e6a4ce6f1b2f686d57b119b3478"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"bef1f1550ddcbb346bc29e2536dd3e42036589b9","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                   help\u003d\u0027Duration (in seconds) for the OAuth Access Token.\u0027),"},{"line_number":430,"context_line":"    ],"},{"line_number":431,"context_line":"    \u0027federation\u0027: ["},{"line_number":432,"context_line":"        cfg.BoolOpt(\u0027enabled\u0027,"},{"line_number":433,"context_line":"                    default\u003dTrue,"},{"line_number":434,"context_line":"                    help\u003d\u0027Enable federation functionality.\u0027),"},{"line_number":435,"context_line":"        cfg.StrOpt(\u0027driver\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a26ad4f_9ed2a1ff","line":432,"in_reply_to":"1a26ad4f_5bc5fb39","updated":"2015-10-29 03:29:45.000000000","message":"Done","commit_id":"6dc9816771950e6a4ce6f1b2f686d57b119b3478"}],"keystone/contrib/federation/backends/sql.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a353a69759291627825fd6a02469fe4a9d80c287","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from keystone.federation.backends import sql"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"_OLD \u003d \u0027keystone.contrib.federation.backends.sql.Federation\u0027"},{"line_number":24,"context_line":"_NEW \u003d \u0027keystone.federation.backends.sql.Federation\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_37f8607c","line":21,"updated":"2015-10-13 04:21:28.000000000","message":"seems unnecessary.","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"16f7a4b723915389a8a1e396fbe86b3977b44e50","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from keystone.federation.backends import sql"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"_OLD \u003d \u0027keystone.contrib.federation.backends.sql.Federation\u0027"},{"line_number":24,"context_line":"_NEW \u003d \u0027keystone.federation.backends.sql.Federation\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_c27368b3","line":21,"in_reply_to":"7a2fa921_37f8607c","updated":"2015-10-13 04:41:08.000000000","message":"Done","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"6cd1b9ceb462611f574870419edc49c76b8602f4","unresolved":false,"context_lines":[{"line_number":24,"context_line":"_NEW \u003d \u0027keystone.federation.backends.sql.Federation\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class Federation(sql.Federation):"},{"line_number":28,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":29,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":30,"context_line":"                             remove_in\u003d1,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_033f3826","line":27,"updated":"2015-10-12 18:44:22.000000000","message":"Nit: small nit but i think you need a blank line between your class and function definitions.  Idk why pep8 doesn\u0027t look for this.\n\nHere is the link to the doc:\n\n\"Method definitions inside a class are surrounded by a single blank line.\" - \nhttps://www.python.org/dev/peps/pep-0008/#blank-lines\n\nYou don\u0027t have to change this if you don\u0027t want, since pep8 didn\u0027t complain :p","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"16f7a4b723915389a8a1e396fbe86b3977b44e50","unresolved":false,"context_lines":[{"line_number":24,"context_line":"_NEW \u003d \u0027keystone.federation.backends.sql.Federation\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class Federation(sql.Federation):"},{"line_number":28,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":29,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":30,"context_line":"                             remove_in\u003d1,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_826d70ce","line":27,"in_reply_to":"7a2fa921_033f3826","updated":"2015-10-13 04:41:08.000000000","message":"Done","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8a6238e18f99bb364e5d519821100d4dc58f1bf1","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"_OLD \u003d \u0027keystone.contrib.federation.backends.sql.Federation\u0027"},{"line_number":21,"context_line":"_NEW \u003d \u0027keystone.federation.backends.sql.Federation\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class Federation(sql.Federation):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a26ad4f_5b4adbc6","line":21,"updated":"2015-10-29 02:50:17.000000000","message":"change this to just \"sql\" since that\u0027s what they should be using.","commit_id":"6dc9816771950e6a4ce6f1b2f686d57b119b3478"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"bef1f1550ddcbb346bc29e2536dd3e42036589b9","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"_OLD \u003d \u0027keystone.contrib.federation.backends.sql.Federation\u0027"},{"line_number":21,"context_line":"_NEW \u003d \u0027keystone.federation.backends.sql.Federation\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class Federation(sql.Federation):"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a26ad4f_fe01556b","line":21,"in_reply_to":"1a26ad4f_5b4adbc6","updated":"2015-10-29 03:29:45.000000000","message":"Done","commit_id":"6dc9816771950e6a4ce6f1b2f686d57b119b3478"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"0a3eaa0232bc6a9d625b92445859e25a706d102d","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class Federation(sql.Federation):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             remove_in\u003d1,"},{"line_number":28,"context_line":"                             what\u003d_OLD)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_42d0901f","line":25,"updated":"2015-10-30 01:07:02.000000000","message":"Everytime I see this deprecaction approach I love it!!! I heard I should thank Brant for this appoach","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"dd2a677e0c21afd66334ab109b74f54cee33aaf5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             remove_in\u003d1,"},{"line_number":28,"context_line":"                             what\u003d_OLD)"},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a26ad4f_0805d7ba","line":28,"updated":"2015-10-30 01:56:59.000000000","message":"this should be removed in 2","commit_id":"7a82464e6542633b85653026cdfd16ba5e208a3e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bcf351048795ed862fc90dc2417bd7f26f440045","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from keystone.federation.backends import sql"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"_OLD \u003d \u0027keystone.contrib.federation.backends.sql.Federation\u0027"},{"line_number":20,"context_line":"_NEW \u003d \u0027sql\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class Federation(sql.Federation):"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_31264e69","line":20,"updated":"2015-11-03 22:28:13.000000000","message":"I think you should put this in quotes, the message looks weird, \u0027\"sql\"\u0027, or maybe we should change versionutils.deprecated to have an option to quote the values?","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"b8b334bc3ff6af79875d1401c5878686ca32fcf7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from keystone.federation.backends import sql"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"_OLD \u003d \u0027keystone.contrib.federation.backends.sql.Federation\u0027"},{"line_number":20,"context_line":"_NEW \u003d \u0027sql\u0027"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class Federation(sql.Federation):"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_eba298fc","line":20,"in_reply_to":"fa80f949_31264e69","updated":"2015-11-06 13:57:24.000000000","message":"changed to \" \" for now.","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"602e2e1aeb4b1545ec813c66da5d2e702212e113","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class Federation(sql.Federation):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             remove_in\u003d2,"},{"line_number":28,"context_line":"                             what\u003d_OLD)"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_718ff623","line":25,"updated":"2015-11-03 22:29:22.000000000","message":"We already have a message that says\n\n Deprecated: direct import of driver is deprecated as of Liberty in favor\n of entrypoints and may be removed in N.\n\nSo I don\u0027t think we even need this message.","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"b8b334bc3ff6af79875d1401c5878686ca32fcf7","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class Federation(sql.Federation):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             remove_in\u003d2,"},{"line_number":28,"context_line":"                             what\u003d_OLD)"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_abb7b0f3","line":25,"in_reply_to":"fa80f949_718ff623","updated":"2015-11-06 13:57:24.000000000","message":"so you are suggesting removing whole deprecated() decorator, right?","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"01413f33d35b36271740bb6bd69db9d8f8db15fd","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             remove_in\u003d2,"},{"line_number":28,"context_line":"                             what\u003d_OLD)"},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_f682ffc7","line":27,"updated":"2015-11-03 20:56:37.000000000","message":"this is the default, no need to specify it.","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"b8b334bc3ff6af79875d1401c5878686ca32fcf7","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             remove_in\u003d2,"},{"line_number":28,"context_line":"                             what\u003d_OLD)"},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_ab7fb064","line":27,"in_reply_to":"fa80f949_f682ffc7","updated":"2015-11-06 13:57:24.000000000","message":"removed","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"01413f33d35b36271740bb6bd69db9d8f8db15fd","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             remove_in\u003d2,"},{"line_number":28,"context_line":"                             what\u003d_OLD)"},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_b14b212b","line":28,"updated":"2015-11-03 20:56:37.000000000","message":"isn\u0027t this the default? If not that seems like a bug in the wrapper.","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"bcf351048795ed862fc90dc2417bd7f26f440045","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             remove_in\u003d2,"},{"line_number":28,"context_line":"                             what\u003d_OLD)"},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_d1c5825b","line":28,"in_reply_to":"fa80f949_b14b212b","updated":"2015-11-03 22:28:13.000000000","message":"It\u0027s not the default, it just prints __init__() :( So better leave it as is.","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"b8b334bc3ff6af79875d1401c5878686ca32fcf7","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             remove_in\u003d2,"},{"line_number":28,"context_line":"                             what\u003d_OLD)"},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa80f949_0b8fdc75","line":28,"in_reply_to":"fa80f949_d1c5825b","updated":"2015-11-06 13:57:24.000000000","message":"it will stay.","commit_id":"8e4af17502846e09580dc545095d8c2804c8d663"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f434e511361d330722d3dacda4ab72bac1d75c4f","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             what\u003d_OLD)"},{"line_number":28,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":29,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_90944943","line":27,"updated":"2015-11-11 15:45:44.000000000","message":"are we missing a \u0027when\u0027 here? The keystone/contrib/federation/routers.py module says we are removing _OLD in the O release?","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"dd83b99f6683096528aa66abb54adf1949b625cf","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             what\u003d_OLD)"},{"line_number":28,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":29,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba8a016a_a72de047","line":27,"in_reply_to":"da85f559_0bed3125","updated":"2015-11-17 19:30:49.000000000","message":"yeah, i removed when\u003d for being too explicit","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"13feedf11ba91fc2f3a221dd0d27a80884bf7def","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             what\u003d_OLD)"},{"line_number":28,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":29,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_0bed3125","line":27,"in_reply_to":"da85f559_196cf3cc","updated":"2015-11-12 21:41:08.000000000","message":"Makes sense, thanks!","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"ac63f0c8cd620a8e24d884ab4ff9f86bca7ac324","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             what\u003d_OLD)"},{"line_number":28,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":29,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_ae71e945","line":27,"in_reply_to":"da85f559_90944943","updated":"2015-11-11 16:25:32.000000000","message":"2 cycles is the default, that\u0027s why we don\u0027t need to pass the remove_in: https://github.com/openstack/oslo.log/blob/master/oslo_log/versionutils.py#L138","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"68c0547bfee7f67b59668088e128f2ea6a90d75d","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":26,"context_line":"                             in_favor_of\u003d_NEW,"},{"line_number":27,"context_line":"                             what\u003d_OLD)"},{"line_number":28,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":29,"context_line":"        super(Federation, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_196cf3cc","line":27,"in_reply_to":"da85f559_ae71e945","updated":"2015-11-11 20:59:23.000000000","message":"this was removed per the early review comments.","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"}],"keystone/contrib/federation/routers.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"a353a69759291627825fd6a02469fe4a9d80c287","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystone.common import wsgi"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_OLD \u003d \u0027keystone.contrib.federation.routers.FederationExtension\u0027"},{"line_number":22,"context_line":"_NEW \u003d \u0027keystone.federation.routers.Routers\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_d716cca6","line":19,"updated":"2015-10-13 04:21:28.000000000","message":"remove","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"16f7a4b723915389a8a1e396fbe86b3977b44e50","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from keystone.common import wsgi"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"_OLD \u003d \u0027keystone.contrib.federation.routers.FederationExtension\u0027"},{"line_number":22,"context_line":"_NEW \u003d \u0027keystone.federation.routers.Routers\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a2fa921_623e14ba","line":19,"in_reply_to":"7a2fa921_d716cca6","updated":"2015-10-13 04:41:08.000000000","message":"Done","commit_id":"f523dc63de74afa92fef5c9b048b13b1a35bd532"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8a6238e18f99bb364e5d519821100d4dc58f1bf1","unresolved":false,"context_lines":[{"line_number":19,"context_line":"_NEW \u003d \u0027keystone.federation.routers.Routers\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class FederationExtension(wsgi.Middleware):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":25,"context_line":"                             in_favor_of\u003d_NEW,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a26ad4f_fb7087de","line":22,"updated":"2015-10-29 02:50:17.000000000","message":"This middleware shoud now just print out a message saying to remove the federation_extension from the pipeline since the federation extension is already being run.","commit_id":"6dc9816771950e6a4ce6f1b2f686d57b119b3478"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"bef1f1550ddcbb346bc29e2536dd3e42036589b9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"_NEW \u003d \u0027keystone.federation.routers.Routers\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class FederationExtension(wsgi.Middleware):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @versionutils.deprecated(versionutils.deprecated.MITAKA,"},{"line_number":25,"context_line":"                             in_favor_of\u003d_NEW,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a26ad4f_3e64ad47","line":22,"in_reply_to":"1a26ad4f_fb7087de","updated":"2015-10-29 03:29:45.000000000","message":"Done","commit_id":"6dc9816771950e6a4ce6f1b2f686d57b119b3478"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"44fa8934b016485a15df167afc21f5dc70b0a2ea","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":25,"context_line":"        super(FederationExtension, self).__init__(*args, **kwargs)"},{"line_number":26,"context_line":"        msg \u003d (\"Remove federation_extension from the paste pipeline, the \""},{"line_number":27,"context_line":"               \"federation extension is now run by default. Update the \" "},{"line_number":28,"context_line":"               \"[pipeline:api_v3] section in keystone-paste.ini accordingly\")"},{"line_number":29,"context_line":"        versionutils.report_deprecated_feature(LOG, msg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_a2b404d1","line":26,"updated":"2015-10-30 01:27:55.000000000","message":"use _() to mark the message for translation.","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"231ba525f337333adea3b4aa9777af60e3cf53fb","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":25,"context_line":"        super(FederationExtension, self).__init__(*args, **kwargs)"},{"line_number":26,"context_line":"        msg \u003d (\"Remove federation_extension from the paste pipeline, the \""},{"line_number":27,"context_line":"               \"federation extension is now run by default. Update the \" "},{"line_number":28,"context_line":"               \"[pipeline:api_v3] section in keystone-paste.ini accordingly\")"},{"line_number":29,"context_line":"        versionutils.report_deprecated_feature(LOG, msg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_e599a620","line":26,"in_reply_to":"1a26ad4f_a2b404d1","updated":"2015-10-30 01:40:43.000000000","message":"Done","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"44fa8934b016485a15df167afc21f5dc70b0a2ea","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":25,"context_line":"        super(FederationExtension, self).__init__(*args, **kwargs)"},{"line_number":26,"context_line":"        msg \u003d (\"Remove federation_extension from the paste pipeline, the \""},{"line_number":27,"context_line":"               \"federation extension is now run by default. Update the \" "},{"line_number":28,"context_line":"               \"[pipeline:api_v3] section in keystone-paste.ini accordingly\")"},{"line_number":29,"context_line":"        versionutils.report_deprecated_feature(LOG, msg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_02aff881","line":27,"updated":"2015-10-30 01:27:55.000000000","message":"instead of \"run by default\", put \"always available\". Saying that this the default indicates that there\u0027s a way to not run it.","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"231ba525f337333adea3b4aa9777af60e3cf53fb","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":25,"context_line":"        super(FederationExtension, self).__init__(*args, **kwargs)"},{"line_number":26,"context_line":"        msg \u003d (\"Remove federation_extension from the paste pipeline, the \""},{"line_number":27,"context_line":"               \"federation extension is now run by default. Update the \" "},{"line_number":28,"context_line":"               \"[pipeline:api_v3] section in keystone-paste.ini accordingly\")"},{"line_number":29,"context_line":"        versionutils.report_deprecated_feature(LOG, msg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_458bbac3","line":27,"in_reply_to":"1a26ad4f_02aff881","updated":"2015-10-30 01:40:43.000000000","message":"Done","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"44fa8934b016485a15df167afc21f5dc70b0a2ea","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        super(FederationExtension, self).__init__(*args, **kwargs)"},{"line_number":26,"context_line":"        msg \u003d (\"Remove federation_extension from the paste pipeline, the \""},{"line_number":27,"context_line":"               \"federation extension is now run by default. Update the \" "},{"line_number":28,"context_line":"               \"[pipeline:api_v3] section in keystone-paste.ini accordingly\")"},{"line_number":29,"context_line":"        versionutils.report_deprecated_feature(LOG, msg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_e2bafcbf","line":28,"updated":"2015-10-30 01:27:55.000000000","message":"add a . at the end of the sentence.\n\nAlso, this should say that the middleware is going to be removed in the O release.","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"231ba525f337333adea3b4aa9777af60e3cf53fb","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        super(FederationExtension, self).__init__(*args, **kwargs)"},{"line_number":26,"context_line":"        msg \u003d (\"Remove federation_extension from the paste pipeline, the \""},{"line_number":27,"context_line":"               \"federation extension is now run by default. Update the \" "},{"line_number":28,"context_line":"               \"[pipeline:api_v3] section in keystone-paste.ini accordingly\")"},{"line_number":29,"context_line":"        versionutils.report_deprecated_feature(LOG, msg)"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_6586f6ba","line":28,"in_reply_to":"1a26ad4f_e2bafcbf","updated":"2015-10-30 01:40:43.000000000","message":"Done","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"30ddc69ad81429ac3d52e085019ad7ec2a4b4185","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":25,"context_line":"        super(FederationExtension, self).__init__(*args, **kwargs)"},{"line_number":26,"context_line":"        msg \u003d _(\"Remove federation_extension from the paste pipeline, the \""},{"line_number":27,"context_line":"                \"federation extension is now always available. Update the \""},{"line_number":28,"context_line":"                \"[pipeline:api_v3] section in keystone-paste.ini accordingly, \""},{"line_number":29,"context_line":"                \"as it will be removed in the O release.\")"}],"source_content_type":"text/x-python","patch_set":25,"id":"1a26ad4f_53d0601f","line":26,"updated":"2015-10-30 02:36:13.000000000","message":"_ needs to be imported.\n\nThere should be a unit tests that uses this part because this should have failed.","commit_id":"39829d79e4f9cbea2fb2c480b529728a95ef0b5e"}],"keystone/federation/backends/sql.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"67edd512e4e2ef74d0476e5b0ff39f347f73df01","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_serialization import jsonutils"},{"line_number":16,"context_line":"from sqlalchemy import orm"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from keystone.common import sql"},{"line_number":19,"context_line":"from keystone import exception"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_61005435","line":16,"updated":"2015-10-14 09:13:17.000000000","message":"Good catch :)","commit_id":"e2b0ea36fff7cab673a2f3d96342f99f849e8a9b"}],"keystone/federation/routers.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"67edd512e4e2ef74d0476e5b0ff39f347f73df01","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"build_resource_relation \u003d functools.partial("},{"line_number":21,"context_line":"    json_home.build_v3_extension_resource_relation,"},{"line_number":22,"context_line":"    extension_name\u003d\u0027OS-FEDERATION\u0027, extension_version\u003d\u00271.0\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"build_parameter_relation \u003d functools.partial("},{"line_number":25,"context_line":"    json_home.build_v3_extension_parameter_relation,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_616b741f","line":22,"updated":"2015-10-14 09:13:17.000000000","message":"I am wondering we might need change this \nfunctools.partial(json_home.build_v3_resource_relation,\nresource_name\u003d\u0027OS-FEDERATION\u0027) since this no longer a extension","commit_id":"e2b0ea36fff7cab673a2f3d96342f99f849e8a9b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"9c3b09ffee40e369b7f1a2f0295d9f2f9fa88ebd","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"build_resource_relation \u003d functools.partial("},{"line_number":21,"context_line":"    json_home.build_v3_extension_resource_relation,"},{"line_number":22,"context_line":"    extension_name\u003d\u0027OS-FEDERATION\u0027, extension_version\u003d\u00271.0\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"build_parameter_relation \u003d functools.partial("},{"line_number":25,"context_line":"    json_home.build_v3_extension_parameter_relation,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_93038573","line":22,"in_reply_to":"5a2ca52d_616b741f","updated":"2015-10-14 09:47:36.000000000","message":"remove these and add rel\u003djson_home.build_v3_resource_relation(\u0027...\u0027) below.","commit_id":"e2b0ea36fff7cab673a2f3d96342f99f849e8a9b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a3c125ed811754a2b52e10fe6a0406c7ee399f31","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"build_resource_relation \u003d functools.partial("},{"line_number":21,"context_line":"    json_home.build_v3_extension_resource_relation,"},{"line_number":22,"context_line":"    extension_name\u003d\u0027OS-FEDERATION\u0027, extension_version\u003d\u00271.0\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"build_parameter_relation \u003d functools.partial("},{"line_number":25,"context_line":"    json_home.build_v3_extension_parameter_relation,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_f735f845","line":22,"in_reply_to":"5a2ca52d_93038573","updated":"2015-10-14 14:13:23.000000000","message":"@davechen, the actual path/route can\u0027t change, as that is part of the published API :(\n\nwe are moving these around so that 1) things are no longer in contrib, 2) they are included by default, can\u0027t be removed by default, 3) database migrations are run automatically.\n\nunforunately, we can\u0027t change the paths to be /v3/OS-FEDERATION/\u003cresource\u003e to just /v3/resource","commit_id":"e2b0ea36fff7cab673a2f3d96342f99f849e8a9b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"8ae1d5a17206989ad541485c3d52e07d5f2b4c00","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"build_resource_relation \u003d functools.partial("},{"line_number":21,"context_line":"    json_home.build_v3_extension_resource_relation,"},{"line_number":22,"context_line":"    extension_name\u003d\u0027OS-FEDERATION\u0027, extension_version\u003d\u00271.0\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"build_parameter_relation \u003d functools.partial("},{"line_number":25,"context_line":"    json_home.build_v3_extension_parameter_relation,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_43fdf738","line":22,"in_reply_to":"5a2ca52d_f735f845","updated":"2015-10-15 00:42:07.000000000","message":"I was just thinking we should use \"build_v3_resource_relation\" instead of \"build_v3_extension_resource_relation\" since there is \"3/ext\" in the url which still looks like extension.\n\nsorry!","commit_id":"e2b0ea36fff7cab673a2f3d96342f99f849e8a9b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"67edd512e4e2ef74d0476e5b0ff39f347f73df01","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    extension_name\u003d\u0027OS-FEDERATION\u0027, extension_version\u003d\u00271.0\u0027)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"build_parameter_relation \u003d functools.partial("},{"line_number":25,"context_line":"    json_home.build_v3_extension_parameter_relation,"},{"line_number":26,"context_line":"    extension_name\u003d\u0027OS-FEDERATION\u0027, extension_version\u003d\u00271.0\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"IDP_ID_PARAMETER_RELATION \u003d build_parameter_relation(parameter_name\u003d\u0027idp_id\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_dc9a6f14","line":25,"updated":"2015-10-14 09:13:17.000000000","message":"aslo apply here.","commit_id":"e2b0ea36fff7cab673a2f3d96342f99f849e8a9b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"b81ae2d25c4408832cdad48a301c52f5a54ee045","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        POST /auth/OS-FEDERATION/websso/{protocol_id}"},{"line_number":91,"context_line":"             ?origin\u003dhttps%3A//horizon.example.com"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    \"\"\""},{"line_number":94,"context_line":"    def _construct_url(self, suffix):"},{"line_number":95,"context_line":"        return \"/OS-FEDERATION/%s\" % suffix"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"1a26ad4f_a85ce3ed","line":93,"updated":"2015-10-30 01:57:10.000000000","message":"D204  1 blank line required after class docstring","commit_id":"7a82464e6542633b85653026cdfd16ba5e208a3e"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"ac63f0c8cd620a8e24d884ab4ff9f86bca7ac324","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    The API looks like::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        PUT /OS-FEDERATION/identity_providers/{idp_id}"},{"line_number":40,"context_line":"        GET /OS-FEDERATION/identity_providers"},{"line_number":41,"context_line":"        GET /OS-FEDERATION/identity_providers/{idp_id}"},{"line_number":42,"context_line":"        DELETE /OS-FEDERATION/identity_providers/{idp_id}"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_eef7f188","line":39,"updated":"2015-11-11 16:25:32.000000000","message":"Just a doubt, Are the API calls still keeping the \"OS-FEDERATION\" ?","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"dd83b99f6683096528aa66abb54adf1949b625cf","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    The API looks like::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        PUT /OS-FEDERATION/identity_providers/{idp_id}"},{"line_number":40,"context_line":"        GET /OS-FEDERATION/identity_providers"},{"line_number":41,"context_line":"        GET /OS-FEDERATION/identity_providers/{idp_id}"},{"line_number":42,"context_line":"        DELETE /OS-FEDERATION/identity_providers/{idp_id}"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba8a016a_6727f864","line":39,"in_reply_to":"da85f559_79a73f0b","updated":"2015-11-17 19:30:49.000000000","message":"yep!","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"68c0547bfee7f67b59668088e128f2ea6a90d75d","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    The API looks like::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        PUT /OS-FEDERATION/identity_providers/{idp_id}"},{"line_number":40,"context_line":"        GET /OS-FEDERATION/identity_providers"},{"line_number":41,"context_line":"        GET /OS-FEDERATION/identity_providers/{idp_id}"},{"line_number":42,"context_line":"        DELETE /OS-FEDERATION/identity_providers/{idp_id}"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_79a73f0b","line":39,"in_reply_to":"da85f559_eef7f188","updated":"2015-11-11 20:59:23.000000000","message":"I think this was for backward-compatibility.","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"}],"keystone/models/token_model.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"53a6b3e3b6a3cd97d80c4a191d3aa2274f49c04a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from keystone import exception"},{"line_number":21,"context_line":"from keystone.i18n import _"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"OS_FEDERATION \u003d \u0027OS-FEDERATION\u0027"},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"# supported token versions"},{"line_number":26,"context_line":"V2 \u003d \u0027v2.0\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a29b11f_c113835b","line":23,"updated":"2015-10-19 08:26:39.000000000","message":"nit: this could go to keystone.federation.constants","commit_id":"b7b3cef4a4e2e3296969347ef7272fa3b72a5981"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f434e511361d330722d3dacda4ab72bac1d75c4f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_utils import timeutils"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from keystone.contrib.federation import constants as federation_constants"},{"line_number":21,"context_line":"from keystone import exception"},{"line_number":22,"context_line":"from keystone.i18n import _"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_4b15d0e2","side":"PARENT","line":20,"updated":"2015-11-11 15:45:44.000000000","message":"can\u0027t we still use these: \n\n    from keystone.federation import constants as federation_constants","commit_id":"9ee582a48c15835bfa7de8e2b543ce58a37fbe6c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f434e511361d330722d3dacda4ab72bac1d75c4f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from keystone import exception"},{"line_number":21,"context_line":"from keystone.i18n import _"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"OS_FEDERATION \u003d \u0027OS-FEDERATION\u0027"},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"# supported token versions"},{"line_number":26,"context_line":"V2 \u003d \u0027v2.0\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_abda3c49","line":23,"updated":"2015-11-11 15:45:44.000000000","message":"this is already a constant somewhere else: \n\nhttps://github.com/openstack/keystone/blob/6500f81de25decce76413425371685cb3ef15a6a/keystone/contrib/federation/constants.py#L13","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"dd83b99f6683096528aa66abb54adf1949b625cf","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from keystone import exception"},{"line_number":21,"context_line":"from keystone.i18n import _"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"OS_FEDERATION \u003d \u0027OS-FEDERATION\u0027"},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"# supported token versions"},{"line_number":26,"context_line":"V2 \u003d \u0027v2.0\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"ba8a016a_471d140e","line":23,"in_reply_to":"da85f559_8bc0417e","updated":"2015-11-17 19:30:49.000000000","message":"i\u0027ll add a comment","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"ac63f0c8cd620a8e24d884ab4ff9f86bca7ac324","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from keystone import exception"},{"line_number":21,"context_line":"from keystone.i18n import _"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"OS_FEDERATION \u003d \u0027OS-FEDERATION\u0027"},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"# supported token versions"},{"line_number":26,"context_line":"V2 \u003d \u0027v2.0\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_6ef54155","line":23,"in_reply_to":"da85f559_abda3c49","updated":"2015-11-11 16:25:32.000000000","message":"++","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"13feedf11ba91fc2f3a221dd0d27a80884bf7def","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from keystone import exception"},{"line_number":21,"context_line":"from keystone.i18n import _"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"OS_FEDERATION \u003d \u0027OS-FEDERATION\u0027"},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":"# supported token versions"},{"line_number":26,"context_line":"V2 \u003d \u0027v2.0\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_8bc0417e","line":23,"in_reply_to":"da85f559_abda3c49","updated":"2015-11-12 21:41:08.000000000","message":"Same comment as previous.","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f434e511361d330722d3dacda4ab72bac1d75c4f","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    @property"},{"line_number":297,"context_line":"    def is_federated_user(self):"},{"line_number":298,"context_line":"        try:"},{"line_number":299,"context_line":"            return (self.version is V3 and OS_FEDERATION in self[\u0027user\u0027])"},{"line_number":300,"context_line":"        except KeyError:"},{"line_number":301,"context_line":"            raise exception.UnexpectedError()"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_4becf0f2","line":299,"updated":"2015-11-11 15:45:44.000000000","message":"use the constant from the federation extension.","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"dd83b99f6683096528aa66abb54adf1949b625cf","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    @property"},{"line_number":297,"context_line":"    def is_federated_user(self):"},{"line_number":298,"context_line":"        try:"},{"line_number":299,"context_line":"            return (self.version is V3 and OS_FEDERATION in self[\u0027user\u0027])"},{"line_number":300,"context_line":"        except KeyError:"},{"line_number":301,"context_line":"            raise exception.UnexpectedError()"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"ba8a016a_07170cee","line":299,"in_reply_to":"da85f559_4becf0f2","updated":"2015-11-17 19:30:49.000000000","message":"same deal","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"}],"keystone/tests/unit/test_v3_federation.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"44fa8934b016485a15df167afc21f5dc70b0a2ea","unresolved":false,"context_lines":[{"line_number":3076,"context_line":"               \u0027relay_state_prefix\u0027, \u0027sp_url\u0027]"},{"line_number":3077,"context_line":""},{"line_number":3078,"context_line":"    def setUp(self):"},{"line_number":3079,"context_line":"        super(test_v3.RestfulTestCase, self).setUp()"},{"line_number":3080,"context_line":"        # Add a Service Provider"},{"line_number":3081,"context_line":"        url \u003d self.base_url(suffix\u003dself.SERVICE_PROVIDER_ID)"},{"line_number":3082,"context_line":"        self.SP_REF \u003d self.sp_ref()"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_02fe1837","line":3079,"updated":"2015-10-30 01:27:55.000000000","message":"This should be ServiceProviderTests","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"231ba525f337333adea3b4aa9777af60e3cf53fb","unresolved":false,"context_lines":[{"line_number":3076,"context_line":"               \u0027relay_state_prefix\u0027, \u0027sp_url\u0027]"},{"line_number":3077,"context_line":""},{"line_number":3078,"context_line":"    def setUp(self):"},{"line_number":3079,"context_line":"        super(test_v3.RestfulTestCase, self).setUp()"},{"line_number":3080,"context_line":"        # Add a Service Provider"},{"line_number":3081,"context_line":"        url \u003d self.base_url(suffix\u003dself.SERVICE_PROVIDER_ID)"},{"line_number":3082,"context_line":"        self.SP_REF \u003d self.sp_ref()"}],"source_content_type":"text/x-python","patch_set":21,"id":"1a26ad4f_65511662","line":3079,"in_reply_to":"1a26ad4f_02fe1837","updated":"2015-10-30 01:40:43.000000000","message":"Done","commit_id":"b93b7c6064297b07cc02ce31b05ebfbbf928c31d"}],"keystone/version/service.py":[{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"ac63f0c8cd620a8e24d884ab4ff9f86bca7ac324","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    # NOTE(dstanek): Routers should be ordered by their frequency of use in"},{"line_number":125,"context_line":"    # a live system. This is due to the routes implementation. The most"},{"line_number":126,"context_line":"    # frequently used routers should appear first."},{"line_number":127,"context_line":"    router_modules \u003d [auth,"},{"line_number":128,"context_line":"                      assignment,"},{"line_number":129,"context_line":"                      catalog,"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_4e339d14","line":126,"updated":"2015-11-11 16:25:32.000000000","message":"Off-patch question: Is the code ok with this comment? Is it in alphabetic order or is it just a coincidence?","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"68c0547bfee7f67b59668088e128f2ea6a90d75d","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    # NOTE(dstanek): Routers should be ordered by their frequency of use in"},{"line_number":125,"context_line":"    # a live system. This is due to the routes implementation. The most"},{"line_number":126,"context_line":"    # frequently used routers should appear first."},{"line_number":127,"context_line":"    router_modules \u003d [auth,"},{"line_number":128,"context_line":"                      assignment,"},{"line_number":129,"context_line":"                      catalog,"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_d96bcb83","line":126,"in_reply_to":"da85f559_4e339d14","updated":"2015-11-11 20:59:23.000000000","message":"most requently used routers should appear first?","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"13feedf11ba91fc2f3a221dd0d27a80884bf7def","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    # NOTE(dstanek): Routers should be ordered by their frequency of use in"},{"line_number":125,"context_line":"    # a live system. This is due to the routes implementation. The most"},{"line_number":126,"context_line":"    # frequently used routers should appear first."},{"line_number":127,"context_line":"    router_modules \u003d [auth,"},{"line_number":128,"context_line":"                      assignment,"},{"line_number":129,"context_line":"                      catalog,"}],"source_content_type":"text/x-python","patch_set":31,"id":"da85f559_8b47e11c","line":126,"in_reply_to":"da85f559_d96bcb83","updated":"2015-11-12 21:41:08.000000000","message":"Yes, we don\u0027t order them alphabetically for that reason.","commit_id":"9e762e1aae6763c203fcb621c702f4d4c50ec074"}]}
