@@ -15,9 +15,8 @@ import { coreRefs } from '../../../../public/framework/core_refs';
1515import { fixedIntervalToMilli } from '../components/common/helper_functions' ;
1616import { ServiceObject } from '../components/common/plots/service_map' ;
1717import {
18- getServiceEdgesQuery ,
18+ getServiceMapQuery ,
1919 getServiceMetricsQuery ,
20- getServiceNodesQuery ,
2120 getServicesQuery ,
2221 getServiceTrendsQuery ,
2322} from './queries/services_queries' ;
@@ -103,10 +102,10 @@ export const handleServiceMapRequest = async (
103102 }
104103 const map : ServiceObject = { } ;
105104 let id = 1 ;
106- const serviceNodesResponse = await handleDslRequest (
105+ const serviceMapResponse = await handleDslRequest (
107106 http ,
108107 null ,
109- getServiceNodesQuery ( mode ) ,
108+ getServiceMapQuery ( mode ) ,
110109 mode ,
111110 dataSourceMDSId
112111 ) . catch ( ( error ) => {
@@ -119,70 +118,72 @@ export const handleServiceMapRequest = async (
119118 } ) ;
120119
121120 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
127126 ) {
128127 if ( setItems ) {
129128 setItems ( map ) ;
130129 }
131130 return map ;
132131 }
133132
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,
137139 id : id ++ ,
138140 targetResources : bucket . target_resource . buckets . map ( ( res : any ) => res . key ) ,
139141 targetServices : [ ] ,
140142 destServices : [ ] ,
141143 } ;
142144 } ) ;
143145
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+ } ) ;
157154 } ) ;
155+ } ) ;
158156
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+ } ) ;
185185 } ) ;
186+ } ) ;
186187
187188 if ( includeMetrics ) {
188189 try {
0 commit comments