Currently, in the new monitor for 2.0 (after
ACCUMULO-3005), some 3rd party web resources are accessed via an external CDN. This is suitable in many cases, but could be problematic for client browsers not currently connected to the internet or with a cached copy of the resources from the CDN.
These resources include bootstrap and jquery. Flot is also a 3rd party resource, but is currently bundled with Accumulo and served by the monitor.
The location of these resources should be made configurable, so that they can be bundled with, and served by, the Accumulo monitor instead of a internet-based CDN. Making the locations configurable also makes it possible for users to update, if there's a bug in a particular version of jquery that the administrator wishes to avoid, or they want to use a different bootstrap theme, for example.
Any new configuration option added to support making these configurable should be capable of supporting an arbitrary number of script and stylesheet resources, and possibly other resource types, as well as any accompanying integrity/crossorigin attributes for CDN access (see server/monitor/src/main/resources/templates/default.ftl for current values).
Also, I think the default value should be to point to the CDN, and not the locally bundled and served resources, so that the browser can take advantage of any caching for these commonly used resources. This would allow us to achieve
ACCUMULO-2983 by stopping bundling these third party resources, but still supporting bundling, if needed.
To complete this issue, we basically need 2 things:
- Ensure monitor serves (to a predictable location) whatever arbitrary static resources it finds on the class path (so users can bundle their own static resources), and
- Ensure resources are configurable to point to the served versions or versions in a CDN.