Subversion Repositories DevTools

Rev

Go to most recent revision | 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
 
4867 dpurdie 66
'--------------------------------------------------------------------------------------------------------------------------
67
' Like Cint, but handles NULL by replacing it with a default value
68
Function NiceInt( val, def)
69
   If isNull(val) Then
70
       NiceInt = def
71
   Else
72
      NiceInt = CInt(val)
73
   End If
74
End Function
75
 
183 brianf 76
'----------------------------------------------------------------------------------------------------------------------------------------------
77
' Gets the daemon summary for a specified release
78
' Parameters:
79
'   irtag_id: the specified release
80
' Assumes GetDaemonStatus or GetDaemonStatusForRelease has already been called
81
'
82
Function GetDaemonSummary(irtag_id)
83
  Dim iDmStsStatus
84
 
85
  Dim sDmStsToolTip
86
  Dim sDmStsSearch
87
  Dim iDmStsTotalUnavailable
88
  Dim iDmStsTotalTimedout
89
  Dim iDmStsTotalEnabled
90
  Dim iDmStsTotalDisabled
91
  Dim iDmStsTotalPaused
92
  Dim iDmStsTotalEngaged
93
  Dim iDmStsTotalRunning
94
  Dim iDmStsTotal
95
 
96
  ' Get status summary for showing in the bar chart popup tooltip
97
  ' Get daemons for specified release
98
  sDmStsSearch="rtag_id=" & irtag_id
99
  m_rsQryDS.FindFirst(sDmStsSearch)
100
 
101
  iDmStsTotal=0             ' total daemons
102
  iDmStsTotalRunning=0      ' total running
103
  iDmStsTotalTimedout=0     ' total timed out
104
  iDmStsTotalUnavailable=0  ' total unavailable
105
  iDmStsTotalEnabled=0      ' total enabled
106
  iDmStsTotalPaused=0       ' total paused
107
  iDmStsTotalDisabled=0     ' total disabled
108
  iDmStsTotalEngaged=0      ' total enagaged
109
 
110
  ' Loop through each daemon and get summary totals
111
  Do While Not m_rsQryDS.NoMatch
112
    iDmStsStatus=CInt(m_rsQryDS("status"))
113
    iDmStsTotal = iDmStsTotal + 1
114
    Select Case iDmStsStatus
115
      Case -1
116
        iDmStsTotalUnavailable= iDmStsTotalUnavailable + 1
117
      Case -2
118
        iDmStsTotalTimedout= iDmStsTotalTimedout + 1
119
        iDmStsTotalRunning=iDmStsTotalRunning + 1
120
      Case 0 ' if enabled
121
        iDmStsTotalEnabled= iDmStsTotalEnabled + 1
122
        iDmStsTotalRunning=iDmStsTotalRunning + 1
123
      Case 1 ' if paused
124
        iDmStsTotalPaused= iDmStsTotalPaused + 1
125
      Case 2 ' if disabled
126
        iDmStsTotalDisabled= iDmStsTotalDisabled + 1
127
      Case 3 ' if engaged
128
        iDmStsTotalEngaged= iDmStsTotalEngaged + 1
129
        iDmStsTotalRunning=iDmStsTotalRunning + 1
130
    End Select
131
    m_rsQryDS.FindNext(sDmStsSearch)
132
  Loop
133
 
134
  If iDmStsTotal = 0 Then
135
    sDmStsToolTip= "No daemons found." & "&#13;"
136
  ElseIf m_bIndefinitelyPaused Then
137
    sDmStsToolTip= "WARNING: Build Daemons are all stopped." & "&#13;" & "Please contact an administrator." & "&#13;"
138
  Else
139
    sDmStsToolTip = ""
140
    If iDmStsTotalRunning > 0 Then
141
      sDmStsToolTip = sDmStsToolTip & iDmStsTotalRunning & " daemon" & iif(iDmStsTotalRunning > 1,"s","") & " running." & "&#13;"
142
    End If
143
    If iDmStsTotalPaused > 0 Then
