Add functions to fetch OS_* env variables from stackrc and overcloudrc files

Change-Id: I27053aae5836820e624d0f5e1140fcb779610736
This commit is contained in:
pkomarov 2019-08-20 00:32:41 +03:00 committed by Federico Ressi
parent f59e2e441f
commit 99f0636433
2 changed files with 32 additions and 21 deletions

View File

@ -20,7 +20,6 @@ from tobiko.shell import sh
from tobiko.tripleo import undercloud from tobiko.tripleo import undercloud
CONF = config.CONF CONF = config.CONF
TRIPLEO_CONF = CONF.tobiko.tripleo
@undercloud.skip_if_missing_undercloud @undercloud.skip_if_missing_undercloud
@ -34,13 +33,15 @@ class UndercloudSshConnectionTest(testtools.TestCase):
self.ssh_client.connect() self.ssh_client.connect()
def test_fetch_undercloud_credentials(self): def test_fetch_undercloud_credentials(self):
self._test_fetch_credentials(rcfile=TRIPLEO_CONF.undercloud_rcfile) env = undercloud.load_undercloud_rcfile()
self._test_fetch_credentials(env=env)
def test_fetch_overcloud_credentials(self): def test_fetch_overcloud_credentials(self):
self._test_fetch_credentials(rcfile=TRIPLEO_CONF.overcloud_rcfile) env = undercloud.load_overcloud_rcfile()
self._test_fetch_credentials(env=env)
def _test_fetch_credentials(self, env):
def _test_fetch_credentials(self, rcfile):
env = self.fetch_os_env(rcfile=rcfile)
self.assertTrue(env['OS_AUTH_URL']) self.assertTrue(env['OS_AUTH_URL'])
self.assertTrue(env.get('OS_USERNAME') or env.get('OS_USER_ID')) self.assertTrue(env.get('OS_USERNAME') or env.get('OS_USER_ID'))
self.assertTrue(env['OS_PASSWORD']) self.assertTrue(env['OS_PASSWORD'])
@ -49,15 +50,6 @@ class UndercloudSshConnectionTest(testtools.TestCase):
env.get('OS_TENANT_ID') or env.get('OS_TENANT_ID') or
env.get('OS_PROJECT_ID')) env.get('OS_PROJECT_ID'))
def fetch_os_env(self, rcfile):
command = ". {rcfile}; env | grep '^OS_'".format(rcfile=rcfile)
result = sh.execute(command, ssh_client=self.ssh_client)
env = {}
for line in result.stdout.splitlines():
name, value = line.split('=')
env[name] = value
return env
def test_execute_command(self): def test_execute_command(self):
result = sh.execute('hostname', ssh_client=self.ssh_client) result = sh.execute('hostname', ssh_client=self.ssh_client)
self.assertTrue(result.stdout.startswith('undercloud-0')) self.assertTrue(result.stdout.startswith('undercloud-0'))

View File

@ -1,8 +1,11 @@
from __future__ import absolute_import from __future__ import absolute_import
import tobiko import tobiko
from tobiko.shell import ssh from tobiko.shell import ssh
from tobiko.shell import sh
from tobiko import config
CONF = config.CONF
def undercloud_ssh_client(): def undercloud_ssh_client():
@ -14,6 +17,24 @@ def undercloud_host_config():
return tobiko.setup_fixture(UndecloudHostConfig) return tobiko.setup_fixture(UndecloudHostConfig)
def fetch_os_env(rcfile):
command = ". {rcfile}; env | grep '^OS_'".format(rcfile=rcfile)
result = sh.execute(command, ssh_client=undercloud_ssh_client())
env = {}
for line in result.stdout.splitlines():
name, value = line.split('=')
env[name] = value
return env
def load_undercloud_rcfile():
return fetch_os_env(rcfile=CONF.tobiko.tripleo.undercloud_rcfile)
def load_overcloud_rcfile():
return fetch_os_env(rcfile=CONF.tobiko.tripleo.overcloud_rcfile)
def has_undercloud(): def has_undercloud():
host_config = undercloud_host_config() host_config = undercloud_host_config()
return bool(host_config.hostname) return bool(host_config.hostname)
@ -33,9 +54,7 @@ class UndecloudHostConfig(tobiko.SharedFixture):
key_filename = None key_filename = None
def setup_fixture(self): def setup_fixture(self):
from tobiko import config self.hostname = CONF.tobiko.tripleo.undercloud_ssh_hostname
conf = config.CONF.tobiko.tripleo self.port = CONF.tobiko.tripleo.undercloud_ssh_port
self.hostname = conf.undercloud_ssh_hostname self.username = CONF.tobiko.tripleo.undercloud_ssh_username
self.port = conf.undercloud_ssh_port self.key_filename = CONF.tobiko.tripleo.ssh_key_filename
self.username = conf.undercloud_ssh_username
self.key_filename = conf.ssh_key_filename