)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c7e071969e35d092a656e240c875f85242392fd5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add an example script for role_assignments module"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a python script to illustrate how to use"},{"line_number":10,"context_line":"the role_assignments module."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I310b618dc066c8405da6ffd9a28baf8754b3399c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"baada198_90367a02","line":9,"updated":"2014-06-30 23:34:15.000000000","message":"...Python when you are referring to the language, python when you are referring to the executable...","commit_id":"91c180b01b081aebb0b03f2cdec027c2bb880d90"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1e704920b8aa8077be37b8453f200ae058393fa9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add an example script for role_assignments module"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a python script to illustrate how to use"},{"line_number":10,"context_line":"the role_assignments module."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I310b618dc066c8405da6ffd9a28baf8754b3399c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa98f980_e747b2a1","line":9,"in_reply_to":"baada198_90367a02","updated":"2014-09-18 21:53:31.000000000","message":"Done","commit_id":"91c180b01b081aebb0b03f2cdec027c2bb880d90"}],"examples/scripts/exercise_v3_role_assignments.py":[{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"5304310e0be63c5447be87245abc94e9fd6f0e91","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    client \u003d client_for_admin_user()"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    print(\u0027\\nCreating Projects\u0027)"},{"line_number":80,"context_line":"    proj1 \u003d create_project(client, uuid.uuid4().hex, OS_DOMAIN_NAME)"},{"line_number":81,"context_line":"    print(\u0027proj1: id\u003d%s\u0027 % proj1.id)"},{"line_number":82,"context_line":"    proj2 \u003d create_project(client, uuid.uuid4().hex, OS_DOMAIN_NAME)"},{"line_number":83,"context_line":"    print(\u0027proj2: id\u003d%s\u0027 % proj2.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_dabed2ad","line":80,"updated":"2014-06-11 18:16:05.000000000","message":"Use some name for the project. UUID should be used only for ID attributes","commit_id":"59a66853e4c5fefeb79e59f9a4d7722e6f864fbc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"cc9ee21f274c920a11508d73784ddeccf91c6d6e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    client \u003d client_for_admin_user()"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    print(\u0027\\nCreating Projects\u0027)"},{"line_number":80,"context_line":"    proj1 \u003d create_project(client, uuid.uuid4().hex, OS_DOMAIN_NAME)"},{"line_number":81,"context_line":"    print(\u0027proj1: id\u003d%s\u0027 % proj1.id)"},{"line_number":82,"context_line":"    proj2 \u003d create_project(client, uuid.uuid4().hex, OS_DOMAIN_NAME)"},{"line_number":83,"context_line":"    print(\u0027proj2: id\u003d%s\u0027 % proj2.id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_3a425668","line":80,"in_reply_to":"1ae5cdf2_dabed2ad","updated":"2014-06-11 18:23:20.000000000","message":"++","commit_id":"59a66853e4c5fefeb79e59f9a4d7722e6f864fbc"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"5304310e0be63c5447be87245abc94e9fd6f0e91","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                       group\u003dgroup1,"},{"line_number":111,"context_line":"                       project\u003dproj1)"},{"line_number":112,"context_line":"    print(\u0027Assigning Member role to user2 at proj2\u0027)"},{"line_number":113,"context_line":"    client.roles.grant(client.roles.find(name\u003d\u0027Member\u0027),"},{"line_number":114,"context_line":"                       user\u003duser2,"},{"line_number":115,"context_line":"                       project\u003dproj2)"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_baef46b0","line":113,"updated":"2014-06-11 18:16:05.000000000","message":"What did you get the Member role? Who creates them?","commit_id":"59a66853e4c5fefeb79e59f9a4d7722e6f864fbc"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"cc9ee21f274c920a11508d73784ddeccf91c6d6e","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                       group\u003dgroup1,"},{"line_number":111,"context_line":"                       project\u003dproj1)"},{"line_number":112,"context_line":"    print(\u0027Assigning Member role to user2 at proj2\u0027)"},{"line_number":113,"context_line":"    client.roles.grant(client.roles.find(name\u003d\u0027Member\u0027),"},{"line_number":114,"context_line":"                       user\u003duser2,"},{"line_number":115,"context_line":"                       project\u003dproj2)"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_5a472277","line":113,"in_reply_to":"1ae5cdf2_baef46b0","updated":"2014-06-11 18:23:20.000000000","message":"++","commit_id":"59a66853e4c5fefeb79e59f9a4d7722e6f864fbc"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c7e071969e35d092a656e240c875f85242392fd5","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from keystoneclient.v3 import client"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"This script illustrates the usage of the role assignments module."},{"line_number":20,"context_line":"It depends on an admin role, project, user and group."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_f0afb629","line":18,"updated":"2014-06-30 23:34:15.000000000","message":"pep8 says that this should be before the imports:\nhttp://legacy.python.org/dev/peps/pep-0008/#imports","commit_id":"91c180b01b081aebb0b03f2cdec027c2bb880d90"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1e704920b8aa8077be37b8453f200ae058393fa9","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from keystoneclient.v3 import client"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"This script illustrates the usage of the role assignments module."},{"line_number":20,"context_line":"It depends on an admin role, project, user and group."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_075f5676","line":18,"in_reply_to":"baada198_f0afb629","updated":"2014-09-18 21:53:31.000000000","message":"Done","commit_id":"91c180b01b081aebb0b03f2cdec027c2bb880d90"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c7e071969e35d092a656e240c875f85242392fd5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    OS_PROJECT_NAME \u003d os.environ[\u0027OS_PROJECT_NAME\u0027]"},{"line_number":34,"context_line":"    OS_DOMAIN_NAME \u003d os.environ[\u0027OS_DOMAIN_NAME\u0027]"},{"line_number":35,"context_line":"except KeyError as e:"},{"line_number":36,"context_line":"    raise SystemExit(\u0027%s environment variable not set.\u0027 % e.message)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def client_for_admin_user():"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_90f3da72","line":36,"updated":"2014-06-30 23:34:15.000000000","message":"Remove \u0027.message\u0027 it\u0027s not necessary","commit_id":"91c180b01b081aebb0b03f2cdec027c2bb880d90"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1e704920b8aa8077be37b8453f200ae058393fa9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    OS_PROJECT_NAME \u003d os.environ[\u0027OS_PROJECT_NAME\u0027]"},{"line_number":34,"context_line":"    OS_DOMAIN_NAME \u003d os.environ[\u0027OS_DOMAIN_NAME\u0027]"},{"line_number":35,"context_line":"except KeyError as e:"},{"line_number":36,"context_line":"    raise SystemExit(\u0027%s environment variable not set.\u0027 % e.message)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"def client_for_admin_user():"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_27629a3d","line":36,"in_reply_to":"baada198_90f3da72","updated":"2014-09-18 21:53:31.000000000","message":"Done","commit_id":"91c180b01b081aebb0b03f2cdec027c2bb880d90"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c7e071969e35d092a656e240c875f85242392fd5","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    client.users.delete(user1)"},{"line_number":144,"context_line":"    client.users.delete(user2)"},{"line_number":145,"context_line":"    client.roles.delete(role1)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":148,"context_line":"    initialize()"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_30812e90","line":146,"updated":"2014-06-30 23:34:15.000000000","message":"Extra newline here","commit_id":"91c180b01b081aebb0b03f2cdec027c2bb880d90"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1e704920b8aa8077be37b8453f200ae058393fa9","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    client.users.delete(user1)"},{"line_number":144,"context_line":"    client.users.delete(user2)"},{"line_number":145,"context_line":"    client.roles.delete(role1)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"if __name__ \u003d\u003d \u0027__main__\u0027:"},{"line_number":148,"context_line":"    initialize()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_675ca27e","line":146,"in_reply_to":"baada198_30812e90","updated":"2014-09-18 21:53:31.000000000","message":"Done","commit_id":"91c180b01b081aebb0b03f2cdec027c2bb880d90"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"7bf5b2152b0f98d3d0409b92ca444936a6fb48c4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                         project_domain_name\u003dOS_DOMAIN_NAME)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def create_project(client, name, domain):"},{"line_number":49,"context_line":"    try:"},{"line_number":50,"context_line":"        p \u003d client.projects.create(name\u003dname, domain\u003ddomain)"},{"line_number":51,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_55449a1a","line":48,"updated":"2014-09-19 11:41:42.000000000","message":"This function implements \"get-or-create\" logic but it is not stated neither in declaration nor in doc-string.\nAlso it\u0027s better to try find the object first then create it if not exists.","commit_id":"720caee045aac6ae58ffd856e40909827170dd55"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"7bf5b2152b0f98d3d0409b92ca444936a6fb48c4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    return p"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def create_user(client, name, password, default_project, domain):"},{"line_number":57,"context_line":"    try:"},{"line_number":58,"context_line":"        u \u003d client.users.create(name\u003dname,"},{"line_number":59,"context_line":"                                password\u003dpassword,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_f55d8eed","line":56,"updated":"2014-09-19 11:41:42.000000000","message":"Same here","commit_id":"720caee045aac6ae58ffd856e40909827170dd55"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"7bf5b2152b0f98d3d0409b92ca444936a6fb48c4","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    return u"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"def create_group(client, name, domain):"},{"line_number":68,"context_line":"    try:"},{"line_number":69,"context_line":"        g \u003d client.groups.create(name\u003dname,"},{"line_number":70,"context_line":"                                 domain\u003ddomain)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_156132a8","line":67,"updated":"2014-09-19 11:41:42.000000000","message":"Same here","commit_id":"720caee045aac6ae58ffd856e40909827170dd55"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"7bf5b2152b0f98d3d0409b92ca444936a6fb48c4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    return g"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def create_role(client, name):"},{"line_number":77,"context_line":"    try:"},{"line_number":78,"context_line":"        r \u003d client.roles.create(name\u003dname)"},{"line_number":79,"context_line":"    except Exception:"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_75719e76","line":76,"updated":"2014-09-19 11:41:42.000000000","message":"Same here","commit_id":"720caee045aac6ae58ffd856e40909827170dd55"}]}
