<%@LANGUAGE="VBSCRIPT"%> <% '===================================================== '| | '| Build Status Information | '| | '===================================================== %> <% Option explicit ' Good idea to set when using redirect Response.Expires = 0 ' always load the page, dont store %> <% objPMod.PersistInQryString("proj_id") '------------ ACCESS CONTROL ------------------ 'Let users view the build status without being logged in, but as soon as they try and submit the form, check 'their login status. If Request("action") <> "" AND NOT objAccessControl.UserLogedIn Then%> <%End If%> <% '------------ Scripts -------------------------- %> <% '------------ Variable Definition ------------- Dim objSortHelper Dim rsQry Dim parRtagId Dim parSourceRtagId Dim query_string Dim rcon_id Dim shref_base '------------ Constants Declaration ----------- '------------ Variable Init ------------------- parRtagId = Request("rtag_id") objPMod.PersistInQryString("rtag_id") '---------------------------------------------- %> <% '-------------------------------------------------------------------------------------------------------------------------- Sub GetFormDetails ( parRtagId, ByRef outobjDetails ) Dim rsQry, query OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBER query = _ " SELECT * "&_ " FROM RELEASE_TAGS rt"&_ " WHERE rt.RTAG_ID = :RTAG_ID" Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT ) OraDatabase.Parameters.Remove "RTAG_ID" If rsQry.RecordCount > 0 Then outobjDetails.Item ("rtag_id") = rsQry("rtag_id") outobjDetails.Item ("rtag_name") = rsQry("rtag_name") Else Err.Raise 8, "Sub GetFormDetails in "& ScriptName, "Empty record set returned. parRtagId="& parRtagId End If rsQry.Close Set rsQry = Nothing End Sub '-------------------------------------------------------------------------------------------------------------------------- Sub RipplePackage (flag) On Error Resume Next objEH.ErrorRedirect = TRUE OraDatabase.Parameters.Add "PV_ID_LIST", Request("pv_id_list"), ORAPARM_INPUT, ORATYPE_VARCHAR2 OraDatabase.Parameters.Add "RTAG_ID", parRtag_id, ORAPARM_INPUT, ORATYPE_NUMBER OraDatabase.Parameters.Add "USER_ID", objAccessControl.UserId, ORAPARM_INPUT, ORATYPE_NUMBER objEH.TryORA ( OraSession ) If flag Then OraDatabase.ExecuteSQL _ "BEGIN Ripple_Package( :PV_ID_LIST, :RTAG_ID, :USER_ID ); END;" Else OraDatabase.ExecuteSQL _ "BEGIN UnRipple_Package( :PV_ID_LIST, :RTAG_ID, :USER_ID ); END;" End If objEH.CatchORA ( OraSession ) OraDatabase.Parameters.Remove "PV_ID_LIST" OraDatabase.Parameters.Remove "RTAG_ID" OraDatabase.Parameters.Remove "USER_ID" End Sub '-------------------------------------------------------------------------------------------------------------------------- Function PrettyDelta( delta, daemonState,pkgId ) Dim style style = "" If (delta > 600) AND (IsNull(pkgId) OR pkgId = "") Then style = "style=color:Red" If (delta > 86400 ) Then Dim bdate, dd,mm,yy bdate = DateAdd("s", - delta,Now()) dd = Day(bdate) mm = MonthName(Month(bdate),1) yy = Year( bdate) delta = dd & "-" & mm & "-" & yy If ( daemonState >= 2 ) Then style = "" End If ElseIf ( delta > 60*60 ) Then 'Dim bdate, hh, mins, ss bdate = DateAdd("s", - delta,Now()) delta = TimeValue( bdate) 'delta = hh & ":" & mins & ":" & ss End If End If If style <> "" Then delta = "" & delta & "" End If PrettyDelta = delta End Function '-------------------------------------------------------------------------------------------------------------------------- Function Get_Daemon_Mode( cMode ) If cMode = "S" Then Get_Daemon_Mode = "Slave" ElseIf cMode = "M" Then Get_Daemon_Mode = "Master" End If End Function '-------------------------------------------------------------------------------------------------------------------------- Function Get_Run_Level( nLevel, indefinitePause, astate) If indefinitePause Then Get_Run_Level = "Stopped" ElseIf astate = 1 Then ' if build daemon paused Get_Run_Level = "Paused" ElseIf astate = 2 Then ' if build daemon disabled Get_Run_Level = "Disabled" ElseIf IsNull(astate) Then ' if build daemon enabled If nLevel = 1 Then Get_Run_Level = "Cannot Continue" ElseIf nLevel = 2 Then Get_Run_Level = "Paused" ElseIf nLevel = 3 Then Get_Run_Level = "Building" ElseIf nLevel = 4 Then Get_Run_Level = "Idle" ElseIf nLevel = 5 Then Get_Run_Level = "Waiting" ElseIf nLevel = 6 Then Get_Run_Level = "Publishing" Else Get_Run_Level = "Unknown!" End If End If End Function '-------------------------------------------------------------------------------------------------------------------------- Function Get_Package_Name( sPackageName ) If IsNull(sPackageName) Then Get_Package_Name = "None" Else Get_Package_Name = sPackageName End If End Function '-------------------------------------------------------------------------------------------------------------------------- %> <% '------------ RUN BEFORE PAGE RENDER ---------- shref_base = "http://" & archive_server & "/devl/abtlog/" ' --- Get Form details from DB --- Call GetFormDetails ( Request("rtag_id"), objFormCollector ) ' --- Load Validation Rules --- 'Call objForm.LoadValidationRules ( Array("rtag_name","rtag_description", "config_spec_branch"), OraDatabase ) ' Load Validation Rules ' --- Enter Form Validation Rule Changes here... ---- '---------------------------------------------------- ' --- RUN onPostBack --- If Request("action") <> "" AND objAccessControl.UserLogedIn Then If objEH.Finally Then If Request("action") = "include" Then Call RipplePackage (True) Else Call OpenInWindow ( "dependencies.asp?rtag_id="& parRtagId ) End If End If End If '---------------------------------------------- %> Release Manager <% '-- FORM START --------------------------------------------------------------------------------------------------------- objFormComponent.FormName = "FormName" objFormComponent.Action = ScriptName &"?rtag_id="& parRtagId Call objFormComponent.FormStart() %> <% Call objFormComponent.FormEnd() rsQry.Close() Set rsQry = nothing rsQry2.Close() Set rsQry2 = nothing '-- FORM END ---------------------------------------------------------------------------------------------------------------- %>
<%If rsQry.RecordCount > 0 Then%> <%End If%>

 

