|
15 | 15 | import { createAction } from 'redux-actions'; |
16 | 16 | import JaegerAPI from '../api/jaeger'; |
17 | 17 |
|
| 18 | +const metricType = { |
| 19 | + latencies: 'latencies', |
| 20 | + calls: 'calls', |
| 21 | + errors: 'errors', |
| 22 | +}; |
| 23 | + |
| 24 | +// export for tests |
| 25 | +// TODO use native `allSetteled` once #818 is done |
| 26 | +export function allSettled(promises) { |
| 27 | + const wrappedPromises = promises.map(p => |
| 28 | + Promise.resolve(p).then( |
| 29 | + val => ({ status: 'fulfilled', value: val }), |
| 30 | + err => ({ status: 'rejected', reason: err }) |
| 31 | + ) |
| 32 | + ); |
| 33 | + return Promise.all(wrappedPromises); |
| 34 | +} |
| 35 | + |
18 | 36 | export const fetchTrace = createAction( |
19 | 37 | '@JAEGER_API/FETCH_TRACE', |
20 | 38 | id => JaegerAPI.fetchTrace(id), |
@@ -62,3 +80,28 @@ export const fetchDeepDependencyGraph = createAction( |
62 | 80 | export const fetchDependencies = createAction('@JAEGER_API/FETCH_DEPENDENCIES', () => |
63 | 81 | JaegerAPI.fetchDependencies() |
64 | 82 | ); |
| 83 | + |
| 84 | +export const fetchAllServiceMetrics = createAction( |
| 85 | + '@JAEGER_API/FETCH_ALL_SERVICE_METRICS', |
| 86 | + (serviceName, query) => { |
| 87 | + return allSettled([ |
| 88 | + JaegerAPI.fetchMetrics(metricType.latencies, [serviceName], { ...query, quantile: 0.5 }), |
| 89 | + JaegerAPI.fetchMetrics(metricType.latencies, [serviceName], { ...query, quantile: 0.75 }), |
| 90 | + JaegerAPI.fetchMetrics(metricType.latencies, [serviceName], query), |
| 91 | + JaegerAPI.fetchMetrics(metricType.calls, [serviceName], query), |
| 92 | + JaegerAPI.fetchMetrics(metricType.errors, [serviceName], query), |
| 93 | + ]); |
| 94 | + } |
| 95 | +); |
| 96 | + |
| 97 | +export const fetchAggregatedServiceMetrics = createAction( |
| 98 | + '@JAEGER_API/FETCH_AGGREGATED_SERVICE_METRICS', |
| 99 | + (serviceName, queryParams) => { |
| 100 | + const query = { ...queryParams, groupByOperation: true }; |
| 101 | + return allSettled([ |
| 102 | + JaegerAPI.fetchMetrics(metricType.latencies, [serviceName], query), |
| 103 | + JaegerAPI.fetchMetrics(metricType.calls, [serviceName], query), |
| 104 | + JaegerAPI.fetchMetrics(metricType.errors, [serviceName], query), |
| 105 | + ]); |
| 106 | + } |
| 107 | +); |
0 commit comments