Skip to content

Commit 2dd5393

Browse files
committed
Use os-cloud instead of OS env vars for functional tests
In order to support switching auth contexts, such as for registered_limits which take a system scoped token, switch the functional tests to using the --os-cloud command line parameter. However, honor the OS_CLOUD env var as a way that someone can select a different cloud, including 'envvars', to use. Use devstack-system-admin cloud for limit tests Keystone requires these to have system scope now. Change-Id: Ia81eebd3e00ae986cf3ba7e3d98f3e8a1647b622
1 parent 2ab3396 commit 2dd5393

6 files changed

Lines changed: 87 additions & 51 deletions

File tree

openstackclient/tests/functional/base.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
FUNCTIONAL_DIR = os.path.normpath(os.path.join(COMMON_DIR, '..'))
2525
ROOT_DIR = os.path.normpath(os.path.join(FUNCTIONAL_DIR, '..'))
2626
EXAMPLE_DIR = os.path.join(ROOT_DIR, 'examples')
27+
ADMIN_CLOUD = os.environ.get('OS_ADMIN_CLOUD', 'devstack-admin')
2728

2829

2930
def execute(cmd, fail_ok=False, merge_stderr=False):
@@ -59,9 +60,11 @@ class TestCase(testtools.TestCase):
5960
delimiter_line = re.compile('^\+\-[\+\-]+\-\+$')
6061

6162
@classmethod
62-
def openstack(cls, cmd, fail_ok=False):
63+
def openstack(cls, cmd, cloud=ADMIN_CLOUD, fail_ok=False):
6364
"""Executes openstackclient command for the given action."""
64-
return execute('openstack ' + cmd, fail_ok=fail_ok)
65+
return execute(
66+
'openstack --os-cloud={cloud} '.format(cloud=cloud) +
67+
cmd, fail_ok=fail_ok)
6568

6669
@classmethod
6770
def get_openstack_configuration_value(cls, configuration):

openstackclient/tests/functional/identity/v3/common.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020

2121
BASIC_LIST_HEADERS = ['ID', 'Name']
22+
SYSTEM_CLOUD = os.environ.get('OS_SYSTEM_CLOUD', 'devstack-system-admin')
2223

2324

2425
class IdentityTests(base.TestCase):
@@ -341,15 +342,17 @@ def _create_dummy_registered_limit(self, add_clean_up=True):
341342
'registered limit create'
342343
' --service %(service_name)s'
343344
' --default-limit %(default_limit)s'
344-
' %(resource_name)s' % params
345+
' %(resource_name)s' % params,
346+
cloud=SYSTEM_CLOUD
345347
)
346348
items = self.parse_show(raw_output)
347349
registered_limit_id = self._extract_value_from_items('id', items)
348350

349351
if add_clean_up:
350352
self.addCleanup(
351353
self.openstack,
352-
'registered limit delete %s' % registered_limit_id
354+
'registered limit delete %s' % registered_limit_id,
355+
cloud=SYSTEM_CLOUD
353356
)
354357

355358
self.assert_show_fields(items, self.REGISTERED_LIMIT_FIELDS)
@@ -365,7 +368,8 @@ def _create_dummy_limit(self, add_clean_up=True):
365368
registered_limit_id = self._create_dummy_registered_limit()
366369

367370
raw_output = self.openstack(
368-
'registered limit show %s' % registered_limit_id
371+
'registered limit show %s' % registered_limit_id,
372+
cloud=SYSTEM_CLOUD
369373
)
370374
items = self.parse_show(raw_output)
371375
resource_name = self._extract_value_from_items('resource_name', items)
@@ -389,13 +393,17 @@ def _create_dummy_limit(self, add_clean_up=True):
389393
' --project %(project_id)s'
390394
' --service %(service_id)s'
391395
' --resource-limit %(resource_limit)s'
392-
' %(resource_name)s' % params
396+
' %(resource_name)s' % params,
397+
cloud=SYSTEM_CLOUD
393398
)
394399
items = self.parse_show(raw_output)
395400
limit_id = self._extract_value_from_items('id', items)
396401

397402
if add_clean_up:
398-
self.addCleanup(self.openstack, 'limit delete %s' % limit_id)
403+
self.addCleanup(
404+
self.openstack, 'limit delete %s' % limit_id,
405+
cloud=SYSTEM_CLOUD
406+
)
399407

