diff options
| author | xiexs <xiexs@cn.fujitsu.com> | 2016-01-26 00:22:56 -0500 |
|---|---|---|
| committer | Tang Chen <chen.tang@easystack.cn> | 2016-02-05 21:48:41 +0800 |
| commit | 6b3583ab06459dad8c2aa1b762538516047b8b41 (patch) | |
| tree | e4d6a713706e465f80d0a4d2ff8882c0f0db54bf /openstackclient | |
| parent | 42b607edf117e4a3f421a554308330409c88dbb1 (diff) | |
| download | python-openstackclient-6b3583ab06459dad8c2aa1b762538516047b8b41.tar.gz | |
Add support for triggering an crash dump
The triggering crash dump feature is supported by nova [1] and
novaclient [2] now, it's time to introduce this feature into
OSC correspondingly.
[1]The change id is: I6ed777ff637254b4b79417008f9055dd19fc7405
[2]The change id is: If03b1864bbe7074c720b946fc2700bd5d07debc3
Change-Id: I5a411f283fdf0fc3c00380d069848a332c799cdd
Closes-Bug: #1538372
Co-Authored-By: Tang Chen <chen.tang@easystack.cn>
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 = ( |
