oslo has been updated

* uuidutils added;
* logging scheme updated.

Change-Id: If1c278f8a067adf5af7408d2d25a2f37f7ad0be1
This commit is contained in:
Sergey Lukjanov 2013-04-03 10:08:15 +04:00
parent 1e7905f32b
commit 363f8231f8
7 changed files with 78 additions and 11 deletions

View File

@ -1,5 +1,5 @@
[DEFAULT] [DEFAULT]
modules=setup, jsonutils, xmlutils, timeutils, exception, gettextutils, log, local, notifier/api, notifier/log_notifier, notifier/no_op_notifier, notifier/test_notifier, notifier/__init__, importutils, context modules=setup, jsonutils, xmlutils, timeutils, exception, gettextutils, log, local, notifier/api, notifier/log_notifier, notifier/no_op_notifier, notifier/test_notifier, notifier/__init__, importutils, context, uuidutils
base=savanna base=savanna
# The following code from 'wsgi' is needed: # The following code from 'wsgi' is needed:

View File

@ -26,7 +26,7 @@ Usual usage in an openstack.common module:
import gettext import gettext
t = gettext.translation('openstack-common', 'locale', fallback=True) t = gettext.translation('savanna', 'locale', fallback=True)
def _(msg): def _(msg):

View File

@ -29,6 +29,7 @@ It also allows setting of formatting information through conf.
""" """
import ConfigParser
import cStringIO import cStringIO
import inspect import inspect
import itertools import itertools
@ -87,11 +88,11 @@ logging_cli_opts = [
metavar='PATH', metavar='PATH',
deprecated_name='logfile', deprecated_name='logfile',
help='(Optional) Name of log file to output to. ' help='(Optional) Name of log file to output to. '
'If not set, logging will go to stdout.'), 'If no default is set, logging will go to stdout.'),
cfg.StrOpt('log-dir', cfg.StrOpt('log-dir',
deprecated_name='logdir', deprecated_name='logdir',
help='(Optional) The directory to keep log files in ' help='(Optional) The base directory used for relative '
'(will be prepended to --log-file)'), '--log-file paths'),
cfg.BoolOpt('use-syslog', cfg.BoolOpt('use-syslog',
default=False, default=False,
help='Use syslog for logging.'), help='Use syslog for logging.'),
@ -111,9 +112,9 @@ generic_log_opts = [
log_opts = [ log_opts = [
cfg.StrOpt('logging_context_format_string', cfg.StrOpt('logging_context_format_string',
default='%(asctime)s.%(msecs)03d %(levelname)s %(name)s ' default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
'[%(request_id)s %(user)s %(tenant)s] %(instance)s' '%(name)s [%(request_id)s %(user)s %(tenant)s] '
'%(message)s', '%(instance)s%(message)s',
help='format string to use for log messages with context'), help='format string to use for log messages with context'),
cfg.StrOpt('logging_default_format_string', cfg.StrOpt('logging_default_format_string',
default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s ' default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s '
@ -323,10 +324,30 @@ def _create_logging_excepthook(product_name):
return logging_excepthook return logging_excepthook
class LogConfigError(Exception):
message = _('Error loading logging config %(log_config)s: %(err_msg)s')
def __init__(self, log_config, err_msg):
self.log_config = log_config
self.err_msg = err_msg
def __str__(self):
return self.message % dict(log_config=self.log_config,
err_msg=self.err_msg)
def _load_log_config(log_config):
try:
logging.config.fileConfig(log_config)
except ConfigParser.Error, exc:
raise LogConfigError(log_config, str(exc))
def setup(product_name): def setup(product_name):
"""Setup logging.""" """Setup logging."""
if CONF.log_config: if CONF.log_config:
logging.config.fileConfig(CONF.log_config) _load_log_config(CONF.log_config)
else: else:
_setup_logging_from_conf() _setup_logging_from_conf()
sys.excepthook = _create_logging_excepthook(product_name) sys.excepthook = _create_logging_excepthook(product_name)

View File

@ -30,7 +30,6 @@ LOG = logging.getLogger(__name__)
notifier_opts = [ notifier_opts = [
cfg.MultiStrOpt('notification_driver', cfg.MultiStrOpt('notification_driver',
default=[], default=[],
deprecated_name='list_notifier_drivers',
help='Driver or drivers to handle sending notifications'), help='Driver or drivers to handle sending notifications'),
cfg.StrOpt('default_notification_level', cfg.StrOpt('default_notification_level',
default='INFO', default='INFO',

View File

@ -171,6 +171,14 @@ def generate_authors():
" log --format='%aN <%aE>' | sort -u | " " log --format='%aN <%aE>' | sort -u | "
"egrep -v '" + jenkins_email + "'") "egrep -v '" + jenkins_email + "'")
changelog = _run_shell_command(git_log_cmd) changelog = _run_shell_command(git_log_cmd)
signed_cmd = ("git --git-dir=" + git_dir +
" log | grep -i Co-authored-by: | sort -u")
signed_entries = _run_shell_command(signed_cmd)
if signed_entries:
new_entries = "\n".join(
[signed.split(":", 1)[1].strip()
for signed in signed_entries.split("\n") if signed])
changelog = "\n".join((changelog, new_entries))
mailmap = _parse_git_mailmap(git_dir) mailmap = _parse_git_mailmap(git_dir)
with open(new_authors, 'w') as new_authors_fh: with open(new_authors, 'w') as new_authors_fh:
new_authors_fh.write(canonicalize_emails(changelog, mailmap)) new_authors_fh.write(canonicalize_emails(changelog, mailmap))

View File

@ -0,0 +1,39 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (c) 2012 Intel Corporation.
# All Rights Reserved.
#
# 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.
"""
UUID related utilities and helper functions.
"""
import uuid
def generate_uuid():
return str(uuid.uuid4())
def is_uuid_like(val):
"""Returns validation of a value as a UUID.
For our purposes, a UUID is a canonical form string:
aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
"""
try:
return str(uuid.UUID(val)) == val
except (TypeError, ValueError, AttributeError):
return False

View File

@ -1,6 +1,6 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4 # vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2013 IBM # Copyright 2013 IBM Corp.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may # 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 # not use this file except in compliance with the License. You may obtain