400408
self.assert_show_fields(items, self.LIMIT_FIELDS)
401409
return limit_id

openstackclient/tests/functional/identity/v3/test_limit.py

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,22 @@
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
1212

13+
import os
14+
1315
from tempest.lib.common.utils import data_utils
1416

1517
from openstackclient.tests.functional.identity.v3 import common
1618

19+
SYSTEM_CLOUD = os.environ.get('OS_SYSTEM_CLOUD', 'devstack-system-admin')
20+
1721

1822
class LimitTestCase(common.IdentityTests):
1923

2024
def test_limit_create_with_service_name(self):
2125
registered_limit_id = self._create_dummy_registered_limit()
2226
raw_output = self.openstack(
23-
'registered limit show %s' % registered_limit_id
27+
'registered limit show %s' % registered_limit_id,
28+
cloud=SYSTEM_CLOUD
2429
)
2530
items = self.parse_show(raw_output)
2631
service_id = self._extract_value_from_items('service_id', items)
@@ -46,18 +51,24 @@ def test_limit_create_with_service_name(self):
4651
' --project %(project_id)s'
4752
' --service %(service_name)s'
4853
' --resource-limit %(resource_limit)s'
49-
' %(resource_name)s' % params
54+
' %(resource_name)s' % params,
55+
cloud=SYSTEM_CLOUD
5056
)
5157
items = self.parse_show(raw_output)
5258
limit_id = self._extract_value_from_items('id', items)
53-
self.addCleanup(self.openstack, 'limit delete %s' % limit_id)
59+
self.addCleanup(
60+
self.openstack,
61+
'limit delete %s' % limit_id,
62+
cloud=SYSTEM_CLOUD
63+
)
5464

5565
self.assert_show_fields(items, self.LIMIT_FIELDS)
5666

5767
def test_limit_create_with_project_name(self):
5868
registered_limit_id = self._create_dummy_registered_limit()
5969
raw_output = self.openstack(
60-
'registered limit show %s' % registered_limit_id
70+
'registered limit show %s' % registered_limit_id,
71+
cloud=SYSTEM_CLOUD
6172
)
6273
items = self.parse_show(raw_output)
6374
service_id = self._extract_value_from_items('service_id', items)
@@ -80,11 +91,16 @@ def test_limit_create_with_project_name(self):
8091
' --project %(project_name)s'
8192
' --service %(service_name)s'
8293
' --resource-limit %(resource_limit)s'
83-
' %(resource_name)s' % params
94+
' %(resource_name)s' % params,
95+
cloud=SYSTEM_CLOUD
8496
)
8597
items = self.parse_show(raw_output)
8698
limit_id = self._extract_value_from_items('id', items)
87-
self.addCleanup(self.openstack, 'limit delete %s' % limit_id)
99+
self.addCleanup(
100+
self.openstack,
101+
'limit delete %s' % limit_id,
102+
cloud=SYSTEM_CLOUD
103+
)
88104

89105
self.assert_show_fields(items, self.LIMIT_FIELDS)
90106
registered_limit_id = self._create_dummy_registered_limit()
@@ -107,7 +123,8 @@ def test_limit_create_with_options(self):
107123
raw_output = self.openstack(
108124
'registered limit set'
109125
' %(registered_limit_id)s'
110-
' --region %(region_id)s' % params
126+
' --region %(region_id)s' % params,
127+
cloud=SYSTEM_CLOUD
111128
)
112129
items = self.parse_show(raw_output)
113130
service_id = self._extract_value_from_items('service_id', items)
@@ -134,17 +151,25 @@ def test_limit_create_with_options(self):
134151
' --resource-limit %(resource_limit)s'
135152
' --region %(region_id)s'
136153
' --description %(description)s'
137-
' %(resource_name)s' % params
154+
' %(resource_name)s' % params,
155+
cloud=SYSTEM_CLOUD
138156
)
139157
items = self.parse_show(raw_output)
140158
limit_id = self._extract_value_from_items('id', items)
141-
self.addCleanup(self.openstack, 'limit delete %s' % limit_id)
159+
self.addCleanup(
160+
self.openstack,
161+
'limit delete %s' % limit_id,
162+
cloud=SYSTEM_CLOUD
163+
)
142164

143165
self.assert_show_fields(items, self.LIMIT_FIELDS)
144166

