diff --git a/pom.xml b/pom.xml index 57727ac..12e0385 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.dataAnalysis dataminer-pool-manager war - 2.4.0-SNAPSHOT + 2.5.0-SNAPSHOT dataminer-pool-manager diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ClientConfigurationCache.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ClientConfigurationCache.java index ca860b8..af9fdbb 100755 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ClientConfigurationCache.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ClientConfigurationCache.java @@ -5,33 +5,35 @@ import static org.gcube.resources.discovery.icclient.ICFactory.queryFor; import java.util.Date; import java.util.HashMap; +import java.util.Iterator; ***REMOVED*** import java.util.Map; import org.gcube.common.resources.gcore.GenericResource; import org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.ConfigurationImpl.CONFIGURATIONS; -import org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.ConfigurationImpl.REPOSITORIES; import org.gcube.dataanalysis.dataminer.poolmanager.clients.configurations.AbstractConfiguration; import org.gcube.resources.discovery.client.api.DiscoveryClient; import org.gcube.resources.discovery.client.queries.api.SimpleQuery; +***REMOVED*** +***REMOVED*** public class ClientConfigurationCache ***REMOVED*** - private Map repositories; - + private Logger logger; + private SVNRepository svnRepository; private Map configurations; - - private Map repoTimeouts, - configurationsTimeouts; + private long svnRepositoryTimeout; + private Map configurationsTimeouts; private final long duration = 120000; ***REMOVED***2 minutes - public ClientConfigurationCache () + ClientConfigurationCache () ***REMOVED*** - this.repositories = new HashMap<>(); + this.logger = LoggerFactory.getLogger(ClientConfigurationCache.class); + this.svnRepository = null; this.configurations = new HashMap<>(); - this.repoTimeouts = new HashMap<>(); + this.svnRepositoryTimeout = 0; this.configurationsTimeouts = new HashMap<>(); ***REMOVED*** @@ -50,40 +52,69 @@ public class ClientConfigurationCache ***REMOVED*** - public String getRepository (REPOSITORIES repository) + public SVNRepository getSVNRepository () ***REMOVED*** - Long time = this.repoTimeouts.get(repository); long currentTime = new Date().getTime(); - if (time == null || currentTime > time+this.duration) + if (this.svnRepositoryTimeout == 0 || currentTime > this.svnRepositoryTimeout+this.duration) ***REMOVED*** - this.repositories.put(repository.toString(), getRepository (repository.toString())); - this.repoTimeouts.put(repository.toString(), currentTime); + this.svnRepository = queryForRepository(); + this.svnRepositoryTimeout = currentTime; ***REMOVED*** - return this.repositories.get(repository.toString()); + return this.svnRepository; ***REMOVED*** - private String getRepository(String type) ***REMOVED*** - - - String ghost = ""; + private SVNRepository queryForRepository() + ***REMOVED*** SimpleQuery query = queryFor(GenericResource.class); query.addCondition("$resource/Profile/SecondaryType/text() eq 'DMPMConfigurator'").setResult("$resource"); DiscoveryClient client = clientFor(GenericResource.class); List ds = client.submit(query); - for (GenericResource a : ds) ***REMOVED*** - ghost = a.profile().body().getElementsByTagName(type).item(0).getTextContent(); + Iterator resourcesIterator = ds.iterator(); + SVNRepository response = null; + + while (resourcesIterator.hasNext() && response == null) + ***REMOVED*** + GenericResource resource = resourcesIterator.next(); + String repositoryURL = resource.profile().body().getElementsByTagName(SVNRepository.REPOSITORY_URL).item(0).getTextContent(); + + if (repositoryURL != null) + ***REMOVED*** + + String repositoryPath = resource.profile().body().getElementsByTagName(SVNRepository.REPOSITORY_PATH).item(0).getTextContent(); + String repositoryUsername = null; + String repositoryPassword = null; + + + try + ***REMOVED*** + repositoryUsername = resource.profile().body().getElementsByTagName(SVNRepository.REPOSITORY_USERNAME).item(0).getTextContent(); + repositoryPassword = resource.profile().body().getElementsByTagName(SVNRepository.REPOSITORY_PASSWORD).item(0).getTextContent(); + + if (repositoryUsername != null && repositoryUsername.trim() == "") repositoryUsername = null; + + if (repositoryPassword != null && repositoryPassword.trim() == "") repositoryPassword = null; + + this.logger.debug("Repository username "+repositoryUsername); + this.logger.debug("Repository password "+repositoryPassword); + + ***REMOVED*** catch (Exception e) + ***REMOVED*** + this.logger.debug("SVN Username and password not present"); + ***REMOVED*** + + this.logger.debug("SVN Repository URL: "+repositoryURL); + this.logger.debug("SVN Repository path: "+repositoryPath); + + response = new SVNRepository(repositoryURL, repositoryPath,repositoryUsername, repositoryPassword); + + ***REMOVED*** ***REMOVED*** - - - - return ghost.trim (); - -***REMOVED*** - + + return response; ***REMOVED*** private AbstractConfiguration getConfiguration (AbstractConfiguration type) diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/Configuration.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/Configuration.java index ab16f36..f2044c0 100755 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/Configuration.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/Configuration.java @@ -27,9 +27,7 @@ public interface Configuration ***REMOVED*** public String getSVNWCDepsList(); - public String getSVNRepository(); - - public String getSVNMainAlgoRepo(); + public SVNRepository getSVNRepository(); public String getGhostAlgoDirectory(); diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ConfigurationImpl.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ConfigurationImpl.java index c0b0614..f7cdb99 100755 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ConfigurationImpl.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ConfigurationImpl.java @@ -30,21 +30,21 @@ public class ConfigurationImpl implements Configuration ***REMOVED*** ***REMOVED*** - enum REPOSITORIES ***REMOVED*** - REPO ("svn.repository"), - MAIN_ALGO ("svn.algo.main.repo"); - - private String type; - - private REPOSITORIES(String type) ***REMOVED*** - this.type = type; - ***REMOVED*** - -***REMOVED*** - public String toString() ***REMOVED*** - return this.type; - ***REMOVED*** -***REMOVED*** +***REMOVED*** enum REPOSITORIES ***REMOVED*** +***REMOVED*** REPO ("svn.repository"), +***REMOVED*** MAIN_ALGO ("svn.algo.main.repo"); +***REMOVED*** +***REMOVED*** private String type; +***REMOVED*** +***REMOVED*** private REPOSITORIES(String type) ***REMOVED*** +***REMOVED*** this.type = type; +***REMOVED*** ***REMOVED*** +***REMOVED*** +***REMOVED******REMOVED*** +***REMOVED*** public String toString() ***REMOVED*** +***REMOVED*** return this.type; +***REMOVED*** ***REMOVED*** +***REMOVED******REMOVED*** private CONFIGURATIONS type; @@ -129,17 +129,12 @@ public class ConfigurationImpl implements Configuration ***REMOVED*** ***REMOVED*** ***REMOVED*** - public String getSVNRepository() + public SVNRepository getSVNRepository() ***REMOVED*** - return this.cache.getRepository(REPOSITORIES.REPO); + return this.cache.getSVNRepository(); ***REMOVED*** -***REMOVED*** - public String getSVNMainAlgoRepo() ***REMOVED*** - - return this.cache.getRepository(REPOSITORIES.MAIN_ALGO); -***REMOVED*** ***REMOVED*** public String getGhostAlgoDirectory() ***REMOVED*** diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java index 7b86111..2bd493a 100755 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java @@ -106,7 +106,7 @@ public class DMPMClientConfiguratorManager System.out.println("RESULT 1"+a.getStagingConfiguration().getSVNCRANDepsList()); System.out.println("RESULT 2"+a.getProductionConfiguration().getRepository()); - System.out.println("RESULT 3"+a.getStagingConfiguration().getSVNMainAlgoRepo()); + System.out.println("RESULT 3"+a.getStagingConfiguration().getSVNRepository().getPath()); ***REMOVED***System.out.println(a.getRepo()); ***REMOVED***System.out.println(a.getAlgoRepo()); ***REMOVED***System.out.println(a.getSVNRepo()); diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/SVNRepository.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/SVNRepository.java new file mode 100755 index 0000000..2316218 --- /dev/null +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/SVNRepository.java @@ -0,0 +1,53 @@ +package org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration; + +public class SVNRepository +***REMOVED*** + + static final String REPOSITORY_URL = "svn.repository", + REPOSITORY_PATH = "svn.algo.main.repo", + REPOSITORY_USERNAME = "svn.repository.username", + REPOSITORY_PASSWORD = "svn.repository.password"; + + private String baseUrl, + path, + username, + password; + + SVNRepository(String baseUrl, String path, String username, String password) ***REMOVED*** + this.baseUrl = baseUrl; + this.path = path; + this.username = username; + this.password = password; +***REMOVED*** + + SVNRepository(String baseUrl, String path) ***REMOVED*** + this (baseUrl, path, null, null); +***REMOVED*** + + public String getUsername() ***REMOVED*** + return username; +***REMOVED*** + + public void setUsername(String username) ***REMOVED*** + this.username = username; +***REMOVED*** + + public String getPassword() ***REMOVED*** + return password; +***REMOVED*** + + public void setPassword(String password) ***REMOVED*** + this.password = password; +***REMOVED*** + + public String getBaseUrl() ***REMOVED*** + return baseUrl; +***REMOVED*** + + public String getPath() ***REMOVED*** + return path; +***REMOVED*** + + + +***REMOVED*** diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configurations/AbstractConfiguration.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configurations/AbstractConfiguration.java index df0d9f1..decf22d 100755 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configurations/AbstractConfiguration.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configurations/AbstractConfiguration.java @@ -6,7 +6,7 @@ import javax.xml.bind.annotation.XmlElement; public abstract class AbstractConfiguration ***REMOVED*** - private String host; + private String host; private String algorithmsList; private String softwareRepo; private String ghostRepo; @@ -19,11 +19,8 @@ public abstract class AbstractConfiguration private String depsOctave; private String depsPython; private String depsWindowsCompiled; - - - - - + + @XmlElement (name="host") public String getHost() ***REMOVED*** return host; @@ -47,7 +44,8 @@ public abstract class AbstractConfiguration public void setSoftwareRepo(String softwareRepo) ***REMOVED*** this.softwareRepo = softwareRepo; ***REMOVED*** - + + @XmlElement (name="ghost-repo") public String getGhostRepo() ***REMOVED*** return ghostRepo; diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SVNRepositoryManager.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SVNRepositoryManager.java index d4c731c..a9a7d08 100755 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SVNRepositoryManager.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SVNRepositoryManager.java @@ -2,6 +2,8 @@ package org.gcube.dataanalysis.dataminer.poolmanager.util; import org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.Configuration; ***REMOVED*** +***REMOVED*** +***REMOVED*** import org.tmatesoft.svn.core.SVNURL; import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager; import org.tmatesoft.svn.core.io.SVNRepository; @@ -12,11 +14,27 @@ public class SVNRepositoryManager ***REMOVED*** private SVNRepository svnRepository; private static SVNRepositoryManager instance; + private Logger logger; private SVNRepositoryManager (Configuration configuration) throws SVNException ***REMOVED*** - this.svnRepository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(configuration.getSVNRepository())); - ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(); + this.logger = LoggerFactory.getLogger(SVNRepositoryManager.class); + org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.SVNRepository repository = configuration.getSVNRepository(); + this.svnRepository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(repository.getBaseUrl())); + ISVNAuthenticationManager authManager = null; + + if (repository.getUsername() == null) + ***REMOVED*** + this.logger.debug("Using SVN default credentials"); + authManager = SVNWCUtil.createDefaultAuthenticationManager(); + ***REMOVED*** + else + ***REMOVED*** + this.logger.debug("Using IS credentials"); + authManager = SVNWCUtil.createDefaultAuthenticationManager(repository.getUsername(),repository.getPassword()); + + ***REMOVED*** + this.svnRepository.setAuthenticationManager(authManager); ***REMOVED*** diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/impl/CheckMethodStaging.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/impl/CheckMethodStaging.java index 26b40ff..cf56ce0 100755 --- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/impl/CheckMethodStaging.java +++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/impl/CheckMethodStaging.java @@ -12,17 +12,6 @@ public class CheckMethodStaging extends CheckMethod***REMOVED*** ***REMOVED*** super (DMPMClientConfiguratorManager.getInstance().getStagingConfiguration()); ***REMOVED*** - - - - - - - - - - - ***REMOVED*** protected void copyFromDmToSVN(File a) throws Exception***REMOVED*** @@ -30,10 +19,7 @@ public class CheckMethodStaging extends CheckMethod***REMOVED*** ***REMOVED*** - - - - + public static void main(String[] args) throws Exception ***REMOVED*** ***REMOVED*** ServiceConfiguration a = new ServiceConfiguration(); ***REMOVED*** System.out.println(a.getStagingHost());