Skip to content

Commit fa3a343

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "[compute] Support restore server"
2 parents a61c5cc + 6902a28 commit fa3a343

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
@@ -201,7 +201,7 @@ Those actions with an opposite action are noted in parens if applicable.
201201
* ``remove`` (``add``) - remove an object from a group of objects
202202
* ``rescue`` (``unrescue``) - reboot a server in a special rescue mode allowing access to the original disks
203203
* ``resize`` - change a server's flavor
204-
* ``restore`` - restore a heat stack snapshot
204+
* ``restore`` - restore a heat stack snapshot or restore a server in soft-deleted state
205205
* ``resume`` (``suspend``) - return one or more suspended servers to running state
206206
* ``revoke`` (``issue``) - revoke a token
207207
* ``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
@@ -1171,6 +1171,26 @@ def test_server_resize_with_wait_fails(self, mock_wait_for_status):
11711171
)
11721172

11731173

1174+
class TestServerRestore(TestServer):
1175+
1176+
def setUp(self):
1177+
super(TestServerRestore, self).setUp()
1178+
1179+
# Get the command object to test
1180+
self.cmd = server.RestoreServer(self.app, None)
1181+
1182+
# Set methods to be tested.
1183+
self.methods = {
1184+
'restore': None,
1185+
}
1186+
1187+
def test_server_restore_one_server(self):
1188+
self.run_method_with_servers('restore', 1)
1189+
1190+
def test_server_restore_multi_servers(self):
1191+
self.run_method_with_servers('restore', 3)
1192+
1193+
11741194
class TestServerResume(TestServer):
11751195

11761196
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
@@ -120,6 +120,7 @@ openstack.compute.v2 =
120120
server_remove_volume = openstackclient.compute.v2.server:RemoveServerVolume
121121
server_rescue = openstackclient.compute.v2.server:RescueServer
122122
server_resize = openstackclient.compute.v2.server:ResizeServer
123+
server_restore = openstackclient.compute.v2.server:RestoreServer
123124
server_resume = openstackclient.compute.v2.server:ResumeServer
124125
server_set = openstackclient.compute.v2.server:SetServer
125126
server_shelve = openstackclient.compute.v2.server:ShelveServer

0 commit comments

Comments
 (0)