BUILD STATUS INFORMATION


Packages Excluded From Build (Daemon Build Failure) <% query_string = " select pkg.pkg_name, pv.pkg_version, pv.pv_id, dnr.rtag_id, dnr.root_cause, dnr.root_file, pv.pv_description"&_ " from do_not_ripple dnr, package_versions pv, packages pkg"&_ " where dnr.rtag_id = "& parRtagId &_ " and pv.pv_id = dnr.pv_id"&_ " and pkg.pkg_id = pv.pkg_id"&_ " and dnr.root_pv_id is null"&_ " order by pkg_name" Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT ) '--- Render rows --- Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF) Dim rowClass Dim rowData ' root_file, if supplied, indicates a build failure log file exists ' this should always prevail over the textual root_cause If IsNull(rsQry("root_file")) Then rowClass = "rootCause" rowData = rsQry("root_cause") Else rowClass = "rootFile" rowData = "" &_ "Build Failure Log File" End If %> <% rsQry.MoveNext Loop%> <% query_string = " select pv.pv_id, pkg.pkg_name, pv.pkg_version, qkg.pkg_name, dnr.rtag_id, pv.pv_description"&_ " from do_not_ripple dnr, package_versions pv, package_versions qv, packages pkg, packages qkg"&_ " where dnr.rtag_id = "& parRtagId &_ " and pv.pv_id = dnr.pv_id"&_ " and pkg.pkg_id = pv.pkg_id"&_ " and qv.pv_id = dnr.root_pv_id"&_ " and qkg.pkg_id = qv.pkg_id"&_ " and dnr.root_pv_id is not null"&_ " order by pkg.pkg_name" Dim rsQry2 Set rsQry2 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT ) '--- Render rows --- Do While (NOT rsQry2.BOF) AND (NOT rsQry2.EOF)%> <% rsQry2.MoveNext Loop%>
Directly PACKAGE NAME PACKAGE VERSION ROOT CAUSE
Show Config Errors Build Errors
" name="pv_id_list" id="pv_id_list" onClick="isChecked('pv_id_list','submit');"> &rtag_id=<%=rsQry("rtag_id")%>" title="<%=rsQry("pv_description")%>"><%=rsQry("pkg_name")%> <%=rsQry("pkg_version")%> <%=rowData%>
Indirectly PACKAGE NAME PACKAGE VERSION ROOT CAUSE PACKAGE NAME
<%=rsQry2(1)%> <%=rsQry2(2)%> <%=rsQry2(3)%>
 
