Subversion Repositories DevTools

Rev

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