)]}'
{"doc/source/command-objects/user.rst":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"80601e87510d269e83d4555a32185d705e3c7e56","unresolved":false,"context_lines":[{"line_number":103,"context_line":".. code:: bash"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    os user list"},{"line_number":106,"context_line":"        [--project \u003cproject\u003e]"},{"line_number":107,"context_line":"        [--long]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":".. option:: --project \u003cproject\u003e"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a961159_a6638caf","line":106,"updated":"2015-01-07 04:36:30.000000000","message":"if we wanted to condense this back to one command, i\u0027m not sure how to represent the options here.\n\nsince in v2 project is a solo argument, but in v3 it\u0027s mutually exclusive with --group.","commit_id":"c734d7ba49f179dc59998e667ed4e99fea092f72"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"d46b564ff3c34b7ce29abf31228952e1c1c2b667","unresolved":false,"context_lines":[{"line_number":103,"context_line":".. code:: bash"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    os user list"},{"line_number":106,"context_line":"        [--project \u003cproject\u003e]"},{"line_number":107,"context_line":"        [--long]"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":".. option:: --project \u003cproject\u003e"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a961159_0ae4293a","line":106,"in_reply_to":"3a961159_a6638caf","updated":"2015-01-08 21:17:02.000000000","message":"I don\u0027t think that matters for doc purposes...a mutex group of 1 is just an option.  So --group is v3 only and be done.","commit_id":"c734d7ba49f179dc59998e667ed4e99fea092f72"}],"openstackclient/identity/v3/user.py":[{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"80f7a4f8c886c7d8fdf45b9680e741f90cf2ea11","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"            assignments \u003d identity_client.role_assignments.list("},{"line_number":237,"context_line":"                domain\u003dNone, user\u003dNone, group\u003dNone,"},{"line_number":238,"context_line":"                project\u003dproject, role\u003dNone)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"            data \u003d []"},{"line_number":241,"context_line":"            for assignment in assignments:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_8c738ee6","line":238,"updated":"2014-12-17 03:00:02.000000000","message":"I think this should be identity_client.role_assignments.list(project\u003dproject)","commit_id":"8d1597cedcb40b447a8572819a13da5b0ebc1423"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3cb79c9ea659774ed7c7481ec01266336ff7a3fd","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"            assignments \u003d identity_client.role_assignments.list("},{"line_number":237,"context_line":"                domain\u003dNone, user\u003dNone, group\u003dNone,"},{"line_number":238,"context_line":"                project\u003dproject, role\u003dNone)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"            data \u003d []"},{"line_number":241,"context_line":"            for assignment in assignments:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_3f88fae6","line":238,"in_reply_to":"3a961159_8c738ee6","updated":"2014-12-17 03:05:09.000000000","message":"will try, thanks","commit_id":"8d1597cedcb40b447a8572819a13da5b0ebc1423"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"80f7a4f8c886c7d8fdf45b9680e741f90cf2ea11","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                        identity_client.users,"},{"line_number":245,"context_line":"                        assignment.user[\u0027id\u0027],"},{"line_number":246,"context_line":"                    )"},{"line_number":247,"context_line":"                if user not in data:"},{"line_number":248,"context_line":"                    data.append(user)"},{"line_number":249,"context_line":"        else:"},{"line_number":250,"context_line":"            data \u003d identity_client.users.list("}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_bf9b0a71","line":247,"updated":"2014-12-17 03:00:02.000000000","message":"Should we move this check before find_resource? This can reduce the number of communication with keystone.","commit_id":"8d1597cedcb40b447a8572819a13da5b0ebc1423"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3cb79c9ea659774ed7c7481ec01266336ff7a3fd","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                        identity_client.users,"},{"line_number":245,"context_line":"                        assignment.user[\u0027id\u0027],"},{"line_number":246,"context_line":"                    )"},{"line_number":247,"context_line":"                if user not in data:"},{"line_number":248,"context_line":"                    data.append(user)"},{"line_number":249,"context_line":"        else:"},{"line_number":250,"context_line":"            data \u003d identity_client.users.list("}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_1f833ecd","line":247,"in_reply_to":"3a961159_bf9b0a71","updated":"2014-12-17 03:05:09.000000000","message":"hmm... maybe we should loop through the assignment data and take out the duplicate users. then call find_resource on that.","commit_id":"8d1597cedcb40b447a8572819a13da5b0ebc1423"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"981113259717c2781b1ec56471bd6970045c20de","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        if parsed_args.project:"},{"line_number":231,"context_line":"            project \u003d utils.find_resource("},{"line_number":232,"context_line":"                identity_client.projects,"},{"line_number":233,"context_line":"                parsed_args.project,"},{"line_number":234,"context_line":"            ).id"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"            assignments \u003d identity_client.role_assignments.list("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_45564507","line":233,"updated":"2014-12-22 23:44:50.000000000","message":"project name is not unique across domain, so this may return more than one result. Should the domain_id be used for scoping the search?","commit_id":"e5c3a4a4ff8379ffc002ff31f4baf68c7b8f8a05"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6f82ea1ec9ce0172cf28bf8a5f1c25aa4657270a","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        if parsed_args.project:"},{"line_number":231,"context_line":"            project \u003d utils.find_resource("},{"line_number":232,"context_line":"                identity_client.projects,"},{"line_number":233,"context_line":"                parsed_args.project,"},{"line_number":234,"context_line":"            ).id"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"            assignments \u003d identity_client.role_assignments.list("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_4c510d61","line":233,"in_reply_to":"3a961159_45564507","updated":"2014-12-23 06:01:24.000000000","message":"good call, we should make pass in domain here as well","commit_id":"e5c3a4a4ff8379ffc002ff31f4baf68c7b8f8a05"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f95caf3f05c1db9f63aa1684d3aacd8e30107ace","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        if parsed_args.project:"},{"line_number":231,"context_line":"            project \u003d utils.find_resource("},{"line_number":232,"context_line":"                identity_client.projects,"},{"line_number":233,"context_line":"                parsed_args.project,"},{"line_number":234,"context_line":"            ).id"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"            assignments \u003d identity_client.role_assignments.list("}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_f2b839c9","line":233,"in_reply_to":"3a961159_4c510d61","updated":"2015-01-04 06:45:18.000000000","message":"Done","commit_id":"e5c3a4a4ff8379ffc002ff31f4baf68c7b8f8a05"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"981113259717c2781b1ec56471bd6970045c20de","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            # NOTE(stevemar): If a user has more than one role on a project"},{"line_number":240,"context_line":"            # then they will have two entries in the returned data. Since we"},{"line_number":241,"context_line":"            # are looking for any role, let\u0027s just track unique user IDs."},{"line_number":242,"context_line":"            user_ids \u003d []"},{"line_number":243,"context_line":"            for assignment in assignments:"},{"line_number":244,"context_line":"                if hasattr(assignment, \u0027user\u0027):"},{"line_number":245,"context_line":"                    user_id \u003d assignment.user[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_4a11f45b","line":242,"updated":"2014-12-22 23:44:50.000000000","message":"suggestion: Can we use a set() here instead?","commit_id":"e5c3a4a4ff8379ffc002ff31f4baf68c7b8f8a05"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"6f82ea1ec9ce0172cf28bf8a5f1c25aa4657270a","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            # NOTE(stevemar): If a user has more than one role on a project"},{"line_number":240,"context_line":"            # then they will have two entries in the returned data. Since we"},{"line_number":241,"context_line":"            # are looking for any role, let\u0027s just track unique user IDs."},{"line_number":242,"context_line":"            user_ids \u003d []"},{"line_number":243,"context_line":"            for assignment in assignments:"},{"line_number":244,"context_line":"                if hasattr(assignment, \u0027user\u0027):"},{"line_number":245,"context_line":"                    user_id \u003d assignment.user[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_6c4c09c9","line":242,"in_reply_to":"3a961159_4a11f45b","updated":"2014-12-23 06:01:24.000000000","message":"maybe, let me dig into this.","commit_id":"e5c3a4a4ff8379ffc002ff31f4baf68c7b8f8a05"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f95caf3f05c1db9f63aa1684d3aacd8e30107ace","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            # NOTE(stevemar): If a user has more than one role on a project"},{"line_number":240,"context_line":"            # then they will have two entries in the returned data. Since we"},{"line_number":241,"context_line":"            # are looking for any role, let\u0027s just track unique user IDs."},{"line_number":242,"context_line":"            user_ids \u003d []"},{"line_number":243,"context_line":"            for assignment in assignments:"},{"line_number":244,"context_line":"                if hasattr(assignment, \u0027user\u0027):"},{"line_number":245,"context_line":"                    user_id \u003d assignment.user[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_d225fdae","line":242,"in_reply_to":"3a961159_6c4c09c9","updated":"2015-01-04 06:45:18.000000000","message":"so I tried this, but since it\u0027s a User object being compared, I\u0027d have to override the __hash__ function, but it\u0027s coming from keystoneclient, so it\u0027s a bit more complex.","commit_id":"e5c3a4a4ff8379ffc002ff31f4baf68c7b8f8a05"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"7696bed996fd2e31adf259acd05787f5241dbc51","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                project \u003d utils.find_resource("},{"line_number":231,"context_line":"                    identity_client.projects,"},{"line_number":232,"context_line":"                    parsed_args.project,"},{"line_number":233,"context_line":"                    domain_id\u003ddomain.id"},{"line_number":234,"context_line":"                ).id"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                project \u003d utils.find_resource("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_19a5e803","line":233,"updated":"2015-01-05 02:18:52.000000000","message":"\u0027domain\u0027 is not an object. This should be domain_id\u003ddomain.","commit_id":"7c0243b6a5e26df875da38e0101a5fee960813d2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a0bb34a853c8a64d2b199d39b3d20436be4c7f00","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                project \u003d utils.find_resource("},{"line_number":231,"context_line":"                    identity_client.projects,"},{"line_number":232,"context_line":"                    parsed_args.project,"},{"line_number":233,"context_line":"                    domain_id\u003ddomain.id"},{"line_number":234,"context_line":"                ).id"},{"line_number":235,"context_line":"            else:"},{"line_number":236,"context_line":"                project \u003d utils.find_resource("}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_79c42c41","line":233,"in_reply_to":"3a961159_19a5e803","updated":"2015-01-05 03:15:56.000000000","message":"Done","commit_id":"7c0243b6a5e26df875da38e0101a5fee960813d2"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"0f71d2b65151bcf75693ed0b29a3c623d7c7bebb","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            column_headers[3] \u003d \u0027Domain\u0027"},{"line_number":272,"context_line":"        else:"},{"line_number":273,"context_line":"            columns \u003d [\u0027ID\u0027, \u0027Name\u0027]"},{"line_number":274,"context_line":"            column_headers \u003d copy.deepcopy(columns)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        return ("},{"line_number":277,"context_line":"            column_headers,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_9e4a9e53","line":274,"updated":"2015-01-04 22:26:07.000000000","message":"can be simply:\n\ncolumn_headers \u003d columns\n\nthere is no need to deepcopy since the column values are not modified.","commit_id":"7c0243b6a5e26df875da38e0101a5fee960813d2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"a0bb34a853c8a64d2b199d39b3d20436be4c7f00","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            column_headers[3] \u003d \u0027Domain\u0027"},{"line_number":272,"context_line":"        else:"},{"line_number":273,"context_line":"            columns \u003d [\u0027ID\u0027, \u0027Name\u0027]"},{"line_number":274,"context_line":"            column_headers \u003d copy.deepcopy(columns)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        return ("},{"line_number":277,"context_line":"            column_headers,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_99c39837","line":274,"in_reply_to":"3a961159_9e4a9e53","updated":"2015-01-05 03:15:56.000000000","message":"Done","commit_id":"7c0243b6a5e26df875da38e0101a5fee960813d2"}]}
