)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2a05210270de6ec71d0b170c248c3f07847b24cc","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added new module in identity v3 api to handle create, read, and delete"},{"line_number":10,"context_line":"operations of trust resources."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I2b360b141ff70d4f396466abede859a3db6644f4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAUX%2F%2FTPM%3D","line":11,"updated":"2014-02-14 05:05:15.000000000","message":"also, create a blueprint or bug and reference it","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"}],"doc/source/command-objects/trust.rst":[{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1bc2c858c0c0e59cd687bb17be0923bc1d170427","unresolved":false,"context_lines":[{"line_number":13,"context_line":".. code:: bash"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    os trust create"},{"line_number":16,"context_line":"        [--project \u003cproject\u003e]"},{"line_number":17,"context_line":"        [--role \u003crole\u003e]"},{"line_number":18,"context_line":"        [--domain \u003cdomain\u003e]"},{"line_number":19,"context_line":"        [--impersonate]"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a930d6b_2dc5fb8d","line":16,"updated":"2015-01-23 15:40:21.000000000","message":"remove [] from required options","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c7539168360bb59edde5a72791bc8eec9956a449","unresolved":false,"context_lines":[{"line_number":13,"context_line":".. code:: bash"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    os trust create"},{"line_number":16,"context_line":"        [--project \u003cproject\u003e]"},{"line_number":17,"context_line":"        [--role \u003crole\u003e]"},{"line_number":18,"context_line":"        [--domain \u003cdomain\u003e]"},{"line_number":19,"context_line":"        [--impersonate]"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a930d6b_96f8a0c4","line":16,"in_reply_to":"1a930d6b_2dc5fb8d","updated":"2015-01-24 21:48:12.000000000","message":"whoops, yeah","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"217bdbcb34e4bb7d78246b4d1bb7db476f1f4557","unresolved":false,"context_lines":[{"line_number":13,"context_line":".. code:: bash"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    os trust create"},{"line_number":16,"context_line":"        [--project \u003cproject\u003e]"},{"line_number":17,"context_line":"        [--role \u003crole\u003e]"},{"line_number":18,"context_line":"        [--domain \u003cdomain\u003e]"},{"line_number":19,"context_line":"        [--impersonate]"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a930d6b_5c973748","line":16,"in_reply_to":"1a930d6b_96f8a0c4","updated":"2015-01-25 07:49:03.000000000","message":"Done","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1bc2c858c0c0e59cd687bb17be0923bc1d170427","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":".. option:: --expiration \u003cexpiration\u003e"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    Sets an expiration date for the trust (format of YYYY-mm-ddTHH:MM:SS)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":".. describe:: \u003ctrustor\u003e"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a930d6b_681e1165","line":42,"updated":"2015-01-23 15:40:21.000000000","message":"Note for future: allow for simple offsets from \u0027now\u0027:\n\n* 30 days from now:  +30d\n* 6 months from now: +6m","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1bc2c858c0c0e59cd687bb17be0923bc1d170427","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    Sets an expiration date for the trust (format of YYYY-mm-ddTHH:MM:SS)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":".. describe:: \u003ctrustor\u003e"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    User that is delegating authorization (name or ID)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a930d6b_0e72f5e4","line":44,"updated":"2015-01-23 15:40:21.000000000","message":"I think using \u003ctrustor-user\u003e and \u003ctrustee-user\u003e here would help enforce the idea that these are users, but different \u0027kinds\u0027 of users.\n\nMetavar naming in general probably needs some beefing up consistency- and rules-wise...","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c7539168360bb59edde5a72791bc8eec9956a449","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    Sets an expiration date for the trust (format of YYYY-mm-ddTHH:MM:SS)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":".. describe:: \u003ctrustor\u003e"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    User that is delegating authorization (name or ID)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a930d6b_b6011cb1","line":44,"in_reply_to":"1a930d6b_0e72f5e4","updated":"2015-01-24 21:48:12.000000000","message":"i\u0027ll add the -user bits","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"217bdbcb34e4bb7d78246b4d1bb7db476f1f4557","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    Sets an expiration date for the trust (format of YYYY-mm-ddTHH:MM:SS)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":".. describe:: \u003ctrustor\u003e"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    User that is delegating authorization (name or ID)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a930d6b_3cafcb95","line":44,"in_reply_to":"1a930d6b_b6011cb1","updated":"2015-01-25 07:49:03.000000000","message":"Done","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"}],"openstackclient/identity/v3/trust.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b1c5b870d66f0da8ad1582b420a5aa07e2cbf2e1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        parser.add_argument("},{"line_number":34,"context_line":"            \u0027trustor\u0027,"},{"line_number":35,"context_line":"            metavar\u003d\u0027\u003ctrustor-user-id\u003e\u0027,"},{"line_number":36,"context_line":"            help\u003d\u0027Represents the user who is delegating authorization\u0027,"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9ipA%3D","line":36,"updated":"2014-02-06 07:01:15.000000000","message":"Name or ID of user that is delegating authorization\n\nI say Name or ID, because in take_action, you can use utils.find_resource to find id or names (typically). In v3, names get a bit weird, but it will still work with raw uuids anyway.\n\n  if parsed_args.trustor:\n    user_id \u003d utils.find_resource(\n      identity_client.users,\n      parsed_args.trustor,\n    ).id\n\nThis should be used for users and projects (or anything you can call .get() on)","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35a79a994837db4c5da1b014019f540129e50b95","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        parser.add_argument("},{"line_number":34,"context_line":"            \u0027trustor\u0027,"},{"line_number":35,"context_line":"            metavar\u003d\u0027\u003ctrustor-user-id\u003e\u0027,"},{"line_number":36,"context_line":"            help\u003d\u0027Represents the user who is delegating authorization\u0027,"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9c3k%3D","line":36,"in_reply_to":"AAAAUH%2F9ipA%3D","updated":"2014-02-06 20:36:31.000000000","message":"Done","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b1c5b870d66f0da8ad1582b420a5aa07e2cbf2e1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003ctrustee-user-id\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d\u0027Represents the user who is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9io8%3D","line":41,"updated":"2014-02-06 07:01:15.000000000","message":"Name or ID of user that is assuming authorization","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35a79a994837db4c5da1b014019f540129e50b95","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003ctrustee-user-id\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d\u0027Represents the user who is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9c3U%3D","line":41,"in_reply_to":"AAAAUH%2F9io8%3D","updated":"2014-02-06 20:36:31.000000000","message":"Done","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b1c5b870d66f0da8ad1582b420a5aa07e2cbf2e1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            metavar\u003d\u0027\u003ctrustee-user-id\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d\u0027Represents the user who is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"},{"line_number":45,"context_line":"            metavar\u003d\u0027\u003cimpersonation\u003e\u0027,"},{"line_number":46,"context_line":"            help\u003d\u0027Tokens generated from the trust will represent the trustor\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9inM%3D","line":43,"updated":"2014-02-06 07:01:15.000000000","message":"try:\n  parser.add_argument(\n    \u0027--impersonation\u0027,\n   dest\u003d\u0027impersonation\u0027,\n   help\u003d\u0027blah\u0027,\n   action\u003d\u0027store_true\u0027)\n\nto eval, just call parsed_args.impersonation, no need for funny stuff at line 73.","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35a79a994837db4c5da1b014019f540129e50b95","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            metavar\u003d\u0027\u003ctrustee-user-id\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d\u0027Represents the user who is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"},{"line_number":45,"context_line":"            metavar\u003d\u0027\u003cimpersonation\u003e\u0027,"},{"line_number":46,"context_line":"            help\u003d\u0027Tokens generated from the trust will represent the trustor\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9c2k%3D","line":43,"in_reply_to":"AAAAUH%2F9inM%3D","updated":"2014-02-06 20:36:31.000000000","message":"Done","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b1c5b870d66f0da8ad1582b420a5aa07e2cbf2e1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        parser.add_argument("},{"line_number":49,"context_line":"            \u0027--project\u0027,"},{"line_number":50,"context_line":"            metavar\u003d\u0027\u003cproject-id\u003e\u0027,"},{"line_number":51,"context_line":"            help\u003d\u0027The project upon which the trustor delegates authorization\u0027,"},{"line_number":52,"context_line":"        )"},{"line_number":53,"context_line":"        parser.add_argument("},{"line_number":54,"context_line":"            \u0027--roles\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9ios%3D","line":51,"updated":"2014-02-06 07:01:15.000000000","message":"Name or ID of project that is being delegated","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35a79a994837db4c5da1b014019f540129e50b95","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        parser.add_argument("},{"line_number":49,"context_line":"            \u0027--project\u0027,"},{"line_number":50,"context_line":"            metavar\u003d\u0027\u003cproject-id\u003e\u0027,"},{"line_number":51,"context_line":"            help\u003d\u0027The project upon which the trustor delegates authorization\u0027,"},{"line_number":52,"context_line":"        )"},{"line_number":53,"context_line":"        parser.add_argument("},{"line_number":54,"context_line":"            \u0027--roles\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9c2Q%3D","line":51,"in_reply_to":"AAAAUH%2F9ios%3D","updated":"2014-02-06 20:36:31.000000000","message":"Done","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b1c5b870d66f0da8ad1582b420a5aa07e2cbf2e1","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            metavar\u003d\u0027\u003cproject-id\u003e\u0027,"},{"line_number":51,"context_line":"            help\u003d\u0027The project upon which the trustor delegates authorization\u0027,"},{"line_number":52,"context_line":"        )"},{"line_number":53,"context_line":"        parser.add_argument("},{"line_number":54,"context_line":"            \u0027--roles\u0027,"},{"line_number":55,"context_line":"            metavar\u003d\u0027\u003croles\u003e\u0027,"},{"line_number":56,"context_line":"            nargs\u003d\u0027+\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9ilI%3D","line":53,"updated":"2014-02-06 07:01:15.000000000","message":"roles are tricky, take a look at:\nhttps://review.openstack.org/#/c/61196/2/openstackclient/identity/v3/token.py\n\nline 86 and 97, I think that is the best way","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"484580910632c3034319b0dca6c89be193b7a6d8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            metavar\u003d\u0027\u003cproject-id\u003e\u0027,"},{"line_number":51,"context_line":"            help\u003d\u0027The project upon which the trustor delegates authorization\u0027,"},{"line_number":52,"context_line":"        )"},{"line_number":53,"context_line":"        parser.add_argument("},{"line_number":54,"context_line":"            \u0027--roles\u0027,"},{"line_number":55,"context_line":"            metavar\u003d\u0027\u003croles\u003e\u0027,"},{"line_number":56,"context_line":"            nargs\u003d\u0027+\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9cxc%3D","line":53,"in_reply_to":"AAAAUH%2F9c08%3D","updated":"2014-02-06 20:48:07.000000000","message":"I had to keep the nargs in there so we can pass in multiple values: \n\n    usage: openstack trust create [-h] [-f {shell,table}] [-c COLUMN]\n                              [--variable VARIABLE] [--prefix PREFIX]\n                              [--impersonation] [--project \u003cproject-id\u003e]\n                              [--roles \u003croles\u003e] [--expiration \u003cexpires-at\u003e]\n                              \u003ctrustor-user-id\u003e \u003ctrustee-user-id\u003e\nopenstack trust create: error: unrecognized arguments: 9fe2ff9ee4384b1894a90878d3e92bab\nlbragstad@precise64:~$ openstack trust create 406e6d96a30449069bf4241a00308b23 e5e12cfb38554610809297206f2d847b --roles 937488fff5444edb9da1e93d20596d4b 9fe2ff9ee4384b1894a90878d3e92bab\nusage: openstack trust create [-h] [-f {shell,table}] [-c COLUMN]\n                              [--variable VARIABLE] [--prefix PREFIX]\n                              [--impersonation] [--project \u003cproject-id\u003e]\n                              [--roles \u003croles\u003e] [--expiration \u003cexpires-at\u003e]\n                              \u003ctrustor-user-id\u003e \u003ctrustee-user-id\u003e\nopenstack trust create: error: unrecognized arguments: 9fe2ff9ee4384b1894a90878d3e92bab\nlbragstad@precise64:~$ openstack trust create 406e6d96a30449069bf4241a00308b23 e5e12cfb38554610809297206f2d847b --roles admin Member\n[\u0027admin\u0027, \u0027Member\u0027]","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35a79a994837db4c5da1b014019f540129e50b95","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            metavar\u003d\u0027\u003cproject-id\u003e\u0027,"},{"line_number":51,"context_line":"            help\u003d\u0027The project upon which the trustor delegates authorization\u0027,"},{"line_number":52,"context_line":"        )"},{"line_number":53,"context_line":"        parser.add_argument("},{"line_number":54,"context_line":"            \u0027--roles\u0027,"},{"line_number":55,"context_line":"            metavar\u003d\u0027\u003croles\u003e\u0027,"},{"line_number":56,"context_line":"            nargs\u003d\u0027+\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9c08%3D","line":53,"in_reply_to":"AAAAUH%2F9ilI%3D","updated":"2014-02-06 20:36:31.000000000","message":"Done, \n\nThe way I was thinking before, is that using nargs allows us to pass in roles using \n\n    --roles admin Member\n\nand that will automatically be a list. Either way works and is fine with me as long as it is consistent.","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b1c5b870d66f0da8ad1582b420a5aa07e2cbf2e1","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        parser.add_argument("},{"line_number":61,"context_line":"            \u0027--expiration\u0027,"},{"line_number":62,"context_line":"            metavar\u003d\u0027\u003cexpires-at\u003e\u0027,"},{"line_number":63,"context_line":"            help\u003d\u0027Specifies the expiration time of the trust\u0027,"},{"line_number":64,"context_line":"        )"},{"line_number":65,"context_line":"        # NOTE(ldbragst): Add remaining uses, see note below."},{"line_number":66,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9ioI%3D","line":63,"updated":"2014-02-06 07:01:15.000000000","message":"Might help to give the time format, not sure if there is one","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35a79a994837db4c5da1b014019f540129e50b95","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        parser.add_argument("},{"line_number":61,"context_line":"            \u0027--expiration\u0027,"},{"line_number":62,"context_line":"            metavar\u003d\u0027\u003cexpires-at\u003e\u0027,"},{"line_number":63,"context_line":"            help\u003d\u0027Specifies the expiration time of the trust\u0027,"},{"line_number":64,"context_line":"        )"},{"line_number":65,"context_line":"        # NOTE(ldbragst): Add remaining uses, see note below."},{"line_number":66,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9czM%3D","line":63,"in_reply_to":"AAAAUH%2F9ioI%3D","updated":"2014-02-06 20:36:31.000000000","message":"Done","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9ffbc3f2e4242cacaa0187f525e5626a48045351","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        parser.add_argument("},{"line_number":61,"context_line":"            \u0027--expiration\u0027,"},{"line_number":62,"context_line":"            metavar\u003d\u0027\u003cexpires-at\u003e\u0027,"},{"line_number":63,"context_line":"            help\u003d\u0027Specifies the expiration time of the trust\u0027,"},{"line_number":64,"context_line":"        )"},{"line_number":65,"context_line":"        # NOTE(ldbragst): Add remaining uses, see note below."},{"line_number":66,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9ieo%3D","line":63,"in_reply_to":"AAAAUH%2F9ioI%3D","updated":"2014-02-06 07:25:30.000000000","message":"I *think* there is, I\u0027ll do some digging and see if I can find one.","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b1c5b870d66f0da8ad1582b420a5aa07e2cbf2e1","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if parsed_args.impersonation in (\u0027True\u0027, \u0027true\u0027):"},{"line_number":74,"context_line":"            impersonation \u003d True"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        # FIXME(ldbragst): Support will need to be added here for"},{"line_number":77,"context_line":"        # remaining_uses. Right now the"},{"line_number":78,"context_line":"        # keystoneclient.v3.contrib.trusts.TrustManager doesn\u0027t accept"},{"line_number":79,"context_line":"        # remaining_uses as a parameter. Once it does, this will need to be"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9ipI%3D","line":76,"updated":"2014-02-06 07:01:15.000000000","message":"nice comment!","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b1c5b870d66f0da8ad1582b420a5aa07e2cbf2e1","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        trust \u003d utils.find_resource(identity_client.trusts,"},{"line_number":112,"context_line":"                                    parsed_args.trust)"},{"line_number":113,"context_line":"        identity_client.trusts.delete(trust.id)"},{"line_number":114,"context_line":"        return"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class ListTrust(lister.Lister):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9imk%3D","line":114,"updated":"2014-02-06 07:01:15.000000000","message":"nit: no need to return","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35a79a994837db4c5da1b014019f540129e50b95","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        trust \u003d utils.find_resource(identity_client.trusts,"},{"line_number":112,"context_line":"                                    parsed_args.trust)"},{"line_number":113,"context_line":"        identity_client.trusts.delete(trust.id)"},{"line_number":114,"context_line":"        return"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class ListTrust(lister.Lister):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9c0U%3D","line":114,"in_reply_to":"AAAAUH%2F9imk%3D","updated":"2014-02-06 20:36:31.000000000","message":"Done","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b1c5b870d66f0da8ad1582b420a5aa07e2cbf2e1","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        parser.add_argument("},{"line_number":142,"context_line":"            \u0027trust\u0027,"},{"line_number":143,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":144,"context_line":"            help\u003d\u0027Name or ID of trust to display\u0027,"},{"line_number":145,"context_line":"        )"},{"line_number":146,"context_line":"        return parser"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9imQ%3D","line":144,"updated":"2014-02-06 07:01:15.000000000","message":"I don\u0027t think trusts have Names :)","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"35a79a994837db4c5da1b014019f540129e50b95","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        parser.add_argument("},{"line_number":142,"context_line":"            \u0027trust\u0027,"},{"line_number":143,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":144,"context_line":"            help\u003d\u0027Name or ID of trust to display\u0027,"},{"line_number":145,"context_line":"        )"},{"line_number":146,"context_line":"        return parser"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F9c0M%3D","line":144,"in_reply_to":"AAAAUH%2F9imQ%3D","updated":"2014-02-06 20:36:31.000000000","message":"Done, you\u0027re right, thanks!","commit_id":"20e574c694308dbb0f5b0b8df1eb9033326668a9"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        parser \u003d super(CreateTrust, self).get_parser(prog_name)"},{"line_number":33,"context_line":"        parser.add_argument("},{"line_number":34,"context_line":"            \u0027trustor\u0027,"},{"line_number":35,"context_line":"            metavar\u003d\u0027\u003ctrustor-user-id\u003e\u0027,"},{"line_number":36,"context_line":"            help\u003d\u0027Name of ID of the user that is delegating authorization\u0027,"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cYk%3D","line":35,"updated":"2014-02-06 22:29:21.000000000","message":"remove -id","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3a1e2e83683492fb474f3f4ba8490359306b57e2","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        parser \u003d super(CreateTrust, self).get_parser(prog_name)"},{"line_number":33,"context_line":"        parser.add_argument("},{"line_number":34,"context_line":"            \u0027trustor\u0027,"},{"line_number":35,"context_line":"            metavar\u003d\u0027\u003ctrustor-user-id\u003e\u0027,"},{"line_number":36,"context_line":"            help\u003d\u0027Name of ID of the user that is delegating authorization\u0027,"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FHeA%3D","line":35,"in_reply_to":"AAAAUH%2F9cYk%3D","updated":"2014-02-17 03:05:39.000000000","message":"Done","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        parser.add_argument("},{"line_number":34,"context_line":"            \u0027trustor\u0027,"},{"line_number":35,"context_line":"            metavar\u003d\u0027\u003ctrustor-user-id\u003e\u0027,"},{"line_number":36,"context_line":"            help\u003d\u0027Name of ID of the user that is delegating authorization\u0027,"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cJQ%3D","line":36,"updated":"2014-02-06 22:29:21.000000000","message":"s/of/or/","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3a1e2e83683492fb474f3f4ba8490359306b57e2","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        parser.add_argument("},{"line_number":34,"context_line":"            \u0027trustor\u0027,"},{"line_number":35,"context_line":"            metavar\u003d\u0027\u003ctrustor-user-id\u003e\u0027,"},{"line_number":36,"context_line":"            help\u003d\u0027Name of ID of the user that is delegating authorization\u0027,"},{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FHd8%3D","line":36,"in_reply_to":"AAAAUH%2F9cJQ%3D","updated":"2014-02-17 03:05:39.000000000","message":"Done","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003ctrustee-user-id\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d\u0027Name of ID of the user that is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cYc%3D","line":40,"updated":"2014-02-06 22:29:21.000000000","message":"remove -id","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3a1e2e83683492fb474f3f4ba8490359306b57e2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        )"},{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003ctrustee-user-id\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d\u0027Name of ID of the user that is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FHd4%3D","line":40,"in_reply_to":"AAAAUH%2F9cYc%3D","updated":"2014-02-17 03:05:39.000000000","message":"Done","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003ctrustee-user-id\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d\u0027Name of ID of the user that is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cJM%3D","line":41,"updated":"2014-02-06 22:29:21.000000000","message":"s/of/or/","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3a1e2e83683492fb474f3f4ba8490359306b57e2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        parser.add_argument("},{"line_number":39,"context_line":"            \u0027trustee\u0027,"},{"line_number":40,"context_line":"            metavar\u003d\u0027\u003ctrustee-user-id\u003e\u0027,"},{"line_number":41,"context_line":"            help\u003d\u0027Name of ID of the user that is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FHd0%3D","line":41,"in_reply_to":"AAAAUH%2F9cJM%3D","updated":"2014-02-17 03:05:39.000000000","message":"Done","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            help\u003d\u0027Name of ID of the user that is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"},{"line_number":45,"context_line":"            dest\u003d\u0027impersonation\u0027,"},{"line_number":46,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":47,"context_line":"            help\u003d\u0027Tokens generated from the trust will represent the trustor\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cOI%3D","line":44,"updated":"2014-02-06 22:29:21.000000000","message":"Use present tense for verbs like this, so --impersonate.\n\nWe usually use pairs for toggles like this (--enable | --disable), even though they are not strictly necessary.  All I can come up with here is --impersonate | --no-impersonate.","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3a1e2e83683492fb474f3f4ba8490359306b57e2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            help\u003d\u0027Name of ID of the user that is assuming authorization\u0027,"},{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"},{"line_number":45,"context_line":"            dest\u003d\u0027impersonation\u0027,"},{"line_number":46,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":47,"context_line":"            help\u003d\u0027Tokens generated from the trust will represent the trustor\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FHds%3D","line":44,"in_reply_to":"AAAAUH%2F9cOI%3D","updated":"2014-02-17 03:05:39.000000000","message":"Done","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"881b0ac7b58b34f33a24b4852fcf908dcbea498a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"},{"line_number":45,"context_line":"            dest\u003d\u0027impersonation\u0027,"},{"line_number":46,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":47,"context_line":"            help\u003d\u0027Tokens generated from the trust will represent the trustor\u0027,"},{"line_number":48,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9bTI%3D","line":45,"updated":"2014-02-07 00:02:28.000000000","message":"Like Dean said below, you can default this to False","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3a1e2e83683492fb474f3f4ba8490359306b57e2","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        )"},{"line_number":43,"context_line":"        parser.add_argument("},{"line_number":44,"context_line":"            \u0027--impersonation\u0027,"},{"line_number":45,"context_line":"            dest\u003d\u0027impersonation\u0027,"},{"line_number":46,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":47,"context_line":"            help\u003d\u0027Tokens generated from the trust will represent the trustor\u0027,"},{"line_number":48,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FHdo%3D","line":45,"in_reply_to":"AAAAUH%2F9bTI%3D","updated":"2014-02-17 03:05:39.000000000","message":"Done","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        )"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--project\u0027,"},{"line_number":51,"context_line":"            metavar\u003d\u0027\u003cproject-id\u003e\u0027,"},{"line_number":52,"context_line":"            help\u003d\u0027Name or ID of the project being delegated\u0027,"},{"line_number":53,"context_line":"        )"},{"line_number":54,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cOE%3D","line":51,"updated":"2014-02-06 22:29:21.000000000","message":"remove -id","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3a1e2e83683492fb474f3f4ba8490359306b57e2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        )"},{"line_number":49,"context_line":"        parser.add_argument("},{"line_number":50,"context_line":"            \u0027--project\u0027,"},{"line_number":51,"context_line":"            metavar\u003d\u0027\u003cproject-id\u003e\u0027,"},{"line_number":52,"context_line":"            help\u003d\u0027Name or ID of the project being delegated\u0027,"},{"line_number":53,"context_line":"        )"},{"line_number":54,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FHdk%3D","line":51,"in_reply_to":"AAAAUH%2F9cOE%3D","updated":"2014-02-17 03:05:39.000000000","message":"Done","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            \u0027--roles\u0027,"},{"line_number":56,"context_line":"            metavar\u003d\u0027\u003croles\u003e\u0027,"},{"line_number":57,"context_line":"            nargs\u003d\u0027+\u0027,"},{"line_number":58,"context_line":"            help\u003d\u0027A set of roles being granted from trustor to trustee\u0027"},{"line_number":59,"context_line":"                 \u0027 (if specifying a role a project must also be specified)\u0027,"},{"line_number":60,"context_line":"        )"},{"line_number":61,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cKM%3D","line":58,"updated":"2014-02-06 22:29:21.000000000","message":"So I _really_ don\u0027t like to use nargs, --roles should have a single argument and it be comma (or whatever) separated list, or allow multiple --roles (--role?) arguments.\n\nSteve has some of these in his OAuth code too, they need to handled consistently whatever we do.","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            \u0027--expiration\u0027,"},{"line_number":63,"context_line":"            metavar\u003d\u0027\u003cexpires-at\u003e\u0027,"},{"line_number":64,"context_line":"            help\u003d\u0027Specifies the expiration time of the trust in the format of\u0027"},{"line_number":65,"context_line":"                 \u0027 YYYY-MM-DDT00:00:00Z\u0027,"},{"line_number":66,"context_line":"        )"},{"line_number":67,"context_line":"        # NOTE(ldbragst): Add remaining uses, see note below."},{"line_number":68,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cJY%3D","line":65,"updated":"2014-02-06 22:29:21.000000000","message":"We don\u0027t have a precedent for CLI time/date formatting on input yet, but I would like to be more flexible than rigidly adhering to the API requirements...more thought necessary here.  This probably also means we need to ensure the output formats are sane and can be used directly as input.","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        # keystoneclient.v3.contrib.trusts.TrustManager doesn\u0027t accept"},{"line_number":77,"context_line":"        # remaining_uses as a parameter. Once it does, this will need to be"},{"line_number":78,"context_line":"        # updated to reflect that change. In the identity-api-v3 docs"},{"line_number":79,"context_line":"        # remaining_uses is documented as an \u0027Optional attribute\u0027."},{"line_number":80,"context_line":"        trust \u003d identity_client.trusts.create("},{"line_number":81,"context_line":"            parsed_args.trustee,"},{"line_number":82,"context_line":"            parsed_args.trustor,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cIk%3D","line":79,"updated":"2014-02-06 22:29:21.000000000","message":"trustee, trustor, project and role need to be looked up to handle names passed as arguments.\n\nOr does v3 do that for us?  ;)","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"881b0ac7b58b34f33a24b4852fcf908dcbea498a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        # keystoneclient.v3.contrib.trusts.TrustManager doesn\u0027t accept"},{"line_number":77,"context_line":"        # remaining_uses as a parameter. Once it does, this will need to be"},{"line_number":78,"context_line":"        # updated to reflect that change. In the identity-api-v3 docs"},{"line_number":79,"context_line":"        # remaining_uses is documented as an \u0027Optional attribute\u0027."},{"line_number":80,"context_line":"        trust \u003d identity_client.trusts.create("},{"line_number":81,"context_line":"            parsed_args.trustee,"},{"line_number":82,"context_line":"            parsed_args.trustor,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9bR8%3D","line":79,"in_reply_to":"AAAAUH%2F9cIk%3D","updated":"2014-02-07 00:02:28.000000000","message":"@dean - I doubt v3 does that for us.\n\n@lance - you can call \n\n  user \u003d identity_client.users.get(parsed_args.trustor_user)\n\nthis will return a user object from keystoneclient, from here you can just call user.id to get the ID. Repeat this for project/role/trustee.\n\nThis will also help with error handling, better UX. (in case one of them is None, you can give back an error.\n\nThe reason we do this, is in case the user passes in names. \n\nThough for users, we would also need to know the domain they are in..... not sure if our utility method takes that into account right now, maybe it just looks at the default domain.","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"14146e2da4e0655f69de288379203eaa26409b9e","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        trust \u003d identity_client.trusts.create("},{"line_number":81,"context_line":"            parsed_args.trustee,"},{"line_number":82,"context_line":"            parsed_args.trustor,"},{"line_number":83,"context_line":"            impersonation\u003dparsed_args.impersonation,"},{"line_number":84,"context_line":"            project\u003dparsed_args.project,"},{"line_number":85,"context_line":"            role_names\u003dparsed_args.roles,"},{"line_number":86,"context_line":"            expires_at\u003dparsed_args.expiration,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9cII%3D","line":83,"updated":"2014-02-06 22:29:21.000000000","message":"impersonation should have an explicit default\u003dFalse in the declaration above to use it directly","commit_id":"82e104c264fcc0be2ae95c76847c7d2122986963"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1bc2c858c0c0e59cd687bb17be0923bc1d170427","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        return zip(*sorted(six.iteritems(trust._info)))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"class DeleteTrust(command.Command):"},{"line_number":142,"context_line":"    \"\"\"Delete trust\"\"\""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.DeleteTrust\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_02aac9d3","line":141,"updated":"2015-01-23 15:40:21.000000000","message":"Should we do the multi-delete thing straight off?  Or does it even make sense here?","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c7539168360bb59edde5a72791bc8eec9956a449","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        return zip(*sorted(six.iteritems(trust._info)))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"class DeleteTrust(command.Command):"},{"line_number":142,"context_line":"    \"\"\"Delete trust\"\"\""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.DeleteTrust\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_160d90e9","line":141,"in_reply_to":"1a930d6b_02aac9d3","updated":"2015-01-24 21:48:12.000000000","message":"i suppose we could, i\u0027m not against it","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"217bdbcb34e4bb7d78246b4d1bb7db476f1f4557","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        return zip(*sorted(six.iteritems(trust._info)))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"class DeleteTrust(command.Command):"},{"line_number":142,"context_line":"    \"\"\"Delete trust\"\"\""},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    log \u003d logging.getLogger(__name__ + \u0027.DeleteTrust\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_7c94f342","line":141,"in_reply_to":"1a930d6b_160d90e9","updated":"2015-01-25 07:49:03.000000000","message":"Done","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1bc2c858c0c0e59cd687bb17be0923bc1d170427","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        parser.add_argument("},{"line_number":149,"context_line":"            \u0027trust\u0027,"},{"line_number":150,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":151,"context_line":"            help\u003d\u0027Trust to delete\u0027,"},{"line_number":152,"context_line":"        )"},{"line_number":153,"context_line":"        return parser"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_621e2d65","line":151,"updated":"2015-01-23 15:40:21.000000000","message":"Trust ID to delete?","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"ed43bc40baed3eea9ba81e690fc8fbde25f87f18","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        parser.add_argument("},{"line_number":149,"context_line":"            \u0027trust\u0027,"},{"line_number":150,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":151,"context_line":"            help\u003d\u0027Trust to delete\u0027,"},{"line_number":152,"context_line":"        )"},{"line_number":153,"context_line":"        return parser"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_d6d6a8f0","line":151,"in_reply_to":"1a930d6b_5613980c","updated":"2015-01-24 22:49:34.000000000","message":"Steve, that\u0027s what I recall too.  It feels like the metavar should be \u003ctrust-id\u003e to me though, except that isn\u0027t consistent with how we do metavars where there is only a name, line on most of the create commands.  I can go either way on this one.","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"58c370bfa4f9cf32e6d18208ff4d56a39ae033fe","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        parser.add_argument("},{"line_number":149,"context_line":"            \u0027trust\u0027,"},{"line_number":150,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":151,"context_line":"            help\u003d\u0027Trust to delete\u0027,"},{"line_number":152,"context_line":"        )"},{"line_number":153,"context_line":"        return parser"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_dbac28a3","line":151,"in_reply_to":"1a930d6b_621e2d65","updated":"2015-01-23 16:44:55.000000000","message":"Name or ID of trust to delete?","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c7539168360bb59edde5a72791bc8eec9956a449","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        parser.add_argument("},{"line_number":149,"context_line":"            \u0027trust\u0027,"},{"line_number":150,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":151,"context_line":"            help\u003d\u0027Trust to delete\u0027,"},{"line_number":152,"context_line":"        )"},{"line_number":153,"context_line":"        return parser"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_5613980c","line":151,"in_reply_to":"1a930d6b_a472d30e","updated":"2015-01-24 21:48:12.000000000","message":"trusts do not have names.\n\nI thought we came to the decision/conclusion that if an object (like a region or trust or policy) *only* has an ID, then we would drop (name or ID) or (ID).","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"217bdbcb34e4bb7d78246b4d1bb7db476f1f4557","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        parser.add_argument("},{"line_number":149,"context_line":"            \u0027trust\u0027,"},{"line_number":150,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":151,"context_line":"            help\u003d\u0027Trust to delete\u0027,"},{"line_number":152,"context_line":"        )"},{"line_number":153,"context_line":"        return parser"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_dc8a471a","line":151,"in_reply_to":"1a930d6b_d6d6a8f0","updated":"2015-01-25 07:49:03.000000000","message":"i say keep it as is, and we can do a fell-swoop of adjusting things again before release time. It should just be identity that does the no-name stuff.","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"8985e76a73217e5d42631876fb76b12d4d7fd37d","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        parser.add_argument("},{"line_number":149,"context_line":"            \u0027trust\u0027,"},{"line_number":150,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":151,"context_line":"            help\u003d\u0027Trust to delete\u0027,"},{"line_number":152,"context_line":"        )"},{"line_number":153,"context_line":"        return parser"},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_a472d30e","line":151,"in_reply_to":"1a930d6b_dbac28a3","updated":"2015-01-23 23:22:00.000000000","message":"Does a trust have a name?  There isn\u0027t a name in the list output below.  If it has one, yes, except \u0027Trust to delete (name or ID)\u0027.  I suppose my original suggestion could/should have been \u0027Trust to delete (ID)\u0027?","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1bc2c858c0c0e59cd687bb17be0923bc1d170427","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        parser.add_argument("},{"line_number":188,"context_line":"            \u0027trust\u0027,"},{"line_number":189,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":190,"context_line":"            help\u003d\u0027Trust to display\u0027,"},{"line_number":191,"context_line":"        )"},{"line_number":192,"context_line":"        return parser"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_025c8924","line":190,"updated":"2015-01-23 15:40:21.000000000","message":"Trust ID ... ?","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":9983,"name":"Richard Megginson","email":"rmeggins@redhat.com","username":"rmeggins"},"change_message_id":"58c370bfa4f9cf32e6d18208ff4d56a39ae033fe","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        parser.add_argument("},{"line_number":188,"context_line":"            \u0027trust\u0027,"},{"line_number":189,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":190,"context_line":"            help\u003d\u0027Trust to display\u0027,"},{"line_number":191,"context_line":"        )"},{"line_number":192,"context_line":"        return parser"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_1b96b04c","line":190,"in_reply_to":"1a930d6b_025c8924","updated":"2015-01-23 16:44:55.000000000","message":"Name or ID?","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c7539168360bb59edde5a72791bc8eec9956a449","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        parser.add_argument("},{"line_number":188,"context_line":"            \u0027trust\u0027,"},{"line_number":189,"context_line":"            metavar\u003d\u0027\u003ctrust\u003e\u0027,"},{"line_number":190,"context_line":"            help\u003d\u0027Trust to display\u0027,"},{"line_number":191,"context_line":"        )"},{"line_number":192,"context_line":"        return parser"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_76fb34c1","line":190,"in_reply_to":"1a930d6b_1b96b04c","updated":"2015-01-24 21:48:12.000000000","message":"same comments as above, if IDs are the only way to call up the object then there\u0027s no reason to call it out","commit_id":"9f0fe2cf6234f1bcb31625f0f2e749760a4cbe98"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"77f41c39a0e45430d7288cfdbeb73c41d414b7ff","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                                         domain_id\u003ddomain).id"},{"line_number":103,"context_line":"        project_id \u003d utils.find_resource(identity_client.projects,"},{"line_number":104,"context_line":"                                         parsed_args.project,"},{"line_number":105,"context_line":"                                         domain_id\u003ddomain).id"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        role_names \u003d []"},{"line_number":108,"context_line":"        for role in parsed_args.role:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_1c801cbf","line":105,"updated":"2015-01-27 02:15:31.000000000","message":"I think we shouldn\u0027t assume that trustor, trustee, project are in the same domain. I think we should add three domain parameters such as trustor_domain, trustee_domain, project_domain.","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"312d1e2c30fbd4a9a50f7f6dd0c1637d851f9b00","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                                         domain_id\u003ddomain).id"},{"line_number":103,"context_line":"        project_id \u003d utils.find_resource(identity_client.projects,"},{"line_number":104,"context_line":"                                         parsed_args.project,"},{"line_number":105,"context_line":"                                         domain_id\u003ddomain).id"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        role_names \u003d []"},{"line_number":108,"context_line":"        for role in parsed_args.role:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_c1bdc903","line":105,"in_reply_to":"1a930d6b_1c801cbf","updated":"2015-01-27 07:03:46.000000000","message":"i\u0027ll be honest, it doesn\u0027t make sense to me why we would/should allow for that, but i\u0027m not familiar enough with heat (the main trust users) to say whether or not the users and projects are in the same domain. let me poke around a bit. i don\u0027t want to clutter things with too many options (there are a lot as it is)","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"50b14cac7ccf7c066a6543ebf9608b5fd0639693","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                                         domain_id\u003ddomain).id"},{"line_number":103,"context_line":"        project_id \u003d utils.find_resource(identity_client.projects,"},{"line_number":104,"context_line":"                                         parsed_args.project,"},{"line_number":105,"context_line":"                                         domain_id\u003ddomain).id"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        role_names \u003d []"},{"line_number":108,"context_line":"        for role in parsed_args.role:"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_c8090bdf","line":105,"in_reply_to":"1a930d6b_c1bdc903","updated":"2015-02-09 01:50:13.000000000","message":"I asked some folks from the heat team, and their main use case is using trusts that cross domains, so good call!","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b8533a5c251c4df9c1d75bb2ae22b9c5c4aca40e","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        trust._info.pop(\u0027roles_links\u0027, None)"},{"line_number":202,"context_line":"        trust._info.pop(\u0027links\u0027, None)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # Format roles into something sensible"},{"line_number":205,"context_line":"        msg \u003d \u0027\u0027"},{"line_number":206,"context_line":"        roles \u003d trust._info.pop(\u0027roles\u0027)"},{"line_number":207,"context_line":"        for r in roles:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_4a0e84e6","line":204,"updated":"2015-01-26 04:36:40.000000000","message":"i\u0027m not too happy with the hacking that I have to do here, but what is returned is:\n\n  \"roles\": [{\n    \"id\": \"02061aefd6fc40efaa754815011824ec\",\n    \"links\": {\"self\": \"http://10.0.2.15:5000/v3/roles/02061aefd6fc40efaa754815011824ec\"},\n    \"name\": \"admin\"}],\n\nso.. any help / advice on this would be great,\n\nand this should probably be turned into a helper function, (it\u0027s used again in the create call)","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"fd750258c106bcea40c6e52a08f7623e3e227163","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        trust._info.pop(\u0027roles_links\u0027, None)"},{"line_number":202,"context_line":"        trust._info.pop(\u0027links\u0027, None)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # Format roles into something sensible"},{"line_number":205,"context_line":"        msg \u003d \u0027\u0027"},{"line_number":206,"context_line":"        roles \u003d trust._info.pop(\u0027roles\u0027)"},{"line_number":207,"context_line":"        for r in roles:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_069990c3","line":204,"in_reply_to":"1a930d6b_2165adb4","updated":"2015-01-27 16:02:25.000000000","message":"We have stripped off the python markup for lists, quotes, etc in other places when we do this, but I think we need to probably be careful about doing that for JSON output and I don\u0027t think we have yet.\n\nI prefer the first in prettytable output.","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"031e8d81cd1654316cbfc9f772c0e5cfacb0225b","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        trust._info.pop(\u0027roles_links\u0027, None)"},{"line_number":202,"context_line":"        trust._info.pop(\u0027links\u0027, None)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # Format roles into something sensible"},{"line_number":205,"context_line":"        msg \u003d \u0027\u0027"},{"line_number":206,"context_line":"        roles \u003d trust._info.pop(\u0027roles\u0027)"},{"line_number":207,"context_line":"        for r in roles:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_c07a3e76","line":204,"in_reply_to":"1a930d6b_4a0e84e6","updated":"2015-01-26 16:57:17.000000000","message":"We\u0027ve done _format_foo_detail() and similar elsewhere, I think that would be good here too.\n\nI\u0027m not certain it is worth the function overhead to further decompose this.  Someone is sure to point out a fancy way to use join() here though if we wait long enough. ;)\n\n\n[time passes]\n\n\n  msg \u003d \u0027 \u0027.join([r[\u0027name\u0027] for r in roles])","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"312d1e2c30fbd4a9a50f7f6dd0c1637d851f9b00","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        trust._info.pop(\u0027roles_links\u0027, None)"},{"line_number":202,"context_line":"        trust._info.pop(\u0027links\u0027, None)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # Format roles into something sensible"},{"line_number":205,"context_line":"        msg \u003d \u0027\u0027"},{"line_number":206,"context_line":"        roles \u003d trust._info.pop(\u0027roles\u0027)"},{"line_number":207,"context_line":"        for r in roles:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_2165adb4","line":204,"in_reply_to":"1a930d6b_c07a3e76","updated":"2015-01-27 07:03:46.000000000","message":"Done, and thank you, but the issue is when the trustor has delegated more than one role :(\n\nshould we output:\n\n  roles: admin, demo \n\nor \n\n  roles [admin, demo]\n\nI\u0027m not sure","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"}],"openstackclient/tests/identity/v3/test_trust.py":[{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"77f41c39a0e45430d7288cfdbeb73c41d414b7ff","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        self.trusts_mock \u003d self.app.client_manager.identity.trusts"},{"line_number":27,"context_line":"        self.trusts_mock.reset_mock()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class TestTrustDelete(TestTrust):"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_fcbfd05e","line":29,"updated":"2015-01-27 02:15:31.000000000","message":"Lack of TestTrustCreate?","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"77f41c39a0e45430d7288cfdbeb73c41d414b7ff","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        collist \u003d (\u0027ID\u0027, \u0027Expires At\u0027, \u0027Impersonation\u0027, \u0027Project ID\u0027,"},{"line_number":89,"context_line":"                   \u0027Trustee User ID\u0027, \u0027Trustor User ID\u0027)"},{"line_number":90,"context_line":"        self.assertEqual(columns, collist)"},{"line_number":91,"context_line":"        datalist \u003d (("},{"line_number":92,"context_line":"            identity_fakes.trust_id,"},{"line_number":93,"context_line":"            identity_fakes.trust_expires,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_dcdf74d4","line":90,"updated":"2015-01-27 02:15:31.000000000","message":"This should be self.assertEqual(collist, columns)","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"312d1e2c30fbd4a9a50f7f6dd0c1637d851f9b00","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        collist \u003d (\u0027ID\u0027, \u0027Expires At\u0027, \u0027Impersonation\u0027, \u0027Project ID\u0027,"},{"line_number":89,"context_line":"                   \u0027Trustee User ID\u0027, \u0027Trustor User ID\u0027)"},{"line_number":90,"context_line":"        self.assertEqual(columns, collist)"},{"line_number":91,"context_line":"        datalist \u003d (("},{"line_number":92,"context_line":"            identity_fakes.trust_id,"},{"line_number":93,"context_line":"            identity_fakes.trust_expires,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_010991dd","line":90,"in_reply_to":"1a930d6b_dcdf74d4","updated":"2015-01-27 07:03:46.000000000","message":"Done","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"77f41c39a0e45430d7288cfdbeb73c41d414b7ff","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        collist \u003d (\u0027expires_at\u0027, \u0027id\u0027, \u0027impersonation\u0027, \u0027project_id\u0027,"},{"line_number":131,"context_line":"                   \u0027roles\u0027, \u0027trustee_user_id\u0027, \u0027trustor_user_id\u0027)"},{"line_number":132,"context_line":"        self.assertEqual(columns, collist)"},{"line_number":133,"context_line":"        datalist \u003d ("},{"line_number":134,"context_line":"            identity_fakes.trust_expires,"},{"line_number":135,"context_line":"            identity_fakes.trust_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_5ceb8477","line":132,"updated":"2015-01-27 02:15:31.000000000","message":"This should be self.assertEqual(collist, columns)","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"312d1e2c30fbd4a9a50f7f6dd0c1637d851f9b00","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        collist \u003d (\u0027expires_at\u0027, \u0027id\u0027, \u0027impersonation\u0027, \u0027project_id\u0027,"},{"line_number":131,"context_line":"                   \u0027roles\u0027, \u0027trustee_user_id\u0027, \u0027trustor_user_id\u0027)"},{"line_number":132,"context_line":"        self.assertEqual(columns, collist)"},{"line_number":133,"context_line":"        datalist \u003d ("},{"line_number":134,"context_line":"            identity_fakes.trust_expires,"},{"line_number":135,"context_line":"            identity_fakes.trust_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_210ccdec","line":132,"in_reply_to":"1a930d6b_5ceb8477","updated":"2015-01-27 07:03:46.000000000","message":"Done","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"77f41c39a0e45430d7288cfdbeb73c41d414b7ff","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            identity_fakes.trustee_user_id,"},{"line_number":140,"context_line":"            identity_fakes.user_id"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":"        self.assertEqual(data, datalist)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_3c9f9804","line":142,"updated":"2015-01-27 02:15:31.000000000","message":"This should be self.assertEqual(datalist, data)","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"312d1e2c30fbd4a9a50f7f6dd0c1637d851f9b00","unresolved":false,"context_lines":[{"line_number":139,"context_line":"            identity_fakes.trustee_user_id,"},{"line_number":140,"context_line":"            identity_fakes.user_id"},{"line_number":141,"context_line":"        )"},{"line_number":142,"context_line":"        self.assertEqual(data, datalist)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_6112550a","line":142,"in_reply_to":"1a930d6b_3c9f9804","updated":"2015-01-27 07:03:46.000000000","message":"Done","commit_id":"2bb328445ff19b719c0497e7b4c496e5df18d5b5"}]}