145167
def test_limit_show(self):
146168
limit_id = self._create_dummy_limit()
147-
raw_output = self.openstack('limit show %s' % limit_id)
169+
raw_output = self.openstack(
170+
'limit show %s' % limit_id,
171+
cloud=SYSTEM_CLOUD
172+
)
148173
items = self.parse_show(raw_output)
149174
self.assert_show_fields(items, self.LIMIT_FIELDS)
150175

@@ -159,7 +184,8 @@ def test_limit_set_description(self):
159184
raw_output = self.openstack(
160185
'limit set'
161186
' --description %(description)s'
162-
' %(limit_id)s' % params
187+
' %(limit_id)s' % params,
188+
cloud=SYSTEM_CLOUD
163189
)
164190
items = self.parse_show(raw_output)
165191
self.assert_show_fields(items, self.LIMIT_FIELDS)
@@ -175,18 +201,21 @@ def test_limit_set_resource_limit(self):
175201
raw_output = self.openstack(
176202
'limit set'
177203
' --resource-limit %(resource_limit)s'
178-
' %(limit_id)s' % params
204+
' %(limit_id)s' % params,
205+
cloud=SYSTEM_CLOUD
179206
)
180207
items = self.parse_show(raw_output)
181208
self.assert_show_fields(items, self.LIMIT_FIELDS)
182209

183210
def test_limit_list(self):
184211
self._create_dummy_limit()
185-
raw_output = self.openstack('limit list')
212+
raw_output = self.openstack('limit list', cloud=SYSTEM_CLOUD)
186213
items = self.parse_listing(raw_output)
187214
self.assert_table_structure(items, self.LIMIT_LIST_HEADERS)
188215

189216
def test_limit_delete(self):
190217
limit_id = self._create_dummy_limit(add_clean_up=False)
191-
raw_output = self.openstack('limit delete %s' % limit_id)
218+
raw_output = self.openstack(
219+
'limit delete %s' % limit_id,
220+
cloud=SYSTEM_CLOUD)
192221
self.assertEqual(0, len(raw_output))

openstackclient/tests/functional/identity/v3/test_registered_limit.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,14 @@
1010
# License for the specific language governing permissions and limitations
1111
# under the License.
1212

13+
import os
14+
1315
from tempest.lib.common.utils import data_utils
1416

1517
from openstackclient.tests.functional.identity.v3 import common
1618

19+
SYSTEM_CLOUD = os.environ.get('OS_SYSTEM_CLOUD', 'devstack-system-admin')
20+
1721

1822
class RegisteredLimitTestCase(common.IdentityTests):
1923

@@ -37,7 +41,8 @@ def test_registered_limit_create_with_service_id(self):
3741
'service_id': service_id,
3842
'default_limit': 10,
3943
'resource_name': 'cores'
40-
}
44+
},
45+
cloud=SYSTEM_CLOUD
4146
)
4247
items = self.parse_show(raw_output)
4348
registered_limit_id = self._extract_value_from_items('id', items)
@@ -46,7 +51,8 @@ def test_registered_limit_create_with_service_id(self):
4651
'registered limit delete'
4752
' %(registered_limit_id)s' % {
4853
'registered_limit_id': registered_limit_id
49-
}
54+
},
55+
cloud=SYSTEM_CLOUD
5056
)
5157

5258
self.assert_show_fields(items, self.REGISTERED_LIMIT_FIELDS)
@@ -68,15 +74,17 @@ def test_registered_limit_create_with_options(self):
6874
' --region %(region_id)s'
6975
' --service %(service_name)s'
7076
' --default-limit %(default_limit)s'
71-
' %(resource_name)s' % params
77+
' %(resource_name)s' % params,
78+
cloud=SYSTEM_CLOUD
7279
)
7380
items = self.parse_show(raw_output)
7481
registered_limit_id = self._extract_value_from_items('id', items)
7582
self.addCleanup(
7683
self.openstack,
7784
'registered limit delete %(registered_limit_id)s' % {
7885
'registered_limit_id': registered_limit_id
79-
}
86+
},
87+
cloud=SYSTEM_CLOUD
8088
)
8189

