blob: 2e2a681286c3ee7caea373575daa9b2d5eda4e7b [file] [log] [blame] [edit]
import contextlib
import logging
import pprint
import sys
import click
import lnt.formats
from lnt.lnttool.common import submit_options, init_logger
from lnt.server.db.rules_manager import register_hooks
@click.command("import")
@click.argument("instance_path", type=click.UNPROCESSED)
@click.argument("files", nargs=-1, type=click.Path(exists=True), required=True)
@click.option("--database", default="default", show_default=True,
help="database to modify")
@click.option("--format", "output_format", show_default=True,
type=click.Choice(lnt.formats.format_names + ['<auto>']),
default='<auto>', help="input format")
@click.option("--show-sql", is_flag=True, help="show SQL statements")
@click.option("--show-sample-count", is_flag=True)
@click.option("--show-raw-result", is_flag=True)
@click.option("--testsuite", "-s", default='nts')
@click.option("--verbose", "-v", is_flag=True,
help="show verbose test results")
@click.option("--quiet", "-q", is_flag=True, help="don't show test results")
@click.option("--no-email", is_flag=True, help="don't send e-mail")
@click.option("--no-report", is_flag=True, help="don't generate report")
@submit_options
def action_import(instance_path, files, database, output_format, show_sql,
show_sample_count, show_raw_result, testsuite, verbose,
quiet, no_email, no_report, select_machine, merge):
"""import test data into a database"""
import lnt.server.instance
import lnt.util.ImportData
init_logger(logging.INFO if verbose or show_sql else logging.WARNING,
show_sql=show_sql)
# Load the LNT instance.
instance = lnt.server.instance.Instance.frompath(instance_path)
config = instance.config
register_hooks()
# Get the database.
with contextlib.closing(config.get_database(database)) as db:
session = db.make_session()
# Load the database.
success = True
for file_name in files:
result = lnt.util.ImportData.import_and_report(
config, database, db, session, file_name,
output_format, testsuite, show_sample_count, no_email,
no_report, select_machine=select_machine, merge_run=merge)
success &= result.get('success', False)
if quiet:
continue
if show_raw_result:
pprint.pprint(result)
else:
lnt.util.ImportData.print_report_result(result, sys.stdout,
sys.stderr, verbose)
if not success:
raise SystemExit(1)