Subversion Repositories DevTools

Rev

Rev 23 | Blame | Last modification | View Log | RSS feed

<?xml version="1.0" ?>
<package>
        <comment>
        PrimalCode wizard generated file.
        </comment>
        <job id="GenerateNodesSpecDefinitons" args="/bom_id:2864" prompt="no">
                <?job error="false" debug="false" ?>
                <runtime>
                        <named helpstring="Bom ID" name="bom_id" required="false" type="string"/>
                </runtime>
                <object id="Oracle_Objects_For_OLE" progid="OracleInProcServer.XOraServer" events="true"/>
                <script language="VBScript" src="common_subs.vbs"/>
                <script language="VBScript" src="config.vbs"/>
                <script id="GenerateNodeSpecFiles" language="VBScript">
<![CDATA[
Option Explicit
'=====================================================
'        Name:  GetNodesSpecFiles
' Description:  Gets the nodes specification files for 
'                               nodes that have an existing node spec   
'                               filename.
'          Author:      Rupesh Solanki  
'                               
'                               
'               INPUT:  bom_id

'=====================================================

'== Variable Definition ==============================
Dim BomId
Dim objArgs
'== Constants Declaration ============================
'== Variable Init ====================================
'=====================================================


'-----------------------------------------------------------------------------------------------------------------
Sub GenerateNodesSpecDefinitons ( nBomId )
        Dim rsQry, aNetworkNodes, NodeSpec, DateString
        Dim lastRow, row
                
        OraDatabase.Parameters.Add "BOM_ID", nBomId, ORAPARM_INPUT, ORATYPE_NUMBER 
                          
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NodesSpecFileNames.sql"), ORADYN_DEFAULT )
        
        OraDatabase.Parameters.Remove "BOM_ID"
        
        If rsQry.RecordCount > 0 Then
                aNetworkNodes = rsQry.GetRows()
                
        End If
        
        lastRow = UBound( aNetworkNodes, 2 )
        DateString = DateReversed( Date )
        
        For row = 0 To lastRow
                
                NodeSpec = Null
        
                NodeSpec = NodeSpec &_
                "#Copyright ERG Transit Systems (c) 1998-2008, All Rights Reserved"& vbNewLine &_
                "#----------------------------------------------------------------"& vbNewLine &_
               "#**** Source Information ****"& vbNewLine &_
               "#"& vbNewLine &_
               "#Source File Name: "& aNetworkNodes( 6, row ) & vbNewLine &_
                "#"& vbNewLine &_
                "#Source File Type: PERL Module File (.pm)"& vbNewLine &_
                "#"& vbNewLine &_
                "#Author: Deployment Manager"& vbNewLine &_
                "#"& vbNewLine &_
                "#Purpose: This file contains the package specification for"& vbNewLine &_
                "#      "& aNetworkNodes( 1, row ) & " node."& vbNewLine &_
                "#"& vbNewLine &_
                "#      The data is provided in the form of two PERL preinitialised"& vbNewLine &_
                "#      HASH of HASHES"& vbNewLine &_
                "#"& vbNewLine &_
                "#      The first hash contains all details regarding the persistant"& vbNewLine &_
                "#      processes running on the node. It contains the following fields,"& vbNewLine &_
                "#"& vbNewLine &_
                "#      -PkgOnwer"& vbNewLine &_
                "#      -PkgHealthTag"& vbNewLine &_
                "#      -PkgDesc"& vbNewLine &_
                "#      -CmdInterface"& vbNewLine &_
                "#"& vbNewLine &_
                "#      The second hash contains all details regarding the deployed"& vbNewLine &_
                "#      packages installed on the node. It contains the following fields,"& vbNewLine &_
                "#"& vbNewLine &_
                "#      -ERGPkgFlag"& vbNewLine &_
                "#      -CheckVersionFlag"& vbNewLine &_
                "#      -PkgVersion"& vbNewLine &_
                "#      -PkgBuildNo"& vbNewLine &_
                "#      -PkgDesc"& vbNewLine &_
                "#"& vbNewLine &_
                "#----------------------------------------------------------------"& vbNewLine &_
                ""& vbNewLine &_
                "%pkgmnt::G_NodeDmInfo = (" & vbNewLine &_
                "       BomName         => '"& aNetworkNodes( 8, row ) &"',"& vbNewLine &_
                "       BranchName      => '"& aNetworkNodes( 4, row ) &"',"& vbNewLine &_
                "       NodeName        => '"& aNetworkNodes( 1, row ) &"',"& vbNewLine &_
                "       OsName          => '"& aNetworkNodes( 7, row ) &"',"& vbNewLine &_
                "       ProjectName     => '"& aNetworkNodes( 9, row ) &"',"& vbNewLine &_
                "       _ForceVersion   => {},"& vbNewLine &_
                "       _NoAdd          => {}"& vbNewLine &_
                ");"& vbNewLine &_
                ""& vbNewLine &_
                "$pkgmnt::G_NodeSBOMVersion = '"& aNetworkNodes( 11, row) &"';"& vbNewLine &_
                ""& vbNewLine &_
                "$pkgmnt::G_NodeName = '"& aNetworkNodes( 1, row) &"';"& vbNewLine &_
                ""& vbNewLine   


                '-- Get Node Process Hash Details --
                NodeSpec = NodeSpec & GetNodeProcessConfigDetails ( aNetworkNodes( 10, row ) ) & vbNewLine 

                
                '-- Get Node Product/Package Details --
                NodeSpec = NodeSpec & GetNodeProductDetails ( aNetworkNodes( 10, row ) ) & vbNewLine 
                
                
                ' Close node spec before saving
                NodeSpec = NodeSpec & vbNewLine & "1;"
                
                'WScript.Echo XMLNode
                
                
                ' Save to a file
                Call SaveFile( DateString, rsQry("version"), rsQry("branch_name"), "\\auperaunx26\releases\nodespecfiles",  ( aNetworkNodes( 6, row ) ) , NodeSpec )
                Call SaveFile( DateString, rsQry("version"), rsQry("branch_name"), APP_ROOT &"nodespecfiles",  ( aNetworkNodes( 6, row ) ) , NodeSpec )
                
                
        Next
        
        
        
                  
                        
End Sub
'-----------------------------------------------------------------------------------------------------------------
Function FormatFileName ( sFileName )
        Dim sReturn
        
        sReturn = Replace ( sFileName, "/", "" )        
        sReturn = Replace ( sReturn, "\", "" )  
        sReturn = Replace ( sReturn, "&", "And" )       
        sReturn = Replace ( sReturn, " ", "_" )         
        
        FormatFileName = sReturn
        
End Function
'-----------------------------------------------------------------------------------------------------------------
Function GetNodeProcessConfigDetails ( nOsId )
        Dim rsQry, NodeProcessString, RecNum
        
        OraDatabase.Parameters.Add "OS_ID", nOsId, ORAPARM_INPUT, ORATYPE_NUMBER 
                  
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("OsProcessConfig.sql"), ORADYN_DEFAULT )

        
        OraDatabase.Parameters.Remove "OS_ID"
        
        NodeProcessString = NULL
        RecNum = 0


        If rsQry.RecordCount <> 0 Then
                NodeProcessString = NodeProcessString &_
                "%pkgmnt::G_NodeProcessHash = ("& vbNewLine
        Else
                NodeProcessString = NodeProcessString &_
                "%pkgmnt::G_NodeProcessHash = ("
        End If

        While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
                
                RecNum = RecNum + 1

                'NodeProcessString for Processes.
                NodeProcessString = NodeProcessString &_
                "       "& rsQry("PKG_HEALTH_TAG") &" => {" & vbNewLine &_
                "               CmdInterface    => '"& rsQry("CMD_INTERFACE") &"',"& vbNewLine &_
                "               IsInterface     => '"& rsQry("IS_INTERFACE") &"',"& vbNewLine &_
                "               Pkg             => '"& rsQry("PKG_NAME") &"',"& vbNewLine &_
                "               PkgHealthTag    => '"& rsQry("PKG_HEALTH_TAG") &"',"& vbNewLine &_
                "               PkgOnwer        => '"& rsQry("PKG_OWNER") &"'"& vbNewLine 
                
                If (rsQry.RecordCount <> RecNum) AND (rsQry.RecordCount <> 1) Then
                        NodeProcessString = NodeProcessString &_
                        "       },"& vbNewLine
                Else
                        NodeProcessString = NodeProcessString &_
                        "       }"& vbNewLine
                End If

                
                rsQry.MoveNext()
        Wend    

        NodeProcessString = NodeProcessString &_
        ");"& vbNewLine

        
        rsQry.Close()
        Set rsQry = Nothing
        
        ' Return string
        GetNodeProcessConfigDetails = NodeProcessString 
        
End Function
'-----------------------------------------------------------------------------------------------------------------
Function GetNodeProductDetails ( nOsId )
        Dim rsQry, NodeProcessString, RecNum, Ext, PkgName, PkgFlag, VersionFlag, PkgVersion, Description
        
        OraDatabase.Parameters.Add "OS_ID", nOsId, ORAPARM_INPUT, ORATYPE_NUMBER 
                  
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("ExportOsProductList.sql"), ORADYN_DEFAULT )
        
        OraDatabase.Parameters.Remove "OS_ID"

        NodeProcessString = NULL
        RecNum = 0
        


        NodeProcessString = NodeProcessString &_
        "%pkgmnt::G_NodePkgHash = ("& vbNewLine
        
        
        While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
                
                RecNum = RecNum + 1

                
                Ext = rsQry("v_ext")
                PkgVersion = rsQry("pkg_version")

                If IsNull(rsQry("sunos_electronic_name")) Then
                        PkgName = rsQry("pkg_name")
                Else
                        PkgName = rsQry("sunos_electronic_name")                        
                End If

                ' Format Extension
                If NOT IsNull(Ext) Then
                        ' Remove first dot from extension
                        If InStr( 1, Ext, "." ) = 1 Then
                                Ext = Right( Ext, Len(Ext) - 1 )
                                PkgVersion = Left(PkgVersion, Len(PkgVersion) - Len(Ext) - 1 )
                        End If
                Else
                        Ext="???"
                End If

                ' Format Description
                Description = rsQry("pv_description")
                If NOT IsNull(Description) Then
                        Description = Replace ( Description, VBNewLine, "" )
                        Description = Replace ( Description, """", "" )
                End if



                        



                'Hard-coded AceTao as it has been identified as an ERG product.
                If InStr(1, PkgName, "ERG") = 1 Or PkgName = "AceTao"  Then
                        PkgFlag = "T"
                        VersionFlag = "T"
                Else
                        PkgFlag = "F"
                        VersionFlag = "F"               
                End If

                'NodeProcessString for packages.
                NodeProcessString = NodeProcessString &_
                "       "& rsQry("PKG_NAME") &" => {" & vbNewLine &_
                "               CheckVersionFlag                => '"& VersionFlag &"',"& vbNewLine &_
                "               ERGPkgFlag              => '"& PkgFlag &"',"& vbNewLine &_
                "               PkgDesc                 => '"& Description &"',"& vbNewLine &_
                "               PkgProjAcronym          => '"& Ext &"',"& vbNewLine &_
                "               PkgVersion              => '"& PkgVersion &"'"& vbNewLine 
                
                If (rsQry.RecordCount <> RecNum) AND (rsQry.RecordCount <> 1) Then
                        NodeProcessString = NodeProcessString &_
                        "       },"& vbNewLine
                Else
                        NodeProcessString = NodeProcessString &_
                        "       }"& vbNewLine
                End If

                
                
                
                
                rsQry.MoveNext()
        Wend    
        
        NodeProcessString = NodeProcessString &_
        ");"& vbNewLine

        rsQry.Close()
        Set rsQry = Nothing
        
        ' Return string
        GetNodeProductDetails = NodeProcessString       
        
End Function
'-----------------------------------------------------------------------------------------------------------------



'=================================== MAIN LINE ======================================
WScript.Echo "==================== job:GenerateNodesSpecDefinitons ===================="

Set objArgs = WScript.Arguments

If (objArgs.Unnamed.Count > 0) Then
        Wscript.Echo "ERROR: Unnamed parameters!"
        objArgs.ShowUsage
        WScript.Quit
        
Else
        BomId = objArgs.Named.Item("bom_id")
                
        If ( BomId <> "" ) Then
                Call GenerateNodesSpecDefinitons( BomId )
                        
        Else
                objArgs.ShowUsage
                WScript.Quit
                
        End If
        
End If


WScript.Echo "Job completed successfully!"

'====================================================================================


]]>
                </script>
        </job>
</package>