API: Add mutations for creating composes and clones

This commit adds mutations for the /compose and
/composes/:composeId/clone POST end points to the Image Builder API
slice.
This commit is contained in:
lucasgarfield 2023-09-04 10:01:26 +02:00 committed by Lucas Garfield
parent a28a1ab9cc
commit 85ab893c2b
2 changed files with 45 additions and 0 deletions

View file

@ -8,6 +8,8 @@ const config: ConfigFile = {
exportName: 'imageBuilderApi',
hooks: true,
filterEndpoints: [
'cloneCompose',
'composeImage',
'getComposes',
'getComposeStatus',
'getComposeClones',

View file

@ -19,6 +19,13 @@ const injectedRtkApi = api.injectEndpoints({
>({
query: (queryArg) => ({ url: `/composes/${queryArg.composeId}` }),
}),
cloneCompose: build.mutation<CloneComposeApiResponse, CloneComposeApiArg>({
query: (queryArg) => ({
url: `/composes/${queryArg.composeId}/clone`,
method: "POST",
body: queryArg.cloneRequest,
}),
}),
getComposeClones: build.query<
GetComposeClonesApiResponse,
GetComposeClonesApiArg
@ -34,6 +41,13 @@ const injectedRtkApi = api.injectEndpoints({
>({
query: (queryArg) => ({ url: `/clones/${queryArg.id}` }),
}),
composeImage: build.mutation<ComposeImageApiResponse, ComposeImageApiArg>({
query: (queryArg) => ({
url: `/compose`,
method: "POST",
body: queryArg.composeRequest,
}),
}),
getPackages: build.query<GetPackagesApiResponse, GetPackagesApiArg>({
query: (queryArg) => ({
url: `/packages`,
@ -70,6 +84,14 @@ export type GetComposeStatusApiArg = {
/** Id of compose */
composeId: string;
};
export type CloneComposeApiResponse =
/** status 201 cloning has started */ CloneResponse;
export type CloneComposeApiArg = {
/** Id of compose to clone */
composeId: string;
/** details of the new clone */
cloneRequest: CloneRequest;
};
export type GetComposeClonesApiResponse =
/** status 200 compose clones */ ClonesResponse;
export type GetComposeClonesApiArg = {
@ -86,6 +108,12 @@ export type GetCloneStatusApiArg = {
/** Id of clone status to get */
id: string;
};
export type ComposeImageApiResponse =
/** status 201 compose has started */ ComposeResponse;
export type ComposeImageApiArg = {
/** details of image to be composed */
composeRequest: ComposeRequest;
};
export type GetPackagesApiResponse =
/** status 200 a list of packages */ PackagesResponse;
export type GetPackagesApiArg = {
@ -295,6 +323,9 @@ export type ComposeStatus = {
image_status: ImageStatus;
request: ComposeRequest;
};
export type CloneResponse = {
id: string;
};
export type Awsec2Clone = {
region: string;
share_with_accounts?: string[];
@ -316,6 +347,16 @@ export type ClonesResponse = {
};
data: ClonesResponseItem[];
};
export type ComposeResponse = {
id: string;
};
export type HttpError = {
title: string;
detail: string;
};
export type HttpErrorList = {
errors: HttpError[];
};
export type Package = {
name: string;
summary: string;
@ -334,7 +375,9 @@ export const {
useGetArchitecturesQuery,
useGetComposesQuery,
useGetComposeStatusQuery,
useCloneComposeMutation,
useGetComposeClonesQuery,
useGetCloneStatusQuery,
useComposeImageMutation,
useGetPackagesQuery,
} = injectedRtkApi;