fix bug lp:1025526,update iniparser.py to accept empty value.

also,this patch turn off pep8 E125 check,this for now seems to
be unnecessary,it check continuous line split.and update the
latest openstack-common https://review.openstack.org/#/c/9201
which has fix pep8 1.3 issue except for E125 check.

Change-Id: I86e6a3add56a0a2941031a1248f1696667ac56b8
This commit is contained in:
Yaguang Tang 2012-07-17 13:23:00 +08:00
parent b7501f2be1
commit 5fcf6ccd95
11 changed files with 42 additions and 44 deletions

View File

@ -53,7 +53,8 @@ class BaseParser(object):
key, value = line[:colon], line[colon + 1:] key, value = line[:colon], line[colon + 1:]
value = value.strip() value = value.strip()
if value[0] == value[-1] and value[0] == "\"" or value[0] == "'": if ((value and value[0] == value[-1]) and
(value[0] == "\"" or value[0] == "'")):
value = value[1:-1] value = value[1:-1]
return key.strip(), [value] return key.strip(), [value]

View File

@ -66,13 +66,13 @@ log_opts = [
help='prefix each line of exception output with this format'), help='prefix each line of exception output with this format'),
cfg.ListOpt('default_log_levels', cfg.ListOpt('default_log_levels',
default=[ default=[
'amqplib=WARN', 'amqplib=WARN',
'sqlalchemy=WARN', 'sqlalchemy=WARN',
'boto=WARN', 'boto=WARN',
'suds=INFO', 'suds=INFO',
'keystone=INFO', 'keystone=INFO',
'eventlet.wsgi.server=WARN' 'eventlet.wsgi.server=WARN'
], ],
help='list of logger=LEVEL pairs'), help='list of logger=LEVEL pairs'),
cfg.BoolOpt('publish_errors', cfg.BoolOpt('publish_errors',
default=False, default=False,
@ -89,7 +89,7 @@ log_opts = [
default='[instance: %(uuid)s] ', default='[instance: %(uuid)s] ',
help='If an instance UUID is passed with the log message, ' help='If an instance UUID is passed with the log message, '
'format it like this'), 'format it like this'),
] ]
generic_log_opts = [ generic_log_opts = [
@ -105,7 +105,7 @@ generic_log_opts = [
cfg.StrOpt('logfile_mode', cfg.StrOpt('logfile_mode',
default='0644', default='0644',
help='Default file mode used when creating log files'), help='Default file mode used when creating log files'),
] ]
CONF = cfg.CONF CONF = cfg.CONF
@ -208,9 +208,9 @@ class JSONFormatter(logging.Formatter):
def formatException(self, ei, strip_newlines=True): def formatException(self, ei, strip_newlines=True):
lines = traceback.format_exception(*ei) lines = traceback.format_exception(*ei)
if strip_newlines: if strip_newlines:
lines = [itertools.ifilter(lambda x: x, lines = [itertools.ifilter(
line.rstrip().splitlines()) lambda x: x,
for line in lines] line.rstrip().splitlines()) for line in lines]
lines = list(itertools.chain(*lines)) lines = list(itertools.chain(*lines))
return lines return lines
@ -252,9 +252,9 @@ class PublishErrorsHandler(logging.Handler):
CONF.list_notifier_drivers): CONF.list_notifier_drivers):
return return
notifier.api.notify(None, 'error.publisher', notifier.api.notify(None, 'error.publisher',
'error_notification', 'error_notification',
notifier.api.ERROR, notifier.api.ERROR,
dict(error=record.msg)) dict(error=record.msg))
def handle_exception(type, value, tb): def handle_exception(type, value, tb):

View File

@ -37,7 +37,7 @@ notifier_opts = [
cfg.StrOpt('default_publisher_id', cfg.StrOpt('default_publisher_id',
default='$host', default='$host',
help='Default publisher_id for outgoing notifications'), help='Default publisher_id for outgoing notifications'),
] ]
CONF = cfg.CONF CONF = cfg.CONF
CONF.register_opts(notifier_opts) CONF.register_opts(notifier_opts)
@ -122,21 +122,21 @@ def notify(context, publisher_id, event_type, priority, payload):
""" """
if priority not in log_levels: if priority not in log_levels:
raise BadPriorityException( raise BadPriorityException(
_('%s not in valid priorities') % priority) _('%s not in valid priorities') % priority)
# Ensure everything is JSON serializable. # Ensure everything is JSON serializable.
payload = jsonutils.to_primitive(payload, convert_instances=True) payload = jsonutils.to_primitive(payload, convert_instances=True)
driver = importutils.import_module(CONF.notification_driver) driver = importutils.import_module(CONF.notification_driver)
msg = dict(message_id=str(uuid.uuid4()), msg = dict(message_id=str(uuid.uuid4()),
publisher_id=publisher_id, publisher_id=publisher_id,
event_type=event_type, event_type=event_type,
priority=priority, priority=priority,
payload=payload, payload=payload,
timestamp=str(timeutils.utcnow())) timestamp=str(timeutils.utcnow()))
try: try:
driver.notify(context, msg) driver.notify(context, msg)
except Exception, e: except Exception, e:
LOG.exception(_("Problem '%(e)s' attempting to " LOG.exception(_("Problem '%(e)s' attempting to "
"send to notification system. Payload=%(payload)s") % "send to notification system. Payload=%(payload)s") %
locals()) locals())

View File

@ -19,9 +19,10 @@ from quantum.openstack.common import importutils
from quantum.openstack.common import log as logging from quantum.openstack.common import log as logging
list_notifier_drivers_opt = cfg.MultiStrOpt('list_notifier_drivers', list_notifier_drivers_opt = cfg.MultiStrOpt(
default=['quantum.openstack.common.notifier.no_op_notifier'], 'list_notifier_drivers',
help='List of drivers to send notifications') default=['quantum.openstack.common.notifier.no_op_notifier'],
help='List of drivers to send notifications')
CONF = cfg.CONF CONF = cfg.CONF
CONF.register_opt(list_notifier_drivers_opt) CONF.register_opt(list_notifier_drivers_opt)

