@@ -22,6 +22,7 @@ import {
|
||||
import { CatalogApi } from '@backstage/catalog-client';
|
||||
import {
|
||||
DEFAULT_NAMESPACE,
|
||||
parseEntityRef,
|
||||
stringifyEntityRef,
|
||||
} from '@backstage/catalog-model';
|
||||
import { Entity } from '@backstage/catalog-model';
|
||||
@@ -178,14 +179,15 @@ export async function createRouter(
|
||||
res.json(actionsList);
|
||||
})
|
||||
.post('/v2/tasks', async (req, res) => {
|
||||
const templateName: string = req.body.templateName;
|
||||
const kind = 'template';
|
||||
const namespace = DEFAULT_NAMESPACE;
|
||||
const templateRef: string = req.body.templateRef;
|
||||
const { kind, namespace, name } = parseEntityRef(templateRef, {
|
||||
defaultKind: 'template',
|
||||
});
|
||||
const values = req.body.values;
|
||||
const token = getBearerToken(req.headers.authorization);
|
||||
const template = await findTemplate({
|
||||
catalogApi: catalogClient,
|
||||
entityRef: { kind, namespace, name: templateName },
|
||||
entityRef: { kind, namespace, name },
|
||||
token: getBearerToken(req.headers.authorization),
|
||||
});
|
||||
|
||||
|
||||
@@ -90,7 +90,9 @@ export class ScaffolderClient implements ScaffolderApi {
|
||||
async getTemplateParameterSchema(
|
||||
templateRef: string,
|
||||
): Promise<TemplateParameterSchema> {
|
||||
const { namespace, kind, name } = parseEntityRef(templateRef);
|
||||
const { namespace, kind, name } = parseEntityRef(templateRef, {
|
||||
defaultKind: 'template',
|
||||
});
|
||||
|
||||
const baseUrl = await this.discoveryApi.getBaseUrl('scaffolder');
|
||||
const templatePath = [namespace, kind, name]
|
||||
@@ -117,7 +119,7 @@ export class ScaffolderClient implements ScaffolderApi {
|
||||
async scaffold(
|
||||
options: ScaffolderScaffoldOptions,
|
||||
): Promise<ScaffolderScaffoldResponse> {
|
||||
const { templateName, values, secrets = {} } = options;
|
||||
const { templateRef, values, secrets = {} } = options;
|
||||
const url = `${await this.discoveryApi.getBaseUrl('scaffolder')}/v2/tasks`;
|
||||
const response = await this.fetchApi.fetch(url, {
|
||||
method: 'POST',
|
||||
@@ -125,7 +127,7 @@ export class ScaffolderClient implements ScaffolderApi {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
templateName,
|
||||
templateRef,
|
||||
values: { ...values },
|
||||
secrets,
|
||||
}),
|
||||
|
||||
@@ -41,6 +41,7 @@ import {
|
||||
useApiHolder,
|
||||
useRouteRef,
|
||||
} from '@backstage/core-plugin-api';
|
||||
import { stringifyEntityRef } from '@backstage/catalog-model';
|
||||
|
||||
const useTemplateParameterSchema = (templateRef: string) => {
|
||||
const scaffolderApi = useApi(scaffolderApiRef);
|
||||
@@ -137,7 +138,11 @@ export const TemplatePage = ({
|
||||
|
||||
const handleCreate = async () => {
|
||||
const { taskId } = await scaffolderApi.scaffold({
|
||||
templateName,
|
||||
templateRef: stringifyEntityRef({
|
||||
name: templateName,
|
||||
kind: 'template',
|
||||
namespace: 'default',
|
||||
}),
|
||||
values: formState,
|
||||
secrets: secretsContext?.secrets,
|
||||
});
|
||||
|
||||
@@ -81,7 +81,7 @@ export type LogEvent = {
|
||||
};
|
||||
|
||||
export interface ScaffolderScaffoldOptions {
|
||||
templateName: string;
|
||||
templateRef: string;
|
||||
values: Record<string, any>;
|
||||
secrets?: Record<string, string>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user