Subversion Repositories DevTools

Rev

Rev 5957 | Rev 6070 | 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
'=====================================================
4
'|                                                   |
5
'|                 ADMIN Page                        |
6
'|                 Daemon Instructions               |
7
'|                                                   |
8
'=====================================================
9
%>
10
<%
11
Option explicit
12
' Good idea to set when using redirect
13
Response.Expires = 0   ' always load the page, dont store
14
%>
15
<!--#include file="common/conf.asp"-->
16
<!--#include file="common/globals.asp"-->
17
<!--#include file="common/formating.asp"-->
18
<!--#include file="common/qstr.asp"-->
19
<!--#include file="common/common_subs.asp"-->
20
<!--#include file="sec/Crypt.asp"-->
21
<!--#include file="common/_form_window_common.asp"-->
22
<!--#include file="_action_buttons.asp"-->
23
 
24
<!--#include file="class/classActionButtonControl.asp"-->
25
<!--#include file="common/daemon_instructions.asp"-->
26
 
27
<%
28
'------------ ACCESS CONTROL ------------------
29
%>
30
<!--#include file="_access_control_general.asp"-->
31
<!--#include file="_access_control_login.asp"-->
32
<%
33
'------------ Variable Definition -------------
34
Dim objBtnControl
35
Dim parSortOrder
36
'------------ Constants Declaration -----------
37
'------------ Variable Init -------------------
38
Set objBtnControl = New ActionButtonControl
39
parSortOrder = Request("sort")
40
If IsNull(parSortOrder) OR parSortOrder = "" Then
41
   parSortOrder = "0"
42
End If
43
'----------------------------------------------
44
%>
45
<%
46
'--------------------------------------------------------------------------------------------
47
' Cleans up the daemon instructions table to remove old data that might have become stranded
48
' due to crashed daemons or failing build machines.
49
'--------------------------------------------------------------------------------------------
50
Sub CleanupOldData()
51
   On Error Resume Next
52
   objEH.TryORA ( OraSession )
53
   OraDatabase.ExecuteSQL _
54
   "BEGIN PK_BUILDAPI.cleanup_stranded_daemon_insts; END;"
55
   objEH.CatchORA ( OraSession )
56
End Sub
57
 
58
 
59
%>
60
 
61
<%
62
' Clean up old data
63
CleanupOldData
64
 
65
' Page Access Condition
66
%>
67
<script language="JavaScript" type="text/javascript">
68
<!--
69
 
70
// This function is designed to be called when a user resets the in-progress value from YES back to NO
71
function reset_in_progress(instId)
72
{
5684 dpurdie 73
    var msg  = 'Are you sure you want to reset this instructions in-progress flag?' +
74
               '<p>You should ensure that the daemons are not operating upon this instruction first.' +
75
               '<p>Check the scheduled date/time. Does it appear so far in the past that it is unlikely' +
76
               '<br>a daemon is still undertaking the work for the instruction?';
5357 dpurdie 77
 
5684 dpurdie 78
    vixConfirm (msg,{
79
        title:'Reset In-Progress flag', 
80
        button: 'Reset Indication',
81
        ok : function(){
82
            var s = '_ResetDaemonInstruction.asp' + '?inst_id=' + instId;
83
            document.location = s; 
84
            }
85
        });
5357 dpurdie 86
}
87
//-->
88
</script>
89
 
90
<html>
91
   <head>
92
      <title>Daemon Instructions Administration</title>
93
      <link rel="shortcut icon" href="<%=FavIcon%>"/>
94
      <meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
95
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
96
      <link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
97
      <link rel="stylesheet" href="images/navigation.css" type="text/css">
5684 dpurdie 98
      <!-- TIPS -->
99
      <script language="JavaScript" src="images/tipster.js"></script>
100
      <script language="JavaScript" src="images/_help_tips.js"></script>
5357 dpurdie 101
      <script language="JavaScript" src="images/common.js"></script>
102
      <!--#include file="_jquery_includes.asp"-->
103
      <!-- DROPDOWN MENUS -->
104
      <!--#include file="_menu_def.asp"-->
105
      <script language="JavaScript1.2" src="images/popup_menu.js"></script>
106
   </head>
107
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" >
108
      <!-- MENU LAYERS -------------------------------------->
