From dd0a268e6b03fd097da9b43d3b21a42ab928e1c8 Mon Sep 17 00:00:00 2001 From: Chris Behrens Date: Thu, 15 Nov 2012 22:20:07 +0000 Subject: [PATCH] Move nova shared config options to nova.config This strips nova.flags down to be left just for backwards compatibility with add-ons importing nova.flags and using nova.flags.FLAGS Change-Id: Ie3fcae25e05ea9ba97f51bc90b91817ed776ad80 --- nova/config.py | 346 ++++++++++++++++++++++++++++ nova/flags.py | 360 +----------------------------- nova/tests/api/openstack/fakes.py | 3 +- 3 files changed, 352 insertions(+), 357 deletions(-) diff --git a/nova/config.py b/nova/config.py index 608a3ee53ee7..888cb4f32452 100644 --- a/nova/config.py +++ b/nova/config.py @@ -17,11 +17,357 @@ # License for the specific language governing permissions and limitations # under the License. +import os +import socket + from nova.openstack.common import cfg CONF = cfg.CONF +def _get_my_ip(): + """ + Returns the actual ip of the local machine. + + This code figures out what source address would be used if some traffic + were to be sent out to some well known address on the Internet. In this + case, a Google DNS server is used, but the specific address does not + matter much. No traffic is actually sent. + """ + try: + csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + csock.connect(('8.8.8.8', 80)) + (addr, port) = csock.getsockname() + csock.close() + return addr + except socket.error: + return "127.0.0.1" + + +core_opts = [ + cfg.StrOpt('sql_connection', + default='sqlite:///$state_path/$sqlite_db', + help='The SQLAlchemy connection string used to connect to the ' + 'database'), + cfg.StrOpt('api_paste_config', + default="api-paste.ini", + help='File name for the paste.deploy config for nova-api'), + cfg.StrOpt('pybasedir', + default=os.path.abspath(os.path.join(os.path.dirname(__file__), + '../')), + help='Directory where the nova python module is installed'), + cfg.StrOpt('bindir', + default='$pybasedir/bin', + help='Directory where nova binaries are installed'), + cfg.StrOpt('state_path', + default='$pybasedir', + help="Top-level directory for maintaining nova's state"), + ] + +debug_opts = [ + cfg.BoolOpt('fake_network', + default=False, + help='If passed, use fake network devices and addresses'), + cfg.IntOpt('sql_connection_debug', + default=0, + help='Verbosity of SQL debugging information. 0=None, ' + '100=Everything'), + cfg.BoolOpt('sql_connection_trace', + default=False, + help='Add python stack traces to SQL as comment strings'), +] + +CONF.register_cli_opts(core_opts) +CONF.register_cli_opts(debug_opts) + +global_opts = [ + cfg.StrOpt('my_ip', + default=_get_my_ip(), + help='ip address of this host'), + cfg.ListOpt('region_list', + default=[], + help='list of region=fqdn pairs separated by commas'), + cfg.StrOpt('aws_access_key_id', + default='admin', + help='AWS Access ID'), + cfg.StrOpt('aws_secret_access_key', + default='admin', + help='AWS Access Key'), + cfg.StrOpt('glance_host', + default='$my_ip', + help='default glance hostname or ip'), + cfg.IntOpt('glance_port', + default=9292, + help='default glance port'), + cfg.ListOpt('glance_api_servers', + default=['$glance_host:$glance_port'], + help='A list of the glance api servers available to nova. ' + 'Prefix with https:// for ssl-based glance api servers. ' + '([hostname|ip]:port)'), + cfg.BoolOpt('glance_api_insecure', + default=False, + help='Allow to perform insecure SSL (https) requests to ' + 'glance'), + cfg.IntOpt('glance_num_retries', + default=0, + help='Number retries when downloading an image from glance'), + cfg.IntOpt('s3_port', + default=3333, + help='port used when accessing the s3 api'), + cfg.StrOpt('s3_host', + default='$my_ip', + help='hostname or ip for openstack to use when accessing ' + 'the s3 api'), + cfg.StrOpt('cert_topic', + default='cert', + help='the topic cert nodes listen on'), + cfg.StrOpt('compute_topic', + default='compute', + help='the topic compute nodes listen on'), + cfg.StrOpt('console_topic', + default='console', + help='the topic console proxy nodes listen on'), + cfg.StrOpt('scheduler_topic', + default='scheduler', + help='the topic scheduler nodes listen on'), + cfg.StrOpt('network_topic', + default='network', + help='the topic network nodes listen on'), + cfg.BoolOpt('api_rate_limit', + default=True, + help='whether to rate limit the api'), + cfg.ListOpt('enabled_apis', + default=['ec2', 'osapi_compute', 'metadata'], + help='a list of APIs to enable by default'), + cfg.StrOpt('ec2_host', + default='$my_ip', + help='the ip of the ec2 api server'), + cfg.StrOpt('ec2_dmz_host', + default='$my_ip', + help='the internal ip of the ec2 api server'), + cfg.IntOpt('ec2_port', + default=8773, + help='the port of the ec2 api server'), + cfg.StrOpt('ec2_scheme', + default='http', + help='the protocol to use when connecting to the ec2 api ' + 'server (http, https)'), + cfg.StrOpt('ec2_path', + default='/services/Cloud', + help='the path prefix used to call the ec2 api server'), + cfg.ListOpt('osapi_compute_ext_list', + default=[], + help='Specify list of extensions to load when using osapi_' + 'compute_extension option with nova.api.openstack.' + 'compute.contrib.select_extensions'), + cfg.MultiStrOpt('osapi_compute_extension', + default=[ + 'nova.api.openstack.compute.contrib.standard_extensions' + ], + help='osapi compute extension to load'), + cfg.StrOpt('osapi_path', + default='/v1.1/', + help='the path prefix used to call the openstack api server'), + cfg.StrOpt('osapi_compute_link_prefix', + default=None, + help='Base URL that will be presented to users in links ' + 'to the OpenStack Compute API'), + cfg.StrOpt('osapi_glance_link_prefix', + default=None, + help='Base URL that will be presented to users in links ' + 'to glance resources'), + cfg.IntOpt('osapi_max_limit', + default=1000, + help='the maximum number of items returned in a single ' + 'response from a collection resource'), + cfg.StrOpt('metadata_host', + default='$my_ip', + help='the ip for the metadata api server'), + cfg.IntOpt('metadata_port', + default=8775, + help='the port for the metadata api port'), + cfg.StrOpt('default_image', + default='ami-11111', + help='default image to use, testing only'), + cfg.StrOpt('default_instance_type', + default='m1.small', + help='default instance type to use, testing only'), + cfg.StrOpt('null_kernel', + default='nokernel', + help='kernel image that indicates not to use a kernel, but to ' + 'use a raw disk image instead'), + cfg.StrOpt('vpn_image_id', + default='0', + help='image id used when starting up a cloudpipe vpn server'), + cfg.StrOpt('vpn_key_suffix', + default='-vpn', + help='Suffix to add to project name for vpn key and secgroups'), + cfg.StrOpt('sqlite_db', + default='nova.sqlite', + help='the filename to use with sqlite'), + cfg.BoolOpt('sqlite_synchronous', + default=True, + help='If passed, use synchronous mode for sqlite'), + cfg.IntOpt('sql_idle_timeout', + default=3600, + help='timeout before idle sql connections are reaped'), + cfg.IntOpt('sql_max_retries', + default=10, + help='maximum db connection retries during startup. ' + '(setting -1 implies an infinite retry count)'), + cfg.IntOpt('sql_retry_interval', + default=10, + help='interval between retries of opening a sql connection'), + cfg.StrOpt('compute_manager', + default='nova.compute.manager.ComputeManager', + help='full class name for the Manager for compute'), + cfg.StrOpt('console_manager', + default='nova.console.manager.ConsoleProxyManager', + help='full class name for the Manager for console proxy'), + cfg.StrOpt('cert_manager', + default='nova.cert.manager.CertManager', + help='full class name for the Manager for cert'), + cfg.StrOpt('instance_dns_manager', + default='nova.network.dns_driver.DNSDriver', + help='full class name for the DNS Manager for instance IPs'), + cfg.StrOpt('instance_dns_domain', + default='', + help='full class name for the DNS Zone for instance IPs'), + cfg.StrOpt('floating_ip_dns_manager', + default='nova.network.dns_driver.DNSDriver', + help='full class name for the DNS Manager for floating IPs'), + cfg.StrOpt('network_manager', + default='nova.network.manager.VlanManager', + help='full class name for the Manager for network'), + cfg.StrOpt('scheduler_manager', + default='nova.scheduler.manager.SchedulerManager', + help='full class name for the Manager for scheduler'), + cfg.StrOpt('host', + default=socket.getfqdn(), + help='Name of this node. This can be an opaque identifier. ' + 'It is not necessarily a hostname, FQDN, or IP address. ' + 'However, the node name must be valid within ' + 'an AMQP key, and if using ZeroMQ, a valid ' + 'hostname, FQDN, or IP address'), + cfg.StrOpt('node_availability_zone', + default='nova', + help='availability zone of this node'), + cfg.ListOpt('memcached_servers', + default=None, + help='Memcached servers or None for in process cache.'), + cfg.StrOpt('instance_usage_audit_period', + default='month', + help='time period to generate instance usages for. ' + 'Time period must be hour, day, month or year'), + cfg.IntOpt('bandwidth_poll_interval', + default=600, + help='interval to pull bandwidth usage info'), + cfg.BoolOpt('start_guests_on_host_boot', + default=False, + help='Whether to restart guests when the host reboots'), + cfg.BoolOpt('resume_guests_state_on_host_boot', + default=False, + help='Whether to start guests that were running before the ' + 'host rebooted'), + cfg.StrOpt('default_ephemeral_format', + default=None, + help='The default format an ephemeral_volume will be ' + 'formatted with on creation.'), + cfg.StrOpt('rootwrap_config', + default="/etc/nova/rootwrap.conf", + help='Path to the rootwrap configuration file to use for ' + 'running commands as root'), + cfg.StrOpt('network_driver', + default='nova.network.linux_net', + help='Driver to use for network creation'), + cfg.BoolOpt('use_ipv6', + default=False, + help='use ipv6'), + cfg.BoolOpt('enable_instance_password', + default=True, + help='Allows use of instance password during ' + 'server creation'), + cfg.IntOpt('password_length', + default=12, + help='Length of generated instance admin passwords'), + cfg.BoolOpt('monkey_patch', + default=False, + help='Whether to log monkey patching'), + cfg.ListOpt('monkey_patch_modules', + default=[ + 'nova.api.ec2.cloud:nova.notifier.api.notify_decorator', + 'nova.compute.api:nova.notifier.api.notify_decorator' + ], + help='List of modules/decorators to monkey patch'), + cfg.BoolOpt('allow_resize_to_same_host', + default=False, + help='Allow destination machine to match source for resize. ' + 'Useful when testing in single-host environments.'), + cfg.IntOpt('reclaim_instance_interval', + default=0, + help='Interval in seconds for reclaiming deleted instances'), + cfg.IntOpt('zombie_instance_updated_at_window', + default=172800, + help='Number of seconds zombie instances are cleaned up.'), + cfg.IntOpt('service_down_time', + default=60, + help='maximum time since last check-in for up service'), + cfg.StrOpt('default_schedule_zone', + default=None, + help='availability zone to use when user doesn\'t specify one'), + cfg.ListOpt('isolated_images', + default=[], + help='Images to run on isolated host'), + cfg.ListOpt('isolated_hosts', + default=[], + help='Host reserved for specific images'), + cfg.StrOpt('cache_images', + default='all', + help='Cache glance images locally. `all` will cache all' + ' images, `some` will only cache images that have the' + ' image_property `cache_in_nova=True`, and `none` turns' + ' off caching entirely'), + cfg.BoolOpt('use_cow_images', + default=True, + help='Whether to use cow images'), + cfg.StrOpt('compute_api_class', + default='nova.compute.api.API', + help='The full class name of the compute API class to use'), + cfg.StrOpt('network_api_class', + default='nova.network.api.API', + help='The full class name of the network API class to use'), + cfg.StrOpt('volume_api_class', + default='nova.volume.cinder.API', + help='The full class name of the volume API class to use'), + cfg.StrOpt('security_group_handler', + default='nova.network.sg.NullSecurityGroupHandler', + help='The full class name of the security group handler class'), + cfg.StrOpt('default_access_ip_network_name', + default=None, + help='Name of network to use to set access ips for instances'), + cfg.StrOpt('auth_strategy', + default='noauth', + help='The strategy to use for auth: noauth or keystone.'), + cfg.ListOpt('non_inheritable_image_properties', + default=['cache_in_nova', + 'bittorrent'], + help='These are image properties which a snapshot should not' + ' inherit from an instance'), + cfg.BoolOpt('defer_iptables_apply', + default=False, + help='Whether to batch up the application of IPTables rules' + ' during a host restart and apply all at the end of the' + ' init phase'), + cfg.StrOpt('compute_driver', + help='Driver to use for controlling virtualization. Options ' + 'include: libvirt.LibvirtDriver, xenapi.XenAPIDriver, ' + 'fake.FakeDriver, baremetal.BareMetalDriver, ' + 'vmwareapi.VMWareESXDriver'), +] + +CONF.register_opts(global_opts) + + def parse_args(argv, default_config_files=None): CONF.disable_interspersed_args() return argv[:1] + CONF(argv[1:], diff --git a/nova/flags.py b/nova/flags.py index 497d65ca7cf1..2a3e4471de9d 100644 --- a/nova/flags.py +++ b/nova/flags.py @@ -17,364 +17,12 @@ # License for the specific language governing permissions and limitations # under the License. -"""Command-line flag library. - -Emulates gflags by wrapping cfg.ConfigOpts. - -The idea is to move fully to cfg eventually, and this wrapper is a -stepping stone. +""" +Deprecated module. One should use nova.config instead. +This is left to support backwards compatibility. """ -import os -import socket -import sys - from nova import config -from nova.openstack.common import cfg -CONF = config.CONF -FLAGS = CONF - - -def _get_my_ip(): - """ - Returns the actual ip of the local machine. - - This code figures out what source address would be used if some traffic - were to be sent out to some well known address on the Internet. In this - case, a Google DNS server is used, but the specific address does not - matter much. No traffic is actually sent. - """ - try: - csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - csock.connect(('8.8.8.8', 80)) - (addr, port) = csock.getsockname() - csock.close() - return addr - except socket.error: - return "127.0.0.1" - - -core_opts = [ - cfg.StrOpt('sql_connection', - default='sqlite:///$state_path/$sqlite_db', - help='The SQLAlchemy connection string used to connect to the ' - 'database'), - cfg.StrOpt('api_paste_config', - default="api-paste.ini", - help='File name for the paste.deploy config for nova-api'), - cfg.StrOpt('pybasedir', - default=os.path.abspath(os.path.join(os.path.dirname(__file__), - '../')), - help='Directory where the nova python module is installed'), - cfg.StrOpt('bindir', - default='$pybasedir/bin', - help='Directory where nova binaries are installed'), - cfg.StrOpt('state_path', - default='$pybasedir', - help="Top-level directory for maintaining nova's state"), - ] - -debug_opts = [ - cfg.BoolOpt('fake_network', - default=False, - help='If passed, use fake network devices and addresses'), - cfg.IntOpt('sql_connection_debug', - default=0, - help='Verbosity of SQL debugging information. 0=None, ' - '100=Everything'), - cfg.BoolOpt('sql_connection_trace', - default=False, - help='Add python stack traces to SQL as comment strings'), -] - -CONF.register_cli_opts(core_opts) -CONF.register_cli_opts(debug_opts) - -global_opts = [ - cfg.StrOpt('my_ip', - default=_get_my_ip(), - help='ip address of this host'), - cfg.ListOpt('region_list', - default=[], - help='list of region=fqdn pairs separated by commas'), - cfg.StrOpt('aws_access_key_id', - default='admin', - help='AWS Access ID'), - cfg.StrOpt('aws_secret_access_key', - default='admin', - help='AWS Access Key'), - cfg.StrOpt('glance_host', - default='$my_ip', - help='default glance hostname or ip'), - cfg.IntOpt('glance_port', - default=9292, - help='default glance port'), - cfg.ListOpt('glance_api_servers', - default=['$glance_host:$glance_port'], - help='A list of the glance api servers available to nova. ' - 'Prefix with https:// for ssl-based glance api servers. ' - '([hostname|ip]:port)'), - cfg.BoolOpt('glance_api_insecure', - default=False, - help='Allow to perform insecure SSL (https) requests to ' - 'glance'), - cfg.IntOpt('glance_num_retries', - default=0, - help='Number retries when downloading an image from glance'), - cfg.IntOpt('s3_port', - default=3333, - help='port used when accessing the s3 api'), - cfg.StrOpt('s3_host', - default='$my_ip', - help='hostname or ip for openstack to use when accessing ' - 'the s3 api'), - cfg.StrOpt('cert_topic', - default='cert', - help='the topic cert nodes listen on'), - cfg.StrOpt('compute_topic', - default='compute', - help='the topic compute nodes listen on'), - cfg.StrOpt('console_topic', - default='console', - help='the topic console proxy nodes listen on'), - cfg.StrOpt('scheduler_topic', - default='scheduler', - help='the topic scheduler nodes listen on'), - cfg.StrOpt('network_topic', - default='network', - help='the topic network nodes listen on'), - cfg.BoolOpt('api_rate_limit', - default=True, - help='whether to rate limit the api'), - cfg.ListOpt('enabled_apis', - default=['ec2', 'osapi_compute', 'metadata'], - help='a list of APIs to enable by default'), - cfg.StrOpt('ec2_host', - default='$my_ip', - help='the ip of the ec2 api server'), - cfg.StrOpt('ec2_dmz_host', - default='$my_ip', - help='the internal ip of the ec2 api server'), - cfg.IntOpt('ec2_port', - default=8773, - help='the port of the ec2 api server'), - cfg.StrOpt('ec2_scheme', - default='http', - help='the protocol to use when connecting to the ec2 api ' - 'server (http, https)'), - cfg.StrOpt('ec2_path', - default='/services/Cloud', - help='the path prefix used to call the ec2 api server'), - cfg.ListOpt('osapi_compute_ext_list', - default=[], - help='Specify list of extensions to load when using osapi_' - 'compute_extension option with nova.api.openstack.' - 'compute.contrib.select_extensions'), - cfg.MultiStrOpt('osapi_compute_extension', - default=[ - 'nova.api.openstack.compute.contrib.standard_extensions' - ], - help='osapi compute extension to load'), - cfg.StrOpt('osapi_path', - default='/v1.1/', - help='the path prefix used to call the openstack api server'), - cfg.StrOpt('osapi_compute_link_prefix', - default=None, - help='Base URL that will be presented to users in links ' - 'to the OpenStack Compute API'), - cfg.StrOpt('osapi_glance_link_prefix', - default=None, - help='Base URL that will be presented to users in links ' - 'to glance resources'), - cfg.IntOpt('osapi_max_limit', - default=1000, - help='the maximum number of items returned in a single ' - 'response from a collection resource'), - cfg.StrOpt('metadata_host', - default='$my_ip', - help='the ip for the metadata api server'), - cfg.IntOpt('metadata_port', - default=8775, - help='the port for the metadata api port'), - cfg.StrOpt('default_image', - default='ami-11111', - help='default image to use, testing only'), - cfg.StrOpt('default_instance_type', - default='m1.small', - help='default instance type to use, testing only'), - cfg.StrOpt('null_kernel', - default='nokernel', - help='kernel image that indicates not to use a kernel, but to ' - 'use a raw disk image instead'), - cfg.StrOpt('vpn_image_id', - default='0', - help='image id used when starting up a cloudpipe vpn server'), - cfg.StrOpt('vpn_key_suffix', - default='-vpn', - help='Suffix to add to project name for vpn key and secgroups'), - cfg.StrOpt('sqlite_db', - default='nova.sqlite', - help='the filename to use with sqlite'), - cfg.BoolOpt('sqlite_synchronous', - default=True, - help='If passed, use synchronous mode for sqlite'), - cfg.IntOpt('sql_idle_timeout', - default=3600, - help='timeout before idle sql connections are reaped'), - cfg.IntOpt('sql_max_retries', - default=10, - help='maximum db connection retries during startup. ' - '(setting -1 implies an infinite retry count)'), - cfg.IntOpt('sql_retry_interval', - default=10, - help='interval between retries of opening a sql connection'), - cfg.StrOpt('compute_manager', - default='nova.compute.manager.ComputeManager', - help='full class name for the Manager for compute'), - cfg.StrOpt('console_manager', - default='nova.console.manager.ConsoleProxyManager', - help='full class name for the Manager for console proxy'), - cfg.StrOpt('cert_manager', - default='nova.cert.manager.CertManager', - help='full class name for the Manager for cert'), - cfg.StrOpt('instance_dns_manager', - default='nova.network.dns_driver.DNSDriver', - help='full class name for the DNS Manager for instance IPs'), - cfg.StrOpt('instance_dns_domain', - default='', - help='full class name for the DNS Zone for instance IPs'), - cfg.StrOpt('floating_ip_dns_manager', - default='nova.network.dns_driver.DNSDriver', - help='full class name for the DNS Manager for floating IPs'), - cfg.StrOpt('network_manager', - default='nova.network.manager.VlanManager', - help='full class name for the Manager for network'), - cfg.StrOpt('scheduler_manager', - default='nova.scheduler.manager.SchedulerManager', - help='full class name for the Manager for scheduler'), - cfg.StrOpt('host', - default=socket.getfqdn(), - help='Name of this node. This can be an opaque identifier. ' - 'It is not necessarily a hostname, FQDN, or IP address. ' - 'However, the node name must be valid within ' - 'an AMQP key, and if using ZeroMQ, a valid ' - 'hostname, FQDN, or IP address'), - cfg.StrOpt('node_availability_zone', - default='nova', - help='availability zone of this node'), - cfg.ListOpt('memcached_servers', - default=None, - help='Memcached servers or None for in process cache.'), - cfg.StrOpt('instance_usage_audit_period', - default='month', - help='time period to generate instance usages for. ' - 'Time period must be hour, day, month or year'), - cfg.IntOpt('bandwidth_poll_interval', - default=600, - help='interval to pull bandwidth usage info'), - cfg.BoolOpt('start_guests_on_host_boot', - default=False, - help='Whether to restart guests when the host reboots'), - cfg.BoolOpt('resume_guests_state_on_host_boot', - default=False, - help='Whether to start guests that were running before the ' - 'host rebooted'), - cfg.StrOpt('default_ephemeral_format', - default=None, - help='The default format an ephemeral_volume will be ' - 'formatted with on creation.'), - cfg.StrOpt('rootwrap_config', - default="/etc/nova/rootwrap.conf", - help='Path to the rootwrap configuration file to use for ' - 'running commands as root'), - cfg.StrOpt('network_driver', - default='nova.network.linux_net', - help='Driver to use for network creation'), - cfg.BoolOpt('use_ipv6', - default=False, - help='use ipv6'), - cfg.BoolOpt('enable_instance_password', - default=True, - help='Allows use of instance password during ' - 'server creation'), - cfg.IntOpt('password_length', - default=12, - help='Length of generated instance admin passwords'), - cfg.BoolOpt('monkey_patch', - default=False, - help='Whether to log monkey patching'), - cfg.ListOpt('monkey_patch_modules', - default=[ - 'nova.api.ec2.cloud:nova.notifier.api.notify_decorator', - 'nova.compute.api:nova.notifier.api.notify_decorator' - ], - help='List of modules/decorators to monkey patch'), - cfg.BoolOpt('allow_resize_to_same_host', - default=False, - help='Allow destination machine to match source for resize. ' - 'Useful when testing in single-host environments.'), - cfg.IntOpt('reclaim_instance_interval', - default=0, - help='Interval in seconds for reclaiming deleted instances'), - cfg.IntOpt('zombie_instance_updated_at_window', - default=172800, - help='Number of seconds zombie instances are cleaned up.'), - cfg.IntOpt('service_down_time', - default=60, - help='maximum time since last check-in for up service'), - cfg.StrOpt('default_schedule_zone', - default=None, - help='availability zone to use when user doesn\'t specify one'), - cfg.ListOpt('isolated_images', - default=[], - help='Images to run on isolated host'), - cfg.ListOpt('isolated_hosts', - default=[], - help='Host reserved for specific images'), - cfg.StrOpt('cache_images', - default='all', - help='Cache glance images locally. `all` will cache all' - ' images, `some` will only cache images that have the' - ' image_property `cache_in_nova=True`, and `none` turns' - ' off caching entirely'), - cfg.BoolOpt('use_cow_images', - default=True, - help='Whether to use cow images'), - cfg.StrOpt('compute_api_class', - default='nova.compute.api.API', - help='The full class name of the compute API class to use'), - cfg.StrOpt('network_api_class', - default='nova.network.api.API', - help='The full class name of the network API class to use'), - cfg.StrOpt('volume_api_class', - default='nova.volume.cinder.API', - help='The full class name of the volume API class to use'), - cfg.StrOpt('security_group_handler', - default='nova.network.sg.NullSecurityGroupHandler', - help='The full class name of the security group handler class'), - cfg.StrOpt('default_access_ip_network_name', - default=None, - help='Name of network to use to set access ips for instances'), - cfg.StrOpt('auth_strategy', - default='noauth', - help='The strategy to use for auth: noauth or keystone.'), - cfg.ListOpt('non_inheritable_image_properties', - default=['cache_in_nova', - 'bittorrent'], - help='These are image properties which a snapshot should not' - ' inherit from an instance'), - cfg.BoolOpt('defer_iptables_apply', - default=False, - help='Whether to batch up the application of IPTables rules' - ' during a host restart and apply all at the end of the' - ' init phase'), - cfg.StrOpt('compute_driver', - help='Driver to use for controlling virtualization. Options ' - 'include: libvirt.LibvirtDriver, xenapi.XenAPIDriver, ' - 'fake.FakeDriver, baremetal.BareMetalDriver, ' - 'vmwareapi.VMWareESXDriver'), -] - -CONF.register_opts(global_opts) +FLAGS = config.CONF diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py index 89a78deaa652..d84b215b22d9 100644 --- a/nova/tests/api/openstack/fakes.py +++ b/nova/tests/api/openstack/fakes.py @@ -35,6 +35,7 @@ from nova.api.openstack import wsgi as os_wsgi from nova.compute import api as compute_api from nova.compute import instance_types from nova.compute import vm_states +import nova.config from nova import context from nova.db.sqlalchemy import models from nova import exception as exc @@ -151,7 +152,7 @@ def stub_out_instance_quota(stubs, allowed, quota, resource='instances'): def stub_out_networking(stubs): def get_my_ip(): return '127.0.0.1' - stubs.Set(nova.flags, '_get_my_ip', get_my_ip) + stubs.Set(nova.config, '_get_my_ip', get_my_ip) def stub_out_compute_api_snapshot(stubs):