Go to file
Matt Keeler ac78c23021
Implement data filtering of some endpoints (#5579)
Fixes: #4222 

# Data Filtering

This PR will implement filtering for the following endpoints:

## Supported HTTP Endpoints

- `/agent/checks`
- `/agent/services`
- `/catalog/nodes`
- `/catalog/service/:service`
- `/catalog/connect/:service`
- `/catalog/node/:node`
- `/health/node/:node`
- `/health/checks/:service`
- `/health/service/:service`
- `/health/connect/:service`
- `/health/state/:state`
- `/internal/ui/nodes`
- `/internal/ui/services`

More can be added going forward and any endpoint which is used to list some data is a good candidate.

## Usage

When using the HTTP API a `filter` query parameter can be used to pass a filter expression to Consul. Filter Expressions take the general form of:

```
<selector> == <value>
<selector> != <value>
<value> in <selector>
<value> not in <selector>
<selector> contains <value>
<selector> not contains <value>
<selector> is empty
<selector> is not empty
not <other expression>
<expression 1> and <expression 2>
<expression 1> or <expression 2>
```

Normal boolean logic and precedence is supported. All of the actual filtering and evaluation logic is coming from the [go-bexpr](https://github.com/hashicorp/go-bexpr) library

## Other changes

Adding the `Internal.ServiceDump` RPC endpoint. This will allow the UI to filter services better.
2019-04-16 12:00:15 -04:00
.circleci checkout code outside GOPATH 2019-04-10 12:56:55 -04:00
.github remove remaining references to govendor and vendorfmt (#5587) 2019-04-01 09:55:48 -05:00
acl Handle rules translation when coming from the JSON compat HCL (#5662) 2019-04-15 14:34:36 -04:00
agent Implement data filtering of some endpoints (#5579) 2019-04-16 12:00:15 -04:00
api Implement data filtering of some endpoints (#5579) 2019-04-16 12:00:15 -04:00
bench Gets benchmarks running again and does a rough pass for 0.7.1. 2016-11-29 13:02:26 -08:00
build-support Build System Fixes for Go Modules (#5655) 2019-04-12 15:17:13 -04:00
command Implement data filtering of some endpoints (#5579) 2019-04-16 12:00:15 -04:00
connect Move internal/ to sdk/ (#5568) 2019-03-27 08:54:56 -04:00
demo demo: Added udp port forwarding 2018-05-30 13:56:56 +09:00
ipaddr New config parser, HCL support, multiple bind addrs (#3480) 2017-09-25 11:40:42 -07:00
lib Convert to Go Modules (#5517) 2019-03-26 17:04:58 -04:00
logger Enforce log level filter for log files 2019-04-11 10:04:28 -06:00
sdk Move internal/ to sdk/ (#5568) 2019-03-27 08:54:56 -04:00
sentinel Renames stubs to be more consistent. 2017-11-29 18:36:52 -08:00
service_os Changes made : 2018-06-28 21:18:14 -04:00
snapshot Move internal/ to sdk/ (#5568) 2019-03-27 08:54:56 -04:00
terraform terraform: remove modules in repo (#5085) 2019-04-04 16:31:43 -07:00
test snapshot: read meta.json correctly. (#5193) 2019-01-08 17:06:28 +01:00
testrpc Move internal/ to sdk/ (#5568) 2019-03-27 08:54:56 -04:00
tlsutil agent: enable reloading of tls config (#5419) 2019-03-13 10:29:06 +01:00
types Removes remoteConsuls in favor of the new router. 2017-03-16 16:42:19 -07:00
ui-v2 ui: Custom version of ember-block-slots compatible with ember 3 (#5245) 2019-01-30 10:56:04 +00:00
vendor Implement data filtering of some endpoints (#5579) 2019-04-16 12:00:15 -04:00
version Putting source back into Dev Mode 2019-03-21 16:34:48 +01:00
watch fix typos reported by golangci-lint:misspell (#5434) 2019-03-06 11:13:28 -06:00
website Implement data filtering of some endpoints (#5579) 2019-04-16 12:00:15 -04:00
.dockerignore Update the scripting 2018-06-14 21:42:47 -04:00
.gitattributes Initial commit 2013-11-04 14:15:27 -08:00
.gitignore Remove old UI, option to use it, and its build processes 2019-04-12 09:02:27 -06:00
.travis.yml Convert to Go Modules (#5517) 2019-03-26 17:04:58 -04:00
CHANGELOG.md Update CHANGELOG.md 2019-04-15 14:35:47 -04:00
GNUmakefile Build System Fixes for Go Modules (#5655) 2019-04-12 15:17:13 -04:00
INTERNALS.md docs: correct link to top level agent package (#4750) 2018-10-04 09:15:55 -05:00
LICENSE Initial commit 2013-11-04 14:15:27 -08:00
NOTICE.md add copyright notice file 2018-07-09 10:58:26 -07:00
README.md Contribution guide (#4704) 2018-10-05 09:06:40 -07:00
Vagrantfile Adds a basic Linux Vagrant setup, stolen from Nomad. 2017-10-06 08:10:12 -07:00
go.mod Implement data filtering of some endpoints (#5579) 2019-04-16 12:00:15 -04:00
go.sum Implement data filtering of some endpoints (#5579) 2019-04-16 12:00:15 -04:00
main.go Added Side Effect import for Windows Service 2018-06-18 14:55:11 -04:00
main_test.go Adding basic CLI infrastructure 2013-12-19 11:22:08 -08:00

README.md

Consul Build Status Join the chat at https://gitter.im/hashicorp-consul/Lobby

Consul is a tool for service discovery and configuration. Consul is distributed, highly available, and extremely scalable.

Consul provides several key features:

  • Service Discovery - Consul makes it simple for services to register themselves and to discover other services via a DNS or HTTP interface. External services such as SaaS providers can be registered as well.

  • Health Checking - Health Checking enables Consul to quickly alert operators about any issues in a cluster. The integration with service discovery prevents routing traffic to unhealthy hosts and enables service level circuit breakers.

  • Key/Value Storage - A flexible key/value store enables storing dynamic configuration, feature flagging, coordination, leader election and more. The simple HTTP API makes it easy to use anywhere.

  • Multi-Datacenter - Consul is built to be datacenter aware, and can support any number of regions without complex configuration.

  • Service Segmentation - Consul Connect enables secure service-to-service communication with automatic TLS encryption and identity-based authorization.

Consul runs on Linux, Mac OS X, FreeBSD, Solaris, and Windows. A commercial version called Consul Enterprise is also available.

Please note: We take Consul's security and our users' trust very seriously. If you believe you have found a security issue in Consul, please responsibly disclose by contacting us at security@hashicorp.com.

Quick Start

An extensive quick start is viewable on the Consul website:

https://www.consul.io/intro/getting-started/install.html

Documentation

Full, comprehensive documentation is viewable on the Consul website:

https://www.consul.io/docs

Contributing

Thank you for your interest in contributing! Please refer to CONTRIBUTING.md for guidance.