@@ -15,9 +15,8 @@ import { coreRefs } from '../../../../public/framework/core_refs';
15
15
import { fixedIntervalToMilli } from '../components/common/helper_functions' ;
16
16
import { ServiceObject } from '../components/common/plots/service_map' ;
17
17
import {
18
- getServiceEdgesQuery ,
18
+ getServiceMapQuery ,
19
19
getServiceMetricsQuery ,
20
- getServiceNodesQuery ,
21
20
getServicesQuery ,
22
21
getServiceTrendsQuery ,
23
22
} from './queries/services_queries' ;
@@ -103,10 +102,10 @@ export const handleServiceMapRequest = async (
103
102
}
104
103
const map : ServiceObject = { } ;
105
104
let id = 1 ;
106
- const serviceNodesResponse = await handleDslRequest (
105
+ const serviceMapResponse = await handleDslRequest (
107
106
http ,
108
107
null ,
109
- getServiceNodesQuery ( mode ) ,
108
+ getServiceMapQuery ( mode ) ,
110
109
mode ,
111
110
dataSourceMDSId
112
111
) . catch ( ( error ) => {
@@ -119,70 +118,72 @@ export const handleServiceMapRequest = async (
119
118
} ) ;
120
119
121
120
if (
122
- ! serviceNodesResponse ||
123
- ! serviceNodesResponse . aggregations ||
124
- ! serviceNodesResponse . aggregations . service_name ||
125
- ! serviceNodesResponse . aggregations . service_name . buckets ||
126
- serviceNodesResponse . aggregations . service_name . buckets . length === 0
121
+ ! serviceMapResponse ||
122
+ ! serviceMapResponse . aggregations ||
123
+ ! serviceMapResponse . aggregations . service_name ||
124
+ ! serviceMapResponse . aggregations . service_name . buckets ||
125
+ serviceMapResponse . aggregations . service_name . buckets . length === 0
127
126
) {
128
127
if ( setItems ) {
129
128
setItems ( map ) ;
130
129
}
131
130
return map ;
132
131
}
133
132
134
- serviceNodesResponse . aggregations . service_name . buckets . forEach ( ( bucket : any ) => {
135
- map [ bucket . key ] = {
136
- serviceName : bucket . key ,
133
+ const targets : Record < string , string > = { } ;
134
+
135
+ serviceMapResponse . aggregations . service_name . buckets . forEach ( ( bucket : any ) => {
136
+ const serviceName = bucket . key ;
137
+ map [ serviceName ] = {
138
+ serviceName,
137
139
id : id ++ ,
138
140
targetResources : bucket . target_resource . buckets . map ( ( res : any ) => res . key ) ,
139
141
targetServices : [ ] ,
140
142
destServices : [ ] ,
141
143
} ;
142
144
} ) ;
143
145
144
- const targets : Record < string , string > = { } ;
145
- await handleDslRequest ( http , null , getServiceEdgesQuery ( 'target' , mode ) , mode , dataSourceMDSId )
146
- . then ( ( response ) =>
147
- response . aggregations . service_name . buckets . map ( ( bucket : any ) => {
148
- bucket . resource . buckets . map ( ( resource : any ) => {
149
- resource . domain . buckets . map ( ( domain : any ) => {
150
- targets [ resource . key + ':' + domain . key ] = bucket . key ;
151
- } ) ;
152
- } ) ;
153
- } )
154
- )
155
- . catch ( ( error ) => {
156
- console . error ( 'Error retrieving target edges:' , error ) ;
146
+ serviceMapResponse . aggregations . service_name . buckets . forEach ( ( bucket : any ) => {
147
+ const serviceName = bucket . key ;
148
+
149
+ bucket . target_edges ?. buckets . forEach ( ( resource : any ) => {
150
+ resource . domain ?. buckets . forEach ( ( domain : any ) => {
151
+ const key = `${ resource . key } :${ domain . key } ` ;
152
+ targets [ key ] = serviceName ;
153
+ } ) ;
157
154
} ) ;
155
+ } ) ;
158
156
159
- await handleDslRequest (
160
- http ,
161
- null ,
162
- getServiceEdgesQuery ( 'destination' , mode ) ,
163
- mode ,
164
- dataSourceMDSId
165
- )
166
- . then ( ( response ) =>
167
- Promise . all (
168
- response . aggregations . service_name . buckets . map ( ( bucket : any ) => {
169
- bucket . resource . buckets . map ( ( resource : any ) => {
170
- resource . domain . buckets . map ( ( domain : any ) => {
171
- const targetService = targets [ resource . key + ':' + domain . key ] ;
172
- if ( targetService ) {
173
- if ( map [ bucket . key ] . targetServices . indexOf ( targetService ) === - 1 )
174
- map [ bucket . key ] . targetServices . push ( targetService ) ;
175
- if ( map [ targetService ] . destServices . indexOf ( bucket . key ) === - 1 )
176
- map [ targetService ] . destServices . push ( bucket . key ) ;
177
- }
178
- } ) ;
179
- } ) ;
180
- } )
181
- )
182
- )
183
- . catch ( ( error ) => {
184
- console . error ( 'Error retrieving destination edges:' , error ) ;
157
+ serviceMapResponse . aggregations . service_name . buckets . forEach ( ( bucket : any ) => {
158
+ const serviceName = bucket . key ;
159
+
160
+ bucket . destination_edges ?. buckets . forEach ( ( resource : any ) => {
161
+ resource . domain ?. buckets . forEach ( ( domain : any ) => {
162
+ const key = `${ resource . key } :${ domain . key } ` ;
163
+ const targetService = targets [ key ] ;
164
+
165
+ if ( targetService ) {
166
+ if ( ! map [ targetService ] ) {
167
+ map [ targetService ] = {
168
+ serviceName : targetService ,
169
+ id : id ++ ,
170
+ targetResources : [ ] ,
171
+ targetServices : [ ] ,
172
+ destServices : [ ] ,
173
+ } ;
174
+ }
175
+
176
+ if ( ! map [ serviceName ] . targetServices . includes ( targetService ) ) {
177
+ map [ serviceName ] . targetServices . push ( targetService ) ;
178
+ }
179
+
180
+ if ( ! map [ targetService ] . destServices . includes ( serviceName ) ) {
181
+ map [ targetService ] . destServices . push ( serviceName ) ;
182
+ }
183
+ }
184
+ } ) ;
185
185
} ) ;
186
+ } ) ;
186
187
187
188
if ( includeMetrics ) {
188
189
try {
0 commit comments