22import base64
33import getpass
44import json
5+ import csv
56
67class Application :
78 def __init__ (self , app_id , name ):
@@ -15,7 +16,6 @@ def getApplications(headers, params, org_id):
1516
1617def getServers (headers , servers_href ):
1718 url = f"{ contrast_url } /api{ servers_href } "
18- print (f" Fetching servers from: { url } " )
1919 response = requests .get (url , headers = headers )
2020 return response
2121
@@ -116,6 +116,9 @@ def main():
116116 json .dump (data , f , indent = 2 )
117117 print ("Applications response saved to output.json" )
118118
119+ # List to collect CSV data
120+ csv_data = []
121+
119122 if data .get ("applications" ):
120123 application_list = data ["applications" ]
121124 print (f"Total Applications: { len (application_list )} " )
@@ -129,9 +132,7 @@ def main():
129132
130133 # Output metadata entities
131134 if metadata_entities :
132- print (f" Metadata Entities:" )
133- for entity in metadata_entities :
134- print (f" { json .dumps (entity , indent = 6 )} " )
135+ print (f" Metadata Entities: { len (metadata_entities )} found" )
135136 else :
136137 print (f" Metadata Entities: None" )
137138
@@ -146,21 +147,117 @@ def main():
146147 break
147148
148149 if servers_href :
149- print (f"DEBUG: servers_href = { servers_href } " )
150150 servers_response = getServers (headers , servers_href )
151151
152152 if servers_response .status_code == 200 :
153153 servers_data = servers_response .json ()
154- servers = servers_data .get ("servers" , [])
154+ servers = servers_data .get ("servers" , [])
155+ print (f" Total Servers: { len (servers )} " )
155156
156- for server in servers :
157- server_name = server .get ("name" , "N/A" )
158- server_id = server .get ("server_id" , "N/A" )
159- print (f" - Server: { server_name } (ID: { server_id } )" )
157+ if servers :
158+ for server in servers :
159+ server_name = server .get ("name" , "N/A" )
160+ server_id = server .get ("server_id" , "N/A" )
161+ print (f" - Server: { server_name } (ID: { server_id } )" )
162+
163+ # Add rows to CSV for each metadata entity
164+ if metadata_entities :
165+ for entity in metadata_entities :
166+ field_name = entity .get ("fieldName" , "N/A" )
167+ field_value = entity .get ("fieldValue" , "N/A" )
168+ csv_data .append ({
169+ "server_name" : server_name ,
170+ "server_id" : server_id ,
171+ "application_name" : app_name ,
172+ "application_id" : app_id ,
173+ "metadata_field_name" : field_name ,
174+ "metadata_field_value" : field_value
175+ })
176+ else :
177+ # If no metadata, still add a row with the server and app
178+ csv_data .append ({
179+ "server_name" : server_name ,
180+ "server_id" : server_id ,
181+ "application_name" : app_name ,
182+ "application_id" : app_id ,
183+ "metadata_field_name" : "N/A" ,
184+ "metadata_field_value" : "N/A"
185+ })
186+ else :
187+ # No servers found, but add application with metadata if exists
188+ if metadata_entities :
189+ for entity in metadata_entities :
190+ field_name = entity .get ("fieldName" , "N/A" )
191+ field_value = entity .get ("fieldValue" , "N/A" )
192+ csv_data .append ({
193+ "server_name" : "N/A" ,
194+ "server_id" : "N/A" ,
195+ "application_name" : app_name ,
196+ "application_id" : app_id ,
197+ "metadata_field_name" : field_name ,
198+ "metadata_field_value" : field_value
199+ })
200+ else :
201+ # No servers and no metadata
202+ csv_data .append ({
203+ "server_name" : "N/A" ,
204+ "server_id" : "N/A" ,
205+ "application_name" : app_name ,
206+ "application_id" : app_id ,
207+ "metadata_field_name" : "N/A" ,
208+ "metadata_field_value" : "N/A"
209+ })
160210 else :
161211 print (f" Error fetching servers: { servers_response .status_code } " )
212+ # Add application with metadata even if server fetch fails
213+ if metadata_entities :
214+ for entity in metadata_entities :
215+ field_name = entity .get ("fieldName" , "N/A" )
216+ field_value = entity .get ("fieldValue" , "N/A" )
217+ csv_data .append ({
218+ "server_name" : "N/A" ,
219+ "server_id" : "N/A" ,
220+ "application_name" : app_name ,
221+ "application_id" : app_id ,
222+ "metadata_field_name" : field_name ,
223+ "metadata_field_value" : field_value
224+ })
162225 else :
163226 print (" No servers link found for this application" )
227+ # Add application with metadata even if no servers link
228+ if metadata_entities :
229+ for entity in metadata_entities :
230+ field_name = entity .get ("fieldName" , "N/A" )
231+ field_value = entity .get ("fieldValue" , "N/A" )
232+ csv_data .append ({
233+ "server_name" : "N/A" ,
234+ "server_id" : "N/A" ,
235+ "application_name" : app_name ,
236+ "application_id" : app_id ,
237+ "metadata_field_name" : field_name ,
238+ "metadata_field_value" : field_value
239+ })
240+ else :
241+ # No servers link and no metadata
242+ csv_data .append ({
243+ "server_name" : "N/A" ,
244+ "server_id" : "N/A" ,
245+ "application_name" : app_name ,
246+ "application_id" : app_id ,
247+ "metadata_field_name" : "N/A" ,
248+ "metadata_field_value" : "N/A"
249+ })
250+
251+ # Write CSV file
252+ if csv_data :
253+ with open ("server_app_metadata.csv" , "w" , newline = "" ) as csvfile :
254+ fieldnames = ["server_name" , "server_id" , "application_name" , "application_id" , "metadata_field_name" , "metadata_field_value" ]
255+ writer = csv .DictWriter (csvfile , fieldnames = fieldnames )
256+ writer .writeheader ()
257+ writer .writerows (csv_data )
258+ print (f"\n CSV file created: server_app_metadata.csv ({ len (csv_data )} rows)" )
259+ else :
260+ print ("\n No data to write to CSV file." )
164261 else :
165262 print ("No applications found in response." )
166263 return
0 commit comments