package com.microsoft.azure.management.batch.implementation;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.batch.BatchAccount;
import com.microsoft.azure.management.batch.Pool;
import com.microsoft.azure.management.batch.NetworkConfiguration;
import com.microsoft.azure.management.batch.ScaleSettings;
import com.microsoft.azure.management.batch.StartTask;
import com.microsoft.azure.management.batch.MountConfiguration;
import com.microsoft.azure.management.batch.MetadataItem;
import com.microsoft.azure.management.batch.ApplicationPackageReference;
import com.microsoft.azure.management.batch.CertificateReference;
import com.microsoft.azure.management.batch.DeploymentConfiguration;
import com.microsoft.azure.management.batch.TaskSchedulingPolicy;
import com.microsoft.azure.management.batch.InterNodeCommunicationState;
import com.microsoft.azure.management.batch.UserAccount;
import com.microsoft.azure.management.resources.fluentcore.arm.models.implementation.ExternalChildResourceImpl;
import rx.Observable;
import rx.functions.Func1;
import java.util.List;
@LangDefinition
public class PoolImpl
extends ExternalChildResourceImpl<Pool,
PoolInner,
BatchAccountImpl,
BatchAccount>
implements Pool,
Pool.Definition<BatchAccount.DefinitionStages.WithPool>,
Pool.UpdateDefinition<BatchAccount.Update>,
Pool.Update {
protected PoolImpl(
String name,
BatchAccountImpl batchAccount,
PoolInner inner) {
super(name, batchAccount, inner);
}
protected static PoolImpl newPool(
String name,
BatchAccountImpl parent) {
PoolInner inner = new PoolInner();
inner.withDisplayName(name);
PoolImpl poolImpl = new PoolImpl(name, parent, inner);
return poolImpl;
}
@Override
public Observable<Pool> createResourceAsync() {
final PoolImpl self = this;
return this.parent().manager().inner().pools().createAsync(
this.parent().resourceGroupName(),
this.parent().name(),
this.name(), this.inner()).
map(new Func1<PoolInner, Pool>() {
@Override
public Pool call(PoolInner inner) {
self.setInner(inner);
return self;
}
});
}
@Override
public Observable<Pool> updateResourceAsync() {
final PoolImpl self = this;
return this.parent().manager().inner().pools().updateAsync(
this.parent().resourceGroupName(),
this.parent().name(),
this.name(), this.inner()).
map(new Func1<PoolInner, Pool>() {
@Override
public Pool call(PoolInner inner) {
self.setInner(inner);
return self;
}
});
}
@Override
public Observable<Void> deleteResourceAsync() {
return this.parent().manager().inner().pools().deleteAsync(
this.parent().resourceGroupName(),
this.parent().name(),
this.name()
);
}
@Override
public Observable<Pool> refreshAsync() {
return super.refreshAsync().map(new Func1<Pool, Pool>() {
@Override
public Pool call(Pool pool) {
PoolImpl impl = (PoolImpl) pool;
return impl;
}
});
}
@Override
protected Observable<PoolInner> getInnerAsync() {
return this.parent().manager().inner().pools().getAsync(
this.parent().resourceGroupName(),
this.parent().name(),
this.inner().name()
);
}
@Override
public String id() {
return this.inner().id();
}
@Override
public NetworkConfiguration networkConfiguration() {
return this.inner().networkConfiguration();
}
@Override
public List<MountConfiguration> mountConfiguration() {
return this.inner().mountConfiguration();
}
@Override
public ScaleSettings scaleSettings() {
return this.inner().scaleSettings();
}
@Override
public StartTask startTask() {
return this.inner().startTask();
}
@Override
public List<MetadataItem> metadata() {
return this.inner().metadata();
}
@Override
public List<ApplicationPackageReference> applicationPackages() {
return this.inner().applicationPackages();
}
@Override
public List<CertificateReference> certificates() {
return this.inner().certificates();
}
@Override
public String vmSize() {
return this.inner().vmSize();
}
@Override
public DeploymentConfiguration deploymentConfiguration() {
return this.inner().deploymentConfiguration();
}
@Override
public String displayName() {
return this.inner().displayName();
}
@Override
public InterNodeCommunicationState interNodeCommunication() {
return this.inner().interNodeCommunication();
}
@Override
public Integer maxTasksPerNode() {
return this.inner().taskSlotsPerNode();
}
@Override
public Integer taskSlotsPerNode() {
return this.inner().taskSlotsPerNode();
}
@Override
public TaskSchedulingPolicy taskSchedulingPolicy() {
return this.inner().taskSchedulingPolicy();
}
@Override
public List<UserAccount> userAccounts() {
return this.inner().userAccounts();
}
@Override
public List<String> applicationLicenses() {
return this.inner().applicationLicenses();
}
@Override
public PoolImpl withNetworkConfiguration(NetworkConfiguration networkConfiguration) {
this.inner().withNetworkConfiguration(networkConfiguration);
return this;
}
@Override
public PoolImpl withMountConfiguration(List<MountConfiguration> mountConfigurations) {
this.inner().withMountConfiguration(mountConfigurations);
return this;
}
@Override
public PoolImpl withScaleSettings(ScaleSettings scaleSettings) {
this.inner().withScaleSettings(scaleSettings);
return this;
}
@Override
public PoolImpl withStartTask(StartTask startTask) {
this.inner().withStartTask(startTask);
return this;
}
@Override
public PoolImpl withMetadata(List<MetadataItem> metadata) {
this.inner().withMetadata(metadata);
return this;
}
@Override
public PoolImpl withApplicationPackages(List<ApplicationPackageReference> applicationPackages) {
this.inner().withApplicationPackages(applicationPackages);
return this;
}
@Override
public PoolImpl withCertificates(List<CertificateReference> certificates) {
this.inner().withCertificates(certificates);
return this;
}
@Override
public PoolImpl withVmSize(String vmSize) {
this.inner().withVmSize(vmSize);
return this;
}
@Override
public PoolImpl withDeploymentConfiguration(DeploymentConfiguration deploymentConfiguration) {
this.inner().withDeploymentConfiguration(deploymentConfiguration);
return this;
}
@Override
public PoolImpl withDisplayName(String displayName) {
this.inner().withDisplayName(displayName);
return this;
}
@Override
public PoolImpl withInterNodeCommunication(InterNodeCommunicationState interNodeCommunication) {
this.inner().withInterNodeCommunication(interNodeCommunication);
return this;
}
@Override
public PoolImpl withMaxTasksPerNode(Integer maxTasksPerNode) {
this.inner().withTaskSlotsPerNode(maxTasksPerNode);
return this;
}
@Override
public PoolImpl withTaskSlotsPerNode(Integer taskSlotsPerNode) {
this.inner().withTaskSlotsPerNode(taskSlotsPerNode);
return this;
}
@Override
public PoolImpl withTaskSchedulingPolicy(TaskSchedulingPolicy taskSchedulingPolicy) {
this.inner().withTaskSchedulingPolicy(taskSchedulingPolicy);
return this;
}
@Override
public PoolImpl withUserAccounts(List<UserAccount> userAccounts) {
this.inner().withUserAccounts(userAccounts);
return this;
}
@Override
public PoolImpl withApplicationLicenses(List<String> applicationLicenses) {
this.inner().withApplicationLicenses(applicationLicenses);
return this;
}
@Override
public BatchAccountImpl attach() {
return this.parent().withPool(this);
}
}