<% '===================================================== ' 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 = False 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" 'Check if build daemons are all stopped" Call GetIndefinitePause 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" 'Check if build daemons are all stopped" Call GetIndefinitePause End Sub '---------------------------------------------------------------------------------------------------------------------------------------------- ' Queries to check if build daemons are all indefinitly paused Private Sub GetIndefinitePause 'Check if build daemons are all indefinitly paused Dim rsQryRL Set rsQryRL = OraDatabase.DbCreateDynaset(" select * from run_level_schedule rls where rls.indefinite_pause = 'P'", ORADYN_DEFAULT) m_bIndefinitelyPaused = rsQryRL.RecordCount > 0 rsQryRL.Close Set rsQryRL = Nothing 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 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("
") Response.Write("") Response.Write("") ' add left side of chart Response.Write("") IF m_rsQryDS.NoMatch Then Response.Write("") Else 'add an icon for each daemon Do While Not m_rsQryDS.NoMatch iDmStsStatus=CInt(m_rsQryDS("status")) If m_bIndefinitelyPaused Then sDmStsImg="icons/tdmsts_stopped.gif" sDmStsToolTip="Daemon indefinitley paused." & " " 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." & " " 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." & " " 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 Response.Write("") m_rsQryDS.FindNext(sDmStsSearch) Loop End If ' add right side of chart Response.Write("") Response.Write("") Response.Write("
") Response.Write("") Response.Write("") Response.Write("") Response.Write("") Response.Write(" "","title='" & sDmStsToolTip & "'","") & ">") 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 %>