Subversion Repositories DevTools

Rev

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