111 lines
4.4 KiB
Markdown
111 lines
4.4 KiB
Markdown
NDIT Cohesity Scripts
|
|
-------------------------
|
|
These scripts factilitate the automation of NDIT's data protection program with Cohesity. Theses scripts are designed to be used by authorized North Dakota State NDIT personnel only.
|
|
|
|
Contents
|
|
--------
|
|
* classes/cohesityAPI.py
|
|
* Defines functions that have been tested and setup in accordance with NDIT Cohesity operating guidelines.
|
|
|
|
* classes/serviceNowAPI.py
|
|
* Defines functions used for opening and assigning tickets for Cohesity issues
|
|
|
|
* classes/sharePointAPI.py
|
|
* Defines functions used for looking up assets in the sharepoint configuration management database (CMDB)
|
|
|
|
* cancelJobs.py
|
|
* Used for mass cancellation of all currently running jobs, typically used for vCenter maintenance.
|
|
|
|
* dailyErrors.py
|
|
* Pulls all protection job runs for the previous 24 hours and creates ServiceNow tickets for any jobs in a Failure state
|
|
* Sends an email summary to the backup teams for all job states on a daily basis.
|
|
|
|
* dailyProtectionReview.py
|
|
* Retrieves all VM objects from vCenter sources that are registerd to Cohesity and verifies that each object is protected or exempted in accordance with NDIT procedures.
|
|
* Reviews all protection jobs to ensure empty jobs are paused so they don't generate erroneous errors as well as ensures all popultated jobs are running.
|
|
* Creates SerivceNow Incidents for:
|
|
* Unprotected VMs
|
|
* Unprotected AppNames
|
|
* Populated Jobs that are paused
|
|
|
|
* findDuplicates.py
|
|
* Pulls all backup jobs per vCenter and determines if a VM is listed in more than one group.
|
|
|
|
* pauseOrResumeJob.py
|
|
* Used to mass pause or resume protectiong jobs, typically used for vCenter maintenance.
|
|
|
|
* sqlServerRegistration.py
|
|
* Determines if the VM that identified by '-s' has been setup as a SQL server source, if not register it as one and add it to the appropriate SQL server protection group provided by CMDB lookup or specified by '-p'.
|
|
* Pull all kSQL object types within Cohesity and ensure the ITD-COHESITY-DBA group has access to all objects.
|
|
|
|
* updateProtectionGroupTags.py
|
|
* Used to include or exclude vmWare protection job tags across a vCenter or individual job.
|
|
|
|
* beta/getSQLSourceErrorMessages.py
|
|
* Pulls any failed health check information on SQL servers that could prevent the SQL server from getting backed up
|
|
* Attempts to refresh the source to eliminate false positives
|
|
* Opens a ServiceNow ticket if refreshing the source does not resolve the issue.
|
|
|
|
ToDo
|
|
----
|
|
* dailyProtectionReview.py
|
|
* BUG:
|
|
|
|
* RFE:
|
|
* SeriveNow CMDB lookups will need to be used for AppName and exemnptions, see RFE 001 & RFE 002 sections in the script
|
|
|
|
* dailyErrors.py
|
|
* RFE:
|
|
* Determine wheter or not we need to open tickets for jobs in a warning state.
|
|
|
|
* findDuplicates.py
|
|
* RFE:
|
|
* Determine if this script needs to be ran on a routine basis.
|
|
* Add functionality to open tickets on duplicates
|
|
|
|
* updateProtectionGroupTags.py
|
|
* RFE:
|
|
* Update API calls to use class calls instead of GetFilteredRequest()
|
|
* Update tag lookup section to use the function in the class instead of the local function in the script
|
|
|
|
* sqlServerRegistration.py
|
|
* RFE:
|
|
* SeriveNow CMDB lookups will need to be used for AppName and exemnptions, see RFE 001 & RFE 002 sections in the script
|
|
* Update API calls to use class calls instead of GetFilteredRequest()
|
|
|
|
Example Python Script
|
|
---------------------
|
|
```
|
|
import json
|
|
import sys
|
|
import certifi
|
|
import urllib3
|
|
|
|
from datetime import date, timedelta
|
|
|
|
sys.path.insert(0, './classes/')
|
|
import cohesityAPI as cohesity
|
|
|
|
try:
|
|
|
|
# Define create and instantiate the API for a Cohesity cluster
|
|
mdn = cohesity.API('itdmdndpc01.nd.gov')
|
|
|
|
# Get the Auth Token and add it to the API header calls
|
|
mdnToken = mdn.GetAuthToken()
|
|
mdn.UpdateHeaders(mdnToken['accessToken'])
|
|
|
|
# Get a list of objects from an API call, for a full listing of API calls, see developer.cohesity.com
|
|
vms = mdn.GetFilteredRequest("/public/protectionSources/virtualMachines", "?protected=true")
|
|
|
|
# Print out an indented copy of the JSON data; use jsonparser.org or notepad++ to make it easier to read
|
|
print(json.dumps(vms, indent=4))
|
|
|
|
# Do something with the data based on the JSON output
|
|
for vm in vms:
|
|
print(vm['name'])
|
|
|
|
except OSError as cohesityError:
|
|
print('Cohesity Error: ' + cohesityError)
|
|
```
|