)]}'
{"nova/policies/lock_server.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"467d96ad633521ecf46739c818b38ac0dff3b680","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \"Lock an instance\","},{"line_number":32,"context_line":"        ["},{"line_number":33,"context_line":"            {"},{"line_number":34,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action\u0027,"},{"line_number":35,"context_line":"                \u0027method\u0027: \u0027POST\u0027"},{"line_number":36,"context_line":"            }"},{"line_number":37,"context_line":"        ]),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_ababd673","line":34,"range":{"start_line":34,"start_character":52,"end_line":34,"end_character":53},"updated":"2017-03-22 09:53:52.000000000","message":"please mention action name also like:\n\n\u0027path\u0027: \u0027/servers/{server_id}/action (lock)\u0027,","commit_id":"0d4a52a88b0a978d4efc0397a750bb84d6cc4a3e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"1564b19bd824e3d13e111481d46cb4a6f8549da4","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \"Lock an instance\","},{"line_number":32,"context_line":"        ["},{"line_number":33,"context_line":"            {"},{"line_number":34,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action\u0027,"},{"line_number":35,"context_line":"                \u0027method\u0027: \u0027POST\u0027"},{"line_number":36,"context_line":"            }"},{"line_number":37,"context_line":"        ]),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_657006a5","line":34,"range":{"start_line":34,"start_character":52,"end_line":34,"end_character":53},"in_reply_to":"1a1ced50_ababd673","updated":"2017-03-23 01:44:07.000000000","message":"Yeah, I was also thinking about this, is this the best way to do this? I was thinking add a BODY optional parameter to base.create_rule_default","commit_id":"0d4a52a88b0a978d4efc0397a750bb84d6cc4a3e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"467d96ad633521ecf46739c818b38ac0dff3b680","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    base.create_rule_default("},{"line_number":39,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":40,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":41,"context_line":"        \"Unlock an instance locked by user\","},{"line_number":42,"context_line":"        ["},{"line_number":43,"context_line":"            {"},{"line_number":44,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_0b9cea0d","line":41,"range":{"start_line":41,"start_character":28,"end_line":41,"end_character":43},"updated":"2017-03-22 09:53:52.000000000","message":"this is not just locked by user, if instance is locked by different user than caller than this policy is being checked. \n\nwe should add that If instance is not locked by you then this policy is to checks the permission of override the unlock.\n\nAlso add this policy is checked after \u0027unlock\u0027 policy checks","commit_id":"0d4a52a88b0a978d4efc0397a750bb84d6cc4a3e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"1564b19bd824e3d13e111481d46cb4a6f8549da4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    base.create_rule_default("},{"line_number":39,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":40,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":41,"context_line":"        \"Unlock an instance locked by user\","},{"line_number":42,"context_line":"        ["},{"line_number":43,"context_line":"            {"},{"line_number":44,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_a5111e54","line":41,"range":{"start_line":41,"start_character":28,"end_line":41,"end_character":43},"in_reply_to":"1a1ced50_0b9cea0d","updated":"2017-03-23 01:44:07.000000000","message":"Done","commit_id":"0d4a52a88b0a978d4efc0397a750bb84d6cc4a3e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"467d96ad633521ecf46739c818b38ac0dff3b680","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"Unlock an instance locked by user\","},{"line_number":42,"context_line":"        ["},{"line_number":43,"context_line":"            {"},{"line_number":44,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action\u0027,"},{"line_number":45,"context_line":"                \u0027method\u0027: \u0027POST\u0027"},{"line_number":46,"context_line":"            }"},{"line_number":47,"context_line":"        ]),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_0bbdcab6","line":44,"range":{"start_line":44,"start_character":52,"end_line":44,"end_character":54},"updated":"2017-03-22 09:53:52.000000000","message":"ditto","commit_id":"0d4a52a88b0a978d4efc0397a750bb84d6cc4a3e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"467d96ad633521ecf46739c818b38ac0dff3b680","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        \"Unlock an instance\","},{"line_number":52,"context_line":"        ["},{"line_number":53,"context_line":"            {"},{"line_number":54,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action\u0027,"},{"line_number":55,"context_line":"                \u0027method\u0027: \u0027POST\u0027"},{"line_number":56,"context_line":"            }"},{"line_number":57,"context_line":"        ]),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_4bb342e9","line":54,"range":{"start_line":54,"start_character":52,"end_line":54,"end_character":54},"updated":"2017-03-22 09:53:52.000000000","message":"ditto","commit_id":"0d4a52a88b0a978d4efc0397a750bb84d6cc4a3e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"50d0b528c12eb58fd134a7a405d51282b9d70be4","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    base.create_rule_default("},{"line_number":49,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":50,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":51,"context_line":"        \"If instance is not locked by you then this policy is to \""},{"line_number":52,"context_line":"        \"checks the permission of override the unlock\","},{"line_number":53,"context_line":"        ["},{"line_number":54,"context_line":"            {"},{"line_number":55,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_b4d05152","line":52,"range":{"start_line":51,"start_character":9,"end_line":52,"end_character":53},"updated":"2017-03-24 16:56:15.000000000","message":"Can you word this in the imperative? Assuming I understand this correctly, perhaps:\n\n    Unlock an instance, ignoring permissions.\n\nOut of curiosity, do you know why this is needed when the above is ADMIN_OR_OWNER (ADMIN being the important piece)?","commit_id":"54281545f06be32f60899a7162318748e8d758ba"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"6a3b3dffcd216b7cf1fb1388f5d99a3da8d43fa6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    base.create_rule_default("},{"line_number":49,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":50,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":51,"context_line":"        \"If instance is not locked by you then this policy is to \""},{"line_number":52,"context_line":"        \"checks the permission of override the unlock\","},{"line_number":53,"context_line":"        ["},{"line_number":54,"context_line":"            {"},{"line_number":55,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_c2ae65e6","line":52,"range":{"start_line":51,"start_character":9,"end_line":52,"end_character":53},"in_reply_to":"ffe62b97_b4d05152","updated":"2017-03-25 02:02:32.000000000","message":"Hi, by looking at the code:\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/compute/lock_server.py#n50\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/compute/api.py#n3637\n\nI can think of an usecase like this:\nIf the instance is locked by admin, and this rule is set to be admin, then the owner will not be able to unlock this instance.","commit_id":"54281545f06be32f60899a7162318748e8d758ba"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7139b9d3cb792f18a7eb57404e6acb9ac2a6c1e7","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    base.create_rule_default("},{"line_number":49,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":50,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":51,"context_line":"        \"If instance is not locked by you then this policy is to \""},{"line_number":52,"context_line":"        \"checks the permission of override the unlock\","},{"line_number":53,"context_line":"        ["},{"line_number":54,"context_line":"            {"},{"line_number":55,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffe62b97_f911ffad","line":52,"range":{"start_line":51,"start_character":9,"end_line":52,"end_character":53},"in_reply_to":"ffe62b97_c2ae65e6","updated":"2017-03-27 10:23:23.000000000","message":"yea use case is to let or block the unlocking of each other locked instances (not ignore the permission as it still after \u0027unlock\u0027 permission checks).","commit_id":"54281545f06be32f60899a7162318748e8d758ba"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ee8179dd6e4441cf226bc66f5d19af79b6f58829","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    base.create_rule_default("},{"line_number":29,"context_line":"        POLICY_ROOT % \u0027lock\u0027,"},{"line_number":30,"context_line":"        base.RULE_ADMIN_OR_OWNER,"},{"line_number":31,"context_line":"        \"Lock an instance\","},{"line_number":32,"context_line":"        ["},{"line_number":33,"context_line":"            {"},{"line_number":34,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (lock)\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_9949d3d1","line":31,"range":{"start_line":31,"start_character":17,"end_line":31,"end_character":25},"updated":"2017-03-27 10:18:06.000000000","message":"we should use \u0027server\u0027 instead of \u0027instance\u0027","commit_id":"81ffd4f2b8553b4d795e6ef1272c3f7b336b6f04"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ee8179dd6e4441cf226bc66f5d19af79b6f58829","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (lock)\u0027,"},{"line_number":35,"context_line":"                \u0027method\u0027: \u0027POST\u0027"},{"line_number":36,"context_line":"            }"},{"line_number":37,"context_line":"        ]),"},{"line_number":38,"context_line":"    base.create_rule_default("},{"line_number":39,"context_line":"        POLICY_ROOT % \u0027unlock\u0027,"},{"line_number":40,"context_line":"        base.RULE_ADMIN_OR_OWNER,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_391887d1","line":37,"range":{"start_line":37,"start_character":9,"end_line":37,"end_character":11},"updated":"2017-03-27 10:18:06.000000000","message":"This should be in next line.","commit_id":"81ffd4f2b8553b4d795e6ef1272c3f7b336b6f04"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ee8179dd6e4441cf226bc66f5d19af79b6f58829","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    base.create_rule_default("},{"line_number":39,"context_line":"        POLICY_ROOT % \u0027unlock\u0027,"},{"line_number":40,"context_line":"        base.RULE_ADMIN_OR_OWNER,"},{"line_number":41,"context_line":"        \"Unlock an instance\","},{"line_number":42,"context_line":"        ["},{"line_number":43,"context_line":"            {"},{"line_number":44,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_b93a5731","line":41,"range":{"start_line":41,"start_character":19,"end_line":41,"end_character":26},"updated":"2017-03-27 10:18:06.000000000","message":"we should use \u0027server\u0027 instead of \u0027instance\u0027","commit_id":"81ffd4f2b8553b4d795e6ef1272c3f7b336b6f04"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ee8179dd6e4441cf226bc66f5d19af79b6f58829","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"},{"line_number":45,"context_line":"                \u0027method\u0027: \u0027POST\u0027"},{"line_number":46,"context_line":"            }"},{"line_number":47,"context_line":"        ]),"},{"line_number":48,"context_line":"    base.create_rule_default("},{"line_number":49,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":50,"context_line":"        base.RULE_ADMIN_API,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_190f038a","line":47,"range":{"start_line":47,"start_character":9,"end_line":47,"end_character":11},"updated":"2017-03-27 10:18:06.000000000","message":"ditto","commit_id":"81ffd4f2b8553b4d795e6ef1272c3f7b336b6f04"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ee8179dd6e4441cf226bc66f5d19af79b6f58829","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    base.create_rule_default("},{"line_number":49,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":50,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":51,"context_line":"        \"Unlock an instance, regardless who locked the instance\","},{"line_number":52,"context_line":"        ["},{"line_number":53,"context_line":"            {"},{"line_number":54,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_f938df3d","line":51,"range":{"start_line":51,"start_character":9,"end_line":51,"end_character":64},"updated":"2017-03-27 10:18:06.000000000","message":"ditto for instance","commit_id":"81ffd4f2b8553b4d795e6ef1272c3f7b336b6f04"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"199de57410738c75e7f11063285fb7b2f1b38a8d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    base.create_rule_default("},{"line_number":49,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":50,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":51,"context_line":"        \"Unlock an instance, regardless who locked the instance\","},{"line_number":52,"context_line":"        ["},{"line_number":53,"context_line":"            {"},{"line_number":54,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_19eb8379","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":65},"updated":"2017-03-27 10:23:13.000000000","message":"this check is not alone on unlock API, it is being checked after \u0027unlock\u0027 policy so we should mention that explicitly.\n\nAnd this check is performed only after the check\nos_compute_api:os-lock-server:unlock passes\"\"\",","commit_id":"81ffd4f2b8553b4d795e6ef1272c3f7b336b6f04"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ee8179dd6e4441cf226bc66f5d19af79b6f58829","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"},{"line_number":55,"context_line":"                \u0027method\u0027: \u0027POST\u0027"},{"line_number":56,"context_line":"            }"},{"line_number":57,"context_line":"        ]),"},{"line_number":58,"context_line":"]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_d9287be3","line":57,"range":{"start_line":57,"start_character":9,"end_line":57,"end_character":11},"updated":"2017-03-27 10:18:06.000000000","message":"ditto","commit_id":"81ffd4f2b8553b4d795e6ef1272c3f7b336b6f04"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6bd2408039bcd94ab311ad6e03f28728af39c5d2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    base.create_rule_default("},{"line_number":51,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":52,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":53,"context_line":"        \"Unlock a server, regardless who locked the server, \""},{"line_number":54,"context_line":"        \"this check is performed only after the check \""},{"line_number":55,"context_line":"        \"os_compute_api:os-lock-server:unlock passes\","},{"line_number":56,"context_line":"        ["},{"line_number":57,"context_line":"            {"},{"line_number":58,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ffe62b97_3a30439f","line":55,"range":{"start_line":53,"start_character":0,"end_line":55,"end_character":54},"updated":"2017-03-28 08:35:51.000000000","message":"I wonder if this should be a multi-line string, e.g.\n\n    \"\"\"Unlock a server, regardless of who locked the server.\n\n    This check...\n    \"\"\",","commit_id":"b583890315553161dbcbf51bebb7d6904466f06d"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"7599bd0bb3a327170829115d0699fec8994e45eb","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    base.create_rule_default("},{"line_number":51,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":52,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":53,"context_line":"        \"\"\"Unlock a server, regardless who locked the server,"},{"line_number":54,"context_line":"        this check is performed only after the check"},{"line_number":55,"context_line":"        os_compute_api:os-lock-server:unlock passes\"\"\","},{"line_number":56,"context_line":"        ["},{"line_number":57,"context_line":"            {"},{"line_number":58,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_27126763","line":55,"range":{"start_line":53,"start_character":8,"end_line":55,"end_character":55},"updated":"2017-03-28 09:25:31.000000000","message":"do we need some info about how this is used ? \nas without read the code, hard to understand the logic of it","commit_id":"cfdfbe31ddf83b0a2f815fa93d813a6228e05eeb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8c187e2e7736d0bebe39a5d21312141a96cd33dd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    base.create_rule_default("},{"line_number":51,"context_line":"        POLICY_ROOT % \u0027unlock:unlock_override\u0027,"},{"line_number":52,"context_line":"        base.RULE_ADMIN_API,"},{"line_number":53,"context_line":"        \"\"\"Unlock a server, regardless who locked the server,"},{"line_number":54,"context_line":"        this check is performed only after the check"},{"line_number":55,"context_line":"        os_compute_api:os-lock-server:unlock passes\"\"\","},{"line_number":56,"context_line":"        ["},{"line_number":57,"context_line":"            {"},{"line_number":58,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_aaee3eea","line":55,"range":{"start_line":53,"start_character":8,"end_line":55,"end_character":55},"in_reply_to":"ffe62b97_27126763","updated":"2017-03-28 09:33:06.000000000","message":"That\u0027s what the API guide is for, I think :)\n\n@Kevin: I think you misunderstood what I was looking for. I was hoping to get these broken into a summary-description format, like a commit message?","commit_id":"cfdfbe31ddf83b0a2f815fa93d813a6228e05eeb"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"0dde87ac2bf9f92c974681f43c890d2c993a2ad2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"\"\"Unlock a server, regardless who locked the server."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        This check is performed only after the check"},{"line_number":56,"context_line":"        os_compute_api:os-lock-server:unlock passes\"\"\","},{"line_number":57,"context_line":"        ["},{"line_number":58,"context_line":"            {"},{"line_number":59,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_1de576dc","line":56,"range":{"start_line":56,"start_character":31,"end_line":56,"end_character":37},"updated":"2017-03-28 09:50:35.000000000","message":"well, https://developer.openstack.org/api-ref/compute/?expanded\u003dunpause-server-unpause-action-detail,unlock-server-unlock-action-detail\n\ndoesn\u0027t have this info, and this is a doc we want to provide to user on the usage of the policy.... so some special guide should be provided?","commit_id":"4b6092fb395d46eea654b77e02c8b98aab72c6b8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d6bf1896922821a9ea2efe785555cf275bf051b2","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        \"\"\"Unlock a server, regardless who locked the server."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        This check is performed only after the check"},{"line_number":56,"context_line":"        os_compute_api:os-lock-server:unlock passes\"\"\","},{"line_number":57,"context_line":"        ["},{"line_number":58,"context_line":"            {"},{"line_number":59,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/action (unlock)\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ffe62b97_c0116154","line":56,"range":{"start_line":56,"start_character":31,"end_line":56,"end_character":37},"in_reply_to":"ffe62b97_1de576dc","updated":"2017-03-28 09:59:27.000000000","message":"The API user shouldn\u0027t be told about policy, they have no control over that usually, its an operator concern.","commit_id":"4b6092fb395d46eea654b77e02c8b98aab72c6b8"}]}
