Openstack CLI tests failed on devstack

The issue is happening because of the devstack is using secure
connection for all the API calls with the self signed certificate.
This certificate is not trusted by the host so all the openstack
client tests are failed. Need to specify the certificate file with
the `--os-cacert` command line parameter to trust the certificate.

Change-Id: I3f2606d1da5fbcf1bf6ec1472748ddeb6906dd79
changes/35/763335/15
Alex Katz 2 years ago committed by Federico Ressi
parent 1eac0e0b9a
commit 53ca561ad8
  1. 2
      tobiko/openstack/keystone/_clouds_file.py
  2. 3
      tobiko/openstack/keystone/_credentials.py
  3. 1
      tobiko/openstack/keystone/_session.py
  4. 20
      tobiko/openstack/openstackclient/_client.py

@ -121,6 +121,7 @@ class CloudsFileKeystoneCredentialsFixture(
username = auth.get('username') or auth.get('user_id')
password = auth.get('password')
cacert = clouds_config.get('cacert')
project_name = (auth.get('project_name') or
auth.get('tenant_namer') or
auth.get('project_id') or
@ -154,6 +155,7 @@ class CloudsFileKeystoneCredentialsFixture(
user_domain_name=user_domain_name,
project_domain_name=project_domain_name,
project_domain_id=project_domain_id,
cacert=cacert,
trust_id=trust_id)
def _get_cloud_name(self):

@ -38,6 +38,7 @@ class KeystoneCredentials(collections.namedtuple(
'user_domain_name',
'project_domain_name',
'project_domain_id',
'cacert',
'trust_id'])):
def to_dict(self):
@ -142,6 +143,7 @@ def keystone_credentials(api_version=None,
user_domain_name=None,
project_domain_name=None,
project_domain_id=None,
cacert=None,
trust_id=None,
cls=KeystoneCredentials) -> KeystoneCredentials:
return cls(api_version=api_version,
@ -153,6 +155,7 @@ def keystone_credentials(api_version=None,
user_domain_name=user_domain_name,
project_domain_name=project_domain_name,
project_domain_id=project_domain_id,
cacert=cacert,
trust_id=trust_id)

@ -63,6 +63,7 @@ class KeystoneSessionFixture(tobiko.SharedFixture):
params = credentials.to_dict()
# api version parameter is not accepted
params.pop('api_version', None)
params.pop('cacert', None)
auth = loader.load_from_options(**params)
self.session = session = _session.Session(auth=auth, verify=False)
http.setup_http_session(session)

@ -55,14 +55,20 @@ def execute(cmd, *args, **kwargs):
def _param_list(*args, **kwargs):
if not any(param in kwargs for param in ['os-token', 'os-username']):
credentials = keystone.get_keystone_credentials()
kwargs['os-auth-url'] = credentials.auth_url
kwargs['os-password'] = credentials.password
kwargs['os-username'] = credentials.username
kwargs['os-project-name'] = credentials.project_name
tmp_auth = {}
tmp_auth['os-auth-url'] = credentials.auth_url
tmp_auth['os-password'] = credentials.password
tmp_auth['os-username'] = credentials.username
tmp_auth['os-cacert'] = credentials.cacert
tmp_auth['os-project-name'] = credentials.project_name
tmp_auth['os-user-domain-name'] = credentials.user_domain_name
tmp_auth['os-project-domain-name'] = credentials.project_domain_name
tmp_auth['os-project-domain-id'] = credentials.project_domain_id
if credentials.api_version == 3:
kwargs['os-user-domain-name'] = credentials.user_domain_name
kwargs['os-project-domain-name'] = credentials.project_domain_name
kwargs['os-identity-api-version'] = credentials.api_version
tmp_auth['os-identity-api-version'] = credentials.api_version
for key, val in tmp_auth.items():
if val is not None:
kwargs[key] = val
arg_list = []
for arg in args:
if len(arg) == 1:

Loading…
Cancel
Save