Added server console output method
Change-Id: I12af4d8a4bc0df3f0377b6403f3ddef760b4615d
This commit is contained in:
parent
73d1fbc61b
commit
8d875a4211
|
@ -62,6 +62,7 @@ Starting, Stopping, etc.
|
||||||
.. automethod:: openstack.compute.v2._proxy.Proxy.unrescue_server
|
.. automethod:: openstack.compute.v2._proxy.Proxy.unrescue_server
|
||||||
.. automethod:: openstack.compute.v2._proxy.Proxy.evacuate_server
|
.. automethod:: openstack.compute.v2._proxy.Proxy.evacuate_server
|
||||||
.. automethod:: openstack.compute.v2._proxy.Proxy.migrate_server
|
.. automethod:: openstack.compute.v2._proxy.Proxy.migrate_server
|
||||||
|
.. automethod:: openstack.compute.v2._proxy.Proxy.get_server_console_output
|
||||||
|
|
||||||
Modifying a Server
|
Modifying a Server
|
||||||
******************
|
******************
|
||||||
|
|
|
@ -775,6 +775,19 @@ class Proxy(proxy2.BaseProxy):
|
||||||
server = self._get_resource(_server.Server, server)
|
server = self._get_resource(_server.Server, server)
|
||||||
server.unshelve(self._session)
|
server.unshelve(self._session)
|
||||||
|
|
||||||
|
def get_server_console_output(self, server, length=None):
|
||||||
|
"""Return the console output for a server.
|
||||||
|
|
||||||
|
:param server: Either the ID of a server or a
|
||||||
|
:class:`~openstack.compute.v2.server.Server` instance.
|
||||||
|
:param length: Optional number of line to fetch from the end of console
|
||||||
|
log. All lines will be returned if this is not specified.
|
||||||
|
:returns: The console output as a dict. Control characters will be
|
||||||
|
escaped to create a valid JSON string.
|
||||||
|
"""
|
||||||
|
server = self._get_resource(_server.Server, server)
|
||||||
|
return server.get_console_output(self._session, length=length)
|
||||||
|
|
||||||
def wait_for_server(self, server, status='ACTIVE', failures=['ERROR'],
|
def wait_for_server(self, server, status='ACTIVE', failures=['ERROR'],
|
||||||
interval=2, wait=120):
|
interval=2, wait=120):
|
||||||
return resource2.wait_for_status(self._session, server, status,
|
return resource2.wait_for_status(self._session, server, status,
|
||||||
|
|
|
@ -340,6 +340,13 @@ class Server(resource2.Resource, metadata.MetadataMixin):
|
||||||
body = {"migrate": None}
|
body = {"migrate": None}
|
||||||
self._action(session, body)
|
self._action(session, body)
|
||||||
|
|
||||||
|
def get_console_output(self, session, length=None):
|
||||||
|
body = {"os-getConsoleOutput": {}}
|
||||||
|
if length is not None:
|
||||||
|
body["os-getConsoleOutput"]["length"] = length
|
||||||
|
resp = self._action(session, body)
|
||||||
|
return resp.json()
|
||||||
|
|
||||||
|
|
||||||
class ServerDetail(Server):
|
class ServerDetail(Server):
|
||||||
base_path = '/servers/detail'
|
base_path = '/servers/detail'
|
||||||
|
|
|
@ -401,6 +401,17 @@ class TestComputeProxy(test_proxy_base2.TestProxyBase):
|
||||||
self.proxy.unshelve_server,
|
self.proxy.unshelve_server,
|
||||||
method_args=["value"])
|
method_args=["value"])
|
||||||
|
|
||||||
|
def test_get_server_output(self):
|
||||||
|
self._verify("openstack.compute.v2.server.Server.get_console_output",
|
||||||
|
self.proxy.get_server_console_output,
|
||||||
|
method_args=["value"],
|
||||||
|
expected_kwargs={"length": None})
|
||||||
|
|
||||||
|
self._verify("openstack.compute.v2.server.Server.get_console_output",
|
||||||
|
self.proxy.get_server_console_output,
|
||||||
|
method_args=["value", 1],
|
||||||
|
expected_kwargs={"length": 1})
|
||||||
|
|
||||||
def test_availability_zones(self):
|
def test_availability_zones(self):
|
||||||
self.verify_list_no_kwargs(self.proxy.availability_zones,
|
self.verify_list_no_kwargs(self.proxy.availability_zones,
|
||||||
az.AvailabilityZone,
|
az.AvailabilityZone,
|
||||||
|
|
|
@ -615,6 +615,29 @@ class TestServer(testtools.TestCase):
|
||||||
self.assertIsNone(res)
|
self.assertIsNone(res)
|
||||||
url = 'servers/IDENTIFIER/action'
|
url = 'servers/IDENTIFIER/action'
|
||||||
body = {"migrate": None}
|
body = {"migrate": None}
|
||||||
|
|
||||||
|
headers = {'Accept': ''}
|
||||||
|
self.sess.post.assert_called_with(
|
||||||
|
url, endpoint_filter=sot.service, json=body, headers=headers)
|
||||||
|
|
||||||
|
def test_get_console_output(self):
|
||||||
|
sot = server.Server(**EXAMPLE)
|
||||||
|
|
||||||
|
res = sot.get_console_output(self.sess)
|
||||||
|
|
||||||
|
self.assertIsNone(res)
|
||||||
|
url = 'servers/IDENTIFIER/action'
|
||||||
|
body = {'os-getConsoleOutput': {}}
|
||||||
|
headers = {'Accept': ''}
|
||||||
|
self.sess.post.assert_called_with(
|
||||||
|
url, endpoint_filter=sot.service, json=body, headers=headers)
|
||||||
|
|
||||||
|
res = sot.get_console_output(self.sess, length=1)
|
||||||
|
|
||||||
|
self.assertIsNone(res)
|
||||||
|
url = 'servers/IDENTIFIER/action'
|
||||||
|
body = {'os-getConsoleOutput': {'length': 1}}
|
||||||
|
|
||||||
headers = {'Accept': ''}
|
headers = {'Accept': ''}
|
||||||
self.sess.post.assert_called_with(
|
self.sess.post.assert_called_with(
|
||||||
url, endpoint_filter=sot.service, json=body, headers=headers)
|
url, endpoint_filter=sot.service, json=body, headers=headers)
|
||||||
|
|
Loading…
Reference in New Issue