Subversion Repositories DevTools

Rev

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

Rev Author Line No. Line
5357 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
5623 dpurdie 4
'
5
'  Build Status Information
6
'
5357 dpurdie 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"-->
6048 dpurdie 23
<% '------------ ACCESS CONTROL ------------------ %>
5357 dpurdie 24
<!--#include file="_access_control_login.asp"-->
6070 dpurdie 25
<!--#include file="_access_control_general.asp"-->
6052 dpurdie 26
<!--#include file="_access_control_action_project.asp"-->
5357 dpurdie 27
<% '------------ Scripts -------------------------- %>
28
<%
29
'------------ Variable Definition -------------
30
Dim objSortHelper
31
Dim rsQry
32
Dim parRtagId
33
Dim query_string
34
Dim rcon_id
35
Dim shref_base
36
'------------ Constants Declaration -----------
37
'------------ Variable Init -------------------
38
parRtagId = Request("rtag_id")
39
objPMod.PersistInQryString("rtag_id")
40
 
41
'----------------------------------------------
42
%>
43
<%
44
'--------------------------------------------------------------------------------------------------------------------------
45
Sub GetFormDetails ( parRtagId, ByRef outobjDetails )
46
   Dim rsQry, query
47
   OraDatabase.Parameters.Add "RTAG_ID",   parRtagId,    ORAPARM_INPUT, ORATYPE_NUMBER
48
   query = _
49
   " SELECT * "&_
50
   "  FROM RELEASE_TAGS rt"&_
51
   " WHERE rt.RTAG_ID = :RTAG_ID"
52
 
53
   Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT )
54
 
55
   OraDatabase.Parameters.Remove "RTAG_ID"
56
 
57
   If rsQry.RecordCount > 0 Then
58
      outobjDetails.Item ("rtag_id") = rsQry("rtag_id")
59
      outobjDetails.Item ("rtag_name") = rsQry("rtag_name")
60
   Else
61
      Err.Raise 8, "Sub GetFormDetails in "& ScriptName, "Empty record set returned. parRtagId="& parRtagId
62
   End If
63
 
64
   rsQry.Close
65
   Set rsQry = Nothing
66
End Sub
67
'--------------------------------------------------------------------------------------------------------------------------
68
Sub RipplePackage (flag)
69
 
70
   On Error Resume Next
71
   objEH.ErrorRedirect = TRUE
72
   OraDatabase.Parameters.Add "PV_ID_LIST",  Request("pv_id_list"),  ORAPARM_INPUT, ORATYPE_VARCHAR2
73
   OraDatabase.Parameters.Add "RTAG_ID",     parRtag_id,  ORAPARM_INPUT, ORATYPE_NUMBER
74
   OraDatabase.Parameters.Add "USER_ID",     objAccessControl.UserId,  ORAPARM_INPUT, ORATYPE_NUMBER
75
 
76
   objEH.TryORA ( OraSession )
77
 
78
   If flag Then
79
      OraDatabase.ExecuteSQL _
80
      "BEGIN  Ripple_Package( :PV_ID_LIST, :RTAG_ID, :USER_ID );  END;"
81
   Else
82
      OraDatabase.ExecuteSQL _
83
      "BEGIN  UnRipple_Package( :PV_ID_LIST, :RTAG_ID, :USER_ID );  END;"
84
   End If
85
 
86
   objEH.CatchORA ( OraSession )
87
 
88
   OraDatabase.Parameters.Remove "PV_ID_LIST"
89
   OraDatabase.Parameters.Remove "RTAG_ID"
90
   OraDatabase.Parameters.Remove "USER_ID"
91
 
92
End Sub
93
'--------------------------------------------------------------------------------------------------------------------------
94
Function PrettyDelta( delta, daemonState,pkgId )
95
    Dim style
96
    style = ""
97
 
98
    If (delta > 600) AND (IsNull(pkgId) OR pkgId = "") Then
99
      style = "style=color:Red"
100
      If (delta > 86400 ) Then
101
        Dim bdate, dd,mm,yy
102
        bdate = DateAdd("s", - delta,Now())
103
        dd = Day(bdate)
104
        mm = MonthName(Month(bdate),1)
105
        yy = Year( bdate)
106
        delta = dd & "-" & mm & "-" & yy
107
        If ( daemonState >= 2 ) Then
108
            style = ""
109
        End If
110
      ElseIf ( delta > 60*60 ) Then
111
        'Dim bdate, hh, mins, ss
112
        bdate = DateAdd("s", - delta,Now())
113
        delta = TimeValue( bdate)
114
        'delta = hh & ":" & mins & ":" & ss
115
      End If
116
    End If
117
 
118
    If style <> "" Then
119
        delta = "<span " & style & ">" & delta & "</span>"
120
    End If
121
    PrettyDelta = delta
122
End Function
123
'--------------------------------------------------------------------------------------------------------------------------
124
Function Get_Daemon_Mode( cMode )
125
 
126
   If cMode = "S" Then
127
      Get_Daemon_Mode = "Slave"
128
   ElseIf cMode = "M" Then
129
      Get_Daemon_Mode = "Master"
130
   End If
131
 
