bluval: Add Jenkins log-parser rules
[validation.git] / bluval / blucon.py
index ececc1f..2fce9d0 100644 (file)
@@ -29,6 +29,9 @@ import yaml
 from bluutil import BluvalError
 from bluutil import ShowStopperError
 
 from bluutil import BluvalError
 from bluutil import ShowStopperError
 
+_OPTIONAL_ALSO = False
+_SUBNET = ""
+
 def get_volumes(layer):
     """Create a list with volumes to mount in the container for given layer
     """
 def get_volumes(layer):
     """Create a list with volumes to mount in the container for given layer
     """
@@ -53,17 +56,17 @@ def get_volumes(layer):
 def invoke_docker(bluprint, layer):
     """Start docker container for given layer
     """
 def invoke_docker(bluprint, layer):
     """Start docker container for given layer
     """
-
     volume_list = get_volumes('common') + get_volumes(layer)
     volume_list = get_volumes('common') + get_volumes(layer)
-    cmd = ("docker run" + volume_list +
+    cmd = ("docker run --rm" + volume_list + _SUBNET +
            " akraino/validation:{0}-latest"
            " /bin/sh -c"
            " 'cd /opt/akraino/validation "
            " akraino/validation:{0}-latest"
            " /bin/sh -c"
            " 'cd /opt/akraino/validation "
-           "&& python bluval/bluval.py -l {0} {1}'").format(layer, bluprint)
+           "&& python -B bluval/bluval.py -l {0} {1} {2}'"
+           .format(layer, ("-o" if _OPTIONAL_ALSO else ""), bluprint))
 
     args = [cmd]
     try:
 
     args = [cmd]
     try:
-        print('\nInvoking {}'.format(args))
+        print('\nInvoking {}'.format(args), flush=True)
         subprocess.call(args, shell=True)
     except OSError:
         #print('Error while executing {}'.format(args))
         subprocess.call(args, shell=True)
     except OSError:
         #print('Error while executing {}'.format(args))
@@ -86,14 +89,24 @@ def invoke_dockers(yaml_loc, layer, blueprint_name):
 @click.command()
 @click.argument('blueprint')
 @click.option('--layer', '-l')
 @click.command()
 @click.argument('blueprint')
 @click.option('--layer', '-l')
-def main(blueprint, layer):
+@click.option('--network', '-n')
+@click.option('--optional_also', '-o', is_flag=True)
+def main(blueprint, layer, network, optional_also):
     """Takes blueprint name and optional layer. Validates inputs and derives
     yaml location from blueprint name. Invokes validate on blue print.
     """
     """Takes blueprint name and optional layer. Validates inputs and derives
     yaml location from blueprint name. Invokes validate on blue print.
     """
+    global _OPTIONAL_ALSO  # pylint: disable=global-statement
+    global _SUBNET # pylint: disable=global-statement
     mypath = Path(__file__).absolute()
     yaml_loc = mypath.parents[0].joinpath('bluval-{}.yaml'.format(blueprint))
     if layer is not None:
         layer = layer.lower()
     mypath = Path(__file__).absolute()
     yaml_loc = mypath.parents[0].joinpath('bluval-{}.yaml'.format(blueprint))
     if layer is not None:
         layer = layer.lower()
+    if optional_also:
+        _OPTIONAL_ALSO = True
+        print("_OPTIONAL_ALSO {}".format(_OPTIONAL_ALSO))
+    if network is not None:
+        _SUBNET = " --net=" + network
+        print("Using", _SUBNET)
     try:
         invoke_dockers(yaml_loc, layer, blueprint)
     except ShowStopperError as err:
     try:
         invoke_dockers(yaml_loc, layer, blueprint)
     except ShowStopperError as err: