Subversion Repositories DevTools

Rev

Rev 6070 | Rev 6175 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5670 dpurdie 1
<% @LANGUAGE = VBScript %>
5623 dpurdie 2
<%
3
'=====================================================
4
'
5
'  Build Status and Plan Information
6
'
7
'=====================================================
8
%>
9
<%
10
Option explicit
11
' Good idea to set when using redirect
12
Response.Expires = 0  ' always load the page, dont store
13
%>
14
<!--#include file="common/conf.asp"-->
15
<!--#include file="common/globals.asp"-->
16
<!--#include file="common/formating.asp"-->
17
<!--#include file="common/qstr.asp"-->
18
<!--#include file="common/common_subs.asp"-->
19
<!--#include file="common/_form_window_common.asp"-->
20
<!--#include file="_action_buttons.asp"-->
21
<!--#include file="class/classActionButtonControl.asp"-->
22
<!--#include file="common/daemon_instructions.asp"-->
6166 dpurdie 23
<!--#include file="common/common_daemon.asp"-->
6048 dpurdie 24
<% '------------ ACCESS CONTROL ------------------ %>
5623 dpurdie 25
<!--#include file="_access_control_login.asp"-->
6070 dpurdie 26
<!--#include file="_access_control_general.asp"-->
6052 dpurdie 27
<!--#include file="_access_control_action_project.asp"-->
5623 dpurdie 28
<% '------------ Scripts -------------------------- %>
29
<%
30
'------------ Variable Definition -------------
31
Dim objSortHelper
32
Dim rsQry
33
Dim parRtagId
34
Dim query_string
35
Dim rcon_id
36
Dim rsQry2
37
'------------ Constants Declaration -----------
38
'------------ Variable Init -------------------
39
parRtagId = Request("rtag_id")
40
objPMod.PersistInQryString("rtag_id")
41
 
42
'----------------------------------------------
43
%>
44
<html>
45
   <head>
46
      <title>Release Manager</title>
47
      <link rel="shortcut icon" href="<%=FavIcon%>"/>
48
      <meta http-equiv="Pragma" content="no-cache">
49
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
50
      <link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
51
      <link rel="stylesheet" href="images/navigation.css" type="text/css">
52
      <script language="JavaScript" src="images/common.js"></script>
53
      <!--#include file="_jquery_includes.asp"-->
54
      <!-- TIPS -->
55
      <script type="text/javascript" src="scripts/json2.js"></script>
56
      <script language="JavaScript" src="images/tipster.js"></script>
57
      <script language="JavaScript" src="images/_help_tips.js"></script>
58
      <script language="JavaScript" type="text/JavaScript">
59
      formTips.tips.h_buildplan       = stdTip(300, 'Build Plan', 'The build plan is a guess as to the order in which packages will be built.' +
60
                                                                  '<p>It will be recalculated before each build.' + 
61
                                                                  '<p>The plan includes test builds, new builds and resultant ripples.' 
62
                                                                  );
5670 dpurdie 63
      formTips.tips.h_buildDuration    = stdTip(300, 'Planned Duration', 'The build duration (seconds) of the last build of this package - if known.' +
5635 dpurdie 64
                                                                  '<p>This is used as a guess as to the duration of the planned build.' 
65
                                                                  );
5670 dpurdie 66
      formTips.tips.h_buildEnd         = stdTip(300, 'Planned Completion', 'An educated guess as to the build completion time of the package.' +
67
                                                                  '<p>It is based on the start time of the current build and the durations of each preceeding builds.' + 
68
                                                                  '<p>If the duration of a build is not known then a time of 300 seconds will be assumed.' +
69
                                                                  ' It also assumes 20 seconds to plan the next build.'
70
                                                                  );
5623 dpurdie 71
      formTips.tips.h_lastchange       = stdTip(300, 'Last Change', 'This is an indication of the time since the daemon interogated the database.' +
72
                                                                  '<p>Short times will be shown as seconds. Longer times will be shown as a time within ' + 
73
                                                                  'the last 24 hours. Longer times will be shown as a date.' 
74
                                                                  );
75
 
76
      </script>
77
      <!-- DROPDOWN MENUS -->
78
      <!--#include file="_menu_def.asp"-->
