API: Add programatically generated RHSM API slice definitions
These definitions were generated using the RTKQ code generation tool and will replace the existing definitions.
This commit is contained in:
parent
1894a9dcb2
commit
22df78bffa
11 changed files with 96 additions and 23 deletions
13
api/config/rhsm.ts
Normal file
13
api/config/rhsm.ts
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import type { ConfigFile } from '@rtk-query/codegen-openapi'
|
||||
|
||||
const config: ConfigFile = {
|
||||
schemaFile: '../schema/rhsm.json',
|
||||
apiFile: '../../src/store/emptyRhsmApi.ts',
|
||||
apiImport: 'emptyRhsmApi',
|
||||
outputFile: '../../src/store/rhsmApi.ts',
|
||||
exportName: 'rhsmApi',
|
||||
hooks: true,
|
||||
filterEndpoints: ['listActivationKeys', 'showActivationKey'],
|
||||
}
|
||||
|
||||
export default config
|
||||
1
api/schema/rhsm.json
Normal file
1
api/schema/rhsm.json
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -112,7 +112,7 @@
|
|||
"test": "TZ=UTC jest --verbose --no-cache",
|
||||
"test:single": "jest --verbose -w 1",
|
||||
"build": "webpack --config config/prod.webpack.config.js",
|
||||
"api": "npx @rtk-query/codegen-openapi ./api/config/image-builder.ts",
|
||||
"api": "npx @rtk-query/codegen-openapi ./api/config/image-builder.ts & npx @rtk-query/codegen-openapi ./api/config/rhsm.ts",
|
||||
"verify": "npm-run-all build lint test"
|
||||
},
|
||||
"insights": {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import {
|
|||
Tr,
|
||||
} from '@patternfly/react-table';
|
||||
|
||||
import { useGetActivationKeyInformationQuery } from '../../../store/apiSlice';
|
||||
import { useShowActivationKeyQuery } from '../../../store/rhsmApi';
|
||||
|
||||
const ActivationKeyInformation = () => {
|
||||
const { getState } = useFormApi();
|
||||
|
|
@ -37,9 +37,12 @@ const ActivationKeyInformation = () => {
|
|||
isFetching: isFetchingActivationKeyInfo,
|
||||
isSuccess: isSuccessActivationKeyInfo,
|
||||
isError: isErrorActivationKeyInfo,
|
||||
} = useGetActivationKeyInformationQuery(activationKey, {
|
||||
skip: !activationKey,
|
||||
});
|
||||
} = useShowActivationKeyQuery(
|
||||
{ name: activationKey },
|
||||
{
|
||||
skip: !activationKey,
|
||||
}
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import {
|
|||
} from '@patternfly/react-core';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import { useGetActivationKeysQuery } from '../../../store/apiSlice';
|
||||
import { useListActivationKeysQuery } from '../../../store/rhsmApi';
|
||||
import { useGetEnvironment } from '../../../Utilities/useGetEnvironment';
|
||||
|
||||
const ActivationKeys = ({ label, isRequired, ...props }) => {
|
||||
|
|
@ -30,7 +30,7 @@ const ActivationKeys = ({ label, isRequired, ...props }) => {
|
|||
isSuccess: isSuccessActivationKeys,
|
||||
isError: isErrorActivationKeys,
|
||||
refetch,
|
||||
} = useGetActivationKeysQuery();
|
||||
} = useListActivationKeysQuery();
|
||||
|
||||
useEffect(() => {
|
||||
if (isProd()) {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import { Button } from '@patternfly/react-core';
|
|||
import PropTypes from 'prop-types';
|
||||
|
||||
import { usePrefetch } from '../../../store/apiSlice';
|
||||
import { rhsmApi } from '../../../store/rhsmApi';
|
||||
import { releaseToVersion } from '../../../Utilities/releaseToVersion';
|
||||
|
||||
const CustomButtons = ({
|
||||
|
|
@ -17,7 +18,7 @@ const CustomButtons = ({
|
|||
const { getState } = useFormApi();
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
const { currentStep, formOptions } = useContext(WizardContext);
|
||||
const prefetchActivationKeys = usePrefetch('getActivationKeys');
|
||||
const prefetchActivationKeys = rhsmApi.usePrefetch('listActivationKeys');
|
||||
const prefetchRepositories = usePrefetch('getRepositories');
|
||||
|
||||
const onNextOrSubmit = () => {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import {
|
|||
|
||||
import { RELEASES, UNIT_GIB } from '../../../constants';
|
||||
import { useGetSourcesQuery } from '../../../store/apiSlice';
|
||||
import { useGetActivationKeyInformationQuery } from '../../../store/apiSlice';
|
||||
import { useShowActivationKeyQuery } from '../../../store/rhsmApi';
|
||||
import { useGetEnvironment } from '../../../Utilities/useGetEnvironment';
|
||||
import { googleAccType } from '../steps/googleCloud';
|
||||
|
||||
|
|
@ -443,9 +443,12 @@ export const RegisterLaterList = () => {
|
|||
export const RegisterNowList = () => {
|
||||
const { getState } = useFormApi();
|
||||
const activationKey = getState()?.values?.['subscription-activation-key'];
|
||||
const { isError } = useGetActivationKeyInformationQuery(activationKey, {
|
||||
skip: !activationKey,
|
||||
});
|
||||
const { isError } = useShowActivationKeyQuery(
|
||||
{ name: activationKey },
|
||||
{
|
||||
skip: !activationKey,
|
||||
}
|
||||
);
|
||||
return (
|
||||
<>
|
||||
<TextContent>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
|
||||
|
||||
import { ActivationKeys, RepositoryCollectionResponse, SourceResponse, SourceUploadInfoResponse } from '../../types';
|
||||
import { RepositoryCollectionResponse, SourceResponse, SourceUploadInfoResponse } from '../../types';
|
||||
|
||||
type GetRepositoriesArgs = { available_for_arch: string, available_for_version: string, limit: number, offset: number }
|
||||
|
||||
|
|
@ -12,7 +12,6 @@ enum Provider {
|
|||
import {
|
||||
CONTENT_SOURCES,
|
||||
PROVISIONING_SOURCES_ENDPOINT,
|
||||
RHSM_API,
|
||||
} from '../constants';
|
||||
|
||||
export const apiSlice = createApi({
|
||||
|
|
@ -26,12 +25,6 @@ export const apiSlice = createApi({
|
|||
query: (sourceId) =>
|
||||
`${PROVISIONING_SOURCES_ENDPOINT}/sources/${sourceId}/upload_info`
|
||||
}),
|
||||
getActivationKeys: builder.query<ActivationKeys[], void>({
|
||||
query: () => `${RHSM_API}/activation_keys`,
|
||||
}),
|
||||
getActivationKeyInformation: builder.query<ActivationKeys, string>({
|
||||
query: (name) => `${RHSM_API}/activation_keys/${name}`,
|
||||
}),
|
||||
getRepositories: builder.query<RepositoryCollectionResponse, GetRepositoriesArgs>({
|
||||
query: ({available_for_arch, available_for_version, limit, offset}) => `${CONTENT_SOURCES}/repositories/?available_for_arch=${available_for_arch}&available_for_version=${available_for_version}&limit=${limit}&offset=${offset}`,
|
||||
}),
|
||||
|
|
@ -39,8 +32,6 @@ export const apiSlice = createApi({
|
|||
});
|
||||
|
||||
export const {
|
||||
useGetActivationKeysQuery,
|
||||
useGetActivationKeyInformationQuery,
|
||||
useGetRepositoriesQuery,
|
||||
useGetSourcesQuery,
|
||||
useGetSourceDetailQuery,
|
||||
|
|
|
|||
9
src/store/emptyRhsmApi.ts
Normal file
9
src/store/emptyRhsmApi.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
|
||||
import {RHSM_API} from '../constants'
|
||||
|
||||
// initialize an empty api service that we'll inject endpoints into later as needed
|
||||
export const emptyRhsmApi = createApi({
|
||||
reducerPath: 'rhsmApi',
|
||||
baseQuery: fetchBaseQuery({ baseUrl: RHSM_API }),
|
||||
endpoints: () => ({}),
|
||||
})
|
||||
|
|
@ -6,12 +6,14 @@ import { apiSlice } from './apiSlice';
|
|||
import clonesSlice from './clonesSlice';
|
||||
import composesSlice from './composesSlice';
|
||||
import { imageBuilderApi } from './imageBuilderApi';
|
||||
import { rhsmApi } from './rhsmApi';
|
||||
|
||||
export const reducer = {
|
||||
[apiSlice.reducerPath]: apiSlice.reducer,
|
||||
clones: clonesSlice,
|
||||
composes: composesSlice,
|
||||
[imageBuilderApi.reducerPath]: imageBuilderApi.reducer,
|
||||
[rhsmApi.reducerPath]: rhsmApi.reducer,
|
||||
notifications: notificationsReducer,
|
||||
};
|
||||
|
||||
|
|
@ -19,6 +21,7 @@ export const middleware = (getDefaultMiddleware) =>
|
|||
getDefaultMiddleware()
|
||||
.concat(promiseMiddleware)
|
||||
.concat(apiSlice.middleware)
|
||||
.concat(imageBuilderApi.middleware);
|
||||
.concat(imageBuilderApi.middleware)
|
||||
.concat(rhsmApi.middleware);
|
||||
|
||||
export const store = configureStore({ reducer, middleware });
|
||||
|
|
|
|||
49
src/store/rhsmApi.ts
Normal file
49
src/store/rhsmApi.ts
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import { emptyRhsmApi as api } from "./emptyRhsmApi";
|
||||
const injectedRtkApi = api.injectEndpoints({
|
||||
endpoints: (build) => ({
|
||||
listActivationKeys: build.query<
|
||||
ListActivationKeysApiResponse,
|
||||
ListActivationKeysApiArg
|
||||
>({
|
||||
query: () => ({ url: `/activation_keys` }),
|
||||
}),
|
||||
showActivationKey: build.query<
|
||||
ShowActivationKeyApiResponse,
|
||||
ShowActivationKeyApiArg
|
||||
>({
|
||||
query: (queryArg) => ({ url: `/activation_keys/${queryArg.name}` }),
|
||||
}),
|
||||
}),
|
||||
overrideExisting: false,
|
||||
});
|
||||
export { injectedRtkApi as rhsmApi };
|
||||
export type ListActivationKeysApiResponse =
|
||||
/** status 200 Array of activation keys */ {
|
||||
body?: ActivationKeys[];
|
||||
};
|
||||
export type ListActivationKeysApiArg = void;
|
||||
export type ShowActivationKeyApiResponse = /** status 200 Activation key */ {
|
||||
body?: ActivationKeys;
|
||||
};
|
||||
export type ShowActivationKeyApiArg = {
|
||||
name: string;
|
||||
};
|
||||
export type AdditionalRepositories = {
|
||||
repositoryLabel?: string;
|
||||
repositoryName?: string;
|
||||
};
|
||||
export type ActivationKeys = {
|
||||
additionalRepositories?: AdditionalRepositories[];
|
||||
id?: string;
|
||||
name?: string;
|
||||
releaseVersion?: string;
|
||||
role?: string;
|
||||
serviceLevel?: string;
|
||||
usage?: string;
|
||||
};
|
||||
export type ErrorDetails = {
|
||||
code?: number;
|
||||
message?: string;
|
||||
};
|
||||
export const { useListActivationKeysQuery, useShowActivationKeyQuery } =
|
||||
injectedRtkApi;
|
||||
Loading…
Add table
Add a link
Reference in a new issue