)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7b7709ac3423e8676c35ed512b1b948d6eca91e0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Adam Young \u003cayoung@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-17 14:27:33 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor is_admin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Trusts uses a hardcoded check fo is_admin, but does not provide sufficient"},{"line_number":10,"context_line":"context to add in the is_admin_project check.  This change provides the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa6399be_e3476749","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":17},"updated":"2016-10-18 03:03:50.000000000","message":"add more detail here, also is this really a refactor?","commit_id":"0f85088b4bbca532ba9fb3b87f7b3f6c3d1a0edb"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"15ca4b1bd82c1a5dbd590df1e794783b87a85571","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor is_admin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Trusts uses a hardcoded check fo is_admin, but does not provide sufficient"},{"line_number":10,"context_line":"context to add in the is_admin_project check.  This change provides the"},{"line_number":11,"context_line":"full context."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa6399be_c8da8217","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":6},"updated":"2016-10-18 02:41:43.000000000","message":"how does this relate to trusts? it\u0027s changing common code.","commit_id":"0f85088b4bbca532ba9fb3b87f7b3f6c3d1a0edb"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"15ca4b1bd82c1a5dbd590df1e794783b87a85571","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Trusts uses a hardcoded check fo is_admin, but does not provide sufficient"},{"line_number":10,"context_line":"context to add in the is_admin_project check.  This change provides the"},{"line_number":11,"context_line":"full context."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I49c7c9d2732675b87c58c9460671dfe13969fd34"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"fa6399be_28085e91","line":12,"updated":"2016-10-18 02:41:43.000000000","message":"Partial-Bug: 968696 ?\n\nRelated-Bug: 968696 ?","commit_id":"0f85088b4bbca532ba9fb3b87f7b3f6c3d1a0edb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"62357d5e1fc4e681449767af77dc0db78d5ebbb8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor is_admin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Trusts uses a hardcoded check for is_admin, but does not provide"},{"line_number":10,"context_line":"sufficient context to add in the is_admin_project check.  This change"},{"line_number":11,"context_line":"moves the logic for the admin override into check protetion so that"},{"line_number":12,"context_line":"other methods can reuse it."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"3a1ff146_9d3b2c38","line":9,"updated":"2017-03-16 01:52:21.000000000","message":"Steve had a good comment on patch set 9 about adding some more detail to the commit message, specific how all this ties together and why we need it.","commit_id":"d7bec4ba39c6db636f7c7886418b2f041cd61a7a"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a8c1bd86fd1cc9558ad480837558d64d3938ef68","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Trusts uses a hardcoded check for is_admin, but does not provide"},{"line_number":10,"context_line":"sufficient context to add in the is_admin_project check.  This change"},{"line_number":11,"context_line":"moves the logic for the admin override into check protetion so that"},{"line_number":12,"context_line":"other methods can reuse it."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I49c7c9d2732675b87c58c9460671dfe13969fd34"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"3a1ff146_7dbccd6c","line":11,"range":{"start_line":11,"start_character":50,"end_line":11,"end_character":59},"updated":"2017-03-15 13:29:50.000000000","message":"protection","commit_id":"d7bec4ba39c6db636f7c7886418b2f041cd61a7a"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a525b18dc3e1bdc96161562668d9b7d720b9d7e2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Refactor is_admin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Trusts uses a hardcoded check for is_admin, but does not provide"},{"line_number":10,"context_line":"sufficient context to add in the is_admin_project check.  This change"},{"line_number":11,"context_line":"moves the logic for the admin override into check protetion so that"},{"line_number":12,"context_line":"other methods can reuse it."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"5ff73747_46dfa439","line":10,"range":{"start_line":10,"start_character":33,"end_line":10,"end_character":49},"updated":"2017-04-27 19:28:30.000000000","message":"This is not clear enough. The changes proposed here do not check is_admin_project, so how is that involved? If you\u0027re trying to set things up to add a check for is_admin_project to the admin_required rule, which is what I think you must be doing, I seriously worry about what you\u0027re doing. Checking is_admin_project in admin_required sounds like a terrible idea that would ripple alarmingly given the dependence on admin_required in so many other rules.\n\nBut the change itself seems good. Provides more consistency and flexibility in that policy check. Even if it opens the door for you to shoot yourself in the foot, as it seems like you may be trying to do per the above. So a commit message about that consistency/flexibility would be fine.","commit_id":"223355464764e5cde8fb59ea207e4c67bf669ad6"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"3558ade1fa7d03729363b9c50eb0c5bb5c9495da","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Refactor is_admin"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Trusts uses a hardcoded check for is_admin, but does not provide"},{"line_number":10,"context_line":"sufficient context to add in the is_admin_project check.  This change"},{"line_number":11,"context_line":"moves the logic for the admin override into check protetion so that"},{"line_number":12,"context_line":"other methods can reuse it."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"5ff73747_312ef391","line":10,"range":{"start_line":10,"start_character":33,"end_line":10,"end_character":49},"in_reply_to":"5ff73747_46dfa439","updated":"2017-04-28 16:21:04.000000000","message":"Because that is a follow on commit.  This is the rationale for it.\nIf you don\u0027t like the verbage, then change it to what you want.","commit_id":"223355464764e5cde8fb59ea207e4c67bf669ad6"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a525b18dc3e1bdc96161562668d9b7d720b9d7e2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Trusts uses a hardcoded check for is_admin, but does not provide"},{"line_number":10,"context_line":"sufficient context to add in the is_admin_project check.  This change"},{"line_number":11,"context_line":"moves the logic for the admin override into check protetion so that"},{"line_number":12,"context_line":"other methods can reuse it."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I49c7c9d2732675b87c58c9460671dfe13969fd34"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"5ff73747_6632a060","line":11,"range":{"start_line":11,"start_character":50,"end_line":11,"end_character":59},"updated":"2017-04-27 19:28:30.000000000","message":"nit:spelling","commit_id":"223355464764e5cde8fb59ea207e4c67bf669ad6"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"3558ade1fa7d03729363b9c50eb0c5bb5c9495da","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Trusts uses a hardcoded check for is_admin, but does not provide"},{"line_number":10,"context_line":"sufficient context to add in the is_admin_project check.  This change"},{"line_number":11,"context_line":"moves the logic for the admin override into check protetion so that"},{"line_number":12,"context_line":"other methods can reuse it."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I49c7c9d2732675b87c58c9460671dfe13969fd34"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"5ff73747_d13eafbf","line":11,"range":{"start_line":11,"start_character":50,"end_line":11,"end_character":59},"in_reply_to":"5ff73747_6632a060","updated":"2017-04-28 16:21:04.000000000","message":"In the future, just fix these and repost.","commit_id":"223355464764e5cde8fb59ea207e4c67bf669ad6"}],"keystone/common/authorization.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"979cdcaf0d90760684bf304e266e55c6a4b6ae15","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        does not have the admin role"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    prep_info \u003d {\u0027f_name\u0027: \u0027admin_required\u0027,"},{"line_number":130,"context_line":"                 \u0027input_attr\u0027: {}}"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    check_protection(app, request, prep_info)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"def _build_policy_check_credentials(action, context, kwargs):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_80cf9754","line":132,"range":{"start_line":129,"start_character":4,"end_line":132,"end_character":45},"updated":"2017-01-08 05:31:59.000000000","message":"add a comment here or around, i have no idea whats going on or what f_name or input_attr are","commit_id":"00b8d14a472f9fecde9c2b68c9ce648161acc7e1"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1199f376230037b89564740ab23b453310727b3c","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                      *args, **kwargs)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"def check_protection2(controller, request, f_name,"},{"line_number":209,"context_line":"                      filter_attr\u003dNone, input_attr\u003dNone, target_attr\u003dNone,"},{"line_number":210,"context_line":"                      *args, **kwargs):"},{"line_number":211,"context_line":"    # Makes the arguments from check protection explicit."}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_a2760a3c","line":208,"updated":"2017-01-10 14:45:34.000000000","message":"Is there a better name for this? I\u0027d even settle for just _check_protection. Have a number names it feel like a versioned C function and that makes me nervous and may confuse others.","commit_id":"c6ad30a6c3b01a24681f458ecdaacb00dfce180c"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"923c093d7d4d8b8893a75955a09b5562b0e7ec92","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                      *args, **kwargs)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"def check_protection2(controller, request, f_name,"},{"line_number":209,"context_line":"                      filter_attr\u003dNone, input_attr\u003dNone, target_attr\u003dNone,"},{"line_number":210,"context_line":"                      *args, **kwargs):"},{"line_number":211,"context_line":"    # Makes the arguments from check protection explicit."}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_3c0f2489","line":208,"in_reply_to":"ba5201f7_54bcfcba","updated":"2017-01-17 19:33:11.000000000","message":"Given that check_protection will become a wrapper around this, _check_protection is a better name.","commit_id":"c6ad30a6c3b01a24681f458ecdaacb00dfce180c"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"3963a0a9ed7aa20f33c31e9eca0fe6b7c8f0cc95","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                      *args, **kwargs)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"def check_protection2(controller, request, f_name,"},{"line_number":209,"context_line":"                      filter_attr\u003dNone, input_attr\u003dNone, target_attr\u003dNone,"},{"line_number":210,"context_line":"                      *args, **kwargs):"},{"line_number":211,"context_line":"    # Makes the arguments from check protection explicit."}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_54bcfcba","line":208,"in_reply_to":"ba5201f7_a2760a3c","updated":"2017-01-11 15:40:44.000000000","message":"++","commit_id":"c6ad30a6c3b01a24681f458ecdaacb00dfce180c"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"3963a0a9ed7aa20f33c31e9eca0fe6b7c8f0cc95","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    _handle_subject_token_id(controller, request, policy_dict)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    if target_attr:"},{"line_number":229,"context_line":"        policy_dict \u003d {\u0027target\u0027: target_attr}"},{"line_number":230,"context_line":"    if input_attr:"},{"line_number":231,"context_line":"        policy_dict.update(input_attr)"},{"line_number":232,"context_line":"    if filter_attr:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ba5201f7_f403300e","line":229,"range":{"start_line":229,"start_character":8,"end_line":229,"end_character":45},"updated":"2017-01-11 15:40:44.000000000","message":"i understand that this is a refactoring, but\n\nthe logic is hard to follow considering the target being set in _handle_member_from_driver. Maybe it should be made more clear in a follow-up?","commit_id":"c6ad30a6c3b01a24681f458ecdaacb00dfce180c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"62357d5e1fc4e681449767af77dc0db78d5ebbb8","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        does not have the admin role"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    check_protection2(app, request, \u0027admin_required\u0027, input_attr\u003d{})"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"def _build_policy_check_credentials(action, context, kwargs):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a1ff146_1de1fcd0","line":129,"updated":"2017-03-16 01:52:21.000000000","message":"I agree with David here - this isn\u0027t a convention we typically do in keystone so I\u0027d like to avoid introducing a one-off name like this.","commit_id":"d7bec4ba39c6db636f7c7886418b2f041cd61a7a"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"1d4a205a7a58c596a672a30b0228dca33a082cdf","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                      *args, **kwargs)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"def check_protection2(controller, request, f_name,"},{"line_number":209,"context_line":"                      filter_attr\u003dNone, input_attr\u003dNone, target_attr\u003dNone,"},{"line_number":210,"context_line":"                      *args, **kwargs):"},{"line_number":211,"context_line":"    # Makes the arguments from check protection explicit."}],"source_content_type":"text/x-python","patch_set":13,"id":"3a1ff146_4a968595","line":208,"range":{"start_line":208,"start_character":4,"end_line":208,"end_character":21},"updated":"2017-03-14 22:04:18.000000000","message":"echoing what was previously said, yes please rename to something like \u0027_check_protection\u0027","commit_id":"d7bec4ba39c6db636f7c7886418b2f041cd61a7a"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"a8c1bd86fd1cc9558ad480837558d64d3938ef68","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                      *args, **kwargs)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"def check_protection2(controller, request, f_name,"},{"line_number":209,"context_line":"                      filter_attr\u003dNone, input_attr\u003dNone, target_attr\u003dNone,"},{"line_number":210,"context_line":"                      *args, **kwargs):"},{"line_number":211,"context_line":"    # Makes the arguments from check protection explicit."}],"source_content_type":"text/x-python","patch_set":13,"id":"3a1ff146_3dab351f","line":208,"range":{"start_line":208,"start_character":4,"end_line":208,"end_character":21},"in_reply_to":"3a1ff146_4a968595","updated":"2017-03-15 13:29:50.000000000","message":"++","commit_id":"d7bec4ba39c6db636f7c7886418b2f041cd61a7a"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"a525b18dc3e1bdc96161562668d9b7d720b9d7e2","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            raise exception.Unauthorized(_(\u0027Invalid tenant\u0027))"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        creds[\u0027roles\u0027] \u003d user_token_ref.role_names"},{"line_number":151,"context_line":"        # Accept either is_admin or the admin role"},{"line_number":152,"context_line":"        app.policy_api.enforce(creds, \u0027admin_required\u0027, {})"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"5ff73747_66b3c00b","side":"PARENT","line":151,"updated":"2017-04-27 19:28:30.000000000","message":"+1 for getting rid of this comment that makes assumptions about how the admin_required rule is configured.","commit_id":"a63f72304620c1b675a643ee07f404c7e4ef9e56"}]}
