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:
parent
b7501f2be1
commit
5fcf6ccd95
@ -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]
|
||||||
|
|
||||||
|
@ -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):
|
||||||
|
@ -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())
|
||||||
|
@ -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)
|
||||||
|
@ -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))
|
||||||
|
@ -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)
|
||||||
|
@ -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,
|
||||||
|
@ -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()
|
||||||
|
@ -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': []}}
|
||||||
|
10
run_tests.sh
10
run_tests.sh
@ -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
|
||||||
}
|
}
|
||||||
|
2
tox.ini
2
tox.ini
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user