You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by is...@apache.org on 2021/07/08 01:59:52 UTC
[airavata-data-lake] branch master updated: bug fix
This is an automated email from the ASF dual-hosted git repository.
isjarana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-data-lake.git
The following commit(s) were added to refs/heads/master by this push:
new 3d06484 bug fix
new cc50fea Merge pull request #19 from isururanawaka/workflow_invocation
3d06484 is described below
commit 3d064847c87121f9f02079a7e51a583267bfa152
Author: Isuru Ranawaka <ir...@gmail.com>
AuthorDate: Wed Jul 7 21:59:03 2021 -0400
bug fix
---
.../drms/api/handlers/ResourceServiceHandler.java | 83 +++++++++++++++++++++-
.../org/apache/airavata/drms/api/utils/Utils.java | 4 +-
2 files changed, 83 insertions(+), 4 deletions(-)
diff --git a/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java b/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
index b2f2ccb..214a6d7 100644
--- a/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
+++ b/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
@@ -90,7 +90,7 @@ public class ResourceServiceHandler extends ResourceServiceGrpc.ResourceServiceI
List<GenericResource> genericResourceList = GenericResourceDeserializer.deserializeList(records);
ResourceFetchResponse.Builder builder = ResourceFetchResponse.newBuilder();
if (!genericResourceList.isEmpty()) {
- // TODO: Move to Storage
+ // TODO: Move to Storage
String searchQuery = "Match (srcStr:Storage)<-[:CHILD_OF]-" +
"(srcSp:StoragePreference)-[:TRANSFER_OUT]->(t:TransferMapping" +
"{scope:'GLOBAL', tenantId:$tenantId})-[:TRANSFER_IN]->(dstSp:StoragePreference)-[:CHILD_OF]->(dstStr:Storage)" +
@@ -279,7 +279,86 @@ public class ResourceServiceHandler extends ResourceServiceGrpc.ResourceServiceI
@Override
public void updateResource(ResourceUpdateRequest
request, StreamObserver<ResourceUpdateResponse> responseObserver) {
- super.updateResource(request, responseObserver);
+ try {
+ AuthenticatedUser callUser = request.getAuthToken().getAuthenticatedUser();
+
+ String type = request.getResource().getType();
+
+ Map<String, Object> userProps = new HashMap<>();
+ userProps.put("username", callUser.getUsername());
+ userProps.put("tenantId", callUser.getTenantId());
+
+ String parentId = request.getResource().getParentId();
+
+ String entityId = request.getResource().getResourceId();
+ Map<String, Object> serializedMap = GenericResourceSerializer.serializeToMap(request.getResource());
+ Optional<Entity> exEntity = CustosUtils.mergeResourceEntity(custosClientProvider, callUser.getTenantId(),
+ parentId, type, entityId,
+ request.getResource().getResourceName(), request.getResource().getResourceName(),
+ callUser.getUsername());
+
+ if (exEntity.isPresent()) {
+ serializedMap.put("description", exEntity.get().getDescription());
+ serializedMap.put("resourceName", exEntity.get().getName());
+ serializedMap.put("createdTime", String.valueOf(exEntity.get().getCreatedAt()));
+ serializedMap.put("tenantId", callUser.getTenantId());
+ serializedMap.put("entityId", exEntity.get().getId());
+ serializedMap.put("entityType", exEntity.get().getType());
+ serializedMap.put("lastModifiedTime", exEntity.get().getCreatedAt());
+ serializedMap.put("owner", exEntity.get().getOwnerId());
+ serializedMap.putAll(request.getResource().getPropertiesMap());
+
+ if (!parentId.isEmpty()) {
+ this.neo4JConnector.mergeNodesWithParentChildRelationShip(serializedMap, new HashMap<>(),
+ request.getResource().getType(), StoragePreferenceConstants.STORAGE_PREFERENCE_LABEL,
+ callUser.getUsername(), entityId, parentId, callUser.getTenantId());
+ } else {
+ this.neo4JConnector.mergeNode(serializedMap, request.getResource().getType(),
+ callUser.getUsername(), entityId, callUser.getTenantId());
+ }
+ } else {
+ logger.error("Error occurred while creating resource entity in Custos {}", request.getResource().getResourceId());
+ String msg = "Error occurred while creating resource entity in Custos with id"
+ + request.getResource().getResourceId();
+ responseObserver.onError(Status.INTERNAL.withDescription(msg).asRuntimeException());
+ return;
+ }
+ Map<String, Object> exProps = new HashMap<>();
+ exProps.put("username", callUser.getUsername());
+ exProps.put("tenantId", callUser.getTenantId());
+ exProps.put("entityId", exEntity.get().getId());
+
+ String query = " MATCH (u:User), (r:" + type + ") where u.username = $username AND u.tenantId = $tenantId AND " +
+ " r.entityId = $entityId AND r.tenantId = $tenantId" +
+ " OPTIONAL MATCH (cg:Group)-[:CHILD_OF*]->(g:Group)<-[:MEMBER_OF]-(u)" +
+ " return case when exists((u)<-[:SHARED_WITH]-(r)) OR exists((g)<-[:SHARED_WITH]-(r)) OR " +
+ "exists((cg)<-[:SHARED_WITH]-(r)) then r else NULL end as value";
+
+
+ List<Record> records = this.neo4JConnector.searchNodes(exProps, query);
+
+ List<GenericResource> genericResourceList = GenericResourceDeserializer.deserializeList(records);
+ GenericResource genericResource = genericResourceList.get(0);
+ if (genericResource.getPropertiesMap().containsKey("name")) {
+ genericResource = genericResource.toBuilder()
+ .setResourceName(genericResource.getPropertiesMap().get("name")).build();
+ } else if (genericResource.getPropertiesMap().containsKey("resourceName")) {
+ genericResource = genericResource.toBuilder()
+ .setResourceName(genericResource.getPropertiesMap().get("resourceName")).build();
+ }
+ ResourceUpdateResponse response = ResourceUpdateResponse
+ .newBuilder()
+ .setResource(genericResource)
+ .build();
+ responseObserver.onNext(response);
+ responseObserver.onCompleted();
+
+
+ } catch (Exception ex) {
+ logger.error("Error occurred while creating resource {}", request.getResource().getResourceId());
+ String msg = "Error occurred while creating resource" + ex.getMessage();
+ responseObserver.onError(Status.INTERNAL.withDescription(msg).asRuntimeException());
+ }
}
@Override
diff --git a/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/utils/Utils.java b/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/utils/Utils.java
index 5d4725f..a1729e5 100644
--- a/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/utils/Utils.java
+++ b/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/utils/Utils.java
@@ -49,8 +49,8 @@ public class Utils {
public static Optional<String> getPropertySearchQuery(List<ResourceSearchQuery> resourceSearchQueries, String type) {
if (!resourceSearchQueries.isEmpty()) {
for (ResourceSearchQuery qry : resourceSearchQueries) {
- String query = " MATCH (r:" + type + "{`" + qry.getField() + "`: '" + qry.getValue() + "'})" +
- " Return r ";
+ String query = " MATCH (r:" + type +
+ ") where r." + qry.getField() + " contains '" + qry.getValue() + "' Return r ";
return Optional.ofNullable(query);
}
}