From 7ddc7e63dfba08c5e8743e81282600141dc6f163 Mon Sep 17 00:00:00 2001 From: "Keerthana Narayanankutty(UST" Date: Tue, 19 May 2026 20:04:15 +0530 Subject: [PATCH] feat:[PEA-139] Removed prefix from azure asset id field and falttened tags for azure --- .../common/assets/AssetDocumentHelper.java | 26 +++++++++-- .../assets/AssetDocumentHelperTests.java | 46 +++++++++++++++++++ 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/assets-management/services/svc-asset-delta-engine/src/main/java/com/paladincloud/common/assets/AssetDocumentHelper.java b/assets-management/services/svc-asset-delta-engine/src/main/java/com/paladincloud/common/assets/AssetDocumentHelper.java index 449bb10..e013d4d 100644 --- a/assets-management/services/svc-asset-delta-engine/src/main/java/com/paladincloud/common/assets/AssetDocumentHelper.java +++ b/assets-management/services/svc-asset-delta-engine/src/main/java/com/paladincloud/common/assets/AssetDocumentHelper.java @@ -138,8 +138,10 @@ public String buildDocId(Map data) { data.put(AssetDocumentFields.LEGACY_ACCOUNT_ID, data.get(AssetDocumentFields.ACCOUNT_ID)); } - var docId = STR."\{dataSource}_\{type}_\{StringHelper.concatenate(data, docIdFields, - "_")}"; + var concatenatedId = StringHelper.concatenate(data, docIdFields, "_"); + var docId = "azure".equalsIgnoreCase(dataSource) + ? concatenatedId + : STR."\{dataSource}_\{type}_\{concatenatedId}"; if (StringUtils.isBlank(docId)) { LOGGER.info( STR."docId is not valid: '\{docId}' docIdFields=\{docIdFields} mapper data=\{MapHelper.toJsonString( @@ -216,6 +218,9 @@ private void populateNewPrimary(Map data, AssetDTO dto, String i if ("gcp".equalsIgnoreCase(dataSource)) { addLegacyTags(data, dto); } + else if ("azure".equalsIgnoreCase(dataSource)) { + addFlattenedTags(data, dto); + } if ("azure".equalsIgnoreCase(dataSource)) { dto.setAssetIdDisplayName(getAssetIdDisplayName(data)); @@ -343,10 +348,13 @@ private void updatePrimary(Map data, AssetDTO dto, String idValu } addTags(data, dto); - if ("gcp".equalsIgnoreCase( - data.getOrDefault(AssetDocumentFields.LEGACY_SOURCE, "").toString())) { + var legacySource = data.getOrDefault(AssetDocumentFields.LEGACY_SOURCE, "").toString(); + if ("gcp".equalsIgnoreCase(legacySource)){ addLegacyTags(data, dto); } + else if ("azure".equalsIgnoreCase(legacySource)) { + addFlattenedTags(data, dto); + } // Transfer additional mapper provided fields that aren't already set data.forEach((key, value) -> { @@ -518,6 +526,16 @@ private void addLegacyTags(Map data, AssetDTO dto) { } } + private void addFlattenedTags(Map data, AssetDTO dto) { + var tagData = data.get(AssetDocumentFields.TAGS); + if (tagData instanceof Map) { + @SuppressWarnings("unchecked") var tagMap = (Map) tagData; + tagMap.forEach((key, value) -> { + dto.addType(STR."\{AssetDocumentFields.asTag(key)}", value); + }); + } + } + private void addTags(Map data, AssetDTO dto) { var tagData = data.get(AssetDocumentFields.TAGS); if (tagData instanceof Map) { diff --git a/assets-management/services/svc-asset-delta-engine/src/test/java/com/paladincloud/commons/assets/AssetDocumentHelperTests.java b/assets-management/services/svc-asset-delta-engine/src/test/java/com/paladincloud/commons/assets/AssetDocumentHelperTests.java index 58a63e6..0cc68ff 100644 --- a/assets-management/services/svc-asset-delta-engine/src/test/java/com/paladincloud/commons/assets/AssetDocumentHelperTests.java +++ b/assets-management/services/svc-asset-delta-engine/src/test/java/com/paladincloud/commons/assets/AssetDocumentHelperTests.java @@ -274,4 +274,50 @@ private String getSamplePrimaryAssetDocument() { } """.trim(); } + private String getAzureLoadBalancerMapperDocument() { + return """ + { + "id": "subscriptions/f4d319d8/resourceGroups/unused-resource/providers/Microsoft.Network/loadBalancers/Demo-Resource", + "name": "Demo-Resource", + "region": "eastus", + "source": "azure", + "source_display_name": "Azure", + "_cloudType": "azure", + "_entityType": "loadbalancer", + "_entityTypeDisplayName": "Load Balancer", + "subscriptionId": "f4d319d8", + "rawData": "{}", + "reporting_source": "azure", + "tags": {} + }""".trim(); + } + + @Test + void azureDocIdHasNoPrefix() throws JsonProcessingException { + var helper = AssetDocumentHelper.builder() + .loadDate(ZonedDateTime.now()) + .idField("id") + .docIdFields(List.of("id")) + .dataSource("azure") + .displayName("Load Balancer") + .tags(List.of()) + .type("loadbalancer") + .accountIdToNameFn((_) -> null) + .build(); + var mapperData = JsonHelper.mapFromString(getAzureLoadBalancerMapperDocument()); + var dto = helper.createFrom(mapperData); + + assertEquals( + "subscriptions/f4d319d8/resourceGroups/unused-resource/providers/Microsoft.Network/loadBalancers/Demo-Resource", + dto.getDocId()); + } + + @Test + void gcpDocIdHasPrefix() throws JsonProcessingException { + AssetDocumentHelper helper = getHelper("gcp", "resource_id", "resource_name"); + var mapperData = JsonHelper.mapFromString(getV2PrimaryMapperDocument()); + var dto = helper.createFrom(mapperData); + + assertEquals("gcp_ec2_us-central_17", dto.getDocId()); + } }