8290
self.assert_show_fields(items, self.REGISTERED_LIMIT_FIELDS)
@@ -102,7 +110,8 @@ def test_registered_limit_set_region_id(self):
102110
raw_output = self.openstack(
103111
'registered limit set'
104112
' %(registered_limit_id)s'
105-
' --region %(region_id)s' % params
113+
' --region %(region_id)s' % params,
114+
cloud=SYSTEM_CLOUD
106115
)
107116
items = self.parse_show(raw_output)
108117
self.assert_show_fields(items, self.REGISTERED_LIMIT_FIELDS)
@@ -116,7 +125,8 @@ def test_registered_limit_set_description(self):
116125
raw_output = self.openstack(
117126
'registered limit set'
118127
' %(registered_limit_id)s'
119-
' --description \'%(description)s\'' % params
128+
' --description \'%(description)s\'' % params,
129+
cloud=SYSTEM_CLOUD
120130
)
121131
items = self.parse_show(raw_output)
122132
self.assert_show_fields(items, self.REGISTERED_LIMIT_FIELDS)
@@ -131,7 +141,8 @@ def test_registered_limit_set_service(self):
131141
raw_output = self.openstack(
132142
'registered limit set'
133143
' %(registered_limit_id)s'
134-
' --service %(service)s' % params
144+
' --service %(service)s' % params,
145+
cloud=SYSTEM_CLOUD
135146
)
136147
items = self.parse_show(raw_output)
137148
self.assert_show_fields(items, self.REGISTERED_LIMIT_FIELDS)
@@ -145,7 +156,8 @@ def test_registered_limit_set_default_limit(self):
145156
raw_output = self.openstack(
146157
'registered limit set'
147158
' %(registered_limit_id)s'
148-
' --default-limit %(default_limit)s' % params
159+
' --default-limit %(default_limit)s' % params,
160+
cloud=SYSTEM_CLOUD
149161
)
150162
items = self.parse_show(raw_output)
151163
self.assert_show_fields(items, self.REGISTERED_LIMIT_FIELDS)
@@ -160,7 +172,8 @@ def test_registered_limit_set_resource_name(self):
160172
raw_output = self.openstack(
161173
'registered limit set'
162174
' %(registered_limit_id)s'
163-
' --resource-name %(resource_name)s' % params
175+
' --resource-name %(resource_name)s' % params,
176+
cloud=SYSTEM_CLOUD
164177
)
165178
items = self.parse_show(raw_output)
166179
self.assert_show_fields(items, self.REGISTERED_LIMIT_FIELDS)
@@ -179,6 +192,7 @@ def test_registered_limit_delete(self):
179192
'registered limit delete'
180193
' %(registered_limit_id)s' % {
181194
'registered_limit_id': registered_limit_id
182-
}
195+
},
196+
cloud=SYSTEM_CLOUD
183197
)
184198
self.assertEqual(0, len(raw_output))

openstackclient/tests/functional/run_stestr.sh

Lines changed: 0 additions & 16 deletions
This file was deleted.

tox.ini

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,22 +70,20 @@ whitelist_externals = stestr
7070
[testenv:functional]
7171
setenv = OS_TEST_PATH=./openstackclient/tests/functional
7272
passenv = OS_*
73-
whitelist_externals = openstackclient/tests/functional/run_stestr.sh
7473
commands =
75-
{toxinidir}/openstackclient/tests/functional/run_stestr.sh {posargs}
74+
stestr run {posargs}
7675

7776
[testenv:functional-tips]
7877
setenv = OS_TEST_PATH=./openstackclient/tests/functional
7978
passenv = OS_*
80-
whitelist_externals = openstackclient/tests/functional/run_stestr.sh
8179
commands =
8280
pip install -q -U -e "git+file://{toxinidir}/../cliff#egg=cliff"
8381
pip install -q -U -e "git+file://{toxinidir}/../keystoneauth#egg=keystoneauth"
8482
pip install -q -U -e "git+file://{toxinidir}/../osc-lib#egg=osc_lib"
8583
pip install -q -U -e "git+file://{toxinidir}/../os-client-config#egg=os_client_config"
8684
pip install -q -U -e "git+file://{toxinidir}/../openstacksdk#egg=openstacksdk"
8785
pip freeze
88-
{toxinidir}/openstackclient/tests/functional/run_stestr.sh {posargs}
86+
stestr run {posargs}
8987

9088
[testenv:venv]
9189
basepython = python3

0 commit comments

Comments
 (0)