Compare commits

..

16 Commits

16 changed files with 103 additions and 194 deletions

36
CHANGELOG.md Normal file
View File

@ -0,0 +1,36 @@
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
# Changelog for Information System Exporter Smart Executor Plugin
## [v2.0.0-SNAPSHOT]
- Ported plugin to smart-executor APIs 3.0.0 [#21617]
- Switched JSON management to gcube-jackson [#19116]
- Switched smart-executor JSON management to gcube-jackson [#19647]
- Refactored code to support IS Model reorganization (e.g naming, packages)
- Refactored code to support renaming of Embedded class to Property [#13274]
- Starting to use the new Encrypted property type [#12812]
- Updated smart-executor-bom
## [v1.3.0] [r4.13.0] - 2018-11-20
- Using resource-registry 2.0.0 APIs [#11949]
## [v1.2.0] [r4.9.0] - 2017-12-20
- Creating uber-jar instead of jar-with-dependencies and using new make-servicearchive directive [#10159]
- Using new APIs signature [#10318]
## [v1.1.0] [r4.6.0] - 2017-07-25
- Removed List and Set usage as workaround for OrientDB bug [#9021]
## [v1.0.0] [r4.5.0] - 2017-06-07
- First Release [#7666]

26
FUNDING.md Normal file
View File

@ -0,0 +1,26 @@
# Acknowledgments
The projects leading to this software have received funding from a series of European Union programmes including:
- the Sixth Framework Programme for Research and Technological Development
- [DILIGENT](https://cordis.europa.eu/project/id/004260) (grant no. 004260).
- the Seventh Framework Programme for research, technological development and demonstration
- [D4Science](https://cordis.europa.eu/project/id/212488) (grant no. 212488);
- [D4Science-II](https://cordis.europa.eu/project/id/239019) (grant no.239019);
- [ENVRI](https://cordis.europa.eu/project/id/283465) (grant no. 283465);
- [iMarine](https://cordis.europa.eu/project/id/283644) (grant no. 283644);
- [EUBrazilOpenBio](https://cordis.europa.eu/project/id/288754) (grant no. 288754).
- the H2020 research and innovation programme
- [SoBigData](https://cordis.europa.eu/project/id/654024) (grant no. 654024);
- [PARTHENOS](https://cordis.europa.eu/project/id/654119) (grant no. 654119);
- [EGI-Engage](https://cordis.europa.eu/project/id/654142) (grant no. 654142);
- [ENVRI PLUS](https://cordis.europa.eu/project/id/654182) (grant no. 654182);
- [BlueBRIDGE](https://cordis.europa.eu/project/id/675680) (grant no. 675680);
- [PerformFISH](https://cordis.europa.eu/project/id/727610) (grant no. 727610);
- [AGINFRA PLUS](https://cordis.europa.eu/project/id/731001) (grant no. 731001);
- [DESIRA](https://cordis.europa.eu/project/id/818194) (grant no. 818194);
- [ARIADNEplus](https://cordis.europa.eu/project/id/823914) (grant no. 823914);
- [RISIS 2](https://cordis.europa.eu/project/id/824091) (grant no. 824091);
- [EOSC-Pillar](https://cordis.europa.eu/project/id/857650) (grant no. 857650);
- [Blue Cloud](https://cordis.europa.eu/project/id/862409) (grant no. 862409);
- [SoBigData-PlusPlus](https://cordis.europa.eu/project/id/871042) (grant no. 871042);

View File

@ -37,37 +37,16 @@ Tell people how to cite this software.
url = {http://www.gcube-system.org/}
}
## License
### License
This project is licensed under the EUPL V.1.1 License - see the [LICENSE.md](LICENSE.md) file for details.
## About the gCube Framework
This software is part of the [gCubeFramework](https://www.gcube-system.org/ "gCubeFramework"): an
open-source software toolkit used for building and operating Hybrid Data
Infrastructures enabling the dynamic deployment of Virtual Research Environments
by favouring the realisation of reuse oriented policies.
The projects leading to this software have received funding from a series of European Union programmes including:
- the Sixth Framework Programme for Research and Technological Development
- DILIGENT (grant no. 004260).
- the Seventh Framework Programme for research, technological development and demonstration
- D4Science (grant no. 212488);
- D4Science-II (grant no.239019);
- ENVRI (grant no. 283465);
- iMarine(grant no. 283644);
- EUBrazilOpenBio (grant no. 288754).
- the H2020 research and innovation programme
- SoBigData (grant no. 654024);
- PARTHENOS (grant no. 654119);
- EGIEngage (grant no. 654142);
- ENVRIplus (grant no. 654182);
- BlueBRIDGE (grant no. 675680);
- PerformFish (grant no. 727610);
- AGINFRAplus (grant no. 731001);
- DESIRA (grant no. 818194);
- ARIADNEplus (grant no. 823914);
- RISIS2 (grant no. 824091);
The projects leading to this software have received funding from a series of European Union programmes see [FUNDING.md](FUNDING.md)

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<ReleaseNotes>
<Changeset component="org.gcube.information-system.is-exporter-se-plugin.1-4-0" date="${buildDate}">
<Change>Refactored code to support IS Model reorganization (e.g naming, packages)</Change>
<Change>Refactored code to support renaming of Embedded class to Property #13274</Change>
<Change>Starting to use the new Encrypted property type #12812</Change>
</Changeset>
<Changeset component="org.gcube.information-system.is-exporter-se-plugin.1-3-0" date="2018-11-20">
<Change>Using resource-regsitry v2 apis #11949</Change>
</Changeset>
<Changeset component="org.gcube.information-system.is-exporter-se-plugin.1-2-0" date="2017-12-20">
<Change>Creating uber-jar instead of jar-with-dependencies and using new make-servicearchive directive #10159</Change>
<Change>Using new APIs signature #10318</Change>
</Changeset>
<Changeset component="org.gcube.information-system.is-exporter-se-plugin.1-1-0" date="2017-07-25">
<Change>Removed List and Set usage as workaround fo OrientDB bug #9021</Change>
</Changeset>
<Changeset component="org.gcube.information-system.is-exporter-se-plugin.1-0-0" date="2017-06-07">
<Change>First Release</Change>
</Changeset>
</ReleaseNotes>

View File

@ -0,0 +1,4 @@
groupId=${groupId}
artifactId=${artifactId}
version=${version}
description=${description}

28
pom.xml
View File

@ -10,7 +10,7 @@
<groupId>org.gcube.information-system</groupId>
<artifactId>is-exporter-se-plugin</artifactId>
<version>1.4.0-SNAPSHOT</version>
<version>2.0.0-SNAPSHOT</version>
<name>Information System Exporter Smart Executor Plugin</name>
<description>
Information System Exporter Smart Executor Plugin exports
@ -36,14 +36,7 @@
<dependency>
<groupId>org.gcube.vremanagement</groupId>
<artifactId>smart-executor-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.gcube.information-system</groupId>
<artifactId>information-system-bom</artifactId>
<version>1.5.0</version>
<version>3.1.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
@ -151,23 +144,6 @@
<goal>single</goal>
</goals>
</execution>
<execution>
<id>tar.gz</id>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>tar-gz.xml</descriptor>
</descriptors>
</configuration>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
<execution>
<id>make-servicearchive</id>
<phase>package</phase>
</execution>
</executions>
</plugin>
</plugins>

View File

@ -14,7 +14,7 @@ import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class ISExporterPlugin extends Plugin<ISExporterPluginDeclaration> {
public class ISExporterPlugin extends Plugin {
/**
* Logger
@ -24,9 +24,9 @@ public class ISExporterPlugin extends Plugin<ISExporterPluginDeclaration> {
public static final String FILTERED_REPORT = "FILTERED_REPORT";
public static final String STATISTICS = "STATISTICS";
public ISExporterPlugin(ISExporterPluginDeclaration pluginDeclaration) {
super(pluginDeclaration);
logger.debug("contructor");
public ISExporterPlugin() {
super();
logger.debug("{} contructor", this.getClass().getSimpleName());
}
/**{@inheritDoc}*/
@ -36,7 +36,7 @@ public class ISExporterPlugin extends Plugin<ISExporterPluginDeclaration> {
AuthorizationEntry authorizationEntry = Constants.authorizationService().get(token);
String scope = authorizationEntry.getContext();
logger.info("Launching {} execution on scope {}",
ISExporterPluginDeclaration.NAME, scope);
this.getName(), scope);
boolean filteredReport = false;
@ -61,7 +61,7 @@ public class ISExporterPlugin extends Plugin<ISExporterPluginDeclaration> {
ServiceEndpointExporter serviceEndpointExporter = new ServiceEndpointExporter(filteredReport, statistics);
serviceEndpointExporter.export();
logger.info("{} execution finished", ISExporterPluginDeclaration.NAME);
logger.info("{} execution finished", this.getName());
}
/**{@inheritDoc}*/

View File

@ -1,69 +0,0 @@
/**
*
*/
package org.gcube.informationsystem.exporter;
import java.util.HashMap;
import java.util.Map;
import org.gcube.vremanagement.executor.plugin.Plugin;
import org.gcube.vremanagement.executor.plugin.PluginDeclaration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class ISExporterPluginDeclaration implements PluginDeclaration {
/**
* Logger
*/
private static Logger logger = LoggerFactory.getLogger(ISExporterPlugin.class);
/**
* Plugin name used by the Executor to retrieve this class
*/
public static final String NAME = "ISExporter";
public static final String DESCRIPTION = "IS Exporter";
public static final String VERSION = "1.0.0";
/**{@inheritDoc}*/
@Override
public void init() {
logger.debug(String.format("%s initialized", ISExporterPlugin.class.getSimpleName()));
}
/**{@inheritDoc}*/
@Override
public String getName() {
return NAME;
}
/**{@inheritDoc}*/
@Override
public String getDescription() {
return DESCRIPTION;
}
/**{@inheritDoc}*/
@Override
public String getVersion() {
return VERSION;
}
/**{@inheritDoc}*/
@Override
public Map<String, String> getSupportedCapabilities() {
Map<String, String> discoveredCapabilities = new HashMap<String, String>();
// No capabilities to discover
return discoveredCapabilities;
}
/**{@inheritDoc}*/
@Override
public Class<? extends Plugin<? extends PluginDeclaration>> getPluginImplementation() {
return ISExporterPlugin.class;
}
}

View File

@ -14,6 +14,10 @@ import java.util.Date;
import java.util.List;
import java.util.UUID;
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode;
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
import org.gcube.common.authorization.client.Constants;
import org.gcube.common.authorization.library.AuthorizationEntry;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
@ -39,11 +43,6 @@ import org.gcube.resources.discovery.icclient.ICFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
/**
* @author Luca Frosini (ISTI - CNR)
* @param <GR> the gCore Resource class to map on gCure Model Resource
@ -155,13 +154,13 @@ public abstract class GCoreResourceMapper<GR extends org.gcube.common.resources.
boolean update = false;
try {
update = resourceRegistryClient.exists(rClass, uuid);
update = resourceRegistryClient.existInstance(rClass, uuid);
} catch (NotFoundException e) {
update = false;
} catch (AvailableInAnotherContextException e) {
// This code should never be reached because this should be fixed in
// map function
resourceRegistryPublisher.addResourceToCurrentContext(r);
resourceRegistryPublisher.addResourceToCurrentContext(r, false);
try {
Thread.sleep(100);
} catch (Exception ee) {

View File

@ -27,7 +27,7 @@ import org.json.XML;
/**
* @author Luca Frosini (ISTI - CNR)
*/
public class GenericResourceExporter extends GCoreResourceMapper<GenericResource,Configuration> {
public class GenericResourceExporter extends GCoreResourceMapper<GenericResource, Configuration> {
public static final String FIXED_VERSION = "1.0.0";
public static final String FULL_BODY = "FULL_BODY";
@ -47,11 +47,11 @@ public class GenericResourceExporter extends GCoreResourceMapper<GenericResource
SimpleFacet simpleFacet = null;
try {
readFromIS = resourceRegistryClient.exists(rClass, uuid);
readFromIS = resourceRegistryClient.existInstance(rClass, uuid);
} catch(NotFoundException e) {
readFromIS = false;
} catch(AvailableInAnotherContextException e) {
resourceRegistryPublisher.addResourceToCurrentContext(Configuration.NAME, uuid);
resourceRegistryPublisher.addResourceToCurrentContext(Configuration.NAME, uuid, false);
Thread.sleep(100);
readFromIS = true;
}

View File

@ -23,14 +23,14 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAn
import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException;
import org.gcube.resourcemanagement.model.impl.entities.facets.AccessPointFacetImpl;
import org.gcube.resourcemanagement.model.impl.entities.facets.NetworkingFacetImpl;
import org.gcube.resourcemanagement.model.impl.entities.facets.ServiceStateFacetImpl;
import org.gcube.resourcemanagement.model.impl.entities.facets.SoftwareFacetImpl;
import org.gcube.resourcemanagement.model.impl.entities.facets.StateFacetImpl;
import org.gcube.resourcemanagement.model.impl.entities.resources.EServiceImpl;
import org.gcube.resourcemanagement.model.impl.relations.consistsof.IsIdentifiedByImpl;
import org.gcube.resourcemanagement.model.reference.entities.facets.AccessPointFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.NetworkingFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.ServiceStateFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.SoftwareFacet;
import org.gcube.resourcemanagement.model.reference.entities.facets.StateFacet;
import org.gcube.resourcemanagement.model.reference.entities.resources.EService;
import org.gcube.resourcemanagement.model.reference.relations.consistsof.IsIdentifiedBy;
import org.slf4j.Logger;
@ -75,15 +75,15 @@ public class ServiceEndpointExporter extends GCoreResourceMapper<ServiceEndpoint
AccessPointFacet[] accessPointFacets = null;
SoftwareFacet softwareFacet = null;
SoftwareFacet platformSoftwareFacet = null;
ServiceStateFacet serviceStateFacet = null;
StateFacet stateFacet = null;
NetworkingFacet networkingFacet = null;
try {
readFromIS = resourceRegistryClient.exists(rClass, uuid);
readFromIS = resourceRegistryClient.existInstance(rClass, uuid);
} catch(NotFoundException e) {
readFromIS = false;
} catch(AvailableInAnotherContextException e) {
resourceRegistryPublisher.addResourceToCurrentContext(EService.NAME, uuid);
resourceRegistryPublisher.addResourceToCurrentContext(EService.NAME, uuid, false);
Thread.sleep(100);
readFromIS = true;
}
@ -127,8 +127,8 @@ public class ServiceEndpointExporter extends GCoreResourceMapper<ServiceEndpoint
continue;
}
if(target instanceof ServiceStateFacet) {
serviceStateFacet = (ServiceStateFacet) target;
if(target instanceof StateFacet) {
stateFacet = (StateFacet) target;
continue;
}
@ -181,11 +181,11 @@ public class ServiceEndpointExporter extends GCoreResourceMapper<ServiceEndpoint
/* ----------------------------------------- */
Runtime runTime = profile.runtime();
if(serviceStateFacet == null) {
serviceStateFacet = new ServiceStateFacetImpl();
eService.addFacet(serviceStateFacet);
if(stateFacet == null) {
stateFacet = new StateFacetImpl();
eService.addFacet(stateFacet);
}
serviceStateFacet.setValue(runTime.status());
stateFacet.setValue(runTime.status());
if(networkingFacet == null) {
networkingFacet = new NetworkingFacetImpl();

View File

@ -0,0 +1 @@
org.gcube.informationsystem.exporter.ISExporterPlugin

View File

@ -1 +0,0 @@
org.gcube.informationsystem.exporter.ISExporterPluginDeclaration

View File

@ -24,7 +24,7 @@ public class ISExporterPluginTest {
logger.info("\n\n\n-------------------------------------------------------------------------");
ContextTest.setContextByName(context);
ISExporterPlugin isExporterPlugin = new ISExporterPlugin(new ISExporterPluginDeclaration());
ISExporterPlugin isExporterPlugin = new ISExporterPlugin();
Map<String,Object> inputs = new HashMap<String,Object>();
inputs.put(ISExporterPlugin.FILTERED_REPORT, true);
inputs.put(ISExporterPlugin.STATISTICS, false);

View File

@ -0,0 +1,4 @@
groupId=org.gcube.information-system
artifactId=is-exporter-se-plugin
version=2.0.0-SNAPSHOT
description=Information System Exporter Smart Executor Plugin

View File

@ -1,24 +0,0 @@
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>tar.gz</id>
<formats>
<format>tar.gz</format>
</formats>
<baseDirectory>${file.separator}</baseDirectory>
<fileSets>
<fileSet>
<directory>target${file.separator}libs</directory>
<outputDirectory>${file.separator}</outputDirectory>
<useDefaultExcludes>true</useDefaultExcludes>
<fileMode>755</fileMode>
</fileSet>
</fileSets>
<files>
<file>
<source>target${file.separator}${project.artifactId}-${project.version}.jar</source>
<filtered>true</filtered>
</file>
</files>
</assembly>