Commit Graph

2557 Commits

Author SHA1 Message Date
Krzesimir Nowak
cecf70ecd5 Marshal structs in the plugins registry tests
This is better than writing JSON strings by hand, which is
error-prone.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
f17a995892 Marshal structs in the iowait example plugin
This is better than writing JSON strings by hand, which is
error-prone.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
69368af796 Make the iowait example plugin a controller too
It exposes a button that allows switching between showing an iowait
statistics and an idle statistics. When the button is pressed it
should be replaced with other button. The button is shown in the host
node.

This is a rather nasty case as it shows several problems:

- Button control races
  - The way the NodeControl currently works creates races between
    plugins adding buttons to the same node. This is because
    NodeControls are not really merged, but rather one of the two are
    chosen based on a NodeControls' timestamps, so the older one is
    thrown away entirely. In the end GUI can switch randomly between
    showing controls from one plugin or from another.

- Showing outdated statistics
  - When pressing the button to switch to show the other statistics,
    the old ones are still shown for several seconds.

- Slowness of the updates in GUI
  - Pressing the button yields no immediate reaction. Changes happen
    after several seconds. Probably related to the previous point.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
27e0550bd5 Run docker with sudo if necessary in iowait makefile
The solution is taken from the toplevel Makefile.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
0e06423a37 Forward control requests to plugins
Thanks to that, plugins can react to requests from controls they
exposed.

To make it work, plugins registry modifies each plugin's report by
prepending the plugin ID to the control name the plugin has exposed
before sending it to the app. Then the registry installs the control
request handler for this faked control name, which forwards the
request to the correct plugin.

This adds a new API endpoint to plugins next to "/report" - a
"/control" entry. The body of the request is the JSON-encoded
xfer.Request instance.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
41193b428e Make control handlers registry an object and extend its functionality
It is not a singleton anymore. Instead it is an object with a registry
backend. The default registry backend is provided, which is equivalent
to what used to be before. Custom backend can be provided for testing
purposes.

The registry also supports batch operations to remove and add handlers
as an atomic step.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
c6b5d98699 Test the case when a plugin reports more than one plugin 2016-08-12 17:03:42 +02:00
Krzesimir Nowak
993eebeea9 Remove impossible case of an empty plugin ID
Plugin ID must be non-empty when the plugin is created and the
followup reports cannot change it.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
9d48fdc32c Restrict the set of allowed characters in plugin IDs
We will want to put plugin id in a control id, which is sent to an app
and then to GUI. When we get a control request from GUI, we will want
to extract the plugin ID from the control name. To do it unambiguously
we need some separator made of chars that are not allowed in a plugin
name. This is to avoid the situation when there are two plugins:
"Plugin" and "PluginFoo". "Plugin" exposes a control named
"FooControl" and "PluginFoo" exposes a control named "Control". Faking
the control names which will be sent to the app would result in two
"PluginFooControl".

One possible option for plugin ID and control name separator would be
"/", but that won't work, since the request sent from GUI to the app
to <probe>/<node>/<control> would actually be
<probe>/<node>/<plugin>/<control> and as such wouldn't match the URL
template in RegisterControlRoutes().
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
c797e7ab0e Use consistent plugin ID in the http-requests plugin
The socket has the "http_requests.sock" filename, so ID should be
"http_requests", not "http-requests".
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
ccd26fe69d Ban the possibility of changing plugin's ID
Changing plugin's ID only complicates control handling in plugins so
let's ban it.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
1f222b9156 Make dumper a bit more verbose
So it displays differences behind interface that would otherwise go
unnoticed (like string vs []byte).
2016-08-12 17:03:42 +02:00
Krzesimir Nowak
0f1cb82084 Allow testing only a subset of directories
This can be done by calling TESTDIRS="./report ./probe" make tests
2016-08-12 17:03:42 +02:00
Matthias Radestock
6334836f69 Merge pull request #1768 from weaveworks/1202-silence-abnormal-close
silence abnormal websocket close

