From d677c83ce43d4a31e1c08d68c2aa28ff13bdc753 Mon Sep 17 00:00:00 2001 From: Vadim Ogievetsky Date: Wed, 26 Jun 2019 15:50:48 -0700 Subject: [PATCH] Web console: Power up the data loader init step (#7947) * Power up the data loader init step * update snapshot * normalize spec * allow deselect * added HDFS tile * update border style * text updates * goodies * new reset icon --- web-console/assets/druid.png | Bin 0 -> 15699 bytes web-console/assets/example.png | Bin 0 -> 8873 bytes web-console/assets/hadoop.png | Bin 0 -> 47082 bytes web-console/assets/http.png | Bin 0 -> 10407 bytes web-console/assets/kafka.png | Bin 0 -> 18022 bytes web-console/assets/kinesis.png | Bin 0 -> 15631 bytes web-console/assets/local.png | Bin 0 -> 9211 bytes web-console/assets/other.png | Bin 0 -> 9549 bytes .../assets/static-google-blobstore.png | Bin 0 -> 19344 bytes web-console/assets/static-s3.png | Bin 0 -> 16541 bytes web-console/package-lock.json | 12 +- web-console/package.json | 3 +- web-console/script/cp-to | 1 + web-console/script/create-sql-function-doc.js | 16 +- web-console/src/utils/ingestion-spec.tsx | 132 +++++-- .../load-data-view.spec.tsx.snap | 184 ++++++++-- .../views/load-data-view/load-data-view.scss | 43 ++- .../views/load-data-view/load-data-view.tsx | 345 +++++++++++++----- 18 files changed, 563 insertions(+), 173 deletions(-) create mode 100644 web-console/assets/druid.png create mode 100644 web-console/assets/example.png create mode 100644 web-console/assets/hadoop.png create mode 100644 web-console/assets/http.png create mode 100644 web-console/assets/kafka.png create mode 100644 web-console/assets/kinesis.png create mode 100644 web-console/assets/local.png create mode 100644 web-console/assets/other.png create mode 100644 web-console/assets/static-google-blobstore.png create mode 100644 web-console/assets/static-s3.png diff --git a/web-console/assets/druid.png b/web-console/assets/druid.png new file mode 100644 index 0000000000000000000000000000000000000000..b494638ee314b617022c4ec9c0ebfb7976b932bb GIT binary patch literal 15699 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 F{{v#krr!Vn literal 0 HcmV?d00001 diff --git a/web-console/assets/example.png b/web-console/assets/example.png new file mode 100644 index 0000000000000000000000000000000000000000..faf96784f2a91e98c487d3a9a8449faecc7c5301 GIT binary patch literal 8873 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 literal 0 HcmV?d00001 diff --git a/web-console/assets/hadoop.png b/web-console/assets/hadoop.png new file mode 100644 index 0000000000000000000000000000000000000000..9b69d38c5d429302ec0e4c0a3701da9797007f2b GIT binary patch literal 47082 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 literal 0 HcmV?d00001 diff --git a/web-console/assets/http.png b/web-console/assets/http.png new file mode 100644 index 0000000000000000000000000000000000000000..ee041ba8785cab09cdcbad8a87680c2044d4860d GIT binary patch literal 10407 zcmeHt_g9l$)2;$iY!DHUULr+$?}nBHDM1KbBs7s4kWQ$N3L2>*9i$gQqzQs_g@A+( z(z_6df{1hift-l%`wtYH#(eq)ZV*3lHjvnc%e ze6m@-(U1^BK6NM0fOFZ+5~F;h6o6Bpo#71c73_PY)Qy7lQD65BXB7<9#W#wW$@1X{ zYQ0V{gug`b0zm2-hoO;%dfpMKG$`6UK6rCJK=EtS0%9FM7rYM&CgD{oe@!`kjE7}j zr=X%`;8FkQ-1&bW{x!nCp73uJ{BK0TC%y~v67OqVj;8C7Gp%21CsNMxk7&WC)&9)3 z@lOAR+-QwhoxfYzwfaPrw{WcOf0n6o8P79D7))N#JzG2yvwbqOc>+{9JGY@1|Ild) z{-owV%V#Idk{aI+P7^rKQrmYhSqh{7(`$c{-Q%!JX*|2Zr0%#gTwgx26uKr2xl3cRzZ3Bo+VkL?`Or%} zC!Yz)1(1&&YT>7wYy24B_5BTGw(P6uk<1|?p{EHrf1}zeeB>3~|Mj;|wG>~zToeS) ziZ0>MjyX4R$w~E)S>C0W=z8$1v?i~5E>Bg1;ey2;IWYE-?{>0O!rYt1LV21crb7bo zW6eNG#m5WLF*z;b>%B`Sx|lZ;Vm8m}>tka>f-&>!^8005rzPmRXddkASPRx?XSLtPEyzK8ukA8pMDu9lLP@Mm&ClO~p#vEQh-)`8KJ5U%ImPG% zu?o^DDRqm`9LGpCD5j|K=O@z7ODT!K4N(+}{jtfIT=IM~4bL$f)P41LMG&E_WACrA7;}8V|Pv z0M>V}K6~X9Bxk12z*c~4UY-r0fvSouVPoUvkI!jgefGtE`u8W=A3BJ@5AAC$Q)*T+ zyXxi(+j0BDt4U}pliINdQWPSQ9(9n=Ux^jHy1b8Dah7*{TGy=cR&�mvDV55-pq@ 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 Tb{YfT<{?l~crITlYZm-}@&$)E literal 0 HcmV?d00001 diff --git a/web-console/assets/other.png b/web-console/assets/other.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b977d1168415b61cc346e1fae34226379c34eb GIT binary patch literal 9549 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 literal 0 HcmV?d00001 diff --git a/web-console/assets/static-google-blobstore.png b/web-console/assets/static-google-blobstore.png new file mode 100644 index 0000000000000000000000000000000000000000..960cbcfd255f9516a65528d901d1d1b05c2fa335 GIT binary patch literal 19344 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 A^#A|> literal 0 HcmV?d00001 diff --git a/web-console/package-lock.json b/web-console/package-lock.json index fde730535dc..7f7c8046be2 100644 --- a/web-console/package-lock.json +++ b/web-console/package-lock.json @@ -229,9 +229,9 @@ } }, "@blueprintjs/core": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.15.1.tgz", - "integrity": "sha512-M8ltbqqlMZuZ6SEuqo/3Fr59ZcUfd8Er7ocbm7EACVfRW7dRhOCd/TKkf2kfICNtCDwznwXk0iAePLXZhUGtQg==", + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@blueprintjs/core/-/core-3.16.2.tgz", + "integrity": "sha512-u+mSITWaNDwbdaPrbKx9XyxGsF4725SCAidWjd367ysX7AxCo4PK4SsFQVfXNylXpVWHQhJZekuo7+hdksc9lA==", "requires": { "@blueprintjs/icons": "^3.8.0", "@types/dom4": "^2.0.1", @@ -246,9 +246,9 @@ } }, "@blueprintjs/icons": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.8.0.tgz", - "integrity": "sha512-yHaRQ3vfV9Gf3foZ4ONtxddz+u5ufkHqHj8Ia5VhPbFgG4el+cPdmsGGIIM72rgKS1KQa5Ay+ggjpByUlXvrKg==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@blueprintjs/icons/-/icons-3.9.0.tgz", + "integrity": "sha512-kq1Bh6PtOF4PcuxcDme8NmnSlkfO0IV89FriZGo6zSA1+OOzSwzvoKqa6S7vJe8xCPPLO5r7lE9AjeOuGeH97g==", "requires": { "classnames": "^2.2", "tslib": "^1.9.0" diff --git a/web-console/package.json b/web-console/package.json index 3e07b65a7ce..a4369d67e2c 100644 --- a/web-console/package.json +++ b/web-console/package.json @@ -50,7 +50,8 @@ "stylelint": "stylelint 'src/**/*.scss'" }, "dependencies": { - "@blueprintjs/core": "^3.15.1", + "@blueprintjs/core": "^3.16.2", + "@blueprintjs/icons": "^3.9.0", "@types/memoize-one": "^4.1.1", "axios": "^0.19.0", "brace": "^0.11.1", diff --git a/web-console/script/cp-to b/web-console/script/cp-to index b8ad2ebeb4d..3943a10daf4 100755 --- a/web-console/script/cp-to +++ b/web-console/script/cp-to @@ -25,3 +25,4 @@ cp -r coordinator-console "$1" cp -r old-console "$1" cp -r pages "$1" cp -r public "$1" +cp -r assets "$1" diff --git a/web-console/script/create-sql-function-doc.js b/web-console/script/create-sql-function-doc.js index 51cac06655e..f8dd6380a38 100755 --- a/web-console/script/create-sql-function-doc.js +++ b/web-console/script/create-sql-function-doc.js @@ -34,27 +34,31 @@ const readDoc = async () => { if (functionMatch) { functionDocs.push({ syntax: functionMatch[1], - description: functionMatch[2] - }) + description: functionMatch[2], + }); } const dataTypeMatch = line.match(/^\|([A-Z]+)\|([A-Z]+)\|(.*)\|(.*)\|$/); if (dataTypeMatch) { dataTypeDocs.push({ syntax: dataTypeMatch[1], - description: dataTypeMatch[4] || `Druid runtime type: ${dataTypeMatch[2]}` - }) + description: dataTypeMatch[4] || `Druid runtime type: ${dataTypeMatch[2]}`, + }); } } // Make sure there are at least 10 functions for sanity if (functionDocs.length < 10) { - throw new Error(`Did not find enough function entries did the structure of '${readfile}' change? (found ${functionDocs.length})`); + throw new Error( + `Did not find enough function entries did the structure of '${readfile}' change? (found ${functionDocs.length})`, + ); } // Make sure there are at least 5 data types for sanity if (dataTypeDocs.length < 10) { - throw new Error(`Did not find enough data type entries did the structure of '${readfile}' change? (found ${dataTypeDocs.length})`); + throw new Error( + `Did not find enough data type entries did the structure of '${readfile}' change? (found ${dataTypeDocs.length})`, + ); } const content = `/* diff --git a/web-console/src/utils/ingestion-spec.tsx b/web-console/src/utils/ingestion-spec.tsx index 84fa63c40b1..dc115cf4424 100644 --- a/web-console/src/utils/ingestion-spec.tsx +++ b/web-console/src/utils/ingestion-spec.tsx @@ -37,6 +37,10 @@ export interface IngestionSpec { tuningConfig?: TuningConfig; } +export function isEmptyIngestionSpec(spec: IngestionSpec) { + return Object.keys(spec).length === 0; +} + export type IngestionType = 'kafka' | 'kinesis' | 'index_hadoop' | 'index' | 'index_parallel'; // A combination of IngestionType and firehose @@ -48,6 +52,9 @@ export type IngestionComboType = | 'index:static-s3' | 'index:static-google-blobstore'; +// Some extra values that can be selected in the initial screen +export type IngestionComboTypeWithExtra = IngestionComboType | 'hadoop' | 'example' | 'other'; + function ingestionTypeToIoAndTuningConfigType(ingestionType: IngestionType): string { switch (ingestionType) { case 'kafka': @@ -87,6 +94,65 @@ export function getIngestionComboType(spec: IngestionSpec): IngestionComboType | return null; } +export function getIngestionTitle(ingestionType: IngestionComboTypeWithExtra): string { + switch (ingestionType) { + case 'index:local': + return 'Local disk'; + + case 'index:http': + return 'HTTP(s)'; + + case 'index:static-s3': + return 'Amazon S3'; + + case 'index:static-google-blobstore': + return 'Google Cloud Storage'; + + case 'kafka': + return 'Apache Kafka'; + + case 'kinesis': + return 'Amazon Kinesis'; + + case 'hadoop': + return 'HDFS'; + + case 'example': + return 'Example data'; + + case 'other': + return 'Other'; + + default: + return 'Unknown ingestion'; + } +} + +export function getIngestionImage(ingestionType: IngestionComboTypeWithExtra): string { + const parts = ingestionType.split(':'); + if (parts.length === 2) return parts[1]; + return ingestionType; +} + +export function getRequiredModule(ingestionType: IngestionComboTypeWithExtra): string | null { + switch (ingestionType) { + case 'index:static-s3': + return 'druid-s3-extensions'; + + case 'index:static-google-blobstore': + return 'druid-google-extensions'; + + case 'kafka': + return 'druid-kafka-indexing-service'; + + case 'kinesis': + return 'druid-kinesis-indexing-service'; + + default: + return null; + } +} + // -------------- export interface DataSchema { @@ -138,7 +204,7 @@ export function getRollup(spec: IngestionSpec): boolean { return typeof specRollup === 'boolean' ? specRollup : true; } -export function getSpecType(spec: IngestionSpec): IngestionType | undefined { +export function getSpecType(spec: Partial): IngestionType | undefined { return ( deepGet(spec, 'type') || deepGet(spec, 'ioConfig.type') || deepGet(spec, 'tuningConfig.type') ); @@ -158,13 +224,21 @@ export function changeParallel(spec: IngestionSpec, parallel: boolean): Ingestio * Make sure that the types are set in the root, ioConfig, and tuningConfig * @param spec */ -export function normalizeSpecType(spec: IngestionSpec) { +export function normalizeSpec(spec: Partial): IngestionSpec { + if (!spec || typeof spec !== 'object') { + // This does not match the type of IngestionSpec but this dialog is robust enough to deal with anything but spec must be an object + spec = {}; + } + + // Make sure that if we actually get a task payload we extract the spec + if (typeof (spec as any).spec === 'object') spec = (spec as any).spec; + const specType = getSpecType(spec); - if (!specType) return spec; + if (!specType) return spec as IngestionSpec; if (!deepGet(spec, 'type')) spec = deepSet(spec, 'type', specType); if (!deepGet(spec, 'ioConfig.type')) spec = deepSet(spec, 'ioConfig.type', specType); if (!deepGet(spec, 'tuningConfig.type')) spec = deepSet(spec, 'tuningConfig.type', specType); - return spec; + return spec as IngestionSpec; } const PARSE_SPEC_FORM_FIELDS: Field[] = [ @@ -851,7 +925,7 @@ export function getIoConfigFormFields(ingestionComboType: IngestionComboType): F ], info: ( <> - The AWS Kinesis stream endpoint for a region. You can find a list of endpoints{' '} + The Amazon Kinesis stream endpoint for a region. You can find a list of endpoints{' '} here @@ -1662,40 +1736,40 @@ export interface Bitmap { // -------------- -export function getBlankSpec(comboType: IngestionComboType): IngestionSpec { +export function updateIngestionType( + spec: IngestionSpec, + comboType: IngestionComboType, +): IngestionSpec { let [ingestionType, firehoseType] = comboType.split(':'); if (ingestionType === 'index') ingestionType = 'index_parallel'; const ioAndTuningConfigType = ingestionTypeToIoAndTuningConfigType( ingestionType as IngestionType, ); - const granularitySpec: GranularitySpec = { - type: 'uniform', - segmentGranularity: ingestionType === 'index_parallel' ? 'DAY' : 'HOUR', - queryGranularity: 'HOUR', - }; - - const spec: IngestionSpec = { - type: ingestionType, - dataSchema: { - dataSource: 'new-data-source', - granularitySpec, - }, - ioConfig: { - type: ioAndTuningConfigType, - }, - tuningConfig: { - type: ioAndTuningConfigType, - }, - } as any; + let newSpec = spec; + newSpec = deepSet(newSpec, 'type', ingestionType); + newSpec = deepSet(newSpec, 'ioConfig.type', ioAndTuningConfigType); + newSpec = deepSet(newSpec, 'tuningConfig.type', ioAndTuningConfigType); if (firehoseType) { - spec.ioConfig.firehose = { - type: firehoseType, - }; + newSpec = deepSet(newSpec, 'ioConfig.firehose', { type: firehoseType }); } - return spec; + if (!deepGet(spec, 'dataSchema.dataSource')) { + newSpec = deepSet(newSpec, 'dataSchema.dataSource', 'new-data-source'); + } + + if (!deepGet(spec, 'dataSchema.granularitySpec')) { + const granularitySpec: GranularitySpec = { + type: 'uniform', + segmentGranularity: ingestionType === 'index_parallel' ? 'DAY' : 'HOUR', + queryGranularity: 'HOUR', + }; + + newSpec = deepSet(newSpec, 'dataSchema.granularitySpec', granularitySpec); + } + + return newSpec; } export function fillParser(spec: IngestionSpec, sampleData: string[]): IngestionSpec { diff --git a/web-console/src/views/load-data-view/__snapshots__/load-data-view.spec.tsx.snap b/web-console/src/views/load-data-view/__snapshots__/load-data-view.spec.tsx.snap index 829003f1ed6..9718f805f5d 100644 --- a/web-console/src/views/load-data-view/__snapshots__/load-data-view.spec.tsx.snap +++ b/web-console/src/views/load-data-view/__snapshots__/load-data-view.spec.tsx.snap @@ -2,41 +2,169 @@ exports[`load data view matches snapshot 1`] = `

- Please specify where your raw data is located +
+
+ Connect and parse raw data +
+ + + + + + +
+
+
+ Transform and configure schema +
+ + + + + +
+
+
+ Tune parameters +
+ + + + + +
+
+
+ Verify and submit +
+ + + +
+
- - Other (streaming) - - - Other (batch) - +

+ Please specify where your raw data is located +

+
- -

-

`; diff --git a/web-console/src/views/load-data-view/load-data-view.scss b/web-console/src/views/load-data-view/load-data-view.scss index acd7ae0f3cb..847bea4693e 100644 --- a/web-console/src/views/load-data-view/load-data-view.scss +++ b/web-console/src/views/load-data-view/load-data-view.scss @@ -27,32 +27,45 @@ 'main ctrl' 'main next'; - &.init { - display: block; + &.welcome { + .main { + margin-left: -10px; - & > * { - margin-bottom: 15px; - } - - .intro { - font-size: 20px; - } - - .cards { .bp3-card { + position: relative; display: inline-block; vertical-align: top; width: 250px; height: 140px; - margin-right: 15px; + margin-left: 15px; margin-bottom: 15px; - font-size: 24px; + font-size: 16px; text-align: center; - padding-top: 47px; + + & > * { + user-select: none; + pointer-events: none; + } + + &.active::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + content: ''; + border: 2px solid #48aff0; + border-radius: 2px; + } &.disabled { opacity: 0.4; } + + img { + width: 100px; + display: inline-block; + } } } } @@ -192,7 +205,7 @@ text-align: right; padding: 0 5px; - .prev { + .left { float: left; } } diff --git a/web-console/src/views/load-data-view/load-data-view.tsx b/web-console/src/views/load-data-view/load-data-view.tsx index 0c3e426ca99..efc853d5186 100644 --- a/web-console/src/views/load-data-view/load-data-view.tsx +++ b/web-console/src/views/load-data-view/load-data-view.tsx @@ -25,6 +25,7 @@ import { Card, Classes, Code, + Elevation, FormGroup, H5, HTMLSelect, @@ -50,6 +51,7 @@ import { } from '../../components'; import { AsyncActionDialog } from '../../dialogs'; import { AppToaster } from '../../singletons/toaster'; +import { UrlBaser } from '../../singletons/url-baser'; import { filterMap, getDruidErrorMessage, @@ -72,18 +74,20 @@ import { fillDataSourceName, fillParser, FlattenField, - getBlankSpec, getDimensionMode, getDimensionSpecFormFields, getEmptyTimestampSpec, getFilterFormFields, getFlattenFieldFormFields, getIngestionComboType, + getIngestionImage, + getIngestionTitle, getIoConfigFormFields, getIoConfigTuningFormFields, getMetricSpecFormFields, getParseSpecFormFields, getPartitionRelatedTuningSpecFormFields, + getRequiredModule, getRollup, getSpecType, getTimestampSpecFormFields, @@ -91,16 +95,17 @@ import { getTuningSpecFormFields, GranularitySpec, hasParallelAbility, - IngestionComboType, + IngestionComboTypeWithExtra, IngestionSpec, IoConfig, isColumnTimestampSpec, + isEmptyIngestionSpec, isParallel, issueWithIoConfig, issueWithParser, joinFilter, MetricSpec, - normalizeSpecType, + normalizeSpec, Parser, ParseSpec, parseSpecHasFlatten, @@ -108,6 +113,7 @@ import { TimestampSpec, Transform, TuningConfig, + updateIngestionType, } from '../../utils/ingestion-spec'; import { deepDelete, deepGet, deepSet } from '../../utils/object-change'; import { @@ -163,6 +169,7 @@ function getTimestampSpec(headerAndRows: HeaderAndRows | null): TimestampSpec { } type Step = + | 'welcome' | 'connect' | 'parser' | 'timestamp' @@ -172,9 +179,11 @@ type Step = | 'partition' | 'tuning' | 'publish' - | 'json-spec' + | 'spec' | 'loading'; + const STEPS: Step[] = [ + 'welcome', 'connect', 'parser', 'timestamp', @@ -184,18 +193,19 @@ const STEPS: Step[] = [ 'partition', 'tuning', 'publish', - 'json-spec', + 'spec', 'loading', ]; const SECTIONS: { name: string; steps: Step[] }[] = [ - { name: 'Connect and parse raw data', steps: ['connect', 'parser', 'timestamp'] }, + { name: 'Connect and parse raw data', steps: ['welcome', 'connect', 'parser', 'timestamp'] }, { name: 'Transform and configure schema', steps: ['transform', 'filter', 'schema'] }, { name: 'Tune parameters', steps: ['partition', 'tuning', 'publish'] }, - { name: 'Verify and submit', steps: ['json-spec'] }, + { name: 'Verify and submit', steps: ['spec'] }, ]; const VIEW_TITLE: Record = { + welcome: 'Start', connect: 'Connect', parser: 'Parse data', timestamp: 'Parse time', @@ -205,7 +215,7 @@ const VIEW_TITLE: Record = { partition: 'Partition', tuning: 'Tune', publish: 'Publish', - 'json-spec': 'Edit JSON spec', + spec: 'Edit JSON spec', loading: 'Loading', }; @@ -224,9 +234,11 @@ export interface LoadDataViewState { newRollup: boolean | null; newDimensionMode: DimensionMode | null; - // general + // welcome overlordModules: string[] | null; - overlordModuleNeededMessage: string | null; + selectedComboType: IngestionComboTypeWithExtra | null; + + // general sampleStrategy: SampleStrategy; columnFilter: string; specialColumnsOnly: boolean; @@ -278,7 +290,7 @@ export class LoadDataView extends React.PureComponent { - if (!newSpec || typeof newSpec !== 'object') { - // This does not match the type of IngestionSpec but this dialog is robust enough to deal with anything but spec must be an object - newSpec = {} as any; - } + newSpec = normalizeSpec(newSpec); this.setState({ spec: newSpec }); localStorageSet(LocalStorageKeys.INGESTION_SPEC, JSON.stringify(newSpec)); }; render() { - const { step, spec } = this.state; - if (!Object.keys(spec).length && !this.props.initSupervisorId && !this.props.initTaskId) { - return ( -
- {this.renderInitStep()} -
- ); - } - + const { step } = this.state; return (
{this.renderStepNav()} + {step === 'welcome' && this.renderWelcomeStep()} {step === 'connect' && this.renderConnectStep()} {step === 'parser' && this.renderParserStep()} {step === 'timestamp' && this.renderTimestampStep()} @@ -414,7 +422,7 @@ export class LoadDataView extends React.PureComponent this.updateStep(s)} - icon={s === 'json-spec' && IconNames.MANUALLY_ENTERED_DATA} + icon={s === 'spec' && IconNames.MANUALLY_ENTERED_DATA} text={VIEW_TITLE[s]} /> ))} @@ -484,79 +492,234 @@ export class LoadDataView extends React.PureComponent { - this.updateStep('connect'); - }, 10); - } - - renderIngestionCard(title: string, comboType: IngestionComboType, requiredModule?: string) { - const { overlordModules } = this.state; + renderIngestionCard(comboType: IngestionComboTypeWithExtra) { + const { overlordModules, selectedComboType } = this.state; if (!overlordModules) return null; + const requiredModule = getRequiredModule(comboType); const goodToGo = !requiredModule || overlordModules.includes(requiredModule); return ( { - if (goodToGo) { - this.initWith(comboType); - } else { - this.setState({ - overlordModuleNeededMessage: `${title} ingestion requires the '${requiredModule}' to be loaded.`, - }); - } + this.setState({ selectedComboType: selectedComboType !== comboType ? comboType : null }); }} > - {title} + +

{getIngestionTitle(comboType)}

); } - renderInitStep() { - const { goToTask } = this.props; - const { overlordModuleNeededMessage } = this.state; + renderWelcomeStep() { + const { spec } = this.state; return ( <> -
Please specify where your raw data is located
- -
- {this.renderIngestionCard('Apache Kafka', 'kafka', 'druid-kafka-indexing-service')} - {this.renderIngestionCard('AWS Kinesis', 'kinesis', 'druid-kinesis-indexing-service')} - {this.renderIngestionCard('HTTP(s)', 'index:http')} - {this.renderIngestionCard('AWS S3', 'index:static-s3', 'druid-s3-extensions')} - {this.renderIngestionCard( - 'Google Cloud Storage', - 'index:static-google-blobstore', - 'druid-google-extensions', - )} - {this.renderIngestionCard('Local disk', 'index:local')} - goToTask(null, 'supervisor')}> - Other (streaming) - - goToTask(null, 'task')}> - Other (batch) - +
+ {this.renderIngestionCard('kafka')} + {this.renderIngestionCard('kinesis')} + {this.renderIngestionCard('index:static-s3')} + {this.renderIngestionCard('index:static-google-blobstore')} + {this.renderIngestionCard('hadoop')} + {this.renderIngestionCard('index:http')} + {this.renderIngestionCard('index:local')} + {/* this.renderIngestionCard('example') */} + {this.renderIngestionCard('other')} +
+
+ {this.renderWelcomeStepMessage()} + {this.renderWelcomeStepControls()} + {!isEmptyIngestionSpec(spec) && ( +
- - this.setState({ overlordModuleNeededMessage: null })} - > -

{overlordModuleNeededMessage}

-
); } + renderWelcomeStepMessage() { + const { selectedComboType } = this.state; + + if (!selectedComboType) { + return

Please specify where your raw data is located

; + } + + const issue = this.selectedIngestionTypeIssue(); + if (issue) return issue; + + switch (selectedComboType) { + case 'index:http': + return ( + <> +

Load data accessible through HTTP(s).

+

+ Data must be in a text format and the HTTP(s) endpoint must be reachable by every + Druid process in the cluster. +

+ + ); + + case 'index:local': + return ( + <> +

+ Recommended only in single server deployments. +

+

Load data directly from a local file.

+

+ Files must be in a text format and must be accessible to all the Druid processes in + the cluster. +

+ + ); + + case 'index:static-s3': + return

Load text based data from Amazon S3.

; + + case 'index:static-google-blobstore': + return

Load text based data from the Google Blobstore.

; + + case 'kafka': + return

Load streaming data in real-time from Apache Kafka.

; + + case 'kinesis': + return

Load streaming data in real-time from Amazon Kinesis.

; + + case 'hadoop': + return ( + <> +

+ Data loader support coming soon! +

+

+ You can not ingest data from HDFS via the data loader at this time, however you can + ingest it through a Druid task. +

+

+ Please follow{' '} + + the hadoop docs + {' '} + and submit a JSON spec to start the task. +

+ + ); + + case 'example': + return

Pick one of these examples to get you started.

; + + case 'other': + return ( +

+ If you do not see your source of raw data here, you can try to ingest it by submitting a{' '} + + JSON task or supervisor spec + + . +

+ ); + + default: + return

Unknown ingestion type.

; + } + } + + renderWelcomeStepControls() { + const { goToTask } = this.props; + const { spec, selectedComboType } = this.state; + + const issue = this.selectedIngestionTypeIssue(); + if (issue) return null; + + switch (selectedComboType) { + case 'index:http': + case 'index:local': + case 'index:static-s3': + case 'index:static-google-blobstore': + case 'kafka': + case 'kinesis': + return ( + +
+ {!isEmptyIngestionSpec(spec) && ( +