Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

consul

Package Overview
Dependencies
Maintainers
1
Versions
57
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

consul

Consul client

  • 0.8.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
76K
increased by7.38%
Maintainers
1
Weekly downloads
 
Created
Source

Consul

This is a Consul client.

Documentation

See the official HTTP API docs for more information.

### consul([options])

Initialize a new Consul client.

Options

  • host (String, default: 127.0.0.1): agent address
  • port (String, default: 8500): agent HTTP port
  • secure (Boolean, default: false): enable HTTPS

Usage

var consul = require('consul')();
### consul.agent ### consul.agent.members([options], callback)

Returns the members as seen by the consul agent.

Options

  • wan (Boolean, default: false): return WAN members instead of LAN members

Usage

consul.agent.members(function(err, result) {
  if (err) throw err;
});

Result

[
  {
    "Name": "node1",
    "Addr": "127.0.0.1",
    "Port": 8301,
    "Tags": {
      "bootstrap": "1",
      "build": "0.3.0:441d613e",
      "dc": "dc1",
      "port": "8300",
      "role": "consul",
      "vsn": "2",
      "vsn_max": "2",
      "vsn_min": "1"
    },
    "Status": 1,
    "ProtocolMin": 1,
    "ProtocolMax": 2,
    "ProtocolCur": 2,
    "DelegateMin": 2,
    "DelegateMax": 4,
    "DelegateCur": 4
  }
]
### consul.agent.self(callback)

Returns the agent node configuration.

Usage

consul.agent.self(function(err, result) {
  if (err) throw err;
});

Result

{
  "Config": {
    "Bootstrap": true,
    "Server": true,
    "Datacenter": "dc1",
    "DataDir": "/tmp/node1/data",
    "DNSRecursor": "",
    "DNSConfig": {
      "NodeTTL": 0,
      "ServiceTTL": null,
      "AllowStale": false,
      "MaxStale": 5000000000
    },
    "Domain": "consul.",
    "LogLevel": "INFO",
    "NodeName": "node1",
    "ClientAddr": "127.0.0.1",
    "BindAddr": "127.0.0.1",
    "AdvertiseAddr": "127.0.0.1",
    "Ports": {
      "DNS": 8600,
      "HTTP": 8500,
      "RPC": 8400,
      "SerfLan": 8301,
      "SerfWan": 8302,
      "Server": 8300
    },
    "LeaveOnTerm": false,
    "SkipLeaveOnInt": false,
    "StatsiteAddr": "",
    "Protocol": 2,
    "EnableDebug": false,
    "VerifyIncoming": false,
    "VerifyOutgoing": false,
    "CAFile": "",
    "CertFile": "",
    "KeyFile": "",
    "ServerName": "",
    "StartJoin": [],
    "UiDir": "",
    "PidFile": "/tmp/node1/pid",
    "EnableSyslog": false,
    "SyslogFacility": "LOCAL0",
    "RejoinAfterLeave": false,
    "CheckUpdateInterval": 300000000000,
    "Revision": "441d613e1bd96254c78c46ee7c1b35c161fc7295+CHANGES",
    "Version": "0.3.0",
    "VersionPrerelease": ""
  },
  "Member": {
    "Name": "node1",
    "Addr": "127.0.0.1",
    "Port": 8301,
    "Tags": {
      "bootstrap": "1",
      "build": "0.3.0:441d613e",
      "dc": "dc1",
      "port": "8300",
      "role": "consul",
      "vsn": "2",
      "vsn_max": "2",
      "vsn_min": "1"
    },
    "Status": 1,
    "ProtocolMin": 1,
    "ProtocolMax": 2,
    "ProtocolCur": 2,
    "DelegateMin": 2,
    "DelegateMax": 4,
    "DelegateCur": 4
  }
}
### consul.agent.join(options, callback)

Trigger agent to join a node.

Options

  • address (String): node IP address to join
  • wan (Boolean, default false): attempt to join using the WAN pool

Usage

consul.agent.join('127.0.0.2', function(err) {
  if (err) throw err;
});
### consul.agent.forceLeave(options, callback)

Force remove node.

Options

  • node (String): node name to remove

Usage

consul.agent.forceLeave('node2', function(err) {
  if (err) throw err;
});
### consul.agent.check ### consul.agent.check.list(callback)

Returns the checks the agent is managing.

Usage

consul.agent.check.list(function(err, result) {
  if (err) throw err;
});

Result

{
  "example": {
    "Node": "node1",
    "CheckID": "example",
    "Name": "example",
    "Status": "passing",
    "Notes": "This is an example check.",
    "Output": "",
    "ServiceID": "",
    "ServiceName": ""
  }
}
### consul.agent.check.register(options, callback)

Registers a new check.

Options

  • name (String): check name
  • id (String, optional): check ID
  • script (String): path to check script, requires interval
  • internal (String): interval to run check, requires script (ex: 15s)
  • ttl (String): time to live before check must be updated, instead of script and interval (ex: 60s)
  • notes (String, optional): human readable description of check

Usage

var check = {
  name: 'example',
  ttl: '15s',
  notes: 'This is an example check.',
};

consul.agent.check.register(check, function(err) {
  if (err) throw err;
});
### consul.agent.check.deregister(options, callback)

Deregister a check.

Options

  • id (String): check ID

Usage

consul.agent.check.deregister('example', function(err) {
  if (err) throw err;
});
### consul.agent.check.pass(options, callback)

Mark a test as passing.

Options

  • id (String): check ID

Usage

consul.agent.check.pass('example', function(err) {
  if (err) throw err;
});
### consul.agent.check.warn(options, callback)

Mark a test as warning.

Options

  • id (String): check ID

Usage

consul.agent.check.warn('example', function(err) {
  if (err) throw err;
});
### consul.agent.check.fail(options, callback)

Mark a test as critical.

Options

  • id (String): check ID

Usage

consul.agent.check.fail('example', function(err) {
  if (err) throw err;
});
### consul.agent.service ### consul.agent.service.list(callback)

Returns the services the agent is managing.

Usage

consul.agent.service.list(function(err, result) {
  if (err) throw err;
});

Result

{
  "example": {
    "ID": "example",
    "Service": "example",
    "Tags": [
      "dev",
      "web"
    ],
    "Port": 80
  }
}
### consul.agent.service.register(options, callback)

Registers a new service.

Options

  • name (String): service name
  • id (String, optional): service ID
  • tags (String[], optional): service tags
  • check (Object, optional): service check
  • script (String): path to check script, requires interval
  • internal (String): interval to run check, requires script (ex: 15s)
  • ttl (String): time to live before check must be updated, instead of script and interval (ex: 60s)
  • notes (String, optional): human readable description of check

Usage

consul.agent.service.register('example', function(err) {
  if (err) throw err;
});
### consul.agent.service.deregister(options, callback)

Deregister a service.

Options

  • id (String): check ID

Usage

consul.agent.service.deregister('example', function(err) {
  if (err) throw err;
});
### consul.catalog ### consul.catalog.datacenters(callback)

Lists known datacenters.

Usage

consul.catalog.datacenters(function(err, result) {
  if (err) throw err;
});

Result

[
  "dc1"
]
### consul.catalog.node ### consul.catalog.node.list([options], callback)

Lists nodes in a given datacenter.

Options

  • dc (String, optional): datacenter (defaults to local for agent)

Usage

consul.catalog.node.list(function(err, result) {
  if (err) throw err;
});

Result

[
  {
    "Node": "node1",
    "Address": "127.0.0.1"
  }
]
### consul.catalog.node.services(options, callback)

Lists the services provided by a node.

Options

  • node (String): node ID

Usage

consul.catalog.node.services('node1', function(err, result) {
  if (err) throw err;
});

Result

{
  "Node": {
    "Node": "node1",
    "Address": "127.0.0.1"
  },
  "Services": {
    "consul": {
      "ID": "consul",
      "Service": "consul",
      "Tags": null,
      "Port": 8300
    },
    "example": {
      "ID": "example",
      "Service": "example",
      "Tags": [
        "dev",
        "web"
      ],
      "Port": 80
    }
  }
}
### consul.catalog.service ### consul.catalog.service.list([options], callback)

Lists services in a given datacenter.

Options

  • dc (String): datacenter (defaults to local for agent)

Usage

consul.catalog.service.list(function(err, result) {
  if (err) throw err;
});

Result

{
  "consul": [],
  "example": [
    "dev",
    "web"
  ]
}
### consul.catalog.service.nodes(options, callback)

Lists the nodes in a given service.

Options

  • service (String): service ID
  • dc (String, optional): datacenter (defaults to local for agent)
  • tag (String, optional): filter by tag

Usage

consul.catalog.service.nodes('example', function(err, result) {
  if (err) throw err;
});

Result

[
  {
    "Node": "node1",
    "Address": "127.0.0.1",
    "ServiceID": "example",
    "ServiceName": "example",
    "ServiceTags": [
      "dev",
      "web"
    ],
    "ServicePort": 80
  }
]
### consul.health ### consul.health.node(options, callback)

Returns the health info of a node.

Options

  • node (String): node
  • dc (String, optional): datacenter (defaults to local for agent)

Usage

consul.health.node('node1', function(err, result) {
  if (err) throw err;
});

Result

[
  {
    "Node": "node1",
    "CheckID": "serfHealth",
    "Name": "Serf Health Status",
    "Status": "passing",
    "Notes": "",
    "Output": "Agent alive and reachable",
    "ServiceID": "",
    "ServiceName": ""
  },
  {
    "Node": "node1",
    "CheckID": "service:example",
    "Name": "Service 'example' check",
    "Status": "unknown",
    "Notes": "",
    "Output": "",
    "ServiceID": "example",
    "ServiceName": "example"
  }
]
### consul.health.checks(options, callback)

Returns the checks of a service.

Options

  • service (String): service ID
  • dc (String, optional): datacenter (defaults to local for agent)

Usage

consul.health.checks('example', function(err, result) {
  if (err) throw err;
});

Result

[
  {
    "Node": "node1",
    "CheckID": "service:example",
    "Name": "Service 'example' check",
    "Status": "unknown",
    "Notes": "",
    "Output": "",
    "ServiceID": "example",
    "ServiceName": "example"
  }
]
### consul.health.service(options, callback)

Returns the nodes and health info of a service.

Options

  • service (String): service ID
  • dc (String, optional): datacenter (defaults to local for agent)
  • tag (String, optional): filter by tag
  • passing (Boolean, optional): restrict to passing checks

Usage

consul.health.service('example', function(err, result) {
  if (err) throw err;
});

Result

[
  {
    "Node": {
      "Node": "node1",
      "Address": "127.0.0.1"
    },
    "Service": {
      "ID": "example",
      "Service": "example",
      "Tags": null,
      "Port": 0
    },
    "Checks": [
      {
        "Node": "node1",
        "CheckID": "service:example",
        "Name": "Service 'example' check",
        "Status": "unknown",
        "Notes": "",
        "Output": "",
        "ServiceID": "example",
        "ServiceName": "example"
      },
      {
        "Node": "node1",
        "CheckID": "serfHealth",
        "Name": "Serf Health Status",
        "Status": "passing",
        "Notes": "",
        "Output": "Agent alive and reachable",
        "ServiceID": "",
        "ServiceName": ""
      }
    ]
  }
]
### consul.health.state(options, callback)

Returns the checks in a given state.

Options

  • state (String, enum: any, unknown, passing, warning, critical): state
  • dc (String, optional): datacenter (defaults to local for agent)

Usage

consul.health.state('unknown', function(err, result) {
  if (err) throw err;
});

Result

[
  {
    "Node": "node1",
    "CheckID": "service:example",
    "Name": "Service 'example' check",
    "Status": "unknown",
    "Notes": "",
    "Output": "",
    "ServiceID": "example",
    "ServiceName": "example"
  }
]
### consul.kv ### consul.kv.get(options, callback)

Return key/value (kv) pair(s).

Options

  • key (String): path to value
  • dc (String, optional): datacenter (defaults to local for agent)
  • recurse (Boolean, default: false): return all keys with given key prefix
  • index (String, optional): used with ModifyIndex to block and wait for changes
  • wait (String, optional): limit how long to wait for changes (ex: 5m), used with index
  • raw (Boolean, optional): return raw value (can't be used with recursive, implies buffer)
  • buffer (Boolean, default: false): decode value into Buffer instead of String

Usage

consul.kv.get('hello', function(err, result) {
  if (err) throw err;
});

Result

{
  "CreateIndex": 6,
  "ModifyIndex": 6,
  "LockIndex": 0,
  "Key": "hello",
  "Flags": 0,
  "Value": "world"
}
### consul.kv.set(options, callback)

Set key/value (kv) pair.

Options

  • key (String): key
  • value (String|Buffer): value
  • dc (String, optional): datacenter (defaults to local for agent)
  • flags (Number, optional): unsigned integer opaque to user, can be used by application
  • cas (String, optional): use with ModifyIndex to do a check-and-set operation
  • acquire (String, optional): session ID, lock acquisition operation
  • release (String, optional): session ID, lock release operation

Usage

consul.kv.set('hello', 'world', function(err, result) {
  if (err) throw err;
});

Result

true
### consul.kv.del(options, callback)

Delete key/value (kv) pair(s).

Options

  • key (String): key
  • dc (String, optional): datacenter (defaults to local for agent)
  • recurse (Boolean, default: false): delete all keys with given key prefix

Usage

consul.kv.del('hello', function(err) {
  if (err) throw err;
});
### consul.session ### consul.session.create([options], callback)

Create a new session.

Options

  • dc (String, optional): datacenter (defaults to local for agent)
  • lockdelay (String, range: 1s-60s, default: 15s): the time consul prevents locks held by the session from being acquired after a session has been invalidated
  • name (String, optional): human readable name for the session
  • node (String, optional): node with which to associate session (defaults to connected agent)
  • checks (String[], optional): checks to associate with session

Usage

consul.session.create(function(err, result) {
  if (err) throw err;
});

Result

{
  "ID": "a0f5dc05-84c3-5f5a-1d88-05b875e524e1"
}
### consul.session.destroy(options, callback)

Destroy a given session.

Options

  • id (String): session ID
  • dc (String, optional): datacenter (defaults to local for agent)

Usage

consul.session.destroy('a0f5dc05-84c3-5f5a-1d88-05b875e524e1', function(err) {
  if (err) throw err;
});
### consul.session.get(options, callback)

Queries a given session.

Options

  • id (String): session ID
  • dc (String, optional): datacenter (defaults to local for agent)

Usage

consul.session.get('a0f5dc05-84c3-5f5a-1d88-05b875e524e1', function(err, result) {
  if (err) throw err;
});

Result

{
  "CreateIndex": 11,
  "ID": "a0f5dc05-84c3-5f5a-1d88-05b875e524e1",
  "Name": "",
  "Node": "node1",
  "Checks": [
    "serfHealth"
  ],
  "LockDelay": 15000000000
}
### consul.session.node(options, callback)

Lists sessions belonging to a node.

Options

  • node (String): node
  • dc (String, optional): datacenter (defaults to local for agent)

Usage

consul.session.node('node1', function(err, result) {
  if (err) throw err;
});

Result

[
  {
    "CreateIndex": 13,
    "ID": "a0f5dc05-84c3-5f5a-1d88-05b875e524e1",
    "Name": "",
    "Node": "node1",
    "Checks": [
      "serfHealth"
    ],
    "LockDelay": 15000000000
  }
]
### consul.session.list([options], callback)

Lists all the active sessions.

Options

  • dc (String, optional): datacenter (defaults to local for agent)

Usage

consul.session.list(function(err, result) {
  if (err) throw err;
});

Result

[
  {
    "CreateIndex": 15,
    "ID": "a0f5dc05-84c3-5f5a-1d88-05b875e524e1",
    "Name": "",
    "Node": "node1",
    "Checks": [
      "serfHealth"
    ],
    "LockDelay": 15000000000
  }
]
### consul.status ### consul.status.leader(callback)

Returns the current Raft leader.

Usage

consul.status.leader(function(err, result) {
  if (err) throw err;
});

Result

"127.0.0.1:8300"
### consul.status.peers(callback)

Returns the current Raft peer set.

Usage

consul.status.peers(function(err, result) {
  if (err) throw err;
});

Result

[
  "127.0.0.1:8300"
]

Development

  1. Install Consul into your PATH.

  2. Attach required IPs

    $ sudo ifconfig lo0 alias 127.0.0.2 up
    $ sudo ifconfig lo0 alias 127.0.0.3 up
    
  3. Install client dependencies

    $ npm install
    
  4. Run tests

    $ npm test
    

License

This work is licensed under the MIT License (see the LICENSE file).

Keywords

FAQs

Package last updated on 14 Jul 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc