Manage Nodes in a Cluster

Add a Node

See Adding a Node for information on adding nodes.

Show Information about a Node in a Cluster

You can fetch/re-post the object representing the node in the cluster using GET/PUT requests. $NODE_ID is the integer ID of the new node.

Description Shows a node in the cluster
MethodGET /api/v1/clusterconfig/members/id
Response Datanode
Authentication Requiredyes
Path ArgumentsDescriptionData typeRequired?
id ID of the bucket storage configuration stringrequired
Return Codes
200 Request complete
400 Bad authentication
500 Request failed

To redirect the output to a JSON file, run the script like this:

shell
$ script>$YOUR_FILE_NAME.json

You can then use this as the payload in further requests when updating the information.

http
GET /api/v1/clusterconfig/members/$NODE_ID
Mac OS or Linux (curl)
shell
curl -v -X GET $YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json"
Mac OS or Linux (curl) One-line
shell
curl -v -X GET $YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json"
Windows Cmd and curl
cmd
curl -v -X GET $YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json"
Windows Powershell and curl
powershell
curl.exe -X GET 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;
my $TOKEN = "TOKEN";
my $uri = '$YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID';
my $req = HTTP::Request->new("GET", $uri );
$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");
my $lwp = LWP::UserAgent->new;
my $result = $lwp->request( $req );
print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID'

resp = requests.get(url,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

let request = https.get('$YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID', (res) => {
  if (res.statusCode !== 200) {
    console.error(`Error from server. Code: ${res.statusCode}`);
    res.resume();
    return;
  }

  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('close', () => {
    console.log('Response:');
    console.log(JSON.parse(data));
  });
});

    return(undef,undef);
}
Example Responses
Success (200)
json
[
  {
    "vhost": 1,
    "uuid": "7q2LwHv6q3C5jmdGj3EYL1n56olAYcQy",
    "internalHostUri": "$YOUR_LOGSCALE_URL",
    "displayName": "host-1"
  }
]

The returned JSON has the following structure:

Table:

FieldTypeDescription
displayNamestring User configurable name for this host
internalHostUriuri Internal URI for this node
uuidstring Universally unique ID for this node; not user configurable
vhostinteger Node ID; not user configurable

Modify information about a node in a cluster

Description Update the configuration of a node in the cluster.
MethodPUT /api/v1/clusterconfig/members/id
Request Datanode
Response Datanode
Authentication Requiredyes
Path ArgumentsDescriptionData typeRequired?
id ID of the bucket storage configuration stringrequired
Return Codes
200 Request complete
400 Bad authentication
500 Request failed
http
PUT /api/v1/clusterconfig/members/$NODE_ID
Mac OS or Linux (curl)
shell
curl -v -X PUT $YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json"
Mac OS or Linux (curl) One-line
shell
curl -v -X PUT $YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json"
Windows Cmd and curl
cmd
curl -v -X PUT $YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json"
Windows Powershell and curl
powershell
curl.exe -X PUT 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;
my $TOKEN = "TOKEN";
my $uri = '$YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID';
my $req = HTTP::Request->new("PUT", $uri );
$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");
my $lwp = LWP::UserAgent->new;
my $result = $lwp->request( $req );
print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID'

resp = requests.put(url,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

let request = https.put('$YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID', (res) => {
  if (res.statusCode !== 200) {
    console.error(`Error from server. Code: ${res.statusCode}`);
    res.resume();
    return;
  }

  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('close', () => {
    console.log('Response:');
    console.log(JSON.parse(data));
  });
});

    return(undef,undef);
}
Example Responses
Success (200)
json
[
  {
    "vhost": 1,
    "uuid": "7q2LwHv6q3C5jmdGj3EYL1n56olAYcQy",
    "internalHostUri": "$YOUR_LOGSCALE_URL",
    "displayName": "host-1"
  }
]

The returned JSON has the following structure:

Table:

FieldTypeDescription
displayNamestring User configurable name for this host
internalHostUriuri Internal URI for this node
uuidstring Universally unique ID for this node; not user configurable
vhostinteger Node ID; not user configurable

You can edit the fields internalHostUri and displayName in this structure and POST the resulting changes back to the server, preserving the vhost and uuid fields.

Delete a Node from a Cluster

See Removing a Node documentation on removing a node from a cluster.

Description Delete the configuration of a node in the cluster.
MethodDELETE /api/v1/clusterconfig/members/id
Authentication Requiredyes
Path ArgumentsDescriptionData typeRequired?
id ID of the bucket storage configuration stringrequired
Query ArgumentsDescriptionData typeRequired?
accept-data-loss Force deletion of the node configuration booleanoptional
 Supported Values 
 falseDeletes only if no data or partitions are assigned
 trueForce deletion even if it has data and assigned partitions
Return Codes
200 Request complete
400 Bad authentication
500 Request failed

If the host does not have any segment files, and no assigned partitions, there is no data loss when deleting a node.

http
DELETE /api/v1/clusterconfig/members/$NODE_ID
Mac OS or Linux (curl)
shell
curl -v -X DELETE $YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json"
Mac OS or Linux (curl) One-line
shell
curl -v -X DELETE $YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json"
Windows Cmd and curl
cmd
curl -v -X DELETE $YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json"
Windows Powershell and curl
powershell
curl.exe -X DELETE 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;
my $TOKEN = "TOKEN";
my $uri = '$YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID';
my $req = HTTP::Request->new("DELETE", $uri );
$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");
my $lwp = LWP::UserAgent->new;
my $result = $lwp->request( $req );
print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID'

resp = requests.delete(url,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

let request = https.delete('$YOUR_LOGSCALE_URL/api/v1/clusterconfig/members/$NODE_ID', (res) => {
  if (res.statusCode !== 200) {
    console.error(`Error from server. Code: ${res.statusCode}`);
    res.resume();
    return;
  }

  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('close', () => {
    console.log('Response:');
    console.log(JSON.parse(data));
  });
});

    return(undef,undef);
}

It is possible to drop a host, even if it has data and assigned partitions, by adding the query parameter accept-data-loss with the value true.

Warning

This procedure silently drops your data.