<div dir="ltr"><div>Quickly checking the current code, it seems support for user_id was introduced to only suspend api[1]</div><div> [1] <a href="https://review.opendev.org/c/openstack/nova/+/353344">https://review.opendev.org/c/openstack/nova/+/353344</a></div><div><br></div><div>I've opened a bug for nova[2] because supporting consistent rules for suspend and resume</div><div>makes clear sense to me.<br></div><div> [2] <a href="https://bugs.launchpad.net/nova/+bug/1960247">https://bugs.launchpad.net/nova/+bug/1960247</a></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 8, 2022 at 12:25 AM Massimo Sgaravatto <<a href="mailto:massimo.sgaravatto@gmail.com">massimo.sgaravatto@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Dear all<br></div><div><br></div>I am running a Xena installation<div><br></div><div>I have modified the nova policy fail so that certain operations can be done only by the user who created the instance, or by the administrator</div><div>This [*] is my policy.yaml file.</div><div>While the suspend operation works as intended (I can suspend only my instances and I am not allowed to suspend an instance created by another user) I am not able to resume an instance that I own and that I have previously suspended.</div><div>I get this error:</div><div><br></div><div>ERROR (Forbidden): Policy doesn't allow os_compute_api:os-suspend-server:suspend to be performed. (HTTP 403) (Request-ID: req-c57458bc-b1ea-4b40-a1d2-0f67608ef673)<br></div><div><br></div><div>Only removing the line:</div><div><br></div><div>"os_compute_api:os-suspend-server:suspend": "rule:admin_api or user_id:%(user_id)s"</div><div><br></div><div>from the policy file, I am able to resume the instance.</div><div><br></div><div>I am not able to understand what is wrong with that policy. Any hints ?</div><div><br></div><div>Thanks, Massimo</div><div><br></div><div><br></div><div>[*]</div><div><br></div><div><div># Pause a server<br># POST  /servers/{server_id}/action (pause)<br># Intended scope(s): system, project<br>"os_compute_api:os-pause-server:pause": "rule:admin_api or user_id:%(user_id)s"<br><br># Delete a server<br># DELETE  /servers/{server_id}<br># Intended scope(s): system, project<br>"os_compute_api:servers:delete": "rule:admin_api or user_id:%(user_id)s"<br><br># Resize a server<br># POST  /servers/{server_id}/action (resize)<br># Intended scope(s): system, project<br>"os_compute_api:servers:resize": "rule:admin_api or user_id:%(user_id)s"<br><br># Rebuild a server<br># POST  /servers/{server_id}/action (rebuild)<br># Intended scope(s): system, project<br>"os_compute_api:servers:rebuild": "rule:admin_api or user_id:%(user_id)s"<br><br># Stop a server<br># POST  /servers/{server_id}/action (os-stop)<br># Intended scope(s): system, project<br>"os_compute_api:servers:stop": "rule:admin_api or user_id:%(user_id)s"<br><br># Resume suspended server<br># POST  /servers/{server_id}/action (resume)<br># Intended scope(s): system, project<br>"os_compute_api:os-suspend-server:resume": "rule:admin_api or user_id:%(user_id)s"<br><br># Suspend server<br># POST  /servers/{server_id}/action (suspend)<br># Intended scope(s): system, project<br>"os_compute_api:os-suspend-server:suspend": "rule:admin_api or user_id:%(user_id)s"<br></div></div></div>
</blockquote></div>