Add NovaConfigClient to read nova.conf

Adds a client that can read nova.conf files from the deployment and
return config values.

Change-Id: Ib7d8f92b0dc54c42e22654ac5e811c52afb30c3c
This commit is contained in:
Artom Lifshitz 2019-01-22 14:47:50 -05:00
parent 9534b5f682
commit 8d64aee671
2 changed files with 49 additions and 0 deletions

View File

@ -13,6 +13,9 @@
# License for the specific language governing permissions and limitations
# under the License.
import six.moves.configparser as configparser
from six import StringIO
from oslo_log import log as logging
from tempest import config
from tempest.lib.common import ssh
@ -57,3 +60,17 @@ class VirshXMLClient(SSHClient):
def capabilities(self):
command = sudo(in_container('nova_libvirt', 'virsh capabilities'))
return self.execute(command)
class NovaConfigClient(SSHClient):
"""A client to obtain config values from nova.conf."""
def _read_nova_conf(self):
command = sudo(in_container('nova_libvirt',
'cat /etc/nova/nova.conf'))
return self.execute(command)
def getopt(self, section, option):
config = configparser.ConfigParser()
config.readfp(StringIO(self._read_nova_conf()))
return config.get(section, option)

View File

@ -0,0 +1,32 @@
# Copyright 2018 Red Hat
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import mock
import textwrap
from whitebox_tempest_plugin.services import clients
from whitebox_tempest_plugin.tests import base
class ConfigClientTestCase(base.WhiteboxPluginTestCase):
def test_getopt(self):
config_client = clients.NovaConfigClient('fake-host')
fake_config = textwrap.dedent("""
[default]
fake-key = fake-value""").strip()
with mock.patch.object(config_client, '_read_nova_conf',
return_value=fake_config):
self.assertEqual(config_client.getopt('default', 'fake-key'),
'fake-value')