druid/web-console
Suneet Saldanha 15a0b4ffe2
Filter http requests by http method (#10085)
* Filter http requests by http method

Add a config that allows a user which http methods to allow against their
Druid server.

Druid will only accept http requests with the method: GET, PUT, POST, DELETE
and OPTIONS.
If a Druid admin wants to allow other methods, they can do so by using the
ServerConfig#allowedHttpMethods config.

If a Druid user would like to disallow OPTIONS, this can be done by changing
the AuthConfig#allowUnauthenticatedHttpOptions config

* Exclude OPTIONS from always supported HTTP methods

Add HEAD as an allowed method for web console e2e tests

* fix docs

* fix security IT

* Actually fix the web console e2e tests

* Ignore icode coverage for nitialization classes

* code review
2020-06-29 16:59:31 -07:00
..
assets Add Azure ingestion flow to web console (#9437) 2020-03-03 11:06:00 -08:00
e2e-tests add flag to flattenSpec to keep null columns (#9814) 2020-05-08 21:53:39 -07:00
lib add joins to column tree menu (#9705) 2020-04-16 17:51:59 -07:00
script Filter http requests by http method (#10085) 2020-06-29 16:59:31 -07:00
src Segment timeline doesn't show results older than 3 months (#9956) 2020-06-28 01:45:05 -07:00
.gitignore Web console: Better build experience (#8389) 2019-08-24 11:35:30 -07:00
.stylelintrc.json Add scss linter in web console (#7365) 2019-03-28 17:32:01 -07:00
README.md Console E2E test docs (#9864) 2020-05-13 16:41:04 -07:00
babel.config.js Web console: work in IE11 (#8804) 2019-10-31 21:03:05 -07:00
console-config.js Web console: Save query context also (#8395) 2019-08-25 16:56:27 -07:00
favicon.png [ImgBot] Optimize images (#7873) 2019-06-24 21:27:48 -07:00
jest.common.config.js Web console basic end-to-end-test (#9595) 2020-04-09 12:38:09 -07:00
jest.e2e.config.js Web console basic end-to-end-test (#9595) 2020-04-09 12:38:09 -07:00
jest.unit.config.js Web console basic end-to-end-test (#9595) 2020-04-09 12:38:09 -07:00
package-lock.json Fix web console query view crashing on simple query (#9897) 2020-05-21 12:57:07 -07:00
package.json Fix web console query view crashing on simple query (#9897) 2020-05-21 12:57:07 -07:00
pom.xml Bump up development version to 0.19.0-SNAPSHOT (#9586) 2020-03-30 16:24:04 -07:00
sasslint.json Web-console: add Supervisor statistics table and show json query manager (#8176) 2019-07-30 12:53:46 -07:00
tsconfig.json Web console basic end-to-end-test (#9595) 2020-04-09 12:38:09 -07:00
tslint.json Web console: Improve data loader styling, enforce stricter TS types (#8001) 2019-06-30 19:33:16 -07:00
unified-console.html Web console: Update versions and dependencies (#8751) 2019-10-25 17:53:06 -07:00
webpack.config.js Web console: work in IE11 (#8804) 2019-10-31 21:03:05 -07:00

README.md

Apache Druid web console

This is the unified Druid web console that servers as a data management layer for Druid.

How to watch and run for development

  1. You need to be withing the web-console directory
  2. Install the modules with npm install
  3. Run npm start will start in development mode and will proxy druid requests to localhost:8888

Note: you can provide an environment variable to proxy to a different Druid host like so: druid_host=1.2.3.4:8888 npm start Note: you can provide an environment variable use webpack-bundle-analyzer as a plugin in the build script or like so: BUNDLE_ANALYZER_PLUGIN='TRUE' npm start

To try the console in (say) coordinator mode you could run it as such:

druid_host=localhost:8081 npm start

Description of the directory structure

A lot of the directory structure was created to preserve the existing console structure as much as possible.

As part of this repo:

  • assets/ - The images (and other assets) used within the console
  • e2e-tests/ - End-to-end tests for the console
  • lib/ - A place where some overrides to the react-table stylus files live, this is outside of the normal SCSS build system.
  • public/ - The compiled destination of the file powering this console
  • script/ - Some helper bash scripts for running this console
  • src/ - This directory (together with lib) constitutes all the source code for this console

Generated/copied dynamically

  • index.html - Entry file for the coordinator console
  • pages/ - The files for the older coordinator console
  • coordinator-console/ - Files for the coordinator console

List of non SQL data reading APIs used

GET /status
GET /druid/indexer/v1/supervisor?full
POST /druid/indexer/v1/worker
GET /druid/indexer/v1/workers
GET /druid/indexer/v1/tasks
GET /druid/coordinator/v1/loadqueue?simple
GET /druid/coordinator/v1/config
GET /druid/coordinator/v1/metadata/datasources?includeUnused
GET /druid/coordinator/v1/rules
GET /druid/coordinator/v1/config/compaction
GET /druid/coordinator/v1/tiers

Updating the list of license files

From the web-console directory run script/licenses

Running End-to-End Tests

From the web-console directory:

  1. Build druid distribution: script/druid build
  2. Start druid cluster: script/druid start
  3. Run end-to-end tests: npm run test-e2e
  4. Stop druid cluster: script/druid stop

Debugging

Screenshots

e2e-tests/util/debug.ts:saveScreenshotIfError() is used to save a screenshot of the web console when the test fails. For example, if e2e-tests/tutotrial-batch.spec.ts fails, it will create load-data-from-local-disk-error-screenshot.png.

Disabling Headless Mode

Disabling headless mode while running the tests can be helpful. One way of doing this is by using e2e-tests/util/playwright:createBrowserDebug(). For example, the test can be modified to change

import { createBrowserNormal as createBrowser } from './util/playwright'

to

import { createBrowserDebug as createBrowser } from './util/playwright'`