Changeset 6700


Ignore:
Timestamp:
Sep 14, 2018 4:35:02 PM (6 years ago)
Author:
clarksm
Message:

Added <meta> stanza to track history of driver generation
and indicate if job is agent or human generated.

Location:
branches/1.7
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/1.7/gui/apps/execute.tcl

    r6690 r6700  
    3939    value -output ""
    4040    value -cleanup no
     41    value -xmlSource ""
    4142}
    4243
     
    8586    }
    8687}
    87 
    88 set TaskObj [Rappture::Task ::#auto $toolobj $installdir]
     88if {[$driverobj element -as type meta] ne ""} {
     89    $toolobj copy meta from $driverobj meta
     90}
     91
     92if {$params(-xmlSource) != ""} {
     93    set TaskObj [Rappture::Task ::#auto $toolobj $installdir -xmlSource $params(-xmlSource)]
     94} else {
     95    set TaskObj [Rappture::Task ::#auto $toolobj $installdir]
     96}
    8997set LogFid ""
    9098
  • branches/1.7/gui/apps/launcher.tcl

    r6470 r6700  
    150150                set dir [file dirname [info script]]
    151151                set mainscript [file join $dir execute.tcl]
     152                lappend alist -xmlSource rapptureExecute
    152153            }
    153154            -tool {
     
    246247                -output @default \
    247248                -status rappture.status \
    248                 -cleanup yes]
     249                -cleanup yes \
     250                -xmlSource toolParameters]
    249251        }
    250252        "" - "-input" {
  • branches/1.7/gui/scripts/tool.tcl

    r5833 r6700  
    6868
    6969    set _task [Rappture::Task ::#auto $xmlobj $installdir \
     70        -xmlSource rapptureUI \
    7071        -logger ::Rappture::Logger::log]
    7172
  • branches/1.7/lang/tcl/scripts/task.tcl

    r6698 r6700  
    1717# ======================================================================
    1818package require BLT
     19package require uuid
    1920
    2021itcl::class Rappture::Task {
     
    3940    public variable jobstats Rappture::Task::MiddlewareTime
    4041    public variable resultdir "@default"
     42    public variable xmlSource ""
    4143
    4244    constructor {xmlobj installdir args} { # defined below }
     
    6466    private common jobnum 0          ;# counter for unique job number
    6567    private variable _uq
    66    
     68
    6769    private variable _job
    68    
     70
    6971    # get global resources for this tool session
    7072    public proc resources {{option ""}}
     
    250252        if { $_uq(type) == "" } {
    251253            set cmd [GetSimulationCommand $driverFile]
     254            global env
     255            set ::env(RAPPTURE_UQ) False
    252256        } else {
    253257            set cmd [GetUQSimulationCommand $driverFile]
     258            global env
     259            set ::env(RAPPTURE_UQ) True
    254260        }
    255261        if { $cmd == "" } {
     
    424430    $xmlobj put output.filename $filename
    425431    $xmlobj put output.version $Rappture::version
    426    
     432
    427433    if {[info exists ::tcl_platform(user)]} {
    428434        $xmlobj put output.user $::tcl_platform(user)
     
    540546    global rapptureInfo
    541547    set fileName [file join $rapptureInfo(cwd) "driver[pid].xml"]
     548#
     549# Remove existing <meta> section
     550    $_xmlobj remove "meta"
     551# Copy original <meta> section
     552    $_xmlobj copy "meta" from $_origxml "meta"
     553# Add new <meta> entry
     554    if { $xmlSource != "" } {
     555        set identifier [uuid::uuid generate]
     556        $_xmlobj put meta.driver($identifier).source $xmlSource
     557        $_xmlobj put meta.driver($identifier).version $::Rappture::build
     558        $_xmlobj put meta.driver($identifier).time [clock format [clock seconds]]
     559        if { $xmlSource == "rapptureUI" } {
     560            $_xmlobj put meta.generated human
     561        }
     562        set generated [$_xmlobj get meta.generated]
     563        if { $generated == "" } {
     564            $_xmlobj put meta.generated human
     565        }
     566        set generated [$_xmlobj get meta.generated]
     567        global env
     568        set ::env(RAPPTURE_GENERATED) $generated
     569        if {[info exists env(RAPPTURE_GENERATED_FILE)]} {
     570            set f [open $env(RAPPTURE_GENERATED_FILE) w]
     571            puts $f "generated $generated"
     572            close $f
     573        }
     574    }
     575#
    542576    if { [catch {
    543577        set f [open $fileName w]
     
    673707    } elseif { $token == "abort" }  {
    674708        # The user pressed the abort button.
    675        
     709
    676710        set logmesg "Program terminated by user."
    677711        Log run failed [list $logmesg]
     
    680714    } else {
    681715        # Abnormal termination
    682        
     716
    683717        set logmesg "Abnormal program termination:"
    684718        Log run failed [list $logmesg]
     
    712746        set simulation "[pid]_${toolId}_r${toolVers}"
    713747    }
    714    
     748
    715749    # Need to save job info? then invoke the callback
    716750    if { [string length $jobstats] > 0} {
     
    724758        uplevel #0 $jobstats $args
    725759    }
    726        
     760
    727761    #
    728762    # Scan through stderr channel and look for statements that
     
    732766    # MiddlewareTime: job=1 event=simulation start=3.001094 ...
    733767    #
    734    
     768
    735769    set subjobs 0
    736770    set pattern {(^|\n)MiddlewareTime:( +[a-z]+=[^ \n]+)+(\n|$)}
     
    756790        set data(event) "subsimulation"
    757791        set data(start) [expr { $times(start) + $data(start) }]
    758        
     792
    759793        set details ""
    760794        foreach key {job event start walltime cputime status} {
     
    767801            lappend details $key $data($key)
    768802        }
    769        
     803
    770804        if {[string length $jobstats] > 0} {
    771805            uplevel #0 $jobstats $details
    772806        }
    773        
     807
    774808        incr subjobs
    775        
     809
    776810        # Done -- remove this statement
    777811        set _job(stderr) [string replace $_job(stderr) $p0 $p1]
     
    803837        set simulation "[pid]_${toolId}_r${toolVers}"
    804838    }
    805    
     839
    806840#   job info is not required because jobprotocol = submit
    807841#   if { [string length $jobstats] > 0} {
     
    815849#       uplevel #0 $jobstats $args
    816850#   }
    817        
     851
    818852# [click] messages go here
    819853    if { [string length $jobstats] > 0} {
     
    827861        uplevel #0 $jobstats $args
    828862    }
    829        
     863
    830864    #
    831865    # Scan through stderr channel and look for statements that
     
    835869    # MiddlewareTime: job=1 event=simulation start=3.001094 ...
    836870    #
    837    
     871
    838872    set subjobs 0
    839873    set pattern {(^|\n)MiddlewareTime:( +[a-z]+=[^ \n]+)+(\n|$)}
     
    859893        set data(event) "subsimulation"
    860894        set data(start) [expr { $times(start) + $data(start) }]
    861        
     895
    862896        set details ""
    863897        foreach key {job event start walltime cputime status} {
     
    870904            lappend details $key $data($key)
    871905        }
    872        
     906
    873907#       if {[string length $jobstats] > 0} {
    874908#           uplevel #0 $jobstats $details
    875909#       }
    876        
     910
    877911        incr subjobs
    878        
     912
    879913        # Done -- remove this statement
    880914        set _job(stderr) [string replace $_job(stderr) $p0 $p1]
Note: See TracChangeset for help on using the changeset viewer.