package org.gcube.dataanalysys.dataminerpoolmanager.service; ***REMOVED*** import java.util.Collection; import java.util.Vector; import org.gcube.dataanalysys.dataminerpoolmanager.ansiblebridge.AnsibleBridge; import org.gcube.dataanalysys.dataminerpoolmanager.clients.ISClient; import org.gcube.dataanalysys.dataminerpoolmanager.datamodel.Algorithm; import org.gcube.dataanalysys.dataminerpoolmanager.datamodel.AlgorithmSet; import org.gcube.dataanalysys.dataminerpoolmanager.datamodel.Cluster; import org.gcube.dataanalysys.dataminerpoolmanager.datamodel.Dependency; import org.gcube.dataanalysys.dataminerpoolmanager.datamodel.Host; public class DataminerPoolManager ***REMOVED*** ***REMOVED*** static Collection algorithms; ***REMOVED*** ***REMOVED*** static Collection sets; ***REMOVED*** ***REMOVED*** static ***REMOVED*** ***REMOVED*** algorithms = new Vector<>(); ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** public DataminerPoolManager() ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** /** ***REMOVED*** * Add a new algorithm to the set of known ones. No further action is expected ***REMOVED*** * on the pool. ***REMOVED*** */ ***REMOVED*** public void publishAlgorithm(Algorithm algorithm) ***REMOVED*** ***REMOVED*** algorithms.add(algorithm); ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** /** ***REMOVED*** * Re-deploy the given algorithm wherever it's installed ***REMOVED*** * ***REMOVED*** * @param algorithm ***REMOVED*** */ ***REMOVED*** /* ***REMOVED*** * public void updateAlgorithm(Algorithm algorithm) ***REMOVED*** ***REMOVED*** TODO implement this ***REMOVED*** ***REMOVED*** */ ***REMOVED*** ***REMOVED*** /** ***REMOVED*** * Add the give algorithm to the given set ***REMOVED*** * ***REMOVED*** * @param algorithmId ***REMOVED*** * @param setId ***REMOVED*** */ ***REMOVED*** public void addAlgorithmToSet(String algorithmName, String setName) ***REMOVED*** ***REMOVED*** AlgorithmSet set = this.getAlgorithmSet(setName); ***REMOVED*** Algorithm algorithm = this.getAlgorithm(algorithmName); ***REMOVED*** if (set != null && algorithm != null) ***REMOVED*** ***REMOVED*** set.addAlgorithm(algorithm); ***REMOVED*** this.updateClusters(); ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** /** ***REMOVED*** * Apply the given set of algorithms to the given cluster ***REMOVED*** * ***REMOVED*** * @param setId ***REMOVED*** * @param clusterId ***REMOVED*** */ ***REMOVED*** public void applyAlgorithmSetToCluster(String setName, String clusterName) ***REMOVED*** ***REMOVED*** AlgorithmSet set = this.getAlgorithmSet(setName); ***REMOVED*** Cluster cluster = new ISClient().getCluster(clusterName); ***REMOVED*** if (set != null && cluster != null) ***REMOVED*** ***REMOVED*** cluster.addAlgorithmSet(set); ***REMOVED*** this.updateClusters(); ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** private AlgorithmSet getAlgorithmSet(String name) ***REMOVED*** ***REMOVED*** for (AlgorithmSet set : sets) ***REMOVED*** ***REMOVED*** if (name.equals(set.getName())) ***REMOVED*** ***REMOVED*** return set; ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** return null; ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** private Algorithm getAlgorithm(String name) ***REMOVED*** ***REMOVED*** for (Algorithm a : algorithms) ***REMOVED*** ***REMOVED*** if (name.equals(a.getName())) ***REMOVED*** ***REMOVED*** return a; ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** ***REMOVED*** return null; ***REMOVED*** ***REMOVED*** /** * Publish the given algorithm in the given VRE * * @param algorithmName * @param vre */ public void addAlgorithmToVRE(Algorithm algorithm, String vre) throws IOException ***REMOVED*** ***REMOVED*** create a fake algorithm set AlgorithmSet algoSet = new AlgorithmSet(); algoSet.setName("fake"); algoSet.addAlgorithm(algorithm); ***REMOVED*** create the cluster (dataminers in the vre) Cluster cluster = new Cluster(); for(Host h:new ISClient().listDataminersInVRE(vre)) ***REMOVED*** cluster.addHost(h); ***REMOVED*** ***REMOVED*** apply the changes new AnsibleBridge().applyAlgorithmSetToCluster(algoSet, cluster); ***REMOVED*** public void addAlgorithmsToVRE(AlgorithmSet algorithms, String vre) throws IOException ***REMOVED*** ***REMOVED*** create the cluster (dataminers in the vre) Cluster cluster = new Cluster(); for(Host h:new ISClient().listDataminersInVRE(vre)) ***REMOVED*** cluster.addHost(h); ***REMOVED*** ***REMOVED*** apply the changes new AnsibleBridge().applyAlgorithmSetToCluster(algorithms, cluster); ***REMOVED*** ***REMOVED*** private void updateClusters() ***REMOVED*** ***REMOVED*** System.out.println("flushing changes to all clusters"); ***REMOVED*** ***REMOVED*** ***REMOVED***