public RestoreSnapshotStep( String daemon, CassandraState cassandraState, CassandraOfferRequirementProvider provider, BackupRestoreContext context) { super(daemon, RestoreSnapshotTask.nameForDaemon(daemon), cassandraState, provider); this.context = context; }
@Override public RestoreSnapshotTask updateId() { return new RestoreSnapshotTask(getBuilder().setTaskId(createId(getName())) .build()); }
@Override public RestoreSnapshotTask update(Protos.TaskState state) { return new RestoreSnapshotTask(getBuilder().setData( getData().withState(state).getBytes()).build()); }
public static RestoreSnapshotTask create( final Protos.TaskInfo template, final CassandraDaemonTask daemon, final BackupRestoreContext context) { CassandraData data = CassandraData.createRestoreSnapshotData( "", context .forNode(daemon.getName()) .withLocalLocation(daemon.getVolumePath() + "/data")); String name = nameForDaemon(daemon); Protos.TaskInfo completedTemplate = Protos.TaskInfo.newBuilder(template) .setName(name) .setTaskId(TaskUtils.toTaskId(name)) .setData(data.getBytes()) .build(); completedTemplate = org.apache.mesos.offer.TaskUtils.clearTransient(completedTemplate); return new RestoreSnapshotTask(completedTemplate); }
Map<String, RestoreSnapshotTask> previousRestoreTasks = new HashMap<String, RestoreSnapshotTask>(); previousRestoreTasks.put("hi", RestoreSnapshotTask.parse(TaskInfo.getDefaultInstance())); Map<String, RestoreSchemaTask> previousRestoreSchemaTasks = new HashMap<String, RestoreSchemaTask>(); previousRestoreSchemaTasks.put("hello", RestoreSchemaTask.parse(TaskInfo.getDefaultInstance()));
public static RestoreSnapshotTask parse(final Protos.TaskInfo info){ return new RestoreSnapshotTask(info); }
public BackupRestoreContext getBackupRestoreContext() { return getData().getBackupRestoreContext(); } }
public RestoreSnapshotTask createRestoreSnapshotTask( CassandraDaemonTask daemon, BackupRestoreContext context) throws PersistenceException { Optional<Protos.TaskInfo> template = getTemplate(daemon); if (template.isPresent()) { return RestoreSnapshotTask.create(template.get(), daemon, context); } else { throw new PersistenceException("Failed to retrieve ClusterTask Template."); } }
private void sendStatus(ExecutorDriver driver, Protos.TaskState state, String message) { Protos.TaskStatus status = cassandraTask .createStatus(state, Optional.of(message)).getTaskStatus(); driver.sendStatusUpdate(status); }
/** * Constructs a new RestoreSnapshot. * * @param driver The ExecutorDriver used to send task status. * @param cassandraTask The RestoreSnapshotTask that will be executed. * @param cassandra The CassandraDaemonProcess running on the host */ public RestoreSnapshot( ExecutorDriver driver, RestoreSnapshotTask cassandraTask, CassandraDaemonProcess cassandra) { this.driver = driver; this.cassandraTask = cassandraTask; this.context = cassandraTask.getBackupRestoreContext(); this.cassandra = cassandra; this.version = cassandra.getTask().getConfig().getVersion(); }
return DownloadSnapshotTask.parse(info); case SNAPSHOT_RESTORE: return RestoreSnapshotTask.parse(info); case SCHEMA_RESTORE: return RestoreSchemaTask.parse(info);
@Override public RestoreSnapshotTask update(Protos.Offer offer) { return new RestoreSnapshotTask(getBuilder() .setSlaveId(offer.getSlaveId()) .setData(getData().withHostname(offer.getHostname()).getBytes()) .build()); }
/** * Gets the name of a RestoreSnapshotTask for a CassandraDaemonTask. * * @param daemon The CassandraDaemonTask for which the snapshot will be * uploaded. * @return The name of the RestoreSnapshotTask for daemon. */ public static final String nameForDaemon(final CassandraDaemonTask daemon) { return nameForDaemon(daemon.getName()); }
public RestoreSnapshotTask getOrCreateRestoreSnapshot( CassandraDaemonTask daemon, BackupRestoreContext context) throws PersistenceException { String name = RestoreSnapshotTask.nameForDaemon(daemon); Map<String, RestoreSnapshotTask> snapshots = getRestoreSnapshotTasks(); if (snapshots.containsKey(name)) { return snapshots.get(name); } else { return createRestoreSnapshotTask(daemon, context); } }