Files
Zack Meier 1d304511b8 update
2026-04-15 15:45:50 -05:00

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)