All endpoints except annotations, source maps, and agent configuration are now at /internal/apm instead of /api/apm. None of the UX endpoints have been updated, only APM. If you search for "/api/apm" in the codebase, you should only see the above endpoints. Fixes #113383. # Conflicts: # x-pack/plugins/apm/public/components/shared/MetadataTable/ErrorMetadata/index.tsx # x-pack/plugins/apm/public/components/shared/MetadataTable/SpanMetadata/index.tsx # x-pack/plugins/apm/public/components/shared/MetadataTable/TransactionMetadata/index.tsx # x-pack/plugins/apm/server/routes/event_metadata.ts # x-pack/test/apm_api_integration/tests/metadata/event_metadata.ts # x-pack/test/apm_api_integration/tests/services/throughput.ts
This commit is contained in:
parent
50908d8542
commit
f6e4f1b225
|
@ -46,4 +46,4 @@ This will create:
|
||||||
All APM api endpoints accept `_inspect=true` as a query param that will output all Elasticsearch queries performed in that request. It will be available in the browser response and on localhost it is also available in the Kibana Node.js process output.
|
All APM api endpoints accept `_inspect=true` as a query param that will output all Elasticsearch queries performed in that request. It will be available in the browser response and on localhost it is also available in the Kibana Node.js process output.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
`/api/apm/services/my_service?_inspect=true`
|
`/internal/apm/services/my_service?_inspect=true`
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*/
|
*/
|
||||||
/* eslint-disable @typescript-eslint/naming-convention */
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
|
|
||||||
const apmIndicesSaveURL = '/api/apm/settings/apm-indices/save';
|
const apmIndicesSaveURL = '/internal/apm/settings/apm-indices/save';
|
||||||
|
|
||||||
describe('No data screen', () => {
|
describe('No data screen', () => {
|
||||||
describe('bypass no data screen on settings pages', () => {
|
describe('bypass no data screen on settings pages', () => {
|
||||||
|
|
|
@ -17,11 +17,11 @@ const serviceInventoryHref = url.format({
|
||||||
|
|
||||||
const apisToIntercept = [
|
const apisToIntercept = [
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/service?*',
|
endpoint: '/internal/apm/service?*',
|
||||||
name: 'servicesMainStatistics',
|
name: 'servicesMainStatistics',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/services/detailed_statistics?*',
|
endpoint: '/internal/apm/services/detailed_statistics?*',
|
||||||
name: 'servicesDetailedStatistics',
|
name: 'servicesDetailedStatistics',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -16,43 +16,47 @@ const serviceOverviewHref = url.format({
|
||||||
|
|
||||||
const apisToIntercept = [
|
const apisToIntercept = [
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/services/opbeans-node/transactions/charts/latency?*',
|
endpoint:
|
||||||
|
'/internal/apm/services/opbeans-node/transactions/charts/latency?*',
|
||||||
name: 'latencyChartRequest',
|
name: 'latencyChartRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/services/opbeans-node/throughput?*',
|
endpoint: '/internal/apm/services/opbeans-node/throughput?*',
|
||||||
name: 'throughputChartRequest',
|
name: 'throughputChartRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/services/opbeans-node/transactions/charts/error_rate?*',
|
endpoint:
|
||||||
|
'/internal/apm/services/opbeans-node/transactions/charts/error_rate?*',
|
||||||
name: 'errorRateChartRequest',
|
name: 'errorRateChartRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-node/transactions/groups/detailed_statistics?*',
|
'/internal/apm/services/opbeans-node/transactions/groups/detailed_statistics?*',
|
||||||
name: 'transactionGroupsDetailedRequest',
|
name: 'transactionGroupsDetailedRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-node/service_overview_instances/detailed_statistics?*',
|
'/internal/apm/services/opbeans-node/service_overview_instances/detailed_statistics?*',
|
||||||
name: 'instancesDetailedRequest',
|
name: 'instancesDetailedRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-node/service_overview_instances/main_statistics?*',
|
'/internal/apm/services/opbeans-node/service_overview_instances/main_statistics?*',
|
||||||
name: 'instancesMainStatisticsRequest',
|
name: 'instancesMainStatisticsRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/services/opbeans-node/error_groups/main_statistics?*',
|
endpoint:
|
||||||
|
'/internal/apm/services/opbeans-node/error_groups/main_statistics?*',
|
||||||
name: 'errorGroupsMainStatisticsRequest',
|
name: 'errorGroupsMainStatisticsRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/services/opbeans-node/transaction/charts/breakdown?*',
|
endpoint:
|
||||||
|
'/internal/apm/services/opbeans-node/transaction/charts/breakdown?*',
|
||||||
name: 'transactonBreakdownRequest',
|
name: 'transactonBreakdownRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-node/transactions/groups/main_statistics?*',
|
'/internal/apm/services/opbeans-node/transactions/groups/main_statistics?*',
|
||||||
name: 'transactionsGroupsMainStatisticsRequest',
|
name: 'transactionsGroupsMainStatisticsRequest',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -18,17 +18,17 @@ const serviceOverviewHref = url.format({
|
||||||
const apisToIntercept = [
|
const apisToIntercept = [
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-java/service_overview_instances/main_statistics?*',
|
'/internal/apm/services/opbeans-java/service_overview_instances/main_statistics?*',
|
||||||
name: 'instancesMainRequest',
|
name: 'instancesMainRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-java/service_overview_instances/detailed_statistics?*',
|
'/internal/apm/services/opbeans-java/service_overview_instances/detailed_statistics?*',
|
||||||
name: 'instancesDetailsRequest',
|
name: 'instancesDetailsRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-java/service_overview_instances/details/31651f3c624b81c55dd4633df0b5b9f9ab06b151121b0404ae796632cd1f87ad?*',
|
'/internal/apm/services/opbeans-java/service_overview_instances/details/31651f3c624b81c55dd4633df0b5b9f9ab06b151121b0404ae796632cd1f87ad?*',
|
||||||
name: 'instanceDetailsRequest',
|
name: 'instanceDetailsRequest',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -59,7 +59,7 @@ describe('Service Overview', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('hides dependency tab when RUM service', () => {
|
it('hides dependency tab when RUM service', () => {
|
||||||
cy.intercept('GET', '/api/apm/services/opbeans-rum/agent?*').as(
|
cy.intercept('GET', '/internal/apm/services/opbeans-rum/agent?*').as(
|
||||||
'agentRequest'
|
'agentRequest'
|
||||||
);
|
);
|
||||||
cy.visit(
|
cy.visit(
|
||||||
|
|
|
@ -18,30 +18,32 @@ const serviceOverviewHref = url.format({
|
||||||
|
|
||||||
const apisToIntercept = [
|
const apisToIntercept = [
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/services/opbeans-java/transactions/charts/latency?*',
|
endpoint:
|
||||||
|
'/internal/apm/services/opbeans-java/transactions/charts/latency?*',
|
||||||
name: 'latencyChartRequest',
|
name: 'latencyChartRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/services/opbeans-java/throughput?*',
|
endpoint: '/internal/apm/services/opbeans-java/throughput?*',
|
||||||
name: 'throughputChartRequest',
|
name: 'throughputChartRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint: '/api/apm/services/opbeans-java/transactions/charts/error_rate?*',
|
endpoint:
|
||||||
|
'/internal/apm/services/opbeans-java/transactions/charts/error_rate?*',
|
||||||
name: 'errorRateChartRequest',
|
name: 'errorRateChartRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-java/transactions/groups/detailed_statistics?*',
|
'/internal/apm/services/opbeans-java/transactions/groups/detailed_statistics?*',
|
||||||
name: 'transactionGroupsDetailedRequest',
|
name: 'transactionGroupsDetailedRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-java/error_groups/detailed_statistics?*',
|
'/internal/apm/services/opbeans-java/error_groups/detailed_statistics?*',
|
||||||
name: 'errorGroupsDetailedRequest',
|
name: 'errorGroupsDetailedRequest',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
endpoint:
|
endpoint:
|
||||||
'/api/apm/services/opbeans-java/service_overview_instances/detailed_statistics?*',
|
'/internal/apm/services/opbeans-java/service_overview_instances/detailed_statistics?*',
|
||||||
name: 'instancesDetailedRequest',
|
name: 'instancesDetailedRequest',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -61,7 +61,8 @@ export function ErrorCountAlertTrigger(props: Props) {
|
||||||
});
|
});
|
||||||
if (interval && start && end) {
|
if (interval && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/alerts/chart_preview/transaction_error_count',
|
endpoint:
|
||||||
|
'GET /internal/apm/alerts/chart_preview/transaction_error_count',
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
environment: params.environment,
|
environment: params.environment,
|
||||||
|
|
|
@ -99,7 +99,8 @@ export function TransactionDurationAlertTrigger(props: Props) {
|
||||||
});
|
});
|
||||||
if (interval && start && end) {
|
if (interval && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/alerts/chart_preview/transaction_duration',
|
endpoint:
|
||||||
|
'GET /internal/apm/alerts/chart_preview/transaction_duration',
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
aggregationType: params.aggregationType,
|
aggregationType: params.aggregationType,
|
||||||
|
|
|
@ -68,7 +68,8 @@ export function TransactionErrorRateAlertTrigger(props: Props) {
|
||||||
});
|
});
|
||||||
if (interval && start && end) {
|
if (interval && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/alerts/chart_preview/transaction_error_rate',
|
endpoint:
|
||||||
|
'GET /internal/apm/alerts/chart_preview/transaction_error_rate',
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
environment: params.environment,
|
environment: params.environment,
|
||||||
|
|
|
@ -76,7 +76,7 @@ async function saveApmIndices({
|
||||||
apmIndices: Record<string, string>;
|
apmIndices: Record<string, string>;
|
||||||
}) {
|
}) {
|
||||||
await callApmApi({
|
await callApmApi({
|
||||||
endpoint: 'POST /api/apm/settings/apm-indices/save',
|
endpoint: 'POST /internal/apm/settings/apm-indices/save',
|
||||||
signal: null,
|
signal: null,
|
||||||
params: {
|
params: {
|
||||||
body: apmIndices,
|
body: apmIndices,
|
||||||
|
@ -86,7 +86,8 @@ async function saveApmIndices({
|
||||||
clearCache();
|
clearCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
type ApiResponse = APIReturnType<`GET /api/apm/settings/apm-index-settings`>;
|
type ApiResponse =
|
||||||
|
APIReturnType<`GET /internal/apm/settings/apm-index-settings`>;
|
||||||
|
|
||||||
// avoid infinite loop by initializing the state outside the component
|
// avoid infinite loop by initializing the state outside the component
|
||||||
const INITIAL_STATE: ApiResponse = { apmIndexSettings: [] };
|
const INITIAL_STATE: ApiResponse = { apmIndexSettings: [] };
|
||||||
|
@ -103,7 +104,7 @@ export function ApmIndices() {
|
||||||
(_callApmApi) => {
|
(_callApmApi) => {
|
||||||
if (canSave) {
|
if (canSave) {
|
||||||
return _callApmApi({
|
return _callApmApi({
|
||||||
endpoint: `GET /api/apm/settings/apm-index-settings`,
|
endpoint: `GET /internal/apm/settings/apm-index-settings`,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -35,7 +35,7 @@ interface Props {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ApiResponse =
|
type ApiResponse =
|
||||||
APIReturnType<'GET /api/apm/settings/anomaly-detection/environments'>;
|
APIReturnType<'GET /internal/apm/settings/anomaly-detection/environments'>;
|
||||||
const INITIAL_DATA: ApiResponse = { environments: [] };
|
const INITIAL_DATA: ApiResponse = { environments: [] };
|
||||||
|
|
||||||
export function AddEnvironments({
|
export function AddEnvironments({
|
||||||
|
@ -50,7 +50,7 @@ export function AddEnvironments({
|
||||||
const { data = INITIAL_DATA, status } = useFetcher(
|
const { data = INITIAL_DATA, status } = useFetcher(
|
||||||
(callApmApi) =>
|
(callApmApi) =>
|
||||||
callApmApi({
|
callApmApi({
|
||||||
endpoint: `GET /api/apm/settings/anomaly-detection/environments`,
|
endpoint: `GET /internal/apm/settings/anomaly-detection/environments`,
|
||||||
}),
|
}),
|
||||||
[],
|
[],
|
||||||
{ preservePreviousData: false }
|
{ preservePreviousData: false }
|
||||||
|
|
|
@ -28,7 +28,7 @@ export async function createJobs({
|
||||||
}) {
|
}) {
|
||||||
try {
|
try {
|
||||||
await callApmApi({
|
await callApmApi({
|
||||||
endpoint: 'POST /api/apm/settings/anomaly-detection/jobs',
|
endpoint: 'POST /internal/apm/settings/anomaly-detection/jobs',
|
||||||
signal: null,
|
signal: null,
|
||||||
params: {
|
params: {
|
||||||
body: { environments },
|
body: { environments },
|
||||||
|
|
|
@ -17,7 +17,7 @@ import { useLicenseContext } from '../../../../context/license/use_license_conte
|
||||||
import { APIReturnType } from '../../../../services/rest/createCallApmApi';
|
import { APIReturnType } from '../../../../services/rest/createCallApmApi';
|
||||||
|
|
||||||
export type AnomalyDetectionApiResponse =
|
export type AnomalyDetectionApiResponse =
|
||||||
APIReturnType<'GET /api/apm/settings/anomaly-detection/jobs'>;
|
APIReturnType<'GET /internal/apm/settings/anomaly-detection/jobs'>;
|
||||||
|
|
||||||
const DEFAULT_VALUE: AnomalyDetectionApiResponse = {
|
const DEFAULT_VALUE: AnomalyDetectionApiResponse = {
|
||||||
jobs: [],
|
jobs: [],
|
||||||
|
@ -40,7 +40,7 @@ export function AnomalyDetection() {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (canGetJobs) {
|
if (canGetJobs) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: `GET /api/apm/settings/anomaly-detection/jobs`,
|
endpoint: `GET /internal/apm/settings/anomaly-detection/jobs`,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -49,7 +49,7 @@ async function deleteConfig(
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
await callApmApi({
|
await callApmApi({
|
||||||
endpoint: 'DELETE /api/apm/settings/custom_links/{id}',
|
endpoint: 'DELETE /internal/apm/settings/custom_links/{id}',
|
||||||
signal: null,
|
signal: null,
|
||||||
params: {
|
params: {
|
||||||
path: { id: customLinkId },
|
path: { id: customLinkId },
|
||||||
|
|
|
@ -34,7 +34,7 @@ const fetchTransaction = debounce(
|
||||||
async (filters: Filter[], callback: (transaction: Transaction) => void) => {
|
async (filters: Filter[], callback: (transaction: Transaction) => void) => {
|
||||||
const transaction = await callApmApi({
|
const transaction = await callApmApi({
|
||||||
signal: null,
|
signal: null,
|
||||||
endpoint: 'GET /api/apm/settings/custom_links/transaction',
|
endpoint: 'GET /internal/apm/settings/custom_links/transaction',
|
||||||
params: { query: convertFiltersToQuery(filters) },
|
params: { query: convertFiltersToQuery(filters) },
|
||||||
});
|
});
|
||||||
callback(transaction);
|
callback(transaction);
|
||||||
|
|
|
@ -35,7 +35,7 @@ export async function saveCustomLink({
|
||||||
|
|
||||||
if (id) {
|
if (id) {
|
||||||
await callApmApi({
|
await callApmApi({
|
||||||
endpoint: 'PUT /api/apm/settings/custom_links/{id}',
|
endpoint: 'PUT /internal/apm/settings/custom_links/{id}',
|
||||||
signal: null,
|
signal: null,
|
||||||
params: {
|
params: {
|
||||||
path: { id },
|
path: { id },
|
||||||
|
@ -44,7 +44,7 @@ export async function saveCustomLink({
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
await callApmApi({
|
await callApmApi({
|
||||||
endpoint: 'POST /api/apm/settings/custom_links',
|
endpoint: 'POST /internal/apm/settings/custom_links',
|
||||||
signal: null,
|
signal: null,
|
||||||
params: {
|
params: {
|
||||||
body: customLink,
|
body: customLink,
|
||||||
|
|
|
@ -38,7 +38,7 @@ export function CustomLinkOverview() {
|
||||||
async (callApmApi) => {
|
async (callApmApi) => {
|
||||||
if (hasValidLicense) {
|
if (hasValidLicense) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/settings/custom_links',
|
endpoint: 'GET /internal/apm/settings/custom_links',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -20,7 +20,7 @@ import {
|
||||||
import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context';
|
import { useApmPluginContext } from '../../../../context/apm_plugin/use_apm_plugin_context';
|
||||||
|
|
||||||
type FleetMigrationCheckResponse =
|
type FleetMigrationCheckResponse =
|
||||||
APIReturnType<'GET /api/apm/fleet/migration_check'>;
|
APIReturnType<'GET /internal/apm/fleet/migration_check'>;
|
||||||
|
|
||||||
const APM_DATA_STREAMS_MIGRATION_STATUS_LS = {
|
const APM_DATA_STREAMS_MIGRATION_STATUS_LS = {
|
||||||
value: '',
|
value: '',
|
||||||
|
@ -46,7 +46,8 @@ export function Schema() {
|
||||||
data = {} as FleetMigrationCheckResponse,
|
data = {} as FleetMigrationCheckResponse,
|
||||||
status,
|
status,
|
||||||
} = useFetcher(
|
} = useFetcher(
|
||||||
(callApi) => callApi({ endpoint: 'GET /api/apm/fleet/migration_check' }),
|
(callApi) =>
|
||||||
|
callApi({ endpoint: 'GET /internal/apm/fleet/migration_check' }),
|
||||||
[],
|
[],
|
||||||
{ preservePreviousData: false }
|
{ preservePreviousData: false }
|
||||||
);
|
);
|
||||||
|
@ -118,7 +119,7 @@ async function getUnsupportedApmServerConfigs(
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
const { unsupported } = await callApmApi({
|
const { unsupported } = await callApmApi({
|
||||||
endpoint: 'GET /api/apm/fleet/apm_server_schema/unsupported',
|
endpoint: 'GET /internal/apm/fleet/apm_server_schema/unsupported',
|
||||||
signal: null,
|
signal: null,
|
||||||
});
|
});
|
||||||
return unsupported;
|
return unsupported;
|
||||||
|
@ -142,7 +143,7 @@ async function createCloudApmPackagePolicy(
|
||||||
updateLocalStorage(FETCH_STATUS.LOADING);
|
updateLocalStorage(FETCH_STATUS.LOADING);
|
||||||
try {
|
try {
|
||||||
const { cloudApmPackagePolicy } = await callApmApi({
|
const { cloudApmPackagePolicy } = await callApmApi({
|
||||||
endpoint: 'POST /api/apm/fleet/cloud_apm_package_policy',
|
endpoint: 'POST /internal/apm/fleet/cloud_apm_package_policy',
|
||||||
signal: null,
|
signal: null,
|
||||||
});
|
});
|
||||||
updateLocalStorage(FETCH_STATUS.SUCCESS);
|
updateLocalStorage(FETCH_STATUS.SUCCESS);
|
||||||
|
|
|
@ -29,7 +29,7 @@ export function TraceLink() {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (traceId) {
|
if (traceId) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/traces/{traceId}/root_transaction',
|
endpoint: 'GET /internal/apm/traces/{traceId}/root_transaction',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
traceId,
|
traceId,
|
||||||
|
|
|
@ -44,7 +44,7 @@ export function BackendDetailDependenciesTable() {
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/backends/{backendName}/upstream_services',
|
endpoint: 'GET /internal/apm/backends/{backendName}/upstream_services',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
backendName,
|
backendName,
|
||||||
|
|
|
@ -44,7 +44,7 @@ export function BackendFailedTransactionRateChart({
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/backends/{backendName}/charts/error_rate',
|
endpoint: 'GET /internal/apm/backends/{backendName}/charts/error_rate',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
backendName,
|
backendName,
|
||||||
|
|
|
@ -40,7 +40,7 @@ export function BackendLatencyChart({ height }: { height: number }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/backends/{backendName}/charts/latency',
|
endpoint: 'GET /internal/apm/backends/{backendName}/charts/latency',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
backendName,
|
backendName,
|
||||||
|
|
|
@ -36,7 +36,7 @@ export function BackendThroughputChart({ height }: { height: number }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/backends/{backendName}/charts/throughput',
|
endpoint: 'GET /internal/apm/backends/{backendName}/charts/throughput',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
backendName,
|
backendName,
|
||||||
|
|
|
@ -45,7 +45,7 @@ export function BackendInventoryDependenciesTable() {
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/backends/top_backends',
|
endpoint: 'GET /internal/apm/backends/top_backends',
|
||||||
params: {
|
params: {
|
||||||
query: { start, end, environment, numBuckets: 20, offset, kuery },
|
query: { start, end, environment, numBuckets: 20, offset, kuery },
|
||||||
},
|
},
|
||||||
|
|
|
@ -35,7 +35,7 @@ const ALERT_RULE_TYPE_ID: typeof ALERT_RULE_TYPE_ID_TYPED =
|
||||||
ALERT_RULE_TYPE_ID_NON_TYPED;
|
ALERT_RULE_TYPE_ID_NON_TYPED;
|
||||||
|
|
||||||
type ErrorDistributionAPIResponse =
|
type ErrorDistributionAPIResponse =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/errors/distribution'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/errors/distribution'>;
|
||||||
|
|
||||||
interface FormattedBucket {
|
interface FormattedBucket {
|
||||||
x0: number;
|
x0: number;
|
||||||
|
|
|
@ -54,7 +54,7 @@ const TransactionLinkName = euiStyled.div`
|
||||||
`;
|
`;
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
errorGroup: APIReturnType<'GET /api/apm/services/{serviceName}/errors/{groupId}'>;
|
errorGroup: APIReturnType<'GET /internal/apm/services/{serviceName}/errors/{groupId}'>;
|
||||||
urlParams: ApmUrlParams;
|
urlParams: ApmUrlParams;
|
||||||
kuery: string;
|
kuery: string;
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ export function ErrorGroupDetails() {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (start && end) {
|
if (start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/errors/{groupId}',
|
endpoint: 'GET /internal/apm/services/{serviceName}/errors/{groupId}',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -48,7 +48,7 @@ const Culprit = euiStyled.div`
|
||||||
`;
|
`;
|
||||||
|
|
||||||
type ErrorGroupItem =
|
type ErrorGroupItem =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/errors'>['errorGroups'][0];
|
APIReturnType<'GET /internal/apm/services/{serviceName}/errors'>['errorGroups'][0];
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
items: ErrorGroupItem[];
|
items: ErrorGroupItem[];
|
||||||
|
|
|
@ -44,7 +44,7 @@ export function ErrorGroupOverview() {
|
||||||
|
|
||||||
if (start && end) {
|
if (start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/errors',
|
endpoint: 'GET /internal/apm/services/{serviceName}/errors',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -29,7 +29,8 @@ export function ServiceDependenciesBreakdownChart({
|
||||||
const { data, status } = useFetcher(
|
const { data, status } = useFetcher(
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/dependencies/breakdown',
|
endpoint:
|
||||||
|
'GET /internal/apm/services/{serviceName}/dependencies/breakdown',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -64,7 +64,7 @@ function useServicesFetcher() {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (start && end) {
|
if (start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services',
|
endpoint: 'GET /internal/apm/services',
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
environment,
|
environment,
|
||||||
|
@ -90,7 +90,7 @@ function useServicesFetcher() {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (start && end && mainStatisticsData.items.length) {
|
if (start && end && mainStatisticsData.items.length) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/detailed_statistics',
|
endpoint: 'GET /internal/apm/services/detailed_statistics',
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
environment,
|
environment,
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import { APIReturnType } from '../../../../../services/rest/createCallApmApi';
|
import { APIReturnType } from '../../../../../services/rest/createCallApmApi';
|
||||||
|
|
||||||
type ServiceListAPIResponse = APIReturnType<'GET /api/apm/services'>;
|
type ServiceListAPIResponse = APIReturnType<'GET /internal/apm/services'>;
|
||||||
|
|
||||||
export const items: ServiceListAPIResponse['items'] = [
|
export const items: ServiceListAPIResponse['items'] = [
|
||||||
{
|
{
|
||||||
|
|
|
@ -43,10 +43,10 @@ import { ServiceLink } from '../../../shared/service_link';
|
||||||
import { TruncateWithTooltip } from '../../../shared/truncate_with_tooltip';
|
import { TruncateWithTooltip } from '../../../shared/truncate_with_tooltip';
|
||||||
import { HealthBadge } from './HealthBadge';
|
import { HealthBadge } from './HealthBadge';
|
||||||
|
|
||||||
type ServiceListAPIResponse = APIReturnType<'GET /api/apm/services'>;
|
type ServiceListAPIResponse = APIReturnType<'GET /internal/apm/services'>;
|
||||||
type Items = ServiceListAPIResponse['items'];
|
type Items = ServiceListAPIResponse['items'];
|
||||||
type ServicesDetailedStatisticsAPIResponse =
|
type ServicesDetailedStatisticsAPIResponse =
|
||||||
APIReturnType<'GET /api/apm/services/detailed_statistics'>;
|
APIReturnType<'GET /internal/apm/services/detailed_statistics'>;
|
||||||
|
|
||||||
type ServiceListItem = ValuesType<Items>;
|
type ServiceListItem = ValuesType<Items>;
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ describe('ServiceList', () => {
|
||||||
|
|
||||||
const callApmApiSpy = getCallApmApiSpy().mockImplementation(
|
const callApmApiSpy = getCallApmApiSpy().mockImplementation(
|
||||||
({ endpoint }) => {
|
({ endpoint }) => {
|
||||||
if (endpoint === 'GET /api/apm/fallback_to_transactions') {
|
if (endpoint === 'GET /internal/apm/fallback_to_transactions') {
|
||||||
return Promise.resolve({ fallbackToTransactions: false });
|
return Promise.resolve({ fallbackToTransactions: false });
|
||||||
}
|
}
|
||||||
return Promise.reject(`Response for ${endpoint} is not defined`);
|
return Promise.reject(`Response for ${endpoint} is not defined`);
|
||||||
|
|
|
@ -35,7 +35,7 @@ export function ServiceLogs() {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (start && end) {
|
if (start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/infrastructure',
|
endpoint: 'GET /internal/apm/services/{serviceName}/infrastructure',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
@ -92,7 +92,7 @@ export function ServiceLogs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getInfrastructureKQLFilter = (
|
export const getInfrastructureKQLFilter = (
|
||||||
data?: APIReturnType<'GET /api/apm/services/{serviceName}/infrastructure'>
|
data?: APIReturnType<'GET /internal/apm/services/{serviceName}/infrastructure'>
|
||||||
) => {
|
) => {
|
||||||
const containerIds = data?.serviceInfrastructure?.containerIds ?? [];
|
const containerIds = data?.serviceInfrastructure?.containerIds ?? [];
|
||||||
const hostNames = data?.serviceInfrastructure?.hostNames ?? [];
|
const hostNames = data?.serviceInfrastructure?.hostNames ?? [];
|
||||||
|
|
|
@ -38,7 +38,7 @@ export function BackendContents({
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (backendName) {
|
if (backendName) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/service-map/backend/{backendName}',
|
endpoint: 'GET /internal/apm/service-map/backend/{backendName}',
|
||||||
params: {
|
params: {
|
||||||
path: { backendName },
|
path: { backendName },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -47,7 +47,7 @@ export function ServiceContents({
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (serviceName && start && end) {
|
if (serviceName && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/service-map/service/{serviceName}',
|
endpoint: 'GET /internal/apm/service-map/service/{serviceName}',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: { environment, start, end },
|
query: { environment, start, end },
|
||||||
|
|
|
@ -124,7 +124,7 @@ export function ServiceMap({
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
isCachable: false,
|
isCachable: false,
|
||||||
endpoint: 'GET /api/apm/service-map',
|
endpoint: 'GET /internal/apm/service-map',
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
start,
|
start,
|
||||||
|
|
|
@ -85,7 +85,7 @@ export function ServiceNodeMetrics() {
|
||||||
if (start && end) {
|
if (start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/node/{serviceNodeName}/metadata',
|
'GET /internal/apm/services/{serviceName}/node/{serviceNodeName}/metadata',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName, serviceNodeName },
|
path: { serviceName, serviceNodeName },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -48,7 +48,7 @@ function ServiceNodeOverview() {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/serviceNodes',
|
endpoint: 'GET /internal/apm/services/{serviceName}/serviceNodes',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -99,21 +99,21 @@ describe('ServiceOverview', () => {
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/naming-convention */
|
/* eslint-disable @typescript-eslint/naming-convention */
|
||||||
const calls = {
|
const calls = {
|
||||||
'GET /api/apm/services/{serviceName}/error_groups/main_statistics': {
|
'GET /internal/apm/services/{serviceName}/error_groups/main_statistics': {
|
||||||
error_groups: [] as any[],
|
error_groups: [] as any[],
|
||||||
},
|
},
|
||||||
'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics':
|
'GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics':
|
||||||
{
|
{
|
||||||
transactionGroups: [] as any[],
|
transactionGroups: [] as any[],
|
||||||
totalTransactionGroups: 0,
|
totalTransactionGroups: 0,
|
||||||
isAggregationAccurate: true,
|
isAggregationAccurate: true,
|
||||||
},
|
},
|
||||||
'GET /api/apm/services/{serviceName}/dependencies': {
|
'GET /internal/apm/services/{serviceName}/dependencies': {
|
||||||
serviceDependencies: [],
|
serviceDependencies: [],
|
||||||
},
|
},
|
||||||
'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics':
|
'GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics':
|
||||||
[],
|
[],
|
||||||
'GET /api/apm/services/{serviceName}/transactions/charts/latency': {
|
'GET /internal/apm/services/{serviceName}/transactions/charts/latency': {
|
||||||
currentPeriod: {
|
currentPeriod: {
|
||||||
overallAvgDuration: null,
|
overallAvgDuration: null,
|
||||||
latencyTimeseries: [],
|
latencyTimeseries: [],
|
||||||
|
@ -123,11 +123,12 @@ describe('ServiceOverview', () => {
|
||||||
latencyTimeseries: [],
|
latencyTimeseries: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'GET /api/apm/services/{serviceName}/throughput': {
|
'GET /internal/apm/services/{serviceName}/throughput': {
|
||||||
currentPeriod: [],
|
currentPeriod: [],
|
||||||
previousPeriod: [],
|
previousPeriod: [],
|
||||||
},
|
},
|
||||||
'GET /api/apm/services/{serviceName}/transactions/charts/error_rate': {
|
'GET /internal/apm/services/{serviceName}/transactions/charts/error_rate':
|
||||||
|
{
|
||||||
currentPeriod: {
|
currentPeriod: {
|
||||||
transactionErrorRate: [],
|
transactionErrorRate: [],
|
||||||
noHits: true,
|
noHits: true,
|
||||||
|
@ -142,7 +143,7 @@ describe('ServiceOverview', () => {
|
||||||
'GET /api/apm/services/{serviceName}/annotation/search': {
|
'GET /api/apm/services/{serviceName}/annotation/search': {
|
||||||
annotations: [],
|
annotations: [],
|
||||||
},
|
},
|
||||||
'GET /api/apm/fallback_to_transactions': {
|
'GET /internal/apm/fallback_to_transactions': {
|
||||||
fallbackToTransactions: false,
|
fallbackToTransactions: false,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -59,7 +59,7 @@ export function ServiceOverviewDependenciesTable({
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/dependencies',
|
endpoint: 'GET /internal/apm/services/{serviceName}/dependencies',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: { start, end, environment, numBuckets: 20, offset },
|
query: { start, end, environment, numBuckets: 20, offset },
|
||||||
|
|
|
@ -16,9 +16,9 @@ import { TimestampTooltip } from '../../../shared/TimestampTooltip';
|
||||||
import { TruncateWithTooltip } from '../../../shared/truncate_with_tooltip';
|
import { TruncateWithTooltip } from '../../../shared/truncate_with_tooltip';
|
||||||
|
|
||||||
type ErrorGroupMainStatistics =
|
type ErrorGroupMainStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/error_groups/main_statistics'>;
|
||||||
type ErrorGroupDetailedStatistics =
|
type ErrorGroupDetailedStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/detailed_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/error_groups/detailed_statistics'>;
|
||||||
|
|
||||||
export function getColumns({
|
export function getColumns({
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -30,9 +30,9 @@ interface Props {
|
||||||
serviceName: string;
|
serviceName: string;
|
||||||
}
|
}
|
||||||
type ErrorGroupMainStatistics =
|
type ErrorGroupMainStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/error_groups/main_statistics'>;
|
||||||
type ErrorGroupDetailedStatistics =
|
type ErrorGroupDetailedStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/error_groups/detailed_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/error_groups/detailed_statistics'>;
|
||||||
|
|
||||||
type SortDirection = 'asc' | 'desc';
|
type SortDirection = 'asc' | 'desc';
|
||||||
type SortField = 'name' | 'lastSeen' | 'occurrences';
|
type SortField = 'name' | 'lastSeen' | 'occurrences';
|
||||||
|
@ -97,7 +97,7 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) {
|
||||||
}
|
}
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/error_groups/main_statistics',
|
'GET /internal/apm/services/{serviceName}/error_groups/main_statistics',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
@ -150,7 +150,7 @@ export function ServiceOverviewErrorsTable({ serviceName }: Props) {
|
||||||
if (requestId && items.length && start && end && transactionType) {
|
if (requestId && items.length && start && end && transactionType) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/error_groups/detailed_statistics',
|
'GET /internal/apm/services/{serviceName}/error_groups/detailed_statistics',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -28,9 +28,9 @@ interface ServiceOverviewInstancesChartAndTableProps {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ApiResponseMainStats =
|
type ApiResponseMainStats =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
||||||
type ApiResponseDetailedStats =
|
type ApiResponseDetailedStats =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>;
|
||||||
|
|
||||||
const INITIAL_STATE_MAIN_STATS = {
|
const INITIAL_STATE_MAIN_STATS = {
|
||||||
currentPeriodItems: [] as ApiResponseMainStats['currentPeriod'],
|
currentPeriodItems: [] as ApiResponseMainStats['currentPeriod'],
|
||||||
|
@ -100,7 +100,7 @@ export function ServiceOverviewInstancesChartAndTable({
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics',
|
'GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
@ -181,7 +181,7 @@ export function ServiceOverviewInstancesChartAndTable({
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics',
|
'GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -33,11 +33,11 @@ import { TruncateWithTooltip } from '../../../shared/truncate_with_tooltip';
|
||||||
import { InstanceActionsMenu } from './instance_actions_menu';
|
import { InstanceActionsMenu } from './instance_actions_menu';
|
||||||
|
|
||||||
type ServiceInstanceMainStatistics =
|
type ServiceInstanceMainStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
||||||
type MainStatsServiceInstanceItem =
|
type MainStatsServiceInstanceItem =
|
||||||
ServiceInstanceMainStatistics['currentPeriod'][0];
|
ServiceInstanceMainStatistics['currentPeriod'][0];
|
||||||
type ServiceInstanceDetailedStatistics =
|
type ServiceInstanceDetailedStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>;
|
||||||
|
|
||||||
export function getColumns({
|
export function getColumns({
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -29,11 +29,11 @@ import { useApmParams } from '../../../../hooks/use_apm_params';
|
||||||
import { useBreakpoints } from '../../../../hooks/use_breakpoints';
|
import { useBreakpoints } from '../../../../hooks/use_breakpoints';
|
||||||
|
|
||||||
type ServiceInstanceMainStatistics =
|
type ServiceInstanceMainStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
||||||
type MainStatsServiceInstanceItem =
|
type MainStatsServiceInstanceItem =
|
||||||
ServiceInstanceMainStatistics['currentPeriod'][0];
|
ServiceInstanceMainStatistics['currentPeriod'][0];
|
||||||
type ServiceInstanceDetailedStatistics =
|
type ServiceInstanceDetailedStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/detailed_statistics'>;
|
||||||
|
|
||||||
export interface TableOptions {
|
export interface TableOptions {
|
||||||
pageIndex: number;
|
pageIndex: number;
|
||||||
|
|
|
@ -17,7 +17,7 @@ import {
|
||||||
} from '../../../../shared/transaction_action_menu/sections_helper';
|
} from '../../../../shared/transaction_action_menu/sections_helper';
|
||||||
|
|
||||||
type InstaceDetails =
|
type InstaceDetails =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}'>;
|
||||||
|
|
||||||
function getInfraMetricsQuery(timestamp?: string) {
|
function getInfraMetricsQuery(timestamp?: string) {
|
||||||
if (!timestamp) {
|
if (!timestamp) {
|
||||||
|
|
|
@ -16,7 +16,7 @@ import { InstanceDetails } from './intance_details';
|
||||||
import * as useInstanceDetailsFetcher from './use_instance_details_fetcher';
|
import * as useInstanceDetailsFetcher from './use_instance_details_fetcher';
|
||||||
|
|
||||||
type ServiceInstanceDetails =
|
type ServiceInstanceDetails =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}'>;
|
||||||
|
|
||||||
describe('InstanceDetails', () => {
|
describe('InstanceDetails', () => {
|
||||||
it('renders loading spinner when data is being fetched', () => {
|
it('renders loading spinner when data is being fetched', () => {
|
||||||
|
|
|
@ -34,7 +34,7 @@ import { getCloudIcon, getContainerIcon } from '../../../shared/service_icons';
|
||||||
import { useInstanceDetailsFetcher } from './use_instance_details_fetcher';
|
import { useInstanceDetailsFetcher } from './use_instance_details_fetcher';
|
||||||
|
|
||||||
type ServiceInstanceDetails =
|
type ServiceInstanceDetails =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}'>;
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
serviceName: string;
|
serviceName: string;
|
||||||
|
|
|
@ -28,7 +28,7 @@ export function useInstanceDetailsFetcher({
|
||||||
}
|
}
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}',
|
'GET /internal/apm/services/{serviceName}/service_overview_instances/details/{serviceNodeName}',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -69,7 +69,7 @@ export function ServiceOverviewThroughputChart({
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (serviceName && transactionType && start && end) {
|
if (serviceName && transactionType && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/throughput',
|
endpoint: 'GET /internal/apm/services/{serviceName}/throughput',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -19,7 +19,7 @@ import { ServiceProfilingFlamegraph } from './service_profiling_flamegraph';
|
||||||
import { ServiceProfilingTimeline } from './service_profiling_timeline';
|
import { ServiceProfilingTimeline } from './service_profiling_timeline';
|
||||||
|
|
||||||
type ApiResponse =
|
type ApiResponse =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/profiling/timeline'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/profiling/timeline'>;
|
||||||
const DEFAULT_DATA: ApiResponse = { profilingTimeline: [] };
|
const DEFAULT_DATA: ApiResponse = { profilingTimeline: [] };
|
||||||
|
|
||||||
export function ServiceProfiling() {
|
export function ServiceProfiling() {
|
||||||
|
@ -38,7 +38,7 @@ export function ServiceProfiling() {
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/profiling/timeline',
|
endpoint: 'GET /internal/apm/services/{serviceName}/profiling/timeline',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -147,7 +147,8 @@ export function ServiceProfilingFlamegraph({
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/profiling/statistics',
|
endpoint:
|
||||||
|
'GET /internal/apm/services/{serviceName}/profiling/statistics',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -16,7 +16,7 @@ import { useFallbackToTransactionsFetcher } from '../../../hooks/use_fallback_to
|
||||||
import { AggregatedTransactionsBadge } from '../../shared/aggregated_transactions_badge';
|
import { AggregatedTransactionsBadge } from '../../shared/aggregated_transactions_badge';
|
||||||
import { useTimeRange } from '../../../hooks/use_time_range';
|
import { useTimeRange } from '../../../hooks/use_time_range';
|
||||||
|
|
||||||
type TracesAPIResponse = APIReturnType<'GET /api/apm/traces'>;
|
type TracesAPIResponse = APIReturnType<'GET /internal/apm/traces'>;
|
||||||
const DEFAULT_RESPONSE: TracesAPIResponse = {
|
const DEFAULT_RESPONSE: TracesAPIResponse = {
|
||||||
items: [],
|
items: [],
|
||||||
};
|
};
|
||||||
|
@ -35,7 +35,7 @@ export function TraceOverview() {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (start && end) {
|
if (start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/traces',
|
endpoint: 'GET /internal/apm/traces',
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
environment,
|
environment,
|
||||||
|
|
|
@ -20,7 +20,7 @@ import { ImpactBar } from '../../shared/ImpactBar';
|
||||||
import { TransactionDetailLink } from '../../shared/Links/apm/transaction_detail_link';
|
import { TransactionDetailLink } from '../../shared/Links/apm/transaction_detail_link';
|
||||||
import { ITableColumn, ManagedTable } from '../../shared/managed_table';
|
import { ITableColumn, ManagedTable } from '../../shared/managed_table';
|
||||||
|
|
||||||
type TraceGroup = APIReturnType<'GET /api/apm/traces'>['items'][0];
|
type TraceGroup = APIReturnType<'GET /internal/apm/traces'>['items'][0];
|
||||||
|
|
||||||
const StyledTransactionLink = euiStyled(TransactionDetailLink)`
|
const StyledTransactionLink = euiStyled(TransactionDetailLink)`
|
||||||
font-size: ${({ theme }) => theme.eui.euiFontSizeS};
|
font-size: ${({ theme }) => theme.eui.euiFontSizeS};
|
||||||
|
|
|
@ -36,7 +36,7 @@ export function useWaterfallFetcher() {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (traceId && start && end) {
|
if (traceId && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/traces/{traceId}',
|
endpoint: 'GET /internal/apm/traces/{traceId}',
|
||||||
params: {
|
params: {
|
||||||
path: { traceId },
|
path: { traceId },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -12,7 +12,7 @@ import { APMError } from '../../../../../../../../typings/es_schemas/ui/apm_erro
|
||||||
import { Span } from '../../../../../../../../typings/es_schemas/ui/span';
|
import { Span } from '../../../../../../../../typings/es_schemas/ui/span';
|
||||||
import { Transaction } from '../../../../../../../../typings/es_schemas/ui/transaction';
|
import { Transaction } from '../../../../../../../../typings/es_schemas/ui/transaction';
|
||||||
|
|
||||||
type TraceAPIResponse = APIReturnType<'GET /api/apm/traces/{traceId}'>;
|
type TraceAPIResponse = APIReturnType<'GET /internal/apm/traces/{traceId}'>;
|
||||||
|
|
||||||
interface IWaterfallGroup {
|
interface IWaterfallGroup {
|
||||||
[key: string]: IWaterfallSpanOrTransaction[];
|
[key: string]: IWaterfallSpanOrTransaction[];
|
||||||
|
|
|
@ -16,7 +16,7 @@ export const location = {
|
||||||
hash: '',
|
hash: '',
|
||||||
} as Location;
|
} as Location;
|
||||||
|
|
||||||
type TraceAPIResponse = APIReturnType<'GET /api/apm/traces/{traceId}'>;
|
type TraceAPIResponse = APIReturnType<'GET /internal/apm/traces/{traceId}'>;
|
||||||
|
|
||||||
export const urlParams = {
|
export const urlParams = {
|
||||||
start: '2020-03-22T15:16:38.742Z',
|
start: '2020-03-22T15:16:38.742Z',
|
||||||
|
|
|
@ -28,7 +28,7 @@ export function TransactionLink() {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (transactionId) {
|
if (transactionId) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/transactions/{transactionId}',
|
endpoint: 'GET /internal/apm/transactions/{transactionId}',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
transactionId,
|
transactionId,
|
||||||
|
|
|
@ -49,7 +49,7 @@ export function ApmMainTemplate({
|
||||||
services.observability.navigation.PageTemplate;
|
services.observability.navigation.PageTemplate;
|
||||||
|
|
||||||
const { data } = useFetcher((callApmApi) => {
|
const { data } = useFetcher((callApmApi) => {
|
||||||
return callApmApi({ endpoint: 'GET /api/apm/has_data' });
|
return callApmApi({ endpoint: 'GET /internal/apm/has_data' });
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const noDataConfig = getNoDataConfig({
|
const noDataConfig = getNoDataConfig({
|
||||||
|
|
|
@ -27,7 +27,7 @@ import { APIReturnType } from '../../../services/rest/createCallApmApi';
|
||||||
import { getAPMHref } from '../Links/apm/APMLink';
|
import { getAPMHref } from '../Links/apm/APMLink';
|
||||||
|
|
||||||
export type AnomalyDetectionApiResponse =
|
export type AnomalyDetectionApiResponse =
|
||||||
APIReturnType<'GET /api/apm/settings/anomaly-detection/jobs'>;
|
APIReturnType<'GET /internal/apm/settings/anomaly-detection/jobs'>;
|
||||||
|
|
||||||
const DEFAULT_DATA = { jobs: [], hasLegacyJobs: false };
|
const DEFAULT_DATA = { jobs: [], hasLegacyJobs: false };
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ import { APIReturnType } from '../../../../services/rest/createCallApmApi';
|
||||||
import { getAlertAnnotations } from './get_alert_annotations';
|
import { getAlertAnnotations } from './get_alert_annotations';
|
||||||
|
|
||||||
type Alert = ValuesType<
|
type Alert = ValuesType<
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/alerts'>['alerts']
|
APIReturnType<'GET /internal/apm/services/{serviceName}/alerts'>['alerts']
|
||||||
>;
|
>;
|
||||||
|
|
||||||
const euiColorDanger = 'red';
|
const euiColorDanger = 'red';
|
||||||
|
|
|
@ -46,7 +46,7 @@ const ALERT_RULE_TYPE_ID: typeof ALERT_RULE_TYPE_ID_TYPED =
|
||||||
const ALERT_RULE_NAME: typeof ALERT_RULE_NAME_TYPED = ALERT_RULE_NAME_NON_TYPED;
|
const ALERT_RULE_NAME: typeof ALERT_RULE_NAME_TYPED = ALERT_RULE_NAME_NON_TYPED;
|
||||||
|
|
||||||
type Alert = ValuesType<
|
type Alert = ValuesType<
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/alerts'>['alerts']
|
APIReturnType<'GET /internal/apm/services/{serviceName}/alerts'>['alerts']
|
||||||
>;
|
>;
|
||||||
|
|
||||||
function getAlertColor({
|
function getAlertColor({
|
||||||
|
|
|
@ -12,7 +12,7 @@ import { getDurationFormatter } from '../../../../../common/utils/formatters';
|
||||||
import { CustomTooltip } from './custom_tooltip';
|
import { CustomTooltip } from './custom_tooltip';
|
||||||
|
|
||||||
type ServiceInstanceMainStatistics =
|
type ServiceInstanceMainStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
||||||
type MainStatsServiceInstanceItem =
|
type MainStatsServiceInstanceItem =
|
||||||
ServiceInstanceMainStatistics['currentPeriod'][0];
|
ServiceInstanceMainStatistics['currentPeriod'][0];
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ import {
|
||||||
import { useTheme } from '../../../../hooks/use_theme';
|
import { useTheme } from '../../../../hooks/use_theme';
|
||||||
|
|
||||||
type ServiceInstanceMainStatistics =
|
type ServiceInstanceMainStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
||||||
type MainStatsServiceInstanceItem =
|
type MainStatsServiceInstanceItem =
|
||||||
ServiceInstanceMainStatistics['currentPeriod'][0];
|
ServiceInstanceMainStatistics['currentPeriod'][0];
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ import { getResponseTimeTickFormatter } from '../transaction_charts/helper';
|
||||||
import { CustomTooltip } from './custom_tooltip';
|
import { CustomTooltip } from './custom_tooltip';
|
||||||
|
|
||||||
type ApiResponseMainStats =
|
type ApiResponseMainStats =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/service_overview_instances/main_statistics'>;
|
||||||
|
|
||||||
export interface InstancesLatencyDistributionChartProps {
|
export interface InstancesLatencyDistributionChartProps {
|
||||||
height: number;
|
height: number;
|
||||||
|
|
|
@ -42,8 +42,8 @@ import {
|
||||||
import { LatencyChart } from './';
|
import { LatencyChart } from './';
|
||||||
|
|
||||||
interface Args {
|
interface Args {
|
||||||
alertsResponse: APIReturnType<'GET /api/apm/services/{serviceName}/alerts'>;
|
alertsResponse: APIReturnType<'GET /internal/apm/services/{serviceName}/alerts'>;
|
||||||
latencyChartResponse: APIReturnType<'GET /api/apm/services/{serviceName}/transactions/charts/latency'>;
|
latencyChartResponse: APIReturnType<'GET /internal/apm/services/{serviceName}/transactions/charts/latency'>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -70,7 +70,7 @@ export default {
|
||||||
basePath: { prepend: () => {} },
|
basePath: { prepend: () => {} },
|
||||||
get: (endpoint: string) => {
|
get: (endpoint: string) => {
|
||||||
switch (endpoint) {
|
switch (endpoint) {
|
||||||
case `/api/apm/services/${serviceName}/transactions/charts/latency`:
|
case `/internal/apm/services/${serviceName}/transactions/charts/latency`:
|
||||||
return latencyChartResponse;
|
return latencyChartResponse;
|
||||||
default:
|
default:
|
||||||
return {};
|
return {};
|
||||||
|
|
|
@ -39,7 +39,7 @@ export function useTransactionBreakdown({
|
||||||
if (serviceName && start && end && transactionType) {
|
if (serviceName && start && end && transactionType) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/transaction/charts/breakdown',
|
'GET /internal/apm/services/{serviceName}/transaction/charts/breakdown',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -36,7 +36,7 @@ interface Props {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ErrorRate =
|
type ErrorRate =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/transactions/charts/error_rate'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/transactions/charts/error_rate'>;
|
||||||
|
|
||||||
const INITIAL_STATE: ErrorRate = {
|
const INITIAL_STATE: ErrorRate = {
|
||||||
currentPeriod: {
|
currentPeriod: {
|
||||||
|
@ -82,7 +82,7 @@ export function TransactionErrorRateChart({
|
||||||
if (transactionType && serviceName && start && end) {
|
if (transactionType && serviceName && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/transactions/charts/error_rate',
|
'GET /internal/apm/services/{serviceName}/transactions/charts/error_rate',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -12,7 +12,7 @@ import React from 'react';
|
||||||
import { APIReturnType } from '../../../services/rest/createCallApmApi';
|
import { APIReturnType } from '../../../services/rest/createCallApmApi';
|
||||||
|
|
||||||
type ServiceDetailsReturnType =
|
type ServiceDetailsReturnType =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/metadata/details'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/metadata/details'>;
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
cloud: ServiceDetailsReturnType['cloud'];
|
cloud: ServiceDetailsReturnType['cloud'];
|
||||||
|
|
|
@ -13,7 +13,7 @@ import { asInteger } from '../../../../common/utils/formatters';
|
||||||
import { APIReturnType } from '../../../services/rest/createCallApmApi';
|
import { APIReturnType } from '../../../services/rest/createCallApmApi';
|
||||||
|
|
||||||
type ServiceDetailsReturnType =
|
type ServiceDetailsReturnType =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/metadata/details'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/metadata/details'>;
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
container: ServiceDetailsReturnType['container'];
|
container: ServiceDetailsReturnType['container'];
|
||||||
|
|
|
@ -186,7 +186,7 @@ describe('ServiceIcons', () => {
|
||||||
};
|
};
|
||||||
it('Shows loading spinner while fetching data', () => {
|
it('Shows loading spinner while fetching data', () => {
|
||||||
const apisMockData = {
|
const apisMockData = {
|
||||||
'GET /api/apm/services/{serviceName}/metadata/icons': {
|
'GET /internal/apm/services/{serviceName}/metadata/icons': {
|
||||||
data: {
|
data: {
|
||||||
agentName: 'java',
|
agentName: 'java',
|
||||||
containerType: 'Kubernetes',
|
containerType: 'Kubernetes',
|
||||||
|
@ -195,7 +195,7 @@ describe('ServiceIcons', () => {
|
||||||
status: fetcherHook.FETCH_STATUS.SUCCESS,
|
status: fetcherHook.FETCH_STATUS.SUCCESS,
|
||||||
refetch: jest.fn(),
|
refetch: jest.fn(),
|
||||||
},
|
},
|
||||||
'GET /api/apm/services/{serviceName}/metadata/details': {
|
'GET /internal/apm/services/{serviceName}/metadata/details': {
|
||||||
data: undefined,
|
data: undefined,
|
||||||
status: fetcherHook.FETCH_STATUS.LOADING,
|
status: fetcherHook.FETCH_STATUS.LOADING,
|
||||||
refetch: jest.fn(),
|
refetch: jest.fn(),
|
||||||
|
@ -228,7 +228,7 @@ describe('ServiceIcons', () => {
|
||||||
|
|
||||||
it('shows service content', () => {
|
it('shows service content', () => {
|
||||||
const apisMockData = {
|
const apisMockData = {
|
||||||
'GET /api/apm/services/{serviceName}/metadata/icons': {
|
'GET /internal/apm/services/{serviceName}/metadata/icons': {
|
||||||
data: {
|
data: {
|
||||||
agentName: 'java',
|
agentName: 'java',
|
||||||
containerType: 'Kubernetes',
|
containerType: 'Kubernetes',
|
||||||
|
@ -237,7 +237,7 @@ describe('ServiceIcons', () => {
|
||||||
status: fetcherHook.FETCH_STATUS.SUCCESS,
|
status: fetcherHook.FETCH_STATUS.SUCCESS,
|
||||||
refetch: jest.fn(),
|
refetch: jest.fn(),
|
||||||
},
|
},
|
||||||
'GET /api/apm/services/{serviceName}/metadata/details': {
|
'GET /internal/apm/services/{serviceName}/metadata/details': {
|
||||||
data: { service: { versions: ['v1.0.0'] } },
|
data: { service: { versions: ['v1.0.0'] } },
|
||||||
status: fetcherHook.FETCH_STATUS.SUCCESS,
|
status: fetcherHook.FETCH_STATUS.SUCCESS,
|
||||||
refetch: jest.fn(),
|
refetch: jest.fn(),
|
||||||
|
|
|
@ -71,7 +71,7 @@ export function ServiceIcons({ start, end, serviceName }: Props) {
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (serviceName && start && end) {
|
if (serviceName && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/metadata/icons',
|
endpoint: 'GET /internal/apm/services/{serviceName}/metadata/icons',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: { start, end },
|
query: { start, end },
|
||||||
|
@ -87,7 +87,7 @@ export function ServiceIcons({ start, end, serviceName }: Props) {
|
||||||
if (selectedIconPopover && serviceName && start && end) {
|
if (selectedIconPopover && serviceName && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
isCachable: true,
|
isCachable: true,
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/metadata/details',
|
endpoint: 'GET /internal/apm/services/{serviceName}/metadata/details',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: { start, end },
|
query: { start, end },
|
||||||
|
|
|
@ -12,7 +12,7 @@ import React from 'react';
|
||||||
import { APIReturnType } from '../../../services/rest/createCallApmApi';
|
import { APIReturnType } from '../../../services/rest/createCallApmApi';
|
||||||
|
|
||||||
type ServiceDetailsReturnType =
|
type ServiceDetailsReturnType =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/metadata/details'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/metadata/details'>;
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
service: ServiceDetailsReturnType['service'];
|
service: ServiceDetailsReturnType['service'];
|
||||||
|
|
|
@ -61,7 +61,7 @@ export function CustomLinkMenuSection({
|
||||||
(callApmApi) =>
|
(callApmApi) =>
|
||||||
callApmApi({
|
callApmApi({
|
||||||
isCachable: false,
|
isCachable: false,
|
||||||
endpoint: 'GET /api/apm/settings/custom_links',
|
endpoint: 'GET /internal/apm/settings/custom_links',
|
||||||
params: { query: convertFiltersToQuery(filters) },
|
params: { query: convertFiltersToQuery(filters) },
|
||||||
}),
|
}),
|
||||||
[filters]
|
[filters]
|
||||||
|
|
|
@ -28,13 +28,13 @@ import { TruncateWithTooltip } from '../truncate_with_tooltip';
|
||||||
import { getLatencyColumnLabel } from './get_latency_column_label';
|
import { getLatencyColumnLabel } from './get_latency_column_label';
|
||||||
|
|
||||||
type TransactionGroupMainStatistics =
|
type TransactionGroupMainStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics'>;
|
||||||
|
|
||||||
type ServiceTransactionGroupItem = ValuesType<
|
type ServiceTransactionGroupItem = ValuesType<
|
||||||
TransactionGroupMainStatistics['transactionGroups']
|
TransactionGroupMainStatistics['transactionGroups']
|
||||||
>;
|
>;
|
||||||
type TransactionGroupDetailedStatistics =
|
type TransactionGroupDetailedStatistics =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/detailed_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/transactions/groups/detailed_statistics'>;
|
||||||
|
|
||||||
export function getColumns({
|
export function getColumns({
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -30,7 +30,7 @@ import { ElasticDocsLink } from '../Links/ElasticDocsLink';
|
||||||
import { useBreakpoints } from '../../../hooks/use_breakpoints';
|
import { useBreakpoints } from '../../../hooks/use_breakpoints';
|
||||||
|
|
||||||
type ApiResponse =
|
type ApiResponse =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics'>;
|
||||||
|
|
||||||
interface InitialState {
|
interface InitialState {
|
||||||
requestId: string;
|
requestId: string;
|
||||||
|
@ -116,7 +116,7 @@ export function TransactionsTable({
|
||||||
}
|
}
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/transactions/groups/main_statistics',
|
'GET /internal/apm/services/{serviceName}/transactions/groups/main_statistics',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
@ -189,7 +189,7 @@ export function TransactionsTable({
|
||||||
) {
|
) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/transactions/groups/detailed_statistics',
|
'GET /internal/apm/services/{serviceName}/transactions/groups/detailed_statistics',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { FETCH_STATUS, useFetcher } from '../../hooks/use_fetcher';
|
||||||
import { APIReturnType } from '../../services/rest/createCallApmApi';
|
import { APIReturnType } from '../../services/rest/createCallApmApi';
|
||||||
|
|
||||||
export interface AnomalyDetectionJobsContextValue {
|
export interface AnomalyDetectionJobsContextValue {
|
||||||
anomalyDetectionJobsData?: APIReturnType<'GET /api/apm/settings/anomaly-detection/jobs'>;
|
anomalyDetectionJobsData?: APIReturnType<'GET /internal/apm/settings/anomaly-detection/jobs'>;
|
||||||
anomalyDetectionJobsStatus: FETCH_STATUS;
|
anomalyDetectionJobsStatus: FETCH_STATUS;
|
||||||
anomalyDetectionJobsRefetch: () => void;
|
anomalyDetectionJobsRefetch: () => void;
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ export function AnomalyDetectionJobsContextProvider({
|
||||||
const { data, status } = useFetcher(
|
const { data, status } = useFetcher(
|
||||||
(callApmApi) =>
|
(callApmApi) =>
|
||||||
callApmApi({
|
callApmApi({
|
||||||
endpoint: `GET /api/apm/settings/anomaly-detection/jobs`,
|
endpoint: `GET /internal/apm/settings/anomaly-detection/jobs`,
|
||||||
}),
|
}),
|
||||||
[fetchId], // eslint-disable-line react-hooks/exhaustive-deps
|
[fetchId], // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
{ showToastOnError: false }
|
{ showToastOnError: false }
|
||||||
|
|
|
@ -15,7 +15,7 @@ export const ApmBackendContext = createContext<
|
||||||
| {
|
| {
|
||||||
backendName: string;
|
backendName: string;
|
||||||
metadata: {
|
metadata: {
|
||||||
data?: APIReturnType<'GET /api/apm/backends/{backendName}/metadata'>;
|
data?: APIReturnType<'GET /internal/apm/backends/{backendName}/metadata'>;
|
||||||
status?: FETCH_STATUS;
|
status?: FETCH_STATUS;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ export function ApmBackendContextProvider({
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/backends/{backendName}/metadata',
|
endpoint: 'GET /internal/apm/backends/{backendName}/metadata',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
backendName,
|
backendName,
|
||||||
|
|
|
@ -20,7 +20,7 @@ import { useApmParams } from '../../hooks/use_apm_params';
|
||||||
import { useTimeRange } from '../../hooks/use_time_range';
|
import { useTimeRange } from '../../hooks/use_time_range';
|
||||||
|
|
||||||
export type APMServiceAlert = ValuesType<
|
export type APMServiceAlert = ValuesType<
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/alerts'>['alerts']
|
APIReturnType<'GET /internal/apm/services/{serviceName}/alerts'>['alerts']
|
||||||
>;
|
>;
|
||||||
|
|
||||||
export const APMServiceContext = createContext<{
|
export const APMServiceContext = createContext<{
|
||||||
|
|
|
@ -29,7 +29,7 @@ export function useServiceAgentFetcher({
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (serviceName) {
|
if (serviceName) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/agent',
|
endpoint: 'GET /internal/apm/services/{serviceName}/agent',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: { start, end },
|
query: { start, end },
|
||||||
|
|
|
@ -41,7 +41,7 @@ export function useServiceAlertsFetcher({
|
||||||
}
|
}
|
||||||
|
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/alerts',
|
endpoint: 'GET /internal/apm/services/{serviceName}/alerts',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -22,7 +22,8 @@ export function useServiceTransactionTypesFetcher({
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (serviceName && start && end) {
|
if (serviceName && start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/transaction_types',
|
endpoint:
|
||||||
|
'GET /internal/apm/services/{serviceName}/transaction_types',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: { start, end },
|
query: { start, end },
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { useFetcher } from './use_fetcher';
|
||||||
export function useDynamicIndexPatternFetcher() {
|
export function useDynamicIndexPatternFetcher() {
|
||||||
const { data, status } = useFetcher((callApmApi) => {
|
const { data, status } = useFetcher((callApmApi) => {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/index_pattern/dynamic',
|
endpoint: 'GET /internal/apm/index_pattern/dynamic',
|
||||||
isCachable: true,
|
isCachable: true,
|
||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
|
@ -38,7 +38,7 @@ export function useEnvironmentsFetcher({
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (start && end) {
|
if (start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/environments',
|
endpoint: 'GET /internal/apm/environments',
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
start,
|
start,
|
||||||
|
|
|
@ -30,7 +30,8 @@ export function useErrorGroupDistributionFetcher({
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (start && end) {
|
if (start && end) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/errors/distribution',
|
endpoint:
|
||||||
|
'GET /internal/apm/services/{serviceName}/errors/distribution',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -19,7 +19,7 @@ export function useFallbackToTransactionsFetcher({ kuery }: { kuery: string }) {
|
||||||
const { data = { fallbackToTransactions: false } } = useFetcher(
|
const { data = { fallbackToTransactions: false } } = useFetcher(
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/fallback_to_transactions',
|
endpoint: 'GET /internal/apm/fallback_to_transactions',
|
||||||
params: {
|
params: {
|
||||||
query: { kuery, start, end },
|
query: { kuery, start, end },
|
||||||
},
|
},
|
||||||
|
|
|
@ -40,7 +40,7 @@ export function useServiceMetricChartsFetcher({
|
||||||
(callApmApi) => {
|
(callApmApi) => {
|
||||||
if (serviceName && start && end && agentName) {
|
if (serviceName && start && end && agentName) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint: 'GET /api/apm/services/{serviceName}/metrics/charts',
|
endpoint: 'GET /internal/apm/services/{serviceName}/metrics/charts',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -57,7 +57,7 @@ export function useTransactionLatencyChartsFetcher({
|
||||||
) {
|
) {
|
||||||
return callApmApi({
|
return callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/transactions/charts/latency',
|
'GET /internal/apm/services/{serviceName}/transactions/charts/latency',
|
||||||
params: {
|
params: {
|
||||||
path: { serviceName },
|
path: { serviceName },
|
||||||
query: {
|
query: {
|
||||||
|
|
|
@ -51,7 +51,7 @@ export function useTransactionTraceSamplesFetcher({
|
||||||
if (serviceName && start && end && transactionType && transactionName) {
|
if (serviceName && start && end && transactionType && transactionName) {
|
||||||
const response = await callApmApi({
|
const response = await callApmApi({
|
||||||
endpoint:
|
endpoint:
|
||||||
'GET /api/apm/services/{serviceName}/transactions/traces/samples',
|
'GET /internal/apm/services/{serviceName}/transactions/traces/samples',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
serviceName,
|
serviceName,
|
||||||
|
|
|
@ -14,7 +14,7 @@ import { APMChartSpec, Coordinate } from '../../typings/timeseries';
|
||||||
import { APIReturnType } from '../services/rest/createCallApmApi';
|
import { APIReturnType } from '../services/rest/createCallApmApi';
|
||||||
|
|
||||||
export type LatencyChartsResponse =
|
export type LatencyChartsResponse =
|
||||||
APIReturnType<'GET /api/apm/services/{serviceName}/transactions/charts/latency'>;
|
APIReturnType<'GET /internal/apm/services/{serviceName}/transactions/charts/latency'>;
|
||||||
|
|
||||||
export interface LatencyChartData {
|
export interface LatencyChartData {
|
||||||
currentPeriod?: APMChartSpec<Coordinate>;
|
currentPeriod?: APMChartSpec<Coordinate>;
|
||||||
|
|
|
@ -41,11 +41,14 @@ describe('callApi', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should add debug param for APM endpoints', async () => {
|
it('should add debug param for APM endpoints', async () => {
|
||||||
await callApi(core, { pathname: `/api/apm/status/server` });
|
await callApi(core, { pathname: `/internal/apm/status/server` });
|
||||||
|
|
||||||
expect(core.http.get).toHaveBeenCalledWith('/api/apm/status/server', {
|
expect(core.http.get).toHaveBeenCalledWith(
|
||||||
|
'/internal/apm/status/server',
|
||||||
|
{
|
||||||
query: { _inspect: true },
|
query: { _inspect: true },
|
||||||
});
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not add debug param for non-APM endpoints', async () => {
|
it('should not add debug param for non-APM endpoints', async () => {
|
||||||
|
|
|
@ -24,7 +24,7 @@ describe('callApmApi', () => {
|
||||||
|
|
||||||
it('should format the pathname with the given path params', async () => {
|
it('should format the pathname with the given path params', async () => {
|
||||||
await callApmApi({
|
await callApmApi({
|
||||||
endpoint: 'GET /api/apm/{param1}/to/{param2}',
|
endpoint: 'GET /internal/apm/{param1}/to/{param2}',
|
||||||
params: {
|
params: {
|
||||||
path: {
|
path: {
|
||||||
param1: 'foo',
|
param1: 'foo',
|
||||||
|
@ -36,14 +36,14 @@ describe('callApmApi', () => {
|
||||||
expect(callApi).toHaveBeenCalledWith(
|
expect(callApi).toHaveBeenCalledWith(
|
||||||
{},
|
{},
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
pathname: '/api/apm/foo/to/bar',
|
pathname: '/internal/apm/foo/to/bar',
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should add the query parameters to the options object', async () => {
|
it('should add the query parameters to the options object', async () => {
|
||||||
await callApmApi({
|
await callApmApi({
|
||||||
endpoint: 'GET /api/apm',
|
endpoint: 'GET /internal/apm',
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
foo: 'bar',
|
foo: 'bar',
|
||||||
|
@ -55,7 +55,7 @@ describe('callApmApi', () => {
|
||||||
expect(callApi).toHaveBeenCalledWith(
|
expect(callApi).toHaveBeenCalledWith(
|
||||||
{},
|
{},
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
pathname: '/api/apm',
|
pathname: '/internal/apm',
|
||||||
query: {
|
query: {
|
||||||
foo: 'bar',
|
foo: 'bar',
|
||||||
bar: 'foo',
|
bar: 'foo',
|
||||||
|
@ -66,7 +66,7 @@ describe('callApmApi', () => {
|
||||||
|
|
||||||
it('should stringify the body and add it to the options object', async () => {
|
it('should stringify the body and add it to the options object', async () => {
|
||||||
await callApmApi({
|
await callApmApi({
|
||||||
endpoint: 'POST /api/apm',
|
endpoint: 'POST /internal/apm',
|
||||||
params: {
|
params: {
|
||||||
body: {
|
body: {
|
||||||
foo: 'bar',
|
foo: 'bar',
|
||||||
|
@ -78,7 +78,7 @@ describe('callApmApi', () => {
|
||||||
expect(callApi).toHaveBeenCalledWith(
|
expect(callApi).toHaveBeenCalledWith(
|
||||||
{},
|
{},
|
||||||
expect.objectContaining({
|
expect.objectContaining({
|
||||||
pathname: '/api/apm',
|
pathname: '/internal/apm',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
body: {
|
body: {
|
||||||
foo: 'bar',
|
foo: 'bar',
|
||||||
|
|
|
@ -17,7 +17,7 @@ export const fetchObservabilityOverviewPageData = async ({
|
||||||
bucketSize,
|
bucketSize,
|
||||||
}: FetchDataParams): Promise<ApmFetchDataResponse> => {
|
}: FetchDataParams): Promise<ApmFetchDataResponse> => {
|
||||||
const data = await callApmApi({
|
const data = await callApmApi({
|
||||||
endpoint: 'GET /api/apm/observability_overview',
|
endpoint: 'GET /internal/apm/observability_overview',
|
||||||
signal: null,
|
signal: null,
|
||||||
params: {
|
params: {
|
||||||
query: {
|
query: {
|
||||||
|
@ -52,7 +52,7 @@ export const fetchObservabilityOverviewPageData = async ({
|
||||||
|
|
||||||
export async function getHasData() {
|
export async function getHasData() {
|
||||||
return await callApmApi({
|
return await callApmApi({
|
||||||
endpoint: 'GET /api/apm/observability_overview/has_data',
|
endpoint: 'GET /internal/apm/observability_overview/has_data',
|
||||||
signal: null,
|
signal: null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ function fetchOptionsWithDebug(
|
||||||
) {
|
) {
|
||||||
const debugEnabled =
|
const debugEnabled =
|
||||||
inspectableEsQueriesEnabled &&
|
inspectableEsQueriesEnabled &&
|
||||||
startsWith(fetchOptions.pathname, '/api/apm');
|
startsWith(fetchOptions.pathname, '/internal/apm');
|
||||||
|
|
||||||
const { body, ...rest } = fetchOptions;
|
const { body, ...rest } = fetchOptions;
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { callApmApi } from './createCallApmApi';
|
||||||
|
|
||||||
export const createStaticIndexPattern = async () => {
|
export const createStaticIndexPattern = async () => {
|
||||||
return await callApmApi({
|
return await callApmApi({
|
||||||
endpoint: 'POST /api/apm/index_pattern/static',
|
endpoint: 'POST /internal/apm/index_pattern/static',
|
||||||
signal: null,
|
signal: null,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,7 +12,7 @@ import { POLICY_ELASTIC_AGENT_ON_CLOUD } from '../../../common/fleet';
|
||||||
import TutorialConfigAgent from './';
|
import TutorialConfigAgent from './';
|
||||||
import { APIReturnType } from '../../services/rest/createCallApmApi';
|
import { APIReturnType } from '../../services/rest/createCallApmApi';
|
||||||
|
|
||||||
export type APIResponseType = APIReturnType<'GET /api/apm/fleet/agents'>;
|
export type APIResponseType = APIReturnType<'GET /internal/apm/fleet/agents'>;
|
||||||
|
|
||||||
interface Args {
|
interface Args {
|
||||||
apmAgent: string;
|
apmAgent: string;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
import { getPolicyOptions } from './get_policy_options';
|
import { getPolicyOptions } from './get_policy_options';
|
||||||
import { APIReturnType } from '../../services/rest/createCallApmApi';
|
import { APIReturnType } from '../../services/rest/createCallApmApi';
|
||||||
|
|
||||||
type APIResponseType = APIReturnType<'GET /api/apm/fleet/agents'>;
|
type APIResponseType = APIReturnType<'GET /internal/apm/fleet/agents'>;
|
||||||
|
|
||||||
const policyElasticAgentOnCloudAgent = {
|
const policyElasticAgentOnCloudAgent = {
|
||||||
id: 'policy-elastic-agent-on-cloud',
|
id: 'policy-elastic-agent-on-cloud',
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue