Commit Graph
5664 Commits
Author SHA1 Message Date
Krzesimir Nowak 2a0972653c Rewrite plugin readme
Give a bit more information about how to write a plugin.
2016-08-12 17:15:43 +02:00
Krzesimir Nowak 9e092f1a4a Switch to LatestMap-style node controls
This allows plugins to add controls to nodes that already have some
controls set by other plugin. Previously only the last plugin that
sets the controls in the node would have its controls visible. That
was because of NodeControls' Merge function that actually weren't
merging data from two inputs, but rather returning data that was newer
and discarding the older one.
2016-08-12 17:15:43 +02:00
Krzesimir Nowak 5fdb8a5362 Add a concrete version of LatestMap for node controls
This LatestMap will hold a struct that has more information about the
state of the node control.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak 7f46b90e27 Make LatestMap "generic"
This commit makes the LatestMap type a sort of a base class, that
should not be used directly. This also adds a generator for LatestMap
"concrete" types with a specific data type in the LatestEntry.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak 0116b963e3 Extend the node control rewriting test
Just to make sure that all the node controls are rewritten, even those
that don't have a counterpart in topology controls.
2016-08-12 17:03:42 +02:00
Krzesimir Nowak 1f5dbb776f Add shortcut reports for plugins.
Plugins are queried for reports two times in a second. That's often
enough to get the shortcut reports. The reports are sent together with
the response.
2016-08-12 17:03:42 +02:00
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
Mike Lang db5efc0537 Merge pull request #28 from weaveworks/mike/add-image-tag
Import image-tag script into build tools so it can be shared
2016-08-12 06:36:07 -07:00
Mike Lang 5312c40075 Import image-tag script into build tools so it can be shared
We have divergent versions of this script across repos.
This particular version comes from 6334836@scope.
We in particular want this version's changes to support branches
with a '/' character in them.
2016-08-12 14:30:39 +01:00
Simon Howe 3851d9c662 Right align numbers, left align strings.
ala excel/spreadsheets etc.
2016-08-12 15:18:39 +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