Fix unit tests and pep8 errors

Fix various unit tests and pep8 errors.

Signed-off-by: Chuck Short <chuck.short@canonical.com>
This commit is contained in:
Chuck Short
2016-01-01 21:50:38 -05:00
parent d0e509c319
commit 806d5d70cb
5 changed files with 89 additions and 115 deletions

View File

@@ -17,7 +17,6 @@
from nova import exception
from nova import i18n
from nova.virt import configdrive
import os
from oslo_config import cfg
from oslo_log import log as logging
@@ -73,7 +72,7 @@ class LXDContainerConfig(object):
{'instance': instance_name, 'ex': ex},
instance=instance)
def create_container_profile(self, instance, network_info, rescue):
def create_profile(self, instance, network_info, rescue):
"""Create a LXD container profile configuration
:param instance: nova instance object
@@ -113,7 +112,7 @@ class LXDContainerConfig(object):
mem = instance.memory_mb
if mem >= 0:
config['limits.memory'] = 'sMB' % mem
config['limits.memory'] = '%sMB' % mem
config['raw.lxc'] = 'lxc.console.logfile=%s\n' \
% self.container_dir.get_console_path(instance_name)
@@ -122,7 +121,7 @@ class LXDContainerConfig(object):
except Exception as ex:
with excutils.save_and_reraise_exception():
LOG.error(
_LE('Failed to set container resources %(instnace)s: '
_LE('Failed to set container resources %(instance)s: '
'%(ex)s'), {'instance': instance_name, 'ex': ex},
instance=instance)
@@ -207,7 +206,8 @@ class LXDContainerConfig(object):
LOG.debug('_get_container_source called for instance',
instance=instance)
try:
container_source = {'type': 'image', 'alias': str(instance.name)}
container_source = {'type': 'image',
'alias': str(instance.image_ref)}
if container_source is None:
msg = _('Failed to determine container source for %s') \
% instance.name
@@ -227,16 +227,13 @@ class LXDContainerConfig(object):
:param src_path: source path on the house
:param dest_path: destination path on the LXD container
:param vfs_type: dictionary identifier
:param instance: nova instnace object
:param instance: nova instance object
:return: container disk paths
"""
LOG.debug('_configure_disk_path called for instance',
instance=instance)
try:
config = {}
if not os.path.exists(src_path):
return config['vfs_type']
config[vfs_type] = {'path': src_path,
'source': dest_path,
'type': 'disk'}

View File

@@ -79,11 +79,12 @@ class LXDContainerMigrate(object):
if self.session.container_defined(instance.name, instance):
LOG.exception(_LE('Container already migrated'))
self.session.container_stop(instance.name, src_host, instance)
container_ws = self.session.container_migrate(
instance.name, src_host, instance)
container_config = (
self.config.configure_container_migrate(
instance, container_ws, src_host))
# container_ws = self.session.container_migrate(
# instance.name, src_host, instance)
# Temporarily disable since container_migration is broken
# container_config = (
# self.config.configure_container_migrate(
# instance, container_ws, src_host))
self.session.container_init(container_config,
instance, dst_host)

View File

