diff options
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/compute/v2/server.py | 28 | ||||
| -rw-r--r-- | openstackclient/tests/compute/v2/test_server.py | 20 |
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 = ( |
