/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
package com.microsoft.azure.management.compute;
import com.microsoft.azure.management.apigeneration.Fluent;
import com.microsoft.azure.management.resources.fluentcore.arm.models.ChildResource;
import com.microsoft.azure.management.resources.fluentcore.model.Attachable;
import com.microsoft.azure.management.resources.fluentcore.model.HasInner;
/**
* A client-side representation for a container service agent pool.
*/
@Fluent
public interface ContainerServiceAgentPool extends
ChildResource<ContainerService>,
HasInner<ContainerServiceAgentPoolProfile> {
/**
* @return the number of agents (VMs) to host docker containers
*/
int count();
/**
* @return size of agent VMs
*/
ContainerServiceVMSizeTypes vmSize();
/**
* @return DNS prefix to be used to create the FQDN for the agent pool
*/
String dnsLabel();
/**
* @return FDQN for the agent pool
*/
String fqdn();
// Fluent interfaces
/**
* The entirety of a container service agent pool definition as a part of a parent definition.
* @param <ParentT> the stage of the container service definition to return to after attaching this definition
*/
interface Definition<ParentT> extends
DefinitionStages.WithAttach<ParentT>,
DefinitionStages.Blank<ParentT>,
DefinitionStages.WithVMSize<ParentT>,
DefinitionStages.WithDnsLabel<ParentT> {
}
/**
* Grouping of container service agent pool definition stages as a part of parent container service definition.
*/
interface DefinitionStages {
/** The final stage of a container service agent pool definition.
* At this stage, any remaining optional settings can be specified, or the container service agent pool
* can be attached to the parent container service definition.
* @param <ParentT> the stage of the container service definition to return to after attaching this definition
*/
interface WithAttach<ParentT> extends
Attachable.InDefinition<ParentT> {
}
/**
* The first stage of a container service agent pool definition.
*
* @param <ParentT> the stage of the container service definition to return to after attaching this definition
*/
interface Blank<ParentT> {
/**
* Specifies the number of agents (VMs) to host docker containers.
* Allowed values must be in the range of 1 to 100 (inclusive).
* @param count the count
* @return the next stage of the definition
*/
WithVMSize<ParentT> withCount(int count);
}
/**
* The stage of a container service agent pool definition allowing to specify the agent VM size.
*
* @param <ParentT> the stage of the container service definition to return to after attaching this definition
*/
interface WithVMSize<ParentT> {
/**
* Specifies the size of the agents VMs.
* @param vmSize the size of the VM
* @return the next stage of the definition
*/
WithDnsLabel<ParentT> withVMSize(ContainerServiceVMSizeTypes vmSize);
}
/**
* The stage of a container service agent pool definition allowing to specify the DNS label.
*
* @param <ParentT> the stage of the container service definition to return to after attaching this definition
*/
interface WithDnsLabel<ParentT> {
/**
* Specify the DNS prefix to be used to create the FQDN for the agent pool.
* @param dnsLabel the Dns label
* @return the next stage of the definition
*/
WithAttach<ParentT> withDnsLabel(String dnsLabel);
}
}
}