@Override public ServiceConfigurator configure(OperationContext context, ModelNode model) throws OperationFailedException { this.backups.clear(); if (model.hasDefined(BackupResourceDefinition.WILDCARD_PATH.getKey())) { SitesConfigurationBuilder builder = new ConfigurationBuilder().sites(); for (Property property : model.get(BackupResourceDefinition.WILDCARD_PATH.getKey()).asPropertyList()) { String siteName = property.getName(); ModelNode backup = property.getValue(); BackupConfigurationBuilder backupBuilder = builder.addBackup(); backupBuilder.site(siteName) .enabled(ENABLED.resolveModelAttribute(context, backup).asBoolean()) .backupFailurePolicy(ModelNodes.asEnum(FAILURE_POLICY.resolveModelAttribute(context, backup), BackupFailurePolicy.class)) .replicationTimeout(TIMEOUT.resolveModelAttribute(context, backup).asLong()) .strategy(ModelNodes.asEnum(STRATEGY.resolveModelAttribute(context, backup), BackupStrategy.class)) .takeOffline() .afterFailures(AFTER_FAILURES.resolveModelAttribute(context, backup).asInt()) .minTimeToWait(MIN_WAIT.resolveModelAttribute(context, backup).asLong()) ; this.backups.put(siteName, backupBuilder.create()); } } return this; }
private void parseTakeOffline(XMLExtendedStreamReader reader, BackupConfigurationBuilder backup) throws XMLStreamException { int count = 0; while (reader.hasNext() && (reader.nextTag() != XMLStreamConstants.END_ELEMENT)) { count++; Element takeOffline = Element.forName(reader.getLocalName()); for (int i = 0; i < reader.getAttributeCount(); i++) { ParseUtils.requireNoNamespaceAttribute(reader, i); String value = replaceProperties(reader.getAttributeValue(i)); Attribute attribute = Attribute.forName(reader.getAttributeLocalName(i)); switch (attribute) { case AFTER_FAILURES: backup.takeOffline().afterFailures(Integer.parseInt(value)); break; case MIN_TIME_TO_WAIT: backup.takeOffline().minTimeToWait(Long.parseLong(value)); break; default: throw ParseUtils.unexpectedElement(reader); } } ParseUtils.requireNoContent(reader); } if (count > 1) throw new CacheConfigurationException("Only one 'takeOffline' element allowed within a 'backup'"); }
@Override public ServiceConfigurator configure(OperationContext context, ModelNode model) throws OperationFailedException { this.backups.clear(); if (model.hasDefined(BackupResourceDefinition.WILDCARD_PATH.getKey())) { SitesConfigurationBuilder builder = new ConfigurationBuilder().sites(); for (Property property : model.get(BackupResourceDefinition.WILDCARD_PATH.getKey()).asPropertyList()) { String siteName = property.getName(); ModelNode backup = property.getValue(); BackupConfigurationBuilder backupBuilder = builder.addBackup(); backupBuilder.site(siteName) .enabled(ENABLED.resolveModelAttribute(context, backup).asBoolean()) .backupFailurePolicy(ModelNodes.asEnum(FAILURE_POLICY.resolveModelAttribute(context, backup), BackupFailurePolicy.class)) .replicationTimeout(TIMEOUT.resolveModelAttribute(context, backup).asLong()) .strategy(ModelNodes.asEnum(STRATEGY.resolveModelAttribute(context, backup), BackupStrategy.class)) .takeOffline() .afterFailures(AFTER_FAILURES.resolveModelAttribute(context, backup).asInt()) .minTimeToWait(MIN_WAIT.resolveModelAttribute(context, backup).asLong()) ; this.backups.put(siteName, backupBuilder.create()); } } return this; }
public void testTakeOfflineDifferentConfig() { Configuration dcc = cacheManager.getCacheConfiguration("takeOfflineDifferentConfig"); assertEquals(1, dcc.sites().allBackups().size()); BackupConfigurationBuilder nyc = new BackupConfigurationBuilder(null).site("NYC").strategy(BackupStrategy.SYNC) .backupFailurePolicy(BackupFailurePolicy.IGNORE).failurePolicyClass(null).replicationTimeout(12003) .useTwoPhaseCommit(false).enabled(true); nyc.takeOffline().afterFailures(321).minTimeToWait(3765); assertTrue(dcc.sites().allBackups().contains(nyc.create())); }
sitesBuilder.addInUseBackupSite(siteName); backupConfigurationBuilder.takeOffline() .afterFailures(BackupSiteConfigurationResource.TAKE_OFFLINE_AFTER_FAILURES.resolveModelAttribute(context, site).asInt()) .minTimeToWait(BackupSiteConfigurationResource.TAKE_OFFLINE_MIN_WAIT.resolveModelAttribute(context, site).asLong());
private void testDefault(Configuration dcc) { BackupConfigurationBuilder nyc = new BackupConfigurationBuilder(null).site("NYC").strategy(BackupStrategy.SYNC) .backupFailurePolicy(BackupFailurePolicy.IGNORE).failurePolicyClass(null).replicationTimeout(12003) .useTwoPhaseCommit(false).enabled(true); nyc.takeOffline().afterFailures(123).minTimeToWait(5673); assertTrue(dcc.sites().allBackups().contains(nyc.create())); assertEquals("someCache", dcc.sites().backupFor().remoteCache()); assertEquals("SFO", dcc.sites().backupFor().remoteSite()); } }
@Override protected void createSites() { GlobalConfigurationBuilder lonGc = GlobalConfigurationBuilder.defaultClusteredBuilder(); lonGc .site().localSite("LON"); ConfigurationBuilder lon = getLonActiveConfig(); lon.sites().addBackup() .site("NYC") .backupFailurePolicy(lonBackupFailurePolicy) .replicationTimeout(100) //keep it small so that the test doesn't take long to run .takeOffline().afterFailures(failures). backup() .strategy(lonBackupStrategy) .failurePolicyClass(lonCustomFailurePolicyClass); lon.sites().addInUseBackupSite("NYC"); createSite("LON", 2, lonGc, lon); }