Merge #624 Fix #620: Support for log flags in mbs-manager and mbs-build

This commit is contained in:
Filip Valder
2017-08-07 10:44:54 +00:00
4 changed files with 62 additions and 18 deletions

View File

@@ -265,7 +265,7 @@ def submit_module_build(scm_url, branch, server, id_provider, pyrpkg, verify=Tru
return data['id']
return -3
def do_local_build(scm_url, branch, skiptests):
def do_local_build(scm_url, branch, skiptests, log_flag=None):
"""
Starts the local build using the 'mbs-manager build_module_locally'
command. Returns exit code of that command or None when scm_url or
@@ -278,7 +278,10 @@ def do_local_build(scm_url, branch, skiptests):
logging.info("Starting local build of %s, branch %s", scm_url, branch)
command = ['mbs-manager', 'build_module_locally']
command = ['mbs-manager']
if log_flag:
command.append(log_flag)
command.append('build_module_locally')
if skiptests:
command.append('--skiptests')
logging.info("Tests will be skipped due to --skiptests option.")
@@ -372,10 +375,17 @@ def main():
# Parse command line arguments
parser = argparse.ArgumentParser(description="Submits and manages module builds.")
subparsers = parser.add_subparsers(dest="cmd_name")
parser.add_argument('-v', dest='verbose', action='store_true',
# logging
flag_debug = '-d'
flag_verbose = '-v'
flag_quiet = '-q'
parser.add_argument(flag_debug, dest='debug', action='store_true',
help="shows debug output")
parser.add_argument(flag_verbose, dest='verbose', action='store_true',
help="shows verbose output")
parser.add_argument('-q', dest='quiet', action='store_true',
help="shows only warnings and errors")
parser.add_argument(flag_quiet, dest='quiet', action='store_true',
help="shows only errors")
parser.add_argument('-k', '--insecure', dest='verify', action='store_false',
help="allow connections to SSL sites without certs")
parser.add_argument('-s', dest='server', action='store',
@@ -438,12 +448,18 @@ def main():
args = parser.parse_args()
# Initialize the logging.
if args.verbose:
log_flag = None
if args.debug:
loglevel = logging.DEBUG
elif args.quiet:
loglevel = logging.WARNING
else:
log_flag = flag_debug
elif args.verbose:
loglevel = logging.INFO
log_flag = flag_verbose
elif args.quiet:
loglevel = logging.ERROR
log_flag = flag_quiet
else:
loglevel = logging.WARNING
logging.basicConfig(level=loglevel, format="%(levelname)s: %(message)s")
if args.cmd_name == "submit":
@@ -458,7 +474,8 @@ def main():
else:
logging.info("Submitted module build %r" % build_id)
elif args.cmd_name == "local":
sys.exit(do_local_build(args.scm_url, args.branch, args.skiptests))
sys.exit(do_local_build(args.scm_url, args.branch, args.skiptests,
log_flag))
elif args.cmd_name == "watch":
# Watch the module build.
try:

View File

@@ -44,7 +44,8 @@ from flask import Flask, has_app_context, url_for
from flask_sqlalchemy import SQLAlchemy
from logging import getLogger
from module_build_service.logger import init_logging, ModuleBuildLogs
from module_build_service.logger import (
init_logging, ModuleBuildLogs, level_flags)
from module_build_service.errors import (
ValidationError, Unauthorized, UnprocessableEntity, Conflict, NotFound,
@@ -52,14 +53,32 @@ from module_build_service.errors import (
from module_build_service.config import init_config
from module_build_service.proxy import ReverseProxy
app = Flask(__name__)
app.wsgi_app = ReverseProxy(app.wsgi_app)
def create_app(debug=False, verbose=False, quiet=False):
app = Flask(__name__)
app.wsgi_app = ReverseProxy(app.wsgi_app)
# logging (intended for flask-script, see manage.py)
log = getLogger(__name__)
if debug:
log.setLevel(level_flags["debug"])
elif verbose:
log.setLevel(level_flags["verbose"])
elif quiet:
log.setLevel(level_flags["quiet"])
return app
app = create_app()
conf = init_config(app)
db = SQLAlchemy(app)
def load_views():
from module_build_service import views
assert views
@app.errorhandler(ValidationError)
def validationerror_error(e):
"""Flask error handler for ValidationError exceptions"""
@@ -122,5 +141,4 @@ def get_url_for(*args, **kwargs):
"multiple session being used in the same time.")
return url_for(*args, **kwargs)
from module_build_service import views
load_views()

View File

@@ -51,6 +51,12 @@ levels["error"] = logging.ERROR
levels["warning"] = logging.WARNING
levels["info"] = logging.INFO
level_flags = {}
level_flags["debug"] = levels["debug"]
level_flags["verbose"] = levels["info"]
level_flags["quiet"] = levels["error"]
log_format = '%(asctime)s - %(threadName)s - %(name)s - %(levelname)s - %(message)s'

7
module_build_service/manage.py Normal file → Executable file
View File

@@ -30,7 +30,7 @@ import ssl
from shutil import rmtree
import getpass
from module_build_service import app, conf, db
from module_build_service import app, conf, db, create_app
from module_build_service import models
from module_build_service.utils import (
submit_module_build_from_scm,
@@ -39,11 +39,14 @@ import module_build_service.messaging
import module_build_service.scheduler.consumer
manager = Manager(app)
manager = Manager(create_app)
help_args = ('-?', '--help')
manager.help_args = help_args
migrate = flask_migrate.Migrate(app, db)
manager.add_command('db', flask_migrate.MigrateCommand)
manager.add_option('-d', '--debug', dest='debug', action='store_true')
manager.add_option('-v', '--verbose', dest='verbose', action='store_true')
manager.add_option('-q', '--quiet', dest='quiet', action='store_true')
def console_script_help(f):