132
End Function
133
'--------------------------------------------------------------------------------------------------------------------------
134
Function Get_Run_Level( nLevel, indefinitePause, astate)
135
 
136
   If indefinitePause Then
137
      Get_Run_Level = "<span class='err_alert'>Stopped</span>"
138
   ElseIf astate = 1 Then      ' if build daemon paused
139
      Get_Run_Level = "Paused"
140
   ElseIf astate = 2 Then      ' if build daemon disabled
141
      Get_Run_Level = "Disabled"
142
   ElseIf astate = 0 Then     ' if build daemon enabled
143
      If nLevel = 1 Then
144
         Get_Run_Level = "Cannot Continue"
145
      ElseIf nLevel = 2 Then
146
         Get_Run_Level = "Paused"
147
      ElseIf nLevel = 3 Then
148
         Get_Run_Level = "Building"
149
      ElseIf nLevel = 4 Then
150
         Get_Run_Level = "Idle"
151
      ElseIf nLevel = 5 Then
152
         Get_Run_Level = "Waiting"
153
      ElseIf nLevel = 6 Then
154
         Get_Run_Level = "Publishing"
155
      Else
156
         Get_Run_Level = "<span class='err_alert'>Unknown!</span>"
157
      End If
158
   End If
159
 
160
End Function
161
 
162
'--------------------------------------------------------------------------------------------------------------------------
163
Function Get_Package_Name( sPackageName,nRtagId,nPkgPvid )
164
 
165
  If IsNull(sPackageName) Then
166
    Get_Package_Name = "None"
167
  ElseIf IsNull(nPkgPvid) or nPkgPvid <= 0 Then
168
    Get_Package_Name = sPackageName
169
  Else