79
      <script language="JavaScript1.2" src="images/popup_menu.js"></script>
80
   </head>
81
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" >
82
      <!-- HEADER -->
83
      <!--#include file="_header.asp"-->
84
      <!-- BODY ---->
85
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
86
         <tr>
87
            <td width="1" background="images/bg_home_orange.gif" valign="top"></td>
88
            <td width="100%" rowspan="2" align="center" valign="top" bgcolor="#EEEFEF">
89
               <table width="10" border="0" cellspacing="0" cellpadding="0">
90
                  <tr>
91
                     <td width="1%"></td>
92
                     <td width="100%">
93
                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
94
                           <tr>
95
                              <td nowrap class="form_ttl"><p>&nbsp;</p>
96
                                 <p>DAEMON STATUS INFORMATION</p>
97
                              </td>
98
                              <td  valign="bottom" class="body_rowg">
99
                                Last Build: <%=GetLastBuildAge(parRtagId)%> [<%=GetModifiedSeqNo(parRtagId)%>]
100
                              </td>
101
                              <td align="right" valign="bottom">
102
                                <a class="txt_linked" href="<%=scriptName%>?rtag_id=<%=parRtagId%>" title="Refresh Page">[Refresh]</a></td>
103
                              </td>
104
                           </tr>
105
                        </table>
106
                     </td>
107
                     <td width="1%"></td>
108
                  </tr>
109
                  <tr>
110
                     <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
111
                     <td background="images/lbox_bg_blue.gif" class="lbox_ttl_w"><img src="images/h_trsp_dot.gif" width="600" height="15"></td>
112
                     <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
113
                  </tr>
114
                  <tr>
115
                     <td bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
116
                     <td bgcolor="#FFFFFF" valign="top">
117
                        <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
118
                        <!--#include file="messages/_msg_inline.asp"-->
119
                        <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
120
                        <br>
121
                        <table width="100%" border="0" cellspacing="2" cellpadding="0">
122
                           <%
123
                           Dim indefinitelyPaused
6166 dpurdie 124
                           indefinitelyPaused = Indefinitely_Paused()
5623 dpurdie 125
                           ' Insert a warning into the page if the build daemons are indefintely paused.
6166 dpurdie 126
                           If indefinitelyPaused Then %>
5623 dpurdie 127
                              <tr>
128
                                 <span class='err_alert'>
129
                                    <font size='2'><b>WARNING: Build Daemons are all stopped - please contact an administrator</b></font>
130
                                 </span>
131
                              </tr>
132
                           <%End If
133
                           %>
134
                           <td width="9%" valign="top"></td>
135
                           <tr>
136
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Daemon Host</td>
137
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Machine Type</td>
138
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Mode</td>
139
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Run Level</td>
140
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Current Package</td>
141
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Last Change<%=Quick_Help("h_lastchange")%></td>
142
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Control State</td>
143
                           </tr>
144
                           <%
145
                           ' Get the number of release configurations for this RTAG_ID, and iterate through them
146
                           query_string = " select * from release_config rc, gbe_machtype gm, build_machine_config bm"&_
147
                                          "  where rc.rtag_id = "& parRtagId &_
148
                                          "    and gm.gbe_id = rc.gbe_id"&_
149
                                          "    and rc.bmcon_id=bm.bmcon_id(+)" &_
150
                                          "  order by bm.display_name, rc.rcon_id"
151
 
152
                           Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
153
 
154
                           Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
155
                              rcon_id = rsQry("rcon_id")
156
 
157
                              Dim pkgName
158
                              Dim pkgPvid
159
                              Dim currentRunLevel
160
                              Dim daemonState
161
                              Dim delta
162
                              Dim pkgId
163
 
164
                              ' For this release configuration, get its entry from the run_level table. This table may not
165
                              ' have an entry so we must handle that outcome too.
166
                              query_string = " select rl.pause, rl.current_run_level, rl.current_pkg_id_being_built, "&_
167
                                             "        TRUNC (86400*(SYSDATE - rl.KEEP_ALIVE)) as delta" &_
168
                                             "   from run_level rl"&_
169
                                             "  where rl.rcon_id = "& rcon_id
170
 
171
                              Set rsQry2 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
172
 
173
                              currentRunLevel = -1
174
                              pkgId = Null
