package com.microsoft.azure.management.containerinstance.implementation;
import com.microsoft.azure.AzureEnvironment;
import com.microsoft.azure.AzureResponseBuilder;
import com.microsoft.azure.credentials.AzureTokenCredentials;
import com.microsoft.azure.management.apigeneration.Beta;
import com.microsoft.azure.management.apigeneration.Beta.SinceVersion;
import com.microsoft.azure.management.apigeneration.LangDefinition;
import com.microsoft.azure.management.containerinstance.ContainerGroups;
import com.microsoft.azure.management.graphrbac.implementation.GraphRbacManager;
import com.microsoft.azure.management.resources.fluentcore.arm.AzureConfigurable;
import com.microsoft.azure.management.resources.fluentcore.arm.implementation.AzureConfigurableImpl;
import com.microsoft.azure.management.resources.fluentcore.arm.implementation.Manager;
import com.microsoft.azure.management.resources.fluentcore.utils.ProviderRegistrationInterceptor;
import com.microsoft.azure.management.resources.fluentcore.utils.ResourceManagerThrottlingInterceptor;
import com.microsoft.azure.management.storage.implementation.StorageManager;
import com.microsoft.azure.serializer.AzureJacksonAdapter;
import com.microsoft.rest.RestClient;
@LangDefinition
@Beta(SinceVersion.V1_3_0)
public final class ContainerInstanceManager extends Manager<ContainerInstanceManager, ContainerInstanceManagementClientImpl> {
private ContainerGroupsImpl containerGroups;
private StorageManager storageManager;
private GraphRbacManager rbacManager;
public static Configurable configure() {
return new ContainerInstanceManager.ConfigurableImpl();
}
public static ContainerInstanceManager authenticate(AzureTokenCredentials credentials, String subscriptionId) {
return new ContainerInstanceManager(new RestClient.Builder()
.withBaseUrl(credentials.environment(), AzureEnvironment.Endpoint.RESOURCE_MANAGER)
.withCredentials(credentials)
.withSerializerAdapter(new AzureJacksonAdapter())
.withResponseBuilderFactory(new AzureResponseBuilder.Factory())
.withInterceptor(new ProviderRegistrationInterceptor(credentials))
.withInterceptor(new ResourceManagerThrottlingInterceptor())
.build(), subscriptionId);
}
public static ContainerInstanceManager authenticate(RestClient restClient, String subscriptionId) {
return new ContainerInstanceManager(restClient, subscriptionId);
}
public interface Configurable extends AzureConfigurable<Configurable> {
ContainerInstanceManager authenticate(AzureTokenCredentials credentials, String subscriptionId);
}
private static final class ConfigurableImpl extends AzureConfigurableImpl<Configurable> implements Configurable {
@Override
public ContainerInstanceManager authenticate(AzureTokenCredentials credentials, String subscriptionId) {
return ContainerInstanceManager.authenticate(buildRestClient(credentials), subscriptionId);
}
}
private ContainerInstanceManager(RestClient restClient, String subscriptionId) {
super(
restClient,
subscriptionId,
new ContainerInstanceManagementClientImpl(restClient).withSubscriptionId(subscriptionId));
this.storageManager = StorageManager.authenticate(restClient, subscriptionId);
this.rbacManager = GraphRbacManager.authenticate(restClient, ((AzureTokenCredentials) (restClient.credentials())).domain());
}
public ContainerGroups containerGroups() {
if (this.containerGroups == null) {
this.containerGroups = new ContainerGroupsImpl(this, this.storageManager, this.rbacManager);
}
return this.containerGroups;
}
}