From 2940e9b9e55e6ba2d8edc87df0f3cf9f42821351 Mon Sep 17 00:00:00 2001 From: Costantino Perciante Date: Wed, 19 Oct 2016 12:26:26 +0000 Subject: [PATCH] added accounting features to the pom.xml and code but it doesn't work yet git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-catalogue/grsf-publisher-ws@133351 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 5 +++ ...java => RequestsAuthAccountingFilter.java} | 40 ++++++++++++++++--- 2 files changed, 40 insertions(+), 5 deletions(-) rename src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/{RequestsAuthFilter.java => RequestsAuthAccountingFilter.java} (73%) diff --git a/pom.xml b/pom.xml index 120f5e0..ade93d7 100644 --- a/pom.xml +++ b/pom.xml @@ -78,6 +78,11 @@ portal-manager [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) + + org.gcube.accounting + accounting-lib + provided + org.gcube.common common-authorization diff --git a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthFilter.java b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthAccountingFilter.java similarity index 73% rename from src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthFilter.java rename to src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthAccountingFilter.java index 059ea87..c198877 100644 --- a/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthFilter.java +++ b/src/main/java/org/gcube/data_catalogue/grsf_publish_ws/filters/RequestsAuthAccountingFilter.java @@ -10,6 +10,10 @@ import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import javax.ws.rs.ext.Provider; +import org.gcube.accounting.datamodel.UsageRecord.OperationResult; +import org.gcube.accounting.datamodel.usagerecords.ServiceUsageRecord; +import org.gcube.accounting.persistence.AccountingPersistence; +import org.gcube.accounting.persistence.AccountingPersistenceFactory; import org.gcube.common.authorization.library.AuthorizationEntry; import org.gcube.common.authorization.library.provider.AuthorizationProvider; import org.gcube.common.authorization.library.utils.Caller; @@ -23,10 +27,12 @@ import org.slf4j.LoggerFactory; * @author Costantino Perciante at ISTI-CNR */ @Provider -public class RequestsAuthFilter implements ContainerRequestFilter{ +public class RequestsAuthAccountingFilter implements ContainerRequestFilter{ - private static final org.slf4j.Logger logger = LoggerFactory.getLogger(RequestsAuthFilter.class); + private static final org.slf4j.Logger logger = LoggerFactory.getLogger(RequestsAuthAccountingFilter.class); private static final String AUTH_TOKEN = "gcube-token"; + private final static AccountingPersistence accountingPersistence = AccountingPersistenceFactory.getPersistence(); + @Override public void filter(ContainerRequestContext requestContext) throws IOException { @@ -78,11 +84,11 @@ public class RequestsAuthFilter implements ContainerRequestFilter{ * @return null if validation fails */ private static AuthorizationEntry validateToken(String token){ - + AuthorizationEntry res = null; - + try { - + // set the root scope ScopeProvider.instance.set("/" + PortalContext.getConfiguration().getInfrastructureName()); logger.debug("Validating token " + token); @@ -98,5 +104,29 @@ public class RequestsAuthFilter implements ContainerRequestFilter{ return res; } + /** + * Accounts service requests + */ + private static void accountRequest(String username){ + + // Create a new Service Usage Record + ServiceUsageRecord usageRecord = new ServiceUsageRecord(); + + try{ + // TODO + usageRecord.setResourceProperty(ServiceUsageRecord.CONSUMER_ID, username); + usageRecord.setOperationResult(OperationResult.SUCCESS); + usageRecord.setCallerHost("node13.d4science.org"); + usageRecord.setHost("node22.d4science.org"); + usageRecord.setServiceClass("VREManagement"); + usageRecord.setServiceName("SmartExecutor"); + usageRecord.setCalledMethod("launch"); + usageRecord.setResourceProperty(ServiceUsageRecord.DURATION, "300"); + accountingPersistence.account(usageRecord); + }catch(Exception e){ + logger.error("Unable to account this service usage record", e); + } + + } }