1 ##############################################################################
2 # Copyright (c) 2016 Dan Radez (dradez@redhat.com) (Red Hat)
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
13 from mock import patch
15 from mock import MagicMock
16 from mock import mock_open
18 from apex.common.exceptions import ApexDeployException
19 from apex.common.constants import DEFAULT_OS_VERSION
20 from apex.deploy import deploy_quickstart
21 from apex.deploy import validate_cross_settings
22 from apex.deploy import build_vms
23 from apex.deploy import create_deploy_parser
24 from apex.deploy import validate_deploy_args
25 from apex.deploy import main
27 from nose.tools import (
29 assert_regexp_matches,
33 a_mock_open = mock_open(read_data=None)
36 class TestDeploy(unittest.TestCase):
39 """This method is run once for each class before any tests are run"""
42 def teardown_class(cls):
43 """This method is run once for each class _after_ all tests are run"""
46 """This method is run once before _each_ test method is executed"""
49 """This method is run once after _each_ test method is executed"""
51 def test_deloy_quickstart(self):
52 deploy_quickstart(None, None, None)
54 def test_validate_cross_settings(self):
55 deploy_settings = {'deploy_options': {'dataplane': 'ovs'}}
57 net_settings.enabled_network_list = ['tenant']
58 validate_cross_settings(deploy_settings, net_settings, '')
60 def test_validate_cross_settings_raises(self):
61 deploy_settings = {'deploy_options': {'dataplane': 'notovs'}}
63 net_settings.enabled_network_list = []
64 assert_raises(ApexDeployException,
65 validate_cross_settings,
66 deploy_settings, net_settings, None)
68 @patch('apex.deploy.virt_utils')
69 @patch('apex.deploy.vm_lib')
70 def test_build_vms(self, mock_vm_lib, mock_virt_utils):
71 inventory = {'nodes': [{'memory': '1234',
76 net_sets.enabled_network_list = []
77 build_vms(inventory, net_sets)
79 def test_create_deploy_parser(self):
80 assert_is_instance(create_deploy_parser(), argparse.ArgumentParser)
82 @patch('apex.deploy.os.path')
83 def test_validate_deploy_args(self, mock_os_path):
84 mock_os_path.isfile.return_value = True
86 args.inventory_file = None
88 validate_deploy_args(args)
90 def test_validate_deploy_args_no_virt_no_inv(self):
92 args.inventory_file = 'file_name'
94 assert_raises(ApexDeployException, validate_deploy_args, args)
96 @patch('apex.deploy.os.path')
97 def test_validate_deploy_args_w_virt_raises(self, mock_os_path):
98 mock_os_path.isfile.return_value = False
100 args.inventory_file = None
102 assert_raises(ApexDeployException, validate_deploy_args, args)
104 def test_validate_deploy_args_virt_and_inv_file(self):
106 args.inventory_file = 'file_name'
108 assert_raises(ApexDeployException, validate_deploy_args, args)
110 @patch('apex.deploy.ApexDeployment')
111 @patch('apex.deploy.uc_builder')
112 @patch('apex.deploy.network_data.create_network_data')
113 @patch('apex.deploy.shutil')
114 @patch('apex.deploy.oc_deploy')
115 @patch('apex.deploy.uc_lib')
116 @patch('apex.deploy.build_vms')
117 @patch('apex.deploy.Inventory')
118 @patch('apex.deploy.virt_utils')
119 @patch('apex.deploy.oc_cfg')
120 @patch('apex.deploy.parsers')
121 @patch('apex.deploy.utils')
122 @patch('apex.deploy.NetworkEnvironment')
123 @patch('apex.deploy.NetworkSettings')
124 @patch('apex.deploy.DeploySettings')
125 @patch('apex.deploy.os')
126 @patch('apex.deploy.json')
127 @patch('apex.deploy.jumphost')
128 @patch('apex.deploy.validate_cross_settings')
129 @patch('apex.deploy.validate_deploy_args')
130 @patch('apex.deploy.create_deploy_parser')
131 @patch('builtins.open', a_mock_open, create=True)
132 def test_main(self, mock_parser, mock_val_args, mock_cross_sets,
133 mock_jumphost, mock_json, mock_os,
134 mock_deploy_sets, mock_net_sets, mock_net_env,
135 mock_utils, mock_parsers, mock_oc_cfg,
136 mock_virt_utils, mock_inv, mock_build_vms, mock_uc_lib,
137 mock_oc_deploy, mock_shutil, mock_network_data,
138 mock_uc_builder, mock_deployment):
139 net_sets_dict = {'networks': MagicMock(),
140 'dns_servers': 'test'}
141 ds_opts_dict = {'global_params': MagicMock(),
142 'deploy_options': {'gluon': False,
144 'sdn_controller': 'opendaylight',
150 'os_version': DEFAULT_OS_VERSION,
151 'containers': False}}
152 args = mock_parser.return_value.parse_args.return_value
154 args.quickstart = False
157 net_sets = mock_net_sets.return_value
158 net_sets.enabled_network_list = ['external']
159 net_sets.__getitem__.side_effect = net_sets_dict.__getitem__
160 net_sets.__contains__.side_effect = net_sets_dict.__contains__
161 deploy_sets = mock_deploy_sets.return_value
162 deploy_sets.__getitem__.side_effect = ds_opts_dict.__getitem__
163 deploy_sets.__contains__.side_effect = ds_opts_dict.__contains__
164 mock_parsers.parse_nova_output.return_value = {'testnode1': 'test'}
167 @patch('apex.deploy.validate_cross_settings')
168 @patch('apex.deploy.virt_utils')
169 @patch('apex.deploy.utils')
170 @patch('apex.deploy.Inventory')
171 @patch('apex.deploy.NetworkEnvironment')
172 @patch('apex.deploy.NetworkSettings')
173 @patch('apex.deploy.DeploySettings')
174 @patch('apex.deploy.os')
175 @patch('apex.deploy.create_deploy_parser')
176 @patch('builtins.open', a_mock_open, create=True)
177 def test_main_qs(self, mock_parser, mock_os, mock_deploy,
178 mock_net_sets, mock_net_env, mock_inv, mock_utils,
179 mock_virt_utils, mock_cross):
180 args = mock_parser.return_value.parse_args.return_value
182 args.quickstart = True
186 @patch('apex.deploy.ApexDeployment')
187 @patch('apex.deploy.uc_builder')
188 @patch('apex.deploy.network_data.create_network_data')
189 @patch('apex.deploy.shutil')
190 @patch('apex.deploy.oc_deploy')
191 @patch('apex.deploy.uc_lib')
192 @patch('apex.deploy.build_vms')
193 @patch('apex.deploy.Inventory')
194 @patch('apex.deploy.virt_utils')
195 @patch('apex.deploy.oc_cfg')
196 @patch('apex.deploy.parsers')
197 @patch('apex.deploy.utils')
198 @patch('apex.deploy.NetworkEnvironment')
199 @patch('apex.deploy.NetworkSettings')
200 @patch('apex.deploy.DeploySettings')
201 @patch('apex.deploy.os')
202 @patch('apex.deploy.json')
203 @patch('apex.deploy.jumphost')
204 @patch('apex.deploy.validate_cross_settings')
205 @patch('apex.deploy.validate_deploy_args')
206 @patch('apex.deploy.create_deploy_parser')
207 @patch('builtins.open', a_mock_open, create=True)
208 def test_main_virt(self, mock_parser, mock_val_args, mock_cross_sets,
209 mock_jumphost, mock_json, mock_os,
210 mock_deploy_sets, mock_net_sets, mock_net_env,
211 mock_utils, mock_parsers, mock_oc_cfg,
212 mock_virt_utils, mock_inv, mock_build_vms, mock_uc_lib,
213 mock_oc_deploy, mock_shutil, mock_network_data,
214 mock_uc_builder, mock_deployment):
215 # didn't work yet line 412
216 # net_sets_dict = {'networks': {'admin': {'cidr': MagicMock()}},
217 # 'dns_servers': 'test'}
218 # net_sets_dict['networks']['admin']['cidr'].return_value.version = 6
219 ds_opts_dict = {'global_params': MagicMock(),
220 'deploy_options': {'gluon': False,
222 'sdn_controller': 'opendaylight',
228 'os_version': DEFAULT_OS_VERSION,
229 'containers': False}}
230 args = mock_parser.return_value.parse_args.return_value
232 args.quickstart = False
234 args.virt_default_ram = 10
235 args.ha_enabled = True
236 args.virt_compute_nodes = 1
237 args.virt_compute_ram = None
238 args.virt_default_ram = 12
240 net_sets = mock_net_sets.return_value
241 net_sets.enabled_network_list = ['admin']
242 deploy_sets = mock_deploy_sets.return_value
243 deploy_sets.__getitem__.side_effect = ds_opts_dict.__getitem__
244 deploy_sets.__contains__.side_effect = ds_opts_dict.__contains__
246 args.virt_compute_ram = 16
247 args.virt_default_ram = 10
250 @patch('apex.deploy.ApexDeployment')
251 @patch('apex.deploy.c_builder')
252 @patch('apex.deploy.uc_builder')
253 @patch('apex.deploy.oc_builder')
254 @patch('apex.deploy.network_data.create_network_data')
255 @patch('apex.deploy.shutil')
256 @patch('apex.deploy.oc_deploy')
257 @patch('apex.deploy.uc_lib')
258 @patch('apex.deploy.build_vms')
259 @patch('apex.deploy.Inventory')
260 @patch('apex.deploy.virt_utils')
261 @patch('apex.deploy.oc_cfg')
262 @patch('apex.deploy.parsers')
263 @patch('apex.deploy.utils')
264 @patch('apex.deploy.NetworkEnvironment')
265 @patch('apex.deploy.NetworkSettings')
266 @patch('apex.deploy.DeploySettings')
267 @patch('apex.deploy.os')
268 @patch('apex.deploy.json')
269 @patch('apex.deploy.jumphost')
270 @patch('apex.deploy.validate_cross_settings')
271 @patch('apex.deploy.validate_deploy_args')
272 @patch('apex.deploy.create_deploy_parser')
273 @patch('builtins.open', a_mock_open, create=True)
274 def test_main_virt_containers_upstream(
275 self, mock_parser, mock_val_args, mock_cross_sets, mock_jumphost,
276 mock_json, mock_os, mock_deploy_sets, mock_net_sets, mock_net_env,
277 mock_utils, mock_parsers, mock_oc_cfg, mock_virt_utils,
278 mock_inv, mock_build_vms, mock_uc_lib, mock_oc_deploy,
279 mock_shutil, mock_network_data, mock_oc_builder,
280 mock_uc_builder, mock_c_builder, mock_deployment):
282 ds_opts_dict = {'global_params': MagicMock(),
283 'deploy_options': {'gluon': False,
285 'sdn_controller': 'opendaylight',
291 'os_version': DEFAULT_OS_VERSION,
293 args = mock_parser.return_value.parse_args.return_value
295 args.quickstart = False
297 args.virt_default_ram = 10
298 args.ha_enabled = True
299 args.virt_compute_nodes = 1
300 args.virt_compute_ram = None
301 args.virt_default_ram = 12
303 net_sets = mock_net_sets.return_value
304 net_sets.enabled_network_list = ['admin']
305 deploy_sets = mock_deploy_sets.return_value
306 deploy_sets.__getitem__.side_effect = ds_opts_dict.__getitem__
307 deploy_sets.__contains__.side_effect = ds_opts_dict.__contains__
309 args.virt_compute_ram = 16
310 args.virt_default_ram = 10
312 mock_oc_deploy.prep_image.assert_called()
313 # TODO(trozet) add assertions here with arguments for functions in
316 @patch('apex.deploy.ApexDeployment')
317 @patch('apex.deploy.uc_builder')
318 @patch('apex.deploy.network_data.create_network_data')
319 @patch('apex.deploy.shutil')
320 @patch('apex.deploy.git')
321 @patch('apex.deploy.oc_deploy')
322 @patch('apex.deploy.uc_lib')
323 @patch('apex.deploy.build_vms')
324 @patch('apex.deploy.Inventory')
325 @patch('apex.deploy.virt_utils')
326 @patch('apex.deploy.oc_cfg')
327 @patch('apex.deploy.parsers')
328 @patch('apex.deploy.utils')
329 @patch('apex.deploy.NetworkEnvironment')
330 @patch('apex.deploy.NetworkSettings')
331 @patch('apex.deploy.DeploySettings')
332 @patch('apex.deploy.os')
333 @patch('apex.deploy.json')
334 @patch('apex.deploy.jumphost')
335 @patch('apex.deploy.validate_cross_settings')
336 @patch('apex.deploy.validate_deploy_args')
337 @patch('apex.deploy.create_deploy_parser')
338 @patch('builtins.open', a_mock_open, create=True)
339 def test_main_k8s(self, mock_parser, mock_val_args, mock_cross_sets,
340 mock_jumphost, mock_json, mock_os,
341 mock_deploy_sets, mock_net_sets, mock_net_env,
342 mock_utils, mock_parsers, mock_oc_cfg,
343 mock_virt_utils, mock_inv, mock_build_vms, mock_uc_lib,
344 mock_oc_deploy, mock_git, mock_shutil,
345 mock_network_data, mock_uc_builder, mock_deployment):
346 net_sets_dict = {'networks': MagicMock(),
347 'dns_servers': 'test'}
348 ds_opts_dict = {'global_params': MagicMock(),
349 'deploy_options': {'gluon': False,
351 'sdn_controller': False,
357 'os_version': DEFAULT_OS_VERSION,
358 'containers': False}}
359 args = mock_parser.return_value.parse_args.return_value
361 args.quickstart = False
363 args.upstream = False
364 net_sets = mock_net_sets.return_value
365 net_sets.enabled_network_list = ['external']
366 net_sets.__getitem__.side_effect = net_sets_dict.__getitem__
367 net_sets.__contains__.side_effect = net_sets_dict.__contains__
368 deploy_sets = mock_deploy_sets.return_value
369 deploy_sets.__getitem__.side_effect = ds_opts_dict.__getitem__
370 deploy_sets.__contains__.side_effect = ds_opts_dict.__contains__
371 mock_parsers.parse_nova_output.return_value = {'testnode1': 'test'}