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:
@@ -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'}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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'})
|
||||
|
||||
@@ -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
|
||||
):
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user