Use oslo-config-2013.1b3
The cfg API is now available via the oslo-config library, so switch to it and remove the copied-and-pasted version. Removes the load of copied-and-pasted cfg from each application in authtoken middleware. Depends on oslo-config deployments: Nova I4815aeb8a9341a31a250e920157f15ee15cfc5bc Glance I4815aeb8a9341a31a250e920157f15ee15cfc5bc Quantum I4815aeb8a9341a31a250e920157f15ee15cfc5bc Cinder I4815aeb8a9341a31a250e920157f15ee15cfc5bc Add the 2013.1b3 tarball to tools/pip-requires - this will be changed to 'oslo-config>=2013.1' when oslo-config is published to pypi. This will happen in time for grizzly final. Change-Id: I18c450174277c8e2d15ed93879da6cd92074c27a
This commit is contained in:
@@ -119,23 +119,20 @@ from keystoneclient.middleware import memcache_crypt
|
|||||||
from keystoneclient.openstack.common import timeutils
|
from keystoneclient.openstack.common import timeutils
|
||||||
|
|
||||||
CONF = None
|
CONF = None
|
||||||
try:
|
# to pass gate before oslo-config is deployed everywhere,
|
||||||
from openstack.common import cfg
|
# try application copies first
|
||||||
CONF = cfg.CONF
|
for app in 'nova', 'glance', 'quantum', 'cinder':
|
||||||
except ImportError:
|
try:
|
||||||
# cfg is not a library yet, try application copies
|
cfg = __import__('%s.openstack.common.cfg' % app,
|
||||||
for app in 'nova', 'glance', 'quantum', 'cinder':
|
fromlist=['%s.openstack.common' % app])
|
||||||
try:
|
# test which application middleware is running in
|
||||||
cfg = __import__('%s.openstack.common.cfg' % app,
|
if hasattr(cfg, 'CONF') and 'config_file' in cfg.CONF:
|
||||||
fromlist=['%s.openstack.common' % app])
|
CONF = cfg.CONF
|
||||||
# test which application middleware is running in
|
break
|
||||||
if hasattr(cfg, 'CONF') and 'config_file' in cfg.CONF:
|
except ImportError:
|
||||||
CONF = cfg.CONF
|
pass
|
||||||
break
|
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
if not CONF:
|
if not CONF:
|
||||||
from keystoneclient.openstack.common import cfg
|
from oslo.config import cfg
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
# alternative middleware configuration in the main application's
|
# alternative middleware configuration in the main application's
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,130 +0,0 @@
|
|||||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
||||||
|
|
||||||
# Copyright 2012 OpenStack LLC.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
|
|
||||||
class ParseError(Exception):
|
|
||||||
def __init__(self, message, lineno, line):
|
|
||||||
self.msg = message
|
|
||||||
self.line = line
|
|
||||||
self.lineno = lineno
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return 'at line %d, %s: %r' % (self.lineno, self.msg, self.line)
|
|
||||||
|
|
||||||
|
|
||||||
class BaseParser(object):
|
|
||||||
lineno = 0
|
|
||||||
parse_exc = ParseError
|
|
||||||
|
|
||||||
def _assignment(self, key, value):
|
|
||||||
self.assignment(key, value)
|
|
||||||
return None, []
|
|
||||||
|
|
||||||
def _get_section(self, line):
|
|
||||||
if line[-1] != ']':
|
|
||||||
return self.error_no_section_end_bracket(line)
|
|
||||||
if len(line) <= 2:
|
|
||||||
return self.error_no_section_name(line)
|
|
||||||
|
|
||||||
return line[1:-1]
|
|
||||||
|
|
||||||
def _split_key_value(self, line):
|
|
||||||
colon = line.find(':')
|
|
||||||
equal = line.find('=')
|
|
||||||
if colon < 0 and equal < 0:
|
|
||||||
return self.error_invalid_assignment(line)
|
|
||||||
|
|
||||||
if colon < 0 or (equal >= 0 and equal < colon):
|
|
||||||
key, value = line[:equal], line[equal + 1:]
|
|
||||||
else:
|
|
||||||
key, value = line[:colon], line[colon + 1:]
|
|
||||||
|
|
||||||
value = value.strip()
|
|
||||||
if ((value and value[0] == value[-1]) and
|
|
||||||
(value[0] == "\"" or value[0] == "'")):
|
|
||||||
value = value[1:-1]
|
|
||||||
return key.strip(), [value]
|
|
||||||
|
|
||||||
def parse(self, lineiter):
|
|
||||||
key = None
|
|
||||||
value = []
|
|
||||||
|
|
||||||
for line in lineiter:
|
|
||||||
self.lineno += 1
|
|
||||||
|
|
||||||
line = line.rstrip()
|
|
||||||
if not line:
|
|
||||||
# Blank line, ends multi-line values
|
|
||||||
if key:
|
|
||||||
key, value = self._assignment(key, value)
|
|
||||||
continue
|
|
||||||
elif line[0] in (' ', '\t'):
|
|
||||||
# Continuation of previous assignment
|
|
||||||
if key is None:
|
|
||||||
self.error_unexpected_continuation(line)
|
|
||||||
else:
|
|
||||||
value.append(line.lstrip())
|
|
||||||
continue
|
|
||||||
|
|
||||||
if key:
|
|
||||||
# Flush previous assignment, if any
|
|
||||||
key, value = self._assignment(key, value)
|
|
||||||
|
|
||||||
if line[0] == '[':
|
|
||||||
# Section start
|
|
||||||
section = self._get_section(line)
|
|
||||||
if section:
|
|
||||||
self.new_section(section)
|
|
||||||
elif line[0] in '#;':
|
|
||||||
self.comment(line[1:].lstrip())
|
|
||||||
else:
|
|
||||||
key, value = self._split_key_value(line)
|
|
||||||
if not key:
|
|
||||||
return self.error_empty_key(line)
|
|
||||||
|
|
||||||
if key:
|
|
||||||
# Flush previous assignment, if any
|
|
||||||
self._assignment(key, value)
|
|
||||||
|
|
||||||
def assignment(self, key, value):
|
|
||||||
"""Called when a full assignment is parsed"""
|
|
||||||
raise NotImplementedError()
|
|
||||||
|
|
||||||
def new_section(self, section):
|
|
||||||
"""Called when a new section is started"""
|
|
||||||
raise NotImplementedError()
|
|
||||||
|
|
||||||
def comment(self, comment):
|
|
||||||
"""Called when a comment is parsed"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
def error_invalid_assignment(self, line):
|
|
||||||
raise self.parse_exc("No ':' or '=' found in assignment",
|
|
||||||
self.lineno, line)
|
|
||||||
|
|
||||||
def error_empty_key(self, line):
|
|
||||||
raise self.parse_exc('Key cannot be empty', self.lineno, line)
|
|
||||||
|
|
||||||
def error_unexpected_continuation(self, line):
|
|
||||||
raise self.parse_exc('Unexpected continuation line',
|
|
||||||
self.lineno, line)
|
|
||||||
|
|
||||||
def error_no_section_end_bracket(self, line):
|
|
||||||
raise self.parse_exc('Invalid section (must end with ])',
|
|
||||||
self.lineno, line)
|
|
||||||
|
|
||||||
def error_no_section_name(self, line):
|
|
||||||
raise self.parse_exc('Empty section name', self.lineno, line)
|
|
@@ -1,7 +1,7 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
|
|
||||||
# The list of modules to copy from openstack-common
|
# The list of modules to copy from openstack-common
|
||||||
modules=setup,cfg,iniparser,install_venv_common,jsonutils,timeutils
|
modules=setup,install_venv_common,jsonutils,timeutils
|
||||||
|
|
||||||
# The base module to hold the copy of openstack.common
|
# The base module to hold the copy of openstack.common
|
||||||
base=keystoneclient
|
base=keystoneclient
|
||||||
|
@@ -32,7 +32,7 @@ if os.path.exists(os.path.join(possible_topdir, "keystoneclient",
|
|||||||
sys.path.insert(0, possible_topdir)
|
sys.path.insert(0, possible_topdir)
|
||||||
|
|
||||||
|
|
||||||
from keystoneclient.openstack.common import cfg
|
from oslo.config import cfg
|
||||||
|
|
||||||
|
|
||||||
class InstallVenv(object):
|
class InstallVenv(object):
|
||||||
|
@@ -3,3 +3,4 @@ iso8601>=0.1.4
|
|||||||
prettytable
|
prettytable
|
||||||
requests>=0.8.8
|
requests>=0.8.8
|
||||||
simplejson
|
simplejson
|
||||||
|
http://tarballs.openstack.org/oslo-config/oslo-config-2013.1b3.tar.gz#egg=oslo-config
|
||||||
|
Reference in New Issue
Block a user