<%@LANGUAGE="VBSCRIPT"%> <% '===================================================== '| | '| Edit/View Build Configuration | '| | '===================================================== %> <% Option explicit ' Good idea to set when using redirect Response.Expires = 0 ' always load the page, dont store %> <% objPMod.PersistInQryString("proj_id") %> <% '------------ ACCESS CONTROL ------------------ %> <% '------------ Variable Definition ------------- Dim rsQry Dim parRtagId Dim query_string Dim objBtnControl Dim rcon_id Dim masterCount Dim toolsetWarning Dim bCanEdit '------------ Constants Declaration ----------- '------------ Variable Init ------------------- parRtagId = Request("rtag_id") objPMod.PersistInQryString("rtag_id") Set objBtnControl = New ActionButtonControl bCanEdit = canActionControlInProject("BuildConfiguration") '---------------------------------------------- %> <% '-------------------------------------------------------------------------------------------------------------------------- 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 DeleteDaemon(rcon_id_list) OraDatabase.Parameters.Add "RCON_ID_LIST", rcon_id_list, ORAPARM_INPUT, ORATYPE_VARCHAR2 On Error Resume Next objEH.ErrorRedirect = FALSE objEH.TryORA() OraDatabase.ExecuteSQL "BEGIN PK_BUILDAPI.DELETE_DAEMON(:RCON_ID_LIST); END;" objEH.CatchORA ( OraSession ) OraDatabase.Parameters.Remove "RCON_ID_LIST" End Sub '-------------------------------------------------------------------------------------------------------------------------- Sub RemoveDaemon(rcon_id_list) OraDatabase.Parameters.Add "RCON_ID_LIST", rcon_id_list, ORAPARM_INPUT, ORATYPE_VARCHAR2 On Error Resume Next objEH.ErrorRedirect = FALSE objEH.TryORA() OraDatabase.ExecuteSQL "BEGIN PK_BUILDAPI.REMOVE_DAEMON(:RCON_ID_LIST); END;" objEH.CatchORA ( OraSession ) OraDatabase.Parameters.Remove "RCON_ID_LIST" End Sub '-------------------------------------------------------------------------------------------------------------------------- Sub CheckMasterConfig() Dim rsQry, query OraDatabase.Parameters.Add "RTAG_ID", parRtagId, ORAPARM_INPUT, ORATYPE_NUMBER ' ' Check that there is exacly one master in the build set query = _ "SELECT COUNT (rc.daemon_mode) as masterCount" &_ " FROM release_manager.release_config rc, release_manager.run_level rl" &_ " WHERE rc.rtag_id = :RTAG_ID" &_ " AND rl.RCON_ID(+) = rc.RCON_ID" &_ " AND rc.bmcon_id is not NULL" &_ " GROUP BY rc.daemon_mode" &_ " HAVING rc.daemon_mode = 'M'" Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT ) If rsQry.RecordCount > 0 Then masterCount = rsQry("masterCount") End If rsQry.Close Set rsQry = Nothing If bGetApplication("CheckToolset", TRUE) Then ' ' Check that each GBE_MACHTYPE has exactly one instance where the BUILDFILTER contains ' a TOOLSET builder. The test is a bit sloppy query = _ "SELECT * from ( " &_ "SELECT GBE_ID, COUNT(hasToolset) as ToolsetCount " &_ "FROM " &_ " (SELECT bc.GBE_ID, " &_ " CASE " &_ " WHEN INSTR(rc.GBE_BUILDFILTER, 'TOOLSET') > 0 " &_ " THEN 1 " &_ " ELSE NULL " &_ " END AS hasToolset " &_ " FROM release_manager.release_config rc, " &_ " BUILD_MACHINE_CONFIG bc " &_ " WHERE rc.rtag_id = :RTAG_ID " &_ " AND rc.bmcon_id IS NOT NULL " &_ " AND bc.bmcon_id = rc.bmcon_id " &_ " ) " &_ "GROUP BY GBE_ID ) " &_ "Where ToolsetCount != 1 " Set rsQry = OraDatabase.DbCreateDynaset( query, ORADYN_DEFAULT ) toolsetWarning = rsQry.RecordCount > 0 rsQry.Close Set rsQry = Nothing End If OraDatabase.Parameters.Remove "RTAG_ID" End Sub %> <% '------------ RUN BEFORE PAGE RENDER ---------- ' --- Get Form details from DB --- Call GetFormDetails ( Request("rtag_id"), objFormCollector ) ' --- Enter Form Validation Rule Changes here... ---- '---------------------------------------------------- ' --- RUN onPostBack --- If Request("action") <> "" AND objAccessControl.UserLogedIn Then If objForm.IsValidOnPostBack Then If bCanEdit Then If Request("btn") = "Delete" Then Call DeleteDaemon(Request("rcon_id_list")) ElseIf Request("btn") = "Unlink" Then Call RemoveDaemon(Request("rcon_id_list")) End If End If If objEH.Finally Then Call OpenInWindow ( "release_config.asp?rtag_id="& parRtagId ) End If End If End If Call CheckMasterConfig() '---------------------------------------------- Sub ShowBuildConfig ' Load some action buttons Call objBtnControl.LoadActionButtons ( Array("btnEditDaemon", "btnRemoveDaemon", "btnDeleteDaemon"), OraDatabase ) objBtnControl.ButtonSpacer = 1 '-- FORM START --------------------------------------------------------------------------------------------------------- objFormComponent.FormName = "FormName" objFormComponent.Action = ScriptName Call objFormComponent.FormStart() %>
<%=IIf( bCanEdit,"ADMINISTER","VIEW")%> BUILD CONFIGURATION
<%If bCanEdit Then%> <%End If%> <% query_string = "select rcon_id, display_name, rc.bmcon_id, daemon_mode, gbe_value, gbe_buildfilter, NVL(active, 'U') as ACTIVE " &_ " from release_manager.release_config rc," &_ " release_manager.build_machine_config bm," &_ " release_manager.gbe_machtype gbe" &_ " where rc.rtag_id=" & parRtagId &_ " and rc.bmcon_id=bm.bmcon_id(+)" &_ " and rc.gbe_id=gbe.gbe_id" &_ " order by daemon_mode, bm.display_name" Set rsQry = OraDatabase.DbCreateDynaset( query_string, ORADYN_DEFAULT ) Dim daemon_mode, daemon, cbtype, bActive, bInactiveMachine, dClass bInactiveMachine = false cbtype = "hidden" If bCanEdit Then cbtype = "checkbox" End If '--- Render rows --- Do While (NOT rsQry.BOF) AND (NOT rsQry.EOF) rcon_id = rsQry("rcon_id") daemon = rsQry("display_name") If IsNull(daemon) Then daemon = "" End If If rsQry("daemon_mode") = "M" Then daemon_mode = "MASTER" Else daemon_mode = "SLAVE" End If bActive = rsQry("active") dClass = "" If bActive = "N" Then bInactiveMachine = true dClass = " err_alert strike" End If %> <%If bCanEdit Then%> <%End If%> <% rsQry.MoveNext Loop rsQry.Close() Set rsQry = nothing %>
DAEMON HOST GBE_MACHTYPE DAEMON MODE GBE_BUILDFILTERACTION
name="rcon_id_list" value="<%=rsQry("rcon_id")%>"> <%=daemon%> <%=rsQry("gbe_value")%> <%=daemon_mode%> <%=rsQry("gbe_buildfilter")%> <%Call objBtnControl.Render ( Array("btnEditDaemon", "btnRemoveDaemon", "btnDeleteDaemon"), objAccessControl )%>
<%If masterCount <> 1 OR toolsetWarning OR bInactiveMachine Then %>
<%If masterCount <> 1 Then %> <%End If%> <%If bInactiveMachine Then %> <%End If%> <%If toolsetWarning Then %> <%End If%>
Error The set of Build Machines must have exactly one Master.
Error One or more of the Build Machines have been deprecated and no longer available for use.
Warning There should be one TOOLSET builder within each set of machines with the same GBE_MACHTYPE.
<%End If%>
<% BuildActionButtonClickRaw bCanEdit, "Add Daemon", "Insert New Daemon",TRUE, _ "src='icons/btn_add.gif' width='13' height='13' align='absmiddle' border='0' hspace='3'", _ "MM_openVixIFrame('wAddDaemon.asp?rtag_id="&parRtag_id&"','Add Build Daemon')" %> <%=objFormComponent.CancelButton ( "OK", "", "build_status.asp?rtag_id="& parRtagId )%> <%=objPMod.ComposeHiddenTags()%> <%If bCanEdit Then%> <%End If%> ">
<% Call objFormComponent.FormEnd() '-- FROM END ---------------------------------------------------------------------------------------------------------------- End Sub '--------------------------------------------------------------------- %> Release Manager
<%Call BuildMenuPane%> <%Call ShowBuildConfig%>