Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

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