blob: b25f3831cecc58c90375c90b16142421f8f09e38 [file] [log] [blame]
/**
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.aurora.scheduler.storage;
import java.util.EnumSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import org.apache.aurora.gen.JobUpdateQuery;
import org.apache.aurora.gen.JobUpdateStatus;
import org.apache.aurora.scheduler.storage.entities.IJobInstanceUpdateEvent;
import org.apache.aurora.scheduler.storage.entities.IJobUpdate;
import org.apache.aurora.scheduler.storage.entities.IJobUpdateDetails;
import org.apache.aurora.scheduler.storage.entities.IJobUpdateEvent;
import org.apache.aurora.scheduler.storage.entities.IJobUpdateKey;
import org.apache.aurora.scheduler.storage.entities.IJobUpdateQuery;
import static org.apache.aurora.gen.JobUpdateStatus.ABORTED;
import static org.apache.aurora.gen.JobUpdateStatus.ERROR;
import static org.apache.aurora.gen.JobUpdateStatus.FAILED;
import static org.apache.aurora.gen.JobUpdateStatus.ROLLED_BACK;
import static org.apache.aurora.gen.JobUpdateStatus.ROLLED_FORWARD;
/**
* Stores all job updates and defines methods for saving, updating and fetching job updates.
*/
public interface JobUpdateStore {
EnumSet<JobUpdateStatus> TERMINAL_STATES = EnumSet.of(
ROLLED_FORWARD,
ROLLED_BACK,
ABORTED,
FAILED,
ERROR
);
IJobUpdateQuery MATCH_ALL = IJobUpdateQuery.build(new JobUpdateQuery());
/**
* Fetches a read-only view of job update details matching the {@code query}.
*
* @param query Query to identify job update details with.
* @return A read-only view of job update details matching the query.
*/
List<IJobUpdateDetails> fetchJobUpdates(IJobUpdateQuery query);
/**
* Fetches a read-only view of job update details.
*
* @param key Update identifier.
* @return A read-only view of job update details.
*/
Optional<IJobUpdateDetails> fetchJobUpdate(IJobUpdateKey key);
interface Mutable extends JobUpdateStore {
/**
* Saves a job update.
*
* @param update Update to save.
*/
void saveJobUpdate(IJobUpdate update);
/**
* Saves a new job update event.
*
* @param key Update identifier.
* @param event Job update event to save.
*/
void saveJobUpdateEvent(IJobUpdateKey key, IJobUpdateEvent event);
/**
* Saves a new job instance update event.
*
* @param key Update identifier.
* @param event Job instance update event.
*/
void saveJobInstanceUpdateEvent(IJobUpdateKey key, IJobInstanceUpdateEvent event);
/**
* Deletes job updates.
*
* @param keys Keys of the updates to delete.
*/
void removeJobUpdates(Set<IJobUpdateKey> keys);
/**
* Deletes all updates from the store.
*/
void deleteAllUpdates();
}
}