Skip to content

Commit fb4240a

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Add support for triggering an crash dump"
2 parents 546398c + 6b3583a commit fb4240a

6 files changed

Lines changed: 74 additions & 0 deletions

File tree

doc/source/command-objects/server.rst

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,25 @@ Delete server(s)
168168

169169
Server(s) to delete (name or ID)
170170

171+
server dump create
172+
------------------
173+
Create a dump file in server(s)
174+
175+
Trigger crash dump in server(s) with features like kdump in Linux. It will
176+
create a dump file in the server(s) dumping the server(s)' memory, and also
177+
crash the server(s). OSC sees the dump file (server dump) as a kind of
178+
resource.
179+
180+
.. program:: server dump create
181+
.. code:: bash
182+
183+
os server dump create
184+
<server> [<server> ...]
185+
186+
.. describe:: <server>
187+
188+
Server(s) to create dump file (name or ID)
189+
171190
server list
172191
-----------
173192

doc/source/commands.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ referring to both Compute and Volume quotas.
112112
* ``security group``: (**Compute**, **Network**) - groups of network access rules
113113
* ``security group rule``: (**Compute**, **Network**) - the individual rules that define protocol/IP/port access
114114
* ``server``: (**Compute**) virtual machine instance
115+
* ``server dump``: (**Compute**) a dump file of a server created by features like kdump
115116
* ``server image``: (**Compute**) saved server disk image
116117
* ``service``: (**Identity**) a cloud service
117118
* ``service provider``: (**Identity**) a resource that consumes assertions from an ``identity provider``

openstackclient/compute/v2/server.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,34 @@ def take_action(self, parsed_args):
542542
return zip(*sorted(six.iteritems(details)))
543543

544544

545+
class CreateServerDump(command.Command):
546+
"""Create a dump file in server(s)
547+
548+
Trigger crash dump in server(s) with features like kdump in Linux.
549+
It will create a dump file in the server(s) dumping the server(s)'
550+
memory, and also crash the server(s). OSC sees the dump file
551+
(server dump) as a kind of resource.
552+
"""
553+
554+
def get_parser(self, prog_name):
555+
parser = super(CreateServerDump, self).get_parser(prog_name)
556+
parser.add_argument(
557+
'server',
558+
metavar='<server>',
559+
nargs='+',
560+
help=_('Server(s) to create dump file (name or ID)'),
561+
)
562+
return parser
563+
564+
def take_action(self, parsed_args):
565+
compute_client = self.app.client_manager.compute
566+
for server in parsed_args.server:
567+
utils.find_resource(
568+
compute_client.servers,
569+
server,
570+
).trigger_crash_dump()
571+
572+
545573
class CreateServerImage(command.ShowOne):
546574
"""Create a new disk image from a running server"""
547575

openstackclient/tests/compute/v2/test_server.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,26 @@ def test_server_delete_wait_fails(self, mock_wait_for_delete):
490490
)
491491

492492

493+
class TestServerDumpCreate(TestServer):
494+
495+
def setUp(self):
496+
super(TestServerDumpCreate, self).setUp()
497+
498+
# Get the command object to test
499+
self.cmd = server.CreateServerDump(self.app, None)
500+
501+
# Set methods to be tested.
502+
self.methods = {
503+
'trigger_crash_dump': None,
504+
}
505+
506+
def test_server_dump_one_server(self):
507+
self.run_method_with_servers('trigger_crash_dump', 1)
508+
509+
def test_server_dump_multi_servers(self):
510+
self.run_method_with_servers('trigger_crash_dump', 3)
511+
512+
493513
class TestServerImageCreate(TestServer):
494514

495515
columns = (
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
Add support for the `server dump create` command
5+
[Bug `1538372 <https://bugs.launchpad.net/python-openstackclient/+bug/1538372>`_]

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ openstack.compute.v2 =
133133
server_start = openstackclient.compute.v2.server:StartServer
134134
server_stop = openstackclient.compute.v2.server:StopServer
135135
server_suspend = openstackclient.compute.v2.server:SuspendServer
136+
server_dump_create = openstackclient.compute.v2.server:CreateServerDump
136137
server_unlock = openstackclient.compute.v2.server:UnlockServer
137138
server_unpause = openstackclient.compute.v2.server:UnpauseServer
138139
server_unrescue = openstackclient.compute.v2.server:UnrescueServer

0 commit comments

Comments
 (0)