ref 12742: DataMiner - Support Python 3.6
https://support.d4science.org/issues/12742 Python3.6 added git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-analysis/dataminer-pool-manager@173874 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
4e7a4504b2
commit
304f04f9a0
|
@ -31,300 +31,294 @@ import org.gcube.dataanalysis.dataminer.poolmanager.datamodel.Host;
|
|||
import org.gcube.dataanalysis.dataminer.poolmanager.datamodel.comparator.HostComparator;
|
||||
|
||||
public class AnsibleBridge ***REMOVED***
|
||||
***REMOVED***private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(AnsibleBridge.class);
|
||||
***REMOVED*** private static final org.slf4j.Logger LOGGER =
|
||||
***REMOVED*** LoggerFactory.getLogger(AnsibleBridge.class);
|
||||
|
||||
|
||||
|
||||
private String dpmRoot;
|
||||
|
||||
***REMOVED*** public AnsibleBridge() ***REMOVED***
|
||||
***REMOVED*** this(System.getProperty("user.home")+File.separator+"dataminer-pool-manager");
|
||||
***REMOVED*** ***REMOVED***this(System.getProperty("/home/gcube/dataminer-pool-manager"));
|
||||
private String dpmRoot;
|
||||
|
||||
***REMOVED*** public AnsibleBridge() ***REMOVED***
|
||||
***REMOVED*** this(System.getProperty("user.home")+File.separator+"dataminer-pool-manager");
|
||||
***REMOVED*** ***REMOVED***this(System.getProperty("/home/gcube/dataminer-pool-manager"));
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
|
||||
public AnsibleBridge(String root) ***REMOVED***
|
||||
this.dpmRoot = root;
|
||||
this.ensureServiceRoot();
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
|
||||
public AnsibleBridge(String root) ***REMOVED***
|
||||
this.dpmRoot = root;
|
||||
this.ensureServiceRoot();
|
||||
***REMOVED***
|
||||
|
||||
private void ensureServiceRoot() ***REMOVED***
|
||||
***REMOVED*** generate root
|
||||
new File(dpmRoot).mkdirs();
|
||||
***REMOVED*** 'template' is for template roles
|
||||
***REMOVED***this.getTemplatesDir().mkdirs();
|
||||
***REMOVED*** 'static' is for custom roles
|
||||
***REMOVED***this.getCustomDir().mkdirs();
|
||||
***REMOVED*** 'work' is for temporary working directories
|
||||
this.getWorkDir().mkdirs();
|
||||
***REMOVED***
|
||||
|
||||
private File getWorkDir() ***REMOVED***
|
||||
return new File(this.dpmRoot, "work");
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED*** private String getTemplatesDir() ***REMOVED***
|
||||
***REMOVED*** String input = null;
|
||||
***REMOVED*** input = AnsibleBridge.class.getClassLoader().getResource("templates").getPath();
|
||||
***REMOVED*** return input;
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** private String getCustomDir() ***REMOVED***
|
||||
***REMOVED*** String input = null;
|
||||
***REMOVED*** input = AnsibleBridge.class.getClassLoader().getResource("custom").getPath();
|
||||
***REMOVED*** return input;
|
||||
***REMOVED*** ***REMOVED***
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public AnsibleWorker createWorker(Algorithm algorithm, Cluster dataminerCluster, boolean includeAlgorithmDependencies, String user) throws IOException ***REMOVED***
|
||||
File workerRoot = new File(this.getWorkDir(), UUID.randomUUID().toString());
|
||||
AnsibleWorker worker = new AnsibleWorker(workerRoot);
|
||||
|
||||
List<Role> algoRoles = new Vector<>();
|
||||
|
||||
***REMOVED*** add algorithms and dependencies to the worker
|
||||
for (Role r : this.generateRoles(algorithm,includeAlgorithmDependencies)) ***REMOVED***
|
||||
algoRoles.add(r);
|
||||
worker.addRole(r);
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED***to comment the for in case of just install algo
|
||||
if(includeAlgorithmDependencies)***REMOVED***
|
||||
for (Dependency d : algorithm.getDependencies()) ***REMOVED***
|
||||
for (Role r : this.generateRoles(d)) ***REMOVED***
|
||||
worker.addRole(r);
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
|
||||
|
||||
***REMOVED*** add static roles
|
||||
for(Role r:this.getStaticRoleManager().getStaticRoles()) ***REMOVED***
|
||||
worker.addRole(r);
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED*** generate the inventory
|
||||
Inventory inventory = new Inventory();
|
||||
for (Host h : dataminerCluster.getHosts()) ***REMOVED***
|
||||
AnsibleHost ah = new AnsibleHost(h.getName());
|
||||
inventory.addHost(ah, "universe");
|
||||
inventory.addHost(ah, "d4science");
|
||||
***REMOVED***
|
||||
worker.setInventory(inventory);
|
||||
|
||||
***REMOVED*** generate the playbook
|
||||
Playbook playbook = new Playbook();
|
||||
playbook.setRemote_user(user);
|
||||
playbook.applyTo("universe");
|
||||
for(Role r:algoRoles) ***REMOVED***
|
||||
***REMOVED*** add only 'add' roles
|
||||
if(!r.getName().endsWith("remove")) ***REMOVED***
|
||||
playbook.addRole(r.getName());
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
|
||||
worker.setPlaybook(playbook);
|
||||
|
||||
return worker;
|
||||
***REMOVED***
|
||||
|
||||
|
||||
public void printInventoryByDomainAndSets(Collection<Cluster> clusters) ***REMOVED***
|
||||
Map<String, Set<Host>> inventory = new TreeMap<>();
|
||||
for(Cluster cluster:clusters) ***REMOVED***
|
||||
for(AlgorithmSet as:cluster.getAlgorithmSets()) ***REMOVED***
|
||||
String asName = as.getName();
|
||||
for(Host h:cluster.getHosts()) ***REMOVED***
|
||||
String domain = h.getDomain().getName();
|
||||
String key = String.format("[%s@%s]", asName, domain);
|
||||
Set<Host> hosts = inventory.get(key);
|
||||
if(hosts==null) ***REMOVED***
|
||||
hosts = new TreeSet<>(new HostComparator());
|
||||
inventory.put(key, hosts);
|
||||
***REMOVED***
|
||||
hosts.add(h);
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
for(String key:inventory.keySet()) ***REMOVED***
|
||||
System.out.println(key);
|
||||
Collection<Host> hosts = inventory.get(key);
|
||||
for(Host h:hosts) ***REMOVED***
|
||||
System.out.println(h.getName()+"."+h.getDomain().getName());
|
||||
***REMOVED***
|
||||
System.out.println();
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
|
||||
|
||||
public void printInventoryBySets(Collection<Cluster> clusters) ***REMOVED***
|
||||
Map<String, Set<Host>> inventory = new TreeMap<>();
|
||||
for (Cluster cluster : clusters) ***REMOVED***
|
||||
for (AlgorithmSet as : cluster.getAlgorithmSets()) ***REMOVED***
|
||||
String asName = as.getName();
|
||||
for (Host h : cluster.getHosts()) ***REMOVED***
|
||||
String key = String.format("[%s]", asName);
|
||||
Set<Host> hosts = inventory.get(key);
|
||||
if (hosts == null) ***REMOVED***
|
||||
hosts = new TreeSet<>(new HostComparator());
|
||||
inventory.put(key, hosts);
|
||||
***REMOVED***
|
||||
hosts.add(h);
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
for (String key : inventory.keySet()) ***REMOVED***
|
||||
System.out.println(key);
|
||||
Collection<Host> hosts = inventory.get(key);
|
||||
for (Host h : hosts) ***REMOVED***
|
||||
System.out.println(h.getName()+"."+h.getDomain().getName());
|
||||
***REMOVED***
|
||||
System.out.println();
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED*** public AnsibleWorker applyAlgorithmSetToCluster(AlgorithmSet as, Cluster cluster, /*boolean updateSVN,*/ boolean test) throws IOException, InterruptedException, SVNException ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** return applyAlgorithmSetToCluster (as,cluster,UUID.randomUUID().toString(),/*updateSVN,*/ test);
|
||||
***REMOVED*** ***REMOVED***
|
||||
|
||||
***REMOVED*** public AnsibleWorker applyAlgorithmSetToCluster(AlgorithmSet as, Cluster cluster,String uuid, /*boolean updateSVN,*/ boolean test) throws IOException, InterruptedException, SVNException ***REMOVED***
|
||||
***REMOVED*** AnsibleWorker worker = new AnsibleWorker(new File(this.getWorkDir(), uuid));
|
||||
private void ensureServiceRoot() ***REMOVED***
|
||||
***REMOVED*** generate root
|
||||
new File(dpmRoot).mkdirs();
|
||||
***REMOVED*** 'template' is for template roles
|
||||
***REMOVED*** this.getTemplatesDir().mkdirs();
|
||||
***REMOVED*** 'static' is for custom roles
|
||||
***REMOVED*** this.getCustomDir().mkdirs();
|
||||
***REMOVED*** 'work' is for temporary working directories
|
||||
this.getWorkDir().mkdirs();
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** List<Role> algoRoles = new Vector<>();
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** add algorithms and dependencies to the worker
|
||||
***REMOVED*** for (Algorithm a : as.getAlgorithms()) ***REMOVED***
|
||||
***REMOVED*** for (Role r : this.generateRoles(a)) ***REMOVED***
|
||||
***REMOVED*** algoRoles.add(r);
|
||||
***REMOVED*** worker.addRole(r);
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***to comment the for in case of just install algo
|
||||
***REMOVED*** if(test)***REMOVED***
|
||||
***REMOVED*** for (Dependency d : a.getDependencies()) ***REMOVED***
|
||||
***REMOVED*** for (Role r : this.generateRoles(d)) ***REMOVED***
|
||||
***REMOVED*** worker.addRole(r);
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** add static roles
|
||||
***REMOVED*** for(Role r:this.getStaticRoleManager().getStaticRoles()) ***REMOVED***
|
||||
***REMOVED*** worker.addRole(r);
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** generate the inventory
|
||||
***REMOVED*** Inventory inventory = new Inventory();
|
||||
***REMOVED*** for (Host h : cluster.getHosts()) ***REMOVED***
|
||||
***REMOVED*** AnsibleHost ah = new AnsibleHost(h.getName());
|
||||
***REMOVED*** inventory.addHost(ah, "universe");
|
||||
***REMOVED*** inventory.addHost(ah, "d4science");
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** worker.setInventory(inventory);
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** generate the playbook
|
||||
***REMOVED*** Playbook playbook = new Playbook();
|
||||
***REMOVED*** if(test)***REMOVED***
|
||||
***REMOVED*** playbook.setRemote_user("root");***REMOVED***
|
||||
***REMOVED*** playbook.setRemote_user("gcube");
|
||||
***REMOVED*** playbook.applyTo("universe");
|
||||
***REMOVED*** for(Role r:algoRoles) ***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** add only 'add' roles
|
||||
***REMOVED*** if(!r.getName().endsWith("remove")) ***REMOVED***
|
||||
***REMOVED*** playbook.addRole(r.getName());
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** worker.setPlaybook(playbook);
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** execute and save log locally
|
||||
***REMOVED*** ***REMOVED***PrintStream console = System.out;
|
||||
***REMOVED*** File path = new File(worker.getWorkdir() + File.separator + "logs");
|
||||
***REMOVED*** path.mkdirs();
|
||||
***REMOVED*** File n = new File(path + File.separator + worker.getWorkerId());
|
||||
***REMOVED*** FileOutputStream fos = new FileOutputStream(n);
|
||||
***REMOVED*** PrintStream ps = new PrintStream(fos);
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED***System.setErr(console);
|
||||
***REMOVED***
|
||||
***REMOVED*** worker.apply(as,ps,test);
|
||||
***REMOVED*** ***REMOVED***System.setOut(console);
|
||||
***REMOVED*** ***REMOVED***worker.apply();
|
||||
***REMOVED*** System.out.println("Log stored to to " + n.getAbsolutePath());
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** destroy the worker
|
||||
***REMOVED*** worker.destroy();
|
||||
***REMOVED*** return worker;
|
||||
***REMOVED*** ***REMOVED***
|
||||
|
||||
|
||||
|
||||
private TemplateManager getTemplateManager() ***REMOVED***
|
||||
return new TemplateManager();
|
||||
***REMOVED***
|
||||
|
||||
private CustomRoleManager getCustomRoleManager() ***REMOVED***
|
||||
return new CustomRoleManager();
|
||||
***REMOVED***
|
||||
private File getWorkDir() ***REMOVED***
|
||||
return new File(this.dpmRoot, "work");
|
||||
***REMOVED***
|
||||
|
||||
private StaticRoleManager getStaticRoleManager() ***REMOVED***
|
||||
return new StaticRoleManager();
|
||||
***REMOVED***
|
||||
***REMOVED*** private String getTemplatesDir() ***REMOVED***
|
||||
***REMOVED*** String input = null;
|
||||
***REMOVED*** input =
|
||||
***REMOVED*** AnsibleBridge.class.getClassLoader().getResource("templates").getPath();
|
||||
***REMOVED*** return input;
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** private String getCustomDir() ***REMOVED***
|
||||
***REMOVED*** String input = null;
|
||||
***REMOVED*** input =
|
||||
***REMOVED*** AnsibleBridge.class.getClassLoader().getResource("custom").getPath();
|
||||
***REMOVED*** return input;
|
||||
***REMOVED*** ***REMOVED***
|
||||
|
||||
/**
|
||||
* Generate all roles for this dependency
|
||||
* @param dep Dependency
|
||||
* @return Collection of Roles
|
||||
*/
|
||||
public Collection<Role> generateRoles(Dependency dep) ***REMOVED***
|
||||
Collection<Role> roles = new Vector<>();
|
||||
|
||||
|
||||
if("os".equalsIgnoreCase(dep.getType())) ***REMOVED***
|
||||
OSDependencyPackage pkg = new OSDependencyPackage(dep);
|
||||
if(pkg!=null) ***REMOVED***
|
||||
roles.addAll(pkg.getRoles(this.getTemplateManager()));
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED*** else if("custom".equalsIgnoreCase(dep.getType())) ***REMOVED***
|
||||
CustomDependencyPackage pkg = new CustomDependencyPackage(dep);
|
||||
if(pkg!=null) ***REMOVED***
|
||||
roles.addAll(pkg.getRoles(this.getCustomRoleManager()));
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
|
||||
else if("github".equalsIgnoreCase(dep.getType())) ***REMOVED***
|
||||
CranDependencyPackage pkg = new CranDependencyPackage(dep);
|
||||
if(pkg!=null) ***REMOVED***
|
||||
roles.addAll(pkg.getRoles(this.getTemplateManager()));
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
else if("cran".equalsIgnoreCase(dep.getType())) ***REMOVED***
|
||||
CranDependencyPackage pkg = new CranDependencyPackage(dep);
|
||||
if(pkg!=null) ***REMOVED***
|
||||
roles.addAll(pkg.getRoles(this.getTemplateManager()));
|
||||
***REMOVED***
|
||||
|
||||
|
||||
***REMOVED***
|
||||
return roles;
|
||||
***REMOVED***
|
||||
public AnsibleWorker createWorker(Algorithm algorithm, Cluster dataminerCluster,
|
||||
boolean includeAlgorithmDependencies, String user) throws IOException ***REMOVED***
|
||||
File workerRoot = new File(this.getWorkDir(), UUID.randomUUID().toString());
|
||||
AnsibleWorker worker = new AnsibleWorker(workerRoot);
|
||||
|
||||
public Collection<Role> generateRoles(Algorithm a,boolean includeAlgorithmDependencies) ***REMOVED***
|
||||
AlgorithmPackage pkg = new AlgorithmPackage(a,includeAlgorithmDependencies);
|
||||
return pkg.getRoles(this.getTemplateManager());
|
||||
List<Role> algoRoles = new Vector<>();
|
||||
|
||||
***REMOVED***
|
||||
***REMOVED*** add algorithms and dependencies to the worker
|
||||
for (Role r : this.generateRoles(algorithm, includeAlgorithmDependencies)) ***REMOVED***
|
||||
algoRoles.add(r);
|
||||
worker.addRole(r);
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED*** to comment the for in case of just install algo
|
||||
if (includeAlgorithmDependencies) ***REMOVED***
|
||||
for (Dependency d : algorithm.getDependencies()) ***REMOVED***
|
||||
for (Role r : this.generateRoles(d)) ***REMOVED***
|
||||
worker.addRole(r);
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED*** add static roles
|
||||
for (Role r : this.getStaticRoleManager().getStaticRoles()) ***REMOVED***
|
||||
worker.addRole(r);
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED*** generate the inventory
|
||||
Inventory inventory = new Inventory();
|
||||
for (Host h : dataminerCluster.getHosts()) ***REMOVED***
|
||||
AnsibleHost ah = new AnsibleHost(h.getName());
|
||||
inventory.addHost(ah, "universe");
|
||||
inventory.addHost(ah, "d4science");
|
||||
***REMOVED***
|
||||
worker.setInventory(inventory);
|
||||
|
||||
***REMOVED*** generate the playbook
|
||||
Playbook playbook = new Playbook();
|
||||
playbook.setRemote_user(user);
|
||||
playbook.applyTo("universe");
|
||||
for (Role r : algoRoles) ***REMOVED***
|
||||
***REMOVED*** add only 'add' roles
|
||||
if (!r.getName().endsWith("remove")) ***REMOVED***
|
||||
playbook.addRole(r.getName());
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
|
||||
worker.setPlaybook(playbook);
|
||||
|
||||
return worker;
|
||||
***REMOVED***
|
||||
|
||||
public void printInventoryByDomainAndSets(Collection<Cluster> clusters) ***REMOVED***
|
||||
Map<String, Set<Host>> inventory = new TreeMap<>();
|
||||
for (Cluster cluster : clusters) ***REMOVED***
|
||||
for (AlgorithmSet as : cluster.getAlgorithmSets()) ***REMOVED***
|
||||
String asName = as.getName();
|
||||
for (Host h : cluster.getHosts()) ***REMOVED***
|
||||
String domain = h.getDomain().getName();
|
||||
String key = String.format("[%s@%s]", asName, domain);
|
||||
Set<Host> hosts = inventory.get(key);
|
||||
if (hosts == null) ***REMOVED***
|
||||
hosts = new TreeSet<>(new HostComparator());
|
||||
inventory.put(key, hosts);
|
||||
***REMOVED***
|
||||
hosts.add(h);
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
for (String key : inventory.keySet()) ***REMOVED***
|
||||
System.out.println(key);
|
||||
Collection<Host> hosts = inventory.get(key);
|
||||
for (Host h : hosts) ***REMOVED***
|
||||
System.out.println(h.getName() + "." + h.getDomain().getName());
|
||||
***REMOVED***
|
||||
System.out.println();
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
|
||||
public void printInventoryBySets(Collection<Cluster> clusters) ***REMOVED***
|
||||
Map<String, Set<Host>> inventory = new TreeMap<>();
|
||||
for (Cluster cluster : clusters) ***REMOVED***
|
||||
for (AlgorithmSet as : cluster.getAlgorithmSets()) ***REMOVED***
|
||||
String asName = as.getName();
|
||||
for (Host h : cluster.getHosts()) ***REMOVED***
|
||||
String key = String.format("[%s]", asName);
|
||||
Set<Host> hosts = inventory.get(key);
|
||||
if (hosts == null) ***REMOVED***
|
||||
hosts = new TreeSet<>(new HostComparator());
|
||||
inventory.put(key, hosts);
|
||||
***REMOVED***
|
||||
hosts.add(h);
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
for (String key : inventory.keySet()) ***REMOVED***
|
||||
System.out.println(key);
|
||||
Collection<Host> hosts = inventory.get(key);
|
||||
for (Host h : hosts) ***REMOVED***
|
||||
System.out.println(h.getName() + "." + h.getDomain().getName());
|
||||
***REMOVED***
|
||||
System.out.println();
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED*** public AnsibleWorker applyAlgorithmSetToCluster(AlgorithmSet as, Cluster
|
||||
***REMOVED*** cluster, /*boolean updateSVN,*/ boolean test) throws IOException,
|
||||
***REMOVED*** InterruptedException, SVNException ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** return applyAlgorithmSetToCluster
|
||||
***REMOVED*** (as,cluster,UUID.randomUUID().toString(),/*updateSVN,*/ test);
|
||||
***REMOVED*** ***REMOVED***
|
||||
|
||||
***REMOVED*** public AnsibleWorker applyAlgorithmSetToCluster(AlgorithmSet as, Cluster
|
||||
***REMOVED*** cluster,String uuid, /*boolean updateSVN,*/ boolean test) throws
|
||||
***REMOVED*** IOException, InterruptedException, SVNException ***REMOVED***
|
||||
***REMOVED*** AnsibleWorker worker = new AnsibleWorker(new File(this.getWorkDir(),
|
||||
***REMOVED*** uuid));
|
||||
***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** List<Role> algoRoles = new Vector<>();
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** add algorithms and dependencies to the worker
|
||||
***REMOVED*** for (Algorithm a : as.getAlgorithms()) ***REMOVED***
|
||||
***REMOVED*** for (Role r : this.generateRoles(a)) ***REMOVED***
|
||||
***REMOVED*** algoRoles.add(r);
|
||||
***REMOVED*** worker.addRole(r);
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***to comment the for in case of just install algo
|
||||
***REMOVED*** if(test)***REMOVED***
|
||||
***REMOVED*** for (Dependency d : a.getDependencies()) ***REMOVED***
|
||||
***REMOVED*** for (Role r : this.generateRoles(d)) ***REMOVED***
|
||||
***REMOVED*** worker.addRole(r);
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** add static roles
|
||||
***REMOVED*** for(Role r:this.getStaticRoleManager().getStaticRoles()) ***REMOVED***
|
||||
***REMOVED*** worker.addRole(r);
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** generate the inventory
|
||||
***REMOVED*** Inventory inventory = new Inventory();
|
||||
***REMOVED*** for (Host h : cluster.getHosts()) ***REMOVED***
|
||||
***REMOVED*** AnsibleHost ah = new AnsibleHost(h.getName());
|
||||
***REMOVED*** inventory.addHost(ah, "universe");
|
||||
***REMOVED*** inventory.addHost(ah, "d4science");
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** worker.setInventory(inventory);
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** generate the playbook
|
||||
***REMOVED*** Playbook playbook = new Playbook();
|
||||
***REMOVED*** if(test)***REMOVED***
|
||||
***REMOVED*** playbook.setRemote_user("root");***REMOVED***
|
||||
***REMOVED*** playbook.setRemote_user("gcube");
|
||||
***REMOVED*** playbook.applyTo("universe");
|
||||
***REMOVED*** for(Role r:algoRoles) ***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** add only 'add' roles
|
||||
***REMOVED*** if(!r.getName().endsWith("remove")) ***REMOVED***
|
||||
***REMOVED*** playbook.addRole(r.getName());
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED*** ***REMOVED***
|
||||
***REMOVED***
|
||||
***REMOVED*** worker.setPlaybook(playbook);
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** execute and save log locally
|
||||
***REMOVED*** ***REMOVED***PrintStream console = System.out;
|
||||
***REMOVED*** File path = new File(worker.getWorkdir() + File.separator + "logs");
|
||||
***REMOVED*** path.mkdirs();
|
||||
***REMOVED*** File n = new File(path + File.separator + worker.getWorkerId());
|
||||
***REMOVED*** FileOutputStream fos = new FileOutputStream(n);
|
||||
***REMOVED*** PrintStream ps = new PrintStream(fos);
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED***System.setErr(console);
|
||||
***REMOVED***
|
||||
***REMOVED*** worker.apply(as,ps,test);
|
||||
***REMOVED*** ***REMOVED***System.setOut(console);
|
||||
***REMOVED*** ***REMOVED***worker.apply();
|
||||
***REMOVED*** System.out.println("Log stored to to " + n.getAbsolutePath());
|
||||
***REMOVED***
|
||||
***REMOVED*** ***REMOVED*** destroy the worker
|
||||
***REMOVED*** worker.destroy();
|
||||
***REMOVED*** return worker;
|
||||
***REMOVED*** ***REMOVED***
|
||||
|
||||
private TemplateManager getTemplateManager() ***REMOVED***
|
||||
return new TemplateManager();
|
||||
***REMOVED***
|
||||
|
||||
private CustomRoleManager getCustomRoleManager() ***REMOVED***
|
||||
return new CustomRoleManager();
|
||||
***REMOVED***
|
||||
|
||||
private StaticRoleManager getStaticRoleManager() ***REMOVED***
|
||||
return new StaticRoleManager();
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED****
|
||||
* Generate all roles for this dependency
|
||||
*
|
||||
* @param dep
|
||||
* Dependency
|
||||
* @return Collection of Roles
|
||||
***REMOVED***
|
||||
public Collection<Role> generateRoles(Dependency dep) ***REMOVED***
|
||||
Collection<Role> roles = new Vector<>();
|
||||
|
||||
if ("os".equalsIgnoreCase(dep.getType())) ***REMOVED***
|
||||
OSDependencyPackage pkg = new OSDependencyPackage(dep);
|
||||
if (pkg != null) ***REMOVED***
|
||||
roles.addAll(pkg.getRoles(this.getTemplateManager()));
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED*** else if ("custom".equalsIgnoreCase(dep.getType())) ***REMOVED***
|
||||
CustomDependencyPackage pkg = new CustomDependencyPackage(dep);
|
||||
if (pkg != null) ***REMOVED***
|
||||
roles.addAll(pkg.getRoles(this.getCustomRoleManager()));
|
||||
***REMOVED***
|
||||
***REMOVED*** else if ("github".equalsIgnoreCase(dep.getType())) ***REMOVED***
|
||||
CranDependencyPackage pkg = new CranDependencyPackage(dep);
|
||||
if (pkg != null) ***REMOVED***
|
||||
roles.addAll(pkg.getRoles(this.getTemplateManager()));
|
||||
***REMOVED***
|
||||
***REMOVED*** else if ("cran".equalsIgnoreCase(dep.getType())) ***REMOVED***
|
||||
CranDependencyPackage pkg = new CranDependencyPackage(dep);
|
||||
if (pkg != null) ***REMOVED***
|
||||
roles.addAll(pkg.getRoles(this.getTemplateManager()));
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED***
|
||||
return roles;
|
||||
***REMOVED***
|
||||
|
||||
public Collection<Role> generateRoles(Algorithm a, boolean includeAlgorithmDependencies) ***REMOVED***
|
||||
AlgorithmPackage pkg = new AlgorithmPackage(a, includeAlgorithmDependencies);
|
||||
return pkg.getRoles(this.getTemplateManager());
|
||||
|
||||
***REMOVED***
|
||||
|
||||
***REMOVED***
|
||||
|
|
Loading…
Reference in New Issue