)]}'
{"openstackclient/identity/v3/unscoped_saml.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c0af41c76c84b09308104c2884701e115ab3e666","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027, parsed_args)"},{"line_number":101,"context_line":"        session \u003d self.app.client_manager.identity.session"},{"line_number":102,"context_line":"        token \u003d session.auth.get_token(session)"},{"line_number":103,"context_line":"        return [(\u0027token\u0027,),"},{"line_number":104,"context_line":"                (token,)]"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9df570_9f2ec3a3","line":103,"updated":"2014-09-28 20:53:57.000000000","message":"one line please!","commit_id":"4a7a284bbd7b86b55b72e9da9f6ee50c0c32a81b"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"43130e69da7002753e9991d4c80e99708a286e5d","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListAccessibleProjects\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def get_parser(self, prog_name):"},{"line_number":51,"context_line":"        parser \u003d super(ListAccessibleProjects, self).get_parser(prog_name)"},{"line_number":52,"context_line":"        return parser"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_fc56ae29","line":50,"updated":"2014-10-09 19:54:00.000000000","message":"this can be omitted if nothing is added to the base parser.\n\nsame below","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"f01a5245cd082abaa4ad2f2d7662810901cce6eb","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListAccessibleProjects\u0027)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def get_parser(self, prog_name):"},{"line_number":51,"context_line":"        parser \u003d super(ListAccessibleProjects, self).get_parser(prog_name)"},{"line_number":52,"context_line":"        return parser"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_c2e10400","line":50,"in_reply_to":"baa201ad_fc56ae29","updated":"2014-10-09 20:18:55.000000000","message":"Done","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"43130e69da7002753e9991d4c80e99708a286e5d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                ) for s in data))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class ListAccessibleDomains(lister.Lister):"},{"line_number":68,"context_line":"    \"\"\"List accessible domains\"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListAccessibleDomains\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_1c7d32b2","line":67,"updated":"2014-10-09 19:54:00.000000000","message":"Sort these in alpha order","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"f01a5245cd082abaa4ad2f2d7662810901cce6eb","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                ) for s in data))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"class ListAccessibleDomains(lister.Lister):"},{"line_number":68,"context_line":"    \"\"\"List accessible domains\"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.ListAccessibleDomains\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_02e30c06","line":67,"in_reply_to":"baa201ad_1c7d32b2","updated":"2014-10-09 20:18:55.000000000","message":"Done","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7f00bf3f586708408bbbeab726b275e859a6b5a6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from cliff import lister"},{"line_number":23,"context_line":"from cliff import show"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from keystoneclient.contrib.auth.v3 import saml2"},{"line_number":26,"context_line":"from openstackclient.common import exceptions"},{"line_number":27,"context_line":"from openstackclient.common import utils"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_f1f4975c","line":25,"updated":"2014-10-15 08:23:04.000000000","message":"this should be grouped with the 3rd party imports","commit_id":"8ee37563cfbff6de3aef15f615949b5d09014885"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"b4a6e0c2ada124784f70c5b4fdf58a0971912f33","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def auth_with_unscoped_saml(func):"},{"line_number":31,"context_line":"    \"\"\"check the unscoped federated context\"\"\""},{"line_number":32,"context_line":"    def _decorated(self, parsed_args):"},{"line_number":33,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":34,"context_line":"        auth_method_class \u003d identity_client.session.auth._auth_method_class"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_e9c75d96","line":31,"updated":"2014-10-14 21:09:08.000000000","message":"Capitalize Check","commit_id":"8ee37563cfbff6de3aef15f615949b5d09014885"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"b4a6e0c2ada124784f70c5b4fdf58a0971912f33","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"class UnscopedToken(show.ShowOne):"},{"line_number":82,"context_line":"    \"\"\"Grab unscoped token for authentication with v3scopedsaml auth method\"\"\""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.UnscopedToken\u0027)"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_89e1712c","line":82,"updated":"2014-10-14 21:09:08.000000000","message":"This is a really long help string...how about\n\n  \"\"\"Issue unscoped SAML token\"\"\"","commit_id":"8ee37563cfbff6de3aef15f615949b5d09014885"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"358888ae1afca038745a4acd7ddf3cb26e4e9520","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    \"\"\"Check the unscoped federated context\"\"\""},{"line_number":31,"context_line":"    def _decorated(self, parsed_args):"},{"line_number":32,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":33,"context_line":"        auth_method_class \u003d identity_client.session.auth._auth_method_class"},{"line_number":34,"context_line":"        if auth_method_class \u003d\u003d saml2.Saml2UnscopedTokenAuthMethod:"},{"line_number":35,"context_line":"            return func(self, parsed_args)"},{"line_number":36,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aa7fdbe_371fee5c","line":33,"updated":"2014-10-23 18:15:11.000000000","message":"Since the current session is now a top-level ClientManager attribute, it would be more future-proof to use it directly here.  \n\n  self.app.client_manager.session.auth...\n\nAlso, is peeking at a \u0027private\u0027 attribute the Right Thing here?   https://review.openstack.org/#/c/130310/ introduces a new ClientManager._auth_plugin_name attribute that would be safer to use as it wouldn\u0027t be digging into the auth plugins and using an attribute that Jamie assumes really is private.  I can make _auth_plugin_name a public attribute if you would use it.","commit_id":"9cfe3dfa55de2d8f27da8c3e0e45ff8871e7b6a3"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"86fc4c0c35582c694018a14ceb4430bba2f6428b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    \"\"\"Check the unscoped federated context\"\"\""},{"line_number":31,"context_line":"    def _decorated(self, parsed_args):"},{"line_number":32,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":33,"context_line":"        auth_method_class \u003d identity_client.session.auth._auth_method_class"},{"line_number":34,"context_line":"        if auth_method_class \u003d\u003d saml2.Saml2UnscopedTokenAuthMethod:"},{"line_number":35,"context_line":"            return func(self, parsed_args)"},{"line_number":36,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aa7fdbe_80121255","line":33,"in_reply_to":"9aa7fdbe_371fee5c","updated":"2014-10-23 20:31:42.000000000","message":"++, I wasn\u0027t satisfied with this way of checking the auth method, and I\u0027ll be able to discard the import of saml2, and therefore the dependency on lxml to please stevemar :)","commit_id":"9cfe3dfa55de2d8f27da8c3e0e45ff8871e7b6a3"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b39b0ce16ea3d0acf9a38ef53f4f3dea64799fdf","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    \"\"\"Check the unscoped federated context\"\"\""},{"line_number":31,"context_line":"    def _decorated(self, parsed_args):"},{"line_number":32,"context_line":"        identity_client \u003d self.app.client_manager.identity"},{"line_number":33,"context_line":"        auth_method_class \u003d identity_client.session.auth._auth_method_class"},{"line_number":34,"context_line":"        if auth_method_class \u003d\u003d saml2.Saml2UnscopedTokenAuthMethod:"},{"line_number":35,"context_line":"            return func(self, parsed_args)"},{"line_number":36,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"9aa7fdbe_8095b288","line":33,"in_reply_to":"9aa7fdbe_80121255","updated":"2014-10-23 20:41:25.000000000","message":"that would make me so happy :)","commit_id":"9cfe3dfa55de2d8f27da8c3e0e45ff8871e7b6a3"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"5b8d8f4a03af5d8e3dc5205732cf8bb41255abe7","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        else:"},{"line_number":35,"context_line":"            msg \u003d (\u0027This command requires the use of the unscoped SAML \u0027"},{"line_number":36,"context_line":"                   \u0027authentication plugin. Please use argument \u0027"},{"line_number":37,"context_line":"                   \u0027--os-auth-plugin\u003dv3unscopedsaml\u0027)"},{"line_number":38,"context_line":"            raise exceptions.CommandError(msg)"},{"line_number":39,"context_line":"    return _decorated"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"7a8c0949_8b3b97ea","line":37,"updated":"2014-10-30 16:01:20.000000000","message":"do we want to hardcode plugins\u0027 names here? IMHO it\u0027s likey they will change soon.\nBesides as of today you have two ways (depending on IdP impl  you use) to get and unscoped token: One is for Shibboleth impl and another for ADFS.\nSuggested to changing to somethling like:\n\n\"Please use argument --os-auth-plugin with corresponding auth plugin\"","commit_id":"551328d230cff80e11c7cd656ac20f1648ebbc47"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"a8f2c5edafdbe10ae2b375d100dd15ac4caa1e91","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from openstackclient.common import utils"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"UNSCOPED_AUTH_PLUGINS \u003d [\u0027v3unscopedsaml\u0027, \u0027v3unscopedadfs\u0027]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def auth_with_unscoped_saml(func):"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a8c0949_d11f1008","line":28,"updated":"2014-10-30 16:33:02.000000000","message":"not super happy with the fact that we will need to keep it updated with changes in keystoneclient, but let\u0027s stick to that for now.","commit_id":"631ed3c8026e6b4539e7a8bf4adb8d2a7239b36a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3a830af04497a579c0d28dab586d0578af6fa2d6","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from openstackclient.common import utils"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"UNSCOPED_AUTH_PLUGINS \u003d [\u0027v3unscopedsaml\u0027, \u0027v3unscopedadfs\u0027]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def auth_with_unscoped_saml(func):"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a8c0949_06c4f990","line":28,"in_reply_to":"7a8c0949_d11f1008","updated":"2014-10-30 17:31:20.000000000","message":"i\u0027m also ok with that for now","commit_id":"631ed3c8026e6b4539e7a8bf4adb8d2a7239b36a"}],"openstackclient/shell.py":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"43130e69da7002753e9991d4c80e99708a286e5d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            self.dump_stack_trace \u003d True"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def run(self, argv):"},{"line_number":158,"context_line":"        options, subcommand \u003d self.parser.parse_known_args(argv)"},{"line_number":159,"context_line":"        # commands starting with \"federated\" can only be used with the"},{"line_number":160,"context_line":"        # v3unscopedsaml authentication method"},{"line_number":161,"context_line":"        if subcommand:"}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_3c7836f8","line":158,"updated":"2014-10-09 19:54:00.000000000","message":"This belongs in prepare_to_run_command(), but not in this exact form.\n\nWe already have a command attribute auth_required, we could either change that to hold a value or add an additional attribute to list the acceptable forms?","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"f01a5245cd082abaa4ad2f2d7662810901cce6eb","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            self.dump_stack_trace \u003d True"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def run(self, argv):"},{"line_number":158,"context_line":"        options, subcommand \u003d self.parser.parse_known_args(argv)"},{"line_number":159,"context_line":"        # commands starting with \"federated\" can only be used with the"},{"line_number":160,"context_line":"        # v3unscopedsaml authentication method"},{"line_number":161,"context_line":"        if subcommand:"}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_e293685a","line":158,"in_reply_to":"baa201ad_3c7836f8","updated":"2014-10-09 20:18:55.000000000","message":"I feel it should be addressed in another patch but I am okay with doing it here.","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"43130e69da7002753e9991d4c80e99708a286e5d","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        # v3unscopedsaml authentication method"},{"line_number":161,"context_line":"        if subcommand:"},{"line_number":162,"context_line":"            if (options.os_auth_plugin !\u003d \u0027v3unscopedsaml\u0027 and"},{"line_number":163,"context_line":"               subcommand[0] \u003d\u003d \u0027federated\u0027):"},{"line_number":164,"context_line":"                raise exc.CommandError("},{"line_number":165,"context_line":"                    \"%s can only be used with the v3unscopedsaml\""},{"line_number":166,"context_line":"                    \" authentication method\" % \" \".join(subcommand))"}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_bc6b461e","line":163,"updated":"2014-10-09 19:54:00.000000000","message":"relaying on the command name is too fragile...","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"f01a5245cd082abaa4ad2f2d7662810901cce6eb","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        # v3unscopedsaml authentication method"},{"line_number":161,"context_line":"        if subcommand:"},{"line_number":162,"context_line":"            if (options.os_auth_plugin !\u003d \u0027v3unscopedsaml\u0027 and"},{"line_number":163,"context_line":"               subcommand[0] \u003d\u003d \u0027federated\u0027):"},{"line_number":164,"context_line":"                raise exc.CommandError("},{"line_number":165,"context_line":"                    \"%s can only be used with the v3unscopedsaml\""},{"line_number":166,"context_line":"                    \" authentication method\" % \" \".join(subcommand))"}],"source_content_type":"text/x-python","patch_set":13,"id":"baa201ad_62b938ec","line":163,"in_reply_to":"baa201ad_bc6b461e","updated":"2014-10-09 20:18:55.000000000","message":"Done","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"b4a6e0c2ada124784f70c5b4fdf58a0971912f33","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            # --debug forces traceback"},{"line_number":155,"context_line":"            self.dump_stack_trace \u003d True"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def run(self, argv):"},{"line_number":158,"context_line":"        try:"},{"line_number":159,"context_line":"            return super(OpenStackShell, self).run(argv)"},{"line_number":160,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_29cfa580","side":"PARENT","line":157,"updated":"2014-10-14 21:09:08.000000000","message":"This is not how this needs to work.  First off, there should be no hard-coded command strings here.\n\nIn general, restricting a command to a specific auth type is an attribute of the command so let\u0027s make it that.  Have a look at OpenStackShell.__init__() where command.Command.auth_required is set, add a similar attribute for auth type, it should probably be a list of the known allowed types if set.  Default it there to None.\n\nIn each command that has a restriction, set the attribute to the allowed auth type.  See common/modules.py ListModule for an example.\n\nThen check the command attribute in prepare_to_run_command() between the auth_required and best_effort checks.","commit_id":"79a9331f95979c4ca3c2b8f8bcda7b5d6ef0ddd9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c415cfbb8cbd451d77a0a1ac10043ce39696d24f","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                self.client_manager.auth_ref"},{"line_number":316,"context_line":"            except Exception:"},{"line_number":317,"context_line":"                pass"},{"line_number":318,"context_line":"        if getattr(cmd, \u0027auth_plugins_required\u0027):"},{"line_number":319,"context_line":"            auth_plugin \u003d self.client_manager.auth_plugin_name"},{"line_number":320,"context_line":"            if auth_plugin not in cmd.auth_plugins_required:"},{"line_number":321,"context_line":"                msg \u003d (\u0027This command requires the use of a specific \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"9aa7fdbe_9cc06d51","line":318,"updated":"2014-10-28 05:06:48.000000000","message":"i feel this is overkill, and that the decorator handles it well enough, if we run into another plugin specific command we can re-evaluate introducing this again, or enhancing the decorator. suggest removing the auth_plugins_required bits, and using the decorator.","commit_id":"357c59c98b5aac683b59f9634f11da30661b48e0"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"35395ee12c048d748f503227ef7627dd840a8927","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                self.client_manager.auth_ref"},{"line_number":316,"context_line":"            except Exception:"},{"line_number":317,"context_line":"                pass"},{"line_number":318,"context_line":"        if getattr(cmd, \u0027auth_plugins_required\u0027):"},{"line_number":319,"context_line":"            auth_plugin \u003d self.client_manager.auth_plugin_name"},{"line_number":320,"context_line":"            if auth_plugin not in cmd.auth_plugins_required:"},{"line_number":321,"context_line":"                msg \u003d (\u0027This command requires the use of a specific \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"9aa7fdbe_285c9b4a","line":318,"in_reply_to":"9aa7fdbe_9cc06d51","updated":"2014-10-28 09:45:27.000000000","message":"I agree that one of the checks should go. I kind of prefer the decorator approach for the reason you mention, but this approach here has the advantage of being triggered before actual authentication, so it\u0027s slightly faster.\n@Dean Troyer, WDYT ?","commit_id":"357c59c98b5aac683b59f9634f11da30661b48e0"}],"openstackclient/tests/identity/v3/test_unscoped_saml.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c0af41c76c84b09308104c2884701e115ab3e666","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 CERN."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9df570_5f28db99","line":1,"updated":"2014-09-28 20:53:57.000000000","message":"why copyright to CERN?","commit_id":"4a7a284bbd7b86b55b72e9da9f6ee50c0c32a81b"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"a540a9910285625bc1dc747a5751b75a58285389","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#   Copyright 2014 CERN."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#   Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#   not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"baa201ad_d01c7c6d","line":1,"in_reply_to":"da9df570_5f28db99","updated":"2014-09-28 23:14:32.000000000","message":"Because I copy/paste licenses a bit too hastily ? :) Done","commit_id":"4a7a284bbd7b86b55b72e9da9f6ee50c0c32a81b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3045a513c20a717a8204b9766bdccef7cae51bba","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import copy"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystoneclient.contrib.auth.v3 import saml2"},{"line_number":16,"context_line":"from openstackclient.common import exceptions"},{"line_number":17,"context_line":"from openstackclient.identity.v3 import unscoped_saml"},{"line_number":18,"context_line":"from openstackclient.tests import fakes"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_b1292f9d","line":15,"updated":"2014-10-15 08:27:47.000000000","message":"i think this line is what\u0027s bringing in the need of lxml as a dependency, anyway we can fake this out?","commit_id":"8ee37563cfbff6de3aef15f615949b5d09014885"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7f00bf3f586708408bbbeab726b275e859a6b5a6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import copy"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystoneclient.contrib.auth.v3 import saml2"},{"line_number":16,"context_line":"from openstackclient.common import exceptions"},{"line_number":17,"context_line":"from openstackclient.identity.v3 import unscoped_saml"},{"line_number":18,"context_line":"from openstackclient.tests import fakes"},{"line_number":19,"context_line":"from openstackclient.tests.identity.v3 import fakes as identity_fakes"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_119d9b0a","line":16,"updated":"2014-10-15 08:23:04.000000000","message":"add a new line between 15 and 16","commit_id":"8ee37563cfbff6de3aef15f615949b5d09014885"}],"requirements.txt":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c0af41c76c84b09308104c2884701e115ab3e666","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# of appearance. Changing the order has an impact on the overall integration"},{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":"cliff\u003e\u003d1.7.0  # Apache-2.0"},{"line_number":5,"context_line":"lxml\u003e\u003d2.3"},{"line_number":6,"context_line":"oslo.i18n\u003e\u003d1.0.0  # Apache-2.0"},{"line_number":7,"context_line":"oslo.utils\u003e\u003d1.0.0                       # Apache-2.0"},{"line_number":8,"context_line":"pbr\u003e\u003d0.6,!\u003d0.7,\u003c1.0"}],"source_content_type":"text/plain","patch_set":6,"id":"da9df570_7f23dfbc","line":5,"updated":"2014-09-28 20:53:57.000000000","message":"is this used? I\u0027m not seeing it anywhere in the code.","commit_id":"4a7a284bbd7b86b55b72e9da9f6ee50c0c32a81b"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"79fe8e0b70fd680bd4331dd060d2e0d45b6195f5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# of appearance. Changing the order has an impact on the overall integration"},{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":"cliff\u003e\u003d1.7.0  # Apache-2.0"},{"line_number":5,"context_line":"lxml\u003e\u003d2.3"},{"line_number":6,"context_line":"oslo.i18n\u003e\u003d1.0.0  # Apache-2.0"},{"line_number":7,"context_line":"oslo.utils\u003e\u003d1.0.0                       # Apache-2.0"},{"line_number":8,"context_line":"pbr\u003e\u003d0.6,!\u003d0.7,\u003c1.0"}],"source_content_type":"text/plain","patch_set":6,"id":"baa201ad_b05a984e","line":5,"in_reply_to":"baa201ad_102604bb","updated":"2014-09-29 01:24:14.000000000","message":"probably because it\u0027s in test-requirements.txt for python-keystoneclient, which aren\u0027t installed, and treated as optional. I suggest we do the same in this case.","commit_id":"4a7a284bbd7b86b55b72e9da9f6ee50c0c32a81b"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"a540a9910285625bc1dc747a5751b75a58285389","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# of appearance. Changing the order has an impact on the overall integration"},{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":"cliff\u003e\u003d1.7.0  # Apache-2.0"},{"line_number":5,"context_line":"lxml\u003e\u003d2.3"},{"line_number":6,"context_line":"oslo.i18n\u003e\u003d1.0.0  # Apache-2.0"},{"line_number":7,"context_line":"oslo.utils\u003e\u003d1.0.0                       # Apache-2.0"},{"line_number":8,"context_line":"pbr\u003e\u003d0.6,!\u003d0.7,\u003c1.0"}],"source_content_type":"text/plain","patch_set":6,"id":"baa201ad_102604bb","line":5,"in_reply_to":"da9df570_7f23dfbc","updated":"2014-09-28 23:14:32.000000000","message":"Without that dependency the gate tests crashed, it is used by the federation bits in python-keystoneclient. I am a bit puzzled that this dependency wasn\u0027t handled somewhere else ?","commit_id":"4a7a284bbd7b86b55b72e9da9f6ee50c0c32a81b"}],"setup.cfg":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"43130e69da7002753e9991d4c80e99708a286e5d","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    user_show \u003d openstackclient.identity.v3.user:ShowUser"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    federated_project_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleProjects"},{"line_number":267,"context_line":"    federated_domain_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleDomains"},{"line_number":268,"context_line":"    federated_unscoped_token \u003d openstackclient.identity.v3.unscoped_saml:UnscopedToken"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"openstack.image.v1 \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"baa201ad_3c03d677","line":267,"updated":"2014-10-09 19:54:00.000000000","message":"put these in alpha order within the group","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"f01a5245cd082abaa4ad2f2d7662810901cce6eb","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    user_show \u003d openstackclient.identity.v3.user:ShowUser"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    federated_project_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleProjects"},{"line_number":267,"context_line":"    federated_domain_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleDomains"},{"line_number":268,"context_line":"    federated_unscoped_token \u003d openstackclient.identity.v3.unscoped_saml:UnscopedToken"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"openstack.image.v1 \u003d"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"baa201ad_429b5472","line":267,"in_reply_to":"baa201ad_3c03d677","updated":"2014-10-09 20:18:55.000000000","message":"Done","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"43130e69da7002753e9991d4c80e99708a286e5d","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    federated_project_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleProjects"},{"line_number":267,"context_line":"    federated_domain_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleDomains"},{"line_number":268,"context_line":"    federated_unscoped_token \u003d openstackclient.identity.v3.unscoped_saml:UnscopedToken"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"openstack.image.v1 \u003d"},{"line_number":271,"context_line":"    image_create \u003d openstackclient.image.v1.image:CreateImage"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"baa201ad_dcf3aa9d","line":268,"updated":"2014-10-09 19:54:00.000000000","message":"What is the action here?","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"f01a5245cd082abaa4ad2f2d7662810901cce6eb","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    federated_project_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleProjects"},{"line_number":267,"context_line":"    federated_domain_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleDomains"},{"line_number":268,"context_line":"    federated_unscoped_token \u003d openstackclient.identity.v3.unscoped_saml:UnscopedToken"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"openstack.image.v1 \u003d"},{"line_number":271,"context_line":"    image_create \u003d openstackclient.image.v1.image:CreateImage"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"baa201ad_62877813","line":268,"in_reply_to":"baa201ad_02922c9f","updated":"2014-10-09 20:18:55.000000000","message":"Done\n\n\"federation token issue\" returns an unscoped token you can use with the v3scopedsaml auth plugin. With the v3saml wrapper this command is not as needed anymore and could probably be removed.","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"fa70f0da2de24d88b3be52e7ad234bc10ebb198c","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    federated_project_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleProjects"},{"line_number":267,"context_line":"    federated_domain_list \u003d openstackclient.identity.v3.unscoped_saml:ListAccessibleDomains"},{"line_number":268,"context_line":"    federated_unscoped_token \u003d openstackclient.identity.v3.unscoped_saml:UnscopedToken"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"openstack.image.v1 \u003d"},{"line_number":271,"context_line":"    image_create \u003d openstackclient.image.v1.image:CreateImage"}],"source_content_type":"text/x-ttcn-cfg","patch_set":13,"id":"baa201ad_02922c9f","line":268,"in_reply_to":"baa201ad_dcf3aa9d","updated":"2014-10-09 20:01:36.000000000","message":"it should probably be:\n\n  federation domain list\n  federation project list\n  federation token issue","commit_id":"425530852c9b0fff2efc5ffc9670624e19232c29"}]}
