diff --git a/nova/tests/baremetal/db/base.py b/nova/tests/baremetal/db/base.py index f2b9058956cc..37e51fe791dc 100644 --- a/nova/tests/baremetal/db/base.py +++ b/nova/tests/baremetal/db/base.py @@ -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) diff --git a/nova/tests/baremetal/test_driver.py b/nova/tests/baremetal/test_driver.py index c62c01aac138..b12336da0adf 100644 --- a/nova/tests/baremetal/test_driver.py +++ b/nova/tests/baremetal/test_driver.py @@ -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') diff --git a/nova/tests/baremetal/test_volume_driver.py b/nova/tests/baremetal/test_volume_driver.py index dacca6e53dde..e1b81d0b1bdd 100644 --- a/nova/tests/baremetal/test_volume_driver.py +++ b/nova/tests/baremetal/test_volume_driver.py @@ -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) diff --git a/nova/virt/baremetal/db/api.py b/nova/virt/baremetal/db/api.py index 0b8cf781c6f9..3ff533c6cd99 100644 --- a/nova/virt/baremetal/db/api.py +++ b/nova/virt/baremetal/db/api.py @@ -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', diff --git a/nova/virt/baremetal/db/sqlalchemy/session.py b/nova/virt/baremetal/db/sqlalchemy/session.py index 3e562e32a0af..14013669d4e7 100644 --- a/nova/virt/baremetal/db/sqlalchemy/session.py +++ b/nova/virt/baremetal/db/sqlalchemy/session.py @@ -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 diff --git a/nova/virt/baremetal/driver.py b/nova/virt/baremetal/driver.py index e840c4e75153..120a36c3c6a1 100644 --- a/nova/virt/baremetal/driver.py +++ b/nova/virt/baremetal/driver.py @@ -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() diff --git a/nova/virt/baremetal/volume_driver.py b/nova/virt/baremetal/volume_driver.py index bf8e47a63e8c..6708b33ab18d 100644 --- a/nova/virt/baremetal/volume_driver.py +++ b/nova/virt/baremetal/volume_driver.py @@ -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')