%
'=====================================================
' daemon_status.asp
'=====================================================
%>
<%
Class DaemonStatus
private m_rsQryDS ' m_rsQryDS is a record set containing daemon status details. It is created by sub GetDaemonStatus or GetDaemonStatusForRelease
private m_bIndefinitelyPaused ' m_bIndefinitelyPaused indicates if all deamons have been indefintely paused
'----------------------------------------------------------------------------------------------------------------------------------------------
' Constructor
Private Sub Class_Initialize()
Set m_rsQryDS = Nothing
m_bIndefinitelyPaused = IndefPause
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
' Queries the daemons status for all releases of a specified project
' Parameters:
' iProjId is the specified project
Sub GetDaemonStatus(iProjId)
OraDatabase.Parameters.Add "PROJ_ID", iProjId, ORAPARM_INPUT, ORATYPE_NUMBER
Set m_rsQryDS = OraDatabase.DbCreateDynaset( GetQuery ("ReleaseDaemonStatus.sql"), ORADYN_DEFAULT )
OraDatabase.Parameters.Remove "PROJ_ID"
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
' Queries the daemons status for a specified release
' Parameters:
' iRtagId is the specified release
Sub GetDaemonStatusForRelease(iRtagId)
OraDatabase.Parameters.Add "RTAG_ID", iRtagId, ORAPARM_INPUT, ORATYPE_NUMBER
Set m_rsQryDS = OraDatabase.DbCreateDynaset( GetQuery ("ReleaseDaemonStatusForRelease.sql"), ORADYN_DEFAULT )
OraDatabase.Parameters.Remove "RTAG_ID"
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
' Renders a bar chart to show the daemon status for a specified release
' irtag_id: the specified release
' isize: the status icon size in pixels
Sub RenderDaemonStatusForRelease(irtag_id,isize)
Call GetDaemonStatusForRelease(irtag_id)
Call RenderDaemonStatus(irtag_id,isize)
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
' Gets the daemon summary for a specified release
' Parameters:
' irtag_id: the specified release
' Assumes GetDaemonStatus or GetDaemonStatusForRelease has already been called
'
Function GetDaemonSummary(irtag_id)
Dim iDmStsStatus
Dim sDmStsToolTip
Dim sDmStsSearch
Dim iDmStsTotalUnavailable
Dim iDmStsTotalTimedout
Dim iDmStsTotalEnabled
Dim iDmStsTotalDisabled
Dim iDmStsTotalPaused
Dim iDmStsTotalEngaged
Dim iDmStsTotalRunning
Dim iDmStsTotal
' Get status summary for showing in the bar chart popup tooltip
' Get daemons for specified release
sDmStsSearch="rtag_id=" & irtag_id
m_rsQryDS.FindFirst(sDmStsSearch)
iDmStsTotal=0 ' total daemons
iDmStsTotalRunning=0 ' total running
iDmStsTotalTimedout=0 ' total timed out
iDmStsTotalUnavailable=0 ' total unavailable
iDmStsTotalEnabled=0 ' total enabled
iDmStsTotalPaused=0 ' total paused
iDmStsTotalDisabled=0 ' total disabled
iDmStsTotalEngaged=0 ' total enagaged
' Loop through each daemon and get summary totals
Do While Not m_rsQryDS.NoMatch
iDmStsStatus=CInt(m_rsQryDS("status"))
iDmStsTotal = iDmStsTotal + 1
Select Case iDmStsStatus
Case -1
iDmStsTotalUnavailable= iDmStsTotalUnavailable + 1
Case -2
iDmStsTotalTimedout= iDmStsTotalTimedout + 1
iDmStsTotalRunning=iDmStsTotalRunning + 1
Case 0 ' if enabled
iDmStsTotalEnabled= iDmStsTotalEnabled + 1
iDmStsTotalRunning=iDmStsTotalRunning + 1
Case 1 ' if paused
iDmStsTotalPaused= iDmStsTotalPaused + 1
Case 2 ' if disabled
iDmStsTotalDisabled= iDmStsTotalDisabled + 1
Case 3 ' if engaged
iDmStsTotalEngaged= iDmStsTotalEngaged + 1
iDmStsTotalRunning=iDmStsTotalRunning + 1
End Select
m_rsQryDS.FindNext(sDmStsSearch)
Loop
If iDmStsTotal = 0 Then
sDmStsToolTip= "No daemons found." & "
"
ElseIf m_bIndefinitelyPaused Then
sDmStsToolTip= "WARNING: Build Daemons are all stopped." & "
" & "Please contact an administrator." & "
"
Else
sDmStsToolTip = ""
If iDmStsTotalRunning > 0 Then
sDmStsToolTip = sDmStsToolTip & iDmStsTotalRunning & " daemon" & iif(iDmStsTotalRunning > 1,"s","") & " running." & "
"
End If
If iDmStsTotalPaused > 0 Then
sDmStsToolTip = sDmStsToolTip & iDmStsTotalPaused & " daemon" & iif(iDmStsTotalPaused > 1,"s","") & " paused." & "
"
End If
If iDmStsTotalDisabled > 0 Then
sDmStsToolTip = sDmStsToolTip & iDmStsTotalDisabled & " daemon" & iif(iDmStsTotalDisabled > 1,"s","") & " disabled." & "
"
End If
If iDmStsTotalUnavailable > 0 Then
sDmStsToolTip = sDmStsToolTip & iDmStsTotalUnavailable & " daemon" & iif(iDmStsTotalUnavailable > 1,"s","") & " unavailable." & "
"
End If
'If iDmStsTotalEngaged > 0 Then
' sDmStsToolTip = sDmStsToolTip & iDmStsTotalEngaged & " daemon" & iif(iDmStsTotalEngaged > 1,"s","") & " engaged in a build." & "
"
'End If
'If iDmStsTotalTimedout > 0 Then
' sDmStsToolTip = sDmStsToolTip & iDmStsTotalTimedout & " daemon" & iif(iDmStsTotalTimedout > 1,"s","") & " timedout." & "
"
'End If
End If
sDmStsToolTip = sDmStsToolTip & "Click to view details."
GetDaemonSummary = sDmStsToolTip
End Function
'----------------------------------------------------------------------------------------------------------------------------------------------
' Renders a bar chart to show the daemon status for a specified release
' Parameters:
' irtag_id: the specified release
' isize: the status icon size in pixels
' Assumes GetDaemonStatus or GetDaemonStatusForRelease has already been called
'
Sub RenderDaemonStatus(irtag_id,isize)
Dim iDmStsStatus
Dim sDmStsImg
Dim sDmStsToolTip
Dim sDmStsSearch
Dim iheight
Dim iWidth
Dim iWidthEnd
Dim sDmStsAge
Dim sDmStsAgeTip
Dim bTestAge
Dim bIsDeprecated
Dim bHasDeprecated : bHasDeprecated = false
iHeight=isize
' the status icon default dimensions are height:48 and width:30
' ie. ratio of height to width is 16:10
' the bar end icon default dimensions are height:48 and width:8
' ie. ratio of height to bar end is 16:3
iWidth = Round(iSize*10/16)
iWidthEnd = Round(iSize*3/16)
' First, get status summary for showing in the bar chart popup tooltip
sDmStsToolTip = GetDaemonSummary(irtag_id)
sDmStsSearch="rtag_id=" & irtag_id
m_rsQryDS.FindFirst(sDmStsSearch)
' Now, create deamon bar chart for the specified release
Response.Write("
")
' Add in tooltip generated above
Response.Write("")
Response.Write("")
Response.Write("")
Response.Write("")
' add left side of chart
Response.Write("")
Response.Write(" ")
Response.Write(" | ")
IF m_rsQryDS.NoMatch Then
Response.Write("")
Response.Write(" ")
Response.Write(" | ")
Else
'add an icon for each daemon
Do While Not m_rsQryDS.NoMatch
bTestAge = true
bIsDeprecated = m_rsQryDS("active") = "N"
iDmStsStatus=CInt(m_rsQryDS("status"))
If bIsDeprecated Then
bHasDeprecated = true
sDmStsImg="icons/tdmsts_notfound.gif"
sDmStsToolTip="Daemon Deprecated." & "
"
bTestAge = false
ElseIf m_bIndefinitelyPaused Then
sDmStsImg="icons/tdmsts_stopped.gif"
sDmStsToolTip="Daemon indefinitley paused." & "
"
bTestAge = false
ElseIf iDmStsStatus = -2 Then
sDmStsImg="icons/tdmsts_timedout.gif"
sDmStsToolTip="Daemon timed out." & "
"
ElseIf iDmStsStatus = -1 Then
sDmStsImg="icons/tdmsts_unavailable.gif"
sDmStsToolTip="Daemon unavailable." & "
"
bTestAge = false
ElseIf iDmStsStatus = 0 Then
sDmStsImg="icons/tdmsts_started.gif"
sDmStsToolTip="Daemon running." & "
"
ElseIf iDmStsStatus = 1 Then
sDmStsImg="icons/tdmsts_paused.gif"
sDmStsToolTip="Daemon paused." & "
"
ElseIf iDmStsStatus = 2 Then
sDmStsImg="icons/tdmsts_stopped.gif"
sDmStsToolTip="Daemon stopped." & "
"
bTestAge = false
ElseIf iDmStsStatus = 3 Then
sDmStsImg="icons/tdmsts_engaged.gif"
sDmStsToolTip="Daemon engaged in a build." & "
"
End If
If sDmStsToolTip <> "" Then
sDmStsToolTip = sDmStsToolTip & "Click to view details."
End If
If bTestAge AND m_rsQryDS("daemon_mode") = "M" Then
Dim nBuildAge
Dim nLastBuildDays
nBuildAge = NiceInt(m_rsQryDS("build_age"), 31)
nLastBuildDays = NiceInt(m_rsQryDS("last_build_days"), 31)
If nBuildAge > 0 Then
If nLastBuildDays > nBuildAge Then
sDmStsAge = "images/s_warning.gif"
sDmStsAgeTip = "No Build in this release since " & m_rsQryDS("last_build") & ". [" & m_rsQryDS("last_build_days") & " Days]"
End If
End If
End If
Response.Write("")
Response.Write(" "","title='" & sDmStsToolTip & "'","") & ">")
Response.Write(" | ")
m_rsQryDS.FindNext(sDmStsSearch)
Loop
End If
' add right side of chart
Response.Write("")
Response.Write(" ")
Response.Write(" | ")
If sDmStsAge <> "" Then
Response.Write("")
Response.Write(" ")
Response.Write(" | ")
End If
If bHasDeprecated Then
Response.Write("")
Response.Write(" ")
Response.Write(" | ")
End If
Response.Write(" ")
Response.Write(" ")
Response.Write(" | ")
Response.Write("
")
Response.Write("
")
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
' Destructor
Sub Class_Terminate
m_rsQryDS.Close
Set m_rsQryDS = Nothing
End Sub
End Class
%>