| 19 |
|
|
| 20 |
|
if __name__ == '__main__': |
| 21 |
|
|
| 22 |
< |
outputFileName = r"C:\Users\eborges\Documents\Cases\Endo\20220715 - IG Projects\4 - Develop Identification Process to Inventory NCDS stored in Endo IT\20220822-WindowsServer8_Matrix_Report.csv" |
| 22 |
> |
outputFileName = r"C:\Users\eborges\Documents\Cases\Endo\20220715 - IG Projects\4 - Develop Identification Process to Inventory NCDS stored in Endo IT\20220824-WindowsServer8_Matrix_Report.csv" |
| 23 |
|
|
| 24 |
|
## This should all be csvs with pre-selected fields that are verified didnt already contain pipes. Also a headder row. |
| 25 |
|
#win2kServersFile = r"C:\Users\eborges\Documents\Cases\Endo\20220715 - IG Projects\4 - Develop Identification Process to Inventory NCDS stored in Endo IT\_fromEndo\_csv\Win8Servers_filtered.csv" |
| 31 |
|
aspectDatabasesToServersFile = r"C:\Users\eborges\Documents\Cases\Endo\20220715 - IG Projects\4 - Develop Identification Process to Inventory NCDS stored in Endo IT\_fromEndo\_csv\All_endo_SQL_Server_databases.csv" |
| 32 |
|
serviceNowToServersFile = r"C:\Users\eborges\Documents\Cases\Endo\20220715 - IG Projects\4 - Develop Identification Process to Inventory NCDS stored in Endo IT\_fromEndo\_csv\ServiceNow-PreParsed.txt" |
| 33 |
|
legacySnowToServersFile = r"C:\Users\eborges\Documents\Cases\Endo\20220715 - IG Projects\4 - Develop Identification Process to Inventory NCDS stored in Endo IT\_fromEndo\_csv\LegacySNOW-PreParsed.txt" |
| 34 |
+ |
win2kChngReqToServersFile = r"C:\Users\eborges\Documents\Cases\Endo\20220715 - IG Projects\4 - Develop Identification Process to Inventory NCDS stored in Endo IT\_fromEndo\_csv\SN-FromWinFile-PreParsed.txt" |
| 35 |
|
|
| 36 |
|
win2kServersFileMatrix = {} |
| 37 |
|
appListServersFileMatrix = {} |
| 40 |
|
aspectDatabasesToServersMatrix = {} |
| 41 |
|
serviceNowToServersMatrix = {} |
| 42 |
|
legacySnowToServersMatrix = {} |
| 43 |
+ |
win2kChngReqToServersMatrix = {} |
| 44 |
|
|
| 45 |
|
|
| 46 |
|
## Start with ingesting the win2kservers file but be sure to save the headders on this one. |
| 143 |
|
print("There are %s servers on the Legacy SNOW Export to servers file."%len(list(legacySnowToServersMatrix.keys()))) |
| 144 |
|
|
| 145 |
|
|
| 146 |
+ |
## Next ingest the SN Numbers from the original win2008 file Export to server list. check that there is a chg number at all. |
| 147 |
+ |
contents = open(win2kChngReqToServersFile).readlines() |
| 148 |
+ |
contents = contents[1:] |
| 149 |
+ |
for line in contents: |
| 150 |
+ |
line = line.replace("\n","") |
| 151 |
+ |
parsedLine = line.split("|") |
| 152 |
+ |
## Dont add it to the matrix if there is no chg number. |
| 153 |
+ |
if parsedLine[1]: |
| 154 |
+ |
if parsedLine[0].upper() in list(win2kChngReqToServersMatrix.keys()): |
| 155 |
+ |
win2kChngReqToServersMatrix[parsedLine[0].upper()].append(line) |
| 156 |
+ |
else: |
| 157 |
+ |
win2kChngReqToServersMatrix[parsedLine[0].upper()] = [line,] |
| 158 |
+ |
print("There are %s servers on the SN Numbers from the original win2008 file Export to servers file."%len(list(win2kChngReqToServersMatrix.keys()))) |
| 159 |
+ |
|
| 160 |
+ |
|
| 161 |
+ |
|
| 162 |
|
outputFile = open(outputFileName,'w') |
| 163 |
< |
outputFile.write(win2kServersFileHeadders + "|Found on 2022 SQL Server Report?|Found on 2021 SQL Server Report?|Found DatabaseNames Server Report?|DB Names Found on AspectList|Found on Application Inventory?|Applications|App IT Leadership Owner|App IT System Owner|App Executive Leadership Owner|App Business Owner|Found on ServiceNow|ServiceNowChangeReqNumbers|ServiceNow Business Owner|ServiceNowChangeBusiness/IT Approver|ServiceNow Parent Change Req Numbers|Found on LegacySNOW|Legacy SNOW ChangeRequestNumbers\n") |
| 163 |
> |
outputFile.write(win2kServersFileHeadders + "|Found on 2022 SQL Server Report?|Found on 2021 SQL Server Report?|Found DatabaseNames Server Report?|DB Names Found on AspectList|Found on Application Inventory?|Applications|App IT Leadership Owner|App IT System Owner|App Executive Leadership Owner|App Business Owner|Found on ServiceNow|ServiceNowChangeReqNumbers|ServiceNow Business Owner|ServiceNowChangeBusiness/IT Approver|ServiceNow Parent Change Req Numbers|Found on LegacySNOW|Legacy SNOW ChangeRequestNumbers|Win2008 Report ChngRequest Found|Win2008 Report ChngRequestNumbers|Win2008 Report SN Business Owner|Win2008 Report SN Business/IT Approver|Win2008 Report SN Parent Change Req Numbers\n") |
| 164 |
|
for i in list(win2kServersFileMatrix.keys()): |
| 165 |
|
nl=outputFile.write(win2kServersFileMatrix[i][0]) |
| 166 |
|
|
| 333 |
|
else: |
| 334 |
|
nl=outputFile.write("|") |
| 335 |
|
|
| 336 |
+ |
|
| 337 |
+ |
|
| 338 |
+ |
|
| 339 |
+ |
chngReqList = "" |
| 340 |
+ |
snBusinessOwnerList = set() |
| 341 |
+ |
snApproverOwnerList = set() |
| 342 |
+ |
snParentChgReqNumbList = set() |
| 343 |
+ |
|
| 344 |
+ |
if i in list(win2kChngReqToServersMatrix.keys()): |
| 345 |
+ |
nl=outputFile.write("|YES") |
| 346 |
+ |
for chngReqLine in win2kChngReqToServersMatrix[i]: |
| 347 |
+ |
chngReqLine = chngReqLine.replace("\n","") |
| 348 |
+ |
chngReqLine = chngReqLine.split("|") |
| 349 |
+ |
chngReqDt = chngReqLine[3] |
| 350 |
+ |
## Grab just the date for now but can change to date and time if needed |
| 351 |
+ |
chngReqDt = chngReqDt.split(" ")[0] |
| 352 |
+ |
chngReqNumbWDate = "%s [%s]"%(chngReqLine[1],chngReqDt) |
| 353 |
+ |
if chngReqList: |
| 354 |
+ |
chngReqList = chngReqList + "; " +chngReqNumbWDate |
| 355 |
+ |
else: |
| 356 |
+ |
chngReqList = chngReqNumbWDate |
| 357 |
+ |
if chngReqLine[4]: |
| 358 |
+ |
if chngReqLine[4] == "None": |
| 359 |
+ |
pass |
| 360 |
+ |
else: |
| 361 |
+ |
snBusinessOwnerList.add("%s [%s]"%(chngReqLine[4],chngReqLine[1])) |
| 362 |
+ |
if chngReqLine[5]: |
| 363 |
+ |
if chngReqLine[5] == "None": |
| 364 |
+ |
pass |
| 365 |
+ |
else: |
| 366 |
+ |
snApproverOwnerList.add("%s [%s]"%(chngReqLine[5],chngReqLine[1])) |
| 367 |
+ |
if chngReqLine[6]: |
| 368 |
+ |
if chngReqLine[6] == "None": |
| 369 |
+ |
pass |
| 370 |
+ |
else: |
| 371 |
+ |
snParentChgReqNumbList.add("%s [%s]"%(chngReqLine[6],chngReqLine[1])) |
| 372 |
+ |
|
| 373 |
+ |
else: |
| 374 |
+ |
nl=outputFile.write("|NO") |
| 375 |
+ |
if chngReqList: |
| 376 |
+ |
nl=outputFile.write("|" + chngReqList) |
| 377 |
+ |
else: |
| 378 |
+ |
nl=outputFile.write("|") |
| 379 |
+ |
if snBusinessOwnerList: |
| 380 |
+ |
nl=outputFile.write("|" + "; ".join(snBusinessOwnerList)) |
| 381 |
+ |
else: |
| 382 |
+ |
nl=outputFile.write("|") |
| 383 |
+ |
if snApproverOwnerList: |
| 384 |
+ |
nl=outputFile.write("|" + "; ".join(snApproverOwnerList)) |
| 385 |
+ |
else: |
| 386 |
+ |
nl=outputFile.write("|") |
| 387 |
+ |
if snParentChgReqNumbList: |
| 388 |
+ |
nl=outputFile.write("|" + "; ".join(snParentChgReqNumbList)) |
| 389 |
+ |
else: |
| 390 |
+ |
nl=outputFile.write("|") |
| 391 |
+ |
|
| 392 |
|
|
| 393 |
|
nl = outputFile.write("\n") |
| 394 |
|
outputFile.close() |