Related Documentation
- We can also manage this information using the Admin GUI.
- opCharts API for reading node data opCore API V2
Nodes API
We can also manage nodes using the API.
Operation | Method | URL | Response | Example |
---|---|---|---|---|
Get Nodes | GET | http://host/en/omk/admin/api/v2/nodes.json | http://uburnto.opmantek.net/en/omk/admin/api/v2/nodes.json?requestData=undefined&page=1&per_page=25&sort_by=name&order=asc | |
Get Node | GET | http://host/en/omk/admin/api/v2/nodes/{node_uuid}.json | http://uburnto.opmantek.net/en/omk/admin/api/v2/nodes/86a82b4c-6ef6-4691-8c8c-1fc8da334d6f.json | |
Create Node | POST | http://host/en/omk/admin/api/v2/nodes.json To create a remote node in an opHA cluster see below. | The node in json from the recently created node, including the UUID | http://uburnto.opmantek.net/en/omk/admin/api/v2/nodes.json { "activated": { "NMIS": "1", "opConfig": "0", "opEvents": "1" }, "configuration": { "active": null, "authkey": "", "authpassword": "", "authprotocol": null, "businessService": null, "collect": 1, "community": "", "context": "", "customer": null, "group": "NMIS9", "host": "asgard.opmantek.net", "host_backup": "", "location": null, "netType": "default", "nettype": null, "node_context_name": "", "node_context_url": "", "notes": "", "ping": 1, "polling_policy": "default", "port": "161", "privkey": "", "privpassword": "", "privprotocol": null, "remote_connection_name": "", "remote_connection_url": "", "roleType": "default", "roletype": null, "serviceStatus": null, "threshold": 1, "username": "", "wmipassword": "", "wmiusername": "" }, "current_user_privileges": { "delete": true, "update": true }, "friendly_addresses": "", "friendly_aliases": "", "name": "test", "uuid": null } |
Update Node | PUT | http://host/en/omk/admin/api/v2/nodes/{node_uuid}.json To update a remote node in an opHA cluster see below. | http://uburnto.opmantek.net/en/omk/admin/api/v2/nodes/b56ba595-69e7-4702-9fe5-49512e1340b0.json { "activated": { "NMIS": "1", "opConfig": "0", "opEvents": "1" }, "addresses": [], "aliases": [], "cluster_id": "a515c63a-0d11-4bcb-a402-39a4600aebb9", "configuration": { "active": 1, "addresses": [ "192.168.88.13" ], "aliases": [], "authkey": "", "authpassword": "", "authprotocol": "md5", "businessService": null, "cbqos": "none", "collect": 1, "community": "OMKRead", "context": "", "customer": "Opmantek", "depend": [], "display_name": "", "group": "EXSI", "host": "castor.opmantek.net", "host_backup": "", "ip_protocol": "IPv4", "location": "Cloud", "max_msg_size": 1472, "max_repetitions": 0, "model": "automatic", "netType": "default", "nettype": null, "node_context_name": "Node Context", "node_context_url": "https://somelink.com/map/thing/", "notes": "", "ping": 1, "polling_policy": "1_minute", "port": "161", "privkey": "", "privpassword": "", "privprotocol": "des", "remote_connection_name": "SSH to Node", "remote_connection_url": "ssh://$host", "roleType": "access", "roletype": null, "serviceStatus": "Testing", "services": [], "sysDescr": "VMware ESXi 6.7.0 build-17167734 VMware, Inc. x86_64", "threshold": 1, "timezone": 0, "username": "", "version": "snmpv2c", "webserver": 0, "wmipassword": "", "wmiusername": "" }, "current_user_privileges": { "delete": 0, "update": 0 }, "friendly_addresses": "192.168.88.13", "friendly_aliases": "", "name": "Castor", "node_local": "Remote", "overrides": {}, "server_name": "fulla", "unknown": {}, "uuid": "b56ba595-69e7-4702-9fe5-49512e1340b0" } | |
Delete Node | DELETE | http://host/en/omk/admin/api/v2/nodes/{node_uuid}.json | http://uburnto.opmantek.net/en/omk/admin/api/v2/nodes/b56ba595-69e7-4702-9fe5-49512e1340b0.json |
Authentication
Important: All these methods are authenticated.
Operation | Method | URL | Response | Example |
---|---|---|---|---|
Authenticate | POST | http://host/en/omk/admin/login | http://uburnto.opmantek.net/en/omk/admin/login {"username": "username", "password": "password"} |
We should receive a 200 response and a cookie, that we can reuse for next API calls.
Create a remote Node
If we want to create a node in a remote cluster, we should indicate the remote cluster id in configuration.pollers: cluster_id
.
cluster_id
is the uuid of which opHA server the node belongs to.
E.x.
Create Remote | POST | http://host/en/omk/admin/api/v2/nodes.json | It will return the json node, the same structure that the CREATE. | http://uburnto.opmantek.net/en/omk/admin/api/v2/nodes.json It will return the same output as for a local node: { "activated": { "NMIS": 1, "opConfig": "0", "opEvents": "1" }, "cluster_id": "a515c63a-0d11-4bcb-a402-39a4600aebb9", "configuration": { "active": 1, "aliases": [], "authkey": "", "authpassword": "", "authprotocol": null, "businessService": null, "collect": 1, "community": "", "context": "", "customer": null, "group": "NMIS9", "host": "asgard.opmantek.net", "host_backup": "", "location": null, "max_msg_size": 65535, "max_repetitions": 0, "netType": "default", "nettype": null, "node_context_name": "", "node_context_url": "", "notes": "", "ping": 1, "pollers": "a515c63a-0d11-4bcb-a402-39a4600aebb9", "polling_policy": "default", "port": "161", "privkey": "", "privpassword": "", "privprotocol": null, "remote_connection_name": "", "remote_connection_url": "", "roleType": "default", "roletype": null, "serviceStatus": null, "threshold": 1, "username": "", "wmipassword": "", "wmiusername": "" }, "friendly_addresses": "", "friendly_aliases": "", "name": "test", "uuid": "6ce5fd5c-d703-4d03-b36c-b8e01439a9f2" } |
Update a remote Node
If we want to update a node in a remote cluster, we should indicate the remote cluster id in configuration.pollers: cluster_id
.
cluster_id
is the uuid of which opHA server the node belongs to.
E.x.
Update Remote | PUT | http://host/en/omk/admin/api/v2/nodes/node_uuid.json | It will return the json node, the same structure that the CREATE. | http://volla.opmantek.net:6042/en/omk/admin/api/v2/nodes/6ce5fd5c-d703-4d03-b36c-b8e01439a9f2.json { "cluster_id": "a515c63a-0d11-4bcb-a402-39a4600aebb9", "configuration": { "netType": "default", "polling_policy": "default", "port": "161", "collect": 1, "threshold": 1, "roleType": "default", "ping": 1, "group": "NMIS9", "host": "asgard.opmantek.net", "location": null, "customer": null, "businessService": null, "notes": "", "host_backup": "", "active": null, "community": "", "wmiusername": "", "wmipassword": "", "username": "", "context": "", "authpassword": "", "authkey": "", "authprotocol": null, "privpassword": "", "privkey": "", "privprotocol": null, "serviceStatus": null, "nettype": null, "roletype": null, "node_context_name": "", "node_context_url": "", "remote_connection_name": "", "remote_connection_url": "" }, "activated": { "opEvents": "1", "opConfig": "0", "NMIS": "1" }, "uuid": null, "current_user_privileges": { "update": true, "delete": true }, "name": "test", "friendly_addresses": "", "friendly_aliases": "" } |
Remote Nodes Error
If any operation has a remote cluster id, the API will try to edit in the remote server. If this operation is not possible, it will fail.
In order to succeed:
- opHA needs to be pulling that peer. This is because the peer sends the API url to update the remote in the registry data. And this information should be updated at least once a day.
- The peer has to be online.
If we should want to edit the remote node locally for some reason, we should use node_admin cli tool.