Fixes #1202.
2016-08-12 13:53:51 +01:00
Matthias Radestock
21c188d600 Merge pull request #1739 from weaveworks/1730-no-node-copy
Remove and optimize more Copy()s
2016-08-12 12:30:54 +01:00
Alfonso Acosta
cfb686b546 Merge pull request #1774 from weaveworks/1759-remove-k8s-id-col
Remove kubernetes_id column from the grid view.
2016-08-11 17:43:21 +01:00
Alfonso Acosta
22434616fa Merge pull request #1782 from weaveworks/1779-elide-service-token
Elide service-token when logging commandline arguments
2016-08-11 17:12:27 +01:00
Alfonso Acosta
04349cc86d Merge pull request #1783 from weaveworks/1777-do-not-bitch-on-stop
Don't complain when stopping Scope if it wasn't running
2016-08-11 16:57:05 +01:00
Alfonso Acosta
0c3235ae3d Review feedback 2016-08-11 15:41:07 +00:00
Alfonso Acosta
0a1232ec3c Don't complain when stopping Scope if it wasn't running 2016-08-11 15:21:06 +00:00
Alfonso Acosta
276ffa338e Elide service-token when logging commandline arguments 2016-08-11 15:07:08 +00:00
Alfonso Acosta
77bb186039 Review feedback 2016-08-10 16:19:58 +00:00
Alfonso Acosta
166bdf13f3 Remove redundant kubernetes ID 2016-08-10 16:01:28 +00:00
Simon
1d4904d56f Merge pull request #1775 from weaveworks/1749-filter-by-relatives
Adds support for filtering graph/table by relatives
2016-08-10 16:01:25 +02:00
Alfonso Acosta
9320b10a2e Merge pull request #1780 from weaveworks/1733-scope-loopback-connections
Handle loopback addresses correctly when tracking connections
2016-08-10 14:52:44 +01:00
Simon
718bf5b3a0 Merge pull request #1773 from weaveworks/1692-scale-node-labels-with-nodes
Scale node labels with the node's size.
2016-08-10 14:32:45 +02:00
Simon Howe
5cf8ee2a6b Move chrome-css-fix out of js into css w/ comment 2016-08-10 14:10:10 +02:00
Alfonso Acosta
94eb7454ff Do not attribute connections to containers based on loopback addresses 2016-08-10 10:56:37 +00:00
Alfonso Acosta
3892273096 Append namespace to endpoint scope for loopback connections 2016-08-10 10:43:04 +00:00
Mike Lang
d0f0e8d92e Merge pull request #1776 from weaveworks/mike/launcher/fix-whitespace
launcher script: Fix inconsistent whitespace
2016-08-09 12:18:49 -07:00
Simon Howe
4d5d0d5dc2 Fixes origin of node-details-panel expanding animation 2016-08-09 20:16:23 +02:00
Simon Howe
8f4b3ab97d Fixes animation of node labels on focus.
Was a bit janky there for a bit.
2016-08-09 20:00:39 +02:00
Mike Lang
7aec1e172d launcher script: Fix inconsistent whitespace 2016-08-09 09:57:12 -07:00
Simon Howe
fc2fcfb298 Adds support for filtering node/table by relatives
Now that they are available in the summary data.
2016-08-09 18:20:43 +02:00
Alfonso Acosta
b8c99ed7cc Revert "Cache generated ids to relieve pressure on the GC"
It wasn't working as noticed by @rade (note the err != nil) and was complicating
the code.

This reverts commit 2f760f2f33.
2016-08-09 14:59:28 +00:00
Simon Howe
564c64ec21 Fixes truncating of labels 2016-08-09 16:07:25 +02:00
Simon Howe
5846222fe1 Scale node labels with the node's size.
- Within certain bounds. Still have min-label size, mainly effects nodes
  that get really big.
- Set a max size on nodes too, really big ones lose their border.
2016-08-09 14:57:13 +02:00
Alfonso Acosta
d06547e596 Merge pull request #1770 from weaveworks/1750-extend-k8s-pause-containers
Identify kubernetes pause containers more broadly
2016-08-09 11:26:07 +01:00
Paul Bellamy
c40a1b0c3d Merge pull request #1751 from kinvolk/krnowak/lint
Lint fixes
2016-08-09 09:45:10 +01:00
David
a11ddfbaa6 Merge pull request #1766 from weaveworks/1715-search-label
Fixes search icon position on chrome
2016-08-08 18:39:27 +02:00
Alfonso Acosta
b64686ffc3 Identify kubernetes pause containers more broadly 2016-08-08 14:16:07 +00:00
Matthias Radestock
7480654aaf don't complain about closed websockets in pipe connections 2016-08-06 00:06:34 +01:00
Matthias Radestock
c3315f9c99 reduce log level for absent pipe
since we can get this when a pipe has been closed normally
2016-08-05 23:47:35 +01:00
Matthias Radestock
df467d80de log error as error 2016-08-05 23:37:33 +01:00
Matthias Radestock
6d9194cfaf treat EOF and ErrClosedPipe in websocket connections as uninteresting
both occur in various states of disconnectedness
2016-08-05 23:32:34 +01:00
Matthias Radestock
4d746a6cf4 log container id in attach/exec errors 2016-08-05 19:23:54 +01:00
Matthias Radestock
3af45583e5 don't log attach/exec close
since we don't log the start either
2016-08-05 19:19:09 +01:00
Matthias Radestock
190e840484 reduce some pipe log noise
NB: the m/t version remains unchanged since it is generally a lot
noisier
2016-08-05 19:16:15 +01:00
Matthias Radestock
25011f20e0 silence websocket.CloseAbnormalClose
We get this when windows are closed, so really should treat it just
like any other close.
2016-08-05 19:07:03 +01:00
David Kaltschmidt
4c5ac4fc33 Fixes search icon position on chrome
* simplify search icon and label markup

Fixes #1715
2016-08-05 19:29:59 +02:00