)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"bcbed0aa03007b81b3cf7bbba8ebd60896180aaf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds the infrastructure for multi user testing.  It also adds"},{"line_number":10,"context_line":"a set of test cases that exercises the current functionality of per secret"},{"line_number":11,"context_line":"RBAC and ACL protections."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Six users are added."},{"line_number":14,"context_line":"   In Project1: Admin1, Creator1, Observer1, Auditor1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1aca2d91_0f7d06e7","line":11,"updated":"2015-05-07 20:41:36.000000000","message":"can we split up this CR into (1) multiple users then (2) ACL?","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"2e63bb79ef45769483a4c55da9ededb195959f55","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds the infrastructure for multi user testing.  It also adds"},{"line_number":10,"context_line":"a set of test cases that exercises the current functionality of per secret"},{"line_number":11,"context_line":"RBAC and ACL protections."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Six users are added."},{"line_number":14,"context_line":"   In Project1: Admin1, Creator1, Observer1, Auditor1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1aca2d91_14aaae70","line":11,"in_reply_to":"1aca2d91_0f7d06e7","updated":"2015-05-08 04:34:50.000000000","message":"Done","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"}],"barbican/model/repositories.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"c8730ab7f80466b542f89ed36ae925458f05b9d5","unresolved":false,"context_lines":[{"line_number":1756,"context_line":"    def get_count(self, secret_id, session\u003dNone):"},{"line_number":1757,"context_line":"        \"\"\"Gets count of existing secret ACL(s) for a given secret.\"\"\""},{"line_number":1758,"context_line":"        session \u003d self.get_session(session)"},{"line_number":1759,"context_line":"        query \u003d session.query(models.ContainerACL)"},{"line_number":1760,"context_line":"        query \u003d query.filter(models.ContainerACL.container_id \u003d\u003d secret_id)"},{"line_number":1761,"context_line":"        return query.count()"},{"line_number":1762,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bab921fb_a691ba54","line":1759,"updated":"2015-04-23 23:09:21.000000000","message":"I think this will be an inefficient query (i.e. pulling in all records just to count them). I\u0027ll play with that a bit, but this is probably ok for now.","commit_id":"6165c6b8b4567766caa3b07a475801752bf9d375"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"bcbed0aa03007b81b3cf7bbba8ebd60896180aaf","unresolved":false,"context_lines":[{"line_number":1850,"context_line":""},{"line_number":1851,"context_line":"    def get_count(self, container_id, session\u003dNone):"},{"line_number":1852,"context_line":"        \"\"\"Gets count of existing container ACL(s) for a given container.\"\"\""},{"line_number":1853,"context_line":"        session \u003d self.get_session(session)"},{"line_number":1854,"context_line":"        query \u003d session.query(sa_func.count(models.ContainerACL.id))"},{"line_number":1855,"context_line":"        query \u003d query.filter(models.ContainerACL.container_id \u003d\u003d container_id)"},{"line_number":1856,"context_line":"        return query.scalar()"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_aff97282","line":1853,"updated":"2015-05-07 20:41:36.000000000","message":"can we put this blank line back and get this file out of the CR?","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"2e63bb79ef45769483a4c55da9ededb195959f55","unresolved":false,"context_lines":[{"line_number":1850,"context_line":""},{"line_number":1851,"context_line":"    def get_count(self, container_id, session\u003dNone):"},{"line_number":1852,"context_line":"        \"\"\"Gets count of existing container ACL(s) for a given container.\"\"\""},{"line_number":1853,"context_line":"        session \u003d self.get_session(session)"},{"line_number":1854,"context_line":"        query \u003d session.query(sa_func.count(models.ContainerACL.id))"},{"line_number":1855,"context_line":"        query \u003d query.filter(models.ContainerACL.container_id \u003d\u003d container_id)"},{"line_number":1856,"context_line":"        return query.scalar()"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_f4b732d6","line":1853,"in_reply_to":"1aca2d91_aff97282","updated":"2015-05-08 04:34:50.000000000","message":"Done","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"}],"bin/keystone_data.sh":[{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"2ef2b867ccffd491f10fabfd214169ee514f328f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    user_id\u003d$(get_id keystone user-create --name\u003d\"admin2\" --pass\u003d\"$password\" --email\u003dadmin2@example.net)"},{"line_number":81,"context_line":"    keystone user-role-add --user $user_id --role $role_admin_id --tenant-id $project2_id"},{"line_number":82,"context_line":"    user_id\u003d$(get_id keystone user-create --name\u003d\"observer2\" --pass\u003d\"$password\" --email\u003dobserver2@example.net)"},{"line_number":83,"context_line":"    keystone user-role-add --user $user_id --role $role_observer_id --tenant-id $project2_id"},{"line_number":84,"context_line":"    if [[ \"$KEYSTONE_CATALOG_BACKEND\" \u003d \u0027sql\u0027 ]]; then"},{"line_number":85,"context_line":"        BARBICAN_SERVICE\u003d$(get_id keystone service-create \\"},{"line_number":86,"context_line":"            --name\u003dbarbican \\"}],"source_content_type":"text/x-sh","patch_set":8,"id":"5ad0253b_4cf34c74","line":83,"updated":"2015-04-29 04:59:44.000000000","message":"I would prefer that these commands be formatted like the others in the script.  Namely use a new line for each argument.  Ideally this script should pass a bashate [1] check.\n\n[1] https://github.com/openstack-dev/bashate","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"fbb42162dfd1af828a47467143e4ff6cb74d18ab","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    user_id\u003d$(get_id keystone user-create --name\u003d\"admin2\" --pass\u003d\"$password\" --email\u003dadmin2@example.net)"},{"line_number":81,"context_line":"    keystone user-role-add --user $user_id --role $role_admin_id --tenant-id $project2_id"},{"line_number":82,"context_line":"    user_id\u003d$(get_id keystone user-create --name\u003d\"observer2\" --pass\u003d\"$password\" --email\u003dobserver2@example.net)"},{"line_number":83,"context_line":"    keystone user-role-add --user $user_id --role $role_observer_id --tenant-id $project2_id"},{"line_number":84,"context_line":"    if [[ \"$KEYSTONE_CATALOG_BACKEND\" \u003d \u0027sql\u0027 ]]; then"},{"line_number":85,"context_line":"        BARBICAN_SERVICE\u003d$(get_id keystone service-create \\"},{"line_number":86,"context_line":"            --name\u003dbarbican \\"}],"source_content_type":"text/x-sh","patch_set":8,"id":"1aca2d91_c3527013","line":83,"in_reply_to":"5ad0253b_4cf34c74","updated":"2015-05-07 03:33:17.000000000","message":"Done","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"594a68c434b89bbaa15b7c8231a9d060ca851f11","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"#\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":48,"context_line":"# Lookups"},{"line_number":49,"context_line":"SERVICE_TENANT\u003d$(get_id keystone tenant-create --name\u003d\"service\")"},{"line_number":50,"context_line":"ADMIN_ROLE\u003d$(keystone role-list | awk \"/ admin / { print \\$2 }\")"},{"line_number":51,"context_line":"MEMBER_ROLE\u003d$(keystone role-list | awk \"/ _member_ / { print \\$2 }\")"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-sh","patch_set":13,"id":"1aca2d91_e4c64d48","line":49,"updated":"2015-05-08 17:42:09.000000000","message":"name should use SERVICE_TENANT_NAME rather than \"service\"","commit_id":"12232aa4152350feb0f2f241e1048516f1b7dc97"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"594a68c434b89bbaa15b7c8231a9d060ca851f11","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        --tenant_id\u003d\"$SERVICE_TENANT\" \\"},{"line_number":63,"context_line":"        --user_id\u003d\"$BARBICAN_USER\" \\"},{"line_number":64,"context_line":"        --role_id\u003d\"$ADMIN_ROLE\""},{"line_number":65,"context_line":"    USER_PASSWORD\u003d\"barbican\""},{"line_number":66,"context_line":"    PROJECT1_ID\u003d$(get_id keystone tenant-create \\"},{"line_number":67,"context_line":"        --name\u003d\"barbican_project1\")"},{"line_number":68,"context_line":"    PROJECT2_ID\u003d$(get_id keystone tenant-create \\"}],"source_content_type":"text/x-sh","patch_set":13,"id":"1aca2d91_e4cd2d5e","line":65,"updated":"2015-05-08 17:42:09.000000000","message":"some spacing and comments around the groups would be helpful, otherwise they all run together and its hard to make sense\n\nsomething like:\n\n#\n# setup creator1 user\n#\n...stuff\n\n#\n# setup admin42 user\n#\n...stuff","commit_id":"12232aa4152350feb0f2f241e1048516f1b7dc97"}],"contrib/devstack/lib/barbican":[{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"2ef2b867ccffd491f10fabfd214169ee514f328f","unresolved":false,"context_lines":[{"line_number":225,"context_line":"    user_id\u003d$(get_id keystone user-create --name\u003d\"admin2\" --pass\u003d\"$password\" --email\u003dadmin2@example.net)"},{"line_number":226,"context_line":"    keystone user-role-add --user $user_id --role $role_admin_id --tenant-id $project2_id"},{"line_number":227,"context_line":"    user_id\u003d$(get_id keystone user-create --name\u003d\"observer2\" --pass\u003d\"$password\" --email\u003dobserver2@example.net)"},{"line_number":228,"context_line":"    keystone user-role-add --user $user_id --role $role_observer_id --tenant-id $project2_id"},{"line_number":229,"context_line":"    if [[ \"$KEYSTONE_CATALOG_BACKEND\" \u003d \u0027sql\u0027 ]]; then"},{"line_number":230,"context_line":"        BARBICAN_SERVICE\u003d$(keystone service-create \\"},{"line_number":231,"context_line":"            --name\u003dbarbican \\"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"5ad0253b_ec02183e","line":228,"updated":"2015-04-29 04:59:44.000000000","message":"Same here, I would prefer these be formatted and checked with bashate.","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"fbb42162dfd1af828a47467143e4ff6cb74d18ab","unresolved":false,"context_lines":[{"line_number":225,"context_line":"    user_id\u003d$(get_id keystone user-create --name\u003d\"admin2\" --pass\u003d\"$password\" --email\u003dadmin2@example.net)"},{"line_number":226,"context_line":"    keystone user-role-add --user $user_id --role $role_admin_id --tenant-id $project2_id"},{"line_number":227,"context_line":"    user_id\u003d$(get_id keystone user-create --name\u003d\"observer2\" --pass\u003d\"$password\" --email\u003dobserver2@example.net)"},{"line_number":228,"context_line":"    keystone user-role-add --user $user_id --role $role_observer_id --tenant-id $project2_id"},{"line_number":229,"context_line":"    if [[ \"$KEYSTONE_CATALOG_BACKEND\" \u003d \u0027sql\u0027 ]]; then"},{"line_number":230,"context_line":"        BARBICAN_SERVICE\u003d$(keystone service-create \\"},{"line_number":231,"context_line":"            --name\u003dbarbican \\"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1aca2d91_a3577401","line":228,"in_reply_to":"5ad0253b_ec02183e","updated":"2015-05-07 03:33:17.000000000","message":"Done","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"594a68c434b89bbaa15b7c8231a9d060ca851f11","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    keystone user-role-add --tenant-id $SERVICE_TENANT \\"},{"line_number":207,"context_line":"                            --user-id $BARBICAN_USER \\"},{"line_number":208,"context_line":"                            --role-id $ADMIN_ROLE"},{"line_number":209,"context_line":"    PASSWORD\u003d\"barbican\""},{"line_number":210,"context_line":"    PROJECT1_ID\u003d$(get_id keystone tenant-create \\"},{"line_number":211,"context_line":"        --name\u003d\"barbican_project1\")"},{"line_number":212,"context_line":"    PROJECT2_ID\u003d$(get_id keystone tenant-create \\"}],"source_content_type":"application/octet-stream","patch_set":13,"id":"1aca2d91_6408fd91","line":209,"updated":"2015-05-08 17:42:09.000000000","message":"some spacing and comments around each user setup would make this easier to read","commit_id":"12232aa4152350feb0f2f241e1048516f1b7dc97"}],"etc/barbican/barbican-functional.conf":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"bcbed0aa03007b81b3cf7bbba8ebd60896180aaf","unresolved":false,"context_lines":[{"line_number":11,"context_line":"domain_name\u003dDefault"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[users]"},{"line_number":14,"context_line":"# Replace these values that represent additional users"},{"line_number":15,"context_line":"project1\u003dproject1"},{"line_number":16,"context_line":"project2\u003dproject2"},{"line_number":17,"context_line":"admin1\u003dadmin1"}],"source_content_type":"text/plain","patch_set":10,"id":"1aca2d91_eab63889","line":14,"updated":"2015-05-07 20:41:36.000000000","message":"could we do this in such a way that we can users by only updating this file, and not having to update the code?  Seems that they are too tightly coupled now.","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"2e63bb79ef45769483a4c55da9ededb195959f55","unresolved":false,"context_lines":[{"line_number":11,"context_line":"domain_name\u003dDefault"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[users]"},{"line_number":14,"context_line":"# Replace these values that represent additional users"},{"line_number":15,"context_line":"project1\u003dproject1"},{"line_number":16,"context_line":"project2\u003dproject2"},{"line_number":17,"context_line":"admin1\u003dadmin1"}],"source_content_type":"text/plain","patch_set":10,"id":"1aca2d91_54c70645","line":14,"in_reply_to":"1aca2d91_eab63889","updated":"2015-05-08 04:34:50.000000000","message":"I can\u0027t think of a better way.  Let\u0027s go with this and refactor if we come up with one.","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"594a68c434b89bbaa15b7c8231a9d060ca851f11","unresolved":false,"context_lines":[{"line_number":10,"context_line":"password\u003dsecretadmin"},{"line_number":11,"context_line":"domain_name\u003dDefault"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[users]"},{"line_number":14,"context_line":"# Replace these values that represent additional users"},{"line_number":15,"context_line":"project1\u003dbarbican_project1"},{"line_number":16,"context_line":"project2\u003dbarbican_project2"}],"source_content_type":"text/plain","patch_set":13,"id":"1aca2d91_c4f3519d","line":13,"updated":"2015-05-08 17:42:09.000000000","message":"howsabout rbacusers rather than just users since that\u0027s all these guys are used for?","commit_id":"12232aa4152350feb0f2f241e1048516f1b7dc97"}],"functionaltests/api/v1/behaviors/acl_behaviors.py":[{"author":{"_account_id":13510,"name":"Thomas Dinkjian","email":"thomas.dinkjian@rackspace.com","username":"tdink"},"change_message_id":"a3451b06fc1e6941aa08124de37f51514b7fc9e1","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if resp.status_code in [400, 401]:"},{"line_number":40,"context_line":"            return resp, None"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        returned_data \u003d self.get_json(resp)"},{"line_number":43,"context_line":"        acl_refs \u003d []"},{"line_number":44,"context_line":"        for item in returned_data:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab921fb_91d48047","line":41,"updated":"2015-04-24 15:03:01.000000000","message":"I was wondering why do we have a check for only these 2 status codes? What is this trying to achieve?","commit_id":"9cf6b59026f9bff993b5b25a4dd370b5f6b32752"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"205f0d470a6d5819d377d3ae53c5023d21624a73","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        if resp.status_code in [400, 401]:"},{"line_number":40,"context_line":"            return resp, None"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        returned_data \u003d self.get_json(resp)"},{"line_number":43,"context_line":"        acl_refs \u003d []"},{"line_number":44,"context_line":"        for item in returned_data:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bab921fb_ab2b8c93","line":41,"in_reply_to":"bab921fb_91d48047","updated":"2015-04-24 18:23:14.000000000","message":"I can remove it for now.\n\nIf the client.post() fails, then the json parsing below will raise an exception.  For now this is probably OK, since the current test cases never expect failure.\n\nIn the future, if someone adds RBAC testing for post ACLs, then a check like this should be paired with a new passed expected_failure boolean parameter, so negative test cases can pass.","commit_id":"9cf6b59026f9bff993b5b25a4dd370b5f6b32752"},{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"e62f738b46e80ca6675cce2b441056dcb0a9cbf8","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_acl(self, entity_ref, model, extra_headers\u003dNone, acl_user\u003dNone):"},{"line_number":24,"context_line":"        \"\"\"Create a acl from the data in the model."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        :param model: The metadata used to create the acl"},{"line_number":27,"context_line":"        :param extra_headers: Headers used to create the acl"},{"line_number":28,"context_line":"        :param acl_user: The user name used to create the acl"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ad0253b_acaae017","line":25,"updated":"2015-04-29 05:16:31.000000000","message":"Missing :param entity_ref: in the doctring for completeness.","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"fbb42162dfd1af828a47467143e4ff6cb74d18ab","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def create_acl(self, entity_ref, model, extra_headers\u003dNone, acl_user\u003dNone):"},{"line_number":24,"context_line":"        \"\"\"Create a acl from the data in the model."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"        :param model: The metadata used to create the acl"},{"line_number":27,"context_line":"        :param extra_headers: Headers used to create the acl"},{"line_number":28,"context_line":"        :param acl_user: The user name used to create the acl"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aca2d91_835c7826","line":25,"in_reply_to":"5ad0253b_acaae017","updated":"2015-05-07 03:33:17.000000000","message":"Done","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"}],"functionaltests/api/v1/behaviors/container_behaviors.py":[{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"e62f738b46e80ca6675cce2b441056dcb0a9cbf8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        if container_ref:"},{"line_number":41,"context_line":"            if admin is None:"},{"line_number":42,"context_line":"                admin \u003d acl_user"},{"line_number":43,"context_line":"                self.created_entities.append((container_ref, admin))"},{"line_number":44,"context_line":"        return resp, container_ref"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_container(self, container_ref, extra_headers\u003dNone, acl_user\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ad0253b_2c125063","line":43,"updated":"2015-04-29 05:16:31.000000000","message":"There\u0027s no need for the admin variable since it\u0027s only used in the line below. It would be better to just inline acl_user.","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"fbb42162dfd1af828a47467143e4ff6cb74d18ab","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        if container_ref:"},{"line_number":41,"context_line":"            if admin is None:"},{"line_number":42,"context_line":"                admin \u003d acl_user"},{"line_number":43,"context_line":"                self.created_entities.append((container_ref, admin))"},{"line_number":44,"context_line":"        return resp, container_ref"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_container(self, container_ref, extra_headers\u003dNone, acl_user\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aca2d91_63427c40","line":43,"in_reply_to":"5ad0253b_2c125063","updated":"2015-05-07 03:33:17.000000000","message":"fixed indentation","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"}],"functionaltests/api/v1/behaviors/secret_behaviors.py":[{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"e62f738b46e80ca6675cce2b441056dcb0a9cbf8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        if secret_ref:"},{"line_number":45,"context_line":"            if admin is None:"},{"line_number":46,"context_line":"                admin \u003d acl_user"},{"line_number":47,"context_line":"            self.created_entities.append((secret_ref, admin))"},{"line_number":48,"context_line":"        return resp, secret_ref"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def update_secret_payload(self, secret_ref, payload, payload_content_type,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ad0253b_ac06601e","line":47,"updated":"2015-04-29 05:16:31.000000000","message":"I wonder if the line I commented on in container_behaviors.py is just not indented correctly?  Looks like the admin variable really is necessary here.","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"fbb42162dfd1af828a47467143e4ff6cb74d18ab","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        if secret_ref:"},{"line_number":45,"context_line":"            if admin is None:"},{"line_number":46,"context_line":"                admin \u003d acl_user"},{"line_number":47,"context_line":"            self.created_entities.append((secret_ref, admin))"},{"line_number":48,"context_line":"        return resp, secret_ref"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def update_secret_payload(self, secret_ref, payload, payload_content_type,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aca2d91_433f80b4","line":47,"in_reply_to":"5ad0253b_ac06601e","updated":"2015-05-07 03:33:17.000000000","message":"yep","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"}],"functionaltests/api/v1/functional/test_acls.py":[{"author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"change_message_id":"e62f738b46e80ca6675cce2b441056dcb0a9cbf8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"observer2 \u003d CONF.identity.observer2"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def get_future_acl():"},{"line_number":36,"context_line":"    return {\u0027read\u0027: {\u0027users\u0027: [\u0027reader\u0027], \u0027creator-only\u0027: False},"},{"line_number":37,"context_line":"            \u0027write\u0027: {\u0027users\u0027: [\u0027writer\u0027], \u0027creator-only\u0027: False},"},{"line_number":38,"context_line":"            \u0027list\u0027: {\u0027users\u0027: [\u0027lister\u0027], \u0027creator-only\u0027: False}}"}],"source_content_type":"text/x-python","patch_set":8,"id":"5ad0253b_8f1a766d","line":35,"updated":"2015-04-29 05:16:31.000000000","message":"Honestly, I\u0027m not sure that these were meant to be \"future\" acl parameters.  The spec doesn\u0027t mention any of these API changes.  Maybe change the name to\n\n    def get_unsupported_acls()","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"fbb42162dfd1af828a47467143e4ff6cb74d18ab","unresolved":false,"context_lines":[{"line_number":32,"context_line":"observer2 \u003d CONF.identity.observer2"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def get_future_acl():"},{"line_number":36,"context_line":"    return {\u0027read\u0027: {\u0027users\u0027: [\u0027reader\u0027], \u0027creator-only\u0027: False},"},{"line_number":37,"context_line":"            \u0027write\u0027: {\u0027users\u0027: [\u0027writer\u0027], \u0027creator-only\u0027: False},"},{"line_number":38,"context_line":"            \u0027list\u0027: {\u0027users\u0027: [\u0027lister\u0027], \u0027creator-only\u0027: False}}"}],"source_content_type":"text/x-python","patch_set":8,"id":"1aca2d91_0349885f","line":35,"in_reply_to":"5ad0253b_8f1a766d","updated":"2015-05-07 03:33:17.000000000","message":"removed","commit_id":"a4ba745e179040ee70642a82d096b8d14694203f"}],"functionaltests/common/auth.py":[{"author":{"_account_id":7789,"name":"John Wood","email":"john.wood@rackspace.com","username":"woodster"},"change_message_id":"c8730ab7f80466b542f89ed36ae925458f05b9d5","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                tenant_name\u003dself.project_name,"},{"line_number":60,"context_line":"                auth_url\u003dself.endpoint"},{"line_number":61,"context_line":"            )"},{"line_number":62,"context_line":"            # ks_utils.find_resource(self._client,\"self.username\")"},{"line_number":63,"context_line":"            # user \u003d utils.find_resource(kc.users, args)"},{"line_number":64,"context_line":"            # utils.print_dict(user._info)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"bab921fb_63c0342b","line":62,"updated":"2015-04-23 23:09:21.000000000","message":"Please remove this code.","commit_id":"6165c6b8b4567766caa3b07a475801752bf9d375"}],"functionaltests/common/client.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"bcbed0aa03007b81b3cf7bbba8ebd60896180aaf","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class BarbicanClient(object):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, api_version\u003d\u0027v1\u0027):"},{"line_number":34,"context_line":"        self._auth \u003d auth.FunctionalTestAuth("},{"line_number":35,"context_line":"            endpoint\u003dCONF.identity.uri,"},{"line_number":36,"context_line":"            version\u003dCONF.identity.version,"},{"line_number":37,"context_line":"            username\u003dCONF.identity.username,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_4f9bfe72","line":34,"updated":"2015-05-07 20:41:36.000000000","message":"lets add this user to the dict below.  Simplifies things later on.  Also the username could be set as self._default_user so we can handle the case where people don\u0027t send in any user names to the other methods.","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"2e63bb79ef45769483a4c55da9ededb195959f55","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class BarbicanClient(object):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, api_version\u003d\u0027v1\u0027):"},{"line_number":34,"context_line":"        self._auth \u003d auth.FunctionalTestAuth("},{"line_number":35,"context_line":"            endpoint\u003dCONF.identity.uri,"},{"line_number":36,"context_line":"            version\u003dCONF.identity.version,"},{"line_number":37,"context_line":"            username\u003dCONF.identity.username,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_999dd75b","line":34,"in_reply_to":"1aca2d91_4f9bfe72","updated":"2015-05-08 04:34:50.000000000","message":"Done","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"bcbed0aa03007b81b3cf7bbba8ebd60896180aaf","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def log_request(self, request_kwargs, response, acl_user):"},{"line_number":120,"context_line":"        test_name \u003d misc_utils.find_test_caller()"},{"line_number":121,"context_line":"        str_request \u003d self.stringify_request(request_kwargs, response)"},{"line_number":122,"context_line":"        if acl_user is None:"},{"line_number":123,"context_line":"            user_info \u003d \u0027\u0027"},{"line_number":124,"context_line":"        else:"},{"line_number":125,"context_line":"            user_info \u003d \"(user\u003d{0})\".format(acl_user)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_8aca246d","line":122,"updated":"2015-05-07 20:41:36.000000000","message":"change from acl_user to user to be more general?","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"2e63bb79ef45769483a4c55da9ededb195959f55","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    def log_request(self, request_kwargs, response, acl_user):"},{"line_number":120,"context_line":"        test_name \u003d misc_utils.find_test_caller()"},{"line_number":121,"context_line":"        str_request \u003d self.stringify_request(request_kwargs, response)"},{"line_number":122,"context_line":"        if acl_user is None:"},{"line_number":123,"context_line":"            user_info \u003d \u0027\u0027"},{"line_number":124,"context_line":"        else:"},{"line_number":125,"context_line":"            user_info \u003d \"(user\u003d{0})\".format(acl_user)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_59a05f90","line":122,"in_reply_to":"1aca2d91_8aca246d","updated":"2015-05-08 04:34:50.000000000","message":"Done","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"bcbed0aa03007b81b3cf7bbba8ebd60896180aaf","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def request(self, method, url, data\u003dNone, extra_headers\u003dNone,"},{"line_number":219,"context_line":"                use_auth\u003dTrue, response_model_type\u003dNone, request_model\u003dNone,"},{"line_number":220,"context_line":"                params\u003dNone, acl_user\u003dNone):"},{"line_number":221,"context_line":"        \"\"\"Prepares and sends http request through Requests.\"\"\""},{"line_number":222,"context_line":"        if url and \u0027http\u0027 not in url:"},{"line_number":223,"context_line":"            url \u003d urllib.parse.urljoin(self.get_base_url(), url)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_2a90b042","line":220,"updated":"2015-05-07 20:41:36.000000000","message":"same as above - rename to user\u003dself.default_user","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"2e63bb79ef45769483a4c55da9ededb195959f55","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def request(self, method, url, data\u003dNone, extra_headers\u003dNone,"},{"line_number":219,"context_line":"                use_auth\u003dTrue, response_model_type\u003dNone, request_model\u003dNone,"},{"line_number":220,"context_line":"                params\u003dNone, acl_user\u003dNone):"},{"line_number":221,"context_line":"        \"\"\"Prepares and sends http request through Requests.\"\"\""},{"line_number":222,"context_line":"        if url and \u0027http\u0027 not in url:"},{"line_number":223,"context_line":"            url \u003d urllib.parse.urljoin(self.get_base_url(), url)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_197427fb","line":220,"in_reply_to":"1aca2d91_2a90b042","updated":"2015-05-08 04:34:50.000000000","message":"Renamed to user_name, but I don\u0027t think you can use self.xxx as a default value in a function def.","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"bcbed0aa03007b81b3cf7bbba8ebd60896180aaf","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            \u0027params\u0027: params"},{"line_number":243,"context_line":"        }"},{"line_number":244,"context_line":"        if use_auth:"},{"line_number":245,"context_line":"            if acl_user:"},{"line_number":246,"context_line":"                call_kwargs[\u0027auth\u0027] \u003d self._acl_auth[acl_user]"},{"line_number":247,"context_line":"            else:"},{"line_number":248,"context_line":"                call_kwargs[\u0027auth\u0027] \u003d self._auth"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_8af46487","line":245,"updated":"2015-05-07 20:41:36.000000000","message":"if we put all users into the dict then this code simplifies to:\n\nif use_auth:\n   call_kwargs[\u0027auth\u0027] \u003d self._acl_auth[user]","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"2e63bb79ef45769483a4c55da9ededb195959f55","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            \u0027params\u0027: params"},{"line_number":243,"context_line":"        }"},{"line_number":244,"context_line":"        if use_auth:"},{"line_number":245,"context_line":"            if acl_user:"},{"line_number":246,"context_line":"                call_kwargs[\u0027auth\u0027] \u003d self._acl_auth[acl_user]"},{"line_number":247,"context_line":"            else:"},{"line_number":248,"context_line":"                call_kwargs[\u0027auth\u0027] \u003d self._auth"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_3950035d","line":245,"in_reply_to":"1aca2d91_8af46487","updated":"2015-05-08 04:34:50.000000000","message":"All users are in the dict, but still need the conditional for default user_name.","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"594a68c434b89bbaa15b7c8231a9d060ca851f11","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.region \u003d CONF.identity.region"},{"line_number":41,"context_line":"        self._default_user_name \u003d CONF.identity.username"},{"line_number":42,"context_line":"        self._auth \u003d {}"},{"line_number":43,"context_line":"        self._auth[CONF.identity.username] \u003d auth.FunctionalTestAuth("},{"line_number":44,"context_line":"            endpoint\u003dCONF.identity.uri,"},{"line_number":45,"context_line":"            version\u003dCONF.identity.version,"},{"line_number":46,"context_line":"            username\u003dCONF.identity.username,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aca2d91_1f5bd02f","line":43,"updated":"2015-05-08 17:42:09.000000000","message":"this feels non-pythonic - hopefully one of our gurus will step in with a way to do this in 2 lines of code :-)","commit_id":"12232aa4152350feb0f2f241e1048516f1b7dc97"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"594a68c434b89bbaa15b7c8231a9d060ca851f11","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        if CONF.keymanager.override_url:"},{"line_number":173,"context_line":"            return self._get_base_url_from_config(include_version)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        endpoint \u003d\\"},{"line_number":176,"context_line":"            self._auth[self._default_user_name].service_catalog.get_endpoints("},{"line_number":177,"context_line":"                service_type\u003d\u0027key-manager\u0027,"},{"line_number":178,"context_line":"                service_name\u003d\u0027barbican\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1aca2d91_1fa990df","line":175,"updated":"2015-05-08 17:42:09.000000000","message":"I think the \\ is frowned upon.  If you use pycharm then select the code and click EDIT then FORMAT CODE then enter and it will usually give you a nice option that is pep8 compliant","commit_id":"12232aa4152350feb0f2f241e1048516f1b7dc97"},{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"594a68c434b89bbaa15b7c8231a9d060ca851f11","unresolved":false,"context_lines":[{"line_number":246,"context_line":"            if user_name:"},{"line_number":247,"context_line":"                call_kwargs[\u0027auth\u0027] \u003d self._auth[user_name]"},{"line_number":248,"context_line":"            else:"},{"line_number":249,"context_line":"                call_kwargs[\u0027auth\u0027] \u003d self._auth[self._default_user_name]"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        response \u003d requests.request(**call_kwargs)"},{"line_number":252,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1aca2d91_1f5cf0eb","line":249,"updated":"2015-05-08 17:42:09.000000000","message":"you could also be more pythonic here:\n\ncall_kwargs[\u0027auth\u0027] \u003d self._auth[user_name if user_name else self._default_user_name]\n\n^ untested ^","commit_id":"12232aa4152350feb0f2f241e1048516f1b7dc97"}],"functionaltests/common/config.py":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"bcbed0aa03007b81b3cf7bbba8ebd60896180aaf","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    users_group \u003d cfg.OptGroup(name\u003d\u0027users\u0027)"},{"line_number":40,"context_line":"    users_options \u003d ["},{"line_number":41,"context_line":"        cfg.StrOpt(\u0027endpoint\u0027, default\u003d\u0027http://localhost:35357/v2.0\u0027),"},{"line_number":42,"context_line":"        cfg.StrOpt(\u0027token\u0027, default\u003d\u0027ADMIN_TOKEN\u0027),"},{"line_number":43,"context_line":"        cfg.StrOpt(\u0027project1\u0027, default\u003d\u0027project1\u0027),"},{"line_number":44,"context_line":"        cfg.StrOpt(\u0027project2\u0027, default\u003d\u0027project2\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_6a56a8d3","line":41,"updated":"2015-05-07 20:41:36.000000000","message":"is this endpoint needed?","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"},{"author":{"_account_id":11561,"name":"Dave McCowan","email":"dmccowan@cisco.com","username":"dave-mccowan"},"change_message_id":"2e63bb79ef45769483a4c55da9ededb195959f55","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    users_group \u003d cfg.OptGroup(name\u003d\u0027users\u0027)"},{"line_number":40,"context_line":"    users_options \u003d ["},{"line_number":41,"context_line":"        cfg.StrOpt(\u0027endpoint\u0027, default\u003d\u0027http://localhost:35357/v2.0\u0027),"},{"line_number":42,"context_line":"        cfg.StrOpt(\u0027token\u0027, default\u003d\u0027ADMIN_TOKEN\u0027),"},{"line_number":43,"context_line":"        cfg.StrOpt(\u0027project1\u0027, default\u003d\u0027project1\u0027),"},{"line_number":44,"context_line":"        cfg.StrOpt(\u0027project2\u0027, default\u003d\u0027project2\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"1aca2d91_f405f279","line":41,"in_reply_to":"1aca2d91_6a56a8d3","updated":"2015-05-08 04:34:50.000000000","message":"removed","commit_id":"d72ab90f0eb3844dc2fb1f36d8f1c2a6374193e0"}]}
