Subversion Repositories DevTools

Rev

Rev 3909 | Blame | Compare with Previous | Last modification | View Log | RSS feed

'=====================================================
'|                                                   |
'|                                nodeSpec.vbs                           |
'|  Generate a NodeSpec file for a given OSID        |
'|                                                   |
'=====================================================

Function Quote(str)
    Quote = "'" & str & "'"
End Function

Function GenerateOsSpec ( nOsId )
        Dim rsQry, query, returnString
        Dim PkgName, PkgVersion, Ext, Description, PkgHealthTag, CmdInterface, Owner, IsInterface, PkgFlag, VersionFlag
        
        OraDatabase.Parameters.Add "OS_ID", nOsId,      ORAPARM_INPUT, ORATYPE_NUMBER 
                
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("NodeSpecDetails.sql"), ORADYN_DEFAULT )              
        
        returnString = NULL
        
        returnString = returnString &_
        "#Copyright (C) 1998-2013 Vix Technology, All rights reserved"& VBNewline &_
        "#----------------------------------------------------------------"& VBNewline &_
        "#**** Source Information ****"& VBNewline &_
        "#"& VBNewline &_
        "#Source File Name: "& rsQry("node_spec_file")& 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 &_ 
        "#      "& rsQry("node_name") &" 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
        
        
        returnString = returnString &_
        "%pkgmnt::G_NodeDmInfo = ("& VBNewLine &_
        "        BomName       => "& Quote(rsQry("bom_name")) &","& VBNewLine &_
        "        BranchName    => "& Quote(rsQry("branch_name")) &","& VBNewLine &_
        "        NodeName      => "& Quote(rsQry("node_name")) &","& VBNewLine &_
        "        OsName        => "& Quote(rsQry("os_name")) &","& VBNewLine &_
        "        ProjectName   => "& Quote(rsQry("proj_name")) &","& VBNewLine &_
        "        _ForceVersion => "& "{}" & ","& VBNewLine &_
        "        _NoAdd        => "& "{}" & VBNewLine &_
        ");"& VBNewLine & VBNewLine 
        
        returnString = returnString &_
        "$pkgmnt::G_NodeSBOMVersion = "& Quote(rsQry("sbom_version")) &";"& VBNewLine & VBNewLine &_
        "$pkgmnt::G_NodeName = "&        Quote(rsQry("node_name")) &";"& VBNewLine & VBNewLine
        
        OraDatabase.Parameters.Remove "OS_ID"   
        
        rsQry.Close
        Set rsQry = Nothing
        
        OraDatabase.Parameters.Add "OS_ID", nOsId,      ORAPARM_INPUT, ORATYPE_NUMBER 
                
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery("OsProcessConfig.sql"), ORADYN_DEFAULT )      
        
        If rsQry.Recordcount <> 0 Then
                returnString = returnString &_
                "%pkgmnt::G_NodeProcessHash = ("& VBNewLine 
        Else
                returnString = returnString &_
                "%pkgmnt::G_NodeProcessHash = ("
        End If
        
        While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
                PkgHealthTag = rsQry("pkg_health_tag")
                CmdInterface = rsQry("cmd_interface")
                Owner = rsQry("pkg_owner")
                IsInterface = rsQry("is_interface")
                PkgName = rsQry("pkg_name")
        
                returnString = returnString &_
                        Quote(PkgHealthTag) &" => {"& VBNewLine &_
            "        CmdInterface  => "& Quote(CmdInterface) &","& VBNewLine &_
            "        IsInterface   => "& Quote(IsInterface) &","& VBNewLine &_
            "        Pkg           => "& Quote(PkgName) &","& VBNewLine &_
            "        PkgHealthTag  => "& Quote(PkgHealthTag) &","& VBNewLine &_
            "        PkgOnwer      => "& Quote(Owner) & VBNewLine &_
            "},"& VBNewLine
                                                
                rsQry.MoveNext()
        WEnd    

        ' Format final output
        If NOT IsNull(returnString) And rsQry.Recordcount <> 0 Then
                returnString = Left ( returnString, InStrRev( returnString, "," ) - 1 ) & VBNewLine
        End If  
        
        returnString = returnString &_
        ");" & VBNewLine & VBNewLine 
                
        OraDatabase.Parameters.Remove "OS_ID"   
        
        rsQry.Close
        Set rsQry = Nothing     
        

        OraDatabase.Parameters.Add "OS_ID", nOsId,      ORAPARM_INPUT, ORATYPE_NUMBER 
        
        Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("ExportOsProductList.sql"), ORADYN_DEFAULT )
        
        If rsQry.Recordcount <> 0 Then
                returnString = returnString &_
                "%pkgmnt::G_NodePkgHash = ("& VBNewLine 
        
            While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
                    If IsNull(rsQry("sunos_electronic_name")) Then
                            PkgName = rsQry("pkg_name")
                    Else
                            PkgName = rsQry("sunos_electronic_name")                    
                    End If
                
                    PkgVersion = rsQry("pkg_version")
                    Ext = rsQry("v_ext")
                    Description = rsQry("pv_description")
                
                    If InStr(1, PkgName, "ERG") = 1 Or InStr(1, PkgName, "VIX") = 1 Or PkgName = "AceTao"  Then
                            PkgFlag = "T"
                            VersionFlag = "T"
                    Else
                            PkgFlag = "F"
                            VersionFlag = "F"           
                    End If
                
                    ' Format Description
                    If NOT IsNull(Description) Then
                            Description = Replace ( Description, VBNewLine, "" )
                            Description = Replace ( Description, """", "" )
                    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 )
                            End If
                        
                    End If
                

                
                    returnString = returnString &_
                            Quote(PkgName) &" => {"& VBNewLine &_
                "          CheckVersionFlag  => "& Quote(VersionFlag) &","& VBNewLine &_
                "          ERGPkgFlag        => "& Quote(PkgFlag) &","& VBNewLine
                
                    returnString = returnString &_
                "          PkgDesc           => "& Quote(Description) &","& VBNewLine
                        
                    If IsNull(Ext) Then
                            returnString = returnString &_
                        "          PkgProjAcronym    => "& Quote("???") & ","&  VBNewLine &_
                                    "          PkgVersion        => "& Quote(PkgVersion) &  VBNewLine
                    Else
                            returnString = returnString &_
                    "          PkgProjAcronym    => "& Quote(Ext) &","&  VBNewLine &_
                                    "          PkgVersion        => "& Quote(Left(PkgVersion, Len(PkgVersion) - Len(Ext) - 1 )) &  VBNewLine
                    End If
                
                
               returnString = returnString &_
                        "       },"& VBNewLine
                
                
                
                    rsQry.MoveNext()
            WEnd
        
            ' Format final output
            If NOT IsNull(returnString) Then
                    returnString = Left ( returnString, InStrRev( returnString, "," ) - 1 ) & VBNewLine
            End If
        
            returnString = returnString &_
            ");" & VBNewLine & VBNewLine 
        
        Else
                returnString = returnString &_
                "%pkgmnt::G_NodePkgHash = ();"
        End If
    
        
        OraDatabase.Parameters.Remove "OS_ID"
        
        rsQry.Close
        Set rsQry = Nothing
        
        
        returnString = returnString & VBNewLine & VBNewLine & "1;" & VBNewLine  
        
        ' Return string 
        GenerateOsSpec = returnString
        
End Function