Subversion Repositories DevTools

Rev

Rev 5506 | Go to most recent revision | Details | Compare with Previous | 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
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." & "&#13;"
215
        bTestAge = false
216
      ElseIf m_bIndefinitelyPaused Then
183 brianf 217
        sDmStsImg="icons/tdmsts_stopped.gif"
218
        sDmStsToolTip="Daemon indefinitley paused." & "&#13;"
4867 dpurdie 219
        bTestAge = false
183 brianf 220
      ElseIf iDmStsStatus = -2 Then
221
        sDmStsImg="icons/tdmsts_timedout.gif"
222
        sDmStsToolTip="Daemon timed out." & "&#13;"
223
      ElseIf iDmStsStatus = -1 Then
224
        sDmStsImg="icons/tdmsts_unavailable.gif"
225
        sDmStsToolTip="Daemon unavailable." & "&#13;"
4867 dpurdie 226
        bTestAge = false
183 brianf 227
      ElseIf iDmStsStatus = 0 Then
228
        sDmStsImg="icons/tdmsts_started.gif"
229
        sDmStsToolTip="Daemon running." & "&#13;"
230
      ElseIf iDmStsStatus = 1 Then
231
        sDmStsImg="icons/tdmsts_paused.gif"
232
        sDmStsToolTip="Daemon paused." & "&#13;"
233
      ElseIf iDmStsStatus = 2 Then
234
        sDmStsImg="icons/tdmsts_stopped.gif"
235
        sDmStsToolTip="Daemon stopped." & "&#13;"
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." & "&#13;"
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
%>