summaryrefslogtreecommitdiff
path: root/nova/tests/unit/virt/powervm/test_media.py
diff options
context:
space:
mode:
Diffstat (limited to 'nova/tests/unit/virt/powervm/test_media.py')
-rw-r--r--nova/tests/unit/virt/powervm/test_media.py203
1 files changed, 0 insertions, 203 deletions
diff --git a/nova/tests/unit/virt/powervm/test_media.py b/nova/tests/unit/virt/powervm/test_media.py
deleted file mode 100644
index f98769e0de..0000000000
--- a/nova/tests/unit/virt/powervm/test_media.py
+++ /dev/null
@@ -1,203 +0,0 @@
-# Copyright 2015, 2017 IBM Corp.
-#
-# All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-import fixtures
-import mock
-from oslo_utils.fixture import uuidsentinel
-from pypowervm import const as pvm_const
-from pypowervm.tasks import scsi_mapper as tsk_map
-from pypowervm.tests import test_fixtures as pvm_fx
-from pypowervm.utils import transaction as pvm_tx
-from pypowervm.wrappers import network as pvm_net
-from pypowervm.wrappers import storage as pvm_stg
-from pypowervm.wrappers import virtual_io_server as pvm_vios
-
-from nova import test
-from nova.virt.powervm import media as m
-
-
-class TestConfigDrivePowerVM(test.NoDBTestCase):
- """Unit Tests for the ConfigDrivePowerVM class."""
-
- def setUp(self):
- super(TestConfigDrivePowerVM, self).setUp()
-
- self.apt = self.useFixture(pvm_fx.AdapterFx()).adpt
-
- self.validate_vopt = self.useFixture(fixtures.MockPatch(
- 'pypowervm.tasks.vopt.validate_vopt_repo_exists',
- autospec=True)).mock
- self.validate_vopt.return_value = 'vios_uuid', 'vg_uuid'
-
- @mock.patch('nova.api.metadata.base.InstanceMetadata')
- @mock.patch('nova.virt.configdrive.ConfigDriveBuilder.make_drive')
- def test_crt_cfg_dr_iso(self, mock_mkdrv, mock_meta):
- """Validates that the image creation method works."""
- cfg_dr_builder = m.ConfigDrivePowerVM(self.apt)
- self.assertTrue(self.validate_vopt.called)
- mock_instance = mock.MagicMock()
- mock_instance.uuid = uuidsentinel.inst_id
- mock_files = mock.MagicMock()
- mock_net = mock.MagicMock()
- iso_path = '/tmp/cfgdrv.iso'
- cfg_dr_builder._create_cfg_dr_iso(mock_instance, mock_files, mock_net,
- iso_path)
- self.assertEqual(mock_mkdrv.call_count, 1)
-
- # Test retry iso create
- mock_mkdrv.reset_mock()
- mock_mkdrv.side_effect = [OSError, mock_mkdrv]
- cfg_dr_builder._create_cfg_dr_iso(mock_instance, mock_files, mock_net,
- iso_path)
- self.assertEqual(mock_mkdrv.call_count, 2)
-
- @mock.patch('tempfile.NamedTemporaryFile')
- @mock.patch('nova.virt.powervm.vm.get_pvm_uuid')
- @mock.patch('pypowervm.tasks.scsi_mapper.build_vscsi_mapping')
- @mock.patch('pypowervm.tasks.scsi_mapper.add_map')
- @mock.patch('os.path.getsize')
- @mock.patch('pypowervm.tasks.storage.upload_vopt')
- @mock.patch('nova.virt.powervm.media.ConfigDrivePowerVM.'
- '_create_cfg_dr_iso')
- def test_create_cfg_drv_vopt(self, mock_ccdi, mock_upl, mock_getsize,
- mock_addmap, mock_bldmap, mock_vm_id,
- mock_ntf):
- cfg_dr = m.ConfigDrivePowerVM(self.apt)
- mock_instance = mock.MagicMock()
- mock_instance.uuid = uuidsentinel.inst_id
- mock_upl.return_value = 'vopt', 'f_uuid'
- fh = mock_ntf.return_value.__enter__.return_value
- fh.name = 'iso_path'
- wtsk = mock.create_autospec(pvm_tx.WrapperTask, instance=True)
- ftsk = mock.create_autospec(pvm_tx.FeedTask, instance=True)
- ftsk.configure_mock(wrapper_tasks={'vios_uuid': wtsk})
-
- def test_afs(add_func):
- # Validate the internal add_func
- vio = mock.create_autospec(pvm_vios.VIOS)
- self.assertEqual(mock_addmap.return_value, add_func(vio))
- mock_vm_id.assert_called_once_with(mock_instance)
- mock_bldmap.assert_called_once_with(
- None, vio, mock_vm_id.return_value, 'vopt')
- mock_addmap.assert_called_once_with(vio, mock_bldmap.return_value)
- wtsk.add_functor_subtask.side_effect = test_afs
-
- # calculate expected file name
- expected_file_name = 'cfg_' + mock_instance.uuid.replace('-', '')
- allowed_len = pvm_const.MaxLen.VOPT_NAME - 4 # '.iso' is 4 chars
- expected_file_name = expected_file_name[:allowed_len] + '.iso'
-
- cfg_dr.create_cfg_drv_vopt(
- mock_instance, 'files', 'netinfo', ftsk, admin_pass='pass')
-
- mock_ntf.assert_called_once_with(mode='rb')
- mock_ccdi.assert_called_once_with(mock_instance, 'files', 'netinfo',
- 'iso_path', admin_pass='pass')
- mock_getsize.assert_called_once_with('iso_path')
- mock_upl.assert_called_once_with(self.apt, 'vios_uuid', fh,
- expected_file_name,
- mock_getsize.return_value)
- wtsk.add_functor_subtask.assert_called_once()
-
- def test_sanitize_network_info(self):
- network_info = [{'type': 'lbr'}, {'type': 'pvm_sea'},
- {'type': 'ovs'}]
-
- cfg_dr_builder = m.ConfigDrivePowerVM(self.apt)
-
- resp = cfg_dr_builder._sanitize_network_info(network_info)
- expected_ret = [{'type': 'vif'}, {'type': 'vif'},
- {'type': 'ovs'}]
- self.assertEqual(resp, expected_ret)
-
- @mock.patch('pypowervm.wrappers.storage.VG', autospec=True)
- @mock.patch('pypowervm.tasks.storage.rm_vg_storage', autospec=True)
- @mock.patch('nova.virt.powervm.vm.get_pvm_uuid')
- @mock.patch('pypowervm.tasks.scsi_mapper.gen_match_func', autospec=True)
- @mock.patch('pypowervm.tasks.scsi_mapper.find_maps', autospec=True)
- @mock.patch('pypowervm.wrappers.virtual_io_server.VIOS', autospec=True)
- @mock.patch('taskflow.task.FunctorTask', autospec=True)
- def test_dlt_vopt(self, mock_functask, mock_vios, mock_find_maps, mock_gmf,
- mock_uuid, mock_rmstg, mock_vg):
- cfg_dr = m.ConfigDrivePowerVM(self.apt)
- wtsk = mock.create_autospec(pvm_tx.WrapperTask, instance=True)
- ftsk = mock.create_autospec(pvm_tx.FeedTask, instance=True)
- ftsk.configure_mock(wrapper_tasks={'vios_uuid': wtsk})
-
- # Test with no media to remove
- mock_find_maps.return_value = []
- cfg_dr.dlt_vopt('inst', ftsk)
- mock_uuid.assert_called_once_with('inst')
- mock_gmf.assert_called_once_with(pvm_stg.VOptMedia)
- wtsk.add_functor_subtask.assert_called_once_with(
- tsk_map.remove_maps, mock_uuid.return_value,
- match_func=mock_gmf.return_value)
- ftsk.get_wrapper.assert_called_once_with('vios_uuid')
- mock_find_maps.assert_called_once_with(
- ftsk.get_wrapper.return_value.scsi_mappings,
- client_lpar_id=mock_uuid.return_value,
- match_func=mock_gmf.return_value)
- mock_functask.assert_not_called()
-
- # Test with media to remove
- mock_find_maps.return_value = [mock.Mock(backing_storage=media)
- for media in ['m1', 'm2']]
-
- def test_functor_task(rm_vopt):
- # Validate internal rm_vopt function
- rm_vopt()
- mock_vg.get.assert_called_once_with(
- self.apt, uuid='vg_uuid', parent_type=pvm_vios.VIOS,
- parent_uuid='vios_uuid')
- mock_rmstg.assert_called_once_with(
- mock_vg.get.return_value, vopts=['m1', 'm2'])
- return 'functor_task'
- mock_functask.side_effect = test_functor_task
-
- cfg_dr.dlt_vopt('inst', ftsk)
- mock_functask.assert_called_once()
- ftsk.add_post_execute.assert_called_once_with('functor_task')
-
- def test_mgmt_cna_to_vif(self):
- mock_cna = mock.Mock(spec=pvm_net.CNA, mac="FAD4433ED120")
-
- # Run
- cfg_dr_builder = m.ConfigDrivePowerVM(self.apt)
- vif = cfg_dr_builder._mgmt_cna_to_vif(mock_cna)
-
- # Validate
- self.assertEqual(vif.get('address'), "fa:d4:43:3e:d1:20")
- self.assertEqual(vif.get('id'), 'mgmt_vif')
- self.assertIsNotNone(vif.get('network'))
- self.assertEqual(1, len(vif.get('network').get('subnets')))
- subnet = vif.get('network').get('subnets')[0]
- self.assertEqual(6, subnet.get('version'))
- self.assertEqual('fe80::/64', subnet.get('cidr'))
- ip = subnet.get('ips')[0]
- self.assertEqual('fe80::f8d4:43ff:fe3e:d120', ip.get('address'))
-
- def test_mac_to_link_local(self):
- mac = 'fa:d4:43:3e:d1:20'
- self.assertEqual('fe80::f8d4:43ff:fe3e:d120',
- m.ConfigDrivePowerVM._mac_to_link_local(mac))
-
- mac = '00:00:00:00:00:00'
- self.assertEqual('fe80::0200:00ff:fe00:0000',
- m.ConfigDrivePowerVM._mac_to_link_local(mac))
-
- mac = 'ff:ff:ff:ff:ff:ff'
- self.assertEqual('fe80::fdff:ffff:feff:ffff',
- m.ConfigDrivePowerVM._mac_to_link_local(mac))