@@ -53,7 +53,14 @@ public void syncDataInputsAndAssets() {
5353
5454 Map <String , AgentDTO > agentsMap = loadAgents ();
5555 Map <String , UtmDataInputStatus > statusMap = buildDataInputStatusMap ();
56- Map <String , UtmNetworkScan > assetsMap = buildNetworkAssetsMap (
56+
57+ Map <String , UtmNetworkScan > assetsNameMap = buildNetworkAssetsNameMap (
58+ new ArrayList <>(statsMap .values ()
59+ .stream ()
60+ .map (StatisticDocument ::getDataSource )
61+ .collect (Collectors .toSet ())));
62+
63+ Map <String , UtmNetworkScan > assetsNameIpMap = buildNetworkAssetsIpMap (
5764 new ArrayList <>(statsMap .values ()
5865 .stream ()
5966 .map (StatisticDocument ::getDataSource )
@@ -68,8 +75,7 @@ public void syncDataInputsAndAssets() {
6875 UtmDataInputStatus status = processDataInputStatus (stat , statusMap );
6976 statusToSave .add (status );
7077
71- // Update network asset
72- UtmNetworkScan asset = processNetworkAsset (stat .getDataSource (), agentsMap , assetsMap , statusMap );
78+ UtmNetworkScan asset = processNetworkAsset (stat .getDataSource (), agentsMap , assetsNameMap , assetsNameIpMap , statusMap );
7379 assetsToSave .add (asset );
7480 }
7581
@@ -95,12 +101,18 @@ private Map<String, UtmDataInputStatus> buildDataInputStatusMap() {
95101 .collect (Collectors .toMap (UtmDataInputStatus ::getId , Function .identity ()));
96102 }
97103
98- private Map <String , UtmNetworkScan > buildNetworkAssetsMap (List <String > sourcesKeys ) {
104+ private Map <String , UtmNetworkScan > buildNetworkAssetsNameMap (List <String > sourcesKeys ) {
99105 return networkScanRepository .findByAssetIpInOrAssetNameIn (sourcesKeys , sourcesKeys )
100106 .stream ()
101107 .collect (Collectors .toMap (UtmNetworkScan ::getAssetName , Function .identity (), (a1 , a2 ) -> a1 ));
102108 }
103109
110+ private Map <String , UtmNetworkScan > buildNetworkAssetsIpMap (List <String > sourcesKeys ) {
111+ return networkScanRepository .findByAssetIpInOrAssetNameIn (sourcesKeys , sourcesKeys )
112+ .stream ()
113+ .collect (Collectors .toMap (UtmNetworkScan ::getAssetIp , Function .identity (), (a1 , a2 ) -> a1 ));
114+ }
115+
104116 private UtmDataInputStatus processDataInputStatus (StatisticDocument stat ,
105117 Map <String , UtmDataInputStatus > statusMap ) {
106118 String statusId = stat .getDataType () + "-" + stat .getDataSource ();
@@ -127,10 +139,11 @@ private UtmDataInputStatus createNewDataInputStatus(String id, StatisticDocument
127139
128140 private UtmNetworkScan processNetworkAsset (String sourceName ,
129141 Map <String , AgentDTO > agentsMap ,
130- Map <String , UtmNetworkScan > assetsMap ,
142+ Map <String , UtmNetworkScan > assetsNameMap ,
143+ Map <String , UtmNetworkScan > assetsIpMap ,
131144 Map <String , UtmDataInputStatus > statusMap ) {
132145 boolean isAlive = isDataSourceAlive (sourceName , statusMap );
133- UtmNetworkScan asset = resolveAsset (sourceName , assetsMap );
146+ UtmNetworkScan asset = resolveAsset (sourceName , assetsNameMap , assetsIpMap );
134147 boolean isExisting = asset != null && asset .getId () != null ;
135148
136149 if (asset == null ) {
@@ -147,8 +160,12 @@ private boolean isDataSourceAlive(String sourceName, Map<String, UtmDataInputSta
147160 .anyMatch (s -> !s .isDown ());
148161 }
149162
150- private UtmNetworkScan resolveAsset (String sourceName , Map <String , UtmNetworkScan > assetsMap ) {
151- UtmNetworkScan asset = assetsMap .get (sourceName );
163+ private UtmNetworkScan resolveAsset (String sourceName , Map <String , UtmNetworkScan > assetsNameMap , Map <String , UtmNetworkScan > assetsIpMap ) {
164+ UtmNetworkScan asset = assetsNameMap .get (sourceName );
165+
166+ if (asset == null ) {
167+ asset = assetsIpMap .get (sourceName );
168+ }
152169
153170 if (asset == null ) {
154171 asset = resolveAssetNameFromTenantConfig (sourceName );
0 commit comments