package io.airlift.airship.cli;
import io.airlift.airship.shared.AgentStatusRepresentation;
import io.airlift.airship.shared.Assignment;
import io.airlift.airship.shared.CoordinatorStatusRepresentation;
import io.airlift.airship.shared.SlotLifecycleState;
import io.airlift.airship.shared.SlotStatusRepresentation;
import io.airlift.airship.shared.UpgradeVersions;
import java.util.List;
public interface Commander
{
CommanderResponse<List<SlotStatusRepresentation>> show(SlotFilter slotFilter);
List<SlotStatusRepresentation> install(AgentFilter agentFilter, int count, Assignment assignment, String expectedVersion);
List<SlotStatusRepresentation> upgrade(SlotFilter slotFilter, UpgradeVersions upgradeVersions, String expectedVersion, boolean force);
List<SlotStatusRepresentation> setState(SlotFilter slotFilter, SlotLifecycleState state, String expectedVersion);
List<SlotStatusRepresentation> terminate(SlotFilter slotFilter, String expectedVersion);
List<SlotStatusRepresentation> resetExpectedState(SlotFilter slotFilter, String expectedVersion);
boolean ssh(SlotFilter slotFilter, String command);
List<CoordinatorStatusRepresentation> showCoordinators(CoordinatorFilter coordinatorFilter);
List<CoordinatorStatusRepresentation> provisionCoordinators(String coordinatorConfig,
int coordinatorCount,
String instanceType,
String availabilityZone,
String ami,
String keyPair,
String securityGroup,
String provisioningScriptsArtifact,
boolean waitForStartup);
boolean sshCoordinator(CoordinatorFilter coordinatorFilter, String command);
CommanderResponse<List<AgentStatusRepresentation>> showAgents(AgentFilter agentFilter);
List<AgentStatusRepresentation> provisionAgents(String agentConfig,
int agentCount,
String instanceType,
String availabilityZone,
String ami,
String keyPair,
String securityGroup,
String provisioningScriptsArtifact,
boolean waitForStartup);
AgentStatusRepresentation terminateAgent(String agentId);
boolean sshAgent(AgentFilter agentFilter, String command);
}