From bab802702996cf2de54897daea8cab8a50262421 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 17 Feb 2022 14:22:06 +0100 Subject: [PATCH] chore: reworking the templateInfo type Signed-off-by: blam --- .../scaffolder/actions/builtin/fetch/template.test.ts | 5 ++++- .../scaffolder/tasks/HandlebarsWorkflowRunner.test.ts | 2 +- .../src/scaffolder/tasks/HandlebarsWorkflowRunner.ts | 2 +- .../scaffolder/tasks/NunjucksWorkflowRunner.test.ts | 2 +- plugins/scaffolder-backend/src/service/router.ts | 9 ++++++++- .../scaffolder/src/components/TaskPage/TaskPage.tsx | 10 ++++++++-- 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts index 284b400833..3f1b338965 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.test.ts @@ -75,7 +75,10 @@ describe('fetch:template', () => { const logger = getVoidLogger(); const mockContext = (inputPatch: Partial = {}) => ({ - templateInfo: { baseUrl: 'base-url', name: 'test' }, + templateInfo: { + baseUrl: 'base-url', + entityRef: 'template:default/test-template', + }, input: { url: './skeleton', targetPath: './target', diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts index c3f80f0b54..59a8bf9097 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.test.ts @@ -107,7 +107,7 @@ describe('LegacyWorkflowRunner', () => { ], output: {}, values: {}, - templateInfo: { name: templateName }, + templateInfo: { entityRef: `template:default/${templateName}` }, }); await runner.execute(task); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts index 135c40d95f..e525e6bd14 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/HandlebarsWorkflowRunner.ts @@ -244,7 +244,7 @@ export class HandlebarsWorkflowRunner implements WorkflowRunner { stepOutputs[name] = value; }, // deprecated in favor of templateInfo - metadata: task.spec.templateInfo, + metadata: task.spec.metadata, templateInfo: task.spec.templateInfo, }); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 0c808e620b..43a5c180be 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -176,7 +176,7 @@ describe('DefaultWorkflowRunner', () => { input: { foo: 1 }, }, ], - templateInfo: { name: templateName }, + templateInfo: { entityRef: `template:default/${templateName}` }, }); await runner.execute(task); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index a5f5b5fa40..8a3645cf31 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -188,12 +188,15 @@ export async function createRouter( }) .post('/v2/tasks', async (req, res) => { const templateName: string = req.body.templateName; + const { kind, namespace } = { kind: 'template', namespace: 'default' }; const values = req.body.values; const token = getBearerToken(req.headers.authorization); const template = await findTemplate({ catalogApi: catalogClient, entityRef: { name: templateName, + kind, + namespace, }, token: getBearerToken(req.headers.authorization), }); @@ -234,7 +237,11 @@ export async function createRouter( metadata: { name: template.metadata?.name }, templateInfo: { - name: template.metadata?.name, + entityRef: stringifyEntityRef({ + kind, + namespace, + name: template.metadata?.name, + }), baseUrl, }, }; diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx index 346a842838..a642660bac 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx @@ -14,6 +14,7 @@ * limitations under the License. */ +import { parseEntityRef } from '@backstage/catalog-model'; import { Content, ErrorPage, @@ -291,8 +292,9 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => { const { output } = taskStream; const handleStartOver = () => { - if (!taskStream.task || !taskStream.task?.spec.templateInfo?.name) { + if (!taskStream.task || !taskStream.task?.spec.templateInfo?.entityRef) { navigate(generatePath(rootLink())); + return; } const formData = @@ -300,13 +302,17 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => { ? taskStream.task!.spec.values : taskStream.task!.spec.parameters; + const { name } = parseEntityRef( + taskStream.task!.spec.templateInfo?.entityRef, + ); + navigate( generatePath( `${rootLink()}/templates/:templateName?${qs.stringify({ formData: JSON.stringify(formData), })}`, { - templateName: taskStream.task!.spec.templateInfo!.name, + templateName: name, }, ), );