Skip to content

Commit 461406a

Browse files
feat(ingestion-ui) Use CLI version defined in recipe for test connection (#5959)
1 parent 78f648a commit 461406a

File tree

7 files changed

+30
-14
lines changed

7 files changed

+30
-14
lines changed

datahub-graphql-core/src/main/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolver.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ public CompletableFuture<String> get(final DataFetchingEnvironment environment)
7474

7575
Map<String, String> arguments = new HashMap<>();
7676
arguments.put(RECIPE_ARG_NAME, input.getRecipe());
77+
if (input.getVersion() != null) {
78+
arguments.put(VERSION_ARG_NAME, input.getVersion());
79+
}
7780
execInput.setArgs(new StringMap(arguments));
7881

7982
proposal.setEntityType(Constants.EXECUTION_REQUEST_ENTITY_NAME);

datahub-graphql-core/src/main/resources/ingestion.graphql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,11 @@ input CreateTestConnectionRequestInput {
207207
A JSON-encoded recipe
208208
"""
209209
recipe: String!
210+
211+
"""
212+
Advanced: The version of the ingestion framework to use
213+
"""
214+
version: String
210215
}
211216

212217
"""

datahub-graphql-core/src/test/java/com/linkedin/datahub/graphql/resolvers/ingest/execution/CreateTestConnectionRequestResolverTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
public class CreateTestConnectionRequestResolverTest {
1818

1919
private static final CreateTestConnectionRequestInput TEST_INPUT = new CreateTestConnectionRequestInput(
20-
"test recipe"
20+
"test recipe",
21+
"0.8.44"
2122
);
2223

2324
@Test

datahub-web-react/src/app/ingest/source/builder/DefineRecipeStep.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export const DefineRecipeStep = ({ state, updateState, goTo, prev, ingestionSour
8888
if (type && CONNECTORS_WITH_FORM.has(type)) {
8989
return (
9090
<RecipeBuilder
91-
type={type}
91+
state={state}
9292
isEditing={isEditing}
9393
displayRecipe={displayRecipe}
9494
sourceConfigs={sourceConfigs}

datahub-web-react/src/app/ingest/source/builder/RecipeBuilder.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import styled from 'styled-components/macro';
66
import { ANTD_GRAY } from '../../../entity/shared/constants';
77
import { YamlEditor } from './YamlEditor';
88
import RecipeForm from './RecipeForm/RecipeForm';
9-
import { SourceConfig } from './types';
9+
import { SourceBuilderState, SourceConfig } from './types';
1010

1111
export const ControlsContainer = styled.div`
1212
display: flex;
@@ -39,7 +39,7 @@ const ButtonsWrapper = styled.div`
3939
`;
4040

4141
interface Props {
42-
type: string;
42+
state: SourceBuilderState;
4343
isEditing: boolean;
4444
displayRecipe: string;
4545
sourceConfigs?: SourceConfig;
@@ -49,7 +49,7 @@ interface Props {
4949
}
5050

5151
function RecipeBuilder(props: Props) {
52-
const { type, isEditing, displayRecipe, sourceConfigs, setStagedRecipe, onClickNext, goToPrevious } = props;
52+
const { state, isEditing, displayRecipe, sourceConfigs, setStagedRecipe, onClickNext, goToPrevious } = props;
5353

5454
const [isViewingForm, setIsViewingForm] = useState(true);
5555

@@ -77,7 +77,7 @@ function RecipeBuilder(props: Props) {
7777
</ButtonsWrapper>
7878
{isViewingForm && (
7979
<RecipeForm
80-
type={type}
80+
state={state}
8181
isEditing={isEditing}
8282
displayRecipe={displayRecipe}
8383
sourceConfigs={sourceConfigs}

datahub-web-react/src/app/ingest/source/builder/RecipeForm/RecipeForm.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import FormField from './FormField';
1010
import TestConnectionButton from './TestConnection/TestConnectionButton';
1111
import { useListSecretsQuery } from '../../../../../graphql/ingestion.generated';
1212
import { RecipeField, setFieldValueOnRecipe } from './common';
13-
import { SourceConfig } from '../types';
13+
import { SourceBuilderState, SourceConfig } from '../types';
1414

1515
export const ControlsContainer = styled.div`
1616
display: flex;
@@ -89,7 +89,7 @@ function shouldRenderFilterSectionHeader(field: RecipeField, index: number, filt
8989
}
9090

9191
interface Props {
92-
type: string;
92+
state: SourceBuilderState;
9393
isEditing: boolean;
9494
displayRecipe: string;
9595
sourceConfigs?: SourceConfig;
@@ -99,9 +99,11 @@ interface Props {
9999
}
100100

101101
function RecipeForm(props: Props) {
102-
const { type, isEditing, displayRecipe, sourceConfigs, setStagedRecipe, onClickNext, goToPrevious } = props;
102+
const { state, isEditing, displayRecipe, sourceConfigs, setStagedRecipe, onClickNext, goToPrevious } = props;
103+
const { type } = state;
104+
const version = state.config?.version;
103105
const { fields, advancedFields, filterFields, filterSectionTooltip, advancedSectionTooltip, defaultOpenSections } =
104-
RECIPE_FIELDS[type];
106+
RECIPE_FIELDS[type as string];
105107
const allFields = [...fields, ...advancedFields, ...filterFields];
106108
const { data, refetch: refetchSecrets } = useListSecretsQuery({
107109
variables: {
@@ -147,9 +149,13 @@ function RecipeForm(props: Props) {
147149
removeMargin={i === fields.length - 1}
148150
/>
149151
))}
150-
{CONNECTORS_WITH_TEST_CONNECTION.has(type) && (
152+
{CONNECTORS_WITH_TEST_CONNECTION.has(type as string) && (
151153
<TestConnectionWrapper>
152-
<TestConnectionButton recipe={displayRecipe} sourceConfigs={sourceConfigs} />
154+
<TestConnectionButton
155+
recipe={displayRecipe}
156+
sourceConfigs={sourceConfigs}
157+
version={version}
158+
/>
153159
</TestConnectionWrapper>
154160
)}
155161
</Collapse.Panel>

datahub-web-react/src/app/ingest/source/builder/RecipeForm/TestConnection/TestConnectionButton.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ export function getRecipeJson(recipeYaml: string) {
2929
interface Props {
3030
recipe: string;
3131
sourceConfigs?: SourceConfig;
32+
version?: string | null;
3233
}
3334

3435
function TestConnectionButton(props: Props) {
35-
const { recipe, sourceConfigs } = props;
36+
const { recipe, sourceConfigs, version } = props;
3637
const [isLoading, setIsLoading] = useState(false);
3738
const [isModalVisible, setIsModalVisible] = useState(false);
3839
const [pollingInterval, setPollingInterval] = useState<null | NodeJS.Timeout>(null);
@@ -84,7 +85,7 @@ function TestConnectionButton(props: Props) {
8485
function testConnection() {
8586
const recipeJson = getRecipeJson(recipe);
8687
if (recipeJson) {
87-
createTestConnectionRequest({ variables: { input: { recipe: recipeJson } } })
88+
createTestConnectionRequest({ variables: { input: { recipe: recipeJson, version } } })
8889
.then((res) =>
8990
getIngestionExecutionRequest({
9091
variables: { urn: res.data?.createTestConnectionRequest as string },

0 commit comments

Comments
 (0)