<%@LANGUAGE="VBSCRIPT"%> <% '===================================================== '| | '| ADMIN Page | '| Daemon Instructions | '| | '===================================================== %> <% Option explicit ' Good idea to set when using redirect Response.Expires = 0 ' always load the page, dont store %> <% '------------ ACCESS CONTROL ------------------ %> <% '------------ Variable Definition ------------- Dim objBtnControl Dim parSortOrder '------------ Constants Declaration ----------- '------------ Variable Init ------------------- Set objBtnControl = New ActionButtonControl parSortOrder = Request("sort") If IsNull(parSortOrder) OR parSortOrder = "" Then parSortOrder = "0" End If '---------------------------------------------- %> <% '-------------------------------------------------------------------------------------------- ' Cleans up the daemon instructions table to remove old data that might have become stranded ' due to crashed daemons or failing build machines. '-------------------------------------------------------------------------------------------- Sub CleanupOldData() On Error Resume Next objEH.TryORA ( OraSession ) OraDatabase.ExecuteSQL _ "BEGIN PK_BUILDAPI.cleanup_stranded_daemon_insts; END;" objEH.CatchORA ( OraSession ) End Sub %> <% ' Clean up old data CleanupOldData ' Page Access Condition %> Daemon Instructions Administration <% '-- FROM START --------------------------------------------------------------------------------------------------------- objFormComponent.FormName = "DAEMON_INSTRUCTIONS" objFormComponent.Action = ScriptName objFormComponent.OnSubmit = "ShowProgress();" Call objFormComponent.FormStart() %>

