Skip to content

Commit e37b58d

Browse files
authored
Merge pull request #286 from project-koku/release_prod-beta.8452
Deployment commit for prod-beta
2 parents 7c14c3f + b103fd6 commit e37b58d

19 files changed

+52
-47
lines changed

fec.config.js

-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ module.exports = {
5959
* Package can be re-enabled for sharing once chrome starts providing global routing package to all applications
6060
*/
6161
// exclude: ['react-router-dom'],
62-
exclude: ['axios'], // Setting the base URL affects Cost Management APIs in OCM, when navigating between apps
6362
exposes: {
6463
'./RootApp': path.resolve(__dirname, './src/appEntry.tsx'),
6564
// Shared component module path. Must include default export!

src/api/accountSettings.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios from 'axios';
1+
import { axiosInstance } from 'api';
22

33
import type { PagedLinks, PagedMetaData } from './api';
44

@@ -38,10 +38,10 @@ export const AccountSettingsTypePaths: Partial<Record<AccountSettingsType, strin
3838

3939
export function fetchAccountSettings(settingsType: AccountSettingsType) {
4040
const path = AccountSettingsTypePaths[settingsType];
41-
return axios.get<AccountSettings>(`${path}`);
41+
return axiosInstance.get<AccountSettings>(`${path}`);
4242
}
4343

4444
export function updateAccountSettings(settingsType: AccountSettingsType, payload: AccountSettingsPayload) {
4545
const path = AccountSettingsTypePaths[settingsType];
46-
return axios.put(`${path}`, payload);
46+
return axiosInstance.put(`${path}`, payload);
4747
}

src/api/api.ts

+17-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { AxiosRequestConfig } from 'axios';
1+
import type { AxiosInstance, AxiosRequestConfig } from 'axios';
22
import axios from 'axios';
33

44
export interface PagedMetaData {
@@ -18,10 +18,10 @@ export interface PagedResponse<D = any, M = any> {
1818
data: D[];
1919
}
2020

21-
export function initApi({ version }: { version: string }) {
22-
axios.defaults.baseURL = `/api/cost-management/${version}/`;
23-
axios.interceptors.request.use(authInterceptor);
24-
}
21+
// export function initApi({ version }: { version: string }) {
22+
// axios.defaults.baseURL = `/api/cost-management/${version}/`;
23+
// axios.interceptors.request.use(authInterceptor);
24+
// }
2525

2626
export function authInterceptor(reqConfig: AxiosRequestConfig) {
2727
return {
@@ -31,3 +31,15 @@ export function authInterceptor(reqConfig: AxiosRequestConfig) {
3131
} as any,
3232
};
3333
}
34+
35+
// Create an Axios instance
36+
//
37+
// Note: Setting global defaults may affect the base URL in Cost Management, HCS, and OCM, when navigating between apps
38+
// See https://issues.redhat.com/browse/RHCLOUD-25573
39+
const axiosInstance: AxiosInstance = axios.create({
40+
baseURL: '/api/cost-management/v1/',
41+
});
42+
43+
axiosInstance.interceptors.request.use(authInterceptor);
44+
45+
export default axiosInstance;

src/api/forecasts/ocpCloudForecast.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios from 'axios';
1+
import { axiosInstance } from 'api';
22

33
import type { Forecast } from './forecast';
44
import { ForecastType } from './forecast';
@@ -9,5 +9,5 @@ export const ForecastTypePaths: Partial<Record<ForecastType, string>> = {
99

1010
export function runForecast(forecastType: ForecastType, query: string) {
1111
const path = ForecastTypePaths[forecastType];
12-
return axios.get<Forecast>(`${path}?${query}`);
12+
return axiosInstance.get<Forecast>(`${path}?${query}`);
1313
}

src/api/forecasts/ocpForecast.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios from 'axios';
1+
import { axiosInstance } from 'api';
22

33
import type { Forecast } from './forecast';
44
import { ForecastType } from './forecast';
@@ -11,5 +11,5 @@ export const ForecastTypePaths: Partial<Record<ForecastType, string>> = {
1111

1212
export function runForecast(forecastType: ForecastType, query: string) {
1313
const path = ForecastTypePaths[forecastType];
14-
return axios.get<Forecast>(`${path}?${query}`);
14+
return axiosInstance.get<Forecast>(`${path}?${query}`);
1515
}

src/api/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export { initApi } from './api';
1+
export { default as axiosInstance } from './api';

src/api/providers.test.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1+
import { axiosInstance } from 'api';
12
import { getProvidersQuery } from 'api/queries/providersQuery';
2-
import axios from 'axios';
33
import { awsProvidersQuery } from 'store/providers/providersCommon';
44

55
import { fetchProviders } from './providers';
66

7-
test('api get provider calls axios.get', () => {
7+
test('api get provider calls axiosInstance.get', () => {
88
const query = getProvidersQuery(awsProvidersQuery);
99
fetchProviders(query);
10-
expect(axios.get).toBeCalledWith('sources/?limit=100&type=AWS');
10+
expect(axiosInstance.get).toBeCalledWith('sources/?limit=100&type=AWS');
1111
});

src/api/providers.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios from 'axios';
1+
import { axiosInstance } from 'api';
22

33
import type { PagedMetaData, PagedResponse } from './api';
44

@@ -73,5 +73,5 @@ export const enum ProviderType {
7373

7474
export function fetchProviders(query: string) {
7575
const queryString = query ? `?${query}` : '';
76-
return axios.get<Providers>(`sources/${queryString}`);
76+
return axiosInstance.get<Providers>(`sources/${queryString}`);
7777
}
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1+
import { axiosInstance } from 'api';
12
import { ReportType } from 'api/reports/report';
2-
import axios from 'axios';
33

44
import { runReport } from './ocpCloudReports';
55

66
test('api run reports calls axios get', () => {
77
const query = 'filter[resolution]=daily';
88
runReport(ReportType.cost, query);
9-
expect(axios.get).toBeCalledWith(`reports/openshift/infrastructures/all/costs/?${query}`);
9+
expect(axiosInstance.get).toBeCalledWith(`reports/openshift/infrastructures/all/costs/?${query}`);
1010
});

src/api/reports/ocpCloudReports.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios from 'axios';
1+
import { axiosInstance } from 'api';
22

33
import type { Report, ReportData, ReportItem, ReportItemValue, ReportMeta, ReportValue } from './report';
44
import { ReportType } from './report';
@@ -81,5 +81,5 @@ export const ReportTypePaths: Partial<Record<ReportType, string>> = {
8181

8282
export function runReport(reportType: ReportType, query: string) {
8383
const path = ReportTypePaths[reportType];
84-
return axios.get<OcpCloudReport>(`${path}?${query}`);
84+
return axiosInstance.get<OcpCloudReport>(`${path}?${query}`);
8585
}

src/api/reports/ocpReports.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1+
import { axiosInstance } from 'api';
12
import { ReportType } from 'api/reports/report';
2-
import axios from 'axios';
33

44
import { runReport } from './ocpReports';
55

66
test('api run reports calls axios get', () => {
77
const query = 'filter[resolution]=daily';
88
runReport(ReportType.cost, query);
9-
expect(axios.get).toBeCalledWith(`reports/openshift/costs/?${query}`);
9+
expect(axiosInstance.get).toBeCalledWith(`reports/openshift/costs/?${query}`);
1010
});

src/api/reports/ocpReports.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios from 'axios';
1+
import { axiosInstance } from 'api';
22

33
import type { Report, ReportData, ReportItem, ReportItemValue, ReportMeta, ReportValue } from './report';
44
import { ReportType } from './report';
@@ -66,5 +66,5 @@ export const ReportTypePaths: Partial<Record<ReportType, string>> = {
6666

6767
export function runReport(reportType: ReportType, query: string) {
6868
const path = ReportTypePaths[reportType];
69-
return axios.get<OcpReport>(`${path}?${query}`);
69+
return axiosInstance.get<OcpReport>(`${path}?${query}`);
7070
}

src/api/resources/ocpResource.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios from 'axios';
1+
import { axiosInstance } from 'api';
22

33
import type { Resource } from './resource';
44
import { ResourceType } from './resource';
@@ -11,5 +11,5 @@ export const ResourceTypePaths: Partial<Record<ResourceType, string>> = {
1111

1212
export function runResource(resourceType: ResourceType, query: string) {
1313
const path = ResourceTypePaths[resourceType];
14-
return axios.get<Resource>(`${path}?${query}`);
14+
return axiosInstance.get<Resource>(`${path}?${query}`);
1515
}

src/api/ros/recommendations.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1+
import { axiosInstance } from 'api';
12
import { RosType } from 'api/ros/ros';
2-
import axios from 'axios';
33

44
import { runRosReports } from './recommendations';
55

66
test('api run reports calls axios get', () => {
77
const query = 'limit=10';
88
runRosReports(RosType.ros, query);
9-
expect(axios.get).toBeCalledWith(`recommendations/openshift?${query}`);
9+
expect(axiosInstance.get).toBeCalledWith(`recommendations/openshift?${query}`);
1010
});

src/api/ros/recommendations.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios from 'axios';
1+
import { axiosInstance } from 'api';
22

33
import type { RosData, RosMeta, RosReport } from './ros';
44
import { RosType } from './ros';
@@ -97,12 +97,12 @@ export const RosTypePaths: Partial<Record<RosType, string>> = {
9797
export function runRosReport(reportType: RosType, query: string) {
9898
const path = RosTypePaths[reportType];
9999
const queryString = query ? `/${query}` : '';
100-
return axios.get<RecommendationReport>(`${path}${queryString}`);
100+
return axiosInstance.get<RecommendationReport>(`${path}${queryString}`);
101101
}
102102

103103
// This fetches a recommendations list
104104
export function runRosReports(reportType: RosType, query: string) {
105105
const path = RosTypePaths[reportType];
106106
const queryString = query ? `?${query}` : '';
107-
return axios.get<RecommendationReport>(`${path}${queryString}`);
107+
return axiosInstance.get<RecommendationReport>(`${path}${queryString}`);
108108
}

src/api/userAccess.test.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1+
import { axiosInstance } from 'api';
12
import { getUserAccessQuery } from 'api/queries/userAccessQuery';
2-
import axios from 'axios';
33
import { awsUserAccessQuery } from 'store/userAccess/userAccessCommon';
44

55
import { fetchUserAccess } from './userAccess';
66

7-
test('api get provider calls axios.get', () => {
7+
test('api get provider calls axiosInstance.get', () => {
88
const query = getUserAccessQuery(awsUserAccessQuery);
99
fetchUserAccess(query);
10-
expect(axios.get).toBeCalledWith('user-access/?type=AWS');
10+
expect(axiosInstance.get).toBeCalledWith('user-access/?type=AWS');
1111
});

src/api/userAccess.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import axios from 'axios';
1+
import { axiosInstance } from 'api';
22

33
import type { PagedLinks, PagedMetaData } from './api';
44

@@ -35,5 +35,5 @@ export const enum UserAccessType {
3535
// If the user-access API is called without a query parameter, all types are returned in the response
3636
export function fetchUserAccess(query: string) {
3737
const queryString = query ? `?${query}` : '';
38-
return axios.get<UserAccess>(`user-access/${queryString}`);
38+
return axiosInstance.get<UserAccess>(`user-access/${queryString}`);
3939
}

src/appEntry.tsx

-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
/* eslint-disable no-console */
22
import NotificationsPortal from '@redhat-cloud-services/frontend-components-notifications/NotificationPortal';
33
import IntlProvider from '@redhat-cloud-services/frontend-components-translations/Provider';
4-
import { initApi } from 'api/api';
54
import { getLocale } from 'components/i18n';
65
import React from 'react';
76
import { Provider } from 'react-redux';
@@ -20,11 +19,6 @@ import './styles/global.css';
2019
const AppEntry = () => {
2120
const locale = getLocale();
2221

23-
// Initialize here https://issues.redhat.com/browse/RHCLOUD-25573
24-
initApi({
25-
version: 'v1',
26-
});
27-
2822
return (
2923
<IntlProvider defaultLocale="en" locale={locale} messages={messages[locale]} onError={console.log}>
3024
<Provider store={mfeStore as any}>

src/store/store.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { notificationsMiddleware } from '@redhat-cloud-services/frontend-components-notifications/notificationsMiddleware';
22
import { configureStore as createStore } from '@reduxjs/toolkit';
3-
import axios from 'axios';
3+
import { axiosInstance } from 'api';
44

55
import type { RootState } from './rootReducer';
66
import { rootReducer } from './rootReducer';
@@ -22,7 +22,7 @@ export function configureStore(initialState: Partial<RootState>) {
2222
reducer: rootReducer,
2323
});
2424

25-
axios.interceptors.response.use(null, error => {
25+
axiosInstance.interceptors.response.use(null, error => {
2626
return Promise.reject(error);
2727
});
2828

0 commit comments

Comments
 (0)