)]}'
{"keystone/common/config.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"876fadce0728d77829b087d3ffbcca8dfb42cdd2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"da20952f_e17a3525","updated":"2015-09-09 03:06:44.000000000","message":"one of the issues i have with this is that you can\u0027t opt-in, you are making an experimental change to be always enabled, maybe consider another option to enable policy refresh?","commit_id":"e0afe3a7b0f5c957dc2daf2be7a915a709f11b8d"}],"keystone/common/wsgi.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"876fadce0728d77829b087d3ffbcca8dfb42cdd2","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        elif isinstance(result, webob.exc.WSGIHTTPException):"},{"line_number":270,"context_line":"            return result"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        headers \u003d []"},{"line_number":273,"context_line":"        # If a freshness attibute is part of the formatted entity, extract it"},{"line_number":274,"context_line":"        # and return it in the appropriate HTTP cache control header."},{"line_number":275,"context_line":"        max_age \u003d result.pop(\u0027freshness\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_c1c37156","line":272,"updated":"2015-09-09 03:06:44.000000000","message":"headers are normally dicts not lists\n\n  headers \u003d {}","commit_id":"e0afe3a7b0f5c957dc2daf2be7a915a709f11b8d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"876fadce0728d77829b087d3ffbcca8dfb42cdd2","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        # and return it in the appropriate HTTP cache control header."},{"line_number":275,"context_line":"        max_age \u003d result.pop(\u0027freshness\u0027, None)"},{"line_number":276,"context_line":"        if max_age:"},{"line_number":277,"context_line":"            headers.append((\u0027Cache-Control\u0027, \u0027max-age\u003d%d\u0027 % max_age))"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        response_code \u003d self._get_response_code(req)"},{"line_number":280,"context_line":"        return render_response(body\u003dresult, status\u003dresponse_code,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_21a90d91","line":277,"updated":"2015-09-09 03:06:44.000000000","message":"http://docs.python-requests.org/en/latest/user/quickstart/#custom-headers\n\n  headers\u003d{\u0027Cache-Control\u0027: \u0027max-age\u003d%d\u0027 % max_age}","commit_id":"e0afe3a7b0f5c957dc2daf2be7a915a709f11b8d"}],"keystone/endpoint_policy/controllers.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"876fadce0728d77829b087d3ffbcca8dfb42cdd2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"da20952f_61db8522","updated":"2015-09-09 03:06:44.000000000","message":"consider adding some logs so a deployer knows when a new policy timeout has been hit","commit_id":"e0afe3a7b0f5c957dc2daf2be7a915a709f11b8d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"876fadce0728d77829b087d3ffbcca8dfb42cdd2","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        self.endpoint_policy_api.delete_policy_association("},{"line_number":146,"context_line":"            policy_id, service_id\u003dservice_id, region_id\u003dregion_id)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _get_policy_validity(self, endpoint_id):"},{"line_number":149,"context_line":"        \"\"\"Calculates the validity of the policy associated with the given ID"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        Policy entities have their validity defined according to the"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_2197cd3b","line":148,"updated":"2015-09-09 03:06:44.000000000","message":"nit: for cleanliness, i\u0027d prefer this moved to the end of file","commit_id":"e0afe3a7b0f5c957dc2daf2be7a915a709f11b8d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"876fadce0728d77829b087d3ffbcca8dfb42cdd2","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        entities have their freshness added of a hash value, which is"},{"line_number":157,"context_line":"        calculated based on both the endpoint ID the policy is associated to"},{"line_number":158,"context_line":"        and the policy_timeout."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        This function returns the datetime object representing the entity\u0027s"},{"line_number":161,"context_line":"        expiration date."},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_81b9f9cd","line":159,"updated":"2015-09-09 03:06:44.000000000","message":"I still have no idea what this function actually does or why it needs endpoint_id","commit_id":"e0afe3a7b0f5c957dc2daf2be7a915a709f11b8d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"876fadce0728d77829b087d3ffbcca8dfb42cdd2","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        calculated based on both the endpoint ID the policy is associated to"},{"line_number":158,"context_line":"        and the policy_timeout."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        This function returns the datetime object representing the entity\u0027s"},{"line_number":161,"context_line":"        expiration date."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_e1a1d596","line":160,"updated":"2015-09-09 03:06:44.000000000","message":"use docstring formatting here","commit_id":"e0afe3a7b0f5c957dc2daf2be7a915a709f11b8d"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"876fadce0728d77829b087d3ffbcca8dfb42cdd2","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        # set to endpoints, we have to handle wrapping this policy entity"},{"line_number":193,"context_line":"        # ourselves."},{"line_number":194,"context_line":"        self._add_self_referential_link(context, ref)"},{"line_number":195,"context_line":"        return {\u0027policy\u0027: ref, \u0027freshness\u0027: freshness}"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    # NOTE(henry-nash): As in the catalog controller, we must ensure that the"},{"line_number":198,"context_line":"    # legacy_endpoint_id does not escape."}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_21db4d51","line":195,"updated":"2015-09-09 03:06:44.000000000","message":"this is changing the result of this API: http://specs.openstack.org/openstack/keystone-specs/api/v3/identity-api-v3-os-endpoint-policy.html#get-effective-policy-associated-with-endpoint","commit_id":"e0afe3a7b0f5c957dc2daf2be7a915a709f11b8d"}]}
