Merge "Use cfg's new global CONF object"

This commit is contained in:
Jenkins
2012-05-30 22:53:35 +00:00
committed by Gerrit Code Review
21 changed files with 63 additions and 109 deletions

View File

@@ -46,7 +46,6 @@ from nova import flags
from nova import log as logging
from nova.openstack.common import cfg
from nova import rpc
from nova import utils
delete_exchange_opt = \
@@ -71,8 +70,7 @@ def delete_queues(queues):
x.queue_delete(q)
if __name__ == '__main__':
utils.default_cfgfile()
args = flags.FLAGS(sys.argv)
args = flags.parse_args(sys.argv)
logging.setup()
rpc.register_opts(flags.FLAGS)
delete_queues(args[1:])

View File

@@ -65,8 +65,7 @@ FLAGS = flags.FLAGS
if __name__ == '__main__':
rpc.register_opts(FLAGS)
admin_context = context.get_admin_context()
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
begin, end = utils.last_completed_audit_period()
print "Starting instance usage audit"

View File

@@ -51,8 +51,7 @@ from nova.vnc import xvp_proxy
LOG = logging.getLogger('nova.all')
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
servers = []

View File

@@ -42,8 +42,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
servers = []

View File

@@ -38,8 +38,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = service.WSGIService('ec2')

View File

@@ -38,8 +38,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = service.WSGIService('metadata')

View File

@@ -38,8 +38,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = service.WSGIService('osapi_compute')

View File

@@ -38,8 +38,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = service.WSGIService('osapi_volume')

View File

@@ -38,8 +38,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = service.Service.create(binary='nova-cert')

View File

@@ -40,8 +40,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = service.Service.create(binary='nova-compute')

View File

@@ -36,11 +36,9 @@ if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
from nova import flags
from nova import log as logging
from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
server = service.Service.create(binary='nova-console')
service.serve(server)

View File

@@ -35,12 +35,10 @@ from nova.consoleauth import manager
from nova import flags
from nova import log as logging
from nova import service
from nova import utils
if __name__ == "__main__":
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
server = service.Service.create(binary='nova-consoleauth')

View File

@@ -96,8 +96,7 @@ def init_leases(network_id):
def main():
"""Parse environment and arguments and call the approproate action."""
flagfile = os.environ.get('FLAGFILE', FLAGS.dhcpbridge_flagfile)
utils.default_cfgfile(flagfile)
argv = FLAGS(sys.argv)
argv = flags.parse_args(sys.argv)
logging.setup()
rpc.register_opts(FLAGS)

View File

@@ -87,6 +87,7 @@ from nova.db import migration
from nova import exception
from nova import flags
from nova import log as logging
from nova.openstack.common import cfg
from nova.openstack.common import importutils
from nova import quota
from nova import rpc
@@ -1668,26 +1669,24 @@ def methods_of(obj):
def main():
"""Parse options and call the appropriate class/method."""
cfgfile = utils.default_cfgfile()
if cfgfile and not os.access(cfgfile, os.R_OK):
st = os.stat(cfgfile)
print "Could not read %s. Re-running with sudo" % cfgfile
try:
os.execvp('sudo', ['sudo', '-u', '#%s' % st.st_uid] + sys.argv)
except Exception:
print 'sudo failed, continuing as if nothing happened'
rpc.register_opts(FLAGS)
try:
argv = FLAGS(sys.argv)
argv = flags.parse_args(sys.argv)
logging.setup()
except IOError, e:
if e.errno == errno.EACCES:
print _('Please re-run nova-manage as root.')
sys.exit(2)
raise
except cfg.ConfigFilesNotFoundError:
cfgfile = FLAGS.config_file[-1] if FLAGS.config_file else None
if cfgfile and not os.access(cfgfile, os.R_OK):
st = os.stat(cfgfile)
print _("Could not read %s. Re-running with sudo") % cfgfile
try:
os.execvp('sudo', ['sudo', '-u', '#%s' % st.st_uid] + sys.argv)
except Exception:
print _('sudo failed, continuing as if nothing happened')
print _('Please re-run nova-manage as root.')
sys.exit(2)
script_name = argv.pop(0)
if len(argv) < 1:
print _("\nOpenStack Nova version: %(version)s (%(vcs)s)\n") % \

View File

@@ -40,8 +40,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = service.Service.create(binary='nova-network')

View File

@@ -42,8 +42,7 @@ from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = s3server.get_wsgi_server()

View File

@@ -42,8 +42,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = service.Service.create(binary='nova-scheduler')

View File

@@ -40,8 +40,7 @@ from nova import service
from nova import utils
if __name__ == '__main__':
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
utils.monkey_patch()
server = service.Service.create(binary='nova-volume')

View File

@@ -35,15 +35,13 @@ from nova import flags
from nova import log as logging
from nova import rpc
from nova import service
from nova import utils
from nova.vnc import xvp_proxy
FLAGS = flags.FLAGS
if __name__ == "__main__":
rpc.register_opts(FLAGS)
utils.default_cfgfile()
flags.FLAGS(sys.argv)
flags.parse_args(sys.argv)
logging.setup()
wsgi_server = xvp_proxy.get_wsgi_server()

View File