109
      <div id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)">
110
      </div>
111
      <!-- TIPS LAYERS -------------------------------------->
112
      <div id="formTipsLayer" style="position: absolute; z-index: 1000; visibility: hidden; left:0; top: 0; width: 10">&nbsp;</div>
113
      <!-- HEADER -->
114
      <!--#include file="_header.asp"-->
115
 
116
      <%
117
      '-- FROM START ---------------------------------------------------------------------------------------------------------
118
      objFormComponent.FormName = "DAEMON_INSTRUCTIONS"
119
      objFormComponent.Action = ScriptName
120
      objFormComponent.OnSubmit = "ShowProgress();"
121
      Call objFormComponent.FormStart()
122
      %>
123
      <table width="100%"  border="0" cellspacing="3" cellpadding="0" >
124
 
125
         <div align="left" class=" body_col">
126
            <br>Current List of DAEMON INSTRUCTIONS
127
         </div>
128
         <tr></tr>
129
         <tr>
130
            <td></td>
131
            <!-- DAEMON INSTRUCTION DETAILS +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
132
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
133
               <%If parSortOrder = "1" Then%>
134
                  <a href='admin_daemon_instructions.asp?sort=1a'>
135
               <%ElseIf parSortOrder = "1a" Then%>
136
                  <a href='admin_daemon_instructions.asp?sort=1b'>
137
               <%ElseIf parSortOrder = "1b" Then%>
138
                  <a href='admin_daemon_instructions.asp?sort=1c'>
139
               <%Else%>
140
                  <a href='admin_daemon_instructions.asp?sort=1'>
141
               <%End If%>
142
               OPERATION
143
            </td>
144
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
145
               <%If parSortOrder = "2" Then%>
146
                  <a href='admin_daemon_instructions.asp?sort=2a'>
147
               <%ElseIf parSortOrder = "2a" Then%>
148
                  <a href='admin_daemon_instructions.asp?sort=2b'>
149
               <%Else%>
150
                  <a href='admin_daemon_instructions.asp?sort=2'>
151
               <%End If%>
152
               PROJECT
153
            </td>
154
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
155
               <%If parSortOrder = "3" Then%>
156
                  <a href='admin_daemon_instructions.asp?sort=3a'>
157
               <%Else%>
158
                  <a href='admin_daemon_instructions.asp?sort=3'>
159
               <%End If%>
160
               RELEASE
161
            </td>
162
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">MODE</td>
163
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
164
               <a href='admin_daemon_instructions.asp?sort=4'>PACKAGE
165
            </td>
166
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">VERSION</td>
167
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
5684 dpurdie 168
               <a href='admin_daemon_instructions.asp?sort=0'>SCHEDULED TIME<%=Quick_Help("SchedTime")%></td>
5357 dpurdie 169
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">REPEAT</td>
170
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
171
               <a href='admin_daemon_instructions.asp?sort=5'>ADDED BY
172
            </td>
5684 dpurdie 173
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">LAST UPDATED</td>
5357 dpurdie 174
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
5684 dpurdie 175
               <a href='admin_daemon_instructions.asp?sort=6'>IN PROGRESS
5357 dpurdie 176
            </td>
177
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">EDIT/DELETE</td>
178
         </tr>
179
         <tr>
180
            <td colspan="13" background="images/bg_table_border.gif"><img src="images/spacer.gif" width="1" height="1"></td>
181
         </tr>
182
 
183
         <%
184
         ' Load some action buttons
185
         Call objBtnControl.LoadActionButtons ( Array("btnEditDaemonInst", "btnDeleteDaemonInst"), OraDatabase )
186
         objBtnControl.ButtonSpacer = 1
187
 
188
         Dim rsQry
189
         Dim bInProgress
190
         Dim bIsReady
191
         Dim bIsOverdue
192
         Dim daemonInstId  ' This variable is needed to support the action buttons to Edit/Delete
193
         Dim bResetInProgressEnabled
194
         Dim sortClause
195
         Dim sortText
196
 
197
         ' determine if user can reset the in-progress state of a daemon instruction
198
         bResetInProgressEnabled = UserAllowedToResetInProgress()
199
 
200
         ' query the daemon_instructions table and also create an indication of an overdue instruction,
