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>
5190 dpurdie 99
      <!--#include file="_jquery_includes.asp"-->
147 ghuddy 100
      <!-- DROPDOWN MENUS -->
101
      <!--#include file="_menu_def.asp"-->
102
      <script language="JavaScript1.2" src="images/popup_menu.js"></script>
103
   </head>
104
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" >
105
      <!-- MENU LAYERS -------------------------------------->
106
      <div id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)">
107
      </div>
108
      <!-- TIPS LAYERS -------------------------------------->
109
      <div id="formTipsLayer" style="position: absolute; z-index: 1000; visibility: hidden; left:0; top: 0; width: 10">&nbsp;</div>
110
      <!-- HEADER -->
111
      <!--#include file="_header.asp"-->
112
 
113
      <%
114
      '-- FROM START ---------------------------------------------------------------------------------------------------------
115
      objFormComponent.FormName = "DAEMON_INSTRUCTIONS"
116
      objFormComponent.Action = ScriptName
117
      objFormComponent.OnSubmit = "ShowProgress();"
118
      Call objFormComponent.FormStart()
119
      %>
120
      <table width="100%"  border="0" cellspacing="3" cellpadding="0" >
121
 
122
         <div align="left" class=" body_col">
123
            <br>Current List of DAEMON INSTRUCTIONS
124
         </div>
125
         <tr></tr>
126
         <tr>
127
            <td></td>
128
            <!-- DAEMON INSTRUCTION DETAILS +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
149 ghuddy 129
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
130
               <%If parSortOrder = "1" Then%>
131
                  <a href='admin_daemon_instructions.asp?sort=1a'>
132
               <%ElseIf parSortOrder = "1a" Then%>
133
                  <a href='admin_daemon_instructions.asp?sort=1b'>
134
               <%ElseIf parSortOrder = "1b" Then%>
135
                  <a href='admin_daemon_instructions.asp?sort=1c'>
136
               <%Else%>
137
                  <a href='admin_daemon_instructions.asp?sort=1'>
138
               <%End If%>
139
               OPERATION
140
            </td>
141
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
142
               <%If parSortOrder = "2" Then%>
143
                  <a href='admin_daemon_instructions.asp?sort=2a'>
144
               <%ElseIf parSortOrder = "2a" Then%>
145
                  <a href='admin_daemon_instructions.asp?sort=2b'>
146
               <%Else%>
147
                  <a href='admin_daemon_instructions.asp?sort=2'>
148
               <%End If%>
149
               PROJECT
150
            </td>
151
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
152
               <%If parSortOrder = "3" Then%>
153
                  <a href='admin_daemon_instructions.asp?sort=3a'>
154
               <%Else%>
155
                  <a href='admin_daemon_instructions.asp?sort=3'>
156
               <%End If%>
157
               RELEASE
158
            </td>
147 ghuddy 159
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">MODE</td>
149 ghuddy 160
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
161
               <a href='admin_daemon_instructions.asp?sort=4'>PACKAGE
162
            </td>
147 ghuddy 163
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">VERSION</td>
149 ghuddy 164
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
165
               <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 166
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">REPEAT</td>
149 ghuddy 167
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
168
               <a href='admin_daemon_instructions.asp?sort=5'>ADDED BY
169
            </td>
147 ghuddy 170
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">LAST<br>UPDATED</td>
149 ghuddy 171
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">
172
               <a href='admin_daemon_instructions.asp?sort=6'>IN<br>PROGRESS
173
            </td>
147 ghuddy 174
            <td align="left" nowrap background="images/bg_table_col.gif" class="body_col">EDIT/DELETE</td>
175
         </tr>
176
         <tr>
177
            <td colspan="13" background="images/bg_table_border.gif"><img src="images/spacer.gif" width="1" height="1"></td>
178
         </tr>
179
 
180
         <%
181
         ' Load some action buttons
182
         Call objBtnControl.LoadActionButtons ( Array("btnEditDaemonInst", "btnDeleteDaemonInst"), OraDatabase )
183
         objBtnControl.ButtonSpacer = 1
184
 
185
         Dim rsQry
186
         Dim bInProgress
187
         Dim bIsReady
188
         Dim bIsOverdue
189
         Dim daemonInstId  ' This variable is needed to support the action buttons to Edit/Delete
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
            %>
295
            <tr>
296
               <input type="hidden" name="DAEMON_INSTRUCTIONS_ID_" & daemonInstId value=daemonInstId>
297
 
298
               <td></td>
299
 
300
               <td align="left" valign="top" class="body_txt">
301
                  <%=DaemonInstructionOperationName(rsQry("OP_CODE"))%>
302
               </td>
303
 
304
               <td align="left" valign="top" class="body_txt">
149 ghuddy 305
                  <%If rsQry("proj_id") <> "" Then%>
306
                     <a href='rtree.asp?proj_id=<%=rsQry("proj_id")%>'><%=rsQry("proj_name")%>
147 ghuddy 307
                  <%End If%>
308
               </td>
309
 
310
               <td align="left" valign="top" class="body_txt">
149 ghuddy 311
                  <%If rsQry("rtag_name") <> "" Then%>
312
                     <a href='dependencies.asp?rtag_id=<%=rsQry("RTAG_ID")%>'><%=rsQry("rtag_name")%>
147 ghuddy 313
                  <%End If%>
314
               </td>
315
 
316
               <td align="left" valign="top" class="body_txt">
149 ghuddy 317
                  <%=Get_Official(rsQry("official"))%>
147 ghuddy 318
               </td>
319
 
