Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
183 brianf 1
<%
2
'=====================================================
3
'                daemon_status.asp
4
'=====================================================
5
%>
6
<%
7
 
8
Class DaemonStatus
9
 
10
private m_rsQryDS              '   m_rsQryDS is a record set containing daemon status details.  It is created by sub GetDaemonStatus or GetDaemonStatusForRelease
11
private m_bIndefinitelyPaused  '   m_bIndefinitelyPaused indicates if all deamons have been indefintely paused
12
 
13
'----------------------------------------------------------------------------------------------------------------------------------------------
14
' Constructor
15
Private Sub Class_Initialize()
16
  Set m_rsQryDS = Nothing
17
  m_bIndefinitelyPaused = False
18
End Sub
19
 
20
'----------------------------------------------------------------------------------------------------------------------------------------------
21
' Queries the daemons status for all releases of a specified project
22
' Parameters:
23
'   iProjId is the specified project
24
Sub GetDaemonStatus(iProjId)
25
  OraDatabase.Parameters.Add "PROJ_ID",  iProjId,  ORAPARM_INPUT, ORATYPE_NUMBER
26
  Set m_rsQryDS = OraDatabase.DbCreateDynaset( GetQuery ("ReleaseDaemonStatus.sql"), ORADYN_DEFAULT )
27
  OraDatabase.Parameters.Remove "PROJ_ID"
28
 
29
  'Check if build daemons are all stopped"
30
  Call GetIndefinitePause
31
End Sub
32
 
33
'----------------------------------------------------------------------------------------------------------------------------------------------
34
' Queries the daemons status for a specified release
35
' Parameters:
36
'   iRtagId is the specified release
37
Sub GetDaemonStatusForRelease(iRtagId)
38
  OraDatabase.Parameters.Add "RTAG_ID",  iRtagId,  ORAPARM_INPUT, ORATYPE_NUMBER
39
  Set m_rsQryDS = OraDatabase.DbCreateDynaset( GetQuery ("ReleaseDaemonStatusForRelease.sql"), ORADYN_DEFAULT )
40
  OraDatabase.Parameters.Remove "RTAG_ID"
41
 
42
  'Check if build daemons are all stopped"
43
  Call GetIndefinitePause
44
End Sub
45
 
46
'----------------------------------------------------------------------------------------------------------------------------------------------
47
' Queries to check if build daemons are all indefinitly paused
48
Private Sub GetIndefinitePause
49
  'Check if build daemons are all indefinitly paused
50
  Dim rsQryRL
51
  Set rsQryRL = OraDatabase.DbCreateDynaset(" select * from run_level_schedule rls where rls.indefinite_pause = 'P'", ORADYN_DEFAULT)
52
  m_bIndefinitelyPaused = rsQryRL.RecordCount > 0
53
  rsQryRL.Close
54
  Set rsQryRL = Nothing
55
End Sub
56
 
57
'----------------------------------------------------------------------------------------------------------------------------------------------
58
' Renders a bar chart to show the daemon status for a specified release
59
'   irtag_id: the specified release
60
'   isize: the status icon size in pixels
61
Sub RenderDaemonStatusForRelease(irtag_id,isize)
62
  Call GetDaemonStatusForRelease(irtag_id)
63
  Call RenderDaemonStatus(irtag_id,isize)
64
End Sub
65
 
66
'----------------------------------------------------------------------------------------------------------------------------------------------
67
' Gets the daemon summary for a specified release
68
' Parameters:
69
'   irtag_id: the specified release
70
' Assumes GetDaemonStatus or GetDaemonStatusForRelease has already been called
71
'
72
Function GetDaemonSummary(irtag_id)
73
  Dim iDmStsStatus
74
 
75
  Dim sDmStsToolTip
76
  Dim sDmStsSearch
77
  Dim iDmStsTotalUnavailable
78
  Dim iDmStsTotalTimedout
79
  Dim iDmStsTotalEnabled
80
  Dim iDmStsTotalDisabled
81
  Dim iDmStsTotalPaused
82
  Dim iDmStsTotalEngaged
83
  Dim iDmStsTotalRunning
84
  Dim iDmStsTotal
85
 
86
  ' Get status summary for showing in the bar chart popup tooltip
87
  ' Get daemons for specified release
88
  sDmStsSearch="rtag_id=" & irtag_id
89
  m_rsQryDS.FindFirst(sDmStsSearch)
90
 
91
  iDmStsTotal=0             ' total daemons
92
  iDmStsTotalRunning=0      ' total running
93
  iDmStsTotalTimedout=0     ' total timed out
