update
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
import os
|
||||
import argparse
|
||||
import json
|
||||
import urllib3
|
||||
import requests
|
||||
from requests_ntlm import HttpNtlmAuth
|
||||
# Use pip install requests_ntlm to install the necessary modules
|
||||
|
||||
class API(object):
|
||||
def __init__(self):
|
||||
if not ((os.environ.get('ITD_SHAREPOINT_PASS')) and (os.environ.get('ITD_SHAREPOINT_USER'))):
|
||||
print("\n*** ERROR: Environment Variables are not set for SharePoint ***")
|
||||
print("Set OS environment variables ITD_SHAREPOINT_PASS and ITD_SHAREPOINT_USER")
|
||||
exit(1)
|
||||
else:
|
||||
# Username is in the format of 'NDGOV\\<userName>'
|
||||
sp_user = os.environ['ITD_SHAREPOINT_USER']
|
||||
sp_pass = os.environ['ITD_SHAREPOINT_PASS']
|
||||
|
||||
self.server_url = "https://share.nd.gov/"
|
||||
self.site_url = self.server_url + "itd/Computer-Systems/Distributed-Systems/VMWare/_api/web/"
|
||||
self.context_url = self.server_url + "itd/Computer-Systems/Distributed-Systems/VMWare/_api/contextinfo/"
|
||||
self.env = "All"
|
||||
|
||||
self.headers = {
|
||||
"Accept":"application/json; odata=verbose",
|
||||
"Content-Type":"application/json; odata=verbose",
|
||||
"odata":"verbose",
|
||||
"X-RequestForceAuthentication":"true"
|
||||
}
|
||||
|
||||
self.auth = HttpNtlmAuth(sp_user, sp_pass)
|
||||
|
||||
def get_AllNodes(self):
|
||||
|
||||
list_name = 'VM Guests'
|
||||
|
||||
# Get list information
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
r = requests.get(self.site_url + "lists/GetByTitle('%s')" % list_name, auth=self.auth, headers=self.headers, verify=False)
|
||||
list_guid = r.json()['d']['Id']
|
||||
list_itemcount = r.json()['d']['ItemCount']
|
||||
|
||||
# Query list items
|
||||
api_items_url = self.site_url + "Lists(guid'%s')/Items" % list_guid
|
||||
concat_items = []
|
||||
# Parse the list
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
cur_page = requests.get(api_items_url, auth=self.auth, headers=self.headers, verify=False)
|
||||
concat_items += cur_page.json()['d']['results']
|
||||
|
||||
# Sharepoint uses pagination with '__next' in the JSON results to indicate additional pages of information
|
||||
# are present. Loop through the pages and concatenate the information into one dataset
|
||||
while '__next' in cur_page.json()['d']:
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
cur_page = requests.get(cur_page.json()['d']['__next'], auth=self.auth, headers=self.headers, verify=False)
|
||||
concat_items += cur_page.json()['d']['results']
|
||||
|
||||
return concat_items
|
||||
|
||||
def get_ActiveNodes(self, e):
|
||||
|
||||
self.env = e
|
||||
list_name = 'VM Guests'
|
||||
|
||||
# Get list information
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
r = requests.get(self.site_url + "lists/GetByTitle('%s')" % list_name, auth=self.auth, headers=self.headers, verify=False)
|
||||
list_guid = r.json()['d']['Id']
|
||||
list_itemcount = r.json()['d']['ItemCount']
|
||||
|
||||
# Query list items
|
||||
api_items_url = self.site_url + "Lists(guid'%s')/Items" % list_guid
|
||||
if self.env == 'All':
|
||||
active_items_url = api_items_url + "?$filter=(Status eq 'Current') or (Status eq 'Change')"
|
||||
else:
|
||||
active_items_url = api_items_url + "?$filter=(Environment eq '%s') and ((Status eq 'Current') or (Status eq 'Change'))" % self.env
|
||||
concat_items = []
|
||||
|
||||
# Parse the list
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
cur_page = requests.get(active_items_url, auth=self.auth, headers=self.headers, verify=False)
|
||||
concat_items += cur_page.json()['d']['results']
|
||||
|
||||
# Sharepoint uses pagination with '__next' in the JSON results to indicate additional pages of information
|
||||
# are present. Loop through the pages and concatenate the information into one dataset
|
||||
while '__next' in cur_page.json()['d']:
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
cur_page = requests.get(cur_page.json()['d']['__next'], auth=self.auth, headers=self.headers, verify=False)
|
||||
concat_items += cur_page.json()['d']['results']
|
||||
|
||||
return concat_items
|
||||
|
||||
def find_VM(self, hostname):
|
||||
|
||||
domains = [".nd.gov", ".ndtestdev.nd.dev", ".ndcloud.gov", ".testnd.gov", ".itd.nd.gov", ".ns.nd.gov", ".cloudapp.azure.com", ".uat.mmis.nd.gov", ".test.ndcloud.gov", ".k12tst.nd.us", ".legend.nd.gov", ".tst.mmis.dev", ".trn.mmis.nd.gov", ".sit.mmis.nd.gov", ".nd.gov-mag", ".uat.mmis.dev", ".mo.legend.nd.gov", ".video.nd.gov", ".mmis.nd.gov", ".sit.legend.nd.gov", ".trn.mmis.dev", ".prm.mmis.nd.gov", ".state.nd.us", ".k12.nd.us", ".stg.k12.nd.us", ".sit.mmis.dev", "ndnic.com"]
|
||||
|
||||
for domain in domains:
|
||||
try:
|
||||
data = self.get_Node(hostname + domain)
|
||||
if 'Title' in data[0]:
|
||||
hostname = data[0]['Title']
|
||||
break
|
||||
except:
|
||||
continue
|
||||
|
||||
return(hostname)
|
||||
|
||||
def get_Node(self, server):
|
||||
|
||||
myNode = server
|
||||
list_name = 'VM Guests'
|
||||
|
||||
# Get list information
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
r = requests.get(self.site_url + "lists/GetByTitle('%s')" % list_name, auth=self.auth, headers=self.headers, verify=False)
|
||||
list_guid = r.json()['d']['Id']
|
||||
|
||||
# Query list items
|
||||
api_items_url = self.site_url + "Lists(guid'%s')/Items" % list_guid
|
||||
singleServer_url = api_items_url + "?$filter=Title eq '%s'" % myNode
|
||||
cur_page = requests.get(singleServer_url, auth=self.auth, headers=self.headers, verify=False)
|
||||
|
||||
return cur_page.json()['d']['results']
|
||||
|
||||
def get_Agency(self, aID):
|
||||
|
||||
agencyID = aID
|
||||
list_name = 'Agency'
|
||||
|
||||
# Get list information
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
r = requests.get(self.site_url + "lists/GetByTitle('%s')" % list_name, auth=self.auth, headers=self.headers, verify=False)
|
||||
list_guid = r.json()['d']['Id']
|
||||
|
||||
# Query list items
|
||||
api_items_url = self.site_url + "Lists(guid'%s')/Items" % list_guid
|
||||
singleServer_url = api_items_url + "?$filter=ID eq '%s'" % agencyID
|
||||
cur_page = requests.get(singleServer_url, auth=self.auth, headers=self.headers, verify=False)
|
||||
|
||||
return cur_page.json()['d']['results'][0]['Title']
|
||||
|
||||
def get_AppName(self, appID):
|
||||
|
||||
applicationID = appID
|
||||
list_name = 'VM App Name'
|
||||
|
||||
# Get list information
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
r = requests.get(self.site_url + "lists/GetByTitle('%s')" % list_name, auth=self.auth, headers=self.headers, verify=False)
|
||||
list_guid = r.json()['d']['Id']
|
||||
|
||||
# Query list items
|
||||
api_items_url = self.site_url + "Lists(guid'%s')/Items" % list_guid
|
||||
singleServer_url = api_items_url + "?$filter=ID eq '%s'" % applicationID
|
||||
cur_page = requests.get(singleServer_url, auth=self.auth, headers=self.headers, verify=False)
|
||||
|
||||
return cur_page.json()['d']['results'][0]['Title']
|
||||
|
||||
def get_AppNodes(self, appID):
|
||||
|
||||
applicationID = appID
|
||||
list_name = 'VM Guests'
|
||||
|
||||
# Get list information
|
||||
requests.packages.urllib3.disable_warnings()
|
||||
r = requests.get(self.site_url + "lists/GetByTitle('%s')" % list_name, auth=self.auth, headers=self.headers, verify=False)
|
||||
list_guid = r.json()['d']['Id']
|
||||
|
||||
# Query list items
|
||||
api_items_url = self.site_url + "Lists(guid'%s')/Items" % list_guid
|
||||
singleServer_url = api_items_url + "?$filter=AppName eq '%s'" % appID
|
||||
cur_page = requests.get(singleServer_url, auth=self.auth, headers=self.headers, verify=False)
|
||||
|
||||
return cur_page.json()['d']['results']
|
||||
Reference in New Issue
Block a user