)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0b95960b621aef28529993a5853215fa6365f9ac","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move policy association to DocumentedRuleDefault"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new policy class was introduce that requires"},{"line_number":10,"context_line":"additional parameters when defining policy objects."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch switches our policy association policy object to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ffe62b97_463cfbdf","line":9,"updated":"2017-03-29 19:28:25.000000000","message":"nit: introduced","commit_id":"e854455985f355f3c197d6b247998157a16771ee"}],"keystone/common/policies/policy_association.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d3fb13af497a3185ec0d6bdca1f1b7ed1fd42c0f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"policy_association_policies \u003d ["},{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027create_policy_association_for_endpoint\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":21,"context_line":"        description\u003d\u0027Create policy association for endpoint\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":23,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_bb9c6b0e","line":20,"updated":"2017-03-27 21:07:11.000000000","message":"We should add punctuation to these descriptions to be consistent with the rest of the patches in this series.","commit_id":"c55762ebf74204afd1e67ec0162be437344aff2b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d3fb13af497a3185ec0d6bdca1f1b7ed1fd42c0f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027create_policy_association_for_endpoint\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":21,"context_line":"        description\u003d\u0027Create policy association for endpoint\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":23,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":24,"context_line":"                     \u0027method\u0027: \u0027PUT\u0027}]),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_5bb0bf8a","line":21,"updated":"2017-03-27 21:07:11.000000000","message":"nit:\n\n  Associate a policy to a specific endpoint.","commit_id":"c55762ebf74204afd1e67ec0162be437344aff2b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d3fb13af497a3185ec0d6bdca1f1b7ed1fd42c0f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":40,"context_line":"        name\u003dbase.IDENTITY % \u0027create_policy_association_for_service\u0027,"},{"line_number":41,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":42,"context_line":"        description\u003d\u0027Create policy association for service\u0027,"},{"line_number":43,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":44,"context_line":"                              \u0027services/{service_id}\u0027),"},{"line_number":45,"context_line":"                     \u0027method\u0027: \u0027PUT\u0027}]),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_bb6a2bea","line":42,"updated":"2017-03-27 21:07:11.000000000","message":"nit: \n\n  Associate a policy to a specific service.","commit_id":"c55762ebf74204afd1e67ec0162be437344aff2b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d3fb13af497a3185ec0d6bdca1f1b7ed1fd42c0f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        name\u003dbase.IDENTITY % ("},{"line_number":62,"context_line":"            \u0027create_policy_association_for_region_and_service\u0027),"},{"line_number":63,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":64,"context_line":"        description\u003d\u0027Create policy association for region and service\u0027,"},{"line_number":65,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":66,"context_line":"                              \u0027services/{service_id}/regions/{region_id}\u0027),"},{"line_number":67,"context_line":"                     \u0027method\u0027: \u0027PUT\u0027}]),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_3b7e1baf","line":64,"updated":"2017-03-27 21:07:11.000000000","message":"nit:\n\n  Associate a policy to a specific region and service combination.","commit_id":"c55762ebf74204afd1e67ec0162be437344aff2b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0024d1ebe2d661333dcf13d7805e59cc1b2f2d3f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        description\u003d\u0027Check policy association for endpoint.\u0027,"},{"line_number":29,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":30,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":31,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":32,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":33,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_policy_association_for_endpoint\u0027,"},{"line_number":34,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_2662170b","line":31,"range":{"start_line":31,"start_character":32,"end_line":31,"end_character":35},"updated":"2017-03-29 19:16:53.000000000","message":"Please update this to HEAD, as it\u0027s more consistent with the operation of checking (as per description) something, returning only a 204 No Content.","commit_id":"e854455985f355f3c197d6b247998157a16771ee"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0b95960b621aef28529993a5853215fa6365f9ac","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        description\u003d\u0027Check policy association for endpoint.\u0027,"},{"line_number":29,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":30,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":31,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":32,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":33,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_policy_association_for_endpoint\u0027,"},{"line_number":34,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_e11419eb","line":31,"updated":"2017-03-29 19:28:25.000000000","message":"This is also something it looks like our router makes available via HEAD.\n\nhttps://github.com/openstack/keystone/blob/36da6f0c8660968e1ddacab274bace3abd78c0cb/keystone/endpoint_policy/routers.py#L50","commit_id":"e854455985f355f3c197d6b247998157a16771ee"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"49059b1dc562dd3a255499bcb2cbf97683e5fec0","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        description\u003d\u0027Check policy association for endpoint.\u0027,"},{"line_number":29,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":30,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":31,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":32,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":33,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_policy_association_for_endpoint\u0027,"},{"line_number":34,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_81e54dde","line":31,"in_reply_to":"ffe62b97_e11419eb","updated":"2017-03-29 19:31:19.000000000","message":"We should be able to accomplish this with another operation in the list:\n\n  operations\u003d[\n      {\u0027path\u0027: \u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/endpoints/{endpoint_id}\u0027,\n       \u0027method\u0027: \u0027GET\u0027},\n      {\u0027path\u0027: \u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/endpoints/{endpoint_id}\u0027,\n       \u0027method\u0027: \u0027HEAD\u0027}\n  ]","commit_id":"e854455985f355f3c197d6b247998157a16771ee"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0b95960b621aef28529993a5853215fa6365f9ac","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        description\u003d\u0027Check policy association for service.\u0027,"},{"line_number":50,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":51,"context_line":"                              \u0027services/{service_id}\u0027),"},{"line_number":52,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":53,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":54,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_policy_association_for_service\u0027,"},{"line_number":55,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_e1c2d952","line":52,"updated":"2017-03-29 19:28:25.000000000","message":"Same comment here: \n\nhttps://github.com/openstack/keystone/blob/36da6f0c8660968e1ddacab274bace3abd78c0cb/keystone/endpoint_policy/routers.py#L63","commit_id":"e854455985f355f3c197d6b247998157a16771ee"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0024d1ebe2d661333dcf13d7805e59cc1b2f2d3f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        description\u003d\u0027Check policy association for service.\u0027,"},{"line_number":50,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":51,"context_line":"                              \u0027services/{service_id}\u0027),"},{"line_number":52,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":53,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":54,"context_line":"        name\u003dbase.IDENTITY % \u0027delete_policy_association_for_service\u0027,"},{"line_number":55,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_c6524b35","line":52,"range":{"start_line":52,"start_character":32,"end_line":52,"end_character":35},"updated":"2017-03-29 19:16:53.000000000","message":"ditto","commit_id":"e854455985f355f3c197d6b247998157a16771ee"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0b95960b621aef28529993a5853215fa6365f9ac","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        description\u003d\u0027Check policy association for region and service.\u0027,"},{"line_number":73,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":74,"context_line":"                              \u0027services/{service_id}/regions/{region_id}\u0027),"},{"line_number":75,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":76,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":77,"context_line":"        name\u003dbase.IDENTITY % ("},{"line_number":78,"context_line":"            \u0027delete_policy_association_for_region_and_service\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_418065f5","line":75,"updated":"2017-03-29 19:28:25.000000000","message":"Same comment here: \n\nhttps://github.com/openstack/keystone/blob/36da6f0c8660968e1ddacab274bace3abd78c0cb/keystone/endpoint_policy/routers.py#L76","commit_id":"e854455985f355f3c197d6b247998157a16771ee"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0024d1ebe2d661333dcf13d7805e59cc1b2f2d3f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        description\u003d\u0027Check policy association for region and service.\u0027,"},{"line_number":73,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":74,"context_line":"                              \u0027services/{service_id}/regions/{region_id}\u0027),"},{"line_number":75,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":76,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":77,"context_line":"        name\u003dbase.IDENTITY % ("},{"line_number":78,"context_line":"            \u0027delete_policy_association_for_region_and_service\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_66393ff0","line":75,"range":{"start_line":75,"start_character":32,"end_line":75,"end_character":35},"updated":"2017-03-29 19:16:53.000000000","message":"ditto","commit_id":"e854455985f355f3c197d6b247998157a16771ee"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0b95960b621aef28529993a5853215fa6365f9ac","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        description\u003d\u0027Get policy for endpoint.\u0027,"},{"line_number":88,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/endpoints/{endpoint_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":89,"context_line":"                              \u0027policy\u0027),"},{"line_number":90,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":91,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":92,"context_line":"        name\u003dbase.IDENTITY % \u0027list_endpoints_for_policy\u0027,"},{"line_number":93,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_a1529111","line":90,"updated":"2017-03-29 19:28:25.000000000","message":"Based on the router for this API, this can also be done with HEAD.\n\nhttps://github.com/openstack/keystone/blob/36da6f0c8660968e1ddacab274bace3abd78c0cb/keystone/endpoint_policy/routers.py#L37\n\nWhich is misleading since it\u0027s not even documented in our API reference (https://developer.openstack.org/api-ref/identity/v3-ext/index.html?expanded\u003dshow-the-effective-policy-associated-with-an-endpoint-detail#os-endpoint-policy-api)","commit_id":"e854455985f355f3c197d6b247998157a16771ee"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"34162ba08d94fb8784cfc688b344f99ece017127","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        name\u003dbase.IDENTITY % \u0027check_policy_association_for_endpoint\u0027,"},{"line_number":27,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":28,"context_line":"        description\u003d\u0027Check policy association for endpoint.\u0027,"},{"line_number":29,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":30,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":31,"context_line":"                     \u0027method\u0027: \u0027GET\u0027},"},{"line_number":32,"context_line":"                    {\u0027path\u0027: (\u0027/v3/policies/{policy_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":33,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":34,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_8478a8f8","line":31,"range":{"start_line":29,"start_character":20,"end_line":31,"end_character":38},"updated":"2017-03-30 17:43:37.000000000","message":"I still find it weird that we have GET for operations like this (besides HEAD, which makes sense). however this is not what your patch is adding, it\u0027s just documenting what exists .. :(","commit_id":"b2530147c64ad91259af34a471c9196e6b34b5e8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e32e64321c6f1f31c9ee215240197bd23385481c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":94,"context_line":"        name\u003dbase.IDENTITY % \u0027get_policy_for_endpoint\u0027,"},{"line_number":95,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":96,"context_line":"        description\u003d\u0027Get policy for endpoint.\u0027,"},{"line_number":97,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/endpoints/{endpoint_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":98,"context_line":"                              \u0027policy\u0027),"},{"line_number":99,"context_line":"                     \u0027method\u0027: \u0027GET\u0027},"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_b0436113","line":96,"updated":"2017-04-04 15:38:15.000000000","message":"policies*","commit_id":"b2530147c64ad91259af34a471c9196e6b34b5e8"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"402a89aab19203ece0a701e80d461a08c5fc0a8e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":94,"context_line":"        name\u003dbase.IDENTITY % \u0027get_policy_for_endpoint\u0027,"},{"line_number":95,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":96,"context_line":"        description\u003d\u0027Get policy for endpoint.\u0027,"},{"line_number":97,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/endpoints/{endpoint_id}/OS-ENDPOINT-POLICY/\u0027"},{"line_number":98,"context_line":"                              \u0027policy\u0027),"},{"line_number":99,"context_line":"                     \u0027method\u0027: \u0027GET\u0027},"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_f031e95b","line":96,"in_reply_to":"dfeb2761_b0436113","updated":"2017-04-04 15:45:33.000000000","message":"Actually - I think this is correct. For some reason I was thinking this should return a list of policies for a given endpoint, but that doesn\u0027t seem to be the case according to the implementation [0].\n\n[0] https://github.com/openstack/keystone/blob/master/keystone/endpoint_policy/core.py#L188","commit_id":"b2530147c64ad91259af34a471c9196e6b34b5e8"}]}