View File

@ -30,6 +30,6 @@ def notify(_context, message):
CONF.default_notification_level) CONF.default_notification_level)
priority = priority.lower() priority = priority.lower()
logger = logging.getLogger( logger = logging.getLogger(
'quantum.openstack.common.notification.%s' % 'quantum.openstack.common.notification.%s' %
message['event_type']) message['event_type'])
getattr(logger, priority)(jsonutils.dumps(message)) getattr(logger, priority)(jsonutils.dumps(message))

View File

@ -22,9 +22,9 @@ from quantum.openstack.common import rpc
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
notification_topic_opt = cfg.ListOpt('notification_topics', notification_topic_opt = cfg.ListOpt(
default=['notifications', ], 'notification_topics', default=['notifications', ],
help='AMQP topic used for openstack notifications') help='AMQP topic used for openstack notifications')
CONF = cfg.CONF CONF = cfg.CONF
CONF.register_opt(notification_topic_opt) CONF.register_opt(notification_topic_opt)

View File

@ -52,7 +52,7 @@ zmq_opts = [
default=('quantum.openstack.common.rpc.' default=('quantum.openstack.common.rpc.'
'matchmaker.MatchMakerLocalhost'), 'matchmaker.MatchMakerLocalhost'),
help='MatchMaker driver', help='MatchMaker driver',
), ),
# The following port is unassigned by IANA as of 2012-05-21 # The following port is unassigned by IANA as of 2012-05-21
cfg.IntOpt('rpc_zmq_port', default=9501, cfg.IntOpt('rpc_zmq_port', default=9501,

View File

@ -68,7 +68,7 @@ class V2WsgiResourceTestCase(unittest.TestCase):
environ = {'wsgiorg.routing_args': (None, {'action': 'test'})} environ = {'wsgiorg.routing_args': (None, {'action': 'test'})}
res = resource.get('', extra_environ=environ, expect_errors=True) res = resource.get('', extra_environ=environ, expect_errors=True)
self.assertEqual(res.status_int, exc.HTTPInternalServerError.code) self.assertEqual(res.status_int, exc.HTTPInternalServerError.code)
def test_mapped_quantum_error(self): def test_mapped_quantum_error(self):
controller = mock.MagicMock() controller = mock.MagicMock()

View File

@ -772,7 +772,7 @@ class TestPortsV2(QuantumDbPluginV2TestCase):
def test_invalid_admin_state(self): def test_invalid_admin_state(self):
with self.network() as network: with self.network() as network:
data = {'port': {'network_id': network['network']['id'], data = {'port': {'network_id': network['network']['id'],
'tenant_id': network['network']['tenant_id'], 'tenant_id': network['network']['tenant_id'],
'admin_state_up': 7, 'admin_state_up': 7,
'fixed_ips': []}} 'fixed_ips': []}}
port_req = self.new_create_request('ports', data) port_req = self.new_create_request('ports', data)
@ -782,7 +782,7 @@ class TestPortsV2(QuantumDbPluginV2TestCase):
def test_invalid_mac_address(self): def test_invalid_mac_address(self):
with self.network() as network: with self.network() as network:
data = {'port': {'network_id': network['network']['id'], data = {'port': {'network_id': network['network']['id'],
'tenant_id': network['network']['tenant_id'], 'tenant_id': network['network']['tenant_id'],
'admin_state_up': 1, 'admin_state_up': 1,
'mac_address': 'mac', 'mac_address': 'mac',
'fixed_ips': []}} 'fixed_ips': []}}

View File

@ -98,13 +98,9 @@ function run_pep8 {
echo "Running pep8 ..." echo "Running pep8 ..."
PEP8_EXCLUDE="vcsversion.py,*.pyc" PEP8_EXCLUDE="vcsversion.py,*.pyc"
# TODO(gongysh) we should pep8 check openstack common files. But that project does # we now turn off pep8 1.3 E125 check to avoid make change to
# not stick to latest pep8 version. Therefore we exclude these common files here. # openstack-common .
# Pep8 does not support exclude in the format quantum/openstack/common, PEP8_OPTIONS="--exclude=$PEP8_EXCLUDE --ignore=E125 --repeat --show-source"
# so I have to exclude some of openstack common files one by one. This also applies
# to tox.ini.
PEP8_EXCLUDE="$PEP8_EXCLUDE,log.py,notifier,rpc"
PEP8_OPTIONS="--exclude=$PEP8_EXCLUDE --repeat --show-source"
PEP8_INCLUDE="bin/* quantum run_tests.py setup*.py" PEP8_INCLUDE="bin/* quantum run_tests.py setup*.py"
${wrapper} pep8 $PEP8_OPTIONS $PEP8_INCLUDE ${wrapper} pep8 $PEP8_OPTIONS $PEP8_INCLUDE
} }

View File

@ -21,7 +21,7 @@ downloadcache = ~/cache/pip
[testenv:pep8] [testenv:pep8]
deps = pep8 deps = pep8
setuptools_git>=0.4 setuptools_git>=0.4
commands = pep8 --repeat --show-source --exclude=.venv,.tox,dist,doc,*egg,log.py,notifier,rpc . commands = pep8 --repeat --show-source --ignore=E125 --exclude=.venv,.tox,dist,doc,*egg .
[testenv:cover] [testenv:cover]
setenv = NOSE_WITH_COVERAGE=1 setenv = NOSE_WITH_COVERAGE=1