public static File createTempDir(String prefix) { return createTempDir(new File(System.getProperty("java.io.tmpdir")), prefix); }
@Override public void terminate() { deleteRecursively(baseDir); deployment = null; }
public static boolean deleteDirectoryContents(File directory) { Preconditions.checkArgument(directory.isDirectory(), "Not a directory: %s", directory); // Don't delete symbolic link directories if (isSymbolicLink(directory)) { return false; } boolean success = true; for (File file : listFiles(directory)) { success = deleteRecursively(file) && success; } return success; }
public static boolean copyDirectoryContents(File src, File target) { Preconditions.checkArgument(src.isDirectory(), "Source dir is not a directory: %s", src); // Don't delete symbolic link directories if (isSymbolicLink(src)) { return false; } target.mkdirs(); Preconditions.checkArgument(target.isDirectory(), "Target dir is not a directory: %s", src); boolean success = true; for (File file : listFiles(src)) { success = copyRecursively(file, new File(target, file.getName())) && success; } return success; }
public InstallationHelper() throws Exception { File targetRepo = null; File binaryFile; try { targetRepo = createTempDir("repo"); binaryFile = new File(targetRepo, "binary.tar.gz"); createArchive(binaryFile); } catch (Exception e) { if (targetRepo != null) { deleteRecursively(targetRepo); } throw e; } this.targetRepo = targetRepo; appleInstallation = new Installation("apple", APPLE_ASSIGNMENT, binaryFile.toURI(), new File("README.txt").toURI(), ImmutableMap.of("memory", 512)); bananaInstallation = new Installation("banana", BANANA_ASSIGNMENT, binaryFile.toURI(), new File("README.txt").toURI(), ImmutableMap.of("cpu", 1)); }
File tempDir = createTempDir(baseDir, "tmp-install"); try { unpackDir.mkdirs(); try { extractTar(binary, unpackDir, tarTimeout); List<File> files = listFiles(unpackDir); if (files.size() != 1) { throw new RuntimeException("Invalid tar file: file does not have a root directory " + assignment.getBinary()); deleteRecursively(this.deployment.getDeploymentDir()); this.deployment = null; if (!deleteRecursively(tempDir)) { log.warn("Unable to delete temp directory: %s", tempDir.getAbsolutePath());
public static void createArchive(File archive) throws Exception { File tempDir = createTempDir("archive"); try { // copy launcher to bin dir File binDir = new File(tempDir, "bin"); binDir.mkdirs(); File launcher = new File(binDir, "launcher"); asByteSource(getResource(ArchiveHelper.class, "launcher")).copyTo(asByteSink(launcher)); // make launcher executable launcher.setExecutable(true, true); // add a readme file Files.write(ArchiveHelper.class.getName() + " test archive", new File(tempDir, "README.txt"), UTF_8); // tar up the archive createTar(tempDir, archive); } finally { FileUtils.deleteRecursively(tempDir); } } }
File nestedSymDir = null; try { baseDir = createTempDir("link-test"); assertFalse(isSymbolicLink(realDir)); assertFalse(isSymbolicLink(realFile)); createSymbolicLink(realFile, symFile); assertTrue(isSymbolicLink(symFile)); createSymbolicLink(realDir, symDir); assertTrue(isSymbolicLink(symDir)); assertTrue(isSymbolicLink(new File(symDir, "symFile"))); assertFalse(isSymbolicLink(new File(symDir, "realFile"))); createSymbolicLink(realDir, nestedSymDir); assertTrue(isSymbolicLink(nestedSymDir)); assertTrue(isSymbolicLink(new File(nestedSymDir, "symFile"))); assertFalse(isSymbolicLink(new File(nestedSymDir, "realFile")));
public static File newFile(File parent, String... paths) { Preconditions.checkNotNull(parent, "parent is null"); Preconditions.checkNotNull(paths, "paths is null"); return newFile(parent, ImmutableList.copyOf(paths)); }
@Override public List<DeploymentManager> loadSlots() { ImmutableList.Builder<DeploymentManager> builder = ImmutableList.builder(); for (File dir : listFiles(slotDir)) { if (dir.isDirectory() && new File(dir, "airship-slot-id.txt").canRead()) { DirectoryDeploymentManager deploymentManager = new DirectoryDeploymentManager(dir, location + "/" + dir.getName(), tarTimeout); builder.add(deploymentManager); } } return builder.build(); }
public static File createRepoDir() throws Exception { File targetRepo = null; try { targetRepo = createTempDir("repo"); // tar up the archive and add them to the repository File appleArchiveV1 = new File(targetRepo, "apple-1.0.tar.gz"); File appleArchiveV2 = new File(targetRepo, "apple-2.0.tar.gz"); File bananaArchive = new File(targetRepo, "banana-2.0-SNAPSHOT.tar.gz"); createArchive(appleArchiveV1); appleArchiveV2.getParentFile().mkdirs(); Files.copy(appleArchiveV1, appleArchiveV2); bananaArchive.getParentFile().mkdirs(); Files.copy(appleArchiveV1, bananaArchive); // add prod configurations createConfig(targetRepo, "apple", "1.0"); createConfig(targetRepo, "apple", "2.0"); createConfig(targetRepo, "banana", "2.0-SNAPSHOT"); return targetRepo; } catch (Exception e) { if (targetRepo != null) { deleteRecursively(targetRepo); } throw e; } }
public static File newFile(String parent, String... paths) { Preconditions.checkNotNull(parent, "parent is null"); Preconditions.checkNotNull(paths, "paths is null"); return newFile(new File(parent), ImmutableList.copyOf(paths)); }
private synchronized File getSlotDirectory(Installation installation) { String baseName = toBaseName(installation); baseName = baseName.replace("[^a-zA-Z0-9_.-]", "_"); Set<String> fileNames = ImmutableSet.copyOf(Lists.transform(FileUtils.listFiles(slotDir), new Function<File, String>() { @Override public String apply(@Nullable File file) { return file.getName(); } })); if (!fileNames.contains(baseName)) { return new File(slotDir, baseName); } for (int i = 1; i < 10000; i++) { String directoryName = baseName + i; if (!fileNames.contains(directoryName)) { return new File(slotDir, directoryName); } } throw new IllegalStateException("Could not find an valid slot directory name"); }
public static File createRepoDir() throws Exception { File targetRepo = null; try { targetRepo = createTempDir("repo"); // tar up the archive and add them to the repository File appleArchiveV1 = new File(targetRepo, "apple-1.0.tar.gz"); File appleArchiveV2 = new File(targetRepo, "apple-2.0.tar.gz"); File bananaArchive = new File(targetRepo, "banana-2.0-SNAPSHOT.tar.gz"); createArchive(appleArchiveV1); appleArchiveV2.getParentFile().mkdirs(); Files.copy(appleArchiveV1, appleArchiveV2); bananaArchive.getParentFile().mkdirs(); Files.copy(appleArchiveV1, bananaArchive); // add prod configurations createConfig(targetRepo, "apple", "1.0"); createConfig(targetRepo, "apple", "2.0"); createConfig(targetRepo, "banana", "2.0-SNAPSHOT"); return targetRepo; } catch (Exception e) { if (targetRepo != null) { deleteRecursively(targetRepo); } throw e; } }
public void destroy() { deleteRecursively(targetRepo); }
public CoordinatorServer(Instance instance) { Preconditions.checkNotNull(instance, "instance is null"); this.instance = instance; tempDir = createTempDir("coordinator"); resourcesFile = new File(tempDir, "slots/airship-resources.properties"); }
public static void createConfig(File dir, String artifactId, String version) throws Exception File configFile = newFile(dir, artifactId + "-" + version + ".config");
@Override public Collection<ExpectedSlotStatus> getAllExpectedStates() { List<ExpectedSlotStatus> slots = newArrayList(); for (File file : FileUtils.listFiles(dataDir, new PatternFilenameFilter("[^\\.].*\\.json"))) { try { String json = Files.toString(file, Charsets.UTF_8); ExpectedSlotStatus expectedSlotStatus = codec.fromJson(json); slots.add(expectedSlotStatus); } catch (Exception e) { // skip corrupted entries... these will be marked as unexpected // and someone will resolve the conflict (and overwrite the corrupted record) } } return slots; }
targetRepo = createTempDir("repo"); deleteRecursively(targetRepo);
public void destroy() { deleteRecursively(targetRepo); }