summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-02-05 22:49:36 +0000
committerGerrit Code Review <review@openstack.org>2016-02-05 22:49:36 +0000
commitfb4240a4b5d49ea2c77b4d442a2a984900e4a700 (patch)
tree6245136f0c5dd4621b9445fa0f28bd7ec4cb8336
parent546398c14bd0019e3723d54333fac71921c88bea (diff)
parent6b3583ab06459dad8c2aa1b762538516047b8b41 (diff)
downloadpython-openstackclient-fb4240a4b5d49ea2c77b4d442a2a984900e4a700.tar.gz
Merge "Add support for triggering an crash dump"
-rw-r--r--doc/source/command-objects/server.rst19
-rw-r--r--doc/source/commands.rst1
-rw-r--r--openstackclient/compute/v2/server.py28
-rw-r--r--openstackclient/tests/compute/v2/test_server.py20
-rw-r--r--releasenotes/notes/bug-1538372-ef3a30298357f972.yaml5
-rw-r--r--setup.cfg1
6 files changed, 74 insertions, 0 deletions
diff --git a/doc/source/command-objects/server.rst b/doc/source/command-objects/server.rst
index fc275971..d50ad37e 100644
--- a/doc/source/command-objects/server.rst
+++ b/doc/source/command-objects/server.rst
@@ -168,6 +168,25 @@ Delete server(s)
Server(s) to delete (name or ID)
+server dump create
+------------------
+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.
+
+.. program:: server dump create
+.. code:: bash
+
+ os server dump create
+ <server> [<server> ...]
+
+.. describe:: <server>
+
+ Server(s) to create dump file (name or ID)
+
server list
-----------
diff --git a/doc/source/commands.rst b/doc/source/commands.rst
index 1c4f84b2..bf5d7035 100644
--- a/doc/source/commands.rst
+++ b/doc/source/commands.rst
@@ -112,6 +112,7 @@ referring to both Compute and Volume quotas.
* ``security group``: (**Compute**, **Network**) - groups of network access rules
* ``security group rule``: (**Compute**, **Network**) - the individual rules that define protocol/IP/port access
* ``server``: (**Compute**) virtual machine instance
+* ``server dump``: (**Compute**) a dump file of a server created by features like kdump
* ``server image``: (**Compute**) saved server disk image
* ``service``: (**Identity**) a cloud service
* ``service provider``: (**Identity**) a resource that consumes assertions from an ``identity provider``
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 = (
diff --git a/releasenotes/notes/bug-1538372-ef3a30298357f972.yaml b/releasenotes/notes/bug-1538372-ef3a30298357f972.yaml
new file mode 100644
index 00000000..e2c2d247
--- /dev/null
+++ b/releasenotes/notes/bug-1538372-ef3a30298357f972.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ Add support for the `server dump create` command
+ [Bug `1538372 <https://bugs.launchpad.net/python-openstackclient/+bug/1538372>`_]
diff --git a/setup.cfg b/setup.cfg
index c4d10007..4cf9622c 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -133,6 +133,7 @@ openstack.compute.v2 =
server_start = openstackclient.compute.v2.server:StartServer
server_stop = openstackclient.compute.v2.server:StopServer
server_suspend = openstackclient.compute.v2.server:SuspendServer
+ server_dump_create = openstackclient.compute.v2.server:CreateServerDump
server_unlock = openstackclient.compute.v2.server:UnlockServer
server_unpause = openstackclient.compute.v2.server:UnpauseServer
server_unrescue = openstackclient.compute.v2.server:UnrescueServer