170
    Get_Package_Name = "<a class=""txt_linked"" href=""dependencies.asp?pv_id=" +  nPkgPvid + "&rtag_id=" + nRtagId + """>" + sPackageName + "</a>"
171
  End If
172
 
173
End Function
174
'--------------------------------------------------------------------------------------------------------------------------
175
Function GetLastBuildAge( rtagid)
176
   Dim  query_string, rsQry
177
       query_string = "SELECT TRUNC (86400*(SYSDATE - rl.LAST_BUILD)) as delta," &_
178
                      "       TO_CHAR(rl.LAST_BUILD, 'DD-Mon-YYYY') as last_build," &_
5670 dpurdie 179
                      "       TO_CHAR(rl.LAST_BUILD, 'HH:MI:SS PM') as last_build_hours," &_
5357 dpurdie 180
                      "       TRUNC (SYSDATE - rl.LAST_BUILD) as last_build_days" &_
181
                      " FROM RELEASE_CONFIG rc, RUN_LEVEL rl, BUILD_MACHINE_CONFIG bm " &_
182
                      " WHERE rc.RTAG_ID =" &rtagid &_
183
                      "   AND rc.bmcon_id is not null" &_
184
                      "   AND rl.RCON_ID = rc.RCON_ID" &_
185
                      "   AND rc.bmcon_id = bm.bmcon_id(+)"
186
 
187
        Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
188
        If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
189
            Dim delta, last_build, last_build_time, last_build_days
190
            If IsNull(rsQry("delta")) Then
191
                delta = 0
192
            Else
193
                delta = CLng(rsQry("delta"))
194
            End If
195
            last_build = rsQry("last_build")
196
            last_build_time = rsQry("last_build_hours")
197
            last_build_days = rsQry("last_build_days")
198
            If delta < (60*60*24) Then
199
                GetLastBuildAge = last_build_time  
200
            Else     
201
                GetLastBuildAge = last_build
202
            End If
203
        End If
204
        rsQry.Close()
205
        Set rsQry = nothing
206
 
207
End Function
208
 
209
'--------------------------------------------------------------------------------------------------------------------------
210
Function GetModifiedSeqNo( rtagid)
211
   Dim  query_string, rsQry
212
       query_string = "SELECT SEQNUM FROM RELEASE_MODIFIED WHERE RTAG_ID = " & rtagid
213
 
214
        Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
215
        If (NOT rsQry.BOF) AND (NOT rsQry.EOF) Then
216
            GetModifiedSeqNo = rsQry("SEQNUM")
217
        Else
218
            GetModifiedSeqNo = "-"
219
        End If
220
        rsQry.Close()
221
        Set rsQry = nothing
222
 
223
End Function
224
 
225
'--------------------------------------------------------------------------------------------------------------------------
226
%>
227
<%
228
'------------ RUN BEFORE PAGE RENDER ----------
229
shref_base = "http://" & archive_server & "/devl/abtlog/"
230
 
231
' --- Get Form details from DB ---
232
Call GetFormDetails ( Request("rtag_id"), objFormCollector )
233
 
234
' --- Enter Form Validation Rule Changes here... ----
235
'----------------------------------------------------
236
 
237
' --- RUN onPostBack ---
238
If Request("action") <> "" AND objAccessControl.UserLogedIn Then
239
 
240
  If objEH.Finally Then
241
    If Request("action") = "include" Then
242
      Call RipplePackage (True)
243
      ' Redirect to the current page so that a refesh will not
244
      ' cause a form re-submit.
5957 dpurdie 245
      Call Destroy_All_Objects
5357 dpurdie 246
      Response.Redirect(ScriptName & "?rtag_id=" & parRtagId)
247
    Else
248
      Call OpenInWindow ( "dependencies.asp?rtag_id="& parRtagId )
249
    End If
250
  End If
251
 
252
End If
253
 
254
'----------------------------------------------
255
%>
256
<script language="JavaScript" type="text/JavaScript">
257
 
258
window.addEventListener ?
259
window.addEventListener("load",InitShow,false) :
260
window.attachEvent && window.attachEvent("onload",InitShow);
261
 
262
function InitShow(e)
263
{
264
    toggleDispClass('rootCause',0);
265
    toggleDispClass('rootNoEnv',0);
266
    toggleDispClass('rootFile',0);
267
    toggleDispClass('rootIndirect',0);
268
    toggleDispClass('manualCause',0);
269
}
270
 
271
function toggleDispClass(cname,flip)
272
{
273
    var cookieName = 'RELMGR_BUILDSTATUS';
274
    var cv = JSON.parse(getCookie(cookieName));
275
    if (!cv)
276
        cv = new Object;
277
    if (!cv.BuildStatus)
278
        cv.BuildStatus = new Object;
279
 
280
    var state = cv.BuildStatus[cname];
281
    if (state === undefined)
282
        state = true;
283
 
284
    if (flip>0)
285
        state = !state;
286
 
287
    cv.BuildStatus[cname] = state;
288
 
289
    // Reflect the current state in the checkbox
290
    var de = document.getElementById(cname);
291
    if (de)
292
        de.checked = state;
293
 
294
    var elements = new Array();
295
    elements = getElementsByClassName(cname);
296
    for(i in elements ){
297
        if (state) {
298
            elements[i].style.display = "";
299
        }
300
        else {
301
            elements[i].style.display = "none";
302
        }
303
    }
304
    setCookie(cookieName, JSON.stringify(cv), 365 );
305
}
306
 
307
</script>
308
 
309
<html>
310
   <head>
311
      <title>Release Manager</title>
312
      <link rel="shortcut icon" href="<%=FavIcon%>"/>
313
      <meta http-equiv="Pragma" content="no-cache">
314
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
315
      <link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
316
      <link rel="stylesheet" href="images/navigation.css" type="text/css">
317
      <script language="JavaScript" src="images/common.js"></script>
318
      <!--#include file="_jquery_includes.asp"-->
319
      <!-- TIPS -->
320
      <script type="text/javascript" src="scripts/json2.js"></script>
321
      <script language="JavaScript" src="images/tipster.js"></script>
322
      <script language="JavaScript" src="images/_help_tips.js"></script>
323
      <script language="JavaScript" type="text/JavaScript">
5623 dpurdie 324
      formTips.tips.h_lastchange       = stdTip(300, 'Last Change', 'This is an indication of the time since the daemon interogated the database.' +
325
                                                                  '<p>Short times will be shown as seconds. Longer times will be shown as a time within ' + 
326
                                                                  'the last 24 hours. Longer times will be shown as a date.' 
327
                                                                  );
5357 dpurdie 328
      </script>
329
      <!-- DROPDOWN MENUS -->
330
      <!--#include file="_menu_def.asp"-->
331
      <script language="JavaScript1.2" src="images/popup_menu.js"></script>
332
   </head>
333
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" onload="isChecked('pv_id_list','submit');">
334
      <!-- HEADER -->
335
      <!--#include file="_header.asp"-->
336
      <!-- BODY ---->
337
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
338
         <tr>
339
            <td width="1" background="images/bg_home_orange.gif" valign="top"></td>
340
            <td width="100%" rowspan="1" align="center" valign="top" bgcolor="#EEEFEF">
341
               <!-- FORM START -->
342
               <%
343
               objFormComponent.FormName = "FormName"
344
               objFormComponent.Action = ScriptName &"?rtag_id="& parRtagId
345
               Call objFormComponent.FormStart()
346
               %>
347
               <table width="10" border="0" cellspacing="0" cellpadding="0">
348
                  <tr>
349
                     <td width="1%"></td>
350
                     <td width="100%">
351
                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
352
                           <tr>
353
                              <td nowrap class="body_txt"></td>
354
                           </tr>
355
                        </table>
356
                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
357
                           <tr>
358
                              <td nowrap class="form_ttl"><p>&nbsp;</p>
359
                                 <p>BUILD STATUS INFORMATION</p>
360
                              </td>
361
                              <td align="right" valign="bottom"></td>
362
                           </tr>
363
                        </table>
364
                     </td>
365
                     <td width="1%"></td>
366
                  </tr>
367
                  <tr>
368
                     <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
369
                     <td background="images/lbox_bg_blue.gif" class="lbox_ttl_w"><img src="images/h_trsp_dot.gif" width="600" height="15"></td>
370
                     <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
371
                  </tr>
372
                  <tr>
373
                     <td bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
374
                     <td bgcolor="#FFFFFF" valign="top">
375
                        <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
376
                        <!--#include file="messages/_msg_inline.asp"-->
377
                        <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
378
                        <br>
379
                        <table width="100%" border="0" cellspacing="2" cellpadding="0">
380
                        <tr><td colspan=4 class='err_alert'>
381
                              <font size='2'><b>Packages Excluded From Build</b></font>
382
                           </td>
383
                           </tr>
384
                           <td></td>
385
                           <td  colspan=3 class="body_row">
386
                           <fieldset class="fset" align="right" style=" border: 1px groove; ">
387
                                Show
388
                                <input type="checkbox" checked value=0 name="showManual"   id="manualCause"   onClick="toggleDispClass('manualCause',1);">Manual Exclusions
389
                                <input type="checkbox" checked value=0 name="showCause"    id="rootCause"     onClick="toggleDispClass('rootCause',1);">Config Errors
390
                                <input type="checkbox" checked value=0 name="showNoEnv"    id="rootNoEnv"     onClick="toggleDispClass('rootNoEnv',1);">Env Errors
391
                                <input type="checkbox" checked value=0 name="showFile"     id="rootFile"      onClick="toggleDispClass('rootFile',1);">Build Errors
392
                                <input type="checkbox" checked value=0 name="showIndirect" id="rootIndirect"  onClick="toggleDispClass('rootIndirect',1);">Indirect Exclusions
393
                           </fieldset>
394
                           </td>
395
                           </tr>
396
 
397
                           <tr>
398
                              <td background="images/bg_table_col.gif" class="err_alert"><b>Directly</b></td>
399
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Package</td>
400
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Version</td>
401
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Root Cause</td>
402
                           </tr>
403
                           <tr>
404
                           <%
405
                           query_string = " select pkg.pkg_name, pv.pkg_version, pv.pv_id, dnr.rtag_id, dnr.root_cause, dnr.root_file, pv.pv_description"&_
406
                                          "   from do_not_ripple dnr, package_versions pv, packages pkg"&_
407
                                          "  where dnr.rtag_id = "& parRtagId &_
408
                                          "    and pv.pv_id    = dnr.pv_id"&_
409
                                          "    and pkg.pkg_id  = pv.pkg_id"&_
410
                                          "    and dnr.root_pv_id is null"&_
411
                                          "  order by pkg_name"
412
                           Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
413
                           '--- Render rows ---
414
                           Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
415
                            Dim rowClass
416
                            Dim rowData
417
                            '
418
                            ' Manually excluded packages have no root_cause or root_file or root_pv_id
419
                            '
420
                            ' root_file, if supplied, indicates a build failure log file exists
421
                            ' this should always prevail over the textual root_cause
422
                            '
423
                            If (IsNull(rsQry("root_file")) AND IsNull(rsQry("root_cause"))) Then
424
                                rowData = "Manually Excluded"
425
                                rowClass = "manualCause"
426
 
427
                            ElseIf IsNull(rsQry("root_file")) Then
428
                               rowData = rsQry("root_cause")
429
                               If InStr(rowData, "no build env") Then
430
                                   rowClass = "rootNoEnv"
431
                               Else
432
                                   rowClass = "rootCause"
433
                               End If
434
 
435
                            Else
436
                                rowClass = "rootFile"
437
                                rowData = "<a class=""txt_linked"" title=""" & rsQry("root_file") &_
