-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathorionAPI.py
141 lines (132 loc) · 5.77 KB
/
orionAPI.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import orionsdk
from orionsdk import SwisClient
import requests
import csv
#input access getCredentials
npm_server = '10.248.1.106'
username = 'admin'
password = ''
OutputFileName = 'output.csv'
#This is needed if SSL is not setup.
verify = False
if not verify:
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
def getUnknownNodes():
writeCSV(['NodeID','IP','MachineType'])
results = swis.query("SELECT NodeID, IPAddress, MachineType FROM Orion.Nodes where MachineType='Unknown'")
try:
for row in results['results']:
writeCSV([row['NodeID'], row['IPAddress'], row['MachineType']])
return results
except(KeyError):
try:
print results['Message']
except(KeyError):
print "Error"
def getPollerStats():
writeCSV(['EngineID','IP','CurrentUsage', 'IsExceeded', 'ScaleFactor','Nodes', 'NodePollInterval'])
results = swis.query("SELECT EngineID, E.IP, CurrentUsage, IsExceeded, P.ScaleFactor, E.Nodes, E.NodePollInterval FROM Orion.PollingUsage P JOIN orion.Engines E on E.EngineID=P.EngineID")
try:
for row in results['results']:
writeCSV([row['EngineID'], row['IP'], row['CurrentUsage'], row['IsExceeded'], row['ScaleFactor'], row['Nodes'], row['NodePollInterval']])
return results
except(KeyError):
try:
print results['Message']
except(KeyError):
print "Error"
def getPollers():
writeCSV(['EngineID','Pollers','IP'])
results = swis.query("SELECT EngineID, Pollers, IP FROM Orion.Engines")
try:
for row in results['results']:
writeCSV([row['EngineID'], row['Pollers'], row['IP']])
return results
except(KeyError):
try:
print results['Message']
except(KeyError):
print "Error"
def writeCSV(row):
with open(OutputFileName, 'a') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
writer.writerow(row)
return
swis = SwisClient(npm_server, username, password, verify=False)
def getNodes():
writeCSV(['NodeID','IP','Location'])
results = swis.query("SELECT NodeID, IPAddress, Location FROM Orion.Nodes")
try:
for row in results['results']:
writeCSV([row['NodeID'], row['IPAddress'], row['Location']])
return results
except(KeyError):
try:
print results['Message']
except(KeyError):
print "Error"
def getNodesDetails():
writeCSV(['NodeID','IP','Community','RWCommunity','SNMPVersion'])
results = swis.query("SELECT NodeID, IPAddress, Community, RWCommunity, SNMPVersion FROM Orion.Nodes ORDER BY Community")
try:
for row in results['results']:
writeCSV([row['NodeID'], row['IPAddress'], row['Community'], row['RWCommunity']])
return results
except(KeyError):
try:
print results['Message']
except(KeyError):
print "Error"
def getNodeGroups():
writeCSV(['IP Address','DNS','Name of Container', 'Container ID'])
results = swis.query("SELECT n.IP_Address, n.DNS, c.Name, m.ContainerID FROM Orion.Nodes n JOIN Orion.ContainerMemberDefinition m ON m.Expression = 'Nodes.NodeID='+toString(n.NodeID) JOIN Orion.Container c ON m.ContainerID=c.ContainerID WHERE m.Entity='Orion.Nodes'")
try:
for row in results['results']:
writeCSV([row['IP_Address'], row['DNS'], row['Name'], row['ContainerID']])
return results
except(KeyError):
try:
print results['Message']
except(KeyError):
print "Error"
def getGroupSubGroups():
writeCSV(['Subgroup','SubGroupID','ParentGroup'])
results = swis.query("SELECT c.name, m.ContainerID, d.name as groupName FROM Orion.Container c JOIN Orion.ContainerMemberDefinition m ON m.Expression = 'Groups.ContainerID='+toString(c.ContainerID) JOIN Orion.Container d ON m.ContainerID=d.ContainerID WHERE m.Entity='Orion.Groups'")
try:
for row in results['results']:
writeCSV([row['name'], row['ContainerID'], row['Name']])
return results
except(KeyError):
try:
print results['Message']
except(KeyError):
print "Error"
def getCredentials():
writeCSV(['ID','Name','Description', 'CredentialType', 'CredentialOwner', 'DisplayName', 'InstanceType', 'Uri', 'InstanceSiteId'])
results = swis.query("SELECT ID, Name, Description, CredentialType, CredentialOwner, DisplayName, InstanceType, Uri, InstanceSiteId FROM Orion.Credential")
try:
for row in results['results']:
writeCSV([row['ID'], row['Name'], row['Description'], row['CredentialType'], row['CredentialOwner'], row['DisplayName'], row['InstanceType'], row['Uri'], row['InstanceSiteId']])
return results
except(KeyError):
try:
print results['Message']
except(KeyError):
print "Error"
def getCredentialsByName(cred):
writeCSV(['ID','Name','Description', 'CredentialType', 'CredentialOwner', 'DisplayName', 'InstanceType', 'Uri', 'InstanceSiteId'])
results = swis.query("SELECT ID, Name, Description, CredentialType, CredentialOwner, DisplayName, InstanceType, Uri, InstanceSiteId FROM Orion.Credential where Name="+cred)
try:
for row in results['results']:
writeCSV([row['ID'], row['Name'], row['Description'], row['CredentialType'], row['CredentialOwner'], row['DisplayName'], row['InstanceType'], row['Uri'], row['InstanceSiteId']])
return results
except(KeyError):
try:
print results['Message']
except(KeyError):
print "Error"
requests.packages.urllib3.disable_warnings()
if __name__ == '__main__':
#Type function name below and save and build to get results
getNodeGroups()