)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b2242def3eeabd072492c75e3898cdbb63b0e9a4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"* account for changes to Enforcer initialization"},{"line_number":11,"context_line":"* account for changes to config options"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"partially implements bp graduate-policy"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ia23afda5acf92cdc4578ec4c85821603c56d3097"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ba7be1f8_032f9da2","line":13,"updated":"2015-02-20 06:41:58.000000000","message":"DocImpact? We are supporting the new [olso_policy] group right?","commit_id":"73732bbfbfa7b9b9607e11dee8d959f1b9fb4a20"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"2af30737d69929f8acc9be07233c72932d34d1a1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"* pull in oslo.policy"},{"line_number":10,"context_line":"* account for changes to Enforcer initialization"},{"line_number":11,"context_line":"* account for changes to config options"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"partially implements bp graduate-policy"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ia23afda5acf92cdc4578ec4c85821603c56d3097"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba7be1f8_3eee768c","line":12,"updated":"2015-02-20 07:27:05.000000000","message":"DocImpact","commit_id":"5381a514364c8eb2b748f35527a6237c89920b22"}],"config-generator/keystone.conf":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"b278e0a301b5c3ed298b136c650fcfd24bbd5663","unresolved":false,"context_lines":[{"line_number":6,"context_line":"namespace \u003d keystone.openstack.common.eventlet_backdoor"},{"line_number":7,"context_line":"namespace \u003d oslo.log"},{"line_number":8,"context_line":"namespace \u003d oslo.messaging"},{"line_number":9,"context_line":"namespace \u003d oslo.policy"},{"line_number":10,"context_line":"namespace \u003d oslo.db"},{"line_number":11,"context_line":"namespace \u003d oslo.middleware"},{"line_number":12,"context_line":"# We don\u0027t use oslo.concurrency config options in"}],"source_content_type":"text/plain","patch_set":17,"id":"9a80dd14_3ea45456","line":9,"updated":"2015-03-06 00:13:34.000000000","message":"(nit) if trying to keep the pseudo-alphabetical order, place this after  oslo.middleware\n\noslo.db is messing up the alphabetical order","commit_id":"3ec241867335514597e998705d12ecb699b796ff"}],"keystone/policy/backends/rules.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"941f72b89fbb260eda8189a920a928738753a655","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    global _POLICY_CACHE"},{"line_number":51,"context_line":"    global _ENFORCER"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    policy_opts.set_defaults(CONF)"},{"line_number":54,"context_line":"    if not _POLICY_PATH:"},{"line_number":55,"context_line":"        _POLICY_PATH \u003d CONF.oslo_policy.policy_file"},{"line_number":56,"context_line":"        if not os.path.exists(_POLICY_PATH):"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_d741e863","line":53,"updated":"2015-02-19 19:49:55.000000000","message":"You only need to do this if you\u0027re actually changing one of the defaults.","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9bc4c782190adf932b82c217b7833827cb5355b5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    global _POLICY_CACHE"},{"line_number":51,"context_line":"    global _ENFORCER"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    policy_opts.set_defaults(CONF)"},{"line_number":54,"context_line":"    if not _POLICY_PATH:"},{"line_number":55,"context_line":"        _POLICY_PATH \u003d CONF.oslo_policy.policy_file"},{"line_number":56,"context_line":"        if not os.path.exists(_POLICY_PATH):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_b26c5d38","line":53,"in_reply_to":"da86d52c_d741e863","updated":"2015-02-20 03:53:38.000000000","message":"removed this, thanks doug","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"941f72b89fbb260eda8189a920a928738753a655","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    global _ENFORCER"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    policy_opts.set_defaults(CONF)"},{"line_number":54,"context_line":"    if not _POLICY_PATH:"},{"line_number":55,"context_line":"        _POLICY_PATH \u003d CONF.oslo_policy.policy_file"},{"line_number":56,"context_line":"        if not os.path.exists(_POLICY_PATH):"},{"line_number":57,"context_line":"            _POLICY_PATH \u003d CONF.find_file(_POLICY_PATH)"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_3236d2e7","line":54,"updated":"2015-02-19 19:49:55.000000000","message":"The Enforcer class already does a lot of this lookup logic before it tries to use the filename passed to it. If you\u0027re not getting the policy file from somewhere other than the config setting, it doesn\u0027t look like you need this block and don\u0027t need to pass an explicit policy_file argument to the Enforcer. If the application needs to know the policy file that was loaded, we should expose that through the Enforcer. It is tracking the actual full paths already.","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9bc4c782190adf932b82c217b7833827cb5355b5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    global _ENFORCER"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    policy_opts.set_defaults(CONF)"},{"line_number":54,"context_line":"    if not _POLICY_PATH:"},{"line_number":55,"context_line":"        _POLICY_PATH \u003d CONF.oslo_policy.policy_file"},{"line_number":56,"context_line":"        if not os.path.exists(_POLICY_PATH):"},{"line_number":57,"context_line":"            _POLICY_PATH \u003d CONF.find_file(_POLICY_PATH)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_32606d35","line":54,"in_reply_to":"da86d52c_3236d2e7","updated":"2015-02-20 03:53:38.000000000","message":"the policy file in use can be accessed by just calling Enforcer.policy_file. that that solved this issue","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"941f72b89fbb260eda8189a920a928738753a655","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def _set_rules(data):"},{"line_number":66,"context_line":"    global _ENFORCER"},{"line_number":67,"context_line":"    default_rule \u003d CONF.oslo_policy.policy_default_rule"},{"line_number":68,"context_line":"    try:"},{"line_number":69,"context_line":"        _ENFORCER.set_rules(common_policy.Rules.load_json("},{"line_number":70,"context_line":"            data, default_rule))"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_d223b655","line":67,"updated":"2015-02-19 19:49:55.000000000","message":"We shouldn\u0027t need the application to set the default rule, especially if that is already in a configuration setting. If we have to do it from the outside, we should expose the default rule value somehow other than through the configuration variable.","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"9bc4c782190adf932b82c217b7833827cb5355b5","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def _set_rules(data):"},{"line_number":66,"context_line":"    global _ENFORCER"},{"line_number":67,"context_line":"    default_rule \u003d CONF.oslo_policy.policy_default_rule"},{"line_number":68,"context_line":"    try:"},{"line_number":69,"context_line":"        _ENFORCER.set_rules(common_policy.Rules.load_json("},{"line_number":70,"context_line":"            data, default_rule))"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_5265e143","line":67,"in_reply_to":"da86d52c_d223b655","updated":"2015-02-20 03:53:38.000000000","message":"same as above, we can just call enforcer.default_rule","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"75a6499de9c3c2893f0662dcc9f45530bcfa10f4","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    if not _ENFORCER:"},{"line_number":51,"context_line":"        _ENFORCER \u003d common_policy.Enforcer(CONF)"},{"line_number":52,"context_line":"    utils.read_cached_file(CONF.oslo_policy.policy_file,"},{"line_number":53,"context_line":"                           _POLICY_CACHE,"},{"line_number":54,"context_line":"                           reload_func\u003d_set_rules)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_7c5f2173","line":52,"updated":"2015-02-20 00:16:28.000000000","message":"Why not do:\n\n    utils.read_cached_file(_ENFORCER.policy_file,\n\n?","commit_id":"b3111d17cf7815a8f1c8a1071cbc371575d7804f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3e2d566df239cb456c0b37a485d30459ad8b6030","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    if not _ENFORCER:"},{"line_number":51,"context_line":"        _ENFORCER \u003d common_policy.Enforcer(CONF)"},{"line_number":52,"context_line":"    utils.read_cached_file(CONF.oslo_policy.policy_file,"},{"line_number":53,"context_line":"                           _POLICY_CACHE,"},{"line_number":54,"context_line":"                           reload_func\u003d_set_rules)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ba7be1f8_af407a36","line":52,"in_reply_to":"ba7be1f8_7c5f2173","updated":"2015-02-20 02:32:02.000000000","message":"done, thanks. this also reminded me that i could basically eliminate _POLICY_PATH too, since that is also available through the enforcer.","commit_id":"b3111d17cf7815a8f1c8a1071cbc371575d7804f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"7be1b5c39e6253ca4d0fb86d144df1b1c38a1915","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    if not _ENFORCER:"},{"line_number":47,"context_line":"        _ENFORCER \u003d common_policy.Enforcer(CONF)"},{"line_number":48,"context_line":"    utils.read_cached_file(_ENFORCER.policy_file,"},{"line_number":49,"context_line":"                           _POLICY_CACHE,"},{"line_number":50,"context_line":"                           reload_func\u003d_set_rules)"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba7be1f8_08525cdd","line":48,"updated":"2015-02-20 05:11:33.000000000","message":"looks like policy.json handled a lot of the caching bits too, so this also seems unnecessary","commit_id":"4f3173f674c59598027d484561298a18cac25e19"}],"keystone/tests/unit/core.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"941f72b89fbb260eda8189a920a928738753a655","unresolved":false,"context_lines":[{"line_number":82,"context_line":"log.register_options(CONF)"},{"line_number":83,"context_line":"# NOTE(stevemar): We need a dummy enforcer here to setup the options"},{"line_number":84,"context_line":"# that oslo.policy provides"},{"line_number":85,"context_line":"_ENFORCER \u003d common_policy.Enforcer(CONF)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"IN_MEM_DB_CONN_STRING \u003d \u0027sqlite://\u0027"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_d2b1f601","line":85,"updated":"2015-02-19 19:49:55.000000000","message":"We should provide a test fixture for doing this instead of relying on a side-effect of instantiating the Enforcer.","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b2242def3eeabd072492c75e3898cdbb63b0e9a4","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    def config_overrides(self):"},{"line_number":306,"context_line":"        signing_certfile \u003d \u0027examples/pki/certs/signing_cert.pem\u0027"},{"line_number":307,"context_line":"        signing_keyfile \u003d \u0027examples/pki/private/signing_key.pem\u0027"},{"line_number":308,"context_line":"        self.config_fixture.config(group\u003d\u0027oslo_policy\u0027,"},{"line_number":309,"context_line":"                                   policy_file\u003ddirs.etc(\u0027policy.json\u0027))"},{"line_number":310,"context_line":"        self.config_fixture.config("},{"line_number":311,"context_line":"            # TODO(morganfainberg): Make Cache Testing a separate test case"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba7be1f8_0306bd20","line":308,"updated":"2015-02-20 06:41:58.000000000","message":"we need to add DocImpact in the commit if \u0027oslo_policy\u0027 is something new","commit_id":"73732bbfbfa7b9b9607e11dee8d959f1b9fb4a20"}],"keystone/tests/unit/test_policy.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"77c23995e0622f3faacc2c50b0d1c8cebcf27963","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _set_rules(self):"},{"line_number":98,"context_line":"        these_rules \u003d common_policy.Rules("},{"line_number":99,"context_line":"            dict((k, policy_parser.parse_rule(v))"},{"line_number":100,"context_line":"                 for k, v in self.rules.items()))"},{"line_number":101,"context_line":"        rules._ENFORCER.set_rules(these_rules)"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_71f4cc54","line":99,"updated":"2015-02-19 18:40:24.000000000","message":"So is this to avoid having to write a file and have it read?\n\nI wonder if we should add a class method to oslo_policy.policy.Rules to create an instance from a dictionary of strings so that keystone (and other services) don\u0027t have to load a private module for this purpose.","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"b6948ed82abbcccbfeaafdc0e055a1a2a9e79bca","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        rules.enforce(empty_credentials, action, self.target)"},{"line_number":54,"context_line":"        with open(self.tmpfilename, \"w\") as policyfile:"},{"line_number":55,"context_line":"            policyfile.write(\"\"\"{\"example:test\": [\"false:false\"]}\"\"\")"},{"line_number":56,"context_line":"        rules._ENFORCER.clear()"},{"line_number":57,"context_line":"        self.assertRaises(exception.ForbiddenAction, rules.enforce,"},{"line_number":58,"context_line":"                          empty_credentials, action, self.target)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_fb0657cd","line":56,"updated":"2015-02-23 21:17:02.000000000","message":"It would be good to move the reset code in the tests to a fixture so the cleanup is always run. If rules.enforce() throws an error, the file will end up with bad data in it and the enforcer won\u0027t be reset for the next test.","commit_id":"8520b448f81d2db46ea7d4a4b9d7dc3f11fe6d95"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2a29fe104e83d10271e37ad1fb3a4f19dccd50c4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        rules.enforce(empty_credentials, action, self.target)"},{"line_number":54,"context_line":"        with open(self.tmpfilename, \"w\") as policyfile:"},{"line_number":55,"context_line":"            policyfile.write(\"\"\"{\"example:test\": [\"false:false\"]}\"\"\")"},{"line_number":56,"context_line":"        rules._ENFORCER.clear()"},{"line_number":57,"context_line":"        self.assertRaises(exception.ForbiddenAction, rules.enforce,"},{"line_number":58,"context_line":"                          empty_credentials, action, self.target)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_4c886fc5","line":56,"updated":"2015-02-24 14:01:26.000000000","message":"use self.addCleanup(rules._ENFORCER.clear)","commit_id":"8520b448f81d2db46ea7d4a4b9d7dc3f11fe6d95"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1fc29dda467376c92272e1547201a994745148b7","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        rules.enforce(empty_credentials, action, self.target)"},{"line_number":54,"context_line":"        with open(self.tmpfilename, \"w\") as policyfile:"},{"line_number":55,"context_line":"            policyfile.write(\"\"\"{\"example:test\": [\"false:false\"]}\"\"\")"},{"line_number":56,"context_line":"        rules._ENFORCER.clear()"},{"line_number":57,"context_line":"        self.assertRaises(exception.ForbiddenAction, rules.enforce,"},{"line_number":58,"context_line":"                          empty_credentials, action, self.target)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_8a3ebd26","line":56,"in_reply_to":"ba7be1f8_4c886fc5","updated":"2015-02-24 17:25:13.000000000","message":"@brant, but the enforcer cache must be cleared before the next line, adding a clean up won\u0027t help?","commit_id":"8520b448f81d2db46ea7d4a4b9d7dc3f11fe6d95"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0f23646c944f7de76fba1e7837ec129b9712d9f9","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        rules.enforce(empty_credentials, action, self.target)"},{"line_number":54,"context_line":"        with open(self.tmpfilename, \"w\") as policyfile:"},{"line_number":55,"context_line":"            policyfile.write(\"\"\"{\"example:test\": [\"false:false\"]}\"\"\")"},{"line_number":56,"context_line":"        rules._ENFORCER.clear()"},{"line_number":57,"context_line":"        self.assertRaises(exception.ForbiddenAction, rules.enforce,"},{"line_number":58,"context_line":"                          empty_credentials, action, self.target)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_9eefdbe8","line":56,"in_reply_to":"ba7be1f8_8a3ebd26","updated":"2015-02-24 18:39:55.000000000","message":"Doug\u0027s comment doesn\u0027t apply? (Doug\u0027s comment was about making sure the cleanup is always run)","commit_id":"8520b448f81d2db46ea7d4a4b9d7dc3f11fe6d95"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"db6403915101777e504ea7892f0203ed9df1b272","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        rules.enforce(empty_credentials, action, self.target)"},{"line_number":54,"context_line":"        with open(self.tmpfilename, \"w\") as policyfile:"},{"line_number":55,"context_line":"            policyfile.write(\"\"\"{\"example:test\": [\"false:false\"]}\"\"\")"},{"line_number":56,"context_line":"        rules._ENFORCER.clear()"},{"line_number":57,"context_line":"        self.assertRaises(exception.ForbiddenAction, rules.enforce,"},{"line_number":58,"context_line":"                          empty_credentials, action, self.target)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_d9332d12","line":56,"in_reply_to":"ba7be1f8_9eefdbe8","updated":"2015-02-24 19:14:22.000000000","message":"oh you want it added in general? sure","commit_id":"8520b448f81d2db46ea7d4a4b9d7dc3f11fe6d95"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e54544d4e4f2d00d4d510cf0c51152afde0fc464","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        rules.enforce(empty_credentials, action, self.target)"},{"line_number":54,"context_line":"        with open(self.tmpfilename, \"w\") as policyfile:"},{"line_number":55,"context_line":"            policyfile.write(\"\"\"{\"example:test\": [\"false:false\"]}\"\"\")"},{"line_number":56,"context_line":"        rules._ENFORCER.clear()"},{"line_number":57,"context_line":"        self.assertRaises(exception.ForbiddenAction, rules.enforce,"},{"line_number":58,"context_line":"                          empty_credentials, action, self.target)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_d6758132","line":56,"in_reply_to":"ba7be1f8_d9332d12","updated":"2015-02-25 19:52:06.000000000","message":"brant, i cleaned up the tests here: https://review.openstack.org/#/c/158561/","commit_id":"8520b448f81d2db46ea7d4a4b9d7dc3f11fe6d95"}],"keystone/tests/unit/test_v3_auth.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"941f72b89fbb260eda8189a920a928738753a655","unresolved":false,"context_lines":[{"line_number":567,"context_line":"                                         domain_id\u003dself.domainA[\u0027id\u0027])"},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"        # Finally, switch to the v3 sample policy file"},{"line_number":570,"context_line":"        self.orig_policy_file \u003d CONF.oslo_policy.policy_file"},{"line_number":571,"context_line":"        from keystone.policy.backends import rules"},{"line_number":572,"context_line":"        rules.reset()"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_b28c8236","line":570,"updated":"2015-02-19 19:49:55.000000000","message":"There\u0027s a fixture in oslo.config that knows how to set and reset configuration options. This test code should use that instead of relying on the name of a configuration option defined in the library.","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"}],"requirements-py3.txt":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"941f72b89fbb260eda8189a920a928738753a655","unresolved":false,"context_lines":[{"line_number":27,"context_line":"oslo.i18n\u003e\u003d1.3.0  # Apache-2.0"},{"line_number":28,"context_line":"oslo.log\u003e\u003d0.1.0            # Apache-2.0"},{"line_number":29,"context_line":"oslo.middleware\u003e\u003d0.3.0                  # Apache-2.0"},{"line_number":30,"context_line":"#oslo.policy\u003e\u003d0.1.0"},{"line_number":31,"context_line":"-e git://github.com/openstack/oslo.policy.git#egg\u003doslo.policy"},{"line_number":32,"context_line":"oslo.serialization\u003e\u003d1.2.0               # Apache-2.0"},{"line_number":33,"context_line":"oslo.utils\u003e\u003d1.2.0                       # Apache-2.0"}],"source_content_type":"text/plain","patch_set":9,"id":"da86d52c_72a5aa9d","line":30,"updated":"2015-02-19 19:49:55.000000000","message":"It should be possible to just use the release now.","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"b278e0a301b5c3ed298b136c650fcfd24bbd5663","unresolved":false,"context_lines":[{"line_number":27,"context_line":"oslo.i18n\u003e\u003d1.3.0  # Apache-2.0"},{"line_number":28,"context_line":"oslo.log\u003e\u003d0.4.0  # Apache-2.0"},{"line_number":29,"context_line":"oslo.middleware\u003e\u003d0.3.0                  # Apache-2.0"},{"line_number":30,"context_line":"oslo.policy\u003e\u003d0.3.0  # Apache-2.0"},{"line_number":31,"context_line":"oslo.serialization\u003e\u003d1.2.0               # Apache-2.0"},{"line_number":32,"context_line":"oslo.utils\u003e\u003d1.2.0                       # Apache-2.0"},{"line_number":33,"context_line":"oauthlib\u003e\u003d0.6"}],"source_content_type":"text/plain","patch_set":17,"id":"9a80dd14_19224aa4","line":30,"updated":"2015-03-06 00:13:34.000000000","message":"(nit) align license info with 3 others around it","commit_id":"3ec241867335514597e998705d12ecb699b796ff"}],"requirements.txt":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"941f72b89fbb260eda8189a920a928738753a655","unresolved":false,"context_lines":[{"line_number":25,"context_line":"oslo.i18n\u003e\u003d1.3.0  # Apache-2.0"},{"line_number":26,"context_line":"oslo.log\u003e\u003d0.1.0            # Apache-2.0"},{"line_number":27,"context_line":"oslo.middleware\u003e\u003d0.3.0                  # Apache-2.0"},{"line_number":28,"context_line":"#oslo.policy\u003e\u003d0.1.0"},{"line_number":29,"context_line":"-e git://github.com/openstack/oslo.policy.git#egg\u003doslo.policy"},{"line_number":30,"context_line":"oslo.serialization\u003e\u003d1.2.0               # Apache-2.0"},{"line_number":31,"context_line":"oslo.utils\u003e\u003d1.2.0                       # Apache-2.0"}],"source_content_type":"text/plain","patch_set":9,"id":"da86d52c_b2bac2bd","line":28,"updated":"2015-02-19 19:49:55.000000000","message":"It should be possible to just use the release now.","commit_id":"fe3ea4148dfc1e0481dba06b733376896c5e4884"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"b278e0a301b5c3ed298b136c650fcfd24bbd5663","unresolved":false,"context_lines":[{"line_number":26,"context_line":"oslo.i18n\u003e\u003d1.3.0  # Apache-2.0"},{"line_number":27,"context_line":"oslo.log\u003e\u003d0.4.0  # Apache-2.0"},{"line_number":28,"context_line":"oslo.middleware\u003e\u003d0.3.0                  # Apache-2.0"},{"line_number":29,"context_line":"oslo.policy\u003e\u003d0.3.0  # Apache-2.0"},{"line_number":30,"context_line":"oslo.serialization\u003e\u003d1.2.0               # Apache-2.0"},{"line_number":31,"context_line":"oslo.utils\u003e\u003d1.2.0                       # Apache-2.0"},{"line_number":32,"context_line":"oauthlib\u003e\u003d0.6"}],"source_content_type":"text/plain","patch_set":17,"id":"9a80dd14_de7a58f0","line":29,"updated":"2015-03-06 00:13:34.000000000","message":"(nit) align license info with 3 others around it","commit_id":"3ec241867335514597e998705d12ecb699b796ff"}]}