438
                                          " Log file may have expired."" " &_
439
                                          "href=""" & shref_base & rsQry("root_file") & """>" &_
440
                                          "Build Failure Log File</a>"
441
                            End If
442
                           %>
443
                              <tr class="<%=rowClass%>">
444
                                 <td colspan="5" background="images/bg_rep_line.gif"><img src="images/spacer.gif" width="1" height="1"></td>
445
                              </tr>
446
                              <tr class="<%=rowClass%>">
447
                                 <td nowrap width="1%">
448
                                    <!-- The use of the isChecked() javascript function below, enables the submit button if any checkboxes are checked, -->
449
                                    <!-- else it will disable the submit button. The function is badly named, but nevertheless, that is what it does.   -->
450
                                    <a name="PkgName_<%=rsQry("pkg_name")%>">
451
                                    <input type="checkbox" value="<%=rsQry("pv_id")%>" name="pv_id_list" id="pv_id_list" onClick="isChecked('pv_id_list','IncludeSubmit');">
452
                                    </a>
453
                                 </td>
454
                                 <td nowrap class="body_rowg"><a class="txt_linked" href="dependencies.asp?pv_id=<%=rsQry("pv_id")%>&rtag_id=<%=rsQry("rtag_id")%>" title="<%=rsQry("pv_description")%>"><%=rsQry("pkg_name")%></a></td>
455
                                 <td nowrap class="body_rowg"><%=rsQry("pkg_version")%></td>
456
                                 <td nowrap class="body_rowg"><%=rowData%></td>
457
                              </tr>
458
                           <%
459
                            rsQry.MoveNext
460
                           Loop%>
461
                           <tr>
462
                              <td background="images/bg_table_col.gif" class="err_alert"><b>Indirectly</b></td>
463
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Package</td>
464
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Version</td>
465
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Root Cause Package</td>
466
                           </tr>
467
                           <%
468
                           query_string = " select pv.pv_id, pkg.pkg_name, pv.pkg_version, qkg.pkg_name, dnr.rtag_id, pv.pv_description"&_
469
                                          "   from do_not_ripple dnr, package_versions pv, package_versions qv, packages pkg, packages qkg"&_
470
                                          "  where dnr.rtag_id = "& parRtagId &_
471
                                          "    and pv.pv_id    = dnr.pv_id"&_
472
                                          "    and pkg.pkg_id  = pv.pkg_id"&_
473
                                          "    and qv.pv_id    = dnr.root_pv_id"&_
474
                                          "    and qkg.pkg_id  = qv.pkg_id"&_
475
                                          "    and dnr.root_pv_id is not null"&_
476
                                          "  order by pkg.pkg_name"
477
                           Dim rsQry2
478
                           Set rsQry2 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
479
                           '--- Render rows ---
480
                           Do While (NOT rsQry2.BOF) AND (NOT rsQry2.EOF)%>
481
                              <tr class="rootIndirect">
482
                                 <td colspan="5" background="images/bg_rep_line.gif"><img src="images/spacer.gif" width="1" height="1"></td>
483
                              </tr>
484
                              <tr class="rootIndirect">
485
 
486
                                 <td nowrap width="1%">
487
                                    <input type="checkbox" value=0 disabled=true name="notused" id="notused">
488
                                 </td>
489
                                 <td nowrap class="body_rowg"><a class="txt_linked" href="dependencies.asp?pv_id=<%=rsQry2(0)%>&rtag_id=<%=rsQry2(4)%>" title="<%=rsQry2(5)%>"><%=rsQry2(1)%></a></td>
490
                                 <td nowrap class="body_rowg"><%=rsQry2(2)%></td>
491
                                 <td nowrap class="body_rowg"><a href="#PkgName_<%=rsQry2(3)%>" style="text-decoration: none;">&raquo;&nbsp;<%=rsQry2(3)%></a></td>
492
                              </tr>
493
                              <%
494
                              rsQry2.MoveNext
495
                           Loop%>
496
                        </table>
497
                     </td>
498
                     <td background="images/lbox_bgside_white.gif">&nbsp;</td>
499
                  </tr>
500
                  <%If rsQry.RecordCount > 0 Then%>
501
                     <tr>
502
                        <td background="images/bg_action_norm.gif"></td>
503
                        <td align="right" background="images/bg_action_norm.gif">
504
                           <%
505
                           Response.Write(objFormComponent.SubmitButton ( "Include", "name='IncludeSubmit' id='IncludeSubmit' class='form_btn' disabled style='color:silver' onClick=""return vixConfirm('Are you sure you want to include these packages for building?',{title:'Include Packages', post : 'FormName'})""" ))
