-
Notifications
You must be signed in to change notification settings - Fork 89
/
add_node.py
74 lines (59 loc) · 1.95 KB
/
add_node.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
from __future__ import print_function
import re
import requests
from orionsdk import SwisClient
def main():
npm_server = 'localhost'
username = 'admin'
password = ''
swis = SwisClient(npm_server, username, password)
print("Add an SNMP v2c node:")
# fill these in for the node you want to add!
ip_address = '127.0.0.1'
community = 'public'
# set up property bag for the new node
props = {
'IPAddress': ip_address,
'EngineID': 1,
'ObjectSubType': 'SNMP',
'SNMPVersion': 2,
'Community': community,
'DNS': '',
'SysName': ''
}
print("Adding node {}... ".format(props['IPAddress']), end="")
results = swis.create('Orion.Nodes', **props)
print("DONE!")
# extract the nodeID from the result
nodeid = re.search(r'(\d+)$', results).group(0)
pollers_enabled = {
'N.Status.ICMP.Native': True,
'N.Status.SNMP.Native': False,
'N.ResponseTime.ICMP.Native': True,
'N.ResponseTime.SNMP.Native': False,
'N.Details.SNMP.Generic': True,
'N.Uptime.SNMP.Generic': True,
'N.Cpu.SNMP.HrProcessorLoad': True,
'N.Memory.SNMP.NetSnmpReal': True,
'N.AssetInventory.Snmp.Generic': True,
'N.Topology_Layer3.SNMP.ipNetToMedia': False,
'N.Routing.SNMP.Ipv4CidrRoutingTable': False
}
pollers = []
for k in pollers_enabled:
pollers.append(
{
'PollerType': k,
'NetObject': 'N:' + nodeid,
'NetObjectType': 'N',
'NetObjectID': nodeid,
'Enabled': pollers_enabled[k]
}
)
for poller in pollers:
print(" Adding poller type: {} with status {}... ".format(poller['PollerType'], poller['Enabled']), end="")
response = swis.create('Orion.Pollers', **poller)
print("DONE!")
requests.packages.urllib3.disable_warnings()
if __name__ == '__main__':
main()