| 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." & " "
|
|
|
126 |
ElseIf m_bIndefinitelyPaused Then
|
|
|
127 |
sDmStsToolTip= "WARNING: Build Daemons are all stopped." & " " & "Please contact an administrator." & " "
|
|
|
128 |
Else
|
|
|
129 |
sDmStsToolTip = ""
|
|
|
130 |
If iDmStsTotalRunning > 0 Then
|
|
|
131 |
sDmStsToolTip = sDmStsToolTip & iDmStsTotalRunning & " daemon" & iif(iDmStsTotalRunning > 1,"s","") & " running." & " "
|
|
|
132 |
End If
|
|
|
133 |
If iDmStsTotalPaused > 0 Then
|
|
|
134 |
sDmStsToolTip = sDmStsToolTip & iDmStsTotalPaused & " daemon" & iif(iDmStsTotalPaused > 1,"s","") & " paused." & " "
|
|
|
135 |
End If
|
|
|
136 |
If iDmStsTotalDisabled > 0 Then
|
|
|
137 |
sDmStsToolTip = sDmStsToolTip & iDmStsTotalDisabled & " daemon" & iif(iDmStsTotalDisabled > 1,"s","") & " disabled." & " "
|
|
|
138 |
End If
|
|
|
139 |
If iDmStsTotalUnavailable > 0 Then
|
|
|
140 |
sDmStsToolTip = sDmStsToolTip & iDmStsTotalUnavailable & " daemon" & iif(iDmStsTotalUnavailable > 1,"s","") & " unavailable." & " "
|
|
|
141 |
End If
|
|
|
142 |
'If iDmStsTotalEngaged > 0 Then
|
|
|
143 |
' sDmStsToolTip = sDmStsToolTip & iDmStsTotalEngaged & " daemon" & iif(iDmStsTotalEngaged > 1,"s","") & " engaged in a build." & " "
|
|
|
144 |
'End If
|
|
|
145 |
'If iDmStsTotalTimedout > 0 Then
|
|
|
146 |
' sDmStsToolTip = sDmStsToolTip & iDmStsTotalTimedout & " daemon" & iif(iDmStsTotalTimedout > 1,"s","") & " timedout." & " "
|
|
|
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
|
| 4867 |
dpurdie |
169 |
Dim sDmStsAge
|
|
|
170 |
Dim sDmStsAgeTip
|
|
|
171 |
Dim bTestAge
|
| 6269 |
dpurdie |
172 |
Dim bIsDeprecated
|
|
|
173 |
Dim bHasDeprecated : bHasDeprecated = false
|
| 183 |
brianf |
174 |
|
|
|
175 |
iHeight=isize
|
|
|
176 |
' the status icon default dimensions are height:48 and width:30
|
|
|
177 |
' ie. ratio of height to width is 16:10
|
|
|
178 |
' the bar end icon default dimensions are height:48 and width:8
|
|
|
179 |
' ie. ratio of height to bar end is 16:3
|
|
|
180 |
iWidth = Round(iSize*10/16)
|
|
|
181 |
iWidthEnd = Round(iSize*3/16)
|
|
|
182 |
|
|
|
183 |
' First, get status summary for showing in the bar chart popup tooltip
|
|
|
184 |
sDmStsToolTip = GetDaemonSummary(irtag_id)
|
|
|
185 |
|
|
|
186 |
sDmStsSearch="rtag_id=" & irtag_id
|
|
|
187 |
m_rsQryDS.FindFirst(sDmStsSearch)
|
|
|
188 |
|
|
|
189 |
' Now, create deamon bar chart for the specified release
|
| 5009 |
dpurdie |
190 |
Response.Write("<table border=0 cellpadding=0 cellspacing=0 width=""100%""" & " onClick=""location.href='build_status.asp?rtag_id=" & irtag_id & "';""" & " style=""cursor:hand"">")
|
| 183 |
brianf |
191 |
' Add in tooltip generated above
|
|
|
192 |
Response.Write("<tr valign=middle title=""" & sDmStsToolTip & """>")
|
|
|
193 |
Response.Write("<td>")
|
|
|
194 |
Response.Write("<table border=0 cellpadding=0 cellspacing=0>")
|
|
|
195 |
Response.Write("<tr>")
|
|
|
196 |
' add left side of chart
|
|
|
197 |
Response.Write("<td>")
|
|
|
198 |
Response.Write("<img src=""icons/tdmsts_left.gif"" width=" & iWidthEnd & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
|
|
|
199 |
Response.Write("</td>")
|
|
|
200 |
IF m_rsQryDS.NoMatch Then
|
|
|
201 |
Response.Write("<td>")
|
|
|
202 |
Response.Write("<img src=""icons/tdmsts_notfound.gif"" width=" & iWidth & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
|
|
|
203 |
Response.Write("</td>")
|
|
|
204 |
Else
|
|
|
205 |
'add an icon for each daemon
|
|
|
206 |
Do While Not m_rsQryDS.NoMatch
|
| 4867 |
dpurdie |
207 |
bTestAge = true
|
| 6269 |
dpurdie |
208 |
bIsDeprecated = m_rsQryDS("active") = "N"
|
|
|
209 |
iDmStsStatus=CInt(m_rsQryDS("status"))
|
| 4867 |
dpurdie |
210 |
|
| 6269 |
dpurdie |
211 |
If bIsDeprecated Then
|
|
|
212 |
bHasDeprecated = true
|
|
|
213 |
sDmStsImg="icons/tdmsts_notfound.gif"
|
|
|
214 |
sDmStsToolTip="Daemon Deprecated." & " "
|
|
|
215 |
bTestAge = false
|
|
|
216 |
ElseIf m_bIndefinitelyPaused Then
|
| 183 |
brianf |
217 |
sDmStsImg="icons/tdmsts_stopped.gif"
|
|
|
218 |
sDmStsToolTip="Daemon indefinitley paused." & " "
|
| 4867 |
dpurdie |
219 |
bTestAge = false
|
| 183 |
brianf |
220 |
ElseIf iDmStsStatus = -2 Then
|
|
|
221 |
sDmStsImg="icons/tdmsts_timedout.gif"
|
|
|
222 |
sDmStsToolTip="Daemon timed out." & " "
|
|
|
223 |
ElseIf iDmStsStatus = -1 Then
|
|
|
224 |
sDmStsImg="icons/tdmsts_unavailable.gif"
|
|
|
225 |
sDmStsToolTip="Daemon unavailable." & " "
|
| 4867 |
dpurdie |
226 |
bTestAge = false
|
| 183 |
brianf |
227 |
ElseIf iDmStsStatus = 0 Then
|
|
|
228 |
sDmStsImg="icons/tdmsts_started.gif"
|
|
|
229 |
sDmStsToolTip="Daemon running." & " "
|
|
|
230 |
ElseIf iDmStsStatus = 1 Then
|
|
|
231 |
sDmStsImg="icons/tdmsts_paused.gif"
|
|
|
232 |
sDmStsToolTip="Daemon paused." & " "
|
|
|
233 |
ElseIf iDmStsStatus = 2 Then
|
|
|
234 |
sDmStsImg="icons/tdmsts_stopped.gif"
|
|
|
235 |
sDmStsToolTip="Daemon stopped." & " "
|
| 4867 |
dpurdie |
236 |
bTestAge = false
|
| 183 |
brianf |
237 |
ElseIf iDmStsStatus = 3 Then
|
|
|
238 |
sDmStsImg="icons/tdmsts_engaged.gif"
|
|
|
239 |
sDmStsToolTip="Daemon engaged in a build." & " "
|
|
|
240 |
End If
|
|
|
241 |
|
|
|
242 |
If sDmStsToolTip <> "" Then
|
| 4525 |
dpurdie |
243 |
sDmStsToolTip = sDmStsToolTip & "Click to view details."
|
| 183 |
brianf |
244 |
End If
|
|
|
245 |
|
| 4867 |
dpurdie |
246 |
If bTestAge AND m_rsQryDS("daemon_mode") = "M" Then
|
|
|
247 |
Dim nBuildAge
|
|
|
248 |
Dim nLastBuildDays
|
|
|
249 |
|
|
|
250 |
nBuildAge = NiceInt(m_rsQryDS("build_age"), 31)
|
|
|
251 |
nLastBuildDays = NiceInt(m_rsQryDS("last_build_days"), 31)
|
|
|
252 |
|
|
|
253 |
If nBuildAge > 0 Then
|
|
|
254 |
If nLastBuildDays > nBuildAge Then
|
|
|
255 |
sDmStsAge = "images/s_warning.gif"
|
|
|
256 |
sDmStsAgeTip = "No Build in this release since " & m_rsQryDS("last_build") & ". [" & m_rsQryDS("last_build_days") & " Days]"
|
|
|
257 |
End If
|
|
|
258 |
End If
|
|
|
259 |
End If
|
|
|
260 |
|
| 183 |
brianf |
261 |
Response.Write("<td>")
|
|
|
262 |
Response.Write("<img src=""" & sDmStsImg & """ width=" & iWidth & " height=" & iHeight & " border=0 vspace=0 hspace=0 " & iif(sDmStsToolTip <> "","title='" & sDmStsToolTip & "'","") & ">")
|
|
|
263 |
Response.Write("</td>")
|
|
|
264 |
m_rsQryDS.FindNext(sDmStsSearch)
|
|
|
265 |
Loop
|
| 4867 |
dpurdie |
266 |
|
| 183 |
brianf |
267 |
End If
|
|
|
268 |
' add right side of chart
|
|
|
269 |
Response.Write("<td>")
|
|
|
270 |
Response.Write("<img src=""icons/tdmsts_right.gif"" width=" & iWidthEnd & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
|
|
|
271 |
Response.Write("</td>")
|
| 6269 |
dpurdie |
272 |
If sDmStsAge <> "" Then
|
|
|
273 |
Response.Write("<td>")
|
|
|
274 |
Response.Write("<img src=""" & sDmStsAge & """ width=14 height=13 border=0 vspace=0 hspace=0 " & "title='" & sDmStsAgeTip & "'" & ">")
|
|
|
275 |
Response.Write("</td>")
|
|
|
276 |
End If
|
|
|
277 |
If bHasDeprecated Then
|
|
|
278 |
Response.Write("<td>")
|
|
|
279 |
Response.Write("<img src=""images/s_warning.gif"" width=14 height=13 border=0 vspace=0 hspace=0 " & "title='" & "One or more daemons have been deprecated" & "'" & ">")
|
|
|
280 |
Response.Write("</td>")
|
|
|
281 |
End If
|
| 4867 |
dpurdie |
282 |
|
| 183 |
brianf |
283 |
Response.Write("</tr>")
|
|
|
284 |
Response.Write("</table>")
|
|
|
285 |
Response.Write("</td>")
|
|
|
286 |
Response.Write("</tr>")
|
|
|
287 |
Response.Write("</table>")
|
|
|
288 |
End Sub
|
|
|
289 |
|
|
|
290 |
'----------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
291 |
' Destructor
|
|
|
292 |
Sub Class_Terminate
|
|
|
293 |
m_rsQryDS.Close
|
|
|
294 |
Set m_rsQryDS = Nothing
|
|
|
295 |
End Sub
|
|
|
296 |
|
|
|
297 |
End Class
|
|
|
298 |
|
|
|
299 |
%>
|