144
      sDmStsToolTip = sDmStsToolTip & iDmStsTotalPaused & " daemon" & iif(iDmStsTotalPaused > 1,"s","") & " paused." & "&#13;"
145
    End If
146
    If iDmStsTotalDisabled > 0 Then
147
      sDmStsToolTip = sDmStsToolTip & iDmStsTotalDisabled & " daemon" & iif(iDmStsTotalDisabled > 1,"s","") & " disabled." & "&#13;"
148
    End If
149
    If iDmStsTotalUnavailable > 0 Then
150
      sDmStsToolTip = sDmStsToolTip & iDmStsTotalUnavailable & " daemon" & iif(iDmStsTotalUnavailable > 1,"s","") & " unavailable." & "&#13;"  
151
    End If
152
    'If iDmStsTotalEngaged > 0 Then
153
    '  sDmStsToolTip = sDmStsToolTip & iDmStsTotalEngaged & " daemon" & iif(iDmStsTotalEngaged > 1,"s","") & " engaged in a build." & "&#13;"
154
    'End If
155
    'If iDmStsTotalTimedout > 0 Then
156
    '  sDmStsToolTip = sDmStsToolTip & iDmStsTotalTimedout & " daemon" & iif(iDmStsTotalTimedout > 1,"s","") & " timedout." & "&#13;"
157
    'End If
158
  End If
159
 
160
  sDmStsToolTip = sDmStsToolTip & "Click to view details."
161
  GetDaemonSummary = sDmStsToolTip  
162
End Function
163
 
164
'----------------------------------------------------------------------------------------------------------------------------------------------
165
' Renders a bar chart to show the daemon status for a specified release
166
' Parameters:
167
'   irtag_id: the specified release
168
'   isize: the status icon size in pixels
169
' Assumes GetDaemonStatus or GetDaemonStatusForRelease has already been called
170
'
171
Sub RenderDaemonStatus(irtag_id,isize)
172
  Dim iDmStsStatus
173
  Dim sDmStsImg
174
  Dim sDmStsToolTip
175
  Dim sDmStsSearch
176
  Dim iheight
177
  Dim iWidth
178
  Dim iWidthEnd
4867 dpurdie 179
  Dim sDmStsAge
180
  Dim sDmStsAgeTip
181
  Dim bTestAge
183 brianf 182
 
183
  iHeight=isize
184
  ' the status icon default dimensions are height:48 and width:30
185
  ' ie. ratio of height to width is 16:10 
186
  ' the bar end icon default dimensions are height:48 and width:8
187
  ' ie. ratio of height to bar end is 16:3 
188
  iWidth = Round(iSize*10/16)
189
  iWidthEnd = Round(iSize*3/16)
190
 
191
  ' First, get status summary for showing in the bar chart popup tooltip
192
  sDmStsToolTip = GetDaemonSummary(irtag_id)
193
 
194
  sDmStsSearch="rtag_id=" & irtag_id
195
  m_rsQryDS.FindFirst(sDmStsSearch)
196
 
197
  ' Now, create deamon bar chart for the specified release
185 brianf 198
  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 199
  ' Add in tooltip generated above
