-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy patholdSnapList.py
48 lines (40 loc) · 2.04 KB
/
oldSnapList.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env python
"""list old snapshots"""
# usage: ./oldSnapshotList.py -v mycluster -u admin -k 30
# import pyhesity wrapper module
from pyhesity import *
from datetime import datetime
# command line arguments
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-v', '--vip', type=str, required=True) # cluster to connect to
parser.add_argument('-u', '--username', type=str, required=True) # username
parser.add_argument('-d', '--domain', type=str, default='local') # (optional) domain - defaults to local
parser.add_argument('-k', '--olderthan', type=int, default=0) # number of days of snapshots to retain
parser.add_argument('-j', '--jobname', type=str, default=None)
parser.add_argument('-n', '--numruns', type=int, default=100)
args = parser.parse_args()
vip = args.vip
username = args.username
domain = args.domain
olderthan = args.olderthan
jobname = args.jobname
numruns = args.numruns
# authenticate
apiauth(vip, username, domain)
now = datetime.now()
nowUsecs = dateToUsecs(now.strftime("%Y-%m-%d %H:%M:%S"))
for job in sorted(api('get', 'protectionJobs'), key=lambda job: job['name'].lower()):
if jobname is None or jobname.lower() == job['name'].lower():
endUsecs = nowUsecs
while(1):
runs = [r for r in api('get', 'protectionRuns?jobId=%s&numRuns=%s&endTimeUsecs=%s&excludeTasks=true&excludeNonRestoreableRuns=true' % (job['id'], numruns, endUsecs)) if r['backupRun']['stats']['endTimeUsecs'] < endUsecs]
if len(runs) > 0:
endUsecs = runs[-1]['backupRun']['stats']['startTimeUsecs']
else:
break
for run in runs:
startdate = usecsToDate(run['copyRun'][0]['runStartTimeUsecs'])
startdateusecs = run['copyRun'][0]['runStartTimeUsecs']
if startdateusecs < timeAgo(olderthan, 'days') and run['backupRun']['snapshotsDeleted'] is False:
print("%s: %s (%s)" % (startdate, job['name'], run['backupRun']['runType'][1:]))