summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server.py28
-rw-r--r--openstackclient/tests/compute/v2/test_server.py20
2 files changed, 48 insertions, 0 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index dd7bc470..4cb94822 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -542,6 +542,34 @@ class CreateServer(command.ShowOne):
return zip(*sorted(six.iteritems(details)))
+class CreateServerDump(command.Command):
+ """Create a dump file in server(s)
+
+ Trigger crash dump in server(s) with features like kdump in Linux.
+ It will create a dump file in the server(s) dumping the server(s)'
+ memory, and also crash the server(s). OSC sees the dump file
+ (server dump) as a kind of resource.
+ """
+
+ def get_parser(self, prog_name):
+ parser = super(CreateServerDump, self).get_parser(prog_name)
+ parser.add_argument(
+ 'server',
+ metavar='<server>',
+ nargs='+',
+ help=_('Server(s) to create dump file (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,
+ ).trigger_crash_dump()
+
+
class CreateServerImage(command.ShowOne):
"""Create a new disk image from a running server"""
diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py
index f6b62291..141e1370 100644
--- a/openstackclient/tests/compute/v2/test_server.py
+++ b/openstackclient/tests/compute/v2/test_server.py
@@ -490,6 +490,26 @@ class TestServerDelete(TestServer):
)
+class TestServerDumpCreate(TestServer):
+
+ def setUp(self):
+ super(TestServerDumpCreate, self).setUp()
+
+ # Get the command object to test
+ self.cmd = server.CreateServerDump(self.app, None)
+
+ # Set methods to be tested.
+ self.methods = {
+ 'trigger_crash_dump': None,
+ }
+
+ def test_server_dump_one_server(self):
+ self.run_method_with_servers('trigger_crash_dump', 1)
+
+ def test_server_dump_multi_servers(self):
+ self.run_method_with_servers('trigger_crash_dump', 3)
+
+
class TestServerImageCreate(TestServer):
columns = (