...
We can also manage nodes using the API.
uburntorequestData=undefined&25 createdconfigurationnetTypedefault"polling_policy":"defaultport161collect1,"threshold1roleTypedefaultping1,"group":"NMIS9host"asgard.opmantek.net","location null, "businessService": null,
" |
|
customernullbusinessServicenull,"notes":host_backupactivecommunitywmiusernamehost": "asgard.opmantek.net", " |
|
wmipasswordusername""contextauthpassword""authkeynode_context_name": "", " |
|
authprotocolnullprivpasswordprivkeypolling_policy": "default", " |
|
privprotocolnullserviceStatusnullnettypenullroletypenodecontextnodecontextremote_connection_nameremote_connection_urlroletype": null, "serviceStatus" |
|
}activated{"opEvents1opConfig0NMIS1"uuid":null,"current_
"current_user_privileges":
{
" |
|
updatedeletenametestaddressesfriendly_aliases"configuration"netTypedefault"polling_policy1_minute"port161","collect":1,"threshold":1,"roleType":"access","ping":1,"group":"EXSI","active":1,"addresses":[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", |
|
"node_context_name
"netType": "default", "nettype": null, "node_context_name": "Node Context",
"node_context_url": "https://somelink.com/map/thing/", "notes": "", " |
|
privkey"","privpassword":"","privprotocol":"des", 1,
"polling_policy": "1_minute", "port": "161", "privkey": "", "privpassword": "",
"privprotocol": "des", "remote_connection_name": "SSH to Node", "remote_connection_url": "ssh://$host", |
|
"serviceStatusTestingservices[]sysDescrserviceStatus": "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": ""
}, |
|
"nettype":null,"roletype":null},"activated":{"opEvents":"1","opConfig":"0","NMIS":"1"},"uuid":"b56ba595-69e7-4702-9fe5-49512e1340b0","current_user_privileges":{"update":0,"delete":0},"addresses":[],"aliases":[],"cluster_id":"a515c63a-0d11-4bcb-a402-39a4600aebb9","friendly_addresses":"192.168.88.13","friendly_aliases":"","name":"Castor","node_local":"Remote","overrides":{},"server_name":"fulla","unknown":{}}Delete Node | DELETE | http://host/en/omk/admin/api/v2/nodes/{node_uuid}.json | http://uburnto.opmantek.net/en/omk/admin/api/v2/nodes/ Important: All this methods are authenticated.
...
http://uburnto.opmantek.net/en/omk/opHA/login
Code Block |
---|
{"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 | http://uburnto.opmantek.net/en/omk/admin/api/v2/nodes.json
Code Block |
{"configuration":{"pollers": "a515c63a-0d11-4bcb-a402-39a4600aebb9", "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":""}
Request Modifiers (query parameters)
Not all requests will use all request modifiers.
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"}
Authentication
Important: All these methods are authenticated.
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: Code Block |
---|
{
"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.
Create ,,
"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, 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, 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.
...