@@ -33,19 +33,14 @@ import sys
from nova.openstack.common import cfg
class NovaConfigOpts(cfg.CommonConfigOpts):
def __init__(self, *args, **kwargs):
if 'project' not in kwargs:
kwargs['project'] = 'nova'
super(NovaConfigOpts, self).__init__(*args, **kwargs)
self.disable_interspersed_args()
def __call__(self, argv):
return argv[:1] + super(NovaConfigOpts, self).__call__(argv[1:])
FLAGS = cfg.CONF
FLAGS = NovaConfigOpts()
def parse_args(argv, default_config_files=None):
FLAGS.disable_interspersed_args()
return argv[:1] + FLAGS(argv[1:],
project='nova',
default_config_files=default_config_files)
class UnrecognizedFlag(Exception):

View File

@@ -34,54 +34,50 @@ class FlagsTestCase(test.TestCase):
def setUp(self):
super(FlagsTestCase, self).setUp()
self.FLAGS = flags.NovaConfigOpts()
self.global_FLAGS = flags.FLAGS
self.flags(config_file=[])
def test_declare(self):
self.assert_('answer' not in self.global_FLAGS)
self.assert_('answer' not in FLAGS)
flags.DECLARE('answer', 'nova.tests.declare_flags')
self.assert_('answer' in self.global_FLAGS)
self.assertEqual(self.global_FLAGS.answer, 42)
self.assert_('answer' in FLAGS)
self.assertEqual(FLAGS.answer, 42)
# Make sure we don't overwrite anything
self.global_FLAGS.set_override('answer', 256)
self.assertEqual(self.global_FLAGS.answer, 256)
FLAGS.set_override('answer', 256)
self.assertEqual(FLAGS.answer, 256)
flags.DECLARE('answer', 'nova.tests.declare_flags')
self.assertEqual(self.global_FLAGS.answer, 256)
self.assertEqual(FLAGS.answer, 256)
def test_getopt_non_interspersed_args(self):
self.assert_('runtime_answer' not in self.global_FLAGS)
self.assert_('runtime_answer' not in FLAGS)
argv = ['flags_test', 'extra_arg', '--runtime_answer=60']
args = self.global_FLAGS(argv)
args = flags.parse_args(argv, default_config_files=[])
self.assertEqual(len(args), 3)
self.assertEqual(argv, args)
def test_runtime_and_unknown_flags(self):
self.assert_('runtime_answer' not in self.global_FLAGS)
self.assert_('runtime_answer' not in FLAGS)
import nova.tests.runtime_flags
self.assert_('runtime_answer' in self.global_FLAGS)
self.assertEqual(self.global_FLAGS.runtime_answer, 54)
self.assert_('runtime_answer' in FLAGS)
self.assertEqual(FLAGS.runtime_answer, 54)
def test_long_vs_short_flags(self):
self.global_FLAGS.clear()
self.global_FLAGS.register_cli_opt(cfg.StrOpt('duplicate_answer_long',
default='val',
help='desc'))
FLAGS.clear()
FLAGS.register_cli_opt(cfg.StrOpt('duplicate_answer_long',
default='val',
help='desc'))
argv = ['flags_test', '--duplicate_answer=60', 'extra_arg']
args = self.global_FLAGS(argv)
args = flags.parse_args(argv, default_config_files=[])
self.assert_('duplicate_answer' not in self.global_FLAGS)
self.assert_(self.global_FLAGS.duplicate_answer_long, 60)
self.assert_('duplicate_answer' not in FLAGS)
self.assert_(FLAGS.duplicate_answer_long, 60)
self.global_FLAGS.clear()
self.global_FLAGS.register_cli_opt(cfg.IntOpt('duplicate_answer',
default=60,
help='desc'))
args = self.global_FLAGS(argv)
self.assertEqual(self.global_FLAGS.duplicate_answer, 60)
self.assertEqual(self.global_FLAGS.duplicate_answer_long, 'val')
FLAGS.clear()
FLAGS.register_cli_opt(cfg.IntOpt('duplicate_answer',
default=60, help='desc'))
args = flags.parse_args(argv, default_config_files=[])
self.assertEqual(FLAGS.duplicate_answer, 60)
self.assertEqual(FLAGS.duplicate_answer_long, 'val')
def test_flag_leak_left(self):
self.assertEqual(FLAGS.flags_unittest, 'foo')
@@ -99,17 +95,3 @@ class FlagsTestCase(test.TestCase):
self.assertEqual(FLAGS.flags_unittest, 'bar')
FLAGS.reset()
self.assertEqual(FLAGS.flags_unittest, 'foo')
def test_defaults(self):
self.FLAGS.register_opt(cfg.StrOpt('foo', default='bar', help='desc'))
self.assertEqual(self.FLAGS.foo, 'bar')
self.FLAGS.set_default('foo', 'blaa')
self.assertEqual(self.FLAGS.foo, 'blaa')
def test_templated_values(self):
self.FLAGS.register_opt(cfg.StrOpt('foo', default='foo', help='desc'))
self.FLAGS.register_opt(cfg.StrOpt('bar', default='bar', help='desc'))
self.FLAGS.register_opt(cfg.StrOpt('blaa',
default='$foo$bar', help='desc'))
self.assertEqual(self.FLAGS.blaa, 'foobar')