From 93215cb382a6a2f2faf56052f3593da0a02f5086 Mon Sep 17 00:00:00 2001 From: blam Date: Wed, 16 Feb 2022 14:51:04 +0100 Subject: [PATCH] chore: move to templateInfo in other modules Signed-off-by: blam --- .../src/actions/fetch/cookiecutter.test.ts | 7 ++- .../src/actions/fetch/cookiecutter.ts | 2 +- .../src/actions/fetch/rails/index.ts | 2 +- .../scaffolder-backend/src/service/router.ts | 48 ++++++++++--------- plugins/scaffolder-common/src/TaskSpec.ts | 4 ++ .../src/components/TaskPage/TaskPage.tsx | 4 +- 6 files changed, 39 insertions(+), 28 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index bba51e3f01..edc5c3ff77 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -89,7 +89,10 @@ describe('fetch:cookiecutter', () => { help: 'me', }, }, - baseUrl: 'somebase', + templateInfo: { + name: 'lols', + baseUrl: 'somebase', + }, workspacePath: mockTmpDir, logger: getVoidLogger(), logStream: new PassThrough(), @@ -149,7 +152,7 @@ describe('fetch:cookiecutter', () => { expect.objectContaining({ reader: mockReader, integrations, - baseUrl: mockContext.baseUrl, + baseUrl: mockContext.templateInfo?.baseUrl, fetchUrl: mockContext.input.url, outputPath: join( mockTmpDir, diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts index c4d7f1e3e8..0455f01989 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts @@ -222,7 +222,7 @@ export function createFetchCookiecutterAction(options: { await fetchContents({ reader, integrations, - baseUrl: ctx.baseUrl, + baseUrl: ctx.templateInfo?.baseUrl, fetchUrl: ctx.input.url, outputPath: templateContentsDir, }); diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts index 2865361a8b..132929ee1c 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts @@ -170,7 +170,7 @@ export function createFetchRailsAction(options: { await fetchContents({ reader, integrations, - baseUrl: ctx.baseUrl, + baseUrl: ctx.templateInfo?.baseUrl, fetchUrl: ctx.input.url, outputPath: workDir, }); diff --git a/plugins/scaffolder-backend/src/service/router.ts b/plugins/scaffolder-backend/src/service/router.ts index b2978441bd..a5f5b5fa40 100644 --- a/plugins/scaffolder-backend/src/service/router.ts +++ b/plugins/scaffolder-backend/src/service/router.ts @@ -28,6 +28,8 @@ import { ScmIntegrations } from '@backstage/integration'; import { TemplateEntityV1beta2, TemplateEntityV1beta3, + TaskSpecV1beta3, + TaskSpecV1beta2, } from '@backstage/plugin-scaffolder-common'; import express from 'express'; import Router from 'express-promise-router'; @@ -219,32 +221,36 @@ export async function createRouter( const baseUrl = getEntityBaseUrl(template); + const baseTaskSpec = { + baseUrl, + steps: template.spec.steps.map((step, index) => ({ + ...step, + id: step.id ?? `step-${index + 1}`, + name: step.name ?? step.action, + })), + output: template.spec.output ?? {}, + + // deprecated in favour of templateInfo + metadata: { name: template.metadata?.name }, + + templateInfo: { + name: template.metadata?.name, + baseUrl, + }, + }; + taskSpec = template.apiVersion === 'backstage.io/v1beta2' - ? { + ? ({ + ...baseTaskSpec, apiVersion: template.apiVersion, - baseUrl, values, - steps: template.spec.steps.map((step, index) => ({ - ...step, - id: step.id ?? `step-${index + 1}`, - name: step.name ?? step.action, - })), - output: template.spec.output ?? {}, - metadata: { name: template.metadata?.name }, - } - : { + } as TaskSpecV1beta2) + : ({ + ...baseTaskSpec, apiVersion: template.apiVersion, - baseUrl, parameters: values, - steps: template.spec.steps.map((step, index) => ({ - ...step, - id: step.id ?? `step-${index + 1}`, - name: step.name ?? step.action, - })), - output: template.spec.output ?? {}, - metadata: { name: template.metadata?.name }, - }; + } as TaskSpecV1beta3); } else { throw new InputError( `Unsupported apiVersion field in schema entity, ${ @@ -256,8 +262,6 @@ export async function createRouter( const result = await taskBroker.dispatch(taskSpec, { ...req.body.secrets, backstageToken: token, - // This is deprecated, but we need to support it for now if people are running their own task broker. - token: token, }); res.status(201).json({ id: result.taskId }); diff --git a/plugins/scaffolder-common/src/TaskSpec.ts b/plugins/scaffolder-common/src/TaskSpec.ts index 0751b0467a..09d46b7fbb 100644 --- a/plugins/scaffolder-common/src/TaskSpec.ts +++ b/plugins/scaffolder-common/src/TaskSpec.ts @@ -60,11 +60,15 @@ export interface TaskStep { */ export interface TaskSpecV1beta2 { apiVersion: 'backstage.io/v1beta2'; + /** @deprecated use templateInfo.baseUrl instead */ baseUrl?: string; values: JsonObject; steps: TaskStep[]; output: { [name: string]: string }; + /** @deprecated use templateInfo instead */ metadata?: TemplateMetadata; + + templateInfo?: TemplateInfo; } /** diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx index 2f49f40643..346a842838 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx @@ -291,7 +291,7 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => { const { output } = taskStream; const handleStartOver = () => { - if (!taskStream.task || !taskStream.task?.spec.metadata?.name) { + if (!taskStream.task || !taskStream.task?.spec.templateInfo?.name) { navigate(generatePath(rootLink())); } @@ -306,7 +306,7 @@ export const TaskPage = ({ loadingText }: TaskPageProps) => { formData: JSON.stringify(formData), })}`, { - templateName: taskStream.task!.spec.metadata!.name, + templateName: taskStream.task!.spec.templateInfo!.name, }, ), );