Admin Nodes API

Admin Nodes API

Related Documentation 

Nodes API 

We can also manage nodes using the API. 

Operation

Method

URL

Response

Example

Operation

Method

URL

Response

Example

Get Nodes

GET

http://host/en/omk/admin/api/v2/nodes.json



http://athena.opmantek.net/en/omk/admin/api/v2/nodes.json?page=1&per_page=5&sort_by=name&order=asc

See Query Parameters

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": "" }, "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": "" }, "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



Request Modifiers (query parameters)

Not all requests will use all request modifiers.

Query Parameter

Possible Values

Query Parameter

Possible Values

fields_hash

Array of property names. If provided only the properties specified will be returned (instead of the whole document).

eg:   fields_hash={"name":1,"uuid":1} returns only the node name and the node uuid.

By default all properties if no fields_hash is specified.

page

Which page of the requested document to be returned, from 1 .. n, defaults to no pagination.

per_page

How many results are returned per page, defaults to 25

search

List of key=value pairs. Search filter applied to the list of results.
eg: search={"name":"athena","configuration.group":"SydneyDC"} (which is "Name"="athena" AND "Group"="SydneyDC")

For a string, if it starts with regex: or iregex: then a case-sensitive or case-insensitive regular expression match is used.
eg: filter={"name":"iregex:Switch"} to find all the nodes with switch or SWITCH in their name.

sort_by

Property to sort by. eg: sort_by=name to sort by node name

order

Sort order. asc | desc : sort the response by sort_by ascending or descending.

By example, the queries will look something like this: 

http://athena.opmantek.net/omk/admin/api/v2/nodes.json?fields_hash={"name":1,"uuid":1}&search={"name":"Switch-1"}

Node Properties

Please see Common Node Properties

Authentication

Important: All these methods are authenticated. 

Operation

Method

URL

Response

Example

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. 

Remote Nodes

The following are examples of using the Nodes API with remote nodes in an opHA cluster.

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://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" }

It will return the json node, the same structure that the CREATE. 



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://volla.opmantek.net:6042/en/omk/admin/api/v2/nodes/6ce5fd5c-d703-4d03-b36c-b8e01439a9f2.json

{ "activated": { "opEvents": "1", "opConfig": "0", "NMIS": "1" }, "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": "" }, "uuid": null, "current_user_privileges": { "update": true, "delete": true }, "name": "test", "friendly_addresses": "", "friendly_aliases": "" }

It will return the json node, the same structure that the CREATE.



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 the node_admin cli tool.