506
                           Response.Write(objPMod.ComposeHiddenTags())
507
                           %>
508
                        </td>
509
                        <td background="images/bg_action_norm.gif"><img src="images/h_trsp_dot.gif" width="5" height="30"></td>
510
                     </tr>
511
                  <%End If%>
512
                  <tr>
513
                     <td background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
514
                     <td background="images/lbox_bg_blue.gif"></td>
515
                     <td background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
516
                  </tr>
517
               </table>
518
               <!-- ACTION BUTTONS ---------------------------------------------->
519
               <input type="hidden" name="action" value="include">
520
               <!-- ACTION BUTTONS END  ------------------------------------------>
521
               <%Call objFormComponent.FormEnd()%>
522
               <!-- FORM END ----------------------------------------------------->
523
            </td>
524
            <td width="1" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="1"></td>
525
         </tr>
526
         <%
527
         rsQry.Close()
528
         Set rsQry = nothing
529
         rsQry2.Close()
530
         Set rsQry2 = nothing
531
         %>
532
         <tr>
533
            <td width="1" background="images/bg_home_orange.gif" valign="top"></td>
534
            <td width="100%" rowspan="2" align="center" valign="top" bgcolor="#EEEFEF">
535
               <table width="10" border="0" cellspacing="0" cellpadding="0">
536
                  <tr>
537
                     <td width="1%"></td>
538
                     <td width="100%">
539
                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
540
                           <tr>
541
                              <td nowrap class="form_ttl"><p>&nbsp;</p>
542
                                 <p>DAEMON STATUS INFORMATION</p>
543
                              </td>
544
                              <td  valign="bottom" class="body_rowg">
545
                                Last Build: <%=GetLastBuildAge(parRtagId)%>
546
                                 [<%=GetModifiedSeqNo(parRtagId)%>]
547
                              </td>
548
                              <td align="right" valign="bottom">
549
                                <a class="txt_linked" href="build_status.asp?rtag_id=<%=parRtagId%>" title="Refresh Page">[Refresh]</a></td>
550
                              </td>
551
                           </tr>
552
                        </table>
553
                     </td>
554
                     <td width="1%"></td>
555
                  </tr>
556
                  <tr>
557
                     <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
558
                     <td background="images/lbox_bg_blue.gif" class="lbox_ttl_w"><img src="images/h_trsp_dot.gif" width="600" height="15"></td>
