Visualisation -
  - generate json from within the top level flow
    - it is not possible to generate json in the with statement any more since the Jenkins job info is now retrived in the __exit__ of the top level flow, and the graph needs the url from the job object
    - use AtomicFile to guarantee atomic updated os json output files