201
         ' which is defined as being one that was scheduled for action
202
         Select Case (parSortOrder)
203
         Case "1"
204
            sortClause = " ORDER BY op_code, scheduled_datetime"
205
            sortText   = "Data sorted by Operation, Scheduled time"
206
         Case "1a"
207
            sortClause = " ORDER BY op_code, proj_name, scheduled_datetime"
208
            sortText   = "Data sorted by Operation, Project, Scheduled time"
209
         Case "1b"
210
            sortClause = " ORDER BY op_code, proj_name, rtag_name, scheduled_datetime"
211
            sortText   = "Data sorted by Operation, Project, Release, Scheduled time"
212
         Case "1c"
213
            sortClause = " ORDER BY op_code, proj_name, rtag_name, pkg_name, scheduled_datetime"
214
            sortText   = "Data sorted by Operation, Project, Release, Package, Scheduled time"
215
         Case "2"
216
            sortClause = " ORDER BY proj_name, scheduled_datetime"
217
            sortText   = "Data sorted by Project, Scheduled time"
218
         Case "2a"
219
            sortClause = " ORDER BY proj_name, rtag_name, scheduled_datetime"
220
            sortText   = "Data sorted by Project, Release, Scheduled time"
221
         Case "2b"
222
            sortClause = " ORDER BY proj_name, rtag_name, pkg_name, scheduled_datetime"
223
            sortText   = "Data sorted by Project, Release, Package, Scheduled time"
224
         Case "3"
225
            sortClause = " ORDER BY rtag_name, scheduled_datetime"
226
            sortText   = "Data sorted by Release, Scheduled time"
227
         Case "3a"
228
            sortClause = " ORDER BY rtag_name, pkg_name, scheduled_datetime"
229
            sortText   = "Data sorted by Release, Package, Scheduled time"
230
         Case "4"
231
            sortClause = " ORDER BY pkg_name, scheduled_datetime"
232
            sortText   = "Data sorted by Package, Scheduled time"
233
         Case "5"
234
            sortClause = " ORDER BY full_name, scheduled_datetime"
235
            sortText   = "Data sorted by Added By, Scheduled time"
236
         Case "6"
237
            sortClause = " ORDER BY in_progress, scheduled_datetime"
238
            sortText   = "Data sorted by Progress State, Scheduled time"
239
         Case Else
240
            sortClause = " ORDER BY scheduled_datetime, proj_name, rtag_name, pkg_name"
241
            sortText   = "Data sorted by Scheduled time"
242
         End Select
243
 
244
         Set rsQry = OraDatabase.DbCreateDynaset("SELECT DAEMON_INSTRUCTIONS_ID,"&_
245
                                                 "       proj_id,"&_
246
                                                 "       proj_name,"&_
247
                                                 "       official,"&_
248
                                                 "       rtag_id,"&_
249
                                                 "       rtag_name,"&_
250
                                                 "       OP_CODE,"&_
251
                                                 "       pkg_id,"&_
252
                                                 "       (CASE WHEN NVL2(pv_id,pv_id,0) = 0 THEN 'N/A' ELSE pkg_name END) AS pkg_name,"&_
253
                                                 "       (CASE WHEN NVL2(pv_id,pv_id,0) = 0 THEN 'N/A' ELSE pkg_version END) AS pkg_version,"&_
254
                                                 "       PV_ID,"&_
255
                                                 "       SCHEDULED_DATETIME,"&_
256
                                                 "       REPEAT_SECS,"&_
257
                                                 "       ADDED_DATETIME,"&_
258
                                                 "       USER_ID,"&_
259
                                                 "       IN_PROGRESS,"&_
260
                                                 "       (CASE WHEN SCHEDULED_DATETIME <= SYSDATE THEN 1 ELSE 0 END) AS READY,"&_
261
                                                 "       (CASE WHEN (SCHEDULED_DATETIME + (1/144)) < SYSDATE THEN 1 ELSE 0 END) AS OVERDUE,"&_
262
                                                 "       full_name,"&_
263
                                                 "       user_email"&_
264
                                                 " FROM"&_
265
                                                 " daemon_instructions"&_
266
                                                 " LEFT JOIN package_versions USING (pv_id)"&_
267
                                                 " LEFT JOIN release_tags USING (rtag_id)"&_
268
                                                 " LEFT JOIN projects USING (proj_id)"&_
269
                                                 " LEFT JOIN packages USING (pkg_id)"&_
270
                                                 " LEFT JOIN users USING (user_id)"&_
271
                                                 sortClause, ORADYN_DEFAULT )
