Subversion Repositories DevTools

Rev

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