]>
git.ipfire.org Git - nitsi.git/blob - nitsi.in
6 from nitsi
.logger
import init_logging
, Log_Formatter
7 from nitsi
.recipe
import RecipeExeption
11 logger
= logging
.getLogger("nitsi")
13 # create console handler
14 ch
= logging
.StreamHandler()
15 formatter
= Log_Formatter()
16 ch
.setFormatter(formatter
)
17 # add the handler to the logger
21 parser
= argparse
.ArgumentParser()
23 parser
.add_argument( "--log-level", choices
=[ "debug", "error", "info", "warning" ], dest
="log_level", default
="info")
25 parser
.add_argument("-v", "--version", help="Display version and exit",
26 action
="store_true", dest
="version")
28 # Subparser for different commands
29 subparsers
= parser
.add_subparsers(dest
="subparsers_name")
31 parser_run_test
= subparsers
.add_parser('run-test', help='run-test help')
32 parser_run_test
.add_argument("-d", "--directory", dest
="dir", default
=None)
33 parser_run_test
.add_argument("-r", "--recipe", dest
="recipe", default
=None)
34 parser_run_test
.add_argument("-s", "--settings", dest
="settings", default
=None)
35 parser_run_test
.add_argument("--name", dest
="name", default
=None)
36 parser_run_test
.add_argument("--description", dest
="desc", default
=None)
37 parser_run_test
.add_argument("--copy-to", dest
="copy_to", default
=None)
38 parser_run_test
.add_argument("--copy-from", dest
="copy_from", default
=None, nargs
='+')
39 parser_run_test
.add_argument("--virtual-environment", dest
="virtual_environ_path", default
=None)
41 args
= parser
.parse_args()
43 # We just log the version and exit
45 logger
.info("nitsi version: {}".format("@PACKAGE_VERSION@"))
50 # We are doing this after we logged the version
51 # to avoid that the version is not shown because of the log level
52 if args
.log_level
== "info":
53 logger
.setLevel(logging
.INFO
)
54 elif args
.log_level
== "debug":
55 logger
.setLevel(logging
.DEBUG
)
56 elif args
.log_level
== "warning":
57 logger
.setLevel(logging
.WARNING
)
58 elif args
.log_level
== "error":
59 logger
.setLevel(logging
.ERROR
)
61 # Here we are going to run a test
62 if args
.subparsers_name
== "run-test":
63 if not (args
.dir or args
.recipe
):
64 logger
.error("You need to provide at least a director of a test '-d' or a recipe file '-r'")
67 if (args
.dir and args
.recipe
) or (args
.dir and args
.settings
):
68 logger
.error("You cannot use the options '-d' and '-r' or '-d' and '-s' at the same time")
71 # For all other stuff we need logging to a file
73 log_dir
= init_logging(args
.dir)
75 log_dir
= init_logging(args
.recipe
)
77 # We now going to log everything to log_dir/genaral.log
78 fh
= logging
.FileHandler("{}/general.log".format(log_dir
))
80 logger
.debug("We now logging everything to {}/general.log".format(log_dir
))
82 # Build up settings dict
85 settings
["name"] = args
.name
87 settings
["description"] = args
.desc
89 settings
["copy_to"] = args
.copy_to
91 settings
["copy_from"] = nitsi
.settings
.settings_parse_copy_from(args
.copy_from
)
92 if args
.virtual_environ_path
:
93 settings
["virtual_environ_path"] = args
.virtual_environ_path
97 currenttest
= nitsi
.test
.Test(
100 recipe_file
=args
.recipe
,
101 settings_file
=args
.settings
,
102 cmd_settings
=settings
)
103 currenttest
.read_settings()
104 currenttest
.virtual_environ_setup_stage_1()
105 currenttest
.load_recipe()
106 currenttest
.virtual_environ_setup_stage_2()
107 except RecipeExeption
as e
:
112 currenttest
.virtual_environ_start()
113 currenttest
.run_recipe()
114 except nitsi
.test
.TestException
as e
:
117 except BaseException
as e
:
121 currenttest
.virtual_environ_stop()
125 if __name__
== "__main__":
126 return_value
= main()
127 logger
.debug("Return value of main is: {}".format(return_value
))