Move baremetal options to [BAREMETAL] OptGroup

Move all the baremetal options into a new [BAREMETAL] OptGroup,
except for 'baremetal_db_backend', which breaks LazyPluggable if moved.

blueprint general-bare-metal-provisioning-framework

Change-Id: I06f53dcf10b9bbd3fd7cc0725cc6076af3d74d19
This commit is contained in:
Devananda van der Veen 2012-12-21 11:09:48 -08:00
parent 32eb83be79
commit 9ac65bde3a
7 changed files with 58 additions and 36 deletions

View File

@ -24,8 +24,9 @@ from nova.virt.baremetal.db.sqlalchemy import session as bm_session
_DB_CACHE = None
CONF = cfg.CONF
CONF.import_opt('baremetal_sql_connection',
'nova.virt.baremetal.db.sqlalchemy.session')
CONF.import_opt('sql_connection',
'nova.virt.baremetal.db.sqlalchemy.session',
group='baremetal')
class Database(test.Database):
@ -38,11 +39,11 @@ class BMDBTestCase(test.TestCase):
def setUp(self):
super(BMDBTestCase, self).setUp()
self.flags(baremetal_sql_connection='sqlite://')
self.flags(sql_connection='sqlite://', group='baremetal')
global _DB_CACHE
if not _DB_CACHE:
_DB_CACHE = Database(bm_session, bm_migration,
sql_connection=CONF.baremetal_sql_connection,
sql_connection=CONF.baremetal.sql_connection,
sqlite_db=None,
sqlite_clean_db=None)
self.useFixture(_DB_CACHE)

View File