559
                     <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
560
                  </tr>
561
                  <tr>
562
                     <td bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
563
                     <td bgcolor="#FFFFFF" valign="top">
564
                        <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
565
                        <!--#include file="messages/_msg_inline.asp"-->
566
                        <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
567
                        <br>
568
                        <table width="100%" border="0" cellspacing="2" cellpadding="0">
569
                           <%
570
                           Dim indefinitelyPaused
571
                           indefinitelyPaused = FALSE
572
                           ' Insert a warning into the page if the build daemons are indefintely paused.
573
                           query_string = " select * from run_level_schedule rls where rls.indefinite_pause = 'P'"
574
 
575
                           Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
576
                           If rsQry.RecordCount > 0 Then
577
                              indefinitelyPaused = TRUE %>
578
                              <tr>
579
                                 <span class='err_alert'>
580
                                    <font size='2'><b>WARNING: Build Daemons are all stopped - please contact an administrator</b></font>
581
                                 </span>
582
                              </tr>
583
                           <%End If
584
 
585
                           rsQry.Close()
586
                           Set rsQry = nothing
587
                           %>
588
                           <td width="9%" valign="top"></td>
589
                           <tr>
590
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Daemon Host</td>
591
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Machine Type</td>
592
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Mode</td>
593
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Run Level</td>
594
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Current Package</td>
5623 dpurdie 595
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Last Change<%=Quick_Help("h_lastchange")%></td>
5357 dpurdie 596
                              <td valign="top" nowrap background="images/bg_table_col.gif" class="body_col">Control State</td>
597
                           </tr>
598
                           <%
599
                           ' Get the number of release configurations for this RTAG_ID, and iterate through them
600
                           query_string = " select * from release_config rc, gbe_machtype gm, build_machine_config bm"&_
601
                                          "  where rc.rtag_id = "& parRtagId &_
602
                                          "    and gm.gbe_id = rc.gbe_id"&_
603
                                          "    and rc.bmcon_id=bm.bmcon_id(+)" &_
604
                                          "  order by bm.display_name, rc.rcon_id"
605
 
606
                           Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
607
 
608
                           Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
609
                              rcon_id = rsQry("rcon_id")
610
 
611
                              Dim pkgName
612
                              Dim pkgPvid
613
                              Dim currentRunLevel
614
                              Dim daemonState
615
                              Dim delta
616
                              Dim pkgId
617
 
618
                              ' For this release configuration, get its entry from the run_level table. This table may not
619
                              ' have an entry so we must handle that outcome too.
620
                              query_string = " select rl.pause, rl.current_run_level, rl.current_pkg_id_being_built, "&_
621
                                             "        TRUNC (86400*(SYSDATE - rl.KEEP_ALIVE)) as delta" &_
622
                                             "   from run_level rl"&_
623
                                             "  where rl.rcon_id = "& rcon_id
624
 
625
                              Set rsQry2 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
626
 
627
                              currentRunLevel = -1
628
                              pkgId = Null
629
                              pkgName = NULL
630
                              pkgPvid = NULL
631
                              daemonState = 0
632
                              delta = NULL
633
 
634
                              If (rsQry2.RecordCount > 0) Then
635
                                ' Get the run level from the run_level table
636
                                currentRunLevel = rsQry2("current_run_level")
637
                                pkgId = rsQry2("current_pkg_id_being_built")
638
 
639
                                daemonState = rsQry2("pause")
640
                                If IsNull(daemonState) Then daemonState = 0
641
                                If daemonState = "2" Then pkgId = Null
642
 
643
                                delta = rsQry2("delta")
644
                              End If
645
 
646
                              ' If we got an entry from the run_level table, try and use the pkg_id it contains, to obtain a
647
                              ' package name from the packages table
648
                              Dim rsQry3
649
                              If NOT IsNull(pkgId) Then
650
                                 query_string = " select pkg_name,rl.current_pv_id from run_level rl, packages pk"&_
651
                                                "  where rl.rcon_id = "& rcon_id &_
652
                                                "   and  rl.current_pkg_id_being_built = pk.pkg_id"
653
 
654
                                 Set rsQry3 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT )
655
                                 If (rsQry3.RecordCount > 0) Then
656
                                    pkgName = rsQry3("pkg_name")
657
                                    pkgPvid = rsQry3("current_pv_id")
658
                                 End If
659
                                 rsQry3.Close()
660
                                 Set rsQry3 = nothing
661
                              End If
662
 
663
                              ' --- Now render HTML for this release configuration ---
664
                              %>
665
                              <tr>
666
                                 <td colspan="7" background="images/bg_rep_line.gif"><img src="images/spacer.gif" width="1" height="1"></td>
667
                              </tr>
668
                              <tr>
669
                                 <td nowrap class="body_rowg"><%=rsQry("display_name")%></td>
670
                                 <td nowrap class="body_rowg"><%=rsQry("gbe_value")%></td>
671
                                 <td nowrap class="body_rowg"><%=Get_Daemon_Mode(rsQry("daemon_mode"))%></td>
672
                                 <td nowrap class="body_rowg"><%=Get_Run_Level(currentRunLevel, indefinitelyPaused,daemonState)%></td>
