Bug 1560923

Summary: Bug in api_discovery: admin endpoint is taken from the list instead of public
Product: Red Hat OpenStack Reporter: Sasha Smolyak <ssmolyak>
Component: python-tempestconfAssignee: Chandan Kumar <chkumar>
Status: CLOSED WORKSFORME QA Contact: Martin Kopec <mkopec>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 13.0 (Queens)CC: jschluet, matyoung, ssmolyak, udesale, whayutin
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-06-07 15:32:31 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1533555    

Description Sasha Smolyak 2018-03-27 09:24:00 UTC
Description of problem:
Got error "Failed to establish a new connection: [Errno 113] No route to host
2018-03-27 04:39:56.665 21397 WARNING urllib3.connectionpool [-] Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f2267632fd0>: Failed to establish a new connection: [Errno 113] No route to host',)': /v2.1/extensions: NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f2267632fd0>: Failed to establish a new connection: [Errno 113] No route to host" 
while trying to run 

discover-tempest-config --debug identity.uri $OS_AUTH_URL identity.admin_password  $OS_PASSWORD --create

Turns out that it couldn't establish connection for admin endpoint instead of public, because while trying to find public in the endpoint list, the "discover" function gets "RegionOne" from outside and compares it to "regionOne" (lowercase r) region in the list of endpoints.

When fixed, got another error:
2018-03-27 04:56:15.572 24253 CRITICAL tempest [-] Unhandled error: NoOptionError: No option 'username' in section: 'identity'
2018-03-27 04:56:15.572 24253 ERROR tempest Traceback (most recent call last):
2018-03-27 04:56:15.572 24253 ERROR tempest   File "/usr/bin/discover-tempest-config", line 10, in <module>
2018-03-27 04:56:15.572 24253 ERROR tempest     sys.exit(main())
2018-03-27 04:56:15.572 24253 ERROR tempest   File "/usr/lib/python2.7/site-packages/config_tempest/config_tempest.py", line 1147, in main
2018-03-27 04:56:15.572 24253 ERROR tempest     conf, services)
2018-03-27 04:56:15.572 24253 ERROR tempest   File "/usr/lib/python2.7/site-packages/config_tempest/config_tempest.py", line 684, in create_tempest_users
2018-03-27 04:56:15.572 24253 ERROR tempest     conf.get('identity', 'username'),
2018-03-27 04:56:15.572 24253 ERROR tempest   File "/usr/lib64/python2.7/ConfigParser.py", line 618, in get
2018-03-27 04:56:15.572 24253 ERROR tempest     raise NoOptionError(option, section)
2018-03-27 04:56:15.572 24253 ERROR tempest NoOptionError: No option 'username' in section: 'identity'
2018-03-27 04:56:15.572 24253 ERROR tempest

Version-Release number of selected component (if applicable):
python2-tempestconf-1.1.5-0.20180302162823.852e1c9.el7ost.noarch

How reproducible:
100%

Steps to Reproduce:
1. sudo yum install -y openstack-tempest 
2. source overcloudrc
3. discover-tempest-config --debug identity.uri $OS_AUTH_URL identity.admin_password  $OS_PASSWORD --create 

Actual results:
Fails

Expected results:
Config is built

Additional info:

Comment 1 Chandan Kumar 2018-03-29 15:06:30 UTC
We need to use tripleo-deplpoyer-input.conf flag here:
Please run this command:
discover-tempest-config --deployer-input ~/tempest-deployer-input.conf \
--debug --create identity.uri $OS_AUTH_URL identity.admin_password \
$OS_PASSWORD --create

Comment 2 Matt Young 2018-04-16 16:33:07 UTC
Did this work for you?

Comment 3 Sasha Smolyak 2018-04-30 11:19:27 UTC
No, I'm getting the same error


(overcloud) [stack@undercloud-0 ~]$ discover-tempest-config --deployer-input ~/tempest-deployer-input.conf \
> --debug --create identity.uri $OS_AUTH_URL identity.admin_password \
> $OS_PASSWORD --create
2018-04-30 07:18:10.140 6870 INFO tempest [-] Using tempest config file /etc/tempest/tempest.conf
2018-04-30 07:18:10.271 6870 INFO config_tempest.main [-] Adding options from deployer-input file '/home/stack/tempest-deployer-input.conf'
/usr/lib/python2.7/site-packages/urllib3/connectionpool.py:852: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
2018-04-30 07:18:10.913 6870 INFO tempest.lib.common.rest_client [req-866a9720-b85d-4dd4-840b-592abf5e4f19 ] Request (main): 201 POST https://10.0.0.101:13000//v3/auth/tokens
2018-04-30 07:18:11.221 6870 INFO tempest.lib.common.rest_client [req-3c4ba3c9-976e-4711-b79f-414e1b1517a1 ] Request (main): 200 GET https://10.0.0.101:13000/v3/projects 0.306s
2018-04-30 07:18:13.941 6870 CRITICAL tempest [-] Unhandled error: NoOptionError: No option 'username' in section: 'identity'
2018-04-30 07:18:13.941 6870 ERROR tempest Traceback (most recent call last):
2018-04-30 07:18:13.941 6870 ERROR tempest   File "/usr/bin/discover-tempest-config", line 10, in <module>
2018-04-30 07:18:13.941 6870 ERROR tempest     sys.exit(main())
2018-04-30 07:18:13.941 6870 ERROR tempest   File "/usr/lib/python2.7/site-packages/config_tempest/main.py", line 1065, in main
2018-04-30 07:18:13.941 6870 ERROR tempest     conf, services)
2018-04-30 07:18:13.941 6870 ERROR tempest   File "/usr/lib/python2.7/site-packages/config_tempest/main.py", line 602, in create_tempest_users
2018-04-30 07:18:13.941 6870 ERROR tempest     conf.get('identity', 'username'),
2018-04-30 07:18:13.941 6870 ERROR tempest   File "/usr/lib64/python2.7/ConfigParser.py", line 618, in get
2018-04-30 07:18:13.941 6870 ERROR tempest     raise NoOptionError(option, section)
2018-04-30 07:18:13.941 6870 ERROR tempest NoOptionError: No option 'username' in section: 'identity'
2018-04-30 07:18:13.941 6870 ERROR tempest

Comment 4 Martin Kopec 2018-05-03 08:08:51 UTC
Hi Sasha,

please try this workflow:
1. $ tempest init <workspace>
2. $ cd <workspace>
3. $ discover-tempest-config --deployer-input ~/tempest-deployer-input.conf --debug --create identity.uri $OS_AUTH_URL identity.admin_password $OS_PASSWORD

tempest init creates a workspace which contains default-overrides.conf with default values needed by python-tempestconf. There is a plan to get rid of this dependency and make python-tempestconf to be able to discover it itself, but for now, the file is needed.

Comment 5 Sasha Smolyak 2018-05-13 06:46:40 UTC
The workflow worked for me

Comment 6 Martin Kopec 2018-06-07 15:38:07 UTC
Just a note, deployer file will be loaded automatically in the future, here is the link for the review:
https://review.openstack.org/#/c/566537/

Also we are removing the default-overrides.conf by this review:
https://review.openstack.org/#/c/572418/

When merged, the changes should be available in python-tempestconf-2.0