)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"73afd4098938dcb69b1b586e134f03006072f120","unresolved":false,"context_lines":[{"line_number":10,"context_line":"using token authentication."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I11c641a5d5e9550f707ae2cd50314ce01dcc6f39"},{"line_number":13,"context_line":"Co-author: Christian Berendt \u003cberendt@b1-systems.de\u003e"},{"line_number":14,"context_line":"Closes-Bug: #1058750"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1abeadc6_44fdd739","line":13,"updated":"2014-08-19 10:14:13.000000000","message":"I believe it should be:\nCo-Authored-By:","commit_id":"3fe50c12e2ee0f8337805530b872face9be36488"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"22bef890cd168e4cc05c89a50c619430088497bf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Attributes required using token for auth"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Print a note that --tenant-id and --user-id has to be used when"},{"line_number":10,"context_line":"using token authentication."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I11c641a5d5e9550f707ae2cd50314ce01dcc6f39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1abeadc6_6caad1d5","line":9,"updated":"2014-08-26 03:55:23.000000000","message":"--os-tenant-id \n\nwe also don\u0027t accept user-id on the cmdline apparently.","commit_id":"5a41d7625aae02714caca8796fb8abf7de789c5b"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"5dc5030567e0b9074a1d37290fb27a88df51da0c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Attributes required using token for auth"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Print a note that --tenant-id and --user-id has to be used when"},{"line_number":10,"context_line":"using token authentication."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I11c641a5d5e9550f707ae2cd50314ce01dcc6f39"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1abeadc6_7742313f","line":9,"in_reply_to":"1abeadc6_6caad1d5","updated":"2014-08-28 09:54:36.000000000","message":"Sorry Jamie, I don\u0027t understand, how do you want to change this message?","commit_id":"5a41d7625aae02714caca8796fb8abf7de789c5b"}],"keystoneclient/tests/test_shell.py":[{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"ea2d6b2baef2d8441535e492add7d0dc69d0da4a","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                      \u0027http://example.com:9876/adm\u0027)"},{"line_number":517,"context_line":"            self.assertTrue(all([x \u003d\u003d y for x, y in zip(actual, expect)]))"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    def test_do_user_role_list(self):"},{"line_number":520,"context_line":"        do_url_mock \u003d mock.MagicMock()"},{"line_number":521,"context_line":"        uc_func \u003d getattr(shell_v2_0, \u0027do_user_role_list\u0027)"},{"line_number":522,"context_line":"        do_url_mock.arguments \u003d getattr(uc_func, \u0027arguments\u0027, [])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_fe3a6897","line":519,"updated":"2014-08-22 08:29:09.000000000","message":"I need to realize how to do this tests, I\u0027ve never develop tests for keystoneclient. Suggestions are welcome?","commit_id":"5a41d7625aae02714caca8796fb8abf7de789c5b"}],"keystoneclient/tests/unit/test_shell.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fc09eb11144da87648ca5a67b8daf4d8e0783dd6","unresolved":false,"context_lines":[{"line_number":538,"context_line":"        with mock.patch(\u0027keystoneclient.v2_0.shell.do_user_role_list\u0027,"},{"line_number":539,"context_line":"                        do_url_mock):"},{"line_number":540,"context_line":"            shell(\u0027user-role-list\u0027)"},{"line_number":541,"context_line":"            assert do_url_mock.called"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_cae69fe7","line":541,"updated":"2015-03-10 01:57:54.000000000","message":"this doesn\u0027t test the patch at all. \n\nYou want to ensure that if you ask for a role list with out a user_id or tenant_id then you get the error you created.","commit_id":"0e162197764b323eecc2f370d4f55945e995f2ca"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"e9938f82480a7670a87e90c317aa54a0453e908a","unresolved":false,"context_lines":[{"line_number":538,"context_line":"        with mock.patch(\u0027keystoneclient.v2_0.shell.do_user_role_list\u0027,"},{"line_number":539,"context_line":"                        do_url_mock):"},{"line_number":540,"context_line":"            shell(\u0027user-role-list\u0027)"},{"line_number":541,"context_line":"            assert do_url_mock.called"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_768c7580","line":541,"in_reply_to":"9a80dd14_cae69fe7","updated":"2015-03-11 10:42:42.000000000","message":"you are right. WIP","commit_id":"0e162197764b323eecc2f370d4f55945e995f2ca"}],"keystoneclient/v2_0/shell.py":[{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"0ce5566075cf196e2b9d77802f9cde086f27d593","unresolved":false,"context_lines":[{"line_number":368,"context_line":"    else:"},{"line_number":369,"context_line":"        # use the authenticated tenant id as a default"},{"line_number":370,"context_line":"        if not kc.tenant_id:"},{"line_number":371,"context_line":"            print \"--tenant-id required when using token for authentication\""},{"line_number":372,"context_line":"            return"},{"line_number":373,"context_line":"        tenant_id \u003d kc.auth_tenant_id"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_50e11299","line":371,"updated":"2014-08-19 09:54:31.000000000","message":"should be print(\"--tenant-id required when using token for authentication\") to make it Python3 compatible.","commit_id":"80393a4d9fd4d9a92157ff4ea284c34d0b537e26"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"ff4ffc5fbeaa1b077038407ee23e03ff7b786085","unresolved":false,"context_lines":[{"line_number":368,"context_line":"    else:"},{"line_number":369,"context_line":"        # use the authenticated tenant id as a default"},{"line_number":370,"context_line":"        if not kc.tenant_id:"},{"line_number":371,"context_line":"            print \"--tenant-id required when using token for authentication\""},{"line_number":372,"context_line":"            return"},{"line_number":373,"context_line":"        tenant_id \u003d kc.auth_tenant_id"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_4477973a","line":371,"in_reply_to":"1abeadc6_50e11299","updated":"2014-08-19 10:07:06.000000000","message":"Done","commit_id":"80393a4d9fd4d9a92157ff4ea284c34d0b537e26"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"0ce5566075cf196e2b9d77802f9cde086f27d593","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    else:"},{"line_number":380,"context_line":"        # use the authenticated user id as a default"},{"line_number":381,"context_line":"        if not kc.user_id:"},{"line_number":382,"context_line":"            print \"--user-id required when using token for authentication\""},{"line_number":383,"context_line":"            return"},{"line_number":384,"context_line":"        user_id \u003d kc.auth_user_id"},{"line_number":385,"context_line":"    roles \u003d kc.roles.roles_for_user(user\u003duser_id, tenant\u003dtenant_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_30fd763b","line":382,"updated":"2014-08-19 09:54:31.000000000","message":"should be print(\"--user-id required when using token for authentication\") to make it Python3 compatible.","commit_id":"80393a4d9fd4d9a92157ff4ea284c34d0b537e26"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"ff4ffc5fbeaa1b077038407ee23e03ff7b786085","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    else:"},{"line_number":380,"context_line":"        # use the authenticated user id as a default"},{"line_number":381,"context_line":"        if not kc.user_id:"},{"line_number":382,"context_line":"            print \"--user-id required when using token for authentication\""},{"line_number":383,"context_line":"            return"},{"line_number":384,"context_line":"        user_id \u003d kc.auth_user_id"},{"line_number":385,"context_line":"    roles \u003d kc.roles.roles_for_user(user\u003duser_id, tenant\u003dtenant_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_6472d34a","line":382,"in_reply_to":"1abeadc6_30fd763b","updated":"2014-08-19 10:07:06.000000000","message":"Done","commit_id":"80393a4d9fd4d9a92157ff4ea284c34d0b537e26"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"41529055d3ef801418f28c1aedd32a9cb40e4c92","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        tenant_id \u003d args.tenant_id"},{"line_number":368,"context_line":"    else:"},{"line_number":369,"context_line":"        # use the authenticated tenant id as a default"},{"line_number":370,"context_line":"        if not kc.tenant_id:"},{"line_number":371,"context_line":"            print(\"--tenant-id required when using token for authentication\")"},{"line_number":372,"context_line":"            return"},{"line_number":373,"context_line":"        tenant_id \u003d kc.auth_tenant_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_286cd807","line":370,"updated":"2014-08-21 05:27:43.000000000","message":"this is not the same value that is copied below.\n\nAlso can easily be an elif","commit_id":"2a5e9798688b0976336ef4dabf4783eff9742dd3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"41529055d3ef801418f28c1aedd32a9cb40e4c92","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        user_id \u003d args.user_id"},{"line_number":379,"context_line":"    else:"},{"line_number":380,"context_line":"        # use the authenticated user id as a default"},{"line_number":381,"context_line":"        if not kc.user_id:"},{"line_number":382,"context_line":"            print(\"--user-id required when using token for authentication\")"},{"line_number":383,"context_line":"            return"},{"line_number":384,"context_line":"        user_id \u003d kc.auth_user_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_8876ccd5","line":381,"updated":"2014-08-21 05:27:43.000000000","message":"same.","commit_id":"2a5e9798688b0976336ef4dabf4783eff9742dd3"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fdfe95a0e55200e83d7cd8766e275bf3df51f42f","unresolved":false,"context_lines":[{"line_number":376,"context_line":"    else:"},{"line_number":377,"context_line":"        # use the authenticated user id as a default"},{"line_number":378,"context_line":"        user_id \u003d kc.user_id"},{"line_number":379,"context_line":"    roles \u003d kc.roles.roles_for_user(user\u003duser_id, tenant\u003dtenant_id)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    # this makes the command output a bit more intuitive"},{"line_number":382,"context_line":"    for role in roles:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_ac0f892d","line":379,"updated":"2014-08-26 03:52:58.000000000","message":"you still need a message here if user_id or tenant_id is not provided. \n\nIt should be almost exactly what you had in revision 3 just do it down here outside the existing if statements.\n\nFor bonus points you can change the message if token auth was used like:\n\n    if args.os_token and not user_id:\n         print(\u0027We cannot determine the current user from an existing token to \u0027 \n                 \u0027list roles. Please use --os-username --os-password authentication \u0027\n                 \u0027for a role list.\u0027)\n         return\n    elif args.os_token and not tenant_id:\n         print(\u0027We cannot determine the current tenant scope from an existing \u0027\n                 \u0027token\u0027. To list roles on the tenant either provide --os-tenant-id or \u0027\n                 \u0027authenticate using --os-username and --os-password\u0027)\n         # fall through as we can list roles globally in v2 API.\n\nThis pattern exists in at least the credential create function as well.","commit_id":"5a41d7625aae02714caca8796fb8abf7de789c5b"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"5dc5030567e0b9074a1d37290fb27a88df51da0c","unresolved":false,"context_lines":[{"line_number":376,"context_line":"    else:"},{"line_number":377,"context_line":"        # use the authenticated user id as a default"},{"line_number":378,"context_line":"        user_id \u003d kc.user_id"},{"line_number":379,"context_line":"    roles \u003d kc.roles.roles_for_user(user\u003duser_id, tenant\u003dtenant_id)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    # this makes the command output a bit more intuitive"},{"line_number":382,"context_line":"    for role in roles:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_94242b0e","line":379,"in_reply_to":"1abeadc6_ac0f892d","updated":"2014-08-28 09:54:36.000000000","message":"Done","commit_id":"5a41d7625aae02714caca8796fb8abf7de789c5b"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"aea7a9115dd4faee3c112f6299d10657cb9a143e","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        user_id \u003d kc.user_id"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    if args.os_token and not user_id:"},{"line_number":382,"context_line":"        print(\u0027We cannot determine the current user from an existing token to \u0027"},{"line_number":383,"context_line":"              \u0027list roles. Please use --os-username --os-password \u0027"},{"line_number":384,"context_line":"              \u0027authentication for a role list.\u0027)"},{"line_number":385,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_961490ea","line":382,"updated":"2015-01-12 08:57:05.000000000","message":"_() could be used I guess. See line 238 for instance.","commit_id":"f054b47b9e5fb4831497562e76a889936842c805"},{"author":{"_account_id":8978,"name":"Marek Denis","email":"marek.denis+openstack@gmail.com","username":"marek-denis"},"change_message_id":"aea7a9115dd4faee3c112f6299d10657cb9a143e","unresolved":false,"context_lines":[{"line_number":384,"context_line":"              \u0027authentication for a role list.\u0027)"},{"line_number":385,"context_line":"        return"},{"line_number":386,"context_line":"    elif args.os_token and not tenant_id:"},{"line_number":387,"context_line":"        print(\u0027We cannot determine the current tenant scope from an existing \u0027"},{"line_number":388,"context_line":"              \u0027token. To list roles on the tenant either provide \u0027"},{"line_number":389,"context_line":"              \u0027--os-tenant-id or authenticate using --os-username and \u0027"},{"line_number":390,"context_line":"              \u0027--os-password\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_b6d0ac2c","line":387,"updated":"2015-01-12 08:57:05.000000000","message":"_() could be used I guess.","commit_id":"f054b47b9e5fb4831497562e76a889936842c805"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"fc09eb11144da87648ca5a67b8daf4d8e0783dd6","unresolved":false,"context_lines":[{"line_number":388,"context_line":"                \u0027existing token. To list roles on the tenant either provide \u0027"},{"line_number":389,"context_line":"                \u0027--os-tenant-id or authenticate using --os-username and \u0027"},{"line_number":390,"context_line":"                \u0027--os-password\u0027))"},{"line_number":391,"context_line":"        return"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    roles \u003d kc.roles.roles_for_user(user\u003duser_id, tenant\u003dtenant_id)"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_aabc0bbc","line":391,"updated":"2015-03-10 01:57:54.000000000","message":"use a sys.exit() or something that sets a non-zero return.","commit_id":"0e162197764b323eecc2f370d4f55945e995f2ca"},{"author":{"_account_id":8533,"name":"Marcos Fermín Lobo","email":"lobo@lukos.org","username":"mlobo"},"change_message_id":"e9938f82480a7670a87e90c317aa54a0453e908a","unresolved":false,"context_lines":[{"line_number":388,"context_line":"                \u0027existing token. To list roles on the tenant either provide \u0027"},{"line_number":389,"context_line":"                \u0027--os-tenant-id or authenticate using --os-username and \u0027"},{"line_number":390,"context_line":"                \u0027--os-password\u0027))"},{"line_number":391,"context_line":"        return"},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"    roles \u003d kc.roles.roles_for_user(user\u003duser_id, tenant\u003dtenant_id)"},{"line_number":394,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a80dd14_b69fcdb3","line":391,"in_reply_to":"9a80dd14_aabc0bbc","updated":"2015-03-11 10:42:42.000000000","message":"What about: \"return 1\" ?","commit_id":"0e162197764b323eecc2f370d4f55945e995f2ca"}]}