272
 
273
         While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
274
 
275
            daemonInstId = rsQry("DAEMON_INSTRUCTIONS_ID")
276
 
277
            If IsNull(rsQry("IN_PROGRESS")) OR rsQry("IN_PROGRESS") = "0" Then
278
               bInProgress = False
279
            Else
280
               bInProgress = True
281
            End If
282
 
283
            ' only flag as overdue if time threshold has been met but the daemon has not marked the instruction as being in progress.
284
            If rsQry("OVERDUE") AND NOT bInProgress Then
285
               bIsOverdue = True
286
            Else
287
               bIsOverdue = False
288
            End If
289
 
290
            If rsQry("READY") Then
291
               bIsReady = True
292
            Else
293
               bIsReady = False
294
            End If
295
 
296
 
297
            %>
298
            <tr>
299
               <input type="hidden" name="DAEMON_INSTRUCTIONS_ID_" & daemonInstId value=daemonInstId>
300
 
301
               <td></td>
302
 
5684 dpurdie 303
               <td nowrap align="left" valign="top" class="body_txt">
5357 dpurdie 304
                  <%=DaemonInstructionOperationName(rsQry("OP_CODE"))%>
305
               </td>
306
 
5684 dpurdie 307
               <td nowrap align="left" valign="top" class="body_txt">
5357 dpurdie 308
                  <%If rsQry("proj_id") <> "" Then%>
309
                     <a href='rtree.asp?proj_id=<%=rsQry("proj_id")%>'><%=rsQry("proj_name")%>
310
                  <%End If%>
311
               </td>
312
 
5684 dpurdie 313
               <td nowrap align="left" valign="top" class="body_txt">
5357 dpurdie 314
                  <%If rsQry("rtag_name") <> "" Then%>
315
                     <a href='dependencies.asp?rtag_id=<%=rsQry("RTAG_ID")%>'><%=rsQry("rtag_name")%>
316
                  <%End If%>
317
               </td>
318
 
5684 dpurdie 319
               <td nowrap align="left" valign="top" class="body_txt">
5357 dpurdie 320
                  <%=Get_Official(rsQry("official"))%>
321
               </td>
322
 
5684 dpurdie 323
               <td nowrap align="left" valign="top" class="body_txt">
5357 dpurdie 324
                  <%If (NOT IsNull(rsQry("PV_ID"))) AND (rsQry("PV_ID") <> "") Then%>
325
                     <a href='fixed_issues.asp?rtag_id=<%=rsQry("RTAG_ID")%>&pv_id=<%=rsQry("PV_ID")%>'><%=rsQry("pkg_name")%>
326
                  <%Else%>
327
                     <%=rsQry("pkg_name")%>
328
                  <%End If%>
329
               </td>
330
 
5684 dpurdie 331
               <td nowrap align="left" valign="top" class="body_txt">
5357 dpurdie 332
                  <%=rsQry("pkg_version")%>
333
               </td>
334
 
5684 dpurdie 335
               <td nowrap 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 336
 
5684 dpurdie 337
               <td nowrap align="left" valign="top" class="body_txt"><%=DaemonInstructionRepeatString(rsQry("OP_CODE"), rsQry("REPEAT_SECS"))%></td>
5357 dpurdie 338
 
5684 dpurdie 339
               <td nowrap align="left" valign="top" class="body_txt">
5357 dpurdie 340
                  <%If rsQry("full_name") <> "" AND rsQry("user_email") <> "" Then%>
341
                     <a href='mailto:<%=rsQry("user_email")%>' title='<%=rsQry("user_email")%>' class="txt_linked"><%=rsQry("full_name")%></a>
342
                  <%End If%>
343
               </td>
344
 
5684 dpurdie 345
               <td nowrap align="left" valign="top" class="body_txt">
5632 dpurdie 346
                  <%=DisplayDateTime(rsQry("ADDED_DATETIME"))%>
5357 dpurdie 347
               </td>
