Subversion Repositories DevTools

Rev

Rev 5009 | Rev 6269 | 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
183 brianf 172
 
173
  iHeight=isize
174
  ' the status icon default dimensions are height:48 and width:30
175
  ' ie. ratio of height to width is 16:10 
176
  ' the bar end icon default dimensions are height:48 and width:8
177
  ' ie. ratio of height to bar end is 16:3 
178
  iWidth = Round(iSize*10/16)
179
  iWidthEnd = Round(iSize*3/16)
180
 
181
  ' First, get status summary for showing in the bar chart popup tooltip
182
  sDmStsToolTip = GetDaemonSummary(irtag_id)
183
 
184
  sDmStsSearch="rtag_id=" & irtag_id
185
  m_rsQryDS.FindFirst(sDmStsSearch)
186
 
187
  ' Now, create deamon bar chart for the specified release
5009 dpurdie 188
  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 189
  ' Add in tooltip generated above
190
  Response.Write("<tr valign=middle title=""" & sDmStsToolTip & """>")
191
  Response.Write("<td>")
192
  Response.Write("<table border=0 cellpadding=0 cellspacing=0>")
193
  Response.Write("<tr>")
194
  ' add left side of chart
195
  Response.Write("<td>")
196
  Response.Write("<img src=""icons/tdmsts_left.gif"" width=" & iWidthEnd & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
197
  Response.Write("</td>")
198
  IF m_rsQryDS.NoMatch  Then
199
    Response.Write("<td>")
200
    Response.Write("<img src=""icons/tdmsts_notfound.gif"" width=" & iWidth & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
201
    Response.Write("</td>")
202
  Else
203
    'add an icon for each daemon
204
    Do While Not m_rsQryDS.NoMatch
4867 dpurdie 205
      bTestAge = true
206
 
183 brianf 207
      iDmStsStatus=CInt(m_rsQryDS("status"))
208
      If m_bIndefinitelyPaused Then
209
        sDmStsImg="icons/tdmsts_stopped.gif"
210
        sDmStsToolTip="Daemon indefinitley paused." & "&#13;"
4867 dpurdie 211
        bTestAge = false
183 brianf 212
      ElseIf iDmStsStatus = -2 Then
213
        sDmStsImg="icons/tdmsts_timedout.gif"
214
        sDmStsToolTip="Daemon timed out." & "&#13;"
215
      ElseIf iDmStsStatus = -1 Then
216
        sDmStsImg="icons/tdmsts_unavailable.gif"
217
        sDmStsToolTip="Daemon unavailable." & "&#13;"
4867 dpurdie 218
        bTestAge = false
183 brianf 219
      ElseIf iDmStsStatus = 0 Then
220
        sDmStsImg="icons/tdmsts_started.gif"
221
        sDmStsToolTip="Daemon running." & "&#13;"
222
      ElseIf iDmStsStatus = 1 Then
223
        sDmStsImg="icons/tdmsts_paused.gif"
224
        sDmStsToolTip="Daemon paused." & "&#13;"
225
      ElseIf iDmStsStatus = 2 Then
226
        sDmStsImg="icons/tdmsts_stopped.gif"
227
        sDmStsToolTip="Daemon stopped." & "&#13;"
4867 dpurdie 228
        bTestAge = false
183 brianf 229
      ElseIf iDmStsStatus = 3 Then
230
        sDmStsImg="icons/tdmsts_engaged.gif"
231
        sDmStsToolTip="Daemon engaged in a build." & "&#13;"
232
      End If
233
 
234
      If sDmStsToolTip <> "" Then
4525 dpurdie 235
        sDmStsToolTip = sDmStsToolTip & "Click to view details." 
183 brianf 236
      End If
237
 
4867 dpurdie 238
      If bTestAge AND m_rsQryDS("daemon_mode") = "M" Then
239
        Dim nBuildAge
240
        Dim nLastBuildDays
241
 
242
        nBuildAge = NiceInt(m_rsQryDS("build_age"), 31)
243
        nLastBuildDays = NiceInt(m_rsQryDS("last_build_days"), 31)
244
 
245
        If nBuildAge > 0  Then
246
            If nLastBuildDays > nBuildAge Then
247
              sDmStsAge = "images/s_warning.gif"
248
              sDmStsAgeTip = "No Build in this release since " & m_rsQryDS("last_build")  & ". [" & m_rsQryDS("last_build_days") & " Days]"
249
            End If
250
        End If
251
      End If
252
 
183 brianf 253
      Response.Write("<td>")
254
      Response.Write("<img src=""" & sDmStsImg & """ width=" & iWidth & " height=" & iHeight & " border=0 vspace=0 hspace=0 " & iif(sDmStsToolTip <> "","title='" & sDmStsToolTip & "'","") & ">")
255
      Response.Write("</td>")
256
      m_rsQryDS.FindNext(sDmStsSearch)
257
    Loop
4867 dpurdie 258
 
183 brianf 259
  End If
260
  ' add right side of chart
261
  Response.Write("<td>")
262
  Response.Write("<img src=""icons/tdmsts_right.gif"" width=" & iWidthEnd & " height=" & iHeight & " border=0 vspace=0 hspace=0>")
263
  Response.Write("</td>")
4867 dpurdie 264
    If sDmStsAge <> "" Then
265
      Response.Write("<td>")
266
        Response.Write("<img src=""" & sDmStsAge & """ width=14 height=13 border=0 vspace=0 hspace=0 " & "title='" & sDmStsAgeTip & "'" & ">")
267
      Response.Write("</td>")
268
    End If
269
 
183 brianf 270
  Response.Write("</tr>")
271
  Response.Write("</table>")
272
  Response.Write("</td>")
273
  Response.Write("</tr>")
274
  Response.Write("</table>")
275
End Sub
276
 
277
'----------------------------------------------------------------------------------------------------------------------------------------------
278
' Destructor
279
Sub Class_Terminate
280
  m_rsQryDS.Close
281
  Set m_rsQryDS = Nothing
282
End Sub
283
 
284
End Class
285
 
286
%>