Move network_driver into new nova.network.driver

Add a new load_network_driver() function which constrains the use of the
network_driver option and move the option into nova.network.driver.

blueprint: scope-config-opts
Change-Id: I0a839765890093dc871b48435cfd113e0f8e46c4
This commit is contained in:
Mark McLoughlin 2012-12-12 08:12:11 +00:00
parent 06f0e45712
commit 19558abd2b
5 changed files with 50 additions and 18 deletions

View File

@ -17,11 +17,7 @@
# under the License. # under the License.
from nova import manager from nova import manager
from nova.openstack.common import cfg from nova.network import driver
from nova.openstack.common import importutils
CONF = cfg.CONF
CONF.import_opt('network_driver', 'nova.config')
class MetadataManager(manager.Manager): class MetadataManager(manager.Manager):
@ -32,7 +28,7 @@ class MetadataManager(manager.Manager):
""" """
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(MetadataManager, self).__init__(*args, **kwargs) super(MetadataManager, self).__init__(*args, **kwargs)
self.network_driver = importutils.import_module(CONF.network_driver) self.network_driver = driver.load_network_driver()
def init_host(self): def init_host(self):
"""Perform any initialization. """Perform any initialization.

View File

@ -158,9 +158,6 @@ global_opts = [
default=None, default=None,
help='The default format an ephemeral_volume will be ' help='The default format an ephemeral_volume will be '
'formatted with on creation.'), 'formatted with on creation.'),
cfg.StrOpt('network_driver',
default='nova.network.linux_net',
help='Driver to use for network creation'),
cfg.BoolOpt('use_ipv6', cfg.BoolOpt('use_ipv6',
default=False, default=False,
help='use ipv6'), help='use ipv6'),

44
nova/network/driver.py Normal file
View File

@ -0,0 +1,44 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2012 Red Hat, Inc.
#
# 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 sys
from nova.openstack.common import cfg
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
driver_opts = [
cfg.StrOpt('network_driver',
default='nova.network.linux_net',
help='Driver to use for network creation'),
]
CONF = cfg.CONF
CONF.register_opts(driver_opts)
LOG = logging.getLogger(__name__)
def load_network_driver(network_driver=None):
if not network_driver:
network_driver = CONF.network_driver
if not network_driver:
LOG.error(_("Network driver option required, but not specified"))
sys.exit(1)
LOG.info(_("Loading network driver '%s'") % CONF.network_driver)
return importutils.import_module(CONF.network_driver)

View File

@ -60,6 +60,7 @@ from nova import exception
from nova import ipv6 from nova import ipv6
from nova import manager from nova import manager
from nova.network import api as network_api from nova.network import api as network_api
from nova.network import driver
from nova.network import model as network_model from nova.network import model as network_model
from nova.network import rpcapi as network_rpcapi from nova.network import rpcapi as network_rpcapi
from nova.openstack.common import cfg from nova.openstack.common import cfg
@ -189,7 +190,6 @@ network_opts = [
CONF = cfg.CONF CONF = cfg.CONF
CONF.register_opts(network_opts) CONF.register_opts(network_opts)
CONF.import_opt('fake_network', 'nova.config') CONF.import_opt('fake_network', 'nova.config')
CONF.import_opt('network_driver', 'nova.config')
CONF.import_opt('use_ipv6', 'nova.config') CONF.import_opt('use_ipv6', 'nova.config')
CONF.import_opt('my_ip', 'nova.config') CONF.import_opt('my_ip', 'nova.config')
@ -909,9 +909,7 @@ class NetworkManager(manager.SchedulerDependentManager):
required_create_args = [] required_create_args = []
def __init__(self, network_driver=None, *args, **kwargs): def __init__(self, network_driver=None, *args, **kwargs):
if not network_driver: self.driver = driver.load_network_driver(network_driver)
network_driver = CONF.network_driver
self.driver = importutils.import_module(network_driver)
self.instance_dns_manager = importutils.import_object( self.instance_dns_manager = importutils.import_object(
CONF.instance_dns_manager) CONF.instance_dns_manager)
self.instance_dns_domain = CONF.instance_dns_domain self.instance_dns_domain = CONF.instance_dns_domain

View File

@ -21,16 +21,14 @@ import mox
from nova import context from nova import context
from nova import db from nova import db
from nova.network import driver
from nova.network import linux_net from nova.network import linux_net
from nova.openstack.common import cfg
from nova.openstack.common import fileutils from nova.openstack.common import fileutils
from nova.openstack.common import importutils from nova.openstack.common import importutils
from nova.openstack.common import log as logging from nova.openstack.common import log as logging
from nova import test from nova import test
from nova import utils from nova import utils
CONF = cfg.CONF
CONF.import_opt('network_driver', 'nova.config')
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
HOST = "testhost" HOST = "testhost"
@ -214,8 +212,7 @@ class LinuxNetworkTestCase(test.TestCase):
def setUp(self): def setUp(self):
super(LinuxNetworkTestCase, self).setUp() super(LinuxNetworkTestCase, self).setUp()
network_driver = CONF.network_driver self.driver = driver.load_network_driver()
self.driver = importutils.import_module(network_driver)
self.driver.db = db self.driver.db = db
self.context = context.RequestContext('testuser', 'testproject', self.context = context.RequestContext('testuser', 'testproject',
is_admin=True) is_admin=True)