Correct list of parameters
[snaps.git] / snaps / test_suite_builder.py
1 # Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
2 #                    and others.  All rights reserved.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at:
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 import logging
17 import unittest
18
19 from snaps.domain.test.flavor_tests import FlavorDomainObjectTests
20 from snaps.domain.test.image_tests import ImageDomainObjectTests
21 from snaps.domain.test.keypair_tests import KeypairDomainObjectTests
22 from snaps.domain.test.network_tests import (
23     SecurityGroupDomainObjectTests, SecurityGroupRuleDomainObjectTests,
24     PortDomainObjectTests, RouterDomainObjectTests,
25     InterfaceRouterDomainObjectTests, NetworkObjectTests, SubnetObjectTests)
26 from snaps.domain.test.project_tests import (
27     ProjectDomainObjectTests, DomainDomainObjectTests,
28     ComputeQuotasDomainObjectTests, NetworkQuotasDomainObjectTests)
29 from snaps.domain.test.role_tests import RoleDomainObjectTests
30 from snaps.domain.test.stack_tests import (
31     StackDomainObjectTests, ResourceDomainObjectTests)
32 from snaps.domain.test.user_tests import UserDomainObjectTests
33 from snaps.domain.test.vm_inst_tests import (
34     VmInstDomainObjectTests, FloatingIpDomainObjectTests)
35 from snaps.openstack.tests.conf.os_credentials_tests import (
36     ProxySettingsUnitTests, OSCredsUnitTests)
37 from snaps.openstack.tests.create_flavor_tests import (
38     CreateFlavorTests, FlavorSettingsUnitTests)
39 from snaps.openstack.tests.create_image_tests import (
40     CreateImageSuccessTests, CreateImageNegativeTests, ImageSettingsUnitTests,
41     CreateMultiPartImageTests)
42 from snaps.openstack.tests.create_instance_tests import (
43     CreateInstanceSingleNetworkTests, CreateInstancePubPrivNetTests,
44     CreateInstanceOnComputeHost, CreateInstanceSimpleTests,
45     FloatingIpSettingsUnitTests, InstanceSecurityGroupTests,
46     VmInstanceSettingsUnitTests, CreateInstancePortManipulationTests,
47     SimpleHealthCheck, CreateInstanceFromThreePartImage,
48     CreateInstanceMockOfflineTests, CreateInstanceTwoNetTests)
49 from snaps.openstack.tests.create_keypairs_tests import (
50     CreateKeypairsTests, KeypairSettingsUnitTests, CreateKeypairsCleanupTests)
51 from snaps.openstack.tests.create_network_tests import (
52     CreateNetworkSuccessTests, NetworkSettingsUnitTests, PortSettingsUnitTests,
53     SubnetSettingsUnitTests, CreateNetworkTypeTests)
54 from snaps.openstack.tests.create_project_tests import (
55     CreateProjectSuccessTests, ProjectSettingsUnitTests,
56     CreateProjectUserTests)
57 from snaps.openstack.tests.create_router_tests import (
58     CreateRouterSuccessTests, CreateRouterNegativeTests,
59     RouterSettingsUnitTests)
60 from snaps.openstack.tests.create_security_group_tests import (
61     CreateSecurityGroupTests, SecurityGroupRuleSettingsUnitTests,
62     SecurityGroupSettingsUnitTests)
63 from snaps.openstack.tests.create_stack_tests import (
64     StackSettingsUnitTests, CreateStackSuccessTests,  CreateStackNegativeTests)
65 from snaps.openstack.tests.create_user_tests import (
66     UserSettingsUnitTests, CreateUserSuccessTests)
67 from snaps.openstack.tests.os_source_file_test import (
68     OSComponentTestCase, OSIntegrationTestCase)
69 from snaps.openstack.utils.tests.glance_utils_tests import (
70     GlanceSmokeTests, GlanceUtilsTests)
71 from snaps.openstack.utils.tests.heat_utils_tests import (
72     HeatUtilsCreateStackTests, HeatSmokeTests)
73 from snaps.openstack.utils.tests.keystone_utils_tests import (
74     KeystoneSmokeTests, KeystoneUtilsTests)
75 from snaps.openstack.utils.tests.neutron_utils_tests import (
76     NeutronSmokeTests, NeutronUtilsNetworkTests, NeutronUtilsSubnetTests,
77     NeutronUtilsRouterTests, NeutronUtilsSecurityGroupTests,
78     NeutronUtilsFloatingIpTests)
79 from snaps.openstack.utils.tests.nova_utils_tests import (
80     NovaSmokeTests, NovaUtilsKeypairTests, NovaUtilsFlavorTests,
81     NovaUtilsInstanceTests)
82 from snaps.provisioning.tests.ansible_utils_tests import (
83     AnsibleProvisioningTests)
84 from snaps.tests.file_utils_tests import FileUtilsTests
85
86 __author__ = 'spisarski'
87
88
89 def add_unit_tests(suite):
90     """
91     Adds tests that do not require external resources
92     :param suite: the unittest.TestSuite object to which to add the tests
93     :return: None as the tests will be adding to the 'suite' parameter object
94     """
95     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(FileUtilsTests))
96     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
97         SecurityGroupRuleSettingsUnitTests))
98     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
99         ProxySettingsUnitTests))
100     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
101         OSCredsUnitTests))
102     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
103         SecurityGroupSettingsUnitTests))
104     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
105         SecurityGroupDomainObjectTests))
106     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
107         SecurityGroupRuleDomainObjectTests))
108     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
109         ImageSettingsUnitTests))
110     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
111         ImageDomainObjectTests))
112     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
113         FlavorSettingsUnitTests))
114     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
115         FlavorDomainObjectTests))
116     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
117         KeypairSettingsUnitTests))
118     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
119         KeypairDomainObjectTests))
120     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
121         UserSettingsUnitTests))
122     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
123         UserDomainObjectTests))
124     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
125         ProjectSettingsUnitTests))
126     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
127         ProjectDomainObjectTests))
128     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
129         DomainDomainObjectTests))
130     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
131         ComputeQuotasDomainObjectTests))
132     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
133         NetworkQuotasDomainObjectTests))
134     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
135         RoleDomainObjectTests))
136     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
137         NetworkSettingsUnitTests))
138     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
139         NetworkObjectTests))
140     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
141         SubnetSettingsUnitTests))
142     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
143         SubnetObjectTests))
144     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
145         PortSettingsUnitTests))
146     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
147         PortDomainObjectTests))
148     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
149         RouterSettingsUnitTests))
150     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
151         RouterDomainObjectTests))
152     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
153         InterfaceRouterDomainObjectTests))
154     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
155         FloatingIpSettingsUnitTests))
156     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
157         VmInstanceSettingsUnitTests))
158     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
159         StackDomainObjectTests))
160     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
161         ResourceDomainObjectTests))
162     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
163         StackSettingsUnitTests))
164     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
165         VmInstDomainObjectTests))
166     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(
167         FloatingIpDomainObjectTests))
168
169
170 def add_openstack_client_tests(suite, os_creds, ext_net_name,
171                                use_keystone=True, log_level=logging.INFO):
172     """
173     Adds tests written to exercise OpenStack client retrieval
174     :param suite: the unittest.TestSuite object to which to add the tests
175     :param os_creds: and instance of OSCreds that holds the credentials
176                      required by OpenStack
177     :param ext_net_name: the name of an external network on the cloud under
178                          test
179     :param use_keystone: when True, tests requiring direct access to Keystone
180                          are added as these need to be running on a host that
181                          has access to the cloud's private network
182     :param log_level: the logging level
183     :return: None as the tests will be adding to the 'suite' parameter object
184     """
185     # Basic connection tests
186     suite.addTest(
187         OSComponentTestCase.parameterize(
188             GlanceSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
189             log_level=log_level))
190
191     if use_keystone:
192         suite.addTest(
193             OSComponentTestCase.parameterize(
194                 KeystoneSmokeTests, os_creds=os_creds,
195                 ext_net_name=ext_net_name, log_level=log_level))
196
197     suite.addTest(
198         OSComponentTestCase.parameterize(
199             NeutronSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
200             log_level=log_level))
201     suite.addTest(
202         OSComponentTestCase.parameterize(
203             NovaSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
204             log_level=log_level))
205     suite.addTest(
206         OSComponentTestCase.parameterize(
207             HeatSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
208             log_level=log_level))
209
210
211 def add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone=True,
212                             image_metadata=None, log_level=logging.INFO):
213     """
214     Adds tests written to exercise all existing OpenStack APIs
215     :param suite: the unittest.TestSuite object to which to add the tests
216     :param os_creds: Instance of OSCreds that holds the credentials
217                      required by OpenStack
218     :param ext_net_name: the name of an external network on the cloud under
219                          test
220     :param use_keystone: when True, tests requiring direct access to Keystone
221                          are added as these need to be running on a host that
222                          has access to the cloud's private network
223     :param image_metadata: dict() object containing metadata for creating an
224                            image with custom config
225                            (see YAML files in examples/image-metadata)
226     :param log_level: the logging level
227     :return: None as the tests will be adding to the 'suite' parameter object
228     """
229     # Tests the OpenStack API calls
230     if use_keystone:
231         suite.addTest(OSComponentTestCase.parameterize(
232             KeystoneUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
233             log_level=log_level))
234         suite.addTest(OSComponentTestCase.parameterize(
235             CreateUserSuccessTests, os_creds=os_creds,
236             ext_net_name=ext_net_name, log_level=log_level))
237         suite.addTest(OSComponentTestCase.parameterize(
238             CreateProjectSuccessTests, os_creds=os_creds,
239             ext_net_name=ext_net_name, log_level=log_level))
240         suite.addTest(OSComponentTestCase.parameterize(
241             CreateProjectUserTests, os_creds=os_creds,
242             ext_net_name=ext_net_name, log_level=log_level))
243
244     suite.addTest(OSComponentTestCase.parameterize(
245         GlanceUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
246         image_metadata=image_metadata,
247         log_level=log_level))
248     suite.addTest(OSComponentTestCase.parameterize(
249         NeutronUtilsNetworkTests, os_creds=os_creds, ext_net_name=ext_net_name,
250         log_level=log_level))
251     suite.addTest(OSComponentTestCase.parameterize(
252         NeutronUtilsSubnetTests, os_creds=os_creds, ext_net_name=ext_net_name,
253         log_level=log_level))
254     suite.addTest(OSComponentTestCase.parameterize(
255         NeutronUtilsRouterTests, os_creds=os_creds, ext_net_name=ext_net_name,
256         log_level=log_level))
257     suite.addTest(OSComponentTestCase.parameterize(
258         NeutronUtilsSecurityGroupTests, os_creds=os_creds,
259         ext_net_name=ext_net_name, log_level=log_level))
260     suite.addTest(OSComponentTestCase.parameterize(
261         NeutronUtilsFloatingIpTests, os_creds=os_creds,
262         ext_net_name=ext_net_name, log_level=log_level))
263     suite.addTest(OSComponentTestCase.parameterize(
264         NovaUtilsKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
265         log_level=log_level))
266     suite.addTest(OSComponentTestCase.parameterize(
267         NovaUtilsFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
268         log_level=log_level))
269     suite.addTest(OSComponentTestCase.parameterize(
270         NovaUtilsInstanceTests, os_creds=os_creds, ext_net_name=ext_net_name,
271         log_level=log_level, image_metadata=image_metadata))
272     suite.addTest(OSComponentTestCase.parameterize(
273         CreateFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
274         log_level=log_level))
275     suite.addTest(OSComponentTestCase.parameterize(
276         HeatUtilsCreateStackTests, os_creds=os_creds,
277         ext_net_name=ext_net_name, log_level=log_level,
278         image_metadata=image_metadata))
279
280
281 def add_openstack_integration_tests(suite, os_creds, ext_net_name,
282                                     use_keystone=True, flavor_metadata=None,
283                                     image_metadata=None, use_floating_ips=True,
284                                     log_level=logging.INFO):
285     """
286     Adds tests written to exercise all long-running OpenStack integration tests
287     meaning they will be creating VM instances and potentially performing some
288     SSH functions through floatingIPs
289     :param suite: the unittest.TestSuite object to which to add the tests
290     :param os_creds: and instance of OSCreds that holds the credentials
291                      required by OpenStack
292     :param ext_net_name: the name of an external network on the cloud under
293                          test
294     :param use_keystone: when True, tests requiring direct access to Keystone
295                          are added as these need to be running on a host that
296                          has access to the cloud's private network
297     :param image_metadata: dict() object containing metadata for creating an
298                            image with custom config
299                            (see YAML files in examples/image-metadata)
300     :param flavor_metadata: dict() object containing the metadata required by
301                             your flavor based on your configuration:
302                             (i.e. {'hw:mem_page_size': 'large'})
303     :param use_floating_ips: when true, all tests requiring Floating IPs will
304                              be added to the suite
305     :param log_level: the logging level
306     :return: None as the tests will be adding to the 'suite' parameter object
307     """
308     # Tests the OpenStack API calls via a creator. If use_keystone, objects
309     # will be created with a custom user and project
310
311     # Creator Object tests
312     suite.addTest(OSIntegrationTestCase.parameterize(
313         CreateSecurityGroupTests, os_creds=os_creds, ext_net_name=ext_net_name,
314         use_keystone=use_keystone,
315         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
316         log_level=log_level))
317     suite.addTest(OSIntegrationTestCase.parameterize(
318         CreateImageSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
319         use_keystone=use_keystone,
320         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
321         log_level=log_level))
322     suite.addTest(OSIntegrationTestCase.parameterize(
323         CreateImageNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
324         use_keystone=use_keystone,
325         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
326         log_level=log_level))
327     suite.addTest(OSIntegrationTestCase.parameterize(
328         CreateMultiPartImageTests, os_creds=os_creds,
329         ext_net_name=ext_net_name, use_keystone=use_keystone,
330         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
331         log_level=log_level))
332     suite.addTest(OSIntegrationTestCase.parameterize(
333         CreateKeypairsTests, os_creds=os_creds, ext_net_name=ext_net_name,
334         use_keystone=use_keystone,
335         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
336         log_level=log_level))
337     suite.addTest(OSIntegrationTestCase.parameterize(
338         CreateKeypairsCleanupTests, os_creds=os_creds,
339         ext_net_name=ext_net_name,
340         use_keystone=use_keystone,
341         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
342         log_level=log_level))
343     suite.addTest(OSIntegrationTestCase.parameterize(
344         CreateNetworkSuccessTests, os_creds=os_creds,
345         ext_net_name=ext_net_name, use_keystone=use_keystone,
346         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
347         log_level=log_level))
348     suite.addTest(OSIntegrationTestCase.parameterize(
349         CreateRouterSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
350         use_keystone=use_keystone,
351         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
352         log_level=log_level))
353     suite.addTest(OSIntegrationTestCase.parameterize(
354         CreateRouterNegativeTests, os_creds=os_creds,
355         ext_net_name=ext_net_name, use_keystone=use_keystone,
356         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
357         log_level=log_level))
358
359     # VM Instances
360     suite.addTest(OSIntegrationTestCase.parameterize(
361         SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name,
362         use_keystone=use_keystone,
363         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
364         log_level=log_level))
365     suite.addTest(OSIntegrationTestCase.parameterize(
366         CreateInstanceTwoNetTests, os_creds=os_creds,
367         ext_net_name=ext_net_name, use_keystone=use_keystone,
368         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
369         log_level=log_level))
370     suite.addTest(OSIntegrationTestCase.parameterize(
371         CreateInstanceSimpleTests, os_creds=os_creds,
372         ext_net_name=ext_net_name, use_keystone=use_keystone,
373         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
374         log_level=log_level))
375     suite.addTest(OSIntegrationTestCase.parameterize(
376         CreateInstancePortManipulationTests, os_creds=os_creds,
377         ext_net_name=ext_net_name, use_keystone=use_keystone,
378         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
379         log_level=log_level))
380     suite.addTest(OSIntegrationTestCase.parameterize(
381         InstanceSecurityGroupTests, os_creds=os_creds,
382         ext_net_name=ext_net_name, use_keystone=use_keystone,
383         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
384         log_level=log_level))
385     suite.addTest(OSIntegrationTestCase.parameterize(
386         CreateInstanceOnComputeHost, os_creds=os_creds,
387         ext_net_name=ext_net_name, use_keystone=use_keystone,
388         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
389         log_level=log_level))
390     suite.addTest(OSIntegrationTestCase.parameterize(
391         CreateInstanceFromThreePartImage, os_creds=os_creds,
392         ext_net_name=ext_net_name, use_keystone=use_keystone,
393         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
394         log_level=log_level))
395     suite.addTest(OSIntegrationTestCase.parameterize(
396         CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
397         use_keystone=use_keystone,
398         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
399         log_level=log_level))
400     suite.addTest(OSIntegrationTestCase.parameterize(
401         CreateStackNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
402         use_keystone=use_keystone,
403         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
404         log_level=log_level))
405
406     if use_floating_ips:
407         suite.addTest(OSIntegrationTestCase.parameterize(
408             CreateInstanceSingleNetworkTests, os_creds=os_creds,
409             ext_net_name=ext_net_name, use_keystone=use_keystone,
410             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
411             log_level=log_level))
412         suite.addTest(OSIntegrationTestCase.parameterize(
413             AnsibleProvisioningTests, os_creds=os_creds,
414             ext_net_name=ext_net_name, use_keystone=use_keystone,
415             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
416             log_level=log_level))
417
418
419 def add_openstack_ci_tests(
420         suite, os_creds, ext_net_name, use_keystone=True, flavor_metadata=None,
421         image_metadata=None, use_floating_ips=True, log_level=logging.INFO):
422     """
423     Adds tests written for a CI server to run the tests to validate code
424     changes
425     :param suite: the unittest.TestSuite object to which to add the tests
426     :param os_creds: and instance of OSCreds that holds the credentials
427                      required by OpenStack
428     :param ext_net_name: the name of an external network on the cloud under
429                          test
430     :param use_keystone: when True, tests requiring direct access to Keystone
431                          are added as these need to be running on a host that
432                          has access to the cloud's private network
433     :param image_metadata: dict() object containing metadata for creating an
434                            image with custom config
435                            (see YAML files in examples/image-metadata)
436     :param flavor_metadata: dict() object containing the metadata required by
437                             your flavor based on your configuration:
438                             (i.e. {'hw:mem_page_size': 'large'})
439     :param use_floating_ips: when true, all tests requiring Floating IPs will
440                              be added to the suite
441     :param log_level: the logging level
442     :return: None as the tests will be adding to the 'suite' parameter object
443     """
444
445     add_unit_tests(suite)
446
447     add_openstack_client_tests(suite, os_creds, ext_net_name, use_keystone,
448                                log_level)
449
450     add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone,
451                             image_metadata, log_level)
452
453     suite.addTest(OSIntegrationTestCase.parameterize(
454         SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name,
455         use_keystone=use_keystone,
456         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
457         log_level=log_level))
458
459     if use_floating_ips:
460         suite.addTest(OSIntegrationTestCase.parameterize(
461             CreateInstanceSingleNetworkTests, os_creds=os_creds,
462             ext_net_name=ext_net_name, use_keystone=use_keystone,
463             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
464             log_level=log_level))
465
466     suite.addTest(OSIntegrationTestCase.parameterize(
467         CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
468         use_keystone=use_keystone,
469         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
470         log_level=log_level))
471     suite.addTest(OSIntegrationTestCase.parameterize(
472         CreateStackNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
473         use_keystone=use_keystone,
474         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
475         log_level=log_level))
476
477
478 def add_openstack_staging_tests(suite, os_creds, ext_net_name,
479                                 log_level=logging.INFO):
480     """
481     Adds tests that are still in development have not been designed to run
482     successfully against all OpenStack pods
483     :param suite: the unittest.TestSuite object to which to add the tests
484     :param os_creds: Instance of OSCreds that holds the credentials
485                     required by OpenStack
486     :param ext_net_name: the name of an external network on the cloud under
487                          test
488     :param log_level: the logging level
489     :return: None as the tests will be adding to the 'suite' parameter object
490     """
491     suite.addTest(OSComponentTestCase.parameterize(
492         CreateNetworkTypeTests, os_creds=os_creds, ext_net_name=ext_net_name,
493         log_level=log_level))
494     suite.addTest(OSComponentTestCase.parameterize(
495         CreateInstanceMockOfflineTests, os_creds=os_creds,
496         ext_net_name=ext_net_name, log_level=log_level))
497     suite.addTest(OSIntegrationTestCase.parameterize(
498             CreateInstancePubPrivNetTests, os_creds=os_creds,
499             ext_net_name=ext_net_name, log_level=log_level))