94
  iDmStsTotalUnavailable=0  ' total unavailable
95
  iDmStsTotalEnabled=0      ' total enabled
96
  iDmStsTotalPaused=0       ' total paused
97
  iDmStsTotalDisabled=0     ' total disabled
98
  iDmStsTotalEngaged=0      ' total enagaged
99
 
100
  ' Loop through each daemon and get summary totals
101
  Do While Not m_rsQryDS.NoMatch
102
    iDmStsStatus=CInt(m_rsQryDS("status"))
103
    iDmStsTotal = iDmStsTotal + 1
104
    Select Case iDmStsStatus
105
      Case -1
106
        iDmStsTotalUnavailable= iDmStsTotalUnavailable + 1
107
      Case -2
108
        iDmStsTotalTimedout= iDmStsTotalTimedout + 1
109
        iDmStsTotalRunning=iDmStsTotalRunning + 1
110
      Case 0 ' if enabled
111
        iDmStsTotalEnabled= iDmStsTotalEnabled + 1
112
        iDmStsTotalRunning=iDmStsTotalRunning + 1
113
      Case 1 ' if paused
114
        iDmStsTotalPaused= iDmStsTotalPaused + 1
115
      Case 2 ' if disabled
116
        iDmStsTotalDisabled= iDmStsTotalDisabled + 1
117
      Case 3 ' if engaged
118
        iDmStsTotalEngaged= iDmStsTotalEngaged + 1
119
        iDmStsTotalRunning=iDmStsTotalRunning + 1
120
    End Select
121
    m_rsQryDS.FindNext(sDmStsSearch)
122
  Loop
123
 
124
  If iDmStsTotal = 0 Then
125
    sDmStsToolTip= "No daemons found." & "&#13;"
126
  ElseIf m_bIndefinitelyPaused Then
127
    sDmStsToolTip= "WARNING: Build Daemons are all stopped." & "&#13;" & "Please contact an administrator." & "&#13;"
128
  Else
129
    sDmStsToolTip = ""
130
    If iDmStsTotalRunning > 0 Then
131
      sDmStsToolTip = sDmStsToolTip & iDmStsTotalRunning & " daemon" & iif(iDmStsTotalRunning > 1,"s","") & " running." & "&#13;"
132
    End If
133
    If iDmStsTotalPaused > 0 Then
134
      sDmStsToolTip = sDmStsToolTip & iDmStsTotalPaused & " daemon" & iif(iDmStsTotalPaused > 1,"s","") & " paused." & "&#13;"
135
    End If
136
    If iDmStsTotalDisabled > 0 Then
137
      sDmStsToolTip = sDmStsToolTip & iDmStsTotalDisabled & " daemon" & iif(iDmStsTotalDisabled > 1,"s","") & " disabled." & "&#13;"
138
    End If
139
    If iDmStsTotalUnavailable > 0 Then
140
      sDmStsToolTip = sDmStsToolTip & iDmStsTotalUnavailable & " daemon" & iif(iDmStsTotalUnavailable > 1,"s","") & " unavailable." & "&#13;"  
141
    End If
142
    'If iDmStsTotalEngaged > 0 Then
143
    '  sDmStsToolTip = sDmStsToolTip & iDmStsTotalEngaged & " daemon" & iif(iDmStsTotalEngaged > 1,"s","") & " engaged in a build." & "&#13;"
144
    'End If
145
    'If iDmStsTotalTimedout > 0 Then
146
    '  sDmStsToolTip = sDmStsToolTip & iDmStsTotalTimedout & " daemon" & iif(iDmStsTotalTimedout > 1,"s","") & " timedout." & "&#13;"
147
    'End If
148
  End If
149
 
150
  sDmStsToolTip = sDmStsToolTip & "Click to view details."
151
  GetDaemonSummary = sDmStsToolTip  
152
End Function
153
 
154
'----------------------------------------------------------------------------------------------------------------------------------------------
155
' Renders a bar chart to show the daemon status for a specified release
156
' Parameters:
157
'   irtag_id: the specified release
158
'   isize: the status icon size in pixels
159
' Assumes GetDaemonStatus or GetDaemonStatusForRelease has already been called
160
'
161
Sub RenderDaemonStatus(irtag_id,isize)
162
  Dim iDmStsStatus
163
  Dim sDmStsImg
164
  Dim sDmStsToolTip
165
  Dim sDmStsSearch
166
  Dim iheight
167
  Dim iWidth
168
  Dim iWidthEnd
169
 
170
  iHeight=isize
171
  ' the status icon default dimensions are height:48 and width:30