175
                              pkgName = NULL
176
                              pkgPvid = NULL
177
                              daemonState = 0
178
                              delta = NULL
179
 
180
                              If (rsQry2.RecordCount > 0) Then
181
                                ' Get the run level from the run_level table
182
                                currentRunLevel = rsQry2("current_run_level")
183
                                pkgId = rsQry2("current_pkg_id_being_built")
184
 
185
                                daemonState = rsQry2("pause")
186
                                If IsNull(daemonState) Then daemonState = 0
187
                                If daemonState = "2" Then pkgId = Null
188
 
189
                                delta = rsQry2("delta")
190
                              End If
191
 
192
                              ' If we got an entry from the run_level table, try and use the pkg_id it contains, to obtain a
193
                              ' package name from the packages table
194
                              Dim rsQry3
195
                              If NOT IsNull(pkgId) Then
196
                                 query_string = " select pkg_name,rl.current_pv_id from run_level rl, packages pk"&_
197
                                                "  where rl.rcon_id = "& rcon_id &_
198
                                                "   and  rl.current_pkg_id_being_built = pk.pkg_id"
199
 
200
                                 Set rsQry3 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
201
                                 If (rsQry3.RecordCount > 0) Then
202
                                    pkgName = rsQry3("pkg_name")
203
                                    pkgPvid = rsQry3("current_pv_id")
204
                                 End If
205
                                 rsQry3.Close()
206
                                 Set rsQry3 = nothing
207
                              End If
208
 
209
                              ' --- Now render HTML for this release configuration ---
210
                              %>
211
                              <tr>
212
                                 <td colspan="7" background="images/bg_rep_line.gif"><img src="images/spacer.gif" width="1" height="1"></td>
213
                              </tr>
214
                              <tr>
215
                                 <td nowrap class="body_rowg"><%=rsQry("display_name")%></td>
216
                                 <td nowrap class="body_rowg"><%=rsQry("gbe_value")%></td>
217
                                 <td nowrap class="body_rowg"><%=Get_Daemon_Mode(rsQry("daemon_mode"))%></td>
218
                                 <td nowrap class="body_rowg"><%=Get_Run_Level(currentRunLevel, indefinitelyPaused,daemonState)%></td>
219
                                 <td nowrap class="body_rowg"><%=Get_Package_Name(pkgName,parRtagId,pkgPvid)%></td>
220
                                 <td nowrap class="body_rowg"><%=PrettyDelta(delta, daemonState,pkgName )%></td>
221
                                 <td nowrap class="body_rowg">
222
                                    <%
223
                                    If (rsQry2.RecordCount > 0) AND NOT indefinitelyPaused  Then
6166 dpurdie 224
                                       If canActionControlInProject("BuildControl") Then
5623 dpurdie 225
                                          If daemonState = 0 Then
226
                                             Call Action_Buttons ( "Daemon Pause" )
227
                                          ElseIf daemonState = 1 Then
228
                                             Call Action_Buttons ( "Daemon Resume" )
229
                                          ElseIf daemonState = 2 Then
230
                                             Call Action_Buttons ( "Daemon Start" )
231
                                          Else
232
                                             Call Action_Buttons ( "Daemon Resume" )
233
                                          End If
234
                                       Else
235
                                          If daemonState = 0 Then
236
                                             Call Action_Buttons ( "Daemon Pause Disabled" )
237
                                          ElseIf daemonState = 1 Then
238
                                             Call Action_Buttons ( "Daemon Resume Disabled" )
239
                                          ElseIf daemonState = 2 Then
240
                                             Call Action_Buttons ( "Daemon Start Disabled" )
241
                                          Else
242
                                             Call Action_Buttons ( "Daemon Resume Disabled" )
243
                                          End If
244
                                       End If
245
                                    Else
246
                                       %>Unavailable<%
247
                                    End If
248
                                    %>
249
                                 </td>
250
                              </tr>
251
                              <%
252
                              rsQry2.Close()
253
                              Set rsQry2 = nothing
254
                              rsQry.MoveNext
255
                           Loop
256
                           %>
257
                           <tr>
6166 dpurdie 258
                             <td nowrap background="images/bg_table_col.gif" class="body_col" colspan=6>
