Skip to content

Commit 6902a28

Browse files
committed
[compute] Support restore server
Server in soft-delete state can be restored, add this command. Change-Id: Id9d7246f89ae65273505f36dcb664996534ae986
1 parent 43957d6 commit 6902a28

6 files changed

Lines changed: 63 additions & 1 deletion

File tree

doc/source/command-objects/server.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,21 @@ process for the user: the first is to perform the resize, the second is
514514
to either confirm (verify) success and release the old server, or to declare
515515
a revert to release the new server and restart the old one.
516516
517+
server restore
518+
--------------
519+
520+
Restore server(s) from soft-deleted state
521+
522+
.. program:: server restore
523+
.. code:: bash
524+
525+
os server restore
526+
<server> [<server> ...]
527+
528+
.. describe:: <server>
529+
530+
Server(s) to restore (name or ID)
531+
517532
server resume
518533
-------------
519534

doc/source/commands.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ Those actions with an opposite action are noted in parens if applicable.
199199
* ``remove`` (``add``) - remove an object from a group of objects
200200
* ``rescue`` (``unrescue``) - reboot a server in a special rescue mode allowing access to the original disks
201201
* ``resize`` - change a server's flavor
202-
* ``restore`` - restore a heat stack snapshot
202+
* ``restore`` - restore a heat stack snapshot or restore a server in soft-deleted state
203203
* ``resume`` (``suspend``) - return one or more suspended servers to running state
204204
* ``revoke`` (``issue``) - revoke a token
205205
* ``save`` - download an object locally

openstackclient/compute/v2/server.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,6 +1273,28 @@ def take_action(self, parsed_args):
12731273
compute_client.servers.revert_resize(server)
12741274

12751275

1276+
class RestoreServer(command.Command):
1277+
"""Restore server(s)"""
1278+
1279+
def get_parser(self, prog_name):
1280+
parser = super(RestoreServer, self).get_parser(prog_name)
1281+
parser.add_argument(
1282+
'server',
1283+
metavar='<server>',
1284+
nargs='+',
1285+
help=_('Server(s) to restore (name or ID)'),
1286+
)
1287+
return parser
1288+
1289+
def take_action(self, parsed_args):
1290+
compute_client = self.app.client_manager.compute
1291+
for server in parsed_args.server:
1292+
utils.find_resource(
1293+
compute_client.servers,
1294+
server
1295+
).restore()
1296+
1297+
12761298
class ResumeServer(command.Command):
12771299
"""Resume server(s)"""
12781300

openstackclient/tests/compute/v2/test_server.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,26 @@ def test_server_resize_revert(self):
998998
)
999999

10001000

1001+
class TestServerRestore(TestServer):
1002+
1003+
def setUp(self):
1004+
super(TestServerRestore, self).setUp()
1005+
1006+
# Get the command object to test
1007+
self.cmd = server.RestoreServer(self.app, None)
1008+
1009+
# Set methods to be tested.
1010+
self.methods = {
1011+
'restore': None,
1012+
}
1013+
1014+
def test_server_restore_one_server(self):
1015+
self.run_method_with_servers('restore', 1)
1016+
1017+
def test_server_restore_multi_servers(self):
1018+
self.run_method_with_servers('restore', 3)
1019+
1020+
10011021
class TestServerResume(TestServer):
10021022

10031023
def setUp(self):
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
features:
3+
- |
4+
Add support for the ``server restore`` command.

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ openstack.compute.v2 =
121121
server_remove_volume = openstackclient.compute.v2.server:RemoveServerVolume
122122
server_rescue = openstackclient.compute.v2.server:RescueServer
123123
server_resize = openstackclient.compute.v2.server:ResizeServer
124+
server_restore = openstackclient.compute.v2.server:RestoreServer
124125
server_resume = openstackclient.compute.v2.server:ResumeServer
125126
server_set = openstackclient.compute.v2.server:SetServer
126127
server_shelve = openstackclient.compute.v2.server:ShelveServer

0 commit comments

Comments
 (0)