Subversion Repositories DevTools

Rev

Rev 6877 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'|                                                   |
'|          Edit/View Build Configuration            |
'|                                                   |
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0   ' always load the page, dont store
%>
<!--#include file="common/conf.asp"-->
<!--#include file="common/globals.asp"-->
<!--#include file="common/formating.asp"-->
<!--#include file="common/qstr.asp"-->
<!--#include file="common/common_subs.asp"-->
<!--#include file="common/_form_window_common.asp"-->
<!--#include file="_action_buttons.asp"-->
<!--#include file="class/classActionButtonControl.asp"-->
<!--#include file="common/common_daemon.asp"-->
<% objPMod.PersistInQryString("proj_id") %>
<% '------------ ACCESS CONTROL ------------------ %>
<!--#include file="_access_control_login_optional.asp"-->
<!--#include file="_access_control_general.asp"-->
<!--#include file="_access_control_action_project.asp"-->
<%
'------------ Variable Definition -------------
Dim rsQry
Dim parRtagId
Dim query_string
Dim objBtnControl
Dim rcon_id
Dim masterCount
Dim toolsetWarning

'------------ Constants Declaration -----------
'------------ Variable Init -------------------
parRtagId = Request("rtag_id")
objPMod.PersistInQryString("rtag_id")
Set objBtnControl = New ActionButtonControl
'----------------------------------------------
%>
<%
'--------------------------------------------------------------------------------------------------------------------------
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 canActionControlInProject("BuildConfiguration") 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()
%>
    <div class=panel style='max-width:90%'>
        <div class=rounded_box_caption>
            <%=IIf( canActionControlInProject("BuildConfiguration"),"ADMINISTER","VIEW")%> BUILD CONFIGURATION
        </div>
        <div class="rounded_box" >
            <div class='controlPanel'>
                <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
                <!--#include file="messages/_msg_inline.asp"-->
                <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
                <!-- BUTTONS CONTROL +++++++++++++++++++ -->
            </div>
            <div class=listPanel>
                <!-- +++++++++++++++++++++++++++++++++++ -->
                <table class='full_table'>
                    <thead>
                         <th class='shrink'></th>
                         <th class='shrink'>DAEMON HOST</th>
                         <th class='shrink'>GBE_MACHTYPE</th>
                         <th class='shrink'>DAEMON MODE</th>
                         <th>GBE_BUILDFILTER</th>
                         <%If canActionControlInProject("BuildConfiguration") Then%>
                            <th class='shrink'>ACTION</th>
                         <%End If%>
                    </thead>
                  <%
                  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 canActionControlInProject("BuildConfiguration") 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

                     %>
                     <tr class=border>
                        <td class=center><input type=<%=cbtype%> name="rcon_id_list" value="<%=rsQry("rcon_id")%>"></td>
                        <td class='<%=dClass%>'><%=daemon%></td>
                        <td><%=rsQry("gbe_value")%></td>
                        <td><%=daemon_mode%></td>
                        <td class=wrap><%=rsQry("gbe_buildfilter")%></td>
                        <%If canActionControlInProject("BuildConfiguration") Then%>
                           <td>
                                <%Call objBtnControl.Render  ( Array("btnEditDaemon", "btnRemoveDaemon", "btnDeleteDaemon"), objAccessControl )%>
                           </td>
                        <%End If%>
                     </tr>
                     <%
                     rsQry.MoveNext
                      Loop
                      rsQry.Close()
                      Set rsQry = nothing
                      %>
                </table>
            </div>
            <div>
            <%If masterCount <> 1 OR toolsetWarning OR bInactiveMachine Then %>
            <div  class='errorPanel'>
                <table class="full_table">
                <%If masterCount <> 1 Then %>
                 <tr>
                    <td nowrap class="err_alert">Error
                    <td> The set of Build Machines must have exactly one Master.
                 </tr>
                <%End If%>
                <%If bInactiveMachine Then %>
                 <tr>
                    <td nowrap class="err_alert">Error
                    <td>One or more of the Build Machines have been deprecated and no longer available for use.
                 </tr>
                <%End If%>
                <%If toolsetWarning Then %>
                 <tr>
                    <td nowrap class="err_alert">Warning
                    <td>There should be one TOOLSET builder within each set of machines with the same GBE_MACHTYPE.
                 </tr>
                <%End If%>
                </table>
             </div>
            <%End If%>
            <div class='buttonPanel'>
                <span style='float:left'>
               <% BuildActionButtonClickRaw canActionControlInProject("BuildConfiguration"), "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')" %>
               </span>
                <!-- ACTION BUTTONS ---------------------------------------------->
               <%=objFormComponent.CancelButton ( "OK", "", "build_status.asp?rtag_id="& parRtagId )%>
               <%=objPMod.ComposeHiddenTags()%>
               <%If canActionControlInProject("BuildConfiguration") Then%>
                  <input name="btn" type="submit" value="Unlink">
                  <input name="btn" type="submit" value="Delete">
               <%End If%>
               <input type="hidden" name="rcon_id_list" value="<%=Request("rcon_id_list")%>">
               <input type="hidden" name="action" value="true">
               <!-- ACTION BUTTONS END  ------------------------------------------></td>
            </div>
        </div>
</div>
<%
Call objFormComponent.FormEnd()
'-- FROM END ----------------------------------------------------------------------------------------------------------------
End Sub
'---------------------------------------------------------------------
%>
<html>
<!-- StyleSheet Extensions -->
   <head>
      <title>Release Manager</title>
      <link rel="shortcut icon" href="<%=FavIcon%>"/>
      <meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <link rel="stylesheet" href="images/release_manager_style.css?ver=<%=VixVerNum%>" type="text/css">
      <link rel="stylesheet" href="images/navigation.css?ver=<%=VixVerNum%>" type="text/css">
      <script language="JavaScript" src="images/common.js?ver=<%=VixVerNum%>"></script>
      <!--#include file="_jquery_includes.asp"-->
      <!-- DROPDOWN MENUS -->
      <!--#include file="_menu_def.asp"-->
      <script language="JavaScript1.2" src="images/popup_menu.js?ver=<%=VixVerNum%>"></script>
   </head>
   <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
      <!-- HEADER -->
      <!--#include file="_header.asp"-->
      <!-- BODY ---->
      <table class="full_table">
         <tr>
            <td width="146px" class="bg_panel" valign="top">
                <%Call BuildMenuPane%>
            </td>
            <td width="100%" rowspan="2" align="center" valign="top" bgcolor="#EEEFEF">
                <%Call ShowBuildConfig%>
            </td>
         </tr>
         <tr>
            <td class="bg_panel_btm" height="350">
                <img src="images/img_gears.png" vspace="20" hspace="30"></td>
         </tr>
      </table>
      <!-- FOOTER -->
      <!--#include file="_footer.asp"-->
   </body>
</html>