From 2bbc2857d5f219deef6873678aac69f97dcdbf33 Mon Sep 17 00:00:00 2001 From: "Rustam Lotsmanenko (EPAM)" <rustam_lotsmanenko@epam.com> Date: Mon, 20 Jun 2022 09:14:44 +0000 Subject: [PATCH] Fix partition property id --- .../templates/configmap-bootstrap.yml | 1 + devops/gcp/configmap/values.yaml | 1 + .../bootstrap/bootstrap_partition.sh | 36 +++++++++++++++++++ .../gcp/model/PartitionPropertyEntity.java | 29 +++++++-------- .../OsmPartitionPropertyRepository.java | 25 ++----------- .../gcp/service/PartitionServiceImplTest.java | 6 +--- 6 files changed, 54 insertions(+), 44 deletions(-) diff --git a/devops/gcp/configmap/templates/configmap-bootstrap.yml b/devops/gcp/configmap/templates/configmap-bootstrap.yml index e7225a6e6..ae34b9160 100644 --- a/devops/gcp/configmap/templates/configmap-bootstrap.yml +++ b/devops/gcp/configmap/templates/configmap-bootstrap.yml @@ -9,6 +9,7 @@ data: PARTITION_NAME: "{{ .Values.data.partitionName }}" SERVICE_ACCOUNT: {{ printf "%s@%s.iam.gserviceaccount.com" .Values.data.datafierSa .Values.data.projectId | quote }} DATA_PARTITION_ID: "{{ .Values.data.dataPartitionId }}" + PARTITION_CLEAN_UP_ENABLED: "{{ .Values.data.partitionCleanUpEnabled }}" ENVIRONMENT: "{{ .Values.data.springProfilesActive }}" {{- if .Values.data.dataProjectId }} PROJECT_ID: "{{ .Values.data.dataProjectId }}" diff --git a/devops/gcp/configmap/values.yaml b/devops/gcp/configmap/values.yaml index d89345f88..2d8977d3c 100644 --- a/devops/gcp/configmap/values.yaml +++ b/devops/gcp/configmap/values.yaml @@ -12,6 +12,7 @@ data: partitionName: "partition" dataPartitionId: "" datafierSa: "datafier" + partitionCleanUpEnabled: "false" # bootstrap variables onprem domain: "" conf: diff --git a/provider/partition-gcp/bootstrap/bootstrap_partition.sh b/provider/partition-gcp/bootstrap/bootstrap_partition.sh index f4de1eebb..7f34736dd 100644 --- a/provider/partition-gcp/bootstrap/bootstrap_partition.sh +++ b/provider/partition-gcp/bootstrap/bootstrap_partition.sh @@ -144,6 +144,24 @@ EOF if [ "$ENVIRONMENT" == "anthos" ] then + if [ "$PARTITION_CLEAN_UP_ENABLED" == "true" ] + then + echo "Partition cleanup enabled, will delete partition ${DATA_PARTITION_ID}" + delete_status_code=$(curl -X DELETE \ + --url "http://${PARTITION_NAME}/api/partition/v1/partitions/${DATA_PARTITION_ID}" --write-out "%{http_code}" --silent --output "/dev/null" \ + -H "Content-Type: application/json") + + if [ "$delete_status_code" == 204 ] || [ "$delete_status_code" == 404 ] + then + echo "Partition deletion was successful, with status code : ${delete_status_code}" + else + echo "Not able to delete partition, response status code is : ${delete_status_code}" + exit 1 + fi + else + echo "Partition cleanup not enabled, skipping deletion" + fi + status_code=$(curl -X POST \ --url "http://${PARTITION_NAME}/api/partition/v1/partitions/${DATA_PARTITION_ID}" --write-out "%{http_code}" --silent --output "/dev/null" \ -H "Content-Type: application/json" \ @@ -171,6 +189,24 @@ then IDENTITY_TOKEN=$(gcloud auth print-identity-token --audiences="${AUDIENCES}") + if [ "$PARTITION_CLEAN_UP_ENABLED" == "true" ] + then + echo "Partition cleanup enabled, will delete partition ${DATA_PARTITION_ID}" + delete_status_code=$(curl -X DELETE \ + --url "http://${PARTITION_NAME}/api/partition/v1/partitions/${DATA_PARTITION_ID}" --write-out "%{http_code}" --silent --output "/dev/null" \ + -H "Authorization: Bearer ${IDENTITY_TOKEN}") + + if [ "$delete_status_code" == 204 ] || [ "$delete_status_code" == 404 ] + then + echo "Partition deletion was successful, with status code : ${delete_status_code}" + else + echo "Not able to delete partition, response status code is : ${delete_status_code}" + exit 1 + fi + else + echo "Partition cleanup not enabled, skipping deletion" + fi + status_code=$(curl -X POST \ --url "http://${PARTITION_NAME}/api/partition/v1/partitions/${DATA_PARTITION_ID}" --write-out "%{http_code}" --silent --output "/dev/null" \ -H "Authorization: Bearer ${IDENTITY_TOKEN}" \ diff --git a/provider/partition-gcp/src/main/java/org/opengroup/osdu/partition/provider/gcp/model/PartitionPropertyEntity.java b/provider/partition-gcp/src/main/java/org/opengroup/osdu/partition/provider/gcp/model/PartitionPropertyEntity.java index 2b6f20596..4514b3a7b 100644 --- a/provider/partition-gcp/src/main/java/org/opengroup/osdu/partition/provider/gcp/model/PartitionPropertyEntity.java +++ b/provider/partition-gcp/src/main/java/org/opengroup/osdu/partition/provider/gcp/model/PartitionPropertyEntity.java @@ -23,29 +23,26 @@ import lombok.NoArgsConstructor; import org.opengroup.osdu.partition.model.Property; @Data -@NoArgsConstructor @AllArgsConstructor +@NoArgsConstructor public class PartitionPropertyEntity { - private String id; - - private String partitionId; + private String id; - private String name; + private String partitionId; - private Boolean sensitive; + private String name; - private Object value; + private Boolean sensitive; + private Object value; - public PartitionPropertyEntity(String partitionId, String name, Property property) { - this.partitionId = partitionId; - this.name = name; - this.sensitive = property.isSensitive(); - this.value = property.getValue(); - } - public boolean isSensitive() { - return this.sensitive; - } + public PartitionPropertyEntity(String partitionId, String name, Property property) { + this.id = name + "-" + partitionId; + this.partitionId = partitionId; + this.name = name; + this.sensitive = property.isSensitive(); + this.value = property.getValue(); + } } diff --git a/provider/partition-gcp/src/main/java/org/opengroup/osdu/partition/provider/gcp/osm/repository/OsmPartitionPropertyRepository.java b/provider/partition-gcp/src/main/java/org/opengroup/osdu/partition/provider/gcp/osm/repository/OsmPartitionPropertyRepository.java index abbab6e45..5e6621293 100644 --- a/provider/partition-gcp/src/main/java/org/opengroup/osdu/partition/provider/gcp/osm/repository/OsmPartitionPropertyRepository.java +++ b/provider/partition-gcp/src/main/java/org/opengroup/osdu/partition/provider/gcp/osm/repository/OsmPartitionPropertyRepository.java @@ -21,7 +21,6 @@ package org.opengroup.osdu.partition.provider.gcp.osm.repository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.lang3.RandomUtils; import org.opengroup.osdu.core.common.model.http.AppException; import org.opengroup.osdu.core.gcp.osm.model.Destination; import org.opengroup.osdu.core.gcp.osm.model.query.GetQuery; @@ -39,7 +38,6 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; -import static org.opengroup.osdu.core.gcp.osm.model.where.condition.And.and; import static org.opengroup.osdu.core.gcp.osm.model.where.predicate.Eq.eq; import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; @@ -50,7 +48,7 @@ import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; public class OsmPartitionPropertyRepository { public static final String PARTITION_ID_FILED = "partition_id"; - private static final String NAME_FILED = "name"; + public static final String PROPERTY_ID = "id"; private final OsmPartitionDestinationProvider osmPartitionDestinationProvider; private final Context context; @@ -64,13 +62,7 @@ public class OsmPartitionPropertyRepository { } public PartitionPropertyEntity findByPartitionIdAndName(String partitionId, String key) { - List<PartitionPropertyEntity> propertyEntities = context - .getResultsAsList(buildPartitionEntityQueryBy(and( - eq(PARTITION_ID_FILED, partitionId), - eq(NAME_FILED, key)) - ) - ); - return propertyEntities.stream().findFirst().orElse(null); + return context.getOne(buildPartitionEntityQueryBy(eq(PROPERTY_ID, partitionId + "-" + key))); } public List<String> getAllPartitions() { @@ -114,9 +106,6 @@ public class OsmPartitionPropertyRepository { try{ tx = context.beginTransaction(destination); for (PartitionPropertyEntity entity : partitionProperties){ - if (ObjectUtils.isEmpty(entity.getId())) { - generateAvailableIdFor(entity); - } context.upsert(entity, destination); } tx.commitIfActive(); @@ -128,16 +117,6 @@ public class OsmPartitionPropertyRepository { } } - private void generateAvailableIdFor(PartitionPropertyEntity entity) { - //TODO Should be removed when GONRG-4077 will be ready - Long id = RandomUtils.nextLong(); - if (ObjectUtils.isNotEmpty(context.getOne(buildPartitionEntityQueryBy(eq("id", id))))){ - generateAvailableIdFor(entity); - } else { - entity.setId(id.toString()); - } - } - private GetQuery<PartitionPropertyEntity> buildPartitionEntityQueryBy(Where where){ return new GetQuery<>(PartitionPropertyEntity.class, osmPartitionDestinationProvider.getDestination(), where); } diff --git a/provider/partition-gcp/src/test/java/org/opengroup/osdu/partition/provider/gcp/service/PartitionServiceImplTest.java b/provider/partition-gcp/src/test/java/org/opengroup/osdu/partition/provider/gcp/service/PartitionServiceImplTest.java index 1abda3af6..02481f569 100644 --- a/provider/partition-gcp/src/test/java/org/opengroup/osdu/partition/provider/gcp/service/PartitionServiceImplTest.java +++ b/provider/partition-gcp/src/test/java/org/opengroup/osdu/partition/provider/gcp/service/PartitionServiceImplTest.java @@ -87,11 +87,7 @@ public class PartitionServiceImplTest { expectedPartitionInfo.setProperties(properties); - partitionPropertyEntity = new PartitionPropertyEntity(); - partitionPropertyEntity.setPartitionId(PARTITION_ID); - partitionPropertyEntity.setName(NAME); - partitionPropertyEntity.setSensitive(SENSITIVE); - partitionPropertyEntity.setValue(VALUE); + partitionPropertyEntity = new PartitionPropertyEntity(PARTITION_ID, NAME, property); List<PartitionPropertyEntity> entities = new ArrayList<>(); entities.add(partitionPropertyEntity); -- GitLab