@ -64,14 +64,18 @@ def class_path(class_):
COMMON_FLAGS = dict(
baremetal_sql_connection='sqlite:///:memory:',
baremetal_driver='nova.virt.baremetal.fake.Fake',
power_manager='nova.virt.baremetal.fake.FakePowerManager',
baremetal_vif_driver=class_path(FakeVifDriver),
firewall_driver=class_path(FakeFirewallDriver),
baremetal_volume_driver=class_path(FakeVolumeDriver),
instance_type_extra_specs=['cpu_arch:test'],
)
BAREMETAL_FLAGS = dict(
driver='nova.virt.baremetal.fake.Fake',
host=NODE['service_host'],
instance_type_extra_specs=['cpu_arch:test'],
power_manager='nova.virt.baremetal.fake.FakePowerManager',
sql_connection='sqlite:///:memory:',
vif_driver=class_path(FakeVifDriver),
volume_driver=class_path(FakeVolumeDriver),
group='baremetal',
)
@ -92,6 +96,7 @@ class BaremetalDriverSpawnTestCase(base.Database):
def setUp(self):
super(BaremetalDriverSpawnTestCase, self).setUp()
self.flags(**COMMON_FLAGS)
self.flags(**BAREMETAL_FLAGS)
fake_image.stub_out_image_service(self.stubs)
self.node = _create_baremetal_stuff()
@ -185,5 +190,5 @@ class BaremetalDriverTestCase(test_virt_drivers._VirtDriverTestCase,
self.assertEqual(cap['x'], '123')
self.assertEqual(cap['y'], '456')
self.assertEqual(cap['hypervisor_type'], 'baremetal')
self.assertEqual(cap['baremetal_driver'],
self.assertEqual(cap['driver'],
'nova.virt.baremetal.fake.Fake')

View File

@ -161,6 +161,6 @@ class BareMetalVolumeTestCase(test.TestCase):
self.assertTrue(tid is None)
def test_get_iqn(self):
self.flags(baremetal_iscsi_iqn_prefix='iqn.2012-12.a.b')
self.flags(iscsi_iqn_prefix='iqn.2012-12.a.b', group='baremetal')
iqn = volume_driver._get_iqn('instname', '/dev/vdx')
self.assertEquals('iqn.2012-12.a.b:instname-dev-vdx', iqn)

View File

@ -37,8 +37,8 @@ these objects be simple dictionaries.
:baremetal_db_backend: string to lookup in the list of LazyPluggable backends.
`sqlalchemy` is the only supported backend right now.
:baremetal_sql_connection: string specifying the sqlalchemy connection to use,
like: `sqlite:///var/lib/nova/nova.sqlite`.
:[BAREMETAL] sql_connection: string specifying the sqlalchemy connection to
use, like: `sqlite:///var/lib/nova/nova.sqlite`.
"""
@ -46,6 +46,9 @@ from nova.openstack.common import cfg
from nova import utils
# NOTE(deva): we can't move baremetal_db_backend into an OptGroup yet
# because utils.LazyPluggable doesn't support reading from
# option groups. See bug #1093043.
db_opts = [
cfg.StrOpt('baremetal_db_backend',
default='sqlalchemy',

View File

@ -23,14 +23,19 @@ from nova.db.sqlalchemy import session as nova_session
from nova.openstack.common import cfg
opts = [
cfg.StrOpt('baremetal_sql_connection',
cfg.StrOpt('sql_connection',
default='sqlite:///$state_path/baremetal_$sqlite_db',
help='The SQLAlchemy connection string used to connect to the '
'bare-metal database'),
]
baremetal_group = cfg.OptGroup(name='baremetal',
title='Baremetal Options')
CONF = cfg.CONF
CONF.register_opts(opts)
CONF.register_group(baremetal_group)
CONF.register_opts(opts, baremetal_group)
CONF.import_opt('sqlite_db', 'nova.db.sqlalchemy.session')
CONF.import_opt('state_path', 'nova.config')
@ -55,5 +60,5 @@ def get_engine():
"""Return a SQLAlchemy engine."""
global _ENGINE
if _ENGINE is None:
_ENGINE = nova_session.create_engine(CONF.baremetal_sql_connection)
_ENGINE = nova_session.create_engine(CONF.baremetal.sql_connection)
return _ENGINE

View File

@ -34,16 +34,16 @@ from nova.virt import firewall
from nova.virt.libvirt import imagecache
opts = [
cfg.BoolOpt('baremetal_inject_password',
cfg.BoolOpt('inject_password',
default=True,
help='Whether baremetal compute injects password or not'),
cfg.StrOpt('baremetal_injected_network_template',
cfg.StrOpt('injected_network_template',
default='$pybasedir/nova/virt/baremetal/interfaces.template',
help='Template file for injected network'),
cfg.StrOpt('baremetal_vif_driver',
cfg.StrOpt('vif_driver',
default='nova.virt.baremetal.vif_driver.BareMetalVIFDriver',
help='Baremetal VIF driver.'),
cfg.StrOpt('baremetal_volume_driver',
cfg.StrOpt('volume_driver',
default='nova.virt.baremetal.volume_driver.LibvirtVolumeDriver',
help='Baremetal volume driver.'),
cfg.ListOpt('instance_type_extra_specs',
@ -52,13 +52,13 @@ opts = [
'instance_type_extra_specs for this compute '
'host to advertise. Valid entries are name=value, pairs '
'For example, "key1:val1, key2:val2"'),
cfg.StrOpt('baremetal_driver',
cfg.StrOpt('driver',
default='nova.virt.baremetal.pxe.PXE',
help='Baremetal driver back-end (pxe or tilera)'),
cfg.StrOpt('power_manager',
default='nova.virt.baremetal.ipmi.Ipmi',
help='Baremetal power management method'),
cfg.StrOpt('baremetal_tftp_root',
cfg.StrOpt('tftp_root',
default='/tftpboot',
help='Baremetal compute node\'s tftp root path'),
]
@ -66,8 +66,12 @@ opts = [
LOG = logging.getLogger(__name__)
baremetal_group = cfg.OptGroup(name='baremetal',
title='Baremetal Options')
CONF = cfg.CONF
CONF.register_opts(opts)
CONF.register_group(baremetal_group)
CONF.register_opts(opts, baremetal_group)
DEFAULT_FIREWALL_DRIVER = "%s.%s" % (
firewall.__name__,
@ -100,7 +104,7 @@ def _update_baremetal_state(context, node, instance, state):
def get_power_manager(node, **kwargs):
cls = importutils.import_class(CONF.power_manager)
cls = importutils.import_class(CONF.baremetal.power_manager)
return cls(node, **kwargs)
@ -115,18 +119,18 @@ class BareMetalDriver(driver.ComputeDriver):
super(BareMetalDriver, self).__init__(virtapi)
self.baremetal_nodes = importutils.import_object(
CONF.baremetal_driver)
CONF.baremetal.driver)
self._vif_driver = importutils.import_object(
CONF.baremetal_vif_driver)
CONF.baremetal.vif_driver)
self._firewall_driver = firewall.load_driver(
default=DEFAULT_FIREWALL_DRIVER)
self._volume_driver = importutils.import_object(
CONF.baremetal_volume_driver, virtapi)
CONF.baremetal.volume_driver, virtapi)
self._image_cache_manager = imagecache.ImageCacheManager()
extra_specs = {}
extra_specs["baremetal_driver"] = CONF.baremetal_driver
for pair in CONF.instance_type_extra_specs:
extra_specs["baremetal_driver"] = CONF.baremetal.driver
for pair in CONF.baremetal.instance_type_extra_specs:
keyval = pair.split(':', 1)
keyval[0] = keyval[0].strip()
keyval[1] = keyval[1].strip()

View File

@ -29,18 +29,22 @@ from nova.virt import driver
from nova.virt.libvirt import utils as libvirt_utils
opts = [
cfg.BoolOpt('baremetal_use_unsafe_iscsi',
cfg.BoolOpt('use_unsafe_iscsi',
default=False,
help='Do not set this out of dev/test environments. '
'If a node does not have an fixed PXE IP address, '
'volumes are exported with globally opened ACL'),
cfg.StrOpt('baremetal_iscsi_iqn_prefix',
cfg.StrOpt('iscsi_iqn_prefix',
default='iqn.2010-10.org.openstack.baremetal',
help='iSCSI IQN prefix used in baremetal volume connections.'),
]
baremetal_group = cfg.OptGroup(name='baremetal',
title='Baremetal Options')
CONF = cfg.CONF
CONF.register_opts(opts)
CONF.register_group(baremetal_group)
CONF.register_opts(opts, baremetal_group)
CONF.import_opt('libvirt_volume_drivers', 'nova.virt.libvirt.driver')
@ -172,7 +176,7 @@ def _find_tid(iqn):
def _get_iqn(instance_name, mountpoint):
mp = mountpoint.replace('/', '-').strip('-')
iqn = '%s:%s-%s' % (CONF.baremetal_iscsi_iqn_prefix,
iqn = '%s:%s-%s' % (CONF.baremetal.iscsi_iqn_prefix,
instance_name,
mp)
return iqn
@ -230,7 +234,7 @@ class LibvirtVolumeDriver(VolumeDriver):
ctx = nova_context.get_admin_context()
pxe_ip = bmdb.bm_pxe_ip_get_by_bm_node_id(ctx, node['id'])
if not pxe_ip:
if not CONF.baremetal_use_unsafe_iscsi:
if not CONF.baremetal.use_unsafe_iscsi:
raise exception.NovaException(_(
'No fixed PXE IP is associated to %s') % instance_name)
@ -250,7 +254,7 @@ class LibvirtVolumeDriver(VolumeDriver):
# instance's initiator ip, it allows any initiators
# to connect to the volume. This means other bare-metal
# instances that are not attached the volume can connect
# to the volume. Do not set CONF.baremetal_use_unsafe_iscsi
# to the volume. Do not set CONF.baremetal.use_unsafe_iscsi
# out of dev/test environments.
# TODO(NTTdocomo): support CHAP
_allow_iscsi_tgtadm(tid, 'ALL')