259
                             <%If CheckConfigErrors(parRtagId) Then%><span class="err_alert">&nbsp;Daemon configuration errors detected</span>
260
                                <a class="txt_linked" href="release_config.asp?rtag_id=<%=parRtagId%>">
261
                                    <img src="images/i_link.gif" hspace="2" border="0" align="absmiddle" title="Goto Configuration">
262
                                </a>
263
                             <%End If%>
264
                             </td>
5623 dpurdie 265
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col">
266
                             <%
267
                               If (rsQry.RecordCount > 0) AND NOT indefinitelyPaused  Then
268
                                 If objAccessControl.UserLogedIn AND canActionControlInProject("BuildControl") Then
269
                                   Call Action_Buttons ( "Daemon Control All" )
270
                                 Else 
271
                                   Call Action_Buttons ( "Daemon Control All Disabled" )
272
                                 End If
273
                               Else
274
                                 %>&nbsp<%
275
                               End If
276
                             %>
277
                             </td>
278
                           </tr>
279
                           <%
280
                             rsQry.Close()
281
                             Set rsQry = nothing
282
                           %>
283
                        </table>
284
                     </td>
285
                     <td background="images/lbox_bgside_white.gif">&nbsp;</td>
286
                  </tr>
287
                  <tr>
288
                     <input type="hidden" name="action" value="true">
289
                     <%=objPMod.ComposeHiddenTags()%>
290
                     <td background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
291
                     <td background="images/lbox_bg_blue.gif"></td>
292
                     <td background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
293
                  </tr>
294
               </table>
295
 
296
               <!-- Planned Builds Display -->
5670 dpurdie 297
               <%
298
               Set rsQry = OraDatabase.DbCreateDynaset( "SELECT TRUNC (86400*(SYSDATE - rl.LAST_BUILD)) as delta, rl.LAST_BUILD as BuildStart, rl.current_pv_id, SYSDATE" &_
299
                                                        " FROM release_config rc,  run_level rl " &_
300
                                                        " WHERE rc.rtag_id   = " & parRtagId &_
301
                                                        " AND rc.daemon_mode = 'M' AND rl.rcon_id = rc.rcon_id", ORADYN_DEFAULT )
302
               Dim BuildStart
303
               Dim BuildDelta
304
               Dim BuildPvId
305
               Dim BuildNow
306
               If (rsQry.RecordCount > 0) Then
307
                    BuildStart = rsQry("BuildStart")
308
                    BuildDelta = rsQry("delta")
309
                    BuildPvId  = rsQry("current_pv_id")
310
                    BuildNow  = rsQry("SYSDATE")
311
               End If
312
               rsQry.Close()
313
               Set rsQry = nothing
314
               %>
5623 dpurdie 315
               <table width="10" border="0" cellspacing="0" cellpadding="0">
316
                  <tr>
317
                     <td width="1%"></td>
318
                     <td width="100%">
319
                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
320
                           <tr>
321
                              <td nowrap class="form_ttl"><p>&nbsp;</p>
322
                                 <p>DAEMON BUILD PLAN<%=Quick_Help("h_buildplan")%></p>
323
                              </td>
5670 dpurdie 324
                              <td  valign="bottom" class="body_rowg">
325
                                Now: <%=DisplayShortDateTimeSecs(BuildNow)%>
326
                              </td>
5623 dpurdie 327
                              <td align="right" valign="bottom"></td>
328
                           </tr>
329
                        </table>
330
                     </td>
331
                     <td width="1%"></td>
332
                  </tr>
333
                  <tr>
334
                     <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
335
                     <td background="images/lbox_bg_blue.gif" class="lbox_ttl_w"><img src="images/h_trsp_dot.gif" width="600" height="15"></td>
336
                     <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
337
                  </tr>
338
                  <tr>
339
                     <td bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" ></td>
340
                     <td bgcolor="#FFFFFF" valign="top">
341
                        <table width="100%" border="0" cellspacing="2" cellpadding="0">
342
                           <tr>
343
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Package</td>
344
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Version</td>
5635 dpurdie 345
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Duration<%=Quick_Help("h_buildDuration")%></td>
5670 dpurdie 346
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Build Completion<%=Quick_Help("h_buildEnd")%></td>
5623 dpurdie 347
                           </tr>
