#!groovy

branches = params.ONOSbranch
branchList = branches.tokenize( "\n;, " )
script_file = "~/OnosSystemTest/TestON/JenkinsFile/wikiGraphRScripts/trendCHO.R"
saving_directory = "/var/jenkins/workspace/postjob-Fabric5/"
scriptDir = "~/CHO_Jenkins_Scripts/"

graphScript = generateGraphScript( branchList )

stage( 'Generating-Graph' ){
    node( "TestStation-Fabric5s" ){
        runScript( graphScript )
    }
}
stage( 'posting-result' ){
    postJob()
}

def generateGraphScript( branchList ){
    graphScript = ''''''
    for( branch in branchList ){
        branchDir = scriptDir + branch + "/"
        graphScript += '''export BRANCH=''' + branchDir + '''
                          mkdir ''' + branchDir + ''';
                          if [ ! -f ''' + branchDir + '''existing.txt ]; then
                             cp *.csv ''' + branchDir + ''';
                             echo "1" > existing.txt;
                          fi;
                          bash log-summary;''' + '''
                          Rscript ''' +  script_file + ' ' + branchDir + 'event.csv ' +
                                branchDir + 'failure.csv ' + branchDir + 'error.csv ' +
                                branch + ' 60 ' +  saving_directory + ''';
        '''
        print( graphScript )
    }
    return graphScript
}
def runScript( graphScript ){
    sh '''#!/bin/bash -l
          set -i
          set +e
          export PYTHONPATH=/home/sdn/TestON:/home/sdn/sts
          cd ''' + scriptDir + ''';
          ''' + graphScript
}
def postJob(){
        jobToRun = "postjob-Fabric5"
        build job: jobToRun, propagate: false
}
