|
5 | 5 |
|
6 | 6 | package com.microsoft.azure.toolkit.intellij.applicationinsights; |
7 | 7 |
|
8 | | -import com.azure.resourcemanager.applicationinsights.models.ApplicationInsightsComponent; |
| 8 | +import com.google.common.base.Preconditions; |
9 | 9 | import com.intellij.openapi.actionSystem.AnActionEvent; |
10 | 10 | import com.microsoft.azure.toolkit.ide.applicationinsights.ApplicationInsightsActionsContributor; |
11 | 11 | import com.microsoft.azure.toolkit.ide.common.IActionsContributor; |
|
20 | 20 | import com.microsoft.azure.toolkit.lib.applicationinsights.AzureApplicationInsights; |
21 | 21 | import com.microsoft.azure.toolkit.lib.auth.AzureAccount; |
22 | 22 | import com.microsoft.azure.toolkit.lib.common.action.AzureActionManager; |
| 23 | +import com.microsoft.azure.toolkit.lib.common.cache.CacheManager; |
| 24 | +import com.microsoft.azure.toolkit.lib.common.model.AbstractAzResource; |
23 | 25 | import com.microsoft.azure.toolkit.lib.common.model.AzResource; |
24 | 26 | import com.microsoft.azure.toolkit.lib.common.model.Region; |
25 | 27 | import com.microsoft.azure.toolkit.lib.common.model.Subscription; |
26 | 28 | import com.microsoft.azure.toolkit.lib.common.operation.OperationBundle; |
27 | 29 | import com.microsoft.azure.toolkit.lib.common.task.AzureTaskManager; |
28 | 30 | import com.microsoft.azure.toolkit.lib.common.utils.Utils; |
29 | | -import com.microsoft.azure.toolkit.lib.resource.AzureResources; |
30 | 31 | import com.microsoft.azure.toolkit.lib.resource.ResourceGroup; |
31 | | -import com.microsoft.azure.toolkit.lib.resource.ResourceGroupDraft; |
| 32 | +import org.apache.commons.collections4.CollectionUtils; |
32 | 33 |
|
33 | 34 | import javax.annotation.Nullable; |
34 | 35 | import java.util.List; |
| 36 | +import java.util.Objects; |
35 | 37 | import java.util.Optional; |
36 | 38 | import java.util.function.BiConsumer; |
37 | 39 | import java.util.function.BiPredicate; |
@@ -59,16 +61,29 @@ public void registerHandlers(AzureActionManager am) { |
59 | 61 | } |
60 | 62 |
|
61 | 63 | private static ApplicationInsightDraft getDraftApplicationInsight(@Nullable final ResourceGroup resourceGroup) { |
62 | | - final List<Subscription> selectedSubscriptions = Azure.az(AzureAccount.class).account().getSelectedSubscriptions(); |
63 | | - if (selectedSubscriptions.size() == 0) { |
64 | | - return null; |
65 | | - } |
| 64 | + final List<Subscription> subs = Azure.az(AzureAccount.class).account().getSelectedSubscriptions(); |
| 65 | + Preconditions.checkArgument(CollectionUtils.isNotEmpty(subs), "There are no subscriptions in your account."); |
| 66 | + |
| 67 | + final Subscription historySub = CacheManager.getUsageHistory(Subscription.class).peek(subs::contains); |
| 68 | + final ResourceGroup historyRg = CacheManager.getUsageHistory(ResourceGroup.class) |
| 69 | + .peek(r -> Objects.isNull(historySub) || r.getSubscriptionId().equals(historySub.getId())); |
| 70 | + final Region historyRegion = CacheManager.getUsageHistory(Region.class).peek(); |
| 71 | + |
66 | 72 | final String timestamp = Utils.getTimestamp(); |
67 | | - final Subscription subscription = selectedSubscriptions.get(0); |
68 | | - final Region region = Optional.ofNullable(resourceGroup).map(ResourceGroup::getRegion).orElse(null); |
69 | | - final String resourceGroupName = resourceGroup == null ? String.format("rg-%s", timestamp) : resourceGroup.getResourceGroupName(); |
| 73 | + final ResourceGroup rg = Optional.ofNullable(resourceGroup) |
| 74 | + .or(() -> Optional.ofNullable(historyRg)) |
| 75 | + .orElse(null); |
| 76 | + final Subscription subscription = Optional.ofNullable(rg).map(AzResource::getSubscription) |
| 77 | + .or(() -> Optional.ofNullable(historySub).filter(subs::contains)) |
| 78 | + .orElse(subs.get(0)); |
| 79 | + final Region region = Optional.ofNullable(rg).map(ResourceGroup::getRegion) |
| 80 | + .or(() -> Optional.ofNullable(historyRegion)) |
| 81 | + .orElse(null); |
| 82 | + final String resourceGroupName = Optional.ofNullable(rg) |
| 83 | + .map(AbstractAzResource::getResourceGroupName) |
| 84 | + .orElse(String.format("rg-%s", timestamp)); |
70 | 85 | final ApplicationInsightDraft applicationInsightDraft = Azure.az(AzureApplicationInsights.class).applicationInsights(subscription.getId()) |
71 | | - .create(String.format("ai-%s", timestamp), resourceGroupName); |
| 86 | + .create(String.format("ai-%s", timestamp), resourceGroupName); |
72 | 87 | applicationInsightDraft.setRegion(region); |
73 | 88 | return applicationInsightDraft; |
74 | 89 | } |
|
0 commit comments