348
                           <%
5670 dpurdie 349
                           Dim PkgVersion, buildDuration, durationDisplay, durationText, completionText
5623 dpurdie 350
                           Set rsQry = OraDatabase.DbCreateDynaset( "SELECT p.PKG_NAME," &_
5635 dpurdie 351
                                                                    "  pv.PKG_VERSION, pv.BUILD_TIME," &_
5623 dpurdie 352
                                                                    "  bp.PV_ID" &_
353
                                                                    " FROM build_plan bp," &_
354
                                                                    "  packages p," &_
355
                                                                    "  package_versions pv" &_
356
                                                                    " WHERE bp.PV_ID = pv.pv_id" &_
357
                                                                    " AND RTAG_ID = " & parRtagId &_
358
                                                                    " AND pv.PKG_ID  = p.pkg_id" &_
359
                                                                    " ORDER BY build_order" , ORADYN_DEFAULT )
360
                           While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
5670 dpurdie 361
                               completionText = ""
362
                               buildDuration = rsQry("BUILD_TIME")
363
                               durationDisplay = buildDuration
364
 
365
                               ' If the current package build it taking longer than expected , then bump the build times
366
                               ' and allow another 30 seconds.
367
                               If BuildPvId = rsQry("PV_ID") Then
368
                                   completionText = "&nbsp;<"
369
                                   durationDisplay = durationDisplay & " ["& BuildDelta &"]"
370
                                   If BuildDelta > buildDuration Then
371
                                        buildDuration = BuildDelta + 30
372
                                        completionText = "&nbsp;+"
373
                                   End If
374
                               End If
375
 
376
                               ' If the duration is not known - guess at 300 sconds
377
                               durationText = ""
378
                               If ISNULL(buildDuration)  OR buildDuration = 0 Then
379
                                    buildDuration = 300
380
                                    durationText = "&nbsp;~"
381
                              End If
382
 
383
                              BuildStart = DateAdd("s", buildDuration, BuildStart)
5623 dpurdie 384
                              %>
385
                              <tr>
386
 
387
                                 <td align="left" valign="top" class="body_txt">
388
                                    <%=Get_Package_Name(rsQry("PKG_NAME"), parRtagId, rsQry("PV_ID"))%>
389
                                 </td>
390
                                 <td align="left" valign="top" class="body_txt">
391
                                    <%=rsQry("PKG_VERSION")%>
392
                                 </td>
5635 dpurdie 393
                                 <td align="left" valign="top" class="body_txt">
5670 dpurdie 394
                                    <%=durationDisplay%>
5635 dpurdie 395
                                 </td>
5670 dpurdie 396
                                 <td align="left" valign="top" class="body_txt">
397
                                    <%=DisplayShortDateTimeSecs(BuildStart) & durationText  & completionText%>
398
                                 </td>
5623 dpurdie 399
                              </tr>
400
                              <tr>
401
                                 <td colspan="6" background="images/bg_rep_line.gif"><img src="images/spacer.gif" width="1" height="1"></td>
402
                              </tr>
403
                              <%
5670 dpurdie 404
                              ' Allow for 20 seconds of planning between builds
405
                              BuildStart = DateAdd("s", 20, BuildStart)
5623 dpurdie 406
                              rsQry.MoveNext()
407
                           Wend
408
                           rsQry.Close()
409
                           Set rsQry = nothing
410
                           %>
411
                        </table>
412
                     </td>
413
                     <td background="images/lbox_bgside_white.gif">&nbsp;</td>
414
                  </tr>
415
                  <tr>
416
                     <td background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
417
                     <td background="images/lbox_bg_blue.gif"></td>
418
                     <td background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
419
                  </tr>
420
               </table>
421
 
422
            </td>
423
            <td width="1" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="1"></td>
424
         </tr>
425
         <tr>
426
            <td valign="bottom" align="center" background="images/bg_home_orange.gif">
427
                <img src="images/img_gear.gif" width="86" height="99" vspace="20" hspace="30">
428
            </td>
429
            <td background="images/bg_lght_gray.gif" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="350">
430
            </td>
431
         </tr>
432
      </table>
433
      <!-- FOOTER -->
434
      <!--#include file="_footer.asp"-->
435
   </body>
436
</html>