348
 
5684 dpurdie 349
               <td nowrap align="left" valign="top" class="body_txt">
5357 dpurdie 350
                  <%If bInProgress Then%>
5684 dpurdie 351
                     <%If bResetInProgressEnabled  Then%>
5357 dpurdie 352
                        <img src="images/i_reset.gif" onclick="reset_in_progress(<%=daemonInstId%>);"></img>
353
                     <%End If%>
354
                     YES
355
                  <%Else%>
356
                     NO
357
                  <%End If%>
358
               </td>
359
 
5684 dpurdie 360
               <td nowrap align="left" valign="top" class="body_txt">
5357 dpurdie 361
                  <%If UserCanAddOrEditThisDaemonInst(rsQry("proj_id"), rsQry("official"), rsQry("OP_CODE")) Then%>
362
                     <%Call objBtnControl.Render ( Array("btnEditDaemonInst", "btnDeleteDaemonInst"), objAccessControl )%>
363
                  <%ElseIf rsQry("USER_ID") = objAccessControl.UserId Then %>
364
                     <%Call objBtnControl.Render ( Array("btnDeleteDaemonInst"), objAccessControl )%>
365
                  <%Else%>
366
                     No Edit Permission
367
                  <%End If%>
368
               </td>
369
 
370
            </tr>
371
            <%
372
            rsQry.MoveNext()
373
            %>
374
            <tr>
375
               <td colspan="13" background="images/bg_table_border.gif"><img src="images/spacer.gif" width="1" height="1"></td>
376
            </tr>
377
            <%
378
         Wend
379
         rsQry.Close()
380
         Set rsQry = nothing
381
         %>
382
      </table>
383
 
384
      <table width="50%"  border="0" cellspacing="3" cellpadding="0" >
385
         <tr>
386
            <td class="form_iname">
387
               <%=sortText%>
388
            </td>
389
         </tr>
390
      </table>
391
 
392
 
393
      <table width="50%"  border="0" cellspacing="3" cellpadding="0" >
394
         <tr>
395
            <td class="form_iname">&nbsp;</td>
5983 dpurdie 396
            <td class="val_err"><%Call Action_Buttons ( "Add Daemon Instruction" )%>
5357 dpurdie 397
            <td>&nbsp;</td>
398
         </tr>
399
      </table>
400
 
401
      <table width="100%"  border="0" cellspacing="3" cellpadding="0" >
402
         <tr>
403
            <td>NOTE:</td>
404
         </tr>
405
         <tr>
406
            <td valign="top" class="help_txt">1)</td>
407
            <td valign="top" class="help_txt">Instructions become overdue when they are more than 10 minutes old and are not in-progress</td>
408
         </tr>
409
         <tr>
410
            <td valign="top" class="help_txt">2)</td>
411
            <td valign="top" class="help_txt">Instructions that take a long time to act upon, may cause other instructions for the same release to become overdue. This is not a real problem.</td>
412
         </tr>
413
         <tr>
414
            <td valign="top" class="help_txt">3)</td>
415
            <td valign="top" class="help_txt">Instructions may become stranded in the "in-progress" state if build daemons crash, or a problem occurs on a build machine.
416
            Automatic deletion of the instruction will eventually occur (see next note). Contact a release manager administrator to correct this problem before automatic deletion.</td>
417
         </tr>
418
         <tr>
419
            <td valign="top" class="help_txt">4)</td>
420
            <td valign="top" class="help_txt">Instructions with scheduled times 5 days or older will be deleted automatically.</td>
421
         </tr>
422
         <tr>
423
            <td valign="top" class="help_txt">5)</td>
424
            <td valign="top" class="help_txt">Add/Edit/Delete Permissions will vary depending upon Operation, Release Mode, and User Permissions.</td>
425
         </tr>
426
      </table>
427
      <%=objPMod.ComposeHiddenTags()%>
428
      <input type="hidden" name="action" value="true">
429
      <%
430
      Call objFormComponent.FormEnd()
431
      '-- FROM END ----------------------------------------------------------------------------------------------------------------
432
      %>
5957 dpurdie 433
<!-- FOOTER -->
434
<!--#include file="_footer.asp"-->
5357 dpurdie 435
   </body>
436
</html>