update
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
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)
|
||||
```
|
||||
Reference in New Issue
Block a user