'===================================================== '| | '| 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