)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"113203d4b7af0e1487b399b81f19ae0c672f6e95","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-05-01 15:21:19 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"List (effective) role assignments per user, group, project, domain or role."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Iae94f4fee608ea3e09ff38961ad22edc38efb89c"},{"line_number":10,"context_line":"Implements: blueprint roles-assignment-list"},{"line_number":11,"context_line":"Closes-Bug: 1246310"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9ad9bd40_c2e56ea9","line":8,"updated":"2014-05-01 20:17:55.000000000","message":"You should explain what your code does in a couple lines.","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"113203d4b7af0e1487b399b81f19ae0c672f6e95","unresolved":false,"context_lines":[{"line_number":7,"context_line":"List (effective) role assignments per user, group, project, domain or role."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Iae94f4fee608ea3e09ff38961ad22edc38efb89c"},{"line_number":10,"context_line":"Implements: blueprint roles-assignment-list"},{"line_number":11,"context_line":"Closes-Bug: 1246310"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9ad9bd40_e2e2729e","line":10,"updated":"2014-05-01 20:17:55.000000000","message":"Link is broken","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":8932,"name":"Telles Mota Vidal Nóbrega","email":"tellesnobrega@gmail.com","username":"tellesnobrega"},"change_message_id":"cc18f17cc9406ab62996d19700c1c224e6eb8fb3","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2014-05-05 10:08:33 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"List (effective) role assignments per user, group, project, domain or role"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Iae94f4fee608ea3e09ff38961ad22edc38efb89c"},{"line_number":10,"context_line":"Implements: blueprint roles-assignment-list"},{"line_number":11,"context_line":"Closes-Bug: 1246310"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9ad9bd40_02ed518b","line":8,"updated":"2014-05-05 13:20:19.000000000","message":"Explain more what the patch does","commit_id":"b443aaa05e37e8fd047c1f147942a975a0520f7f"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"df3e2c7c65e5b3dd18129487f01020dea2605dbf","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add role assignments list support to identity v3"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The assignments manager and its test class were created"},{"line_number":10,"context_line":"Some fake stubs were also added on the fakes.py module"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iae94f4fee608ea3e09ff38961ad22edc38efb89c"},{"line_number":13,"context_line":"Implements: blueprint roles-assignment-list"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7adec928_c5dd9016","line":10,"updated":"2014-05-08 13:04:09.000000000","message":"I would cite the new command that is being added.","commit_id":"374b09395ad0bb69891306c5ddd9f82cc834d59d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"119cbdce6de25349ab8b45f7949b59815bfd0f75","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add role assignments list support to identity v3"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The assignments manager and its test class were created."},{"line_number":10,"context_line":"Some fake stubs were also added on the fakes.py module."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \"openstack assignment list\" command was created."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3ae8d1ca_9e93b24e","line":9,"updated":"2014-05-28 17:54:20.000000000","message":"s/assignments/role assignments","commit_id":"3e0cde9b8695c1bb7c12d10ee60ccdfd2ded5cc7"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4f25021f55e8a68fe56d0a11cab2e55e0292a5c1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add role assignments list support to identity v3"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The assignments manager and its test class were created."},{"line_number":10,"context_line":"Some fake stubs were also added on the fakes.py module."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \"openstack assignment list\" command was created."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3ae8d1ca_34c9dd78","line":9,"in_reply_to":"3ae8d1ca_9e93b24e","updated":"2014-05-28 18:49:38.000000000","message":"Done","commit_id":"3e0cde9b8695c1bb7c12d10ee60ccdfd2ded5cc7"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"119cbdce6de25349ab8b45f7949b59815bfd0f75","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The assignments manager and its test class were created."},{"line_number":10,"context_line":"Some fake stubs were also added on the fakes.py module."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \"openstack assignment list\" command was created."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iae94f4fee608ea3e09ff38961ad22edc38efb89c"},{"line_number":15,"context_line":"Implements: blueprint roles-assignment-list"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3ae8d1ca_de9d3a5b","line":12,"updated":"2014-05-28 17:54:20.000000000","message":"\"openstack role assignment list\"","commit_id":"3e0cde9b8695c1bb7c12d10ee60ccdfd2ded5cc7"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4f25021f55e8a68fe56d0a11cab2e55e0292a5c1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The assignments manager and its test class were created."},{"line_number":10,"context_line":"Some fake stubs were also added on the fakes.py module."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \"openstack assignment list\" command was created."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iae94f4fee608ea3e09ff38961ad22edc38efb89c"},{"line_number":15,"context_line":"Implements: blueprint roles-assignment-list"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3ae8d1ca_74a285af","line":12,"in_reply_to":"3ae8d1ca_de9d3a5b","updated":"2014-05-28 18:49:38.000000000","message":"Done","commit_id":"3e0cde9b8695c1bb7c12d10ee60ccdfd2ded5cc7"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a6e8217bdad97b61689993a5c2e243817a6e1dc0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The assignments manager and its test class were created."},{"line_number":10,"context_line":"Some fake stubs were also added on the fakes.py module."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The \"openstack assignment list\" command was created."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Iae94f4fee608ea3e09ff38961ad22edc38efb89c"},{"line_number":15,"context_line":"Implements: blueprint roles-assignment-list"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1ae5cdf2_19135f67","line":12,"updated":"2014-05-30 18:46:17.000000000","message":"has it changed to \"role assignment list\"?","commit_id":"afb7e77f54f81689d7799a1fbbd8ad58eb006a53"}],"openstackclient/identity/v3/assignment.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"4393f6a7a862a05ab1131afb751c618905d0fa79","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":106,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":107,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":108,"context_line":"        data \u003d self.app.client_manager.identity.assignments.list("},{"line_number":109,"context_line":"            domain\u003ddomain,"},{"line_number":110,"context_line":"            user\u003duser,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_360adb21","line":107,"updated":"2014-05-01 20:26:36.000000000","message":"The order of attibutes in \"columns\" does not match the order in \"data\" of the attributes below. It is recommended to keep the same order.","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"498f2e9e6d30743d86bca025080ae7189f14fc58","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":106,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":107,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":108,"context_line":"        data \u003d self.app.client_manager.identity.assignments.list("},{"line_number":109,"context_line":"            domain\u003ddomain,"},{"line_number":110,"context_line":"            user\u003duser,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_68646049","line":107,"in_reply_to":"9ad9bd40_360adb21","updated":"2014-05-02 23:02:18.000000000","message":"I\u0027m okay with the order of columns. They don\u0027t interfere with the order of the arguments being passed into the manager. They are only how we choose to represent the data in the terminal.","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"1ec75f416d4c600767649c15eb8bd54addd0d4a0","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":106,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":107,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":108,"context_line":"        data \u003d self.app.client_manager.identity.assignments.list("},{"line_number":109,"context_line":"            domain\u003ddomain,"},{"line_number":110,"context_line":"            user\u003duser,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_366f3bc7","line":107,"in_reply_to":"9ad9bd40_360adb21","updated":"2014-05-01 20:29:45.000000000","message":"Recommended by whom?","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0686ba13f93a8a6095af1cefc895fc53f3f5a416","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            project\u003dproject,"},{"line_number":113,"context_line":"            role\u003drole,"},{"line_number":114,"context_line":"            effective\u003deffective)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        for s in data:"},{"line_number":117,"context_line":"            scope \u003d s.scope"},{"line_number":118,"context_line":"            if \u0027project\u0027 in scope:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_98bb8ee4","line":115,"updated":"2014-05-05 14:41:51.000000000","message":"Can you add a comment about what is going on here? I believe it\u0027s just because of the extra scope \u0027layer\u0027 in the json?\n\nIs it coming back as?\n  assignment/scope/project\n  assignment/scope/domain\n\nand you want it as:\n  assignment/project\n  assignment/domain\n\nSo that it\u0027s the same level as:\n  assignment/role\n\nBasically, a comment would be helpful to anyone not familiar with the identity API.","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"1445bb65217a81fc32f8c1662d227660fb0aad68","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            project\u003dproject,"},{"line_number":113,"context_line":"            role\u003drole,"},{"line_number":114,"context_line":"            effective\u003deffective)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        for s in data:"},{"line_number":117,"context_line":"            scope \u003d s.scope"},{"line_number":118,"context_line":"            if \u0027project\u0027 in scope:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_b3cb151d","line":115,"in_reply_to":"9ad9bd40_98bb8ee4","updated":"2014-05-05 19:07:21.000000000","message":"Exactly! I\u0027ll add a comment explaining it.","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0686ba13f93a8a6095af1cefc895fc53f3f5a416","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            effective\u003deffective)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        for s in data:"},{"line_number":117,"context_line":"            scope \u003d s.scope"},{"line_number":118,"context_line":"            if \u0027project\u0027 in scope:"},{"line_number":119,"context_line":"                setattr(s, \u0027project\u0027, scope[\u0027project\u0027])"},{"line_number":120,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_18cbfe53","line":117,"updated":"2014-05-05 14:41:51.000000000","message":"use assignment instead of s for variable name, no point in making it shorter","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"1445bb65217a81fc32f8c1662d227660fb0aad68","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            effective\u003deffective)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        for s in data:"},{"line_number":117,"context_line":"            scope \u003d s.scope"},{"line_number":118,"context_line":"            if \u0027project\u0027 in scope:"},{"line_number":119,"context_line":"                setattr(s, \u0027project\u0027, scope[\u0027project\u0027])"},{"line_number":120,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_f3d59db9","line":117,"in_reply_to":"9ad9bd40_18cbfe53","updated":"2014-05-05 19:07:21.000000000","message":"OK.","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0686ba13f93a8a6095af1cefc895fc53f3f5a416","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            scope \u003d s.scope"},{"line_number":118,"context_line":"            if \u0027project\u0027 in scope:"},{"line_number":119,"context_line":"                setattr(s, \u0027project\u0027, scope[\u0027project\u0027])"},{"line_number":120,"context_line":"            else:"},{"line_number":121,"context_line":"                setattr(s, \u0027domain\u0027, scope[\u0027domain\u0027])"},{"line_number":122,"context_line":"            del s.scope"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_3878c22a","line":120,"updated":"2014-05-05 14:41:51.000000000","message":"I think it would be safer to say:\n\n  elif \u0027domain\u0027 in scope:\n    setattr(s, \u0027domain\u0027, scope[\u0027domain\u0027])\n  else:\n    setattr(s, \u0027domain\u0027, None)\n    setattr(s, \u0027project\u0027, None)","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"1445bb65217a81fc32f8c1662d227660fb0aad68","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            scope \u003d s.scope"},{"line_number":118,"context_line":"            if \u0027project\u0027 in scope:"},{"line_number":119,"context_line":"                setattr(s, \u0027project\u0027, scope[\u0027project\u0027])"},{"line_number":120,"context_line":"            else:"},{"line_number":121,"context_line":"                setattr(s, \u0027domain\u0027, scope[\u0027domain\u0027])"},{"line_number":122,"context_line":"            del s.scope"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_c4060c1d","line":120,"in_reply_to":"9ad9bd40_3878c22a","updated":"2014-05-05 19:07:21.000000000","message":"OK.","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0686ba13f93a8a6095af1cefc895fc53f3f5a416","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                                \"Group\": _get_property,"},{"line_number":133,"context_line":"                                \"Project\": _get_property,"},{"line_number":134,"context_line":"                                \"Domain\": _get_property},"},{"line_number":135,"context_line":"                ) for s in data))"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_13de816d","line":135,"updated":"2014-05-05 14:41:51.000000000","message":"You\u0027re going over the loop again after just going through it a few lines earlier, and all you\u0027re doing is grabbing the id?\n\nwhy not:\n  for s in data:\n    scope \u003d s.scope\n    if \u0027project\u0027 in scope:\n      setattr(s, \u0027project\u0027, scope[\u0027project\u0027][\u0027id\u0027])\n    elif \u0027domain\u0027 in scope:\n      setattr(s, \u0027domain\u0027, scope[\u0027domain\u0027][\u0027id\u0027])\n    else:\n      setattr(s, \u0027domain\u0027, None)\n      setattr(s, \u0027project\u0027, None)\n    del s.scope\n\n    if \u0027user\u0027 in s:\n      setattr(s, \u0027user\u0027, s[\u0027user\u0027][\u0027id\u0027])\n    elif \u0027group\u0027 in scope:\n      setattr(s, \u0027group\u0027, s[\u0027group\u0027][\u0027id\u0027])\n    else:\n      setattr(s, \u0027user\u0027, None)\n      setattr(s, \u0027group\u0027, None)\n  \n    if \u0027role\u0027 in s:\n      setattr(s, \u0027role\u0027, s[\u0027role\u0027][\u0027id\u0027])\n    else:\n      setattr(s, \u0027role\u0027, None)\n\nand just:\n\n  return columns, data\n\nThis is a bit weird, since they all come back as ID\u0027s, but we want to represent them as top level entities. I\u0027d be interested to hear what dtroyer has to say","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"1445bb65217a81fc32f8c1662d227660fb0aad68","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                                \"Group\": _get_property,"},{"line_number":133,"context_line":"                                \"Project\": _get_property,"},{"line_number":134,"context_line":"                                \"Domain\": _get_property},"},{"line_number":135,"context_line":"                ) for s in data))"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_845de417","line":135,"in_reply_to":"9ad9bd40_13de816d","updated":"2014-05-05 19:07:21.000000000","message":"Done","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4fc8e245e6bfa52295ab3fca9e0e7313fb4d6746","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                                \"Group\": _get_property,"},{"line_number":133,"context_line":"                                \"Project\": _get_property,"},{"line_number":134,"context_line":"                                \"Domain\": _get_property},"},{"line_number":135,"context_line":"                ) for s in data))"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_18b21994","line":135,"in_reply_to":"9ad9bd40_13de816d","updated":"2014-05-05 17:06:33.000000000","message":"In general I\u0027d rather be returning names or descriptive text rather than IDs but not until we have some client-side caching if it\u0027s only IDs being returned.","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"1445bb65217a81fc32f8c1662d227660fb0aad68","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                                \"Group\": _get_property,"},{"line_number":133,"context_line":"                                \"Project\": _get_property,"},{"line_number":134,"context_line":"                                \"Domain\": _get_property},"},{"line_number":135,"context_line":"                ) for s in data))"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad9bd40_a4d2e859","line":135,"in_reply_to":"9ad9bd40_18b21994","updated":"2014-05-05 19:07:21.000000000","message":"We\u0027ve made it return IDs, once its creation purpose is to be used to solve a bug on Horizon. Dealing directly with id would minimize the impact on Horizon","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"df3e2c7c65e5b3dd18129487f01020dea2605dbf","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        data_parsed \u003d []"},{"line_number":121,"context_line":"        for assignment in data:"},{"line_number":122,"context_line":"            # Removing the extra scope \u0027layer\u0027 in the assignment json"},{"line_number":123,"context_line":"            scope \u003d assignment.scope"},{"line_number":124,"context_line":"            if \u0027project\u0027 in scope:"},{"line_number":125,"context_line":"                setattr(assignment, \u0027project\u0027, scope[\u0027project\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_05b138e1","line":122,"updated":"2014-05-08 13:04:09.000000000","message":"I would put the \u0027\u0027 at scope, not at layer","commit_id":"374b09395ad0bb69891306c5ddd9f82cc834d59d"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"df3e2c7c65e5b3dd18129487f01020dea2605dbf","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            else:"},{"line_number":148,"context_line":"                setattr(assignment, \u0027role\u0027, \u0027\u0027)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"            # Parsing the assignment object to a tuple (including black fields)"},{"line_number":151,"context_line":"            # and adding to the result array"},{"line_number":152,"context_line":"            data_parsed.append(self._as_tuple(assignment))"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_a573244c","line":150,"updated":"2014-05-08 13:04:09.000000000","message":"typo: black (should be \"blank\", right?)\n\n\"Creating a tuple from data object fields (including the blank ones)\"","commit_id":"374b09395ad0bb69891306c5ddd9f82cc834d59d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"cc0635beb508d9e7fe5d5ac0ccc64029cac6f3ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3ae8d1ca_ba13210c","updated":"2014-05-28 14:32:13.000000000","message":"rename to role_assignment.py","commit_id":"ee2a6ad9276a47a71669ffa4fb8a9ec02346e8be"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"34660b235788a5664c127928ad1b1eae49f0ebd3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"},{"line_number":115,"context_line":"            group\u003dgroup,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ae8d1ca_97b71e86","line":112,"updated":"2014-05-28 14:22:00.000000000","message":"it\u0027s role_assignments now \u003d)","commit_id":"ee2a6ad9276a47a71669ffa4fb8a9ec02346e8be"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"6aca952a910ee54a8863d621ff3561144f5633c8","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"},{"line_number":115,"context_line":"            group\u003dgroup,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ae8d1ca_faf3e99c","line":112,"in_reply_to":"3ae8d1ca_97b71e86","updated":"2014-05-28 14:58:33.000000000","message":"Done","commit_id":"ee2a6ad9276a47a71669ffa4fb8a9ec02346e8be"}],"openstackclient/identity/v3/role_assignment.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"05e8be34b71d4cc47fab9023f42b31fe9269d276","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            role \u003d utils.find_resource("},{"line_number":77,"context_line":"                identity_client.roles,"},{"line_number":78,"context_line":"                parsed_args.role,"},{"line_number":79,"context_line":"            )"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        user \u003d None"},{"line_number":82,"context_line":"        if parsed_args.user:"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_3e090596","line":79,"updated":"2014-05-29 21:32:20.000000000","message":"Should role be the resource or should it be role.id?  This goes for all this arguments to identity.role_assignments.list","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7871cb228584ce2189fd92814206e7d7064ce45f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            role \u003d utils.find_resource("},{"line_number":77,"context_line":"                identity_client.roles,"},{"line_number":78,"context_line":"                parsed_args.role,"},{"line_number":79,"context_line":"            )"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        user \u003d None"},{"line_number":82,"context_line":"        if parsed_args.user:"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_a16c1a38","line":79,"in_reply_to":"1ae5cdf2_3e090596","updated":"2014-05-29 21:52:51.000000000","message":"i think sending the resource is fine.","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"05e8be34b71d4cc47fab9023f42b31fe9269d276","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.role_assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_7ea46d57","line":111,"updated":"2014-05-29 21:32:20.000000000","message":"Something like this would be better:\n\nif parsed_args.columns:\n    columns \u003d parsed_args.columns\nelse\n    columns \u003d (...default list...)","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"6b86b18b496428feff8cee8f28d026710e479bd7","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.role_assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_e4a9d025","line":111,"in_reply_to":"1ae5cdf2_7ea46d57","updated":"2014-05-29 22:39:01.000000000","message":"^^ Ignore this comment for now.","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"187fe71327d4b41e7c27b1c91fd75cf7315c47d0","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.role_assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_625e7eeb","line":111,"in_reply_to":"1ae5cdf2_e4a9d025","updated":"2014-05-30 17:21:33.000000000","message":"Ok.","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"05e8be34b71d4cc47fab9023f42b31fe9269d276","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.role_assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"},{"line_number":115,"context_line":"            group\u003dgroup,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_be47d51c","line":112,"updated":"2014-05-29 21:32:20.000000000","message":"Potentially, identity_client here","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7871cb228584ce2189fd92814206e7d7064ce45f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.role_assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"},{"line_number":115,"context_line":"            group\u003dgroup,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_01d86e1c","line":112,"in_reply_to":"1ae5cdf2_be47d51c","updated":"2014-05-29 21:52:51.000000000","message":"++","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"187fe71327d4b41e7c27b1c91fd75cf7315c47d0","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.role_assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"},{"line_number":115,"context_line":"            group\u003dgroup,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_d33718af","line":112,"in_reply_to":"1ae5cdf2_be47d51c","updated":"2014-05-30 17:21:33.000000000","message":"Sorry. Didn\u0027t understand this comment.","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"fb61c50240bf0869bbe29ee44d0ab4ddd28d3c7f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.role_assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"},{"line_number":115,"context_line":"            group\u003dgroup,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_f3bb34c2","line":112,"in_reply_to":"1ae5cdf2_d33718af","updated":"2014-05-30 17:29:17.000000000","message":"Up above you do this:\n\nidentity_client \u003d self.app.client_manager.identity","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"fb8c512b4a9a0399f2da69c3198b73a56711e620","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d self.app.client_manager.identity.role_assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"},{"line_number":115,"context_line":"            group\u003dgroup,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_3304bc7a","line":112,"in_reply_to":"1ae5cdf2_f3bb34c2","updated":"2014-05-30 17:31:41.000000000","message":"Ok. Got it! Thanks","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":7680,"name":"Alex Gaynor","email":"alex.gaynor@gmail.com","username":"alex_gaynor"},"change_message_id":"6f9cd1bde0d2cd0a56c6422b190a13a837463131","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            scope \u003d assignment.scope"},{"line_number":124,"context_line":"            if \u0027project\u0027 in scope:"},{"line_number":125,"context_line":"                setattr(assignment, \u0027project\u0027, scope[\u0027project\u0027][\u0027id\u0027])"},{"line_number":126,"context_line":"                setattr(assignment, \u0027domain\u0027, \u0027\u0027)"},{"line_number":127,"context_line":"            elif \u0027domain\u0027 in scope:"},{"line_number":128,"context_line":"                setattr(assignment, \u0027domain\u0027, scope[\u0027domain\u0027][\u0027id\u0027])"},{"line_number":129,"context_line":"                setattr(assignment, \u0027project\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3ae8d1ca_b4e88db5","line":126,"updated":"2014-05-28 18:52:23.000000000","message":"There\u0027s no reason to use setattr here, or anywhere else below: `assignment.domain \u003d \u0027\u0027` works fine.","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7871cb228584ce2189fd92814206e7d7064ce45f","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            scope \u003d assignment.scope"},{"line_number":124,"context_line":"            if \u0027project\u0027 in scope:"},{"line_number":125,"context_line":"                setattr(assignment, \u0027project\u0027, scope[\u0027project\u0027][\u0027id\u0027])"},{"line_number":126,"context_line":"                setattr(assignment, \u0027domain\u0027, \u0027\u0027)"},{"line_number":127,"context_line":"            elif \u0027domain\u0027 in scope:"},{"line_number":128,"context_line":"                setattr(assignment, \u0027domain\u0027, scope[\u0027domain\u0027][\u0027id\u0027])"},{"line_number":129,"context_line":"                setattr(assignment, \u0027project\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_c1220601","line":126,"in_reply_to":"3ae8d1ca_b4e88db5","updated":"2014-05-29 21:52:51.000000000","message":"++","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"187fe71327d4b41e7c27b1c91fd75cf7315c47d0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            scope \u003d assignment.scope"},{"line_number":124,"context_line":"            if \u0027project\u0027 in scope:"},{"line_number":125,"context_line":"                setattr(assignment, \u0027project\u0027, scope[\u0027project\u0027][\u0027id\u0027])"},{"line_number":126,"context_line":"                setattr(assignment, \u0027domain\u0027, \u0027\u0027)"},{"line_number":127,"context_line":"            elif \u0027domain\u0027 in scope:"},{"line_number":128,"context_line":"                setattr(assignment, \u0027domain\u0027, scope[\u0027domain\u0027][\u0027id\u0027])"},{"line_number":129,"context_line":"                setattr(assignment, \u0027project\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_7648ff5b","line":126,"in_reply_to":"3ae8d1ca_b4e88db5","updated":"2014-05-30 17:21:33.000000000","message":"Done","commit_id":"610504af7101d78ae91abd6ae6be646f9a8255c1"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"6f9e86eb344ad740f818b945305213c4fcec1752","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \u0027--effective\u0027,"},{"line_number":32,"context_line":"            action\u003d\"store_true\","},{"line_number":33,"context_line":"            default\u003dFalse,"},{"line_number":34,"context_line":"            help\u003d\u0027Returns only effective role assignments\u0027,"},{"line_number":35,"context_line":"        )"},{"line_number":36,"context_line":"        parser.add_argument("},{"line_number":37,"context_line":"            \u0027--role\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_d253db14","line":34,"updated":"2014-06-05 15:54:31.000000000","message":"not sure \"only\" is appropriate here, as enabling --effective will return *many* additional role assignments that result from inheritance domain-level project inheritance","commit_id":"58f80e4c7544c0ee064c1629b3f128a628fc71d8"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"6f9e86eb344ad740f818b945305213c4fcec1752","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        effective \u003d True if parsed_args.effective else False"},{"line_number":110,"context_line":"        self.log.debug(\u0027take_action(%s)\u0027 % parsed_args)"},{"line_number":111,"context_line":"        columns \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":112,"context_line":"        data \u003d identity_client.role_assignments.list("},{"line_number":113,"context_line":"            domain\u003ddomain,"},{"line_number":114,"context_line":"            user\u003duser,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_d2d91b58","line":111,"updated":"2014-06-05 15:54:31.000000000","message":"perhaps beyond the scope of this patch, but the name/ID ambiguity here is painful","commit_id":"58f80e4c7544c0ee064c1629b3f128a628fc71d8"}],"openstackclient/tests/identity/v3/test_assignment.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"4393f6a7a862a05ab1131afb751c618905d0fa79","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            role\u003dNone,"},{"line_number":87,"context_line":"            user\u003dNone,"},{"line_number":88,"context_line":"            project\u003dNone)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        collist \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":91,"context_line":"        self.assertEqual(columns, collist)"},{"line_number":92,"context_line":"        datalist \u003d (("}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_162cf798","line":89,"updated":"2014-05-01 20:26:36.000000000","message":"The order of attibutes in \"colist\" does not match the order in \"datalist\" of the attributes below. It is recommended to keep the same order.","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"4393f6a7a862a05ab1131afb751c618905d0fa79","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            project\u003dNone,"},{"line_number":144,"context_line":"            role\u003dNone,"},{"line_number":145,"context_line":"            effective\u003dFalse)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        collist \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":148,"context_line":"        self.assertEqual(columns, collist)"},{"line_number":149,"context_line":"        datalist \u003d (("}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_3621fb9f","line":146,"updated":"2014-05-01 20:26:36.000000000","message":"+1","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"4393f6a7a862a05ab1131afb751c618905d0fa79","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            project\u003dNone,"},{"line_number":201,"context_line":"            role\u003dNone,"},{"line_number":202,"context_line":"            user\u003dNone)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        collist \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":205,"context_line":"        self.assertEqual(columns, collist)"},{"line_number":206,"context_line":"        datalist \u003d (("}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_56267fb8","line":203,"updated":"2014-05-01 20:26:36.000000000","message":"+1","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"4393f6a7a862a05ab1131afb751c618905d0fa79","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            role\u003dNone,"},{"line_number":259,"context_line":"            user\u003dNone)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        collist \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":262,"context_line":"        self.assertEqual(columns, collist)"},{"line_number":263,"context_line":"        datalist \u003d (("},{"line_number":264,"context_line":"            identity_fakes.role_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_763aa3ce","line":261,"updated":"2014-05-01 20:26:36.000000000","message":"+1","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"4393f6a7a862a05ab1131afb751c618905d0fa79","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            role\u003dNone,"},{"line_number":316,"context_line":"            user\u003dNone)"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        collist \u003d (\u0027Role\u0027, \u0027User\u0027, \u0027Group\u0027, \u0027Project\u0027, \u0027Domain\u0027)"},{"line_number":319,"context_line":"        self.assertEqual(columns, collist)"},{"line_number":320,"context_line":"        datalist \u003d (("},{"line_number":321,"context_line":"            identity_fakes.role_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_b6342bdf","line":318,"updated":"2014-05-01 20:26:36.000000000","message":"+1","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"4393f6a7a862a05ab1131afb751c618905d0fa79","unresolved":false,"context_lines":[{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        # DisplayCommandBase.take_action() returns two tuples"},{"line_number":363,"context_line":"        columns, data \u003d self.cmd.take_action(parsed_args)"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        self.assignments_mock.list.assert_called_with("},{"line_number":366,"context_line":"            domain\u003dNone,"},{"line_number":367,"context_line":"            group\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_f64dd373","line":364,"updated":"2014-05-01 20:26:36.000000000","message":"+1","commit_id":"b41ad529b033435767d4bcf97f615dd08e82661e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"cc0635beb508d9e7fe5d5ac0ccc64029cac6f3ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3ae8d1ca_5a069dcf","updated":"2014-05-28 14:32:13.000000000","message":"rename to test_role_assignment.py","commit_id":"ee2a6ad9276a47a71669ffa4fb8a9ec02346e8be"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"6aca952a910ee54a8863d621ff3561144f5633c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3ae8d1ca_3dbaab0a","in_reply_to":"3ae8d1ca_5a069dcf","updated":"2014-05-28 14:58:33.000000000","message":"Done","commit_id":"ee2a6ad9276a47a71669ffa4fb8a9ec02346e8be"}],"openstackclient/tests/identity/v3/test_role_assignment.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a6e8217bdad97b61689993a5c2e243817a6e1dc0","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        # Get the command object to test"},{"line_number":57,"context_line":"        self.cmd \u003d role_assignment.ListRoleAssignment(self.app, None)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_assignment_list_no_filters(self):"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        self.role_assignments_mock.list.return_value \u003d ["},{"line_number":62,"context_line":"            fakes.FakeResource("}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_7410ea4e","line":59,"updated":"2014-05-30 18:46:17.000000000","message":"shouldn\u0027t be test_role_assignments_list_no_filters()?","commit_id":"afb7e77f54f81689d7799a1fbbd8ad58eb006a53"}],"setup.cfg":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0686ba13f93a8a6095af1cefc895fc53f3f5a416","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    role_remove \u003d openstackclient.identity.v3.role:RemoveRole"},{"line_number":223,"context_line":"    role_show \u003d openstackclient.identity.v3.role:ShowRole"},{"line_number":224,"context_line":"    role_set \u003d openstackclient.identity.v3.role:SetRole"},{"line_number":225,"context_line":"    role_assignment_list \u003d openstackclient.identity.v3.ssignment:ListAssignment"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    service_create \u003d openstackclient.identity.v3.service:CreateService"},{"line_number":228,"context_line":"    service_delete \u003d openstackclient.identity.v3.service:DeleteService"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"9ad9bd40_f3ce7db3","line":225,"updated":"2014-05-05 14:41:51.000000000","message":"i think i like just assignment_list, it\u0027s less characters, and i think assignment is pretty unique right now\n\nand writing out:\n\n  openstack role assignment list\n\nand having role as an optional param seems weird to me","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"1445bb65217a81fc32f8c1662d227660fb0aad68","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    role_remove \u003d openstackclient.identity.v3.role:RemoveRole"},{"line_number":223,"context_line":"    role_show \u003d openstackclient.identity.v3.role:ShowRole"},{"line_number":224,"context_line":"    role_set \u003d openstackclient.identity.v3.role:SetRole"},{"line_number":225,"context_line":"    role_assignment_list \u003d openstackclient.identity.v3.ssignment:ListAssignment"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    service_create \u003d openstackclient.identity.v3.service:CreateService"},{"line_number":228,"context_line":"    service_delete \u003d openstackclient.identity.v3.service:DeleteService"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"9ad9bd40_d36ed900","line":225,"in_reply_to":"9ad9bd40_f3ce7db3","updated":"2014-05-05 19:07:21.000000000","message":"@steve OK, thanks.\n\n@dtroyer Currently, I don\u0027t think there are other kinds of assignments. Do you suggest another name to this command? Thanks for the typo note.","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4fc8e245e6bfa52295ab3fca9e0e7313fb4d6746","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    role_remove \u003d openstackclient.identity.v3.role:RemoveRole"},{"line_number":223,"context_line":"    role_show \u003d openstackclient.identity.v3.role:ShowRole"},{"line_number":224,"context_line":"    role_set \u003d openstackclient.identity.v3.role:SetRole"},{"line_number":225,"context_line":"    role_assignment_list \u003d openstackclient.identity.v3.ssignment:ListAssignment"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    service_create \u003d openstackclient.identity.v3.service:CreateService"},{"line_number":228,"context_line":"    service_delete \u003d openstackclient.identity.v3.service:DeleteService"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"9ad9bd40_58c2e134","line":225,"in_reply_to":"9ad9bd40_f3ce7db3","updated":"2014-05-05 17:06:33.000000000","message":"What other kinds of assignments may be out there?  If one comes along then we\u0027ll have the opportunity to disambiguate them with either a command change or a new option.\n\nI\u0027m not tied to using the API name for things like this if there is a better noun to use here...\n\nThere\u0027s also a typo at .v3.ssignment:","commit_id":"b8dd4bbbfc75923ddfe0408e5a2543e983cfe637"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"cc0635beb508d9e7fe5d5ac0ccc64029cac6f3ff","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    identity_provider_list \u003d openstackclient.identity.v3.identity_provider:ListIdentityProvider"},{"line_number":206,"context_line":"    identity_provider_set \u003d openstackclient.identity.v3.identity_provider:SetIdentityProvider"},{"line_number":207,"context_line":"    identity_provider_show \u003d openstackclient.identity.v3.identity_provider:ShowIdentityProvider"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    policy_create \u003d openstackclient.identity.v3.policy:CreatePolicy"},{"line_number":210,"context_line":"    policy_delete \u003d openstackclient.identity.v3.policy:DeletePolicy"},{"line_number":211,"context_line":"    policy_list \u003d openstackclient.identity.v3.policy:ListPolicy"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"3ae8d1ca_fabf69fa","side":"PARENT","line":208,"updated":"2014-05-28 14:32:13.000000000","message":"i doubt this was intentional, looks like you didn\u0027t rebase off latest?","commit_id":"870e7ddbcce5d5f1b1bd36bb3ad95665565b3ced"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"6aca952a910ee54a8863d621ff3561144f5633c8","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    identity_provider_list \u003d openstackclient.identity.v3.identity_provider:ListIdentityProvider"},{"line_number":206,"context_line":"    identity_provider_set \u003d openstackclient.identity.v3.identity_provider:SetIdentityProvider"},{"line_number":207,"context_line":"    identity_provider_show \u003d openstackclient.identity.v3.identity_provider:ShowIdentityProvider"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    policy_create \u003d openstackclient.identity.v3.policy:CreatePolicy"},{"line_number":210,"context_line":"    policy_delete \u003d openstackclient.identity.v3.policy:DeletePolicy"},{"line_number":211,"context_line":"    policy_list \u003d openstackclient.identity.v3.policy:ListPolicy"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"3ae8d1ca_1a2175fb","side":"PARENT","line":208,"in_reply_to":"3ae8d1ca_fabf69fa","updated":"2014-05-28 14:58:33.000000000","message":"Done","commit_id":"870e7ddbcce5d5f1b1bd36bb3ad95665565b3ced"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"cc0635beb508d9e7fe5d5ac0ccc64029cac6f3ff","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    role_remove \u003d openstackclient.identity.v3.role:RemoveRole"},{"line_number":223,"context_line":"    role_show \u003d openstackclient.identity.v3.role:ShowRole"},{"line_number":224,"context_line":"    role_set \u003d openstackclient.identity.v3.role:SetRole"},{"line_number":225,"context_line":"    assignment_list \u003d openstackclient.identity.v3.assignment:ListAssignment"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    service_create \u003d openstackclient.identity.v3.service:CreateService"},{"line_number":228,"context_line":"    service_delete \u003d openstackclient.identity.v3.service:DeleteService"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"3ae8d1ca_da72ad7b","line":225,"updated":"2014-05-28 14:32:13.000000000","message":"i\u0027m wondering if we want to keep things consistent with keystoneclient and call everything *role* assignment.\n\nrole_assignment_list \u003d openstackclient.identity.v3.role_assignment:LisRoletAssignment","commit_id":"ee2a6ad9276a47a71669ffa4fb8a9ec02346e8be"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"37c87654d5f2aa8c1464102269a9b75fa337d6ec","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    role_remove \u003d openstackclient.identity.v3.role:RemoveRole"},{"line_number":223,"context_line":"    role_show \u003d openstackclient.identity.v3.role:ShowRole"},{"line_number":224,"context_line":"    role_set \u003d openstackclient.identity.v3.role:SetRole"},{"line_number":225,"context_line":"    assignment_list \u003d openstackclient.identity.v3.assignment:ListAssignment"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    service_create \u003d openstackclient.identity.v3.service:CreateService"},{"line_number":228,"context_line":"    service_delete \u003d openstackclient.identity.v3.service:DeleteService"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"3ae8d1ca_1a1b351c","line":225,"in_reply_to":"3ae8d1ca_da72ad7b","updated":"2014-05-28 14:33:17.000000000","message":"+1","commit_id":"ee2a6ad9276a47a71669ffa4fb8a9ec02346e8be"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"6aca952a910ee54a8863d621ff3561144f5633c8","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    role_remove \u003d openstackclient.identity.v3.role:RemoveRole"},{"line_number":223,"context_line":"    role_show \u003d openstackclient.identity.v3.role:ShowRole"},{"line_number":224,"context_line":"    role_set \u003d openstackclient.identity.v3.role:SetRole"},{"line_number":225,"context_line":"    assignment_list \u003d openstackclient.identity.v3.assignment:ListAssignment"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    service_create \u003d openstackclient.identity.v3.service:CreateService"},{"line_number":228,"context_line":"    service_delete \u003d openstackclient.identity.v3.service:DeleteService"}],"source_content_type":"text/x-ttcn-cfg","patch_set":9,"id":"3ae8d1ca_7a7d19e7","line":225,"in_reply_to":"3ae8d1ca_da72ad7b","updated":"2014-05-28 14:58:33.000000000","message":"Done","commit_id":"ee2a6ad9276a47a71669ffa4fb8a9ec02346e8be"}]}
