diff --git a/Authors b/Authors index 49706a13c67..de37b1dc9b9 100644 --- a/Authors +++ b/Authors @@ -110,6 +110,7 @@ Ricardo Carrillo Cruz Rick Clark Rick Harris Rob Kost +Russell Bryant Ryan Lane Ryan Lucio Ryu Ishimoto diff --git a/nova/rpc/common.py b/nova/rpc/common.py index b8c280630c1..7bfe59a6348 100644 --- a/nova/rpc/common.py +++ b/nova/rpc/common.py @@ -1,3 +1,5 @@ +import copy + from nova import exception from nova import flags from nova import log as logging @@ -27,3 +29,22 @@ def __init__(self, exc_type, value, traceback): super(RemoteError, self).__init__('%s %s\n%s' % (exc_type, value, traceback)) + + +def _safe_log(log_func, msg, msg_data): + """Sanitizes the msg_data field before logging.""" + SANITIZE = { + 'set_admin_password': ('new_pass',), + 'run_instance': ('admin_password',), + } + method = msg_data['method'] + if method in SANITIZE: + msg_data = copy.deepcopy(msg_data) + args_to_sanitize = SANITIZE[method] + for arg in args_to_sanitize: + try: + msg_data['args'][arg] = "" + except KeyError: + pass + + return log_func(msg, msg_data) diff --git a/nova/rpc/impl_carrot.py b/nova/rpc/impl_carrot.py index 57fd074f008..f68f2b838f0 100644 --- a/nova/rpc/impl_carrot.py +++ b/nova/rpc/impl_carrot.py @@ -43,6 +43,7 @@ from nova import exception from nova import fakerabbit from nova import flags +import nova.rpc.common as rpc_common from nova.rpc.common import RemoteError, LOG # Needed for tests @@ -252,7 +253,7 @@ def process_data(self, message_data, message): Example: {'method': 'echo', 'args': {'value': 42}} """ - LOG.debug(_('received %s') % message_data) + rpc_common._safe_log(LOG.debug, _('received %s'), message_data) # This will be popped off in _unpack_context msg_id = message_data.get('_msg_id', None) ctxt = _unpack_context(message_data) diff --git a/nova/rpc/impl_kombu.py b/nova/rpc/impl_kombu.py index b9058f33b74..403c094769b 100644 --- a/nova/rpc/impl_kombu.py +++ b/nova/rpc/impl_kombu.py @@ -33,6 +33,7 @@ from nova import context from nova import exception from nova import flags +import nova.rpc.common as rpc_common from nova.rpc.common import RemoteError, LOG # Needed for tests @@ -597,7 +598,7 @@ def __call__(self, message_data): Example: {'method': 'echo', 'args': {'value': 42}} """ - LOG.debug(_('received %s') % message_data) + rpc_common._safe_log(LOG.debug, _('received %s'), message_data) ctxt = _unpack_context(message_data) method = message_data.get('method') args = message_data.get('args', {})