673
                                 <td nowrap class="body_rowg"><%=Get_Package_Name(pkgName,parRtagId,pkgPvid)%></td>
674
                                 <td nowrap class="body_rowg"><%=PrettyDelta(delta, daemonState,pkgName )%></td>
675
                                 <td nowrap class="body_rowg">
676
                                    <%
5905 dpurdie 677
                                    If (rsQry2.RecordCount > 0) Then
678
                                       If canActionControlInProject("BuildControl") Then
5357 dpurdie 679
                                          If daemonState = 0 Then
680
                                             Call Action_Buttons ( "Daemon Pause" )
681
                                          ElseIf daemonState = 1 Then
682
                                             Call Action_Buttons ( "Daemon Resume" )
683
                                          ElseIf daemonState = 2 Then
684
                                             Call Action_Buttons ( "Daemon Start" )
685
                                          Else
686
                                             Call Action_Buttons ( "Daemon Resume" )
687
                                          End If
688
                                       Else
689
                                          If daemonState = 0 Then
690
                                             Call Action_Buttons ( "Daemon Pause Disabled" )
691
                                          ElseIf daemonState = 1 Then
692
                                             Call Action_Buttons ( "Daemon Resume Disabled" )
693
                                          ElseIf daemonState = 2 Then
694
                                             Call Action_Buttons ( "Daemon Start Disabled" )
695
                                          Else
696
                                             Call Action_Buttons ( "Daemon Resume Disabled" )
697
                                          End If
698
                                       End If
699
                                    Else
700
                                       %>Unavailable<%
701
                                    End If
702
                                    %>
703
                                 </td>
704
                              </tr>
705
                              <%
706
                              rsQry2.Close()
707
                              Set rsQry2 = nothing
708
                              rsQry.MoveNext
709
                           Loop
710
                           %>
711
                           <tr>
712
                             <td valign="bottom" background="images/bg_table_col.gif" class="body_col"></td>
713
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col"></td>
714
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col"></td>
715
                             <td valign="bottom" background="images/bg_table_col.gif" class="body_col"></td>
716
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col"></td>
717
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col"></td>
718
                             <td valign="bottom" nowrap background="images/bg_table_col.gif" class="body_col">
719
                             <%
5905 dpurdie 720
                               If (rsQry.RecordCount > 0) Then
721
                                 If canActionControlInProject("BuildControl") Then
5357 dpurdie 722
                                   Call Action_Buttons ( "Daemon Control All" )
723
                                 Else 
724
                                   Call Action_Buttons ( "Daemon Control All Disabled" )
725
                                 End If
726
                               Else
727
                                 %>&nbsp<%
728
                               End If
729
                             %>
730
                             </td>
731
                           </tr>
732
                           <%
733
                             rsQry.Close()
734
                             Set rsQry = nothing
735
                           %>
736
                        </table>
737
                     </td>
738
                     <td background="images/lbox_bgside_white.gif">&nbsp;</td>
739
                  </tr>
740
                  <tr>
741
                     <input type="hidden" name="action" value="true">
742
                     <%=objPMod.ComposeHiddenTags()%>
743
                     <td background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
744
                     <td background="images/lbox_bg_blue.gif"></td>
745
                     <td background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
746
                  </tr>
747
               </table>
748
 
749
               <!-- Daemon Instructions Display -->
750
               <table width="10" border="0" cellspacing="0" cellpadding="0">
751
                  <tr>
752
                     <td width="1%"></td>
753
                     <td width="100%">
754
                        <table width="100%" border="0" cellspacing="0" cellpadding="0">
755
                           <tr>
756
                              <td nowrap class="form_ttl"><p>&nbsp;</p>
757
                                 <p>DAEMON INSTRUCTIONS FOR THIS RELEASE</p>
758
                              </td>
759
                              <td align="right" valign="bottom"></td>
760
                           </tr>
761
                        </table>
762
                     </td>
763
                     <td width="1%"></td>
764
                  </tr>
765
                  <tr>
766
                     <td align="left" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
767
                     <td background="images/lbox_bg_blue.gif" class="lbox_ttl_w"><img src="images/h_trsp_dot.gif" width="600" height="15"></td>
768
                     <td align="right" valign="top" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
769
                  </tr>
770
                  <tr>
771
                     <td bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" ></td>
772
                     <td bgcolor="#FFFFFF" valign="top">
773
                        <table width="100%" border="0" cellspacing="2" cellpadding="0">
774
                           <tr>
775
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Operation</td>
776
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Package</td>
777
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Version</td>
5684 dpurdie 778
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Scheduled Time<%=Quick_Help("SchedTime")%>
5357 dpurdie 779
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">Repeat</td>
780
                              <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">In Progress</td>
781
                           </tr>
782
                           <%
783
                           Dim PkgVersion
784
                           Dim UserName
785
                           Dim UserEmail
786
                           Dim bInProgress
787
                           Dim bIsOverdue
788
                           Dim bIsReady
789
 