172
  ' ie. ratio of height to width is 16:10 
173
  ' the bar end icon default dimensions are height:48 and width:8
174
  ' ie. ratio of height to bar end is 16:3 
175
  iWidth = Round(iSize*10/16)
176
  iWidthEnd = Round(iSize*3/16)
177
 
178
  ' First, get status summary for showing in the bar chart popup tooltip
179
  sDmStsToolTip = GetDaemonSummary(irtag_id)
180
 
181
  sDmStsSearch="rtag_id=" & irtag_id
182
  m_rsQryDS.FindFirst(sDmStsSearch)
183
 
184
  ' Now, create deamon bar chart for the specified release
185 brianf 185
  Response.Write("<table border=0 cellpadding=4 cellspacing=0 width=""100%""" & " onClick=""location.href='build_status.asp?rtag_id=" & irtag_id & "';""" & " style=""cursor:hand"">")
183 brianf 186
  ' Add in tooltip generated above
187
  Response.Write("<tr valign=middle title=""" & sDmStsToolTip & """>")
188
  Response.Write("<td>")
189
  Response.Write("<table border=0 cellpadding=0 cellspacing=0>")
190
  Response.Write("<tr>")
191
  ' add left side of chart
192
  Response.Write("<td>")
193
  Response.Write("<img src=""icons/tdmsts_left.gif"" width=" & iWidthEnd & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
194
  Response.Write("</td>")
195
  IF m_rsQryDS.NoMatch  Then
196
    Response.Write("<td>")
197
    Response.Write("<img src=""icons/tdmsts_notfound.gif"" width=" & iWidth & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
198
    Response.Write("</td>")
199
  Else
200
    'add an icon for each daemon
201
    Do While Not m_rsQryDS.NoMatch
202
      iDmStsStatus=CInt(m_rsQryDS("status"))
203
      If m_bIndefinitelyPaused Then
204
        sDmStsImg="icons/tdmsts_stopped.gif"
205
        sDmStsToolTip="Daemon indefinitley paused." & "&#13;"
206
      ElseIf iDmStsStatus = -2 Then
207
        sDmStsImg="icons/tdmsts_timedout.gif"
208
        sDmStsToolTip="Daemon timed out." & "&#13;"
209
      ElseIf iDmStsStatus = -1 Then
210
        sDmStsImg="icons/tdmsts_unavailable.gif"
211
        sDmStsToolTip="Daemon unavailable." & "&#13;"
212
      ElseIf iDmStsStatus = 0 Then
213
        sDmStsImg="icons/tdmsts_started.gif"
214
        sDmStsToolTip="Daemon running." & "&#13;"
215
      ElseIf iDmStsStatus = 1 Then
216
        sDmStsImg="icons/tdmsts_paused.gif"
217
        sDmStsToolTip="Daemon paused." & "&#13;"
218
      ElseIf iDmStsStatus = 2 Then
219
        sDmStsImg="icons/tdmsts_stopped.gif"
220
        sDmStsToolTip="Daemon stopped." & "&#13;"
221
      ElseIf iDmStsStatus = 3 Then
222
        sDmStsImg="icons/tdmsts_engaged.gif"
223
        sDmStsToolTip="Daemon engaged in a build." & "&#13;"
224
      End If
225
 
226
      If sDmStsToolTip <> "" Then
227
        sDmStsToolTip = sDmStsToolTip & "Click to view details."
228
      End If
229
 
230
      Response.Write("<td>")
231
      Response.Write("<img src=""" & sDmStsImg & """ width=" & iWidth & " height=" & iHeight & " border=0 vspace=0 hspace=0 " & iif(sDmStsToolTip <> "","title='" & sDmStsToolTip & "'","") & ">")
232
      Response.Write("</td>")
233
      m_rsQryDS.FindNext(sDmStsSearch)
234
    Loop
235
  End If
236
  ' add right side of chart
237
  Response.Write("<td>")
238
  Response.Write("<img src=""icons/tdmsts_right.gif"" width=" & iWidthEnd & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
239
  Response.Write("</td>")
240
  Response.Write("</tr>")
241
  Response.Write("</table>")
242
  Response.Write("</td>")
243
  Response.Write("</tr>")
244
  Response.Write("</table>")
245
End Sub
246
 
247
'----------------------------------------------------------------------------------------------------------------------------------------------
248
' Destructor
249
Sub Class_Terminate
250
  m_rsQryDS.Close
251
  Set m_rsQryDS = Nothing
252
End Sub
253
 
254
End Class
255
 
256
%>