Skip to content

Commit 17b90c0

Browse files
output csv file
1 parent 8fbfa7a commit 17b90c0

1 file changed

Lines changed: 107 additions & 10 deletions

File tree

get-server-application-metadata/get-server-app-metadata.py

Lines changed: 107 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import base64
33
import getpass
44
import json
5+
import csv
56

67
class Application:
78
def __init__(self, app_id, name):
@@ -15,7 +16,6 @@ def getApplications(headers, params, org_id):
1516

1617
def 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"\nCSV file created: server_app_metadata.csv ({len(csv_data)} rows)")
259+
else:
260+
print("\nNo data to write to CSV file.")
164261
else:
165262
print("No applications found in response.")
166263
return

0 commit comments

Comments
 (0)