790
                           Set rsQry = OraDatabase.DbCreateDynaset( "SELECT DAEMON_INSTRUCTIONS_ID,"&_
791
                                                                  "       OP_CODE,"&_
792
                                                                  "       RTAG_ID,"&_
793
                                                                  "       PV_ID,"&_
794
                                                                  "       SCHEDULED_DATETIME,"&_
795
                                                                  "       REPEAT_SECS,"&_
796
                                                                  "       ADDED_DATETIME,"&_
797
                                                                  "       USER_ID,"&_
798
                                                                  "       IN_PROGRESS,"&_
799
                                                                  "       (CASE WHEN SCHEDULED_DATETIME <= SYSDATE THEN 1 ELSE 0 END) AS READY,"&_
800
                                                                  "       (CASE WHEN (SCHEDULED_DATETIME + (1/144)) < SYSDATE THEN 1 ELSE 0 END) AS OVERDUE"&_
801
                                                                  "  FROM DAEMON_INSTRUCTIONS "&_
802
                                                                  "  WHERE RTAG_ID = "& parRtagId &_
803
                                                                  "  ORDER BY PV_ID, SCHEDULED_DATETIME, DAEMON_INSTRUCTIONS_ID", ORADYN_DEFAULT )
804
                           While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
805
 
806
                              If IsNull(rsQry("IN_PROGRESS")) OR rsQry("IN_PROGRESS") = "0" Then
807
                                 bInProgress = False
808
                              Else
809
                                 bInProgress = True
810
                              End If
811
 
812
                              ' only flag as overdue if time threshold has been met but the daemon has not marked the instruction as being in progress.
813
                              If rsQry("OVERDUE") AND NOT bInProgress Then
814
                                 bIsOverdue = True
815
                              Else
816
                                 bIsOverdue = False
817
                              End If
818
 
819
                              If rsQry("READY") Then
820
                                 bIsReady = True
821
                              Else
822
                                 bIsReady = False
823
                              End If
824
 
825
                              ' Get as much info about the package as we can
826
                              PkgId = 0
827
                              PkgName = "N/A"
828
                              PkgVersion = "N/A"
829
                              If (NOT IsNull(rsQry("PV_ID"))) AND (rsQry("PV_ID") <> "") Then
830
                                 Call Get_Pkg_Short_Info(rsQry("PV_ID"), PkgId, PkgName, PkgVersion, NULL, NULL, NULL)
831
                              End If
832
 
833
                              %>
834
                              <tr>
835
 
836
                                 <td align="left" valign="top" class="body_txt">
837
                                    <%=DaemonInstructionOperationName(rsQry("OP_CODE"))%>
838
                                 </td>
839
 
840
                                 <td align="left" valign="top" class="body_txt">
841
                                    <%If (NOT IsNull(rsQry("PV_ID"))) AND (rsQry("PV_ID") <> "") Then%>
842
                                       <a href='fixed_issues.asp?rtag_id=<%=rsQry("RTAG_ID")%>&pv_id=<%=rsQry("PV_ID")%>'><%=PkgName%>
843
                                    <%Else%>
844
                                       <%=PkgName%>
845
                                    <%End If%>
846
                                 </td>
847
 
848
                                 <td align="left" valign="top" class="body_txt">
849
                                    <%=PkgVersion%>
850
                                 </td>
851
 
5632 dpurdie 852
                                 <td align="left" valign="top" class="body_txt" <%If bIsOverdue Then%>style=color:Red<%Elseif bIsReady Then%>style=color:Green<%End If%>><%=DisplayDateTime(rsQry("SCHEDULED_DATETIME"))%></td>
5357 dpurdie 853
 
854
                                 <td align="left" valign="top" class="body_txt"><%=DaemonInstructionRepeatString(rsQry("OP_CODE"), rsQry("REPEAT_SECS"))%></td>
855
 
856
                                 <td align="left" valign="top" class="body_txt">
857
                                    <%If bInProgress Then%>
858
                                       YES
859
                                    <%Else%>
860
                                       NO
861
                                    <%End If%>
862
                                 </td>
863
                              </tr>
864
                              <tr>
865
                                 <td colspan="6" background="images/bg_rep_line.gif"><img src="images/spacer.gif" width="1" height="1"></td>
866
                              </tr>
867
                              <%
868
                              rsQry.MoveNext()
869
                           Wend
870
                           rsQry.Close()
871
                           Set rsQry = nothing
872
                           %>
873
                        </table>
874
                     </td>
875
                     <td background="images/lbox_bgside_white.gif">&nbsp;</td>
876
                  </tr>
877
                  <tr>
878
                     <td background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
879
                     <td background="images/lbox_bg_blue.gif"></td>
880
                     <td background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
881
                  </tr>
882
               </table>
883
 
884
            </td>
885
            <td width="1" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="1"></td>
886
         </tr>
887
         <tr>
888
            <td valign="bottom" align="center" background="images/bg_home_orange.gif">
889
                <img src="images/img_gear.gif" width="86" height="99" vspace="20" hspace="30">
890
            </td>
891
            <td background="images/bg_lght_gray.gif" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="350">
892
            </td>
893
         </tr>
894
      </table>
895
      <!-- FOOTER -->
896
      <!--#include file="_footer.asp"-->
897
   </body>
898
</html>