)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3915eae23316b49c25766d775d04343ee97970e5","unresolved":true,"context_lines":[{"line_number":10,"context_line":"we\u0027re not copying the provided \u0027Rule\u0027 object which means if we create an"},{"line_number":11,"context_line":"enforcer and the rule is modified, then a second enforcer in the same"},{"line_number":12,"context_line":"process will ultimately end up using the same modified \u0027Rule\u0027 object"},{"line_number":13,"context_line":"will be used. Secondly, while the \u0027check\u0027 attribute is modified the"},{"line_number":14,"context_line":"\u0027check_str\u0027 attribute is not. This is immensely confusing for people"},{"line_number":15,"context_line":"debugging."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"74162c41_1b2b98e7","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":13},"updated":"2021-02-09 14:04:20.000000000","message":"nit: repeating myself","commit_id":"c4ca73b3081ae6548e8bcb93fe5f34bb44f0d901"}],"oslo_policy/tests/test_policy.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c21eabf2ca265ee29c7108632f6035dcacabc668","unresolved":true,"context_lines":[{"line_number":788,"context_line":"        rule_original \u003d policy.RuleDefault("},{"line_number":789,"context_line":"            name\u003d\u0027test\u0027,"},{"line_number":790,"context_line":"            check_str\u003d\u0027role:owner\u0027,)"},{"line_number":791,"context_line":"        rule_original._deprecated_rule_handled \u003d False"},{"line_number":792,"context_line":"        self.enforcer.register_default(rule_original)"},{"line_number":793,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027].check_str \u003d \u0027role:admin\u0027"},{"line_number":794,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027].check \u003d \u0027role:admin\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69ee20_0b4eb6c3","line":791,"range":{"start_line":791,"start_character":22,"end_line":791,"end_character":46},"updated":"2021-02-17 19:04:42.000000000","message":"We should remove this now that it\u0027s not implemented anymore.\n\nThis gets removed in the next patch, but it might be more applicable to remove it here.","commit_id":"c4ca73b3081ae6548e8bcb93fe5f34bb44f0d901"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"725b64e2d3a0e4a4994db506ef5e5823b46d749b","unresolved":false,"context_lines":[{"line_number":788,"context_line":"        rule_original \u003d policy.RuleDefault("},{"line_number":789,"context_line":"            name\u003d\u0027test\u0027,"},{"line_number":790,"context_line":"            check_str\u003d\u0027role:owner\u0027,)"},{"line_number":791,"context_line":"        rule_original._deprecated_rule_handled \u003d False"},{"line_number":792,"context_line":"        self.enforcer.register_default(rule_original)"},{"line_number":793,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027].check_str \u003d \u0027role:admin\u0027"},{"line_number":794,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027].check \u003d \u0027role:admin\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fc7da1b2_cb166e5d","line":791,"range":{"start_line":791,"start_character":22,"end_line":791,"end_character":46},"in_reply_to":"fa69ee20_0b4eb6c3","updated":"2021-02-23 13:05:30.000000000","message":"Done","commit_id":"c4ca73b3081ae6548e8bcb93fe5f34bb44f0d901"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c21eabf2ca265ee29c7108632f6035dcacabc668","unresolved":true,"context_lines":[{"line_number":792,"context_line":"        self.enforcer.register_default(rule_original)"},{"line_number":793,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027].check_str \u003d \u0027role:admin\u0027"},{"line_number":794,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027].check \u003d \u0027role:admin\u0027"},{"line_number":795,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027]._deprecated_rule_handled \u003d True"},{"line_number":796,"context_line":"        self.assertEqual(self.enforcer.registered_rules[\u0027test\u0027].check_str,"},{"line_number":797,"context_line":"                         \u0027role:admin\u0027)"},{"line_number":798,"context_line":"        self.assertEqual(self.enforcer.registered_rules[\u0027test\u0027].check,"}],"source_content_type":"text/x-python","patch_set":4,"id":"88c33caf_e1144a49","line":795,"range":{"start_line":795,"start_character":47,"end_line":795,"end_character":71},"updated":"2021-02-17 19:04:42.000000000","message":"Same.","commit_id":"c4ca73b3081ae6548e8bcb93fe5f34bb44f0d901"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"725b64e2d3a0e4a4994db506ef5e5823b46d749b","unresolved":false,"context_lines":[{"line_number":792,"context_line":"        self.enforcer.register_default(rule_original)"},{"line_number":793,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027].check_str \u003d \u0027role:admin\u0027"},{"line_number":794,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027].check \u003d \u0027role:admin\u0027"},{"line_number":795,"context_line":"        self.enforcer.registered_rules[\u0027test\u0027]._deprecated_rule_handled \u003d True"},{"line_number":796,"context_line":"        self.assertEqual(self.enforcer.registered_rules[\u0027test\u0027].check_str,"},{"line_number":797,"context_line":"                         \u0027role:admin\u0027)"},{"line_number":798,"context_line":"        self.assertEqual(self.enforcer.registered_rules[\u0027test\u0027].check,"}],"source_content_type":"text/x-python","patch_set":4,"id":"a7bca9e8_3c314f37","line":795,"range":{"start_line":795,"start_character":47,"end_line":795,"end_character":71},"in_reply_to":"88c33caf_e1144a49","updated":"2021-02-23 13:05:30.000000000","message":"Done","commit_id":"c4ca73b3081ae6548e8bcb93fe5f34bb44f0d901"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2685653bdf42521ca79afe144ff3a51b41eeb12d","unresolved":true,"context_lines":[{"line_number":1794,"context_line":"        enforcer.load_rules()"},{"line_number":1795,"context_line":""},{"line_number":1796,"context_line":"        # Loading the rules will store a version of the rule check string"},{"line_number":1797,"context_line":"        # logically ORed with the check string of the deprecated value. Make"},{"line_number":1798,"context_line":"        # sure this is happening but that the original rule check is unchanged"},{"line_number":1799,"context_line":"        expected_check \u003d policy.OrCheck(["},{"line_number":1800,"context_line":"            _parser.parse_rule(cs) for cs in"}],"source_content_type":"text/x-python","patch_set":4,"id":"216e3881_e1a4f801","line":1797,"range":{"start_line":1797,"start_character":20,"end_line":1797,"end_character":24},"updated":"2021-02-09 12:47:25.000000000","message":"ordered?","commit_id":"c4ca73b3081ae6548e8bcb93fe5f34bb44f0d901"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f6cdda278e2810d71a5c70557b67f32531598feb","unresolved":false,"context_lines":[{"line_number":1794,"context_line":"        enforcer.load_rules()"},{"line_number":1795,"context_line":""},{"line_number":1796,"context_line":"        # Loading the rules will store a version of the rule check string"},{"line_number":1797,"context_line":"        # logically ORed with the check string of the deprecated value. Make"},{"line_number":1798,"context_line":"        # sure this is happening but that the original rule check is unchanged"},{"line_number":1799,"context_line":"        expected_check \u003d policy.OrCheck(["},{"line_number":1800,"context_line":"            _parser.parse_rule(cs) for cs in"}],"source_content_type":"text/x-python","patch_set":4,"id":"fcfbc652_fd9313a4","line":1797,"range":{"start_line":1797,"start_character":20,"end_line":1797,"end_character":24},"in_reply_to":"216e3881_e1a4f801","updated":"2021-02-09 14:00:26.000000000","message":"No this is correct. I\u0027m referring to the OR (|) operation","commit_id":"c4ca73b3081ae6548e8bcb93fe5f34bb44f0d901"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c21eabf2ca265ee29c7108632f6035dcacabc668","unresolved":true,"context_lines":[{"line_number":1804,"context_line":"        self.assertEqual("},{"line_number":1805,"context_line":"            str(enforcer.rules[\u0027foo:create_bar\u0027]), str(expected_check))"},{"line_number":1806,"context_line":"        self.assertEqual(check, rule.check)"},{"line_number":1807,"context_line":"        enforcer.load_rules()"},{"line_number":1808,"context_line":""},{"line_number":1809,"context_line":""},{"line_number":1810,"context_line":"class DocumentedRuleDefaultTestCase(base.PolicyBaseTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ad8c7d2d_040d4e64","line":1807,"updated":"2021-02-17 19:04:42.000000000","message":"Is this last load_rules() necessary?\n\nIt looks like we\u0027re doing this to make sure nothing blows up, but I\u0027m not entirely sure why?","commit_id":"c4ca73b3081ae6548e8bcb93fe5f34bb44f0d901"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"725b64e2d3a0e4a4994db506ef5e5823b46d749b","unresolved":false,"context_lines":[{"line_number":1804,"context_line":"        self.assertEqual("},{"line_number":1805,"context_line":"            str(enforcer.rules[\u0027foo:create_bar\u0027]), str(expected_check))"},{"line_number":1806,"context_line":"        self.assertEqual(check, rule.check)"},{"line_number":1807,"context_line":"        enforcer.load_rules()"},{"line_number":1808,"context_line":""},{"line_number":1809,"context_line":""},{"line_number":1810,"context_line":"class DocumentedRuleDefaultTestCase(base.PolicyBaseTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"4c7da5e5_bb5c5f50","line":1807,"in_reply_to":"ad8c7d2d_040d4e64","updated":"2021-02-23 13:05:30.000000000","message":"Nope, dropped","commit_id":"c4ca73b3081ae6548e8bcb93fe5f34bb44f0d901"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"63e5a8be17238de3a3b0902066264412911b70f7","unresolved":true,"context_lines":[{"line_number":1800,"context_line":"        self.assertEqual("},{"line_number":1801,"context_line":"            str(enforcer.rules[\u0027foo:create_bar\u0027]), str(expected_check))"},{"line_number":1802,"context_line":"        self.assertEqual(check, rule.check)"},{"line_number":1803,"context_line":""},{"line_number":1804,"context_line":""},{"line_number":1805,"context_line":"class DocumentedRuleDefaultTestCase(base.PolicyBaseTestCase):"},{"line_number":1806,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dbde4fc9_252aaf91","line":1803,"range":{"start_line":1803,"start_character":0,"end_line":1803,"end_character":0},"updated":"2021-02-24 15:48:39.000000000","message":"but in this test, we need to check if _handle_deprecated_rule is called only once per rule. We need to call load_rules() again and check _handle_deprecated_rule is not called.","commit_id":"d933ca88baf4070f1968c66e56bc20b06bc2457b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"167f251f65249ca3c28c4d26a1dc1ff02048686a","unresolved":true,"context_lines":[{"line_number":1800,"context_line":"        self.assertEqual("},{"line_number":1801,"context_line":"            str(enforcer.rules[\u0027foo:create_bar\u0027]), str(expected_check))"},{"line_number":1802,"context_line":"        self.assertEqual(check, rule.check)"},{"line_number":1803,"context_line":""},{"line_number":1804,"context_line":""},{"line_number":1805,"context_line":"class DocumentedRuleDefaultTestCase(base.PolicyBaseTestCase):"},{"line_number":1806,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3dcc9339_5aff0158","line":1803,"range":{"start_line":1803,"start_character":0,"end_line":1803,"end_character":0},"in_reply_to":"7ab439bf_6d2d7374","updated":"2021-02-26 15:25:23.000000000","message":"thanks, work fine.","commit_id":"d933ca88baf4070f1968c66e56bc20b06bc2457b"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b1a742f3e9a75686ddb28fbab66e8f001515e08d","unresolved":true,"context_lines":[{"line_number":1800,"context_line":"        self.assertEqual("},{"line_number":1801,"context_line":"            str(enforcer.rules[\u0027foo:create_bar\u0027]), str(expected_check))"},{"line_number":1802,"context_line":"        self.assertEqual(check, rule.check)"},{"line_number":1803,"context_line":""},{"line_number":1804,"context_line":""},{"line_number":1805,"context_line":"class DocumentedRuleDefaultTestCase(base.PolicyBaseTestCase):"},{"line_number":1806,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7ab439bf_6d2d7374","line":1803,"range":{"start_line":1803,"start_character":0,"end_line":1803,"end_character":0},"in_reply_to":"dbde4fc9_252aaf91","updated":"2021-02-25 21:14:48.000000000","message":"I wrote a quick addition to this test to verify the behavior, and it appears it is doing what it\u0027s supposed to. I pushed it as a followup[0] in the interest of not blocking the functional change from merging before feature freeze. Does that work for you?\n\n0: https://review.opendev.org/c/openstack/oslo.policy/+/777682","commit_id":"d933ca88baf4070f1968c66e56bc20b06bc2457b"}]}