200
  Response.Write("<tr valign=middle title=""" & sDmStsToolTip & """>")
201
  Response.Write("<td>")
202
  Response.Write("<table border=0 cellpadding=0 cellspacing=0>")
203
  Response.Write("<tr>")
204
  ' add left side of chart
205
  Response.Write("<td>")
206
  Response.Write("<img src=""icons/tdmsts_left.gif"" width=" & iWidthEnd & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
207
  Response.Write("</td>")
208
  IF m_rsQryDS.NoMatch  Then
209
    Response.Write("<td>")
210
    Response.Write("<img src=""icons/tdmsts_notfound.gif"" width=" & iWidth & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
211
    Response.Write("</td>")
212
  Else
213
    'add an icon for each daemon
214
    Do While Not m_rsQryDS.NoMatch
4867 dpurdie 215
      bTestAge = true
216
 
183 brianf 217
      iDmStsStatus=CInt(m_rsQryDS("status"))
218
      If m_bIndefinitelyPaused Then
219
        sDmStsImg="icons/tdmsts_stopped.gif"
220
        sDmStsToolTip="Daemon indefinitley paused." & "&#13;"
4867 dpurdie 221
        bTestAge = false
183 brianf 222
      ElseIf iDmStsStatus = -2 Then
223
        sDmStsImg="icons/tdmsts_timedout.gif"
224
        sDmStsToolTip="Daemon timed out." & "&#13;"
225
      ElseIf iDmStsStatus = -1 Then
226
        sDmStsImg="icons/tdmsts_unavailable.gif"
227
        sDmStsToolTip="Daemon unavailable." & "&#13;"
4867 dpurdie 228
        bTestAge = false
183 brianf 229
      ElseIf iDmStsStatus = 0 Then
230
        sDmStsImg="icons/tdmsts_started.gif"
231
        sDmStsToolTip="Daemon running." & "&#13;"
232
      ElseIf iDmStsStatus = 1 Then
233
        sDmStsImg="icons/tdmsts_paused.gif"
234
        sDmStsToolTip="Daemon paused." & "&#13;"
235
      ElseIf iDmStsStatus = 2 Then
236
        sDmStsImg="icons/tdmsts_stopped.gif"
237
        sDmStsToolTip="Daemon stopped." & "&#13;"
4867 dpurdie 238
        bTestAge = false
183 brianf 239
      ElseIf iDmStsStatus = 3 Then
240
        sDmStsImg="icons/tdmsts_engaged.gif"
241
        sDmStsToolTip="Daemon engaged in a build." & "&#13;"
242
      End If
243
 
244
      If sDmStsToolTip <> "" Then
4525 dpurdie 245
        sDmStsToolTip = sDmStsToolTip & "Click to view details." 
183 brianf 246
      End If
247
 
4867 dpurdie 248
      If bTestAge AND m_rsQryDS("daemon_mode") = "M" Then
249
        Dim nBuildAge
250
        Dim nLastBuildDays
251
 
252
        nBuildAge = NiceInt(m_rsQryDS("build_age"), 31)
253
        nLastBuildDays = NiceInt(m_rsQryDS("last_build_days"), 31)
254
 
255
        If nBuildAge > 0  Then
256
            If nLastBuildDays > nBuildAge Then
257
              sDmStsAge = "images/s_warning.gif"
258
              sDmStsAgeTip = "No Build in this release since " & m_rsQryDS("last_build")  & ". [" & m_rsQryDS("last_build_days") & " Days]"
259
            End If
260
        End If
261
      End If
262
 
183 brianf 263
      Response.Write("<td>")
264
      Response.Write("<img src=""" & sDmStsImg & """ width=" & iWidth & " height=" & iHeight & " border=0 vspace=0 hspace=0 " & iif(sDmStsToolTip <> "","title='" & sDmStsToolTip & "'","") & ">")
265
      Response.Write("</td>")
266
      m_rsQryDS.FindNext(sDmStsSearch)
267
    Loop
4867 dpurdie 268
 
183 brianf 269
  End If
270
  ' add right side of chart
271
  Response.Write("<td>")
272
  Response.Write("<img src=""icons/tdmsts_right.gif"" width=" & iWidthEnd & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
273
  Response.Write("</td>")
4867 dpurdie 274
    If sDmStsAge <> "" Then
275
      Response.Write("<td>")
276
        Response.Write("<img src=""" & sDmStsAge & """ width=14 height=13 border=0 vspace=0 hspace=0 " & "title='" & sDmStsAgeTip & "'" & ">")
277
      Response.Write("</td>")
278
    End If
279
 
183 brianf 280
  Response.Write("</tr>")
281
  Response.Write("</table>")
282
  Response.Write("</td>")
283
  Response.Write("</tr>")
284
  Response.Write("</table>")
285
End Sub
286
 
287
'----------------------------------------------------------------------------------------------------------------------------------------------
288
' Destructor
289
Sub Class_Terminate
290
  m_rsQryDS.Close
291
  Set m_rsQryDS = Nothing
292
End Sub
293
 
294
End Class
295
 
296
%>