)]}'
{"designate/common/policies/__init__.py":[{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"daedd9a6940abd51ec426bdb4a56a3bbf634d420","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Dai Dang Van \u003cdaidv@vn.fujitsu.com\u003e"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_70a68bc3","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":52},"updated":"2017-10-03 08:07:19.000000000","message":"please remove this because all codes below is from nova","commit_id":"c054539ce1ee75e087ba808b7d959d55f3880d29"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1cbdf3a0b2818840c26fc6ba955ddbc3658b7083","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"# Borrowed from Zun"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import itertools"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_539132f1","line":15,"range":{"start_line":14,"start_character":0,"end_line":15,"end_character":19},"updated":"2017-10-04 15:57:12.000000000","message":"Since this is going to be a common pattern across all project, I\u0027m not sure it will be work explicitly calling Zun out here.","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"}],"designate/common/policies/base.py":[{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"daedd9a6940abd51ec426bdb4a56a3bbf634d420","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Dai Dang Van \u003cdaidv@vn.fujitsu.com\u003e"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_30ac939d","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":52},"updated":"2017-10-03 08:07:19.000000000","message":"ditto","commit_id":"c054539ce1ee75e087ba808b7d959d55f3880d29"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1cbdf3a0b2818840c26fc6ba955ddbc3658b7083","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_policy import policy"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"RULE_ADMIN_OR_OWNER \u003d \u0027rule:admin_or_owner\u0027"},{"line_number":22,"context_line":"RULE_ADMIN \u003d \u0027rule:admin\u0027"},{"line_number":23,"context_line":"RULE_ZONE_PRIMARY_OR_ADMIN \u003d \"rule:zone_primary_or_admin\""},{"line_number":24,"context_line":"RULE_ANY \u003d \"@\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"rules \u003d ["},{"line_number":27,"context_line":"    policy.RuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_9e68d1ba","line":24,"range":{"start_line":21,"start_character":0,"end_line":24,"end_character":14},"updated":"2017-10-04 15:57:12.000000000","message":"Just saving these to be used later?","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"a23d30a77da2c34e504a1746d02ec8102beb253b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from oslo_policy import policy"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"RULE_ADMIN_OR_OWNER \u003d \u0027rule:admin_or_owner\u0027"},{"line_number":22,"context_line":"RULE_ADMIN \u003d \u0027rule:admin\u0027"},{"line_number":23,"context_line":"RULE_ZONE_PRIMARY_OR_ADMIN \u003d \"rule:zone_primary_or_admin\""},{"line_number":24,"context_line":"RULE_ANY \u003d \"@\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"rules \u003d ["},{"line_number":27,"context_line":"    policy.RuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_75063d23","line":24,"range":{"start_line":21,"start_character":0,"end_line":24,"end_character":14},"in_reply_to":"7f515b1d_9e68d1ba","updated":"2017-10-05 07:20:32.000000000","message":"Yep.","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1cbdf3a0b2818840c26fc6ba955ddbc3658b7083","unresolved":false,"context_lines":[{"line_number":24,"context_line":"RULE_ANY \u003d \"@\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"rules \u003d ["},{"line_number":27,"context_line":"    policy.RuleDefault("},{"line_number":28,"context_line":"        \"admin\","},{"line_number":29,"context_line":"        \"role:admin or is_admin:True\"),"},{"line_number":30,"context_line":"    policy.RuleDefault("},{"line_number":31,"context_line":"        \"primary_zone\","},{"line_number":32,"context_line":"        \"target.zone_type:SECONDARY\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_f31dbe73","line":29,"range":{"start_line":27,"start_character":4,"end_line":29,"end_character":39},"updated":"2017-10-04 15:57:12.000000000","message":"Using kwargs here might be redundant, but it helps readability: \n\nhttps://github.com/openstack/keystone/blob/master/keystone/common/policies/base.py#L35-L37","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"a23d30a77da2c34e504a1746d02ec8102beb253b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"RULE_ANY \u003d \"@\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"rules \u003d ["},{"line_number":27,"context_line":"    policy.RuleDefault("},{"line_number":28,"context_line":"        \"admin\","},{"line_number":29,"context_line":"        \"role:admin or is_admin:True\"),"},{"line_number":30,"context_line":"    policy.RuleDefault("},{"line_number":31,"context_line":"        \"primary_zone\","},{"line_number":32,"context_line":"        \"target.zone_type:SECONDARY\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_7849945e","line":29,"range":{"start_line":27,"start_character":4,"end_line":29,"end_character":39},"in_reply_to":"7f515b1d_f31dbe73","updated":"2017-10-05 07:20:32.000000000","message":"Ok done!","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1cbdf3a0b2818840c26fc6ba955ddbc3658b7083","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    policy.RuleDefault("},{"line_number":34,"context_line":"        \"owner\","},{"line_number":35,"context_line":"        \"tenant:%(tenant_id)s\","},{"line_number":36,"context_line":"        \"\"),"},{"line_number":37,"context_line":"    policy.RuleDefault("},{"line_number":38,"context_line":"        \"admin_or_owner\","},{"line_number":39,"context_line":"        \"rule:admin or rule:owner\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_5e3499de","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":12},"updated":"2017-10-04 15:57:12.000000000","message":"I suggest providing a description here instead of just an empty string, otherwise it can just be omitted (only DocumentedRuleDefault requires description and operations).","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"a23d30a77da2c34e504a1746d02ec8102beb253b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    policy.RuleDefault("},{"line_number":34,"context_line":"        \"owner\","},{"line_number":35,"context_line":"        \"tenant:%(tenant_id)s\","},{"line_number":36,"context_line":"        \"\"),"},{"line_number":37,"context_line":"    policy.RuleDefault("},{"line_number":38,"context_line":"        \"admin_or_owner\","},{"line_number":39,"context_line":"        \"rule:admin or rule:owner\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_585ff80d","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":12},"in_reply_to":"7f515b1d_5e3499de","updated":"2017-10-05 07:20:32.000000000","message":"OK, I also think we can approve with this and improve their description in near future.","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1cbdf3a0b2818840c26fc6ba955ddbc3658b7083","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"rule:admin or rule:target\"),"},{"line_number":52,"context_line":"    policy.RuleDefault("},{"line_number":53,"context_line":"        \"zone_primary_or_admin\","},{"line_number":54,"context_line":"        \"(\u0027PRIMARY\u0027:%(zone_type)s and rule:admin_or_owner) OR (\u0027SECONDARY\u0027:%(zone_type)s AND is_admin:True)\")  # noqa"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_de7c0974","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":108},"updated":"2017-10-04 15:57:12.000000000","message":"Sometimes it helps to give these super dense policy check strings a proper name in the form of a variable. It also ensures the string remains the same in all usage as it\u0027s less prone to copy/paste errors.","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"4c6f167c07785402ec9bfbbae4329320855b3dd3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"rule:admin or rule:target\"),"},{"line_number":52,"context_line":"    policy.RuleDefault("},{"line_number":53,"context_line":"        \"zone_primary_or_admin\","},{"line_number":54,"context_line":"        \"(\u0027PRIMARY\u0027:%(zone_type)s and rule:admin_or_owner) OR (\u0027SECONDARY\u0027:%(zone_type)s AND is_admin:True)\")  # noqa"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_b8f25e6e","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":108},"in_reply_to":"7f515b1d_7502af71","updated":"2017-10-05 15:06:38.000000000","message":"OK, I got your point. Actually, I already defined it in : RULE_ZONE_PRIMARY_OR_ADMIN \u003d \"rule:zone_primary_or_admin\"\n\nAnd in my way, if we need to use this super long string at other points, we will use RULE_ZONE_PRIMARY_OR_ADMIN and maybe, we also can extend it by some thing following:\ncheck_str\u003d\"RULE_ZONE_PRIMARY_OR_ADMIN and rule:other\"\n\nSo, how about this way?","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b6f6978fba8096488178f492a93dc0c35f532528","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"rule:admin or rule:target\"),"},{"line_number":52,"context_line":"    policy.RuleDefault("},{"line_number":53,"context_line":"        \"zone_primary_or_admin\","},{"line_number":54,"context_line":"        \"(\u0027PRIMARY\u0027:%(zone_type)s and rule:admin_or_owner) OR (\u0027SECONDARY\u0027:%(zone_type)s AND is_admin:True)\")  # noqa"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_7502af71","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":108},"in_reply_to":"7f515b1d_78907496","updated":"2017-10-05 14:43:13.000000000","message":"For example: \n\n  ZONE_ADMIN \u003d \"(\u0027PRIMARY\u0027:%(zone_type)s and rule:admin_or_owner) OR (\u0027SECONDARY\u0027:%(zone_type)s AND is_admin:True)\"\n  ...\n\n  policy.RuleDefault(\n      name\u003d\u0027zone_primary_or_admin\u0027,\n      check_str\u003dZONE_ADMIN\n  )\n\nThen if there is another policy in the project that uses this super long string somewhere, we don\u0027t have to copy/paste it all over the place (keeping code cleaner and less busy using variables instead).\n\nAlso, if the definition of a ZONE_ADMIN ever change, it only has to be update in one place, instead of multiple.","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"a23d30a77da2c34e504a1746d02ec8102beb253b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"rule:admin or rule:target\"),"},{"line_number":52,"context_line":"    policy.RuleDefault("},{"line_number":53,"context_line":"        \"zone_primary_or_admin\","},{"line_number":54,"context_line":"        \"(\u0027PRIMARY\u0027:%(zone_type)s and rule:admin_or_owner) OR (\u0027SECONDARY\u0027:%(zone_type)s AND is_admin:True)\")  # noqa"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_78907496","line":54,"range":{"start_line":54,"start_character":8,"end_line":54,"end_character":108},"in_reply_to":"7f515b1d_de7c0974","updated":"2017-10-05 07:20:32.000000000","message":"Sorry, I didn\u0027t get your point?","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8f60b6a39fe43667e024f30083190ae108ec4560","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        check_str\u003d\"rule:admin or rule:target\"),"},{"line_number":49,"context_line":"    policy.RuleDefault("},{"line_number":50,"context_line":"        name\u003d\"zone_primary_or_admin\","},{"line_number":51,"context_line":"        check_str\u003d\"(\u0027PRIMARY\u0027:%(zone_type)s and rule:admin_or_owner) OR (\u0027SECONDARY\u0027:%(zone_type)s AND is_admin:True)\")  # noqa"},{"line_number":52,"context_line":"]"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_f5421fab","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":127},"updated":"2017-10-05 14:44:10.000000000","message":"I responded on patchset 5 regarding this. Let me know what your thoughts are.","commit_id":"bf930320ad69266c5d4b9e8663676c25ae36f5bc"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b12fc4050b2d4de61d631379faee409e428393d8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    policy.RuleDefault("},{"line_number":35,"context_line":"        name\u003d\"admin_or_owner\","},{"line_number":36,"context_line":"        check_str\u003d\"rule:admin or rule:owner\"),"},{"line_number":37,"context_line":"    policy.RuleDefault("},{"line_number":38,"context_line":"        name\u003d\"default\","},{"line_number":39,"context_line":"        check_str\u003d\"rule:admin_or_owner\"),"},{"line_number":40,"context_line":"    policy.RuleDefault("},{"line_number":41,"context_line":"        name\u003d\"target\","},{"line_number":42,"context_line":"        check_str\u003d\"tenant:%(target_tenant_id)s\"),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f4e5783_a2613e3c","line":39,"range":{"start_line":37,"start_character":0,"end_line":39,"end_character":41},"updated":"2017-10-10 14:31:26.000000000","message":"It doesn\u0027t look like this is actually used anywhere. Since each policy has its own default now, this becomes redundant.","commit_id":"77f5a55797047f51a8eb3c7cab9a432a0eb55c7c"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"e702243702c1488889406aebb7e58e62cbfd8506","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    policy.RuleDefault("},{"line_number":35,"context_line":"        name\u003d\"admin_or_owner\","},{"line_number":36,"context_line":"        check_str\u003d\"rule:admin or rule:owner\"),"},{"line_number":37,"context_line":"    policy.RuleDefault("},{"line_number":38,"context_line":"        name\u003d\"default\","},{"line_number":39,"context_line":"        check_str\u003d\"rule:admin_or_owner\"),"},{"line_number":40,"context_line":"    policy.RuleDefault("},{"line_number":41,"context_line":"        name\u003d\"target\","},{"line_number":42,"context_line":"        check_str\u003d\"tenant:%(target_tenant_id)s\"),"}],"source_content_type":"text/x-python","patch_set":9,"id":"5f4e5783_f5947fea","line":39,"range":{"start_line":37,"start_character":0,"end_line":39,"end_character":41},"in_reply_to":"5f4e5783_a2613e3c","updated":"2017-10-11 01:53:40.000000000","message":"We are checking at some points with non-exist rules [1], so that is the reason we should have to define a default rule.\n\n[1] https://github.com/openstack/designate/blob/master/designate/central/service.py#L963","commit_id":"77f5a55797047f51a8eb3c7cab9a432a0eb55c7c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b12fc4050b2d4de61d631379faee409e428393d8","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        check_str\u003d\"rule:admin or rule:target\"),"},{"line_number":52,"context_line":"    policy.RuleDefault("},{"line_number":53,"context_line":"        name\u003d\"zone_primary_or_admin\","},{"line_number":54,"context_line":"        check_str\u003d\"(\u0027PRIMARY\u0027:%(zone_type)s and rule:admin_or_owner) OR (\u0027SECONDARY\u0027:%(zone_type)s AND is_admin:True)\")  # noqa"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f4e5783_c2d67af2","line":54,"range":{"start_line":54,"start_character":18,"end_line":54,"end_character":118},"updated":"2017-10-10 14:31:26.000000000","message":"We could save this off into a variable with a nice name for reuse if needed. Which might prevent the need for #noqa","commit_id":"77f5a55797047f51a8eb3c7cab9a432a0eb55c7c"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"e702243702c1488889406aebb7e58e62cbfd8506","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        check_str\u003d\"rule:admin or rule:target\"),"},{"line_number":52,"context_line":"    policy.RuleDefault("},{"line_number":53,"context_line":"        name\u003d\"zone_primary_or_admin\","},{"line_number":54,"context_line":"        check_str\u003d\"(\u0027PRIMARY\u0027:%(zone_type)s and rule:admin_or_owner) OR (\u0027SECONDARY\u0027:%(zone_type)s AND is_admin:True)\")  # noqa"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f4e5783_558593ac","line":54,"range":{"start_line":54,"start_character":18,"end_line":54,"end_character":118},"in_reply_to":"5f4e5783_c2d67af2","updated":"2017-10-11 01:53:40.000000000","message":"Ok.","commit_id":"77f5a55797047f51a8eb3c7cab9a432a0eb55c7c"}],"designate/policy.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1cbdf3a0b2818840c26fc6ba955ddbc3658b7083","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        LOG.debug(\"Enforcer is not present, recreating.\")"},{"line_number":82,"context_line":"        _ENFORCER \u003d policy.Enforcer(CONF)"},{"line_number":83,"context_line":"        _ENFORCER.register_defaults(policies.list_rules())"},{"line_number":84,"context_line":"        _ENFORCER.load_rules()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    _ENFORCER.set_rules(rules)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_b3bbc670","line":84,"range":{"start_line":84,"start_character":9,"end_line":84,"end_character":30},"updated":"2017-10-04 15:57:12.000000000","message":"This should already be done by instantiating an Enforcer object, no?","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"8b47dec22e317069e09e13ccdd8c2f7e0a163e6c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        LOG.debug(\"Enforcer is not present, recreating.\")"},{"line_number":82,"context_line":"        _ENFORCER \u003d policy.Enforcer(CONF)"},{"line_number":83,"context_line":"        _ENFORCER.register_defaults(policies.list_rules())"},{"line_number":84,"context_line":"        _ENFORCER.load_rules()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    _ENFORCER.set_rules(rules)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_f5ea1fd6","line":84,"range":{"start_line":84,"start_character":9,"end_line":84,"end_character":30},"in_reply_to":"7f515b1d_38367cb6","updated":"2017-10-05 14:38:34.000000000","message":"Ah, Ok, gotcha.\nI think we need to reload rules in case of we already have ENFORCER instead.","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"a23d30a77da2c34e504a1746d02ec8102beb253b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        LOG.debug(\"Enforcer is not present, recreating.\")"},{"line_number":82,"context_line":"        _ENFORCER \u003d policy.Enforcer(CONF)"},{"line_number":83,"context_line":"        _ENFORCER.register_defaults(policies.list_rules())"},{"line_number":84,"context_line":"        _ENFORCER.load_rules()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    _ENFORCER.set_rules(rules)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_38367cb6","line":84,"range":{"start_line":84,"start_character":9,"end_line":84,"end_character":30},"in_reply_to":"7f515b1d_b3bbc670","updated":"2017-10-05 07:20:32.000000000","message":"In case of ENFORCER is loaded at other points meanwhile the policy.yaml is changed. IIRC, this will reload the rules.\n\nPlease let me know if I wrong? Thank you.","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"bd4c5687d5832d3f6dab1bf304f60d6a2a9e9c3a","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        LOG.debug(\"Enforcer is not present, recreating.\")"},{"line_number":82,"context_line":"        _ENFORCER \u003d policy.Enforcer(CONF)"},{"line_number":83,"context_line":"        _ENFORCER.register_defaults(policies.list_rules())"},{"line_number":84,"context_line":"        _ENFORCER.load_rules()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    _ENFORCER.set_rules(rules)"},{"line_number":87,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_7254ec21","line":84,"range":{"start_line":84,"start_character":9,"end_line":84,"end_character":30},"in_reply_to":"7f515b1d_f5ea1fd6","updated":"2017-10-06 07:07:02.000000000","message":"OK, actually, we don\u0027t need to load_rules, for each time we call enforce(), it reload again.\nhttps://github.com/openstack/oslo.policy/blob/master/oslo_policy/policy.py#L728","commit_id":"e61eb519a139d3bb6f07faa34dd2102e683681cb"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b12fc4050b2d4de61d631379faee409e428393d8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    global _ENFORCER"},{"line_number":76,"context_line":"    if not _ENFORCER:"},{"line_number":77,"context_line":"        LOG.debug(\"Enforcer is not present, recreating.\")"},{"line_number":78,"context_line":"        _ENFORCER \u003d policy.Enforcer(CONF, policy_file\u003dpolicy_files[0])"},{"line_number":79,"context_line":"        _ENFORCER.register_defaults(policies.list_rules())"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f4e5783_82cbe21c","line":78,"range":{"start_line":78,"start_character":42,"end_line":78,"end_character":69},"updated":"2017-10-10 14:31:26.000000000","message":"Is this always going to be present? The oslo_policy library should be smart enough to find the policy_file from the CONF object.","commit_id":"77f5a55797047f51a8eb3c7cab9a432a0eb55c7c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d76d48e625f6cc0c8e6e02b9519d5e04ecaffb8e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    global _ENFORCER"},{"line_number":76,"context_line":"    if not _ENFORCER:"},{"line_number":77,"context_line":"        LOG.debug(\"Enforcer is not present, recreating.\")"},{"line_number":78,"context_line":"        _ENFORCER \u003d policy.Enforcer(CONF, policy_file\u003dpolicy_files[0])"},{"line_number":79,"context_line":"        _ENFORCER.register_defaults(policies.list_rules())"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f4e5783_560f5036","line":78,"range":{"start_line":78,"start_character":42,"end_line":78,"end_character":69},"in_reply_to":"5f4e5783_152b9b94","updated":"2017-10-16 15:26:47.000000000","message":"Yep - all that logic should be here - https://github.com/openstack/oslo.policy/blob/master/oslo_policy/policy.py#L459-L478","commit_id":"77f5a55797047f51a8eb3c7cab9a432a0eb55c7c"},{"author":{"_account_id":19930,"name":"Dai Dang Van","email":"daidv@omzcloud.vn","username":"daidv"},"change_message_id":"e702243702c1488889406aebb7e58e62cbfd8506","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    global _ENFORCER"},{"line_number":76,"context_line":"    if not _ENFORCER:"},{"line_number":77,"context_line":"        LOG.debug(\"Enforcer is not present, recreating.\")"},{"line_number":78,"context_line":"        _ENFORCER \u003d policy.Enforcer(CONF, policy_file\u003dpolicy_files[0])"},{"line_number":79,"context_line":"        _ENFORCER.register_defaults(policies.list_rules())"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5f4e5783_152b9b94","line":78,"range":{"start_line":78,"start_character":42,"end_line":78,"end_character":69},"in_reply_to":"5f4e5783_82cbe21c","updated":"2017-10-11 01:53:40.000000000","message":"Ok, gotcha.","commit_id":"77f5a55797047f51a8eb3c7cab9a432a0eb55c7c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"bea5f4ffce52137531ec08c589985802bb7199d9","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    _ENFORCER.set_rules(rules, overwrite\u003doverwrite)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def init(default_rule\u003dNone, policy_file\u003dNone):"},{"line_number":65,"context_line":"    global _ENFORCER"},{"line_number":66,"context_line":"    if not _ENFORCER:"},{"line_number":67,"context_line":"        LOG.debug(\"Enforcer is not present, recreating.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"5f4e5783_e129d489","line":64,"range":{"start_line":64,"start_character":28,"end_line":64,"end_character":44},"updated":"2017-10-16 15:32:40.000000000","message":"Are you keeping this bit accessible so that you can pass in a custom policy file when testing?","commit_id":"23982e25ce0ed132f99a14568d7341dc7e3cbf54"}],"designate/tests/fixtures.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"bea5f4ffce52137531ec08c589985802bb7199d9","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def setUp(self):"},{"line_number":107,"context_line":"        super(PolicyFixture, self).setUp()"},{"line_number":108,"context_line":"        policy.init(policy_file\u003dutils.find_config("},{"line_number":109,"context_line":"            cfg.CONF.oslo_policy.policy_file)[0])"},{"line_number":110,"context_line":"        self.addCleanup(policy.reset)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5f4e5783_817220ac","line":109,"range":{"start_line":109,"start_character":12,"end_line":109,"end_character":49},"updated":"2017-10-16 15:32:40.000000000","message":"aha - yep, this answer the question I had in the previous module.","commit_id":"23982e25ce0ed132f99a14568d7341dc7e3cbf54"}],"tox.ini":[{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"4a3191008b306ab69a075e25f802e48ebdf22f40","unresolved":false,"context_lines":[{"line_number":72,"context_line":"commands \u003d oslo-config-generator --config-file\u003detc/designate/designate-config-generator.conf"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"[testenv:genpolicy]"},{"line_number":75,"context_line":"commands \u003d oslopolicy-sample-generator --config-file etc/designate/designate-policy-generator.conf"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"[testenv:bashate]"},{"line_number":78,"context_line":"deps \u003d bashate"}],"source_content_type":"text/x-properties","patch_set":4,"id":"7f515b1d_06795dc6","line":75,"range":{"start_line":75,"start_character":53,"end_line":75,"end_character":98},"updated":"2017-10-03 10:14:10.000000000","message":"missing","commit_id":"278d4f118b4022942d0410f68262be743dfc30b8"}]}
