All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.elastisys.scale.cloudpool.commons.scaledown.strategies.NewestInstanceVictimSelectionStrategy Maven / Gradle / Ivy

There is a newer version: 5.2.3
Show newest version
package com.elastisys.scale.cloudpool.commons.scaledown.strategies;

import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;

import java.util.Collection;
import java.util.Comparator;

import com.elastisys.scale.cloudpool.api.types.Machine;
import com.elastisys.scale.cloudpool.commons.scaledown.VictimSelectionStrategy;

/**
 * A {@link VictimSelectionStrategy} that selects the most recently created
 * instance for termination.
 *
 *
 */
public enum NewestInstanceVictimSelectionStrategy implements
		VictimSelectionStrategy {

	/** The single instance of this class. */
	INSTANCE;

	@Override
	public Machine selectVictim(Collection candidates)
			throws IllegalArgumentException {
		checkNotNull(candidates, "null candidate set");
		checkArgument(!candidates.isEmpty(), "empty candidate set");

		return Machine.sort(candidates, new NewestFirstOrder()).get(0);
	}

	/**
	 * {@link Comparator} that orders {@link Machine} instances in order of
	 * increasing age (youngest instance first).
	 *
	 *
	 *
	 */
	public class NewestFirstOrder implements Comparator {
		@Override
		public int compare(Machine instance1, Machine instance2) {
			return instance2.getLaunchTime().compareTo(
					instance1.getLaunchTime());
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy