From 524a09ff076b995ae9f4ded6d8b8c833c9ceaeaa Mon Sep 17 00:00:00 2001 From: Zhongyue Luo Date: Tue, 24 Sep 2013 09:50:32 +0800 Subject: [PATCH] Sync rootwrap with code from oslo The rootwrap module had been directly edited in commit 1d366293. These are all minor changes bringing neutron up to commit c03f247 c03f247 Skip hidden files while traversion rootwrap filters 3f4d1d5 Fix os.getlogin() problem with no tty fc04531 Send rootwrap exit error message to stderr 3663010 rootwrap: improve Python 3 compatibility 28395d9 Fixes files with wrong bitmode Fixes bug #1229492 Change-Id: Ica406e021700578b27c3337498011059c3a78719 --- neutron/openstack/common/rootwrap/cmd.py | 14 +++++++++++--- neutron/openstack/common/rootwrap/wrapper.py | 8 +++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/neutron/openstack/common/rootwrap/cmd.py b/neutron/openstack/common/rootwrap/cmd.py index 3ac8c5b23f6..aa47507162c 100644 --- a/neutron/openstack/common/rootwrap/cmd.py +++ b/neutron/openstack/common/rootwrap/cmd.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright (c) 2011 OpenStack Foundation. @@ -57,12 +56,21 @@ def _subprocess_setup(): def _exit_error(execname, message, errorcode, log=True): - print("%s: %s" % (execname, message)) + print("%s: %s" % (execname, message), file=sys.stderr) if log: logging.error(message) sys.exit(errorcode) +def _getlogin(): + try: + return os.getlogin() + except OSError: + return (os.getenv('USER') or + os.getenv('USERNAME') or + os.getenv('LOGNAME')) + + def main(): # Split arguments, require at least a command execname = sys.argv.pop(0) @@ -107,7 +115,7 @@ def main(): exec_dirs=config.exec_dirs) if config.use_syslog: logging.info("(%s > %s) Executing %s (filter match = %s)" % ( - os.getlogin(), pwd.getpwuid(os.getuid())[0], + _getlogin(), pwd.getpwuid(os.getuid())[0], command, filtermatch.name)) obj = subprocess.Popen(command, diff --git a/neutron/openstack/common/rootwrap/wrapper.py b/neutron/openstack/common/rootwrap/wrapper.py index 16e3fbb3900..5786ac37777 100644 --- a/neutron/openstack/common/rootwrap/wrapper.py +++ b/neutron/openstack/common/rootwrap/wrapper.py @@ -16,12 +16,13 @@ # under the License. -import ConfigParser import logging import logging.handlers import os import string +from six import moves + from neutron.openstack.common.rootwrap import filters @@ -107,8 +108,9 @@ def load_filters(filters_path): for filterdir in filters_path: if not os.path.isdir(filterdir): continue - for filterfile in os.listdir(filterdir): - filterconfig = ConfigParser.RawConfigParser() + for filterfile in filter(lambda f: not f.startswith('.'), + os.listdir(filterdir)): + filterconfig = moves.configparser.RawConfigParser() filterconfig.read(os.path.join(filterdir, filterfile)) for (name, value) in filterconfig.items("Filters"): filterdefinition = [string.strip(s) for s in value.split(',')]