summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-03-04 23:41:42 +0000
committerGerrit Code Review <review@openstack.org>2016-03-04 23:41:42 +0000
commitfa3a34322c532c6ae09b7b21c305b6a92d99300a (patch)
tree6f8ed9542b4a1a203f8aada36c5c252bb4706c94
parenta61c5cc8a4884fd97d0938b3559f6a630cd4ad50 (diff)
parent6902a288f8e403cfa143e5c8946ad39bcb2dc396 (diff)
downloadpython-openstackclient-fa3a34322c532c6ae09b7b21c305b6a92d99300a.tar.gz
Merge "[compute] Support restore server"
-rw-r--r--doc/source/command-objects/server.rst15
-rw-r--r--doc/source/commands.rst2
-rw-r--r--openstackclient/compute/v2/server.py22
-rw-r--r--openstackclient/tests/compute/v2/test_server.py20
-rw-r--r--releasenotes/notes/add-restore-server-d8c73e0e83df17dd.yaml4
-rw-r--r--setup.cfg1
6 files changed, 63 insertions, 1 deletions
diff --git a/doc/source/command-objects/server.rst b/doc/source/command-objects/server.rst
index d50ad37e..674172f0 100644
--- a/doc/source/command-objects/server.rst
+++ b/doc/source/command-objects/server.rst
@@ -514,6 +514,21 @@ process for the user: the first is to perform the resize, the second is
to either confirm (verify) success and release the old server, or to declare
a revert to release the new server and restart the old one.
+server restore
+--------------
+
+Restore server(s) from soft-deleted state
+
+.. program:: server restore
+.. code:: bash
+
+ os server restore
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to restore (name or ID)
+
server resume
-------------
diff --git a/doc/source/commands.rst b/doc/source/commands.rst
index 5678e5d1..c54cadb1 100644
--- a/doc/source/commands.rst
+++ b/doc/source/commands.rst
@@ -201,7 +201,7 @@ Those actions with an opposite action are noted in parens if applicable.
* ``remove`` (``add``) - remove an object from a group of objects
* ``rescue`` (``unrescue``) - reboot a server in a special rescue mode allowing access to the original disks
* ``resize`` - change a server's flavor
-* ``restore`` - restore a heat stack snapshot
+* ``restore`` - restore a heat stack snapshot or restore a server in soft-deleted state
* ``resume`` (``suspend``) - return one or more suspended servers to running state
* ``revoke`` (``issue``) - revoke a token
* ``save`` - download an object locally
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index f55c0a43..88162ba5 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -1273,6 +1273,28 @@ class ResizeServer(command.Command):
compute_client.servers.revert_resize(server)
+class RestoreServer(command.Command):
+ """Restore server(s)"""
+
+ def get_parser(self, prog_name):
+ parser = super(RestoreServer, self).get_parser(prog_name)
+ parser.add_argument(
+ 'server',
+ metavar='<server>',
+ nargs='+',
+ help=_('Server(s) to restore (name or ID)'),
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ compute_client = self.app.client_manager.compute
+ for server in parsed_args.server:
+ utils.find_resource(
+ compute_client.servers,
+ server
+ ).restore()
+
+
class ResumeServer(command.Command):
"""Resume server(s)"""
diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py
index 842a31a4..17681672 100644
--- a/openstackclient/tests/compute/v2/test_server.py
+++ b/openstackclient/tests/compute/v2/test_server.py
@@ -1171,6 +1171,26 @@ class TestServerResize(TestServer):
)
+class TestServerRestore(TestServer):
+
+ def setUp(self):
+ super(TestServerRestore, self).setUp()
+
+ # Get the command object to test
+ self.cmd = server.RestoreServer(self.app, None)
+
+ # Set methods to be tested.
+ self.methods = {
+ 'restore': None,
+ }
+
+ def test_server_restore_one_server(self):
+ self.run_method_with_servers('restore', 1)
+
+ def test_server_restore_multi_servers(self):
+ self.run_method_with_servers('restore', 3)
+
+
class TestServerResume(TestServer):
def setUp(self):
diff --git a/releasenotes/notes/add-restore-server-d8c73e0e83df17dd.yaml b/releasenotes/notes/add-restore-server-d8c73e0e83df17dd.yaml
new file mode 100644
index 00000000..09d3b582
--- /dev/null
+++ b/releasenotes/notes/add-restore-server-d8c73e0e83df17dd.yaml
@@ -0,0 +1,4 @@
+---
+features:
+ - |
+ Add support for the ``server restore`` command.
diff --git a/setup.cfg b/setup.cfg
index d00c5c5f..950a93a6 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -120,6 +120,7 @@ openstack.compute.v2 =
server_remove_volume = openstackclient.compute.v2.server:RemoveServerVolume
server_rescue = openstackclient.compute.v2.server:RescueServer
server_resize = openstackclient.compute.v2.server:ResizeServer
+ server_restore = openstackclient.compute.v2.server:RestoreServer
server_resume = openstackclient.compute.v2.server:ResumeServer
server_set = openstackclient.compute.v2.server:SetServer
server_shelve = openstackclient.compute.v2.server:ShelveServer