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 <[email protected]>
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);
}
}