Skip to content

Commit 5a5fd2d

Browse files
dark-vextembleking
andauthored
Created get_dashboard.py - Search a dashboard by name and saving it in a zip file (#183)
Co-authored-by: Fede Barcelona <[email protected]>
1 parent b6cd930 commit 5a5fd2d

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

Diff for: examples/get_dashboard.py

+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
#!/usr/bin/env python
2+
#
3+
# Search a dashboard by name and saving it in a zip file
4+
#
5+
6+
7+
import sys
8+
import os
9+
import zipfile
10+
11+
from sdcclient import SdMonitorClient
12+
13+
14+
def zipdir(path, ziph):
15+
# ziph is zipfile handle
16+
for root, dirs, files in os.walk(path):
17+
for file in files:
18+
ziph.write(os.path.join(root, file))
19+
20+
21+
def cleanup_dir(path):
22+
if not os.path.exists(path):
23+
return
24+
if not os.path.isdir(path):
25+
print('Provided path is not a directory')
26+
sys.exit(-1)
27+
28+
for file in os.listdir(path):
29+
file_path = os.path.join(path, file)
30+
try:
31+
if os.path.isfile(file_path):
32+
os.unlink(file_path)
33+
else:
34+
print(('Cannot clean the provided directory due to delete failure on %s' % file_path))
35+
except Exception as e:
36+
print(e)
37+
os.rmdir(path)
38+
39+
40+
#
41+
# Parse arguments
42+
#
43+
if len(sys.argv) != 4:
44+
print(('usage: %s <sysdig-token> "<dashboard-name>" <output-file-name>' % sys.argv[0]))
45+
print('You can find your token at https://app.sysdigcloud.com/#/settings/user')
46+
sys.exit(1)
47+
48+
49+
# Define args
50+
sdc_token = sys.argv[1]
51+
dashboard_name = sys.argv[2]
52+
dashboard_state_file = sys.argv[3]
53+
sysdig_dashboard_dir = 'sysdig-dashboard-dir'
54+
55+
#
56+
# Instantiate the SDC client
57+
#
58+
sdclient = SdMonitorClient(sdc_token)
59+
60+
#
61+
# Find a dashboard by name
62+
#
63+
ok, res = sdclient.find_dashboard_by(dashboard_name)
64+
65+
66+
# Check the result
67+
if ok and len(res) > 0:
68+
print('Dashboard found, ID: ', res[0]['dashboard']['id'])
69+
dashboard_id = res[0]['dashboard']['id']
70+
dashboard_configuration = res[0]['dashboard']
71+
else:
72+
print(res)
73+
sys.exit(1)
74+
75+
76+
#
77+
# Get Dashboard by id
78+
#
79+
ok, res = sdclient.get_dashboard(dashboard_id)
80+
81+
# Clean up any state in the tmp directory
82+
cleanup_dir(sysdig_dashboard_dir)
83+
84+
85+
# Creating sysdig dashboard directory to store dashboards
86+
if not os.path.exists(sysdig_dashboard_dir):
87+
os.makedirs(sysdig_dashboard_dir)
88+
89+
90+
#
91+
# Check for successful retrieval and save it
92+
#
93+
if len(res['dashboard']) > 0:
94+
print('Downloading Dashboard ID: ', dashboard_id)
95+
sdclient.save_dashboard_to_file(res['dashboard'], os.path.join(sysdig_dashboard_dir, str(res['dashboard']['id'])))
96+
print('Dashboard Name: "%s"' % (res['dashboard']['name']), 'ID:', dashboard_id, 'downloaded')
97+
98+
99+
zipf = zipfile.ZipFile(dashboard_state_file, 'w', zipfile.ZIP_DEFLATED)
100+
zipdir(sysdig_dashboard_dir, zipf)
101+
zipf.close()
102+
103+
# Clean up any state in the directory
104+
cleanup_dir(sysdig_dashboard_dir)

0 commit comments

Comments
 (0)