)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8ed29faeb1f3fcb487186c463259d71d59198b75","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     He Jie Xu \u003chejie.xu@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-18 21:58:01 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add missing rules in polcy.json"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"\u0027etc/nova/policy.json\u0027 is sample file for polcy configration. But"},{"line_number":10,"context_line":"there are a lot of rule missing in it. The user is hard to find"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa32b979_0952d8dd","line":7,"updated":"2015-06-22 07:35:13.000000000","message":"polcy.json \u003d\u003e policy.json","commit_id":"ae30166b225a22656a8f268ab64d7ac6280ebfcc"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8ed29faeb1f3fcb487186c463259d71d59198b75","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add missing rules in polcy.json"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"\u0027etc/nova/policy.json\u0027 is sample file for polcy configration. But"},{"line_number":10,"context_line":"there are a lot of rule missing in it. The user is hard to find"},{"line_number":11,"context_line":"out which rule can be used in nova."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa32b979_c962b0ad","line":9,"updated":"2015-06-22 07:35:13.000000000","message":"polcy configration \u003d\u003e policy configuration","commit_id":"ae30166b225a22656a8f268ab64d7ac6280ebfcc"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"156f8a8e30210d0a30843fdc397455f55bf15588","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alex Xu \u003chejie.xu@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-06 03:01:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add missing rules in polcy.json"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"\u0027etc/nova/policy.json\u0027 is sample file for polcy configration. But"},{"line_number":10,"context_line":"there are a lot of rule missing in it. The user is hard to find"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a4dcd0f_54e860e2","line":7,"updated":"2015-08-04 19:34:49.000000000","message":"polcy \u003d\u003e policy","commit_id":"85fb9c5b21b2b3b090b07b24ad08dd366202ca45"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"a1590916adcc47641e1c70e1bacf0e9e4b8e94cd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add missing rules in policy.json"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"\u0027etc/nova/policy.json\u0027 is sample file for polcy configration. But"},{"line_number":10,"context_line":"there are a lot of rule missing in it. The user is hard to find"},{"line_number":11,"context_line":"out which rule can be used in nova."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa1b9901_6d5b0bf7","line":9,"updated":"2015-08-19 23:01:04.000000000","message":"\"is the sample file for policy\"","commit_id":"9c917816048482e3a42aa06e2aa4933a1a6f7f8c"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"a1590916adcc47641e1c70e1bacf0e9e4b8e94cd","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add missing rules in policy.json"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"\u0027etc/nova/policy.json\u0027 is sample file for polcy configration. But"},{"line_number":10,"context_line":"there are a lot of rule missing in it. The user is hard to find"},{"line_number":11,"context_line":"out which rule can be used in nova."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch adds the missing rule back to policy.json. Also adds a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa1b9901_0d75af62","line":10,"updated":"2015-08-19 23:01:04.000000000","message":"\"rules\"","commit_id":"9c917816048482e3a42aa06e2aa4933a1a6f7f8c"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"a1590916adcc47641e1c70e1bacf0e9e4b8e94cd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"there are a lot of rule missing in it. The user is hard to find"},{"line_number":11,"context_line":"out which rule can be used in nova."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch adds the missing rule back to policy.json. Also adds a"},{"line_number":14,"context_line":"test case to veify the contents of policy."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"SecurityImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"fa1b9901_2d72f37b","line":13,"updated":"2015-08-19 23:01:04.000000000","message":"\"rules\"","commit_id":"9c917816048482e3a42aa06e2aa4933a1a6f7f8c"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"1769eeae200066cfef5c0f09d68e2f1126e1eeed","unresolved":false,"context_lines":[{"line_number":11,"context_line":"out which rule can be used in nova."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch adds the missing rule back to policy.json. Also adds a"},{"line_number":14,"context_line":"test case to veify the contents of policy."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"SecurityImpact"},{"line_number":17,"context_line":"UpgradeImpact:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1a4dcd0f_75e5a808","line":14,"updated":"2015-08-13 18:07:04.000000000","message":"typo: veify -\u003e verify","commit_id":"9c917816048482e3a42aa06e2aa4933a1a6f7f8c"}],"etc/nova/policy.json":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"7c6532e9eab9a5e5550dfab1d9ce77ed3ce142e5","unresolved":false,"context_lines":[{"line_number":5,"context_line":""},{"line_number":6,"context_line":"    \"cells_scheduler_filter:TargetCellFilter\": \"is_admin:True\","},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    \"compute:create\": \"\","},{"line_number":9,"context_line":"    \"compute:create:attach_network\": \"\","},{"line_number":10,"context_line":"    \"compute:create:attach_volume\": \"\","},{"line_number":11,"context_line":"    \"compute:create:forced_host\": \"is_admin:True\","}],"source_content_type":"application/json","patch_set":2,"id":"fa32b979_8c5c0f1a","line":8,"updated":"2015-06-18 16:07:14.000000000","message":"do we have a time to deprecate the compute:xxx policies ? \n\nwe developer know those are skipped by v2.1 API \n\nbut we add those into a new release may confuse them?","commit_id":"ae30166b225a22656a8f268ab64d7ac6280ebfcc"}],"nova/tests/unit/test_policy.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"7c6532e9eab9a5e5550dfab1d9ce77ed3ce142e5","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    def test_enforce_admin_actions_with_nonadmin_context_throws(self):"},{"line_number":252,"context_line":"        \"\"\"Check if non-admin context passed to admin actions throws"},{"line_number":253,"context_line":"           Policy not authorized exception"},{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        admin_actions \u003d ("},{"line_number":256,"context_line":"\"compute:unlock_override\","},{"line_number":257,"context_line":"\"compute_extension:accounts\","}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_292e15fb","line":254,"updated":"2015-06-18 16:07:14.000000000","message":"better to split it, some test is not admin related?","commit_id":"ae30166b225a22656a8f268ab64d7ac6280ebfcc"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"7c6532e9eab9a5e5550dfab1d9ce77ed3ce142e5","unresolved":false,"context_lines":[{"line_number":362,"context_line":"\"os_compute_api:os-console-auth-tokens\","},{"line_number":363,"context_line":"\"os_compute_api:os-server-external-events:create\")"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        admin_or_onwer_actions \u003d ("},{"line_number":366,"context_line":"\"default\","},{"line_number":367,"context_line":"\"compute:start\","},{"line_number":368,"context_line":"\"compute:stop\","}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_69c3bd38","line":365,"updated":"2015-06-18 16:07:14.000000000","message":"typo: owner","commit_id":"ae30166b225a22656a8f268ab64d7ac6280ebfcc"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"7c6532e9eab9a5e5550dfab1d9ce77ed3ce142e5","unresolved":false,"context_lines":[{"line_number":363,"context_line":"\"os_compute_api:os-server-external-events:create\")"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"        admin_or_onwer_actions \u003d ("},{"line_number":366,"context_line":"\"default\","},{"line_number":367,"context_line":"\"compute:start\","},{"line_number":368,"context_line":"\"compute:stop\","},{"line_number":369,"context_line":"\"compute_extension:admin_actions:pause\","}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_a998e578","line":366,"updated":"2015-06-18 16:07:14.000000000","message":"only a question:where is the default comes from?","commit_id":"ae30166b225a22656a8f268ab64d7ac6280ebfcc"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"135ab526f29a8e11930eb8b7489cf0211001d9aa","unresolved":false,"context_lines":[{"line_number":727,"context_line":"    def test_empty_rules(self):"},{"line_number":728,"context_line":"        rules \u003d policy.get_rules()"},{"line_number":729,"context_line":"        for rule in self.empty_rules:"},{"line_number":730,"context_line":"            self.assertEqual(str(rules[rule]), \u0027@\u0027,"},{"line_number":731,"context_line":"                             \"%s isn\u0027t empty rule\" % rule)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def test_rule_missing_test(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_60ff27ab","line":730,"updated":"2015-07-04 14:38:17.000000000","message":"assertEqual(expected, actual)","commit_id":"b6ed84743ec786fbb789a4520d57ceb528bec934"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"135ab526f29a8e11930eb8b7489cf0211001d9aa","unresolved":false,"context_lines":[{"line_number":736,"context_line":"        result \u003d set(rules.keys()) - set(self.admin_only_rules +"},{"line_number":737,"context_line":"            self.admin_or_owner_rules + self.empty_rules +"},{"line_number":738,"context_line":"            self.non_admin_only_rules + special_rules)"},{"line_number":739,"context_line":"        self.assertEqual(result, set([]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_400223b6","line":739,"updated":"2015-07-04 14:38:17.000000000","message":"assertEqual(expected, actual)","commit_id":"b6ed84743ec786fbb789a4520d57ceb528bec934"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"ddf05194fa77bbd06a955f13a49b0a6b3432fdd7","unresolved":false,"context_lines":[{"line_number":730,"context_line":"            self.assertEqual(\u0027@\u0027, str(rules[rule]),"},{"line_number":731,"context_line":"                             \"%s isn\u0027t empty rule\" % rule)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def test_rule_missing_test(self):"},{"line_number":734,"context_line":"        rules \u003d policy.get_rules()"},{"line_number":735,"context_line":"        special_rules \u003d (\u0027admin_api\u0027, \u0027admin_or_owner\u0027, \u0027context_is_admin\u0027)"},{"line_number":736,"context_line":"        result \u003d set(rules.keys()) - set(self.admin_only_rules +"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a4dcd0f_f97d7c6d","line":733,"updated":"2015-08-12 14:02:23.000000000","message":"test_rule_missing_test \u003d\u003e test_rule_missing","commit_id":"97ed4d2d785ea2dd4f14ee4dda9f7ef475f93a4f"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"a1590916adcc47641e1c70e1bacf0e9e4b8e94cd","unresolved":false,"context_lines":[{"line_number":696,"context_line":"\"os_compute_api:os-availability-zone:discoverable\","},{"line_number":697,"context_line":"\"os_compute_api:os-used-limits:discoverable\","},{"line_number":698,"context_line":"\"os_compute_api:os-migrations:discoverable\","},{"line_number":699,"context_line":"\"os_compute_api:os-assisted-volume-snapshots:discoverable\")"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        self.non_admin_only_rules \u003d ("},{"line_number":702,"context_line":"\"compute_extension:hide_server_addresses\","}],"source_content_type":"text/x-python","patch_set":8,"id":"fa1b9901_ad3363aa","line":699,"updated":"2015-08-19 23:01:04.000000000","message":"I\u0027d love to see these lists generated by code introspection somehow.","commit_id":"9c917816048482e3a42aa06e2aa4933a1a6f7f8c"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"1769eeae200066cfef5c0f09d68e2f1126e1eeed","unresolved":false,"context_lines":[{"line_number":736,"context_line":""},{"line_number":737,"context_line":"    def test_rule_missing(self):"},{"line_number":738,"context_line":"        rules \u003d policy.get_rules()"},{"line_number":739,"context_line":"        # eliqiao os_compute_api:os-quota-class-sets:show requires"},{"line_number":740,"context_line":"        # admin\u003dTrue or quota_class match, this rule wont\u0027 belone to"},{"line_number":741,"context_line":"        # admin_only, non_admin, admin_or_user, empty_rule"},{"line_number":742,"context_line":"        special_rules \u003d (\u0027admin_api\u0027, \u0027admin_or_owner\u0027, \u0027context_is_admin\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_1508e4d8","line":739,"updated":"2015-08-13 18:07:04.000000000","message":"Should probably remove name in comment or use \"NOTE(eliqiao):\" or similar.","commit_id":"9c917816048482e3a42aa06e2aa4933a1a6f7f8c"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"affce9199120a9be25b18acee59fa850113513d1","unresolved":false,"context_lines":[{"line_number":737,"context_line":"    def test_rule_missing(self):"},{"line_number":738,"context_line":"        rules \u003d policy.get_rules()"},{"line_number":739,"context_line":"        # eliqiao os_compute_api:os-quota-class-sets:show requires"},{"line_number":740,"context_line":"        # admin\u003dTrue or quota_class match, this rule wont\u0027 belone to"},{"line_number":741,"context_line":"        # admin_only, non_admin, admin_or_user, empty_rule"},{"line_number":742,"context_line":"        special_rules \u003d (\u0027admin_api\u0027, \u0027admin_or_owner\u0027, \u0027context_is_admin\u0027,"},{"line_number":743,"context_line":"                         \u0027os_compute_api:os-quota-class-sets:show\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_ad7f7b15","line":740,"updated":"2015-08-13 12:44:42.000000000","message":"wont\u0027 belone \u003d\u003e won\u0027t belong","commit_id":"9c917816048482e3a42aa06e2aa4933a1a6f7f8c"}]}