320
               <td align="left" valign="top" class="body_txt">
321
                  <%If (NOT IsNull(rsQry("PV_ID"))) AND (rsQry("PV_ID") <> "") Then%>
149 ghuddy 322
                     <a href='fixed_issues.asp?rtag_id=<%=rsQry("RTAG_ID")%>&pv_id=<%=rsQry("PV_ID")%>'><%=rsQry("pkg_name")%>
147 ghuddy 323
                  <%Else%>
149 ghuddy 324
                     <%=rsQry("pkg_name")%>
147 ghuddy 325
                  <%End If%>
326
               </td>
327
 
328
               <td align="left" valign="top" class="body_txt">
149 ghuddy 329
                  <%=rsQry("pkg_version")%>
147 ghuddy 330
               </td>
331
 
332
               <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>
333
 
334
               <td align="left" valign="top" class="body_txt"><%=DaemonInstructionRepeatString(rsQry("OP_CODE"), rsQry("REPEAT_SECS"))%></td>
335
 
336
               <td align="left" valign="top" class="body_txt">
149 ghuddy 337
                  <%If rsQry("full_name") <> "" AND rsQry("user_email") <> "" Then%>
338
                     <a href='mailto:<%=rsQry("user_email")%>' title='<%=rsQry("user_email")%>' class="txt_linked"><%=rsQry("full_name")%></a>
147 ghuddy 339
                  <%End If%>
340
               </td>
341
 
342
               <td align="left" valign="top" class="body_txt">
343
                  <%=EuroDateTime(rsQry("ADDED_DATETIME"))%>
344
               </td>
345
 
346
               <td align="left" valign="top" class="body_txt">
347
                  <%If bInProgress Then%>
348
                     <%If bResetInProgressEnabled Then%>
349
                        <img src="images/i_reset.gif" onclick="reset_in_progress(<%=daemonInstId%>);"></img>
350
                     <%End If%>
351
                     YES
352
                  <%Else%>
353
                     NO
354
                  <%End If%>
355
               </td>
356
 
357
               <td align="left" valign="top" class="body_txt">
153 ghuddy 358
                  <%If UserCanAddOrEditThisDaemonInst(rsQry("proj_id"), rsQry("official"), rsQry("OP_CODE")) Then%>
147 ghuddy 359
                     <%Call objBtnControl.Render ( Array("btnEditDaemonInst", "btnDeleteDaemonInst"), objAccessControl )%>
5061 dpurdie 360
                  <%ElseIf rsQry("USER_ID") = objAccessControl.UserId Then %>
361
                     <%Call objBtnControl.Render ( Array("btnDeleteDaemonInst"), objAccessControl )%>
147 ghuddy 362
                  <%Else%>
363
                     No Edit Permission
364
                  <%End If%>
365
               </td>
366
 
367
            </tr>
368
            <%
369
            rsQry.MoveNext()
370
            %>
371
            <tr>
372
               <td colspan="13" background="images/bg_table_border.gif"><img src="images/spacer.gif" width="1" height="1"></td>
373
            </tr>
374
            <%
375
         Wend
376
         rsQry.Close()
377
         Set rsQry = nothing
378
         %>
379
      </table>
380
 
381
      <table width="50%"  border="0" cellspacing="3" cellpadding="0" >
382
         <tr>
149 ghuddy 383
            <td class="form_iname">
384
               <%=sortText%>
385
            </td>
386
         </tr>
387
      </table>
388
 
389
 
390
      <table width="50%"  border="0" cellspacing="3" cellpadding="0" >
391
         <tr>
147 ghuddy 392
            <td class="form_iname">&nbsp;</td>
393
            <td class="val_err"><a href=""><%Call Action_Buttons ( "Add Daemon Instruction" )%> </a>
394
            <td>&nbsp;</td>
395
         </tr>
396
      </table>
397
 
398
      <table width="100%"  border="0" cellspacing="3" cellpadding="0" >
399
         <tr>
400
            <td>NOTE:</td>
401
         </tr>
402
         <tr>
403
            <td valign="top" class="help_txt">1)</td>
404
            <td valign="top" class="help_txt">Instructions become overdue when they are more than 10 minutes old and are not in-progress</td>
405
         </tr>
406
         <tr>
407
            <td valign="top" class="help_txt">2)</td>
408
            <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>
409
         </tr>
410
         <tr>
411
            <td valign="top" class="help_txt">3)</td>
412
            <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.
413
            Automatic deletion of the instruction will eventually occur (see next note). Contact a release manager administrator to correct this problem before automatic deletion.</td>
414
         </tr>
415
         <tr>
416
            <td valign="top" class="help_txt">4)</td>
417
            <td valign="top" class="help_txt">Instructions with scheduled times 5 days or older will be deleted automatically.</td>
418
         </tr>
153 ghuddy 419
         <tr>
420
            <td valign="top" class="help_txt">5)</td>
421
            <td valign="top" class="help_txt">Add/Edit/Delete Permissions will vary depending upon Operation, Release Mode, and User Permissions.</td>
422
         </tr>
147 ghuddy 423
 
424
      </table>
425
 
426
      <%=objPMod.ComposeHiddenTags()%>
427
      <input type="hidden" name="action" value="true">
428
      <%
429
      Call objFormComponent.FormEnd()
430
      '-- FROM END ----------------------------------------------------------------------------------------------------------------
431
      %>
432
   </body>
433
</html>
434
<!-- FOOTER -->
435
<!--#include file="_footer.asp"-->
436
<%
437
Call Destroy_All_Objects
438
%>