2020import pygal
2121import pypandoc
2222import semver
23- from chaoslib import merge_vars , substitute
23+ from chaoslib import substitute
2424from chaoslib .caching import cache_activities , lookup_activity
25- from chaoslib .configuration import load_configuration
26- from chaoslib .secret import load_secrets
2725from chaoslib .types import Configuration , Experiment , Journal , Run , Secrets
2826from jinja2 import Environment , PackageLoader
2927from logzero import logger
3634 "generate_report_header" ,
3735 "save_report" ,
3836]
39- __version__ = "0.15 .0"
37+ __version__ = "0.16 .0"
4038
4139curdir = os .getcwd ()
4240basedir = os .path .dirname (__file__ )
@@ -248,20 +246,17 @@ def generate_report_header(
248246
249247
250248def generate_report (
251- journal_path : str ,
249+ journal : Dict [ str , Any ] ,
252250 export_format : str = "markdown" ,
253- var : Dict [ str , Any ] = None ,
254- var_file : List [ str ] = None ,
251+ config : Configuration = None ,
252+ secrets : Secrets = None ,
255253) -> str :
256254 """
257255 Generate a report document from a chaostoolkit journal.
258256
259257 The report is first generated from the markdown template and converted to
260258 the desired format using Pandoc.
261259 """
262- with io .open (journal_path ) as fp :
263- journal = json .load (fp )
264-
265260 # inject some pre-processed values into the journal for rendering
266261 experiment = journal ["experiment" ]
267262 cache_activities (experiment )
@@ -275,11 +270,6 @@ def generate_report(
275270
276271 generate_chart_from_metric_probes (journal , export_format )
277272 add_contribution_model (journal , export_format )
278- config_vars , secret_vars = merge_vars (var , var_file ) or (None , None )
279- config = load_configuration (
280- experiment .get ("configuration" , {}), config_vars
281- )
282- secrets = load_secrets (experiment .get ("secrets" , {}), secret_vars )
283273 template = get_report_template (
284274 journal ["chaoslib-version" ], configuration = config , secrets = secrets
285275 )
@@ -364,13 +354,23 @@ def get_report_template(
364354 env .globals ["pretty_duration" ] = lambda d0 , d1 : date .delta (
365355 dateparser .parse (d0 ), dateparser .parse (d1 ), words = False
366356 )[0 ]
367- env .globals ["substitute" ] = (
368- lambda args : {
369- k : substitute (v , configuration , secrets ) for k , v in args .items ()
370- }
371- if isinstance (args , dict )
372- else args
373- )
357+
358+ def substitution (args , is_tolerance : bool = False ) -> Any :
359+ if is_tolerance :
360+ if isinstance (args , dict ):
361+ if args .get ("type" ) == "probe" :
362+ args = args .get ("provider" , {}).get ("arguments" )
363+ args .pop ("value" , None )
364+
365+ if isinstance (args , dict ):
366+ return {
367+ k : substitute (v , configuration , secrets )
368+ for k , v in args .items ()
369+ }
370+
371+ return substitute (args , configuration , secrets )
372+
373+ env .globals ["substitute" ] = substitution
374374
375375 if not report_version :
376376 return env .get_template (default_template )
0 commit comments