)]}'
{"etc/nova/policy.json":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e195f038bf1ab8132d28e4eb1d546ee0389fcec8","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    \"os_compute_api:os-lock-server:lock\": \"rule:admin_or_owner\","},{"line_number":305,"context_line":"    \"os_compute_api:os-lock-server:unlock\": \"rule:admin_or_owner\","},{"line_number":306,"context_line":"    \"compute_extension:v3:os-lock-server:unlock:unlock_override\":"},{"line_number":307,"context_line":"        \"rule:admin_api\","},{"line_number":308,"context_line":"    \"os_compute_api:os-migrate-server:discoverable\": \"\","},{"line_number":309,"context_line":"    \"os_compute_api:os-migrate-server:migrate\": \"rule:admin_api\","},{"line_number":310,"context_line":"    \"os_compute_api:os-migrate-server:migrate_live\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":4,"id":"7aaa499b_510dd435","line":307,"updated":"2015-04-15 03:44:57.000000000","message":"I think we can just wrote it in single line.\n\nAnd now we change the prefix to \u0027os_compute_api\u0027","commit_id":"6a26b83255132fd90eae0faa0794839cb9f6ded7"}],"nova/api/openstack/compute/plugins/v3/lock_server.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"828879c47afb0eae5c8c05a11284674344fd431d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        expect_locked_by \u003d \u0027owner\u0027 if is_owner else \u0027admin\u0027"},{"line_number":52,"context_line":"        locked_by \u003d instance.locked_by"},{"line_number":53,"context_line":"        if locked_by and locked_by !\u003d expect_locked_by:"},{"line_number":54,"context_line":"            authorize(context, instance, action\u003d\u0027unlock:unlock_override\u0027)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        self.compute_api.unlock(context, instance)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_72adc19a","line":54,"updated":"2015-03-14 12:41:22.000000000","message":"how about we share code between this and api layer code?","commit_id":"80d8de248154f902a40fd97f57323e9807d23857"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4a8b0528b23b6b4498699ca61e6947a2448a6980","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":47,"context_line":"        authorize(context, action\u003d\u0027unlock\u0027)"},{"line_number":48,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, id)"},{"line_number":49,"context_line":"        if self.compute_api.need_unlock_override_policy_check("},{"line_number":50,"context_line":"            context, instance):"},{"line_number":51,"context_line":"            authorize(context, instance, action\u003d\u0027unlock:unlock_override\u0027)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_2b602f00","line":49,"updated":"2015-03-15 09:34:43.000000000","message":"Please reference the comment at compute/api.py, we can write like this:\n\nif not self.compute_api.is_expected_locked_by(....):\n     \n       .......","commit_id":"42f4c4ef6371e7aaa2fb3660dd23944a54dec094"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"04b5800df91b406dcada9666813b869f5d0aaa18","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        authorize(context, action\u003d\u0027unlock\u0027)"},{"line_number":48,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, id)"},{"line_number":49,"context_line":"        if not self.compute_api.is_expected_locked_by(context, instance):"},{"line_number":50,"context_line":"            authorize(context, instance, action\u003d\u0027unlock:unlock_override\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        self.compute_api.unlock(context, instance)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7aaa499b_ceefe8e7","line":50,"updated":"2015-04-15 16:24:03.000000000","message":"we better to use \u0027target\u003dintstance\u0027","commit_id":"f1b7cf024b5a6873b9fc99a40b3aa2a881178833"}],"nova/compute/api.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4a8b0528b23b6b4498699ca61e6947a2448a6980","unresolved":false,"context_lines":[{"line_number":2968,"context_line":"        instance.locked_by \u003d \u0027owner\u0027 if is_owner else \u0027admin\u0027"},{"line_number":2969,"context_line":"        instance.save()"},{"line_number":2970,"context_line":""},{"line_number":2971,"context_line":"    def need_unlock_override_policy_check(self, context, instance, skip\u003dFalse):"},{"line_number":2972,"context_line":"        if skip:"},{"line_number":2973,"context_line":"            return False"},{"line_number":2974,"context_line":"        is_owner \u003d instance.project_id \u003d\u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_ab4c1f9f","line":2971,"updated":"2015-03-15 09:34:43.000000000","message":"As our goal we shouldn\u0027t have anything about policy at API layer. So this still looks like strange, How about this:\n\ndef is_expected_locked_by(self, context, instance):\n\n      .....","commit_id":"42f4c4ef6371e7aaa2fb3660dd23944a54dec094"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"4a8b0528b23b6b4498699ca61e6947a2448a6980","unresolved":false,"context_lines":[{"line_number":2984,"context_line":"        # If the instance was locked by someone else, check"},{"line_number":2985,"context_line":"        # that we\u0027re allowed to override the lock"},{"line_number":2986,"context_line":"        if self.need_unlock_override_policy_check("},{"line_number":2987,"context_line":"            context, instance, self.skip_policy_check):"},{"line_number":2988,"context_line":"            check_policy(context, \u0027unlock_override\u0027, instance)"},{"line_number":2989,"context_line":""},{"line_number":2990,"context_line":"        context \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_eb429766","line":2987,"updated":"2015-03-15 09:34:43.000000000","message":"if not is_expected_locked_by(...) and not self.skip_policy_check:\n\n       check_policy(.....)","commit_id":"42f4c4ef6371e7aaa2fb3660dd23944a54dec094"}],"nova/tests/unit/fake_policy.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"bca98f375d088efe5dfb25de80aecb4d205ddcb2","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    \"os_compute_api:os-keypairs:delete\": \"\","},{"line_number":272,"context_line":"    \"os_compute_api:os-lock-server:lock\": \"\","},{"line_number":273,"context_line":"    \"os_compute_api:os-lock-server:unlock\": \"\","},{"line_number":274,"context_line":"    \"compute_extension:v3:os-lock-server:unlock:unlock_override\":"},{"line_number":275,"context_line":"        \"is_admin:True\","},{"line_number":276,"context_line":"    \"os_compute_api:os-migrate-server:migrate\": \"\","},{"line_number":277,"context_line":"    \"os_compute_api:os-migrate-server:migrate_live\": \"\","}],"source_content_type":"text/x-python","patch_set":5,"id":"7aaa499b_15b2834c","line":274,"updated":"2015-04-15 15:09:00.000000000","message":"should we still use v3 here?","commit_id":"f1b7cf024b5a6873b9fc99a40b3aa2a881178833"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"5a86f4bb7658cb9fc975d52870e09af6c08cfbca","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    \"os_compute_api:os-keypairs:delete\": \"\","},{"line_number":272,"context_line":"    \"os_compute_api:os-lock-server:lock\": \"\","},{"line_number":273,"context_line":"    \"os_compute_api:os-lock-server:unlock\": \"\","},{"line_number":274,"context_line":"    \"compute_extension:v3:os-lock-server:unlock:unlock_override\":"},{"line_number":275,"context_line":"        \"is_admin:True\","},{"line_number":276,"context_line":"    \"os_compute_api:os-migrate-server:migrate\": \"\","},{"line_number":277,"context_line":"    \"os_compute_api:os-migrate-server:migrate_live\": \"\","}],"source_content_type":"text/x-python","patch_set":5,"id":"3ab451fb_9f55fac7","line":274,"in_reply_to":"7aaa499b_15b2834c","updated":"2015-04-17 13:54:35.000000000","message":"Good point, \n\n so shamed for this stupid error.\n \n  I  remember I have changed to os_compute_api, not sure why it still here.\n\n  For I rebase the patch to the master. \n  The git tells me the conflict, some former commit has removed v3, which means I should not also V3.","commit_id":"f1b7cf024b5a6873b9fc99a40b3aa2a881178833"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"04b5800df91b406dcada9666813b869f5d0aaa18","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    \"os_compute_api:os-keypairs:delete\": \"\","},{"line_number":272,"context_line":"    \"os_compute_api:os-lock-server:lock\": \"\","},{"line_number":273,"context_line":"    \"os_compute_api:os-lock-server:unlock\": \"\","},{"line_number":274,"context_line":"    \"compute_extension:v3:os-lock-server:unlock:unlock_override\":"},{"line_number":275,"context_line":"        \"is_admin:True\","},{"line_number":276,"context_line":"    \"os_compute_api:os-migrate-server:migrate\": \"\","},{"line_number":277,"context_line":"    \"os_compute_api:os-migrate-server:migrate_live\": \"\","}],"source_content_type":"text/x-python","patch_set":5,"id":"7aaa499b_ae15bce5","line":274,"in_reply_to":"7aaa499b_15b2834c","updated":"2015-04-15 16:24:03.000000000","message":"yes, this is wrong","commit_id":"f1b7cf024b5a6873b9fc99a40b3aa2a881178833"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3c2683b6a0dfd62aa37ea4dc4849b2a5072e9a8b","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    \"os_compute_api:os-lock-server:lock\": \"\","},{"line_number":273,"context_line":"    \"os_compute_api:os-lock-server:unlock\": \"\","},{"line_number":274,"context_line":"    \"os_compute_api:os-lock-server:unlock:unlock_override\":"},{"line_number":275,"context_line":"        \"is_admin:True\","},{"line_number":276,"context_line":"    \"os_compute_api:os-migrate-server:migrate\": \"\","},{"line_number":277,"context_line":"    \"os_compute_api:os-migrate-server:migrate_live\": \"\","},{"line_number":278,"context_line":"    \"compute_extension:multinic\": \"\","}],"source_content_type":"text/x-python","patch_set":7,"id":"1ab14d0d_81cede81","line":275,"updated":"2015-04-18 01:38:34.000000000","message":"I expect there is the empty rule. I hope all the unitest unwind by any permission checks default.","commit_id":"2d384b46916b8f95bd275f250b31e679c985de89"}]}
