#!groovy
funcs = evaluate readTrusted( 'TestON/JenkinsFile/dependencies/JenkinsCommonFuncs.groovy' )

def now = funcs.getCurrentTime()
print now.toString()
today = now[ Calendar.DAY_OF_WEEK ]
machines = params.machines
manually_run = params.manual_run
if( !manually_run ){
    slackSend( color:'#03CD9F',
               message:":sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles:\n"
                        + "Starting tests on : " + now.toString()
                        + "\n:sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles::sparkles:" )
}

machineList = machines.tokenize( "\n;, " )
machineOn = [:]

for (machine in machineList){
    print( machine )
    machineOn[ machine ] = triggerJob( machine )
}

parallel machineOn


def triggerJob( on ){
    return{
        jobToRun = on + "-pipeline-trigger"
        build job: jobToRun, propagate: false
    }
}