Current List of DAEMON INSTRUCTIONS
<% ' Load some action buttons Call objBtnControl.LoadActionButtons ( Array("btnEditDaemonInst", "btnDeleteDaemonInst"), OraDatabase ) objBtnControl.ButtonSpacer = 1 Dim rsQry Dim bInProgress Dim bIsReady Dim bIsOverdue Dim daemonInstId ' This variable is needed to support the action buttons to Edit/Delete Dim bResetInProgressEnabled Dim sortClause Dim sortText ' determine if user can reset the in-progress state of a daemon instruction bResetInProgressEnabled = UserAllowedToResetInProgress() ' query the daemon_instructions table and also create an indication of an overdue instruction, ' which is defined as being one that was scheduled for action Select Case (parSortOrder) Case "1" sortClause = " ORDER BY op_code, scheduled_datetime" sortText = "Data sorted by Operation, Scheduled time" Case "1a" sortClause = " ORDER BY op_code, proj_name, scheduled_datetime" sortText = "Data sorted by Operation, Project, Scheduled time" Case "1b" sortClause = " ORDER BY op_code, proj_name, rtag_name, scheduled_datetime" sortText = "Data sorted by Operation, Project, Release, Scheduled time" Case "1c" sortClause = " ORDER BY op_code, proj_name, rtag_name, pkg_name, scheduled_datetime" sortText = "Data sorted by Operation, Project, Release, Package, Scheduled time" Case "2" sortClause = " ORDER BY proj_name, scheduled_datetime" sortText = "Data sorted by Project, Scheduled time" Case "2a" sortClause = " ORDER BY proj_name, rtag_name, scheduled_datetime" sortText = "Data sorted by Project, Release, Scheduled time" Case "2b" sortClause = " ORDER BY proj_name, rtag_name, pkg_name, scheduled_datetime" sortText = "Data sorted by Project, Release, Package, Scheduled time" Case "3" sortClause = " ORDER BY rtag_name, scheduled_datetime" sortText = "Data sorted by Release, Scheduled time" Case "3a" sortClause = " ORDER BY rtag_name, pkg_name, scheduled_datetime" sortText = "Data sorted by Release, Package, Scheduled time" Case "4" sortClause = " ORDER BY pkg_name, scheduled_datetime" sortText = "Data sorted by Package, Scheduled time" Case "5" sortClause = " ORDER BY full_name, scheduled_datetime" sortText = "Data sorted by Added By, Scheduled time" Case "6" sortClause = " ORDER BY in_progress, scheduled_datetime" sortText = "Data sorted by Progress State, Scheduled time" Case Else sortClause = " ORDER BY scheduled_datetime, proj_name, rtag_name, pkg_name" sortText = "Data sorted by Scheduled time" End Select Set rsQry = OraDatabase.DbCreateDynaset("SELECT DAEMON_INSTRUCTIONS_ID,"&_ " proj_id,"&_ " proj_name,"&_ " official,"&_ " rtag_id,"&_ " rtag_name,"&_ " OP_CODE,"&_ " pkg_id,"&_ " (CASE WHEN NVL2(pv_id,pv_id,0) = 0 THEN 'N/A' ELSE pkg_name END) AS pkg_name,"&_ " (CASE WHEN NVL2(pv_id,pv_id,0) = 0 THEN 'N/A' ELSE pkg_version END) AS pkg_version,"&_ " PV_ID,"&_ " SCHEDULED_DATETIME,"&_ " REPEAT_SECS,"&_ " ADDED_DATETIME,"&_ " USER_ID,"&_ " IN_PROGRESS,"&_ " (CASE WHEN SCHEDULED_DATETIME <= SYSDATE THEN 1 ELSE 0 END) AS READY,"&_ " (CASE WHEN (SCHEDULED_DATETIME + (1/144)) < SYSDATE THEN 1 ELSE 0 END) AS OVERDUE,"&_ " full_name,"&_ " user_email"&_ " FROM"&_ " daemon_instructions"&_ " LEFT JOIN package_versions USING (pv_id)"&_ " LEFT JOIN release_tags USING (rtag_id)"&_ " LEFT JOIN projects USING (proj_id)"&_ " LEFT JOIN packages USING (pkg_id)"&_ " LEFT JOIN users USING (user_id)"&_ sortClause, ORADYN_DEFAULT ) While (NOT rsQry.BOF) AND (NOT rsQry.EOF) daemonInstId = rsQry("DAEMON_INSTRUCTIONS_ID") If IsNull(rsQry("IN_PROGRESS")) OR rsQry("IN_PROGRESS") = "0" Then bInProgress = False Else bInProgress = True End If ' only flag as overdue if time threshold has been met but the daemon has not marked the instruction as being in progress. If rsQry("OVERDUE") AND NOT bInProgress Then bIsOverdue = True Else bIsOverdue = False End If If rsQry("READY") Then bIsReady = True Else bIsReady = False End If %> <% rsQry.MoveNext() %> <% Wend rsQry.Close() Set rsQry = nothing %>
<%If parSortOrder = "1" Then%> <%ElseIf parSortOrder = "1a" Then%> <%ElseIf parSortOrder = "1b" Then%> <%Else%> <%End If%> OPERATION <%If parSortOrder = "2" Then%> <%ElseIf parSortOrder = "2a" Then%> <%Else%> <%End If%> PROJECT <%If parSortOrder = "3" Then%> <%Else%> <%End If%> RELEASE MODE PACKAGE VERSION SCHEDULED TIME<%=Quick_Help("SchedTime")%> REPEAT ADDED BY LAST UPDATED IN PROGRESS EDIT/DELETE
<%=DaemonInstructionOperationName(rsQry("OP_CODE"))%> <%If rsQry("proj_id") <> "" Then%> <%=rsQry("proj_name")%> <%End If%> <%If rsQry("rtag_name") <> "" Then%> <%=rsQry("rtag_name")%> <%End If%> <%=Get_Official(rsQry("official"))%> <%If (NOT IsNull(rsQry("PV_ID"))) AND (rsQry("PV_ID") <> "") Then%> <%=rsQry("pkg_name")%> <%Else%> <%=rsQry("pkg_name")%> <%End If%> <%=rsQry("pkg_version")%> style=color:Red<%Elseif bIsReady Then%>style=color:Green<%End If%>><%=DisplayDateTime(rsQry("SCHEDULED_DATETIME"))%> <%=DaemonInstructionRepeatString(rsQry("OP_CODE"), rsQry("REPEAT_SECS"))%> <%If rsQry("full_name") <> "" AND rsQry("user_email") <> "" Then%> <%=emailField(rsQry("full_name"),rsQry("user_email"))%> <%End If%> <%=DisplayDateTime(rsQry("ADDED_DATETIME"))%> <%If bInProgress Then%> <%If bResetInProgressEnabled Then%> <%End If%> YES <%Else%> NO <%End If%> <%If UserCanAddOrEditThisDaemonInst(rsQry("proj_id"), rsQry("official"), rsQry("OP_CODE")) Then%> <%Call objBtnControl.Render ( Array("btnEditDaemonInst", "btnDeleteDaemonInst"), objAccessControl )%> <%ElseIf rsQry("USER_ID") = objAccessControl.UserId Then %> <%Call objBtnControl.Render ( Array("btnDeleteDaemonInst"), objAccessControl )%> <%Else%> No Edit Permission <%End If%>
<%=sortText%>
  <%Call Action_Buttons ( "Add Daemon Instruction" )%>  
NOTE:
1) Instructions become overdue when they are more than 10 minutes old and are not in-progress
2) 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.
3) Instructions may become stranded in the "in-progress" state if build daemons crash, or a problem occurs on a build machine. Automatic deletion of the instruction will eventually occur (see next note). Contact a release manager administrator to correct this problem before automatic deletion.
4) Instructions with scheduled times 5 days or older will be deleted automatically.
5) Add/Edit/Delete Permissions will vary depending upon Operation, Release Mode, and User Permissions.
<%=objPMod.ComposeHiddenTags()%> <% Call objFormComponent.FormEnd() '-- FROM END ---------------------------------------------------------------------------------------------------------------- %>