compute: Add Server.restore, restore_server proxy method

Change-Id: I3c7222255f03797c8ae599090b482f317cb3c87c
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
Stephen Finucane 2022-12-19 16:07:41 +00:00
parent 79d1743d2a
commit 1921a195c6
6 changed files with 45 additions and 4 deletions

View File

@ -39,9 +39,9 @@ Starting, Stopping, etc.
.. autoclass:: openstack.compute.v2._proxy.Proxy
:noindex:
:members: start_server, stop_server, suspend_server, resume_server,
reboot_server, shelve_server, unshelve_server, lock_server,
unlock_server, pause_server, unpause_server, rescue_server,
unrescue_server, evacuate_server, migrate_server,
reboot_server, restore_server, shelve_server, unshelve_server,
lock_server, unlock_server, pause_server, unpause_server,
rescue_server, unrescue_server, evacuate_server, migrate_server,
get_server_console_output, live_migrate_server
Modifying a Server

View File

@ -1099,6 +1099,16 @@ class Proxy(proxy.Proxy):
server = self._get_resource(_server.Server, server)
server.stop(self)
def restore_server(self, server):
"""Restore a soft-deleted server.
:param server: Either the ID of a server or a
:class:`~openstack.compute.v2.server.Server` instance.
:returns: None
"""
server = self._get_resource(_server.Server, server)
server.restore(self)
def shelve_server(self, server):
"""Shelves a server.
@ -1115,7 +1125,7 @@ class Proxy(proxy.Proxy):
server.shelve(self)
def unshelve_server(self, server):
"""Unselves or restores a shelved server.
"""Unshelves or restores a shelved server.
Policy defaults enable only users with administrative role or the
owner of the server to perform this operation. Cloud provides could

View File

@ -487,6 +487,10 @@ class Server(resource.Resource, metadata.MetadataMixin, tag.TagMixin):
body = {"os-stop": None}
self._action(session, body)
def restore(self, session):
body = {"restore": None}
self._action(session, body)
def shelve(self, session):
body = {"shelve": None}
self._action(session, body)

View File

@ -1096,6 +1096,13 @@ class TestCompute(TestComputeProxy):
method_args=["value"],
expected_args=[self.proxy])
def test_server_restore(self):
self._verify(
"openstack.compute.v2.server.Server.restore",
self.proxy.restore_server,
method_args=["value"],
expected_args=[self.proxy])
def test_server_shelve(self):
self._verify(
"openstack.compute.v2.server.Server.shelve",

View File

@ -835,6 +835,20 @@ class TestServer(base.TestCase):
microversion=self.sess.default_microversion,
)
def test_restore(self):
sot = server.Server(**EXAMPLE)
res = sot.restore(self.sess)
self.assertIsNone(res)
url = 'servers/IDENTIFIER/action'
body = {'restore': None}
headers = {'Accept': ''}
self.sess.post.assert_called_with(
url, json=body, headers=headers,
microversion=self.sess.default_microversion,
)
def test_shelve(self):
sot = server.Server(**EXAMPLE)

View File

@ -0,0 +1,6 @@
---
features:
- |
The ``openstack.compute.v2.server.Server`` object now provides a
``restore`` method to restore it from a soft-deleted state, while the
compute proxy method provides an equivalent ``restore_server`` method.