JSPM

pip-clients-clusters-node

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8
  • Score
    100M100P100Q24403F
  • License MIT

Node.js client sdk for clusters microservice

Package Exports

  • pip-clients-clusters-node

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (pip-clients-clusters-node) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Pip.Services Logo
Clusters Microservice Client SDK for Node.js

Quick Links:

This is a Node.js client SDK for pip-services-clusters microservice.

It provides an easy to use abstraction over communication protocols:

  • Direct client for monolythic deployments
  • Http client
  • Lambda client for AWS
  • Memory client
  • Proxy http client
  • Null client to be used in testing

Install

Add dependency to the client SDK into package.json file of your project

{
    ...
    "dependencies": {
        ....
        "pip-clients-clusters-node": "^1.0.*",
        ...
    }
}

Then install the dependency using npm tool

# Install new dependencies
npm install

# Update already installed dependencies
npm update

Use

Inside your code get the reference to the client SDK

 import { ClustersHttpClientV1 } from 'pip-clients-clusters-node';

Define client configuration parameters.

// Client configuration
var httpConfig = ConfigParams.fromTuples(
    "connection.protocol", "http",
    "connection.host", "localhost",
    "connection.port", 3000
);
client.configure(httpConfig);

Instantiate the client and open connection to the microservice

// Create the client instance
client = new ClustersHttpClientV1();

// Connect to the microservice
client.open(null, function(err) {
    if (err) {
        console.error('Connection to the microservice failed');
        console.error(err);
        return;
    }
    
    // Work with the microservice
    ...
});

Now the client is ready to perform operations:

Create new cluster:

let CLUSTER1: ClusterV1 = {
    id: '1',
    name: 'Cluster #1',
    type: 'root',
    active: true,
    api_host: 'api.mycluster1.com',
    service_ports: { myservice1: 30001, myservice2: 30002 },
    max_tenant_count: 1,
    tenants_count: 1,
    active_tenants: ['1']
};   

    client.createCluster("123", CLUSTER1, (err, cluster){
        if (err != null) {
            console.error('Can\'t create cluster!');
            console.error(err);
        } else {
            console.dir('Cluster was created successfull');
        }
    });

Update exists cluster:

    CLUSTER1.name = "Cluster #2";
    client.updateCluster("123", CLUSTER1, (err, cluster){
        if (err != null) {
            console.error('Can\'t update cluster!');
            console.error(err);
        } else {
            console.dir('Cluster was updated successfull');
        }
    });

Delete existing cluster by cluster_id

    client.deleteClusterById("123", 1, (err, cluster){
        if (err != null) {
            console.error('Can\'t delete cluster!');
            console.error(err);
        } else {
            console.dir('Cluster was delete successfull');
            console.dir('Deleted cluster:');
            console.dir(cluster.toString());
        }
    });

Add new tenant into active cluster

    client.addTenant("123", "5", (err, cluster) {
        if (err != null) {
            console.error('Can\'t add tenant to cluster!');
            console.error(err);
        } else {
            console.dir('Tenant was added successfull');
            console.dir('Cluster:');
            console.dir(cluster.toString());
        }
    });

Remove existing tenant by tenantId

    client.removeTenant("123", "5", (err, cluster) {
        if (err != null) {
            console.error('Can\'t delete tenant from cluster!');
            console.error(err);
        } else {
            console.dir('Tenant was deleted successfull');
            console.dir('Cluster:');
            console.dir(cluster.toString());
        }
    });

Get list of all clusters:

    let filter = FilterParams.fromTuples(
        'active', true,
        'open', true
    );
    client.getClusters("123", filter, new PagingParams(), (err, clusters){
        if (err != null) {
            console.error('Can\'t find cluster by filter!');
            console.error(err);
        } else {
            console.dir("Cluster list length:");
            console.dir(clusters.data.length);
        }
    });

Get cluster by cluster_id:

    client.getClusterById("123", "1", (err, cluster){
         if (err != null) {
            console.error('Can\'t find cluster by cluster id!');
            console.error(err);
        } else {
            console.dir('Cluster was finded successfull');
            console.dir('Cluster:');
            console.dir(cluster.toString());
        }
    });

Get cluster by tenant:

    client.getClusterByTenant("123", "5", (err, cluster){
        if (err != null) {
            console.error('Can\'t find cluster by tenant id!');
            console.error(err);
        } else {
            console.dir('Cluster was finded successfull');
            console.dir('Cluster:');
            console.dir(cluster.toString());
        }
    });

Acknowledgements

This client SDK was created and currently maintained by Sergey Seroukhov.