| 15 |
rsolanki |
1 |
<?xml version="1.0" ?>
|
|
|
2 |
<package>
|
|
|
3 |
<comment>
|
|
|
4 |
PrimalCode wizard generated file.
|
|
|
5 |
</comment>
|
|
|
6 |
<job id="GenerateNodesSpecDefinitons" args="/bom_id:2864" prompt="no">
|
|
|
7 |
<?job error="false" debug="false" ?>
|
|
|
8 |
<runtime>
|
|
|
9 |
<named helpstring="Bom ID" name="bom_id" required="false" type="string"/>
|
|
|
10 |
</runtime>
|
|
|
11 |
<object id="Oracle_Objects_For_OLE" progid="OracleInProcServer.XOraServer" events="true"/>
|
|
|
12 |
<script language="VBScript" src="common_subs.vbs"/>
|
|
|
13 |
<script language="VBScript" src="config.vbs"/>
|
|
|
14 |
<script id="GenerateNodeSpecFiles" language="VBScript">
|
|
|
15 |
<![CDATA[
|
|
|
16 |
Option Explicit
|
|
|
17 |
'=====================================================
|
|
|
18 |
' Name: GetNodesSpecFiles
|
|
|
19 |
' Description: Gets the nodes specification files for
|
|
|
20 |
' nodes that have an existing node spec
|
|
|
21 |
' filename.
|
| 19 |
rsolanki |
22 |
' Author: Rupesh Solanki
|
| 15 |
rsolanki |
23 |
'
|
|
|
24 |
'
|
|
|
25 |
' INPUT: bom_id
|
|
|
26 |
|
|
|
27 |
'=====================================================
|
|
|
28 |
|
|
|
29 |
'== Variable Definition ==============================
|
|
|
30 |
Dim BomId
|
|
|
31 |
Dim objArgs
|
|
|
32 |
'== Constants Declaration ============================
|
|
|
33 |
'== Variable Init ====================================
|
|
|
34 |
'=====================================================
|
|
|
35 |
|
|
|
36 |
|
|
|
37 |
'-----------------------------------------------------------------------------------------------------------------
|
|
|
38 |
Sub GenerateNodesSpecDefinitons ( nBomId )
|
|
|
39 |
Dim rsQry, aNetworkNodes, NodeSpec, DateString
|
|
|
40 |
Dim lastRow, row
|
|
|
41 |
|
|
|
42 |
OraDatabase.Parameters.Add "BOM_ID", nBomId, ORAPARM_INPUT, ORATYPE_NUMBER
|
|
|
43 |
|
|
|
44 |
Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("NodesSpecFileNames.sql"), ORADYN_DEFAULT )
|
|
|
45 |
|
|
|
46 |
OraDatabase.Parameters.Remove "BOM_ID"
|
|
|
47 |
|
|
|
48 |
If rsQry.RecordCount > 0 Then
|
|
|
49 |
aNetworkNodes = rsQry.GetRows()
|
|
|
50 |
|
|
|
51 |
End If
|
|
|
52 |
|
|
|
53 |
lastRow = UBound( aNetworkNodes, 2 )
|
|
|
54 |
DateString = DateReversed( Date )
|
|
|
55 |
|
|
|
56 |
For row = 0 To lastRow
|
|
|
57 |
|
|
|
58 |
NodeSpec = Null
|
|
|
59 |
|
|
|
60 |
NodeSpec = NodeSpec &_
|
| 29 |
jtweddle |
61 |
"#Copyright ERG Transit Systems (c) 1998-2008, All Rights Reserved"& vbNewLine &_
|
| 15 |
rsolanki |
62 |
"#----------------------------------------------------------------"& vbNewLine &_
|
|
|
63 |
"#**** Source Information ****"& vbNewLine &_
|
|
|
64 |
"#"& vbNewLine &_
|
|
|
65 |
"#Source File Name: "& aNetworkNodes( 6, row ) & vbNewLine &_
|
|
|
66 |
"#"& vbNewLine &_
|
|
|
67 |
"#Source File Type: PERL Module File (.pm)"& vbNewLine &_
|
|
|
68 |
"#"& vbNewLine &_
|
|
|
69 |
"#Author: Deployment Manager"& vbNewLine &_
|
|
|
70 |
"#"& vbNewLine &_
|
|
|
71 |
"#Purpose: This file contains the package specification for"& vbNewLine &_
|
|
|
72 |
"# "& aNetworkNodes( 1, row ) & " node."& vbNewLine &_
|
|
|
73 |
"#"& vbNewLine &_
|
|
|
74 |
"# The data is provided in the form of two PERL preinitialised"& vbNewLine &_
|
|
|
75 |
"# HASH of HASHES"& vbNewLine &_
|
|
|
76 |
"#"& vbNewLine &_
|
|
|
77 |
"# The first hash contains all details regarding the persistant"& vbNewLine &_
|
|
|
78 |
"# processes running on the node. It contains the following fields,"& vbNewLine &_
|
|
|
79 |
"#"& vbNewLine &_
|
|
|
80 |
"# -PkgOnwer"& vbNewLine &_
|
|
|
81 |
"# -PkgHealthTag"& vbNewLine &_
|
|
|
82 |
"# -PkgDesc"& vbNewLine &_
|
|
|
83 |
"# -CmdInterface"& vbNewLine &_
|
|
|
84 |
"#"& vbNewLine &_
|
|
|
85 |
"# The second hash contains all details regarding the deployed"& vbNewLine &_
|
|
|
86 |
"# packages installed on the node. It contains the following fields,"& vbNewLine &_
|
|
|
87 |
"#"& vbNewLine &_
|
|
|
88 |
"# -ERGPkgFlag"& vbNewLine &_
|
|
|
89 |
"# -CheckVersionFlag"& vbNewLine &_
|
|
|
90 |
"# -PkgVersion"& vbNewLine &_
|
|
|
91 |
"# -PkgBuildNo"& vbNewLine &_
|
|
|
92 |
"# -PkgDesc"& vbNewLine &_
|
|
|
93 |
"#"& vbNewLine &_
|
|
|
94 |
"#----------------------------------------------------------------"& vbNewLine &_
|
|
|
95 |
""& vbNewLine &_
|
|
|
96 |
"%pkgmnt::G_NodeDmInfo = (" & vbNewLine &_
|
|
|
97 |
" BomName => '"& aNetworkNodes( 8, row ) &"',"& vbNewLine &_
|
|
|
98 |
" BranchName => '"& aNetworkNodes( 4, row ) &"',"& vbNewLine &_
|
|
|
99 |
" NodeName => '"& aNetworkNodes( 1, row ) &"',"& vbNewLine &_
|
|
|
100 |
" OsName => '"& aNetworkNodes( 7, row ) &"',"& vbNewLine &_
|
|
|
101 |
" ProjectName => '"& aNetworkNodes( 9, row ) &"',"& vbNewLine &_
|
|
|
102 |
" _ForceVersion => {},"& vbNewLine &_
|
|
|
103 |
" _NoAdd => {}"& vbNewLine &_
|
|
|
104 |
");"& vbNewLine &_
|
|
|
105 |
""& vbNewLine &_
|
| 19 |
rsolanki |
106 |
"$pkgmnt::G_NodeSBOMVersion = '"& aNetworkNodes( 11, row) &"';"& vbNewLine &_
|
| 15 |
rsolanki |
107 |
""& vbNewLine &_
|
|
|
108 |
"$pkgmnt::G_NodeName = '"& aNetworkNodes( 1, row) &"';"& vbNewLine &_
|
|
|
109 |
""& vbNewLine
|
|
|
110 |
|
|
|
111 |
|
|
|
112 |
'-- Get Node Process Hash Details --
|
|
|
113 |
NodeSpec = NodeSpec & GetNodeProcessConfigDetails ( aNetworkNodes( 10, row ) ) & vbNewLine
|
|
|
114 |
|
|
|
115 |
|
|
|
116 |
'-- Get Node Product/Package Details --
|
|
|
117 |
NodeSpec = NodeSpec & GetNodeProductDetails ( aNetworkNodes( 10, row ) ) & vbNewLine
|
|
|
118 |
|
|
|
119 |
|
|
|
120 |
' Close node spec before saving
|
|
|
121 |
NodeSpec = NodeSpec & vbNewLine & "1;"
|
|
|
122 |
|
|
|
123 |
'WScript.Echo XMLNode
|
|
|
124 |
|
|
|
125 |
|
|
|
126 |
' Save to a file
|
| 19 |
rsolanki |
127 |
Call SaveFile( DateString, rsQry("version"), rsQry("branch_name"), "\\auperaunx26\releases\nodespecfiles", ( aNetworkNodes( 6, row ) ) , NodeSpec )
|
| 15 |
rsolanki |
128 |
Call SaveFile( DateString, rsQry("version"), rsQry("branch_name"), APP_ROOT &"nodespecfiles", ( aNetworkNodes( 6, row ) ) , NodeSpec )
|
|
|
129 |
|
|
|
130 |
|
|
|
131 |
Next
|
|
|
132 |
|
|
|
133 |
|
|
|
134 |
|
|
|
135 |
|
|
|
136 |
|
|
|
137 |
End Sub
|
|
|
138 |
'-----------------------------------------------------------------------------------------------------------------
|
|
|
139 |
Function FormatFileName ( sFileName )
|
|
|
140 |
Dim sReturn
|
|
|
141 |
|
|
|
142 |
sReturn = Replace ( sFileName, "/", "" )
|
|
|
143 |
sReturn = Replace ( sReturn, "\", "" )
|
|
|
144 |
sReturn = Replace ( sReturn, "&", "And" )
|
|
|
145 |
sReturn = Replace ( sReturn, " ", "_" )
|
|
|
146 |
|
|
|
147 |
FormatFileName = sReturn
|
|
|
148 |
|
|
|
149 |
End Function
|
|
|
150 |
'-----------------------------------------------------------------------------------------------------------------
|
|
|
151 |
Function GetNodeProcessConfigDetails ( nOsId )
|
|
|
152 |
Dim rsQry, NodeProcessString, RecNum
|
|
|
153 |
|
|
|
154 |
OraDatabase.Parameters.Add "OS_ID", nOsId, ORAPARM_INPUT, ORATYPE_NUMBER
|
|
|
155 |
|
|
|
156 |
Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("OsProcessConfig.sql"), ORADYN_DEFAULT )
|
|
|
157 |
|
|
|
158 |
|
|
|
159 |
OraDatabase.Parameters.Remove "OS_ID"
|
|
|
160 |
|
|
|
161 |
NodeProcessString = NULL
|
|
|
162 |
RecNum = 0
|
|
|
163 |
|
|
|
164 |
|
| 19 |
rsolanki |
165 |
If rsQry.RecordCount <> 0 Then
|
|
|
166 |
NodeProcessString = NodeProcessString &_
|
|
|
167 |
"%pkgmnt::G_NodeProcessHash = ("& vbNewLine
|
|
|
168 |
Else
|
|
|
169 |
NodeProcessString = NodeProcessString &_
|
|
|
170 |
"%pkgmnt::G_NodeProcessHash = ("
|
|
|
171 |
End If
|
|
|
172 |
|
| 15 |
rsolanki |
173 |
While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
|
|
|
174 |
|
|
|
175 |
RecNum = RecNum + 1
|
|
|
176 |
|
|
|
177 |
'NodeProcessString for Processes.
|
|
|
178 |
NodeProcessString = NodeProcessString &_
|
|
|
179 |
" "& rsQry("PKG_HEALTH_TAG") &" => {" & vbNewLine &_
|
|
|
180 |
" CmdInterface => '"& rsQry("CMD_INTERFACE") &"',"& vbNewLine &_
|
|
|
181 |
" IsInterface => '"& rsQry("IS_INTERFACE") &"',"& vbNewLine &_
|
|
|
182 |
" Pkg => '"& rsQry("PKG_NAME") &"',"& vbNewLine &_
|
|
|
183 |
" PkgHealthTag => '"& rsQry("PKG_HEALTH_TAG") &"',"& vbNewLine &_
|
|
|
184 |
" PkgOnwer => '"& rsQry("PKG_OWNER") &"'"& vbNewLine
|
|
|
185 |
|
|
|
186 |
If (rsQry.RecordCount <> RecNum) AND (rsQry.RecordCount <> 1) Then
|
|
|
187 |
NodeProcessString = NodeProcessString &_
|
|
|
188 |
" },"& vbNewLine
|
|
|
189 |
Else
|
|
|
190 |
NodeProcessString = NodeProcessString &_
|
|
|
191 |
" }"& vbNewLine
|
|
|
192 |
End If
|
|
|
193 |
|
|
|
194 |
|
|
|
195 |
rsQry.MoveNext()
|
|
|
196 |
Wend
|
|
|
197 |
|
|
|
198 |
NodeProcessString = NodeProcessString &_
|
|
|
199 |
");"& vbNewLine
|
|
|
200 |
|
|
|
201 |
|
|
|
202 |
rsQry.Close()
|
|
|
203 |
Set rsQry = Nothing
|
|
|
204 |
|
|
|
205 |
' Return string
|
|
|
206 |
GetNodeProcessConfigDetails = NodeProcessString
|
|
|
207 |
|
|
|
208 |
End Function
|
|
|
209 |
'-----------------------------------------------------------------------------------------------------------------
|
|
|
210 |
Function GetNodeProductDetails ( nOsId )
|
| 23 |
rsolanki |
211 |
Dim rsQry, NodeProcessString, RecNum, Ext, PkgName, PkgFlag, VersionFlag, PkgVersion, Description
|
| 15 |
rsolanki |
212 |
|
|
|
213 |
OraDatabase.Parameters.Add "OS_ID", nOsId, ORAPARM_INPUT, ORATYPE_NUMBER
|
|
|
214 |
|
|
|
215 |
Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("ExportOsProductList.sql"), ORADYN_DEFAULT )
|
|
|
216 |
|
|
|
217 |
OraDatabase.Parameters.Remove "OS_ID"
|
|
|
218 |
|
|
|
219 |
NodeProcessString = NULL
|
|
|
220 |
RecNum = 0
|
|
|
221 |
|
|
|
222 |
|
|
|
223 |
|
|
|
224 |
NodeProcessString = NodeProcessString &_
|
|
|
225 |
"%pkgmnt::G_NodePkgHash = ("& vbNewLine
|
|
|
226 |
|
|
|
227 |
|
|
|
228 |
While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
|
|
|
229 |
|
|
|
230 |
RecNum = RecNum + 1
|
|
|
231 |
|
|
|
232 |
|
|
|
233 |
Ext = rsQry("v_ext")
|
|
|
234 |
PkgVersion = rsQry("pkg_version")
|
|
|
235 |
|
|
|
236 |
If IsNull(rsQry("sunos_electronic_name")) Then
|
|
|
237 |
PkgName = rsQry("pkg_name")
|
|
|
238 |
Else
|
|
|
239 |
PkgName = rsQry("sunos_electronic_name")
|
|
|
240 |
End If
|
|
|
241 |
|
|
|
242 |
' Format Extension
|
|
|
243 |
If NOT IsNull(Ext) Then
|
|
|
244 |
' Remove first dot from extension
|
|
|
245 |
If InStr( 1, Ext, "." ) = 1 Then
|
|
|
246 |
Ext = Right( Ext, Len(Ext) - 1 )
|
|
|
247 |
PkgVersion = Left(PkgVersion, Len(PkgVersion) - Len(Ext) - 1 )
|
|
|
248 |
End If
|
| 23 |
rsolanki |
249 |
Else
|
|
|
250 |
Ext="???"
|
| 15 |
rsolanki |
251 |
End If
|
|
|
252 |
|
| 23 |
rsolanki |
253 |
' Format Description
|
|
|
254 |
Description = rsQry("pv_description")
|
|
|
255 |
If NOT IsNull(Description) Then
|
|
|
256 |
Description = Replace ( Description, VBNewLine, "" )
|
|
|
257 |
Description = Replace ( Description, """", "" )
|
|
|
258 |
End if
|
| 15 |
rsolanki |
259 |
|
|
|
260 |
|
| 23 |
rsolanki |
261 |
|
| 15 |
rsolanki |
262 |
|
|
|
263 |
|
|
|
264 |
|
|
|
265 |
|
|
|
266 |
'Hard-coded AceTao as it has been identified as an ERG product.
|
|
|
267 |
If InStr(1, PkgName, "ERG") = 1 Or PkgName = "AceTao" Then
|
|
|
268 |
PkgFlag = "T"
|
|
|
269 |
VersionFlag = "T"
|
|
|
270 |
Else
|
|
|
271 |
PkgFlag = "F"
|
|
|
272 |
VersionFlag = "F"
|
|
|
273 |
End If
|
|
|
274 |
|
|
|
275 |
'NodeProcessString for packages.
|
|
|
276 |
NodeProcessString = NodeProcessString &_
|
|
|
277 |
" "& rsQry("PKG_NAME") &" => {" & vbNewLine &_
|
|
|
278 |
" CheckVersionFlag => '"& VersionFlag &"',"& vbNewLine &_
|
|
|
279 |
" ERGPkgFlag => '"& PkgFlag &"',"& vbNewLine &_
|
| 23 |
rsolanki |
280 |
" PkgDesc => '"& Description &"',"& vbNewLine &_
|
| 15 |
rsolanki |
281 |
" PkgProjAcronym => '"& Ext &"',"& vbNewLine &_
|
|
|
282 |
" PkgVersion => '"& PkgVersion &"'"& vbNewLine
|
|
|
283 |
|
|
|
284 |
If (rsQry.RecordCount <> RecNum) AND (rsQry.RecordCount <> 1) Then
|
|
|
285 |
NodeProcessString = NodeProcessString &_
|
|
|
286 |
" },"& vbNewLine
|
|
|
287 |
Else
|
|
|
288 |
NodeProcessString = NodeProcessString &_
|
|
|
289 |
" }"& vbNewLine
|
|
|
290 |
End If
|
|
|
291 |
|
|
|
292 |
|
|
|
293 |
|
|
|
294 |
|
|
|
295 |
|
|
|
296 |
rsQry.MoveNext()
|
|
|
297 |
Wend
|
|
|
298 |
|
|
|
299 |
NodeProcessString = NodeProcessString &_
|
|
|
300 |
");"& vbNewLine
|
|
|
301 |
|
|
|
302 |
rsQry.Close()
|
|
|
303 |
Set rsQry = Nothing
|
|
|
304 |
|
|
|
305 |
' Return string
|
|
|
306 |
GetNodeProductDetails = NodeProcessString
|
|
|
307 |
|
|
|
308 |
End Function
|
|
|
309 |
'-----------------------------------------------------------------------------------------------------------------
|
|
|
310 |
|
|
|
311 |
|
|
|
312 |
|
|
|
313 |
'=================================== MAIN LINE ======================================
|
|
|
314 |
WScript.Echo "==================== job:GenerateNodesSpecDefinitons ===================="
|
|
|
315 |
|
|
|
316 |
Set objArgs = WScript.Arguments
|
|
|
317 |
|
|
|
318 |
If (objArgs.Unnamed.Count > 0) Then
|
|
|
319 |
Wscript.Echo "ERROR: Unnamed parameters!"
|
|
|
320 |
objArgs.ShowUsage
|
|
|
321 |
WScript.Quit
|
|
|
322 |
|
|
|
323 |
Else
|
|
|
324 |
BomId = objArgs.Named.Item("bom_id")
|
|
|
325 |
|
|
|
326 |
If ( BomId <> "" ) Then
|
|
|
327 |
Call GenerateNodesSpecDefinitons( BomId )
|
|
|
328 |
|
|
|
329 |
Else
|
|
|
330 |
objArgs.ShowUsage
|
|
|
331 |
WScript.Quit
|
|
|
332 |
|
|
|
333 |
End If
|
|
|
334 |
|
|
|
335 |
End If
|
|
|
336 |
|
|
|
337 |
|
|
|
338 |
WScript.Echo "Job completed successfully!"
|
|
|
339 |
|
|
|
340 |
'====================================================================================
|
|
|
341 |
|
|
|
342 |
|
|
|
343 |
]]>
|
|
|
344 |
</script>
|
|
|
345 |
</job>
|
|
|
346 |
</package>
|