summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorArtem Goncharov <Artem.goncharov@gmail.com>2020-09-09 19:01:27 +0200
committerArtem Goncharov <Artem.goncharov@gmail.com>2020-10-06 15:04:02 +0200
commit74db8dd65d35b326d3fa1c680b04a668a3f66bdc (patch)
tree64538cb5b433856a00bd015e87195af75fd8360b /openstackclient
parent99b5adf9c65d3cd2e2aa8c40c08a478fae0a49f3 (diff)
downloadpython-openstackclient-74db8dd65d35b326d3fa1c680b04a668a3f66bdc.tar.gz
Switch openstack console log show operation to use OpenStackSDK
A short switch onto SDK for fetching console logs of the server Change-Id: I3f750ea4f13a4e72272aa67ea4506bd7182b13f9
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/console.py19
-rw-r--r--openstackclient/tests/unit/compute/v2/test_console.py79
2 files changed, 88 insertions, 10 deletions
diff --git a/openstackclient/compute/v2/console.py b/openstackclient/compute/v2/console.py
index 110b21b8..f0abaf4c 100644
--- a/openstackclient/compute/v2/console.py
+++ b/openstackclient/compute/v2/console.py
@@ -44,19 +44,18 @@ class ShowConsoleLog(command.Command):
return parser
def take_action(self, parsed_args):
- compute_client = self.app.client_manager.compute
+ compute_client = self.app.client_manager.sdk_connection.compute
- server = utils.find_resource(
- compute_client.servers,
- parsed_args.server,
+ server = compute_client.find_server(
+ name_or_id=parsed_args.server,
+ ignore_missing=False
)
- length = parsed_args.lines
- if length:
- # NOTE(dtroyer): get_console_output() appears to shortchange the
- # output by one line
- length += 1
- data = server.get_console_output(length=length)
+ output = compute_client.get_server_console_output(
+ server.id, length=parsed_args.lines)
+ data = None
+ if output:
+ data = output.get('output', None)
if data and data[-1] != '\n':
data += '\n'
diff --git a/openstackclient/tests/unit/compute/v2/test_console.py b/openstackclient/tests/unit/compute/v2/test_console.py
index 99a14f04..1c6d658b 100644
--- a/openstackclient/tests/unit/compute/v2/test_console.py
+++ b/openstackclient/tests/unit/compute/v2/test_console.py
@@ -17,16 +17,95 @@ from unittest import mock
from openstackclient.compute.v2 import console
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit import utils
class TestConsole(compute_fakes.TestComputev2):
def setUp(self):
super(TestConsole, self).setUp()
+
+ # SDK mock
+ self.app.client_manager.sdk_connection = mock.Mock()
+ self.app.client_manager.sdk_connection.compute = mock.Mock()
+ self.sdk_client = self.app.client_manager.sdk_connection.compute
+ self.sdk_client.find_server = mock.Mock()
+ self.sdk_client.get_server_console_output = mock.Mock()
+
self.servers_mock = self.app.client_manager.compute.servers
self.servers_mock.reset_mock()
+class TestConsoleLog(TestConsole):
+ _server = compute_fakes.FakeServer.create_one_server()
+
+ def setUp(self):
+ super(TestConsoleLog, self).setUp()
+
+ self.sdk_client.find_server.return_value = self._server
+
+ self.cmd = console.ShowConsoleLog(self.app, None)
+
+ def test_show_no_args(self):
+ arglist = [
+ ]
+ verifylist = [
+ ]
+ self.assertRaises(utils.ParserException,
+ self.check_parser,
+ self.cmd,
+ arglist,
+ verifylist)
+
+ def test_show(self):
+ arglist = [
+ 'fake_server'
+ ]
+ verifylist = [
+ ('server', 'fake_server')
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ output = {
+ 'output': '1st line\n2nd line\n'
+ }
+ self.sdk_client.get_server_console_output.return_value = output
+ self.cmd.take_action(parsed_args)
+
+ self.sdk_client.find_server.assert_called_with(
+ name_or_id='fake_server', ignore_missing=False)
+ self.sdk_client.get_server_console_output.assert_called_with(
+ self._server.id,
+ length=None
+ )
+ stdout = self.app.stdout.content
+ self.assertEqual(stdout[0], output['output'])
+
+ def test_show_lines(self):
+ arglist = [
+ 'fake_server',
+ '--lines', '15'
+ ]
+ verifylist = [
+ ('server', 'fake_server'),
+ ('lines', 15)
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ output = {
+ 'output': '1st line\n2nd line'
+ }
+ self.sdk_client.get_server_console_output.return_value = output
+ self.cmd.take_action(parsed_args)
+
+ self.sdk_client.find_server.assert_called_with(
+ name_or_id='fake_server', ignore_missing=False)
+ self.sdk_client.get_server_console_output.assert_called_with(
+ self._server.id,
+ length=15
+ )
+
+
class TestConsoleUrlShow(TestConsole):
def setUp(self):