@@ -16,116 +16,101 @@
import ddt
import mock
from nova import exception
from nova import test
from nova.tests.unit import utils as test_utils
from nova_lxd.nova.virt.lxd import config as container_config
from nova_lxd.nova.virt.lxd import config
from nova_lxd.nova.virt.lxd.session import session
from nova_lxd.nova.virt.lxd import utils as container_dir
from nova_lxd.tests import stubs
@ddt.ddt
@mock.patch.object(container_config, 'CONF', stubs.MockConf())
@mock.patch.object(config, 'CONF', stubs.MockConf())
@mock.patch.object(container_dir, 'CONF', stubs.MockConf())
class LXDTestContainerConfig(test.NoDBTestCase):
def setUp(self):
super(LXDTestContainerConfig, self).setUp()
self.container_config = container_config.LXDContainerConfig()
def test_init_config(self):
self.assertEqual({'config': {}, 'devices': {}},
self.container_config._init_container_config())
self.config = config.LXDContainerConfig()
@stubs.annotated_data(
('mem_limit', {'memory_mb': 2048},
{'limits.memory': '2147483648'}),
('both_limits', {'memory_mb': 4096},
{'limits.memory': '4294967296'}),
('test_name', 'name', 'instance-00000001'),
('test_source', 'source', {'type': 'image',
'alias': 'fake_image'}),
('test_devices', 'devices', {})
)
@mock.patch('oslo_utils.fileutils.ensure_tree',
mock.Mock(return_value=None))
@mock.patch('os.mkdir',
mock.Mock(return_value=None))
def test_configure_container_config(self, tag, flavor, expected):
instance = stubs.MockInstance(**flavor)
config = {'raw.lxc': 'lxc.console.logfile=/fake/lxd/root/containers/'
'fake-uuid/console.log\n'}
config.update(expected)
self.assertEqual(
{'config': config},
self.container_config.configure_container_config({},
instance))
def test_configure_network_devices(self):
def test_create_container(self, tag, key, expected):
instance = stubs._fake_instance()
self.assertEqual(None,
self.container_config.configure_network_devices(
{}, instance, network_info=[]))
rescue = False
container_config = self.config.create_container(instance,
rescue)
self.assertEqual(container_config[key], expected)
def test_configure_container_rescuedisk(self):
instance = stubs.MockInstance()
self.assertEqual({
'devices':
{'rescue': {'path': 'mnt',
'source': '/fake/lxd/root/containers/'
'fake-uuid-backup/rootfs',
'type': 'disk'}}},
self.container_config.configure_container_rescuedisk(
{}, instance))
@stubs.annotated_data(
('test_name', 'name', 'instance-00000001'),
('test_source', 'source', {'type': 'image',
'alias': 'fake_image'}),
('test_profile', 'profiles', ['instance-00000001']),
('test_devices', 'devices', {})
)
def test_get_container_config(self, tag, key, expected):
instance = stubs._fake_instance()
rescue = False
container_config = self.config.get_container_config(
instance, rescue)
self.assertEqual(container_config[key], expected)
def test_configure_container_configdrive_wrong_format(self):
instance = stubs.MockInstance()
with mock.patch.object(container_config.CONF, 'config_drive_format',
new='fake-format'):
self.assertRaises(
exception.InstancePowerOnFailure,
self.container_config.configure_container_configdrive,
{}, instance, {})
@stubs.annotated_data(
('test_name', 'name', 'instance-00000001-rescue'),
('test_source', 'source', {'type': 'image',
'alias': 'fake_image'}),
('test_devices', 'devices',
{'rescue': {'path': '/fake/lxd/root/containers/'
'instance-00000001-rescue/rootfs',
'source': 'mnt',
'type': 'disk'}})
)
def test_get_container_config_rescue(self, tag, key, expected):
instance = stubs._fake_instance()
rescue = True
container_config = self.config.get_container_config(
instance, rescue)
self.assertEqual(container_config[key], expected)
@mock.patch('nova.api.metadata.base.InstanceMetadata')
def test_configure_container_configdrive_fail(self, mi):
instance = None
injected_files = mock.Mock()
self.assertRaises(
AttributeError,
self.container_config.configure_container_configdrive,
{}, instance, injected_files)
mi.assert_called_once_with(
instance, content=injected_files, extra_md={})
def test_create_profile(self):
instance = stubs._fake_instance()
rescue = False
network_info = test_utils.get_test_network_info()
config = mock.Mock()
with test.nested(
mock.patch.object(config.LXDContainerConfig,
'_create_config'),
mock.patch.object(config.LXDContainerConfig,
'_create_network'),
mock.patch.object(session.LXDAPISession,
'profile_create')
@mock.patch('nova.api.metadata.base.InstanceMetadata')
@mock.patch('nova.virt.configdrive.ConfigDriveBuilder')
def test_configure_container_configdrive_fail_dir(self, md, mi):
instance = stubs.MockInstance()
injected_files = mock.Mock()
self.assertRaises(
AttributeError,
self.container_config.configure_container_configdrive,
None, instance, injected_files)
md.assert_called_once_with(instance_md=mi.return_value)
(md.return_value.__enter__.return_value
.make_drive.assert_called_once_with(
'/fake/instances/path/fake-uuid/config-drive'))
mi.assert_called_once_with(
instance, content=injected_files, extra_md={})
) as (
mock_create_config,
mock_create_network,
mock_profile_create
):
(self.assertEqual(None,
self.config.create_profile(instance,
network_info,
rescue)))
@mock.patch('nova.api.metadata.base.InstanceMetadata')
@mock.patch('nova.virt.configdrive.ConfigDriveBuilder')
def test_configure_container_configdrive(self, md, mi):
instance = stubs.MockInstance()
injected_files = mock.Mock()
self.assertEqual(
{'devices': {'configdrive':
{'path': 'mnt',
'type': 'disk',
'source': '/fake/instances/path/'
'fake-uuid/config-drive'}}},
self.container_config.configure_container_configdrive(
{}, instance, injected_files))
md.assert_called_once_with(instance_md=mi.return_value)
(md.return_value.__enter__.return_value
.make_drive.assert_called_once_with(
'/fake/instances/path/fake-uuid/config-drive'))
mi.assert_called_once_with(
instance, content=injected_files, extra_md={})
@stubs.annotated_data(
('test_memmoy', 'limits.memory', '512MB')
)
def test_create_config(self, tag, key, expected):
instance = stubs._fake_instance()
instance_name = 'fake_instance'
config = self.config._create_config(instance_name, instance)
self.assertEqual(config[key], expected)
def test_create_container_source(self):
instance = stubs._fake_instance()
config = self.config._get_container_source(instance)
self.assertEqual(config, {'type': 'image', 'alias': 'fake_image'})

View File

@@ -18,7 +18,6 @@ import mock
from nova import test
from nova.virt import fake
from nova_lxd.nova.virt.lxd import config as container_config
from nova_lxd.nova.virt.lxd import container_migrate
from nova_lxd.nova.virt.lxd import container_ops
from nova_lxd.nova.virt.lxd.session import session
@@ -51,8 +50,6 @@ class LXDTestContainerMigrate(test.NoDBTestCase):
'container_defined'),
mock.patch.object(session.LXDAPISession,
'container_stop'),
mock.patch.object(container_config.LXDContainerConfig,
'configure_container_migrate'),
mock.patch.object(session.LXDAPISession,
'container_init'),
mock.patch.object(container_ops.LXDContainerOperations,
@@ -60,7 +57,6 @@ class LXDTestContainerMigrate(test.NoDBTestCase):
) as (
container_defined,
container_stop,
container_migrate,
container_init,
container_start
):

View File

@@ -86,13 +86,8 @@ class LXDTestDriver(test.NoDBTestCase):
True,
self.connection.init_host(None)
)
self.ml.profile_create.assert_called_once_with(
{'name': 'fake_profile'})
@stubs.annotated_data(
('profile_fail', {'profile_list.side_effect': (lxd_exceptions.
APIError('Fake',
500))}),
('no_ping', {'host_ping.return_value': False}),
('ping_fail', {'host_ping.side_effect': (lxd_exceptions.
APIError('Fake',