package com.microsoft.azure.management.monitor.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.monitor.ActionGroups;
import com.microsoft.azure.management.monitor.ActivityLogs;
import com.microsoft.azure.management.monitor.AlertRules;
import com.microsoft.azure.management.monitor.AutoscaleSettings;
import com.microsoft.azure.management.monitor.DiagnosticSettings;
import com.microsoft.azure.management.monitor.MetricDefinitions;
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.serializer.AzureJacksonAdapter;
import com.microsoft.rest.RestClient;
@Beta(SinceVersion.V1_2_0)
public final class MonitorManager extends Manager<MonitorManager, MonitorManagementClientImpl> {
private ActivityLogs activityLogs;
private MetricDefinitions metricDefinitions;
private DiagnosticSettings diagnosticSettings;
private ActionGroups actionGroups;
private AlertRules alerts;
private AutoscaleSettings autoscaleSettings;
public static Configurable configure() {
return new MonitorManager.ConfigurableImpl();
}
public static MonitorManager authenticate(AzureTokenCredentials credentials, String subscriptionId) {
return new MonitorManager(new RestClient.Builder()
.withBaseUrl(credentials.environment(), AzureEnvironment.Endpoint.RESOURCE_MANAGER)
.withCredentials(credentials)
.withSerializerAdapter(new AzureJacksonAdapter())
.withResponseBuilderFactory(new AzureResponseBuilder.Factory())
.withInterceptor(new ProviderRegistrationInterceptor(credentials))
.build(), subscriptionId);
}
public static MonitorManager authenticate(RestClient restClient, String subscriptionId) {
return new MonitorManager(restClient, subscriptionId);
}
public interface Configurable extends AzureConfigurable<Configurable> {
MonitorManager authenticate(AzureTokenCredentials credentials, String subscriptionId);
}
public ActivityLogs activityLogs() {
if (this.activityLogs == null) {
this.activityLogs = new ActivityLogsImpl(this);
}
return this.activityLogs;
}
public MetricDefinitions metricDefinitions() {
if (this.metricDefinitions == null) {
this.metricDefinitions = new MetricDefinitionsImpl(this);
}
return this.metricDefinitions;
}
@Beta(SinceVersion.V1_8_0)
public DiagnosticSettings diagnosticSettings() {
if (this.diagnosticSettings == null) {
this.diagnosticSettings = new DiagnosticSettingsImpl(this);
}
return this.diagnosticSettings;
}
@Beta(SinceVersion.V1_8_0)
public ActionGroups actionGroups() {
if (this.actionGroups == null) {
this.actionGroups = new ActionGroupsImpl(this);
}
return this.actionGroups;
}
@Beta(SinceVersion.V1_15_0)
public AlertRules alertRules() {
if (this.alerts == null) {
this.alerts = new AlertRulesImpl(this);
}
return this.alerts;
}
@Beta(SinceVersion.V1_15_0)
public AutoscaleSettings autoscaleSettings() {
if (this.autoscaleSettings == null) {
this.autoscaleSettings = new AutoscaleSettingsImpl(this);
}
return this.autoscaleSettings;
}
private static final class ConfigurableImpl extends AzureConfigurableImpl<Configurable> implements Configurable {
public MonitorManager authenticate(AzureTokenCredentials credentials, String subscriptionId) {
return MonitorManager.authenticate(buildRestClient(credentials), subscriptionId);
}
}
private MonitorManager(RestClient restClient, String subscriptionId) {
super(
restClient,
subscriptionId,
new MonitorManagementClientImpl(restClient).withSubscriptionId(subscriptionId));
}
}