58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
#!/usr/bin/python
|
|
import sys,argparse,json,time
|
|
import time
|
|
sys.path.insert(0, './classes/')
|
|
|
|
import cohesityAPI as cohesity
|
|
|
|
def GetArgs():
|
|
parser = argparse.ArgumentParser(add_help=False)
|
|
parser.add_argument('--cluster', '-c', type=str, action='store')
|
|
parser.add_argument('--help', '-h', action='store_true')
|
|
return (parser.parse_args())
|
|
|
|
def PrintHelp():
|
|
print("\nBasic Usage:")
|
|
print("\n python3 cancelJobs.py -c cluster1.domain.tld" )
|
|
print("\t -c FQDN of Cohesity cluster address")
|
|
print("\t -h Prints this help message")
|
|
|
|
|
|
args = GetArgs()
|
|
|
|
if arg.help:
|
|
PrintHelp()
|
|
exit(1)
|
|
|
|
# Validate arguments & assign variables if necessary
|
|
if not args.cluster:
|
|
sys.exit("Error: Specify a Cohesity cluster fqdn with -c parameter.")
|
|
|
|
# Connect to the Cohesity cluster
|
|
cluster = cohesity.API(args.cluster)
|
|
authToken = cluster.GetAuthToken()
|
|
cluster.UpdateHeaders(authToken['accessToken'])
|
|
|
|
vmJobs = cluster.GetFilteredRequest("/public/protectionJobs", "?environments=kVMware")
|
|
uniqueJobs = {job['id'] : job for job in vmJobs}.values()
|
|
|
|
# Non Running states
|
|
finStates = ['kCanceled', 'kSuccess', 'kFailure', 'kWarning']
|
|
|
|
for job in uniqueJobs:
|
|
if 'isDeleted' in job:
|
|
continue
|
|
if 'isPaused' in job:
|
|
continue
|
|
|
|
# Get running protections per vmware protection job id, most recent is returned
|
|
run = cluster.GetFilteredRequest("/public/protectionRuns","?numRuns=10&jobId=" + str(job['id']))
|
|
|
|
if run[0]['backupRun']['status'] not in finStates:
|
|
# Cancel the running protection job
|
|
resp = cluster.CancelJob(job['id'],run[0]['backupRun']['jobRunId'])
|
|
|
|
# Print the response
|
|
print(resp.content)
|
|
|