git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/branches/common/common-smartgears/2.1@181336 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
0c90d7a508
commit
d7ad1c6cab
24
pom.xml
24
pom.xml
|
@ -1,4 +1,5 @@
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
|
@ -12,7 +13,7 @@
|
||||||
<artifactId>common-smartgears</artifactId>
|
<artifactId>common-smartgears</artifactId>
|
||||||
<version>2.1.9-SNAPSHOT</version>
|
<version>2.1.9-SNAPSHOT</version>
|
||||||
<name>SmartGears</name>
|
<name>SmartGears</name>
|
||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -24,7 +25,7 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<distroDirectory>distro</distroDirectory>
|
<distroDirectory>distro</distroDirectory>
|
||||||
<tomcat.version>7.0.42</tomcat.version>
|
<tomcat.version>7.0.42</tomcat.version>
|
||||||
|
@ -54,7 +55,7 @@
|
||||||
<groupId>org.gcube.data.publishing</groupId>
|
<groupId>org.gcube.data.publishing</groupId>
|
||||||
<artifactId>document-store-lib</artifactId>
|
<artifactId>document-store-lib</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.accounting</groupId>
|
<groupId>org.gcube.accounting</groupId>
|
||||||
<artifactId>accounting-lib</artifactId>
|
<artifactId>accounting-lib</artifactId>
|
||||||
|
@ -110,6 +111,21 @@
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.tomcat</groupId>
|
||||||
|
<artifactId>tomcat-catalina</artifactId>
|
||||||
|
<version>${tomcat.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.tomcat.embed</groupId>
|
||||||
|
<artifactId>tomcat-embed-core</artifactId>
|
||||||
|
<version>${tomcat.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.sun.jersey</groupId>
|
<groupId>com.sun.jersey</groupId>
|
||||||
<artifactId>jersey-client</artifactId>
|
<artifactId>jersey-client</artifactId>
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
package org.gcube.smartgears.managers;
|
package org.gcube.smartgears.managers;
|
||||||
|
|
||||||
import static org.gcube.smartgears.Constants.*;
|
import static org.gcube.smartgears.Constants.WILDCARD;
|
||||||
import static org.gcube.smartgears.handlers.application.request.RequestError.*;
|
import static org.gcube.smartgears.handlers.application.request.RequestError.application_error;
|
||||||
|
import static org.gcube.smartgears.handlers.application.request.RequestError.request_not_authorized_error;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -28,7 +29,6 @@ import org.gcube.smartgears.handlers.application.RequestHandler;
|
||||||
import org.gcube.smartgears.handlers.application.ResponseEvent;
|
import org.gcube.smartgears.handlers.application.ResponseEvent;
|
||||||
import org.gcube.smartgears.handlers.application.request.RequestError;
|
import org.gcube.smartgears.handlers.application.request.RequestError;
|
||||||
import org.gcube.smartgears.handlers.application.request.RequestException;
|
import org.gcube.smartgears.handlers.application.request.RequestException;
|
||||||
import org.gcube.smartgears.utils.Utils;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
package org.gcube.smartgears.utils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
|
||||||
|
import org.apache.catalina.connector.Request;
|
||||||
|
import org.apache.catalina.connector.Response;
|
||||||
|
import org.apache.catalina.valves.ValveBase;
|
||||||
|
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.scope.api.ScopeProvider;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class GcubeAccountingValve extends ValveBase {
|
||||||
|
|
||||||
|
private static Logger log = LoggerFactory.getLogger(GcubeAccountingValve.class);
|
||||||
|
|
||||||
|
private String infra;
|
||||||
|
private String serviceClass;
|
||||||
|
private String serviceName;
|
||||||
|
private String hostAndPort;
|
||||||
|
|
||||||
|
public void setInfra(String infra) {
|
||||||
|
this.infra = infra;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServiceClass(String serviceClass) {
|
||||||
|
this.serviceClass = serviceClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServiceName(String serviceName) {
|
||||||
|
this.serviceName = serviceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHostAndPort(String hostAndPort) {
|
||||||
|
this.hostAndPort = hostAndPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invoke(Request request, Response response) throws IOException, ServletException {
|
||||||
|
try {
|
||||||
|
String callerIp = request.getHeader("x-forwarded-for");
|
||||||
|
if (callerIp == null) {
|
||||||
|
callerIp = request.getRemoteAddr();
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean success = response.getStatus()<400;
|
||||||
|
ScopeProvider.instance.set(infra);
|
||||||
|
AccountingPersistenceFactory.setFallbackLocation("/tmp");
|
||||||
|
AccountingPersistence persistence = AccountingPersistenceFactory.getPersistence();
|
||||||
|
ServiceUsageRecord serviceUsageRecord = new ServiceUsageRecord();
|
||||||
|
try{
|
||||||
|
|
||||||
|
serviceUsageRecord.setConsumerId("UNKNOWN");
|
||||||
|
serviceUsageRecord.setCallerQualifier("UNKNOWN");
|
||||||
|
serviceUsageRecord.setScope(infra);
|
||||||
|
serviceUsageRecord.setServiceClass(serviceClass);
|
||||||
|
serviceUsageRecord.setServiceName(serviceName);
|
||||||
|
serviceUsageRecord.setDuration(200l);
|
||||||
|
serviceUsageRecord.setHost(hostAndPort);
|
||||||
|
serviceUsageRecord.setCalledMethod(request.getRequestURI());
|
||||||
|
serviceUsageRecord.setCallerHost(callerIp);
|
||||||
|
serviceUsageRecord.setOperationResult(success?OperationResult.SUCCESS:OperationResult.FAILED);
|
||||||
|
persistence.account(serviceUsageRecord);
|
||||||
|
log.info("Request: {} {} {} {} ", infra, request.getContextPath(), request.getRequestURI(), success);
|
||||||
|
}catch(Exception ex){
|
||||||
|
log.warn("invalid record passed to accounting ",ex);
|
||||||
|
}finally {
|
||||||
|
ScopeProvider.instance.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error("error executing valve", e);
|
||||||
|
}
|
||||||
|
getNext().invoke(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue