Code Review
/
validation.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Merge "k8s conformance: Sanitize major/minor version str"
[validation.git]
/
bluval
/
blucon.py
diff --git
a/bluval/blucon.py
b/bluval/blucon.py
index
7f72048
..
8072382
100644
(file)
--- a/
bluval/blucon.py
+++ b/
bluval/blucon.py
@@
-29,7
+29,9
@@
import yaml
from bluutil import BluvalError
from bluutil import ShowStopperError
from bluutil import BluvalError
from bluutil import ShowStopperError
+_PULL = False
_OPTIONAL_ALSO = False
_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
@@
-52,28
+54,43
@@
def get_volumes(layer):
return volume_list
return volume_list
-def
invoke_docker(bluprint, layer
):
- """
Start docker container
for given layer
+def
pull_docker(layer, tag
):
+ """
Pull docker image
for given layer
"""
"""
+ cmd = ("docker pull akraino/validation:{0}-{1}"
+ .format(layer, tag))
+
+ args = [cmd]
+ try:
+ print('\nPulling image using {}'.format(args), flush=True)
+ subprocess.call(args, shell=True)
+ except OSError:
+ raise BluvalError(OSError)
+
+def invoke_docker(bluprint, layer, tag):
+ """Start docker container for given layer
+ """
+ if _PULL:
+ pull_docker(layer, tag)
volume_list = get_volumes('common') + get_volumes(layer)
volume_list = get_volumes('common') + get_volumes(layer)
- cmd = ("docker run
" + volume_list
+
- " akraino/validation:{0}-
latest
"
+ cmd = ("docker run
--rm" + volume_list + _SUBNET
+
+ " akraino/validation:{0}-
{3}
"
" /bin/sh -c"
" 'cd /opt/akraino/validation "
" /bin/sh -c"
" 'cd /opt/akraino/validation "
- "&& python bluval/bluval.py -l {0} {1} {2}'"
- .format(layer, ("-o" if _OPTIONAL_ALSO else ""), bluprint))
+ "&& python
-B
bluval/bluval.py -l {0} {1} {2}'"
+ .format(layer, ("-o" if _OPTIONAL_ALSO else ""), bluprint
, tag
))
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))
raise BluvalError(OSError)
subprocess.call(args, shell=True)
except OSError:
#print('Error while executing {}'.format(args))
raise BluvalError(OSError)
-def invoke_dockers(yaml_loc, layer, blueprint_name):
+def invoke_dockers(yaml_loc, layer, blueprint_name
, tag
):
"""Parses yaml file and starts docker container for one/all layers
"""
with open(str(yaml_loc)) as yaml_file:
"""Parses yaml file and starts docker container for one/all layers
"""
with open(str(yaml_loc)) as yaml_file:
@@
-81,29
+98,44
@@
def invoke_dockers(yaml_loc, layer, blueprint_name):
blueprint = yamldoc['blueprint']
if layer is None or layer == "all":
for each_layer in blueprint['layers']:
blueprint = yamldoc['blueprint']
if layer is None or layer == "all":
for each_layer in blueprint['layers']:
- invoke_docker(blueprint_name, each_layer)
+ invoke_docker(blueprint_name, each_layer
, tag
)
else:
else:
- invoke_docker(blueprint_name, layer)
+ invoke_docker(blueprint_name, layer
, tag
)
@click.command()
@click.argument('blueprint')
@click.option('--layer', '-l')
@click.command()
@click.argument('blueprint')
@click.option('--layer', '-l')
+@click.option('--network', '-n')
+@click.option('--tag', '-t')
@click.option('--optional_also', '-o', is_flag=True)
@click.option('--optional_also', '-o', is_flag=True)
-def main(blueprint, layer, optional_also):
+@click.option('--pull', '-p', is_flag=True)
+# pylint: disable=too-many-arguments
+def main(blueprint, layer, network, tag, optional_also, pull):
"""Takes blueprint name and optional layer. Validates inputs and derives
"""Takes blueprint name and optional layer. Validates inputs and derives
- yaml location from blueprint name. Invokes validate on blue
print.
+ yaml location from blueprint name. Invokes validate on blueprint.
"""
"""
+ global _PULL # pylint: disable=global-statement
global _OPTIONAL_ALSO # pylint: disable=global-statement
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 pull:
+ _PULL = True
+ print("_PULL {}".format(_PULL))
if optional_also:
_OPTIONAL_ALSO = True
print("_OPTIONAL_ALSO {}".format(_OPTIONAL_ALSO))
if optional_also:
_OPTIONAL_ALSO = True
print("_OPTIONAL_ALSO {}".format(_OPTIONAL_ALSO))
+ if network is not None:
+ _SUBNET = " --net=" + network
+ print("Using", _SUBNET)
+ if tag is None:
+ tag = 'latest'
+ print("Using tag {}".format(tag))
try:
try:
- invoke_dockers(yaml_loc, layer, blueprint)
+ invoke_dockers(yaml_loc, layer, blueprint
, tag
)
except ShowStopperError as err:
print('ShowStopperError:', err)
except BluvalError as err:
except ShowStopperError as err:
print('ShowStopperError:', err)
except BluvalError as err: