}
private void startInstallation(HostList installList, final List<String> possibleAdminHosts, final List<String> adminHosts, final List<String> submitHosts, final List<String> allHosts, final List<String> allConnectUsers, final List<String> allShadowHosts, final List<String> allShadowConnectUsers) {
//Initialize new threadPool for the installation
threadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(Util.INSTALL_THREAD_POOL_SIZE);
threadPool.setThreadFactory(new TaskThreadFactory());
//We need a new executor for shadowdTasks (only 1 task at single moment)
singleThreadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(1);
singleThreadPool.setThreadFactory(new TaskThreadFactory());
observer.setThreadPoolExecutors(new ThreadPoolExecutor[]{threadPool, singleThreadPool});
observer.setTaskCount(installList.size());
observer.observe();