Move the recursive flushing to the log module.

This commit is contained in:
Joshua Harlow 2012-10-16 21:14:51 -07:00
parent 2c1334460d
commit 64f443aaf9
2 changed files with 14 additions and 13 deletions

View File

@ -16,10 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from logging import StreamHandler
import os
import time
from cloudinit import log as logging
from cloudinit import util
REBOOT_FILE = "/var/run/reboot-required"
@ -33,17 +33,6 @@ def _multi_cfg_bool_get(cfg, *keys):
return False
def _flush_loggers(root):
for h in root.handlers:
if isinstance(h, (StreamHandler)):
try:
h.flush()
except IOError:
pass
if root.parent:
_flush_loggers(root.parent)
def _fire_reboot(log, wait_attempts=6, initial_sleep=1, backoff=2):
util.subp(REBOOT_CMD)
start = time.time()
@ -98,7 +87,7 @@ def handle(_name, cfg, cloud, log, _args):
try:
log.warn("Rebooting after upgrade or install per %s", REBOOT_FILE)
# Flush the above warning + anything else out...
_flush_loggers(log)
logging.flushLoggers(log)
_fire_reboot(log)
except Exception as e:
util.logexc(log, "Requested reboot did not happen!")

View File

@ -53,6 +53,18 @@ def setupBasicLogging():
root.setLevel(DEBUG)
def flushLoggers(root):
if not root:
return
for h in root.handlers:
if isinstance(h, (logging.StreamHandler)):
try:
h.flush()
except IOError:
pass
flushLoggers(root.parent)
def setupLogging(cfg=None):
# See if the config provides any logging conf...
if not cfg: