If users have hosts with tags specifying things like fstype=ext3, they
want to be able to filter by that. To facilitate this, we have to
perform additional parsing of the series that we get back from the
initial `SHOW SERIES` that we issue to figure out the apps for hosts.
This is parsed out into an object with a shape like:
```
{
"measurement" : "foo",
"tags" : {
"host" : "skeletor",
"cpu" : "cpu",
"fstype" : "overlay"
}
}
```
The host is extracted and used for looking up apps as before, however
now all tags are also assigned to that host as well. These are then
filtered against in SearchBar.
Performance is less than ideal with large numbers of hosts, causing page
lockup for about 1s each type a character is typed. The `render`
function of HostTable.js is approximately 300ms in some profiles that
I've taken, which seems very high. Upon further investigation, it seems
like `filterHosts` only takes approx 20ms in profiles taken, so the
issue appears to be the render path and not related to this patch.
Previously, the calculation of cells which are in autoflow layouts was
incorrect since it needed to be multiplied by the cellHeight. To have
this, we also need to have a fixed cellHeight for these cells. This
overrides any cell width and height set on autoflowed layouts and forces
it to 4x4
This divides templates into two classes: autoflow and static. This is
controlled by a boolean "autoflow" property on templates. Any autoflow
templates that will be rendered for a host, have their cells arranged in
a left-to-right, top-to-bottom fashion.
Static templates, are assumed to have precise positioning information
for their graphs. The only adjustment made to them will be a translation
of their Y coords so they do not overlap other layouts.
The autoflow templates, after processing, become a static layout as
defined above and are positioned accordingly.
* Automates the release process with Circle and Docker.
* Adds a `--no-build` option to build script to not generate a build
(useful for _just_ running tests).
* Build script now calls 'make test' directly (instead of running its
own tests).