Default log location failes for non-root users

Any sub-command fails when executed as non-root user due to default
location being set to /var/log/paunch.log
Log location should be optional and specified by user.

Closes-bug: 1803421
Change-Id: I520add525efa7b7f959fb61aeb2053ef6a4085aa
This commit is contained in:
Radoslaw Smigielski 2018-11-29 13:49:39 +01:00
parent 328e983d52
commit 6a6b03b136
2 changed files with 30 additions and 34 deletions

View File

@ -20,7 +20,6 @@ import yaml
import paunch
from paunch import constants
from paunch import utils
@ -68,13 +67,8 @@ class Apply(command.Command):
return parser
def take_action(self, parsed_args):
# takes 1, or 2 if --verbose, or 4 - 5 if --debug
log_level = (self.app_args.verbose_level +
int(self.app_args.debug) * 3)
log_file = self.app_args.log_file or constants.LOG_FILE
self.log = utils.common.configure_logging(
__name__, log_level, log_file)
(self.log, log_file, log_level) = \
utils.common.configure_logging_from_args(__name__, self.app_args)
labels = collections.OrderedDict()
for l in parsed_args.labels:
k, v = l.split(('='), 1)
@ -119,12 +113,8 @@ class Cleanup(command.Command):
return parser
def take_action(self, parsed_args):
# takes 1, or 2 if --verbose, or 4 - 5 if --debug
log_level = (self.app_args.verbose_level +
int(self.app_args.debug) * 3)
log_file = self.app_args.log_file or constants.LOG_FILE
self.log = utils.common.configure_logging(
__name__, log_level, log_file)
(self.log, log_file, log_level) = \
utils.common.configure_logging_from_args(__name__, self.app_args)
paunch.cleanup(
parsed_args.config_id,
managed_by=parsed_args.managed_by,
@ -155,12 +145,8 @@ class Delete(command.Command):
return parser
def take_action(self, parsed_args):
# takes 1, or 2 if --verbose, or 4 - 5 if --debug
log_level = (self.app_args.verbose_level +
int(self.app_args.debug) * 3)
log_file = self.app_args.log_file or constants.LOG_FILE
self.log = utils.common.configure_logging(
__name__, log_level, log_file)
(self.log, log_file, log_level) = \
utils.common.configure_logging_from_args(__name__, self.app_args)
paunch.delete(
parsed_args.config_id,
parsed_args.managed_by,
@ -253,14 +239,8 @@ class Debug(command.Command):
return parser
def take_action(self, parsed_args):
# takes 1, or 2 if --verbose, or 4 - 5 if --debug
log_level = (self.app_args.verbose_level +
int(self.app_args.debug) * 3)
# Only log to a file if explicitely set via CLI args
log_file = self.app_args.log_file
self.log = utils.common.configure_logging(
__name__, log_level, log_file)
(self.log, log_file, log_level) = \
utils.common.configure_logging_from_args(__name__, self.app_args)
labels = collections.OrderedDict()
for l in parsed_args.labels:
k, v = l.split(('='), 1)
@ -323,12 +303,8 @@ class List(lister.Lister):
return parser
def take_action(self, parsed_args):
# takes 1, or 2 if --verbose, or 4 - 5 if --debug
log_level = (self.app_args.verbose_level +
int(self.app_args.debug) * 3)
log_file = self.app_args.log_file or constants.LOG_FILE
self.log = utils.common.configure_logging(
__name__, log_level, log_file)
(self.log, log_file, log_level) = \
utils.common.configure_logging_from_args(__name__, self.app_args)
configs = paunch.list(
parsed_args.managed_by,
log_level=log_level,

View File

@ -14,8 +14,12 @@
# under the License.
import logging
import os
import sys
from paunch import constants
from paunch import utils
def configure_logging(name, level=3, log_file=None):
'''Mimic oslo_log default levels and formatting for the logger. '''
@ -44,3 +48,19 @@ def configure_logging(name, level=3, log_file=None):
log.propagate = False
return log
def configure_logging_from_args(name, app_args):
# takes 1, or 2 if --verbose, or 4 - 5 if --debug
log_level = (app_args.verbose_level +
int(app_args.debug) * 3)
# if executed as root log to specified file or default log file
if os.getuid() == 0:
log_file = app_args.log_file or constants.LOG_FILE
else:
log_file = app_args.log_file
log = utils.common.configure_logging(
__name__, log_level, log_file)
return (log, log_file, log_level)