<% Response.Write(objFormComponent.SubmitButton ( "Include", "name='submit' id='submit' class='form_btn' disabled style='color:silver' onClick='return confirmAction(""Are you sure you want to include these packages for building?"")'" )) Response.Write(objPMod.ComposeHiddenTags()) %>
<%=objPMod.ComposeHiddenTags()%>

 

DAEMON STATUS INFORMATION

[Refresh]

<% Dim indefinitelyPaused indefinitelyPaused = FALSE ' Insert a warning into the page if the build daemons are indefintely paused. query_string = " select * from run_level_schedule rls where rls.indefinite_pause = 'P'" Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT ) If rsQry.RecordCount > 0 Then indefinitelyPaused = TRUE %> WARNING: Build Daemons are all stopped - please contact an administrator <%End If rsQry.Close() Set rsQry = nothing %> <% ' Get the number of release configurations for this RTAG_ID, and iterate through them query_string = " select * from release_config rc, gbe_machtype gm, build_machine_config bm"&_ " where rc.rtag_id = "& parRtagId &_ " and gm.gbe_id = rc.gbe_id"&_ " and rc.daemon_hostname = bm.machine_hostname(+)" &_ " order by rc.daemon_hostname,rc.rcon_id" Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT ) Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF) rcon_id = rsQry("rcon_id") Dim pkgName Dim currentRunLevel Dim daemonState Dim delta ' For this release configuration, get its entry from the run_level table. This table may not ' have an entry so we must handle that outcome too. query_string = " select rl.pause, rl.current_run_level, rl.current_pkg_id_being_built, "&_ " TRUNC (86400*(SYSDATE - rl.KEEP_ALIVE)) as delta" &_ " from run_level rl"&_ " where rl.rcon_id = "& rcon_id Set rsQry2 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT ) currentRunLevel = -1 If (rsQry2.RecordCount > 0) Then ' Get the run level from the run_level table currentRunLevel = rsQry2("current_run_level") End If daemonState = NULL If (rsQry2.RecordCount > 0) Then daemonState = rsQry2("pause") End If delta = NULL If (rsQry2.RecordCount > 0) Then delta = rsQry2("delta") End If ' If we got an entry from the run_level table, try and use the pkg_id it contains, to obtain a ' package name from the packages table Dim rsQry3 pkgName = NULL If (rsQry2.RecordCount > 0) AND NOT IsNull(rsQry2("current_pkg_id_being_built")) Then query_string = " select pkg_name from run_level rl, packages pk"&_ " where rl.rcon_id = "& rcon_id &_ " and rl.current_pkg_id_being_built = pk.pkg_id" Set rsQry3 = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT ) If (rsQry3.RecordCount > 0) Then pkgName = rsQry3("pkg_name") End If rsQry3.Close() Set rsQry3 = nothing End If ' --- Now render HTML for this release configuration --- %> <% rsQry2.Close() Set rsQry2 = nothing rsQry.MoveNext Loop %> <% rsQry.Close() Set rsQry = nothing %>
Daemon Host GBE Machtype Mode Run Level Current Package Last Change
Delta (secs)
Switch State
<%=rsQry("display_name")%> <%=rsQry("gbe_value")%> <%=Get_Daemon_Mode(rsQry("daemon_mode"))%> <%=Get_Run_Level(currentRunLevel, indefinitelyPaused,daemonState)%> <%=Get_Package_Name(pkgName)%> <%=PrettyDelta(delta, daemonState,pkgName )%> <% If (rsQry2.RecordCount > 0) AND NOT indefinitelyPaused Then If objAccessControl.UserLogedIn Then If IsNull(daemonState) Then Call Action_Buttons ( "Daemon Pause" ) ElseIf daemonState = 1 Then Call Action_Buttons ( "Daemon Resume" ) ElseIf daemonState = 2 Then Call Action_Buttons ( "Daemon Start" ) Else Call Action_Buttons ( "Daemon Resume" ) End If Else If IsNull(daemonState) Then Call Action_Buttons ( "Daemon Pause Disabled" ) ElseIf daemonState = 1 Then Call Action_Buttons ( "Daemon Resume Disabled" ) ElseIf daemonState = 2 Then Call Action_Buttons ( "Daemon Start Disabled" ) Else Call Action_Buttons ( "Daemon Resume Disabled" ) End If End If Else %>Unavailable<% End If %>
<% If (rsQry.RecordCount > 0) AND NOT indefinitelyPaused Then If objAccessControl.UserLogedIn Then Call Action_Buttons ( "Daemon Control All" ) Else Call Action_Buttons ( "Daemon Control All Disabled" ) End If Else %> <% End If %>
 

 

