try { String backupContainer = BrooklynServerPaths.newBackupPersistencePathResolver(managementContext) .location(backupSpec).nonBackupLocation(nonBackupSpec).resolveWithSubpathFor(managementContext, mode.toString()); destinationObjectStore = BrooklynPersistenceUtils.newPersistenceObjectStore(managementContext, backupSpec, backupContainer); log.debug("Backing up persisted state on "+mode+", to "+destinationObjectStore.getSummaryName()); backupSpec = "localhost"; String backupContainer = BrooklynServerPaths.newBackupPersistencePathResolver(managementContext) .location(backupSpec).nonBackupLocation(nonBackupSpec).resolveWithSubpathFor(managementContext, mode.toString()); destinationObjectStore = BrooklynPersistenceUtils.newPersistenceObjectStore(managementContext, backupSpec, backupContainer); log.warn("Persisted state back-up to "+(failedStore!=null ? failedStore.getSummaryName() : failedSpec)
@Test public void testPlaneIdBackedUp() throws Exception { final LocalManagementContext origMgmt = createManagementContext(PersistMode.AUTO, HighAvailabilityMode.AUTO); checkPlaneIdPersisted(origMgmt); Entities.destroyAll(origMgmt); LocalManagementContext rebindMgmt = createManagementContextWithBackups(PersistMode.AUTO, HighAvailabilityMode.AUTO); assertEquals(origMgmt.getManagementPlaneIdMaybe(), rebindMgmt.getManagementPlaneIdMaybe()); String backupContainer = BrooklynServerPaths.newBackupPersistencePathResolver(rebindMgmt).resolve(); File[] promotionFolders = new File(backupContainer).listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.contains("promotion"); } }); assertEquals(promotionFolders.length, 1); File planeIdFile = new File(promotionFolders[0], BrooklynMementoPersisterToObjectStore.PLANE_ID_FILE_NAME); String planeId = readFile(planeIdFile); assertEquals(origMgmt.getManagementPlaneIdMaybe().get(), planeId); }
/** @see PersistenceBackupPathResolver */ public static PersistenceBackupPathResolver newBackupPersistencePathResolver(ManagementContext mgmt) { return new PersistenceBackupPathResolver(mgmt.getConfig()); }
@Override protected String getDefaultDirForAnyFilesystem() { return backupContainerFor(DEFAULT_PERSISTENCE_CONTAINER_NAME); } @Override
/** Appends a standard format subpath sub-path to the path returned by {@link #resolve()}. * <p> * For example, this might write to: * <code>~/.brooklyn/brooklyn-persisted-state/backups/2014-11-13-1201-n0deId-promotion-sA1t */ public String resolveWithSubpathFor(ManagementContext managementContext, String label) { return resolveWithSubpath(Time.makeDateSimpleStampString()+"-"+managementContext.getManagementNodeId()+"-"+label+"-"+Identifiers.makeRandomId(4)); } @Override
@Override protected String getDefaultPathFromConfig() { Maybe<Object> result = brooklynProperties.getConfigLocalRaw(BrooklynServerConfig.PERSISTENCE_BACKUPS_DIR); if (result.isPresent()) return Strings.toString(result.get()); if (isBackupSameLocation()) { return backupContainerFor(brooklynProperties.getConfig(BrooklynServerConfig.PERSISTENCE_DIR)); } return null; } protected String backupContainerFor(String nonBackupContainer) {
@Override protected String getDefaultContainerForAnyNonFilesystem() { return backupContainerFor(super.getDefaultContainerForAnyNonFilesystem()); } }