Fix warnings in all snaps-related modules
[functest.git] / functest / opnfv_tests / openstack / snaps / snaps_suite_builder.py
1 #!/usr/bin/env python
2
3 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
4 #
5 # This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10
11 # pylint: disable=missing-docstring
12
13 import logging
14
15 from snaps.openstack.tests.create_flavor_tests import (
16     CreateFlavorTests)
17 from snaps.openstack.tests.create_image_tests import (
18     CreateImageSuccessTests, CreateImageNegativeTests,
19     CreateMultiPartImageTests)
20 from snaps.openstack.tests.create_instance_tests import (
21     CreateInstanceSingleNetworkTests, CreateInstanceOnComputeHost,
22     CreateInstanceSimpleTests, InstanceSecurityGroupTests,
23     CreateInstancePortManipulationTests, SimpleHealthCheck,
24     CreateInstanceFromThreePartImage, CreateInstanceTwoNetTests,
25     CreateInstanceVolumeTests)
26 from snaps.openstack.tests.create_keypairs_tests import (
27     CreateKeypairsTests, CreateKeypairsCleanupTests)
28 from snaps.openstack.tests.create_network_tests import (
29     CreateNetworkSuccessTests)
30 from snaps.openstack.tests.create_project_tests import (
31     CreateProjectSuccessTests, CreateProjectUserTests)
32 from snaps.openstack.tests.create_qos_tests import (
33     CreateQoSTests)
34 from snaps.openstack.tests.create_router_tests import (
35     CreateRouterSuccessTests, CreateRouterNegativeTests)
36 from snaps.openstack.tests.create_security_group_tests import (
37     CreateSecurityGroupTests)
38 from snaps.openstack.tests.create_stack_tests import (
39     CreateStackSuccessTests, CreateStackNegativeTests,
40     CreateStackFlavorTests, CreateStackFloatingIpTests,
41     CreateStackKeypairTests, CreateStackVolumeTests,
42     CreateStackSecurityGroupTests)
43 from snaps.openstack.tests.create_user_tests import (
44     CreateUserSuccessTests)
45 from snaps.openstack.tests.create_volume_tests import (
46     CreateSimpleVolumeSuccessTests,
47     CreateVolumeWithTypeTests, CreateVolumeWithImageTests,
48     CreateSimpleVolumeFailureTests)
49 from snaps.openstack.tests.create_volume_type_tests import (
50     CreateSimpleVolumeTypeSuccessTests,
51     CreateVolumeTypeComplexTests)
52 from snaps.openstack.tests.os_source_file_test import (
53     OSComponentTestCase, OSIntegrationTestCase)
54 from snaps.openstack.utils.tests.cinder_utils_tests import (
55     CinderSmokeTests, CinderUtilsQoSTests, CinderUtilsSimpleVolumeTypeTests,
56     CinderUtilsAddEncryptionTests, CinderUtilsVolumeTypeCompleteTests,
57     CinderUtilsVolumeTests)
58 from snaps.openstack.utils.tests.glance_utils_tests import (
59     GlanceSmokeTests, GlanceUtilsTests)
60 from snaps.openstack.utils.tests.heat_utils_tests import (
61     HeatSmokeTests, HeatUtilsCreateSimpleStackTests,
62     HeatUtilsCreateComplexStackTests, HeatUtilsFlavorTests,
63     HeatUtilsKeypairTests, HeatUtilsSecurityGroupTests)
64 from snaps.openstack.utils.tests.keystone_utils_tests import (
65     KeystoneSmokeTests, KeystoneUtilsTests)
66 from snaps.openstack.utils.tests.neutron_utils_tests import (
67     NeutronSmokeTests, NeutronUtilsNetworkTests, NeutronUtilsSubnetTests,
68     NeutronUtilsRouterTests, NeutronUtilsSecurityGroupTests,
69     NeutronUtilsFloatingIpTests)
70 from snaps.openstack.utils.tests.nova_utils_tests import (
71     NovaSmokeTests, NovaUtilsKeypairTests, NovaUtilsFlavorTests,
72     NovaUtilsInstanceTests, NovaUtilsInstanceVolumeTests)
73 from snaps.provisioning.tests.ansible_utils_tests import (
74     AnsibleProvisioningTests)
75
76
77 def add_openstack_client_tests(suite, os_creds, ext_net_name,
78                                use_keystone=True, log_level=logging.INFO):
79     """
80     Adds tests written to exercise OpenStack client retrieval
81     :param suite: the unittest.TestSuite object to which to add the tests
82     :param os_creds: and instance of OSCreds that holds the credentials
83                      required by OpenStack
84     :param ext_net_name: the name of an external network on the cloud under
85                          test
86     :param use_keystone: when True, tests requiring direct access to Keystone
87                          are added as these need to be running on a host that
88                          has access to the cloud's private network
89     :param log_level: the logging level
90     :return: None as the tests will be adding to the 'suite' parameter object
91     """
92     # Basic connection tests
93     suite.addTest(
94         OSComponentTestCase.parameterize(
95             GlanceSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
96             log_level=log_level))
97
98     if use_keystone:
99         suite.addTest(
100             OSComponentTestCase.parameterize(
101                 KeystoneSmokeTests, os_creds=os_creds,
102                 ext_net_name=ext_net_name, log_level=log_level))
103
104     suite.addTest(
105         OSComponentTestCase.parameterize(
106             NeutronSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
107             log_level=log_level))
108     suite.addTest(
109         OSComponentTestCase.parameterize(
110             NovaSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
111             log_level=log_level))
112     suite.addTest(
113         OSComponentTestCase.parameterize(
114             HeatSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
115             log_level=log_level))
116     suite.addTest(
117         OSComponentTestCase.parameterize(
118             CinderSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name,
119             log_level=log_level))
120
121
122 def add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone=True,
123                             image_metadata=None, log_level=logging.INFO):
124     # pylint: disable=too-many-arguments
125     """
126     Adds tests written to exercise all existing OpenStack APIs
127     :param suite: the unittest.TestSuite object to which to add the tests
128     :param os_creds: Instance of OSCreds that holds the credentials
129                      required by OpenStack
130     :param ext_net_name: the name of an external network on the cloud under
131                          test
132     :param use_keystone: when True, tests requiring direct access to Keystone
133                          are added as these need to be running on a host that
134                          has access to the cloud's private network
135     :param image_metadata: dict() object containing metadata for creating an
136                            image with custom config
137                            (see YAML files in examples/image-metadata)
138     :param log_level: the logging level
139     :return: None as the tests will be adding to the 'suite' parameter object
140     """
141     # Tests the OpenStack API calls
142     if use_keystone:
143         suite.addTest(OSComponentTestCase.parameterize(
144             KeystoneUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
145             log_level=log_level))
146         suite.addTest(OSComponentTestCase.parameterize(
147             CreateUserSuccessTests, os_creds=os_creds,
148             ext_net_name=ext_net_name, log_level=log_level))
149         suite.addTest(OSComponentTestCase.parameterize(
150             CreateProjectSuccessTests, os_creds=os_creds,
151             ext_net_name=ext_net_name, log_level=log_level))
152         suite.addTest(OSComponentTestCase.parameterize(
153             CreateProjectUserTests, os_creds=os_creds,
154             ext_net_name=ext_net_name, log_level=log_level))
155
156     suite.addTest(OSComponentTestCase.parameterize(
157         GlanceUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name,
158         image_metadata=image_metadata,
159         log_level=log_level))
160     suite.addTest(OSComponentTestCase.parameterize(
161         NeutronUtilsNetworkTests, os_creds=os_creds, ext_net_name=ext_net_name,
162         log_level=log_level))
163     suite.addTest(OSComponentTestCase.parameterize(
164         NeutronUtilsSubnetTests, os_creds=os_creds, ext_net_name=ext_net_name,
165         log_level=log_level))
166     suite.addTest(OSComponentTestCase.parameterize(
167         NeutronUtilsRouterTests, os_creds=os_creds, ext_net_name=ext_net_name,
168         log_level=log_level))
169     suite.addTest(OSComponentTestCase.parameterize(
170         NeutronUtilsSecurityGroupTests, os_creds=os_creds,
171         ext_net_name=ext_net_name, log_level=log_level))
172     suite.addTest(OSComponentTestCase.parameterize(
173         NeutronUtilsFloatingIpTests, os_creds=os_creds,
174         ext_net_name=ext_net_name, log_level=log_level))
175     suite.addTest(OSComponentTestCase.parameterize(
176         NovaUtilsKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
177         log_level=log_level))
178     suite.addTest(OSComponentTestCase.parameterize(
179         NovaUtilsFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
180         log_level=log_level))
181     suite.addTest(OSComponentTestCase.parameterize(
182         NovaUtilsInstanceTests, os_creds=os_creds, ext_net_name=ext_net_name,
183         log_level=log_level, image_metadata=image_metadata))
184     suite.addTest(OSComponentTestCase.parameterize(
185         NovaUtilsInstanceVolumeTests, os_creds=os_creds,
186         ext_net_name=ext_net_name, log_level=log_level,
187         image_metadata=image_metadata))
188     suite.addTest(OSComponentTestCase.parameterize(
189         CreateFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
190         log_level=log_level))
191     suite.addTest(OSComponentTestCase.parameterize(
192         HeatUtilsCreateSimpleStackTests, os_creds=os_creds,
193         ext_net_name=ext_net_name, log_level=log_level,
194         image_metadata=image_metadata))
195     suite.addTest(OSComponentTestCase.parameterize(
196         HeatUtilsCreateComplexStackTests, os_creds=os_creds,
197         ext_net_name=ext_net_name, log_level=log_level,
198         image_metadata=image_metadata))
199     suite.addTest(OSComponentTestCase.parameterize(
200         HeatUtilsFlavorTests, os_creds=os_creds,
201         ext_net_name=ext_net_name, log_level=log_level,
202         image_metadata=image_metadata))
203     suite.addTest(OSComponentTestCase.parameterize(
204         HeatUtilsKeypairTests, os_creds=os_creds,
205         ext_net_name=ext_net_name, log_level=log_level,
206         image_metadata=image_metadata))
207     suite.addTest(OSComponentTestCase.parameterize(
208         HeatUtilsSecurityGroupTests, os_creds=os_creds,
209         ext_net_name=ext_net_name, log_level=log_level,
210         image_metadata=image_metadata))
211     suite.addTest(OSComponentTestCase.parameterize(
212         CinderUtilsQoSTests, os_creds=os_creds,
213         ext_net_name=ext_net_name, log_level=log_level,
214         image_metadata=image_metadata))
215     suite.addTest(OSComponentTestCase.parameterize(
216         CinderUtilsVolumeTests, os_creds=os_creds,
217         ext_net_name=ext_net_name, log_level=log_level,
218         image_metadata=image_metadata))
219     suite.addTest(OSComponentTestCase.parameterize(
220         CinderUtilsSimpleVolumeTypeTests, os_creds=os_creds,
221         ext_net_name=ext_net_name, log_level=log_level,
222         image_metadata=image_metadata))
223     suite.addTest(OSComponentTestCase.parameterize(
224         CinderUtilsAddEncryptionTests, os_creds=os_creds,
225         ext_net_name=ext_net_name, log_level=log_level,
226         image_metadata=image_metadata))
227     suite.addTest(OSComponentTestCase.parameterize(
228         CinderUtilsVolumeTypeCompleteTests, os_creds=os_creds,
229         ext_net_name=ext_net_name, log_level=log_level,
230         image_metadata=image_metadata))
231
232
233 def add_openstack_integration_tests(suite, os_creds, ext_net_name,
234                                     use_keystone=True, flavor_metadata=None,
235                                     image_metadata=None, use_floating_ips=True,
236                                     netconf_override=None,
237                                     log_level=logging.INFO):
238     # pylint: disable=too-many-arguments
239     """
240     Adds tests written to exercise all long-running OpenStack integration tests
241     meaning they will be creating VM instances and potentially performing some
242     SSH functions through floatingIPs
243     :param suite: the unittest.TestSuite object to which to add the tests
244     :param os_creds: and instance of OSCreds that holds the credentials
245                      required by OpenStack
246     :param ext_net_name: the name of an external network on the cloud under
247                          test
248     :param use_keystone: when True, tests requiring direct access to Keystone
249                          are added as these need to be running on a host that
250                          has access to the cloud's private network
251     :param image_metadata: dict() object containing metadata for creating an
252                            image with custom config
253                            (see YAML files in examples/image-metadata)
254     :param flavor_metadata: dict() object containing the metadata required by
255                             your flavor based on your configuration:
256                             (i.e. {'hw:mem_page_size': 'large'})
257     :param use_floating_ips: when true, all tests requiring Floating IPs will
258                              be added to the suite
259     :param netconf_override: dict() containing the reconfigured network_type,
260                              physical_network and segmentation_id
261     :param log_level: the logging level
262     :return: None as the tests will be adding to the 'suite' parameter object
263     """
264     # Tests the OpenStack API calls via a creator. If use_keystone, objects
265     # will be created with a custom user and project
266
267     # Creator Object tests
268     suite.addTest(OSIntegrationTestCase.parameterize(
269         CreateSecurityGroupTests, os_creds=os_creds, ext_net_name=ext_net_name,
270         use_keystone=use_keystone,
271         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
272         log_level=log_level))
273     suite.addTest(OSIntegrationTestCase.parameterize(
274         CreateImageSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
275         use_keystone=use_keystone,
276         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
277         log_level=log_level))
278     suite.addTest(OSIntegrationTestCase.parameterize(
279         CreateImageNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
280         use_keystone=use_keystone,
281         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
282         log_level=log_level))
283     suite.addTest(OSIntegrationTestCase.parameterize(
284         CreateMultiPartImageTests, os_creds=os_creds,
285         ext_net_name=ext_net_name, use_keystone=use_keystone,
286         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
287         log_level=log_level))
288     suite.addTest(OSIntegrationTestCase.parameterize(
289         CreateKeypairsTests, os_creds=os_creds, ext_net_name=ext_net_name,
290         use_keystone=use_keystone,
291         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
292         log_level=log_level))
293     suite.addTest(OSIntegrationTestCase.parameterize(
294         CreateKeypairsCleanupTests, os_creds=os_creds,
295         ext_net_name=ext_net_name,
296         use_keystone=use_keystone,
297         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
298         log_level=log_level))
299     suite.addTest(OSIntegrationTestCase.parameterize(
300         CreateNetworkSuccessTests, os_creds=os_creds,
301         ext_net_name=ext_net_name, use_keystone=use_keystone,
302         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
303         log_level=log_level))
304     suite.addTest(OSIntegrationTestCase.parameterize(
305         CreateRouterSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
306         use_keystone=use_keystone,
307         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
308         log_level=log_level))
309     suite.addTest(OSIntegrationTestCase.parameterize(
310         CreateRouterNegativeTests, os_creds=os_creds,
311         ext_net_name=ext_net_name, use_keystone=use_keystone,
312         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
313         log_level=log_level))
314     suite.addTest(OSIntegrationTestCase.parameterize(
315         CreateQoSTests, os_creds=os_creds,
316         ext_net_name=ext_net_name, use_keystone=use_keystone,
317         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
318         log_level=log_level))
319     suite.addTest(OSIntegrationTestCase.parameterize(
320         CreateSimpleVolumeTypeSuccessTests, os_creds=os_creds,
321         ext_net_name=ext_net_name, use_keystone=use_keystone,
322         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
323         log_level=log_level))
324     suite.addTest(OSIntegrationTestCase.parameterize(
325         CreateVolumeTypeComplexTests, os_creds=os_creds,
326         ext_net_name=ext_net_name, use_keystone=use_keystone,
327         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
328         log_level=log_level))
329     suite.addTest(OSIntegrationTestCase.parameterize(
330         CreateSimpleVolumeSuccessTests, os_creds=os_creds,
331         ext_net_name=ext_net_name, use_keystone=use_keystone,
332         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
333         log_level=log_level))
334     suite.addTest(OSIntegrationTestCase.parameterize(
335         CreateSimpleVolumeFailureTests, os_creds=os_creds,
336         ext_net_name=ext_net_name, use_keystone=use_keystone,
337         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
338         log_level=log_level))
339     suite.addTest(OSIntegrationTestCase.parameterize(
340         CreateVolumeWithTypeTests, os_creds=os_creds,
341         ext_net_name=ext_net_name, use_keystone=use_keystone,
342         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
343         log_level=log_level))
344     suite.addTest(OSIntegrationTestCase.parameterize(
345         CreateVolumeWithImageTests, os_creds=os_creds,
346         ext_net_name=ext_net_name, use_keystone=use_keystone,
347         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
348         log_level=log_level))
349
350     # VM Instances
351     suite.addTest(OSIntegrationTestCase.parameterize(
352         SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name,
353         use_keystone=use_keystone,
354         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
355         log_level=log_level))
356     suite.addTest(OSIntegrationTestCase.parameterize(
357         CreateInstanceTwoNetTests, os_creds=os_creds,
358         ext_net_name=ext_net_name, use_keystone=use_keystone,
359         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
360         log_level=log_level))
361     suite.addTest(OSIntegrationTestCase.parameterize(
362         CreateInstanceSimpleTests, os_creds=os_creds,
363         ext_net_name=ext_net_name, use_keystone=use_keystone,
364         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
365         netconf_override=netconf_override, log_level=log_level))
366     suite.addTest(OSIntegrationTestCase.parameterize(
367         CreateInstancePortManipulationTests, os_creds=os_creds,
368         ext_net_name=ext_net_name, use_keystone=use_keystone,
369         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
370         netconf_override=netconf_override, log_level=log_level))
371     suite.addTest(OSIntegrationTestCase.parameterize(
372         InstanceSecurityGroupTests, os_creds=os_creds,
373         ext_net_name=ext_net_name, use_keystone=use_keystone,
374         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
375         netconf_override=netconf_override, log_level=log_level))
376     suite.addTest(OSIntegrationTestCase.parameterize(
377         CreateInstanceOnComputeHost, os_creds=os_creds,
378         ext_net_name=ext_net_name, use_keystone=use_keystone,
379         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
380         netconf_override=netconf_override, log_level=log_level))
381     suite.addTest(OSIntegrationTestCase.parameterize(
382         CreateInstanceFromThreePartImage, os_creds=os_creds,
383         ext_net_name=ext_net_name, use_keystone=use_keystone,
384         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
385         netconf_override=netconf_override, log_level=log_level))
386     suite.addTest(OSIntegrationTestCase.parameterize(
387         CreateInstanceVolumeTests, os_creds=os_creds,
388         ext_net_name=ext_net_name, use_keystone=use_keystone,
389         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
390         netconf_override=netconf_override, log_level=log_level))
391     suite.addTest(OSIntegrationTestCase.parameterize(
392         CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name,
393         use_keystone=use_keystone,
394         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
395         log_level=log_level))
396     suite.addTest(OSIntegrationTestCase.parameterize(
397         CreateStackVolumeTests, os_creds=os_creds, ext_net_name=ext_net_name,
398         use_keystone=use_keystone,
399         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
400         log_level=log_level))
401     suite.addTest(OSIntegrationTestCase.parameterize(
402         CreateStackFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name,
403         use_keystone=use_keystone,
404         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
405         log_level=log_level))
406     suite.addTest(OSIntegrationTestCase.parameterize(
407         CreateStackKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name,
408         use_keystone=use_keystone,
409         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
410         log_level=log_level))
411     suite.addTest(OSIntegrationTestCase.parameterize(
412         CreateStackSecurityGroupTests, os_creds=os_creds,
413         ext_net_name=ext_net_name, use_keystone=use_keystone,
414         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
415         log_level=log_level))
416     suite.addTest(OSIntegrationTestCase.parameterize(
417         CreateStackNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name,
418         use_keystone=use_keystone,
419         flavor_metadata=flavor_metadata, image_metadata=image_metadata,
420         log_level=log_level))
421
422     if use_floating_ips:
423         suite.addTest(OSIntegrationTestCase.parameterize(
424             CreateInstanceSingleNetworkTests, os_creds=os_creds,
425             ext_net_name=ext_net_name, use_keystone=use_keystone,
426             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
427             log_level=log_level))
428         suite.addTest(OSIntegrationTestCase.parameterize(
429             CreateStackFloatingIpTests, os_creds=os_creds,
430             ext_net_name=ext_net_name, use_keystone=use_keystone,
431             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
432             log_level=log_level))
433         suite.addTest(OSIntegrationTestCase.parameterize(
434             AnsibleProvisioningTests, os_creds=os_creds,
435             ext_net_name=ext_net_name, use_keystone=use_keystone,
436             flavor_metadata=flavor_metadata, image_metadata=image_metadata,
437             log_level=log_level))