DAEMON INSTRUCTIONS FOR THIS RELEASE

<% Dim PkgId Dim PkgVersion Dim UserName Dim UserEmail Dim bInProgress Dim bIsOverdue Dim bIsReady Set rsQry = OraDatabase.DbCreateDynaset( "SELECT DAEMON_INSTRUCTIONS_ID,"&_ " OP_CODE,"&_ " RTAG_ID,"&_ " 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"&_ " FROM DAEMON_INSTRUCTIONS "&_ " WHERE RTAG_ID = "& parRtagId &_ " ORDER BY PV_ID, SCHEDULED_DATETIME, DAEMON_INSTRUCTIONS_ID", ORADYN_DEFAULT ) While (NOT rsQry.BOF) AND (NOT rsQry.EOF) 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 ' Get as much info about the package as we can PkgId = 0 PkgName = "N/A" PkgVersion = "N/A" If (NOT IsNull(rsQry("PV_ID"))) AND (rsQry("PV_ID") <> "") Then Call Get_Pkg_Short_Info(rsQry("PV_ID"), PkgId, PkgName, PkgVersion, NULL, NULL, NULL) End If %> <% rsQry.MoveNext() Wend rsQry.Close() Set rsQry = nothing %>
OPERATION PACKAGE VERSION SCHEDULED TIME
(Red = overdue)
(Green = ready)
REPEAT IN PROGRESS
<%=DaemonInstructionOperationName(rsQry("OP_CODE"))%> <%If (NOT IsNull(rsQry("PV_ID"))) AND (rsQry("PV_ID") <> "") Then%> <%=PkgName%> <%Else%> <%=PkgName%> <%End If%> <%=PkgVersion%> style=color:Red<%Elseif bIsReady Then%>style=color:Green<%End If%>><%=EuroDateTime(rsQry("SCHEDULED_DATETIME"))%> <%=DaemonInstructionRepeatString(rsQry("OP_CODE"), rsQry("REPEAT_SECS"))%> <%If bInProgress Then%> YES <%Else%> NO <%End If%>
 
<% Call Destroy_All_Objects %>