Skip to content

Commit 01a4515

Browse files
Merge pull request #6899 from microsoft/endgame-202208
Endgame 202208.next
2 parents de96cc8 + 6866e05 commit 01a4515

File tree

55 files changed

+355
-396
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+355
-396
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-applicationinsights/src/main/java/com/microsoft/azure/toolkit/intellij/applicationinsights/IntelliJApplicationInsightsActionsContributor.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
import java.util.function.BiConsumer;
3939
import java.util.function.BiPredicate;
4040

41+
import static com.microsoft.azure.toolkit.lib.Azure.az;
42+
4143
public class IntelliJApplicationInsightsActionsContributor implements IActionsContributor {
4244
@Override
4345
public void registerHandlers(AzureActionManager am) {
@@ -66,8 +68,7 @@ private static ApplicationInsightDraft getDraftApplicationInsight(@Nullable fina
6668

6769
final Subscription historySub = CacheManager.getUsageHistory(Subscription.class).peek(subs::contains);
6870
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+
.peek(r -> Objects.isNull(historySub) ? subs.stream().anyMatch(s -> s.getId().equals(r.getSubscriptionId())) : r.getSubscriptionId().equals(historySub.getId()));
7172

7273
final String timestamp = Utils.getTimestamp();
7374
final ResourceGroup rg = Optional.ofNullable(resourceGroup)
@@ -76,6 +77,8 @@ private static ApplicationInsightDraft getDraftApplicationInsight(@Nullable fina
7677
final Subscription subscription = Optional.ofNullable(rg).map(AzResource::getSubscription)
7778
.or(() -> Optional.ofNullable(historySub).filter(subs::contains))
7879
.orElse(subs.get(0));
80+
final List<Region> regions = az(AzureAccount.class).listRegions(subscription.getId());
81+
final Region historyRegion = CacheManager.getUsageHistory(Region.class).peek(regions::contains);
7982
final Region region = Optional.ofNullable(rg).map(ResourceGroup::getRegion)
8083
.or(() -> Optional.ofNullable(historyRegion))
8184
.orElse(null);

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/appservice/task/TriggerFunctionTask.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import javax.annotation.Nonnull;
2323
import java.util.List;
24+
import java.util.Objects;
2425

2526
public class TriggerFunctionTask implements Task {
2627
public static final String FUNCTION_ID = "functionId";
@@ -41,7 +42,8 @@ public void execute() throws Exception {
4142
final String functionId = (String) context.getParameter(FUNCTION_ID);
4243
final String trigger = (String) context.getParameter(TRIGGER);
4344
final FunctionApp functionApp = Azure.az(AzureFunctions.class).functionApp(functionId);
44-
final List<FunctionEntity> functionEntities = functionApp.listFunctions(true);
45+
final List<FunctionEntity> functionEntities = Objects.requireNonNull(functionApp, String.format("failed to find function with id (%s) in Azure",
46+
functionId)).listFunctions(true);
4547
final FunctionEntity target = functionEntities.stream().filter(entity -> StringUtils.equals(entity.getName(), trigger))
4648
.findFirst().orElse(functionEntities.get(0));
4749
final Action.Id<FunctionEntity> action = PlatformUtils.isIdeaUltimate() ?

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/appservice/AppServiceInfoAdvancedPanel.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ private void init() {
175175
this.selectorSubscription.addItemListener(this::onSubscriptionChanged);
176176
this.selectorRuntime.addItemListener(this::onRuntimeChanged);
177177
this.selectorRegion.addItemListener(this::onRegionChanged);
178+
this.selectorGroup.addItemListener(this::onGroupChanged);
178179
this.textName.setRequired(true);
179180
this.selectorServicePlan.setRequired(true);
180181
this.selectorSubscription.setRequired(true);
@@ -196,6 +197,12 @@ private void init() {
196197
});
197198
}
198199

200+
private void onGroupChanged(ItemEvent e) {
201+
if (e.getStateChange() == ItemEvent.SELECTED || e.getStateChange() == ItemEvent.DESELECTED) {
202+
this.selectorServicePlan.setResourceGroup((ResourceGroup) e.getItem());
203+
}
204+
}
205+
199206
private void onRegionChanged(final ItemEvent e) {
200207
if (e.getStateChange() == ItemEvent.SELECTED || e.getStateChange() == ItemEvent.DESELECTED) {
201208
final Region region = (Region) e.getItem();

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/appservice/serviceplan/ServicePlanComboBox.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import com.microsoft.azure.toolkit.lib.common.model.Region;
2020
import com.microsoft.azure.toolkit.lib.common.model.Subscription;
2121
import com.microsoft.azure.toolkit.lib.common.operation.AzureOperation;
22+
import com.microsoft.azure.toolkit.lib.resource.ResourceGroup;
23+
import lombok.Setter;
2224
import org.apache.commons.collections4.CollectionUtils;
2325
import org.apache.commons.lang3.StringUtils;
2426

@@ -44,6 +46,8 @@ public class ServicePlanComboBox extends AzureComboBox<AppServicePlan> {
4446
private final List<AppServicePlanDraft> localItems = new ArrayList<>();
4547
private OperatingSystem os;
4648
private Region region;
49+
@Setter
50+
private ResourceGroup resourceGroup;
4751

4852
private List<PricingTier> pricingTierList = new ArrayList<>(PricingTier.WEB_APP_PRICING);
4953
private PricingTier defaultPricingTier = PricingTier.BASIC_B2;
@@ -169,8 +173,10 @@ protected List<Extension> getExtensions() {
169173
}
170174

171175
private void showServicePlanCreationPopup() {
172-
final ServicePlanCreationDialog dialog = new ServicePlanCreationDialog(this.subscription, this.os, this.region, pricingTierList, defaultPricingTier);
176+
final ServicePlanCreationDialog dialog = new ServicePlanCreationDialog(this.subscription, this.resourceGroup, pricingTierList, defaultPricingTier);
173177
dialog.setOkActionListener((plan) -> {
178+
plan.setRegion(region);
179+
plan.setOperatingSystem(os);
174180
this.localItems.add(0, plan);
175181
dialog.close();
176182
final List<AppServicePlan> items = this.getItems();

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/appservice/serviceplan/ServicePlanCreationDialog.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,23 @@
66
package com.microsoft.azure.toolkit.intellij.legacy.appservice.serviceplan;
77

88
import com.intellij.ui.components.JBLabel;
9+
import com.microsoft.applicationinsights.core.dependencies.apachecommons.lang3.ObjectUtils;
910
import com.microsoft.azure.toolkit.intellij.common.AzureDialog;
1011
import com.microsoft.azure.toolkit.intellij.common.AzureTextInput;
1112
import com.microsoft.azure.toolkit.intellij.common.SwingUtils;
1213
import com.microsoft.azure.toolkit.lib.Azure;
1314
import com.microsoft.azure.toolkit.lib.appservice.AzureAppService;
1415
import com.microsoft.azure.toolkit.lib.appservice.model.OperatingSystem;
1516
import com.microsoft.azure.toolkit.lib.appservice.model.PricingTier;
17+
import com.microsoft.azure.toolkit.lib.appservice.plan.AppServicePlan;
1618
import com.microsoft.azure.toolkit.lib.appservice.plan.AppServicePlanDraft;
1719
import com.microsoft.azure.toolkit.lib.common.form.AzureForm;
1820
import com.microsoft.azure.toolkit.lib.common.form.AzureFormInput;
1921
import com.microsoft.azure.toolkit.lib.common.form.AzureValidationInfo;
2022
import com.microsoft.azure.toolkit.lib.common.form.AzureValidationInfo.AzureValidationInfoBuilder;
2123
import com.microsoft.azure.toolkit.lib.common.model.Region;
2224
import com.microsoft.azure.toolkit.lib.common.model.Subscription;
25+
import com.microsoft.azure.toolkit.lib.resource.ResourceGroup;
2326
import com.microsoft.intellij.util.ValidationUtils;
2427

2528
import javax.annotation.Nullable;
@@ -32,21 +35,18 @@
3235
public class ServicePlanCreationDialog extends AzureDialog<AppServicePlanDraft>
3336
implements AzureForm<AppServicePlanDraft> {
3437
private Subscription subscription;
35-
private OperatingSystem os;
36-
private Region region;
38+
private ResourceGroup resourceGroup;
3739
private JPanel contentPanel;
3840
private JBLabel labelDescription;
3941
private AzureTextInput textName;
4042
private PricingTierComboBox comboBoxPricingTier;
4143

4244
public ServicePlanCreationDialog(final Subscription subscription,
43-
OperatingSystem os,
44-
Region region,
45+
final ResourceGroup resourceGroup,
4546
final List<PricingTier> pricingTierList, final PricingTier defaultPricingTier) {
4647
super();
4748
this.subscription = subscription;
48-
this.os = os;
49-
this.region = region;
49+
this.resourceGroup = resourceGroup;
5050
this.init();
5151
this.textName.addValidator(this::validateName);
5252
this.comboBoxPricingTier.setPricingTierList(pricingTierList);
@@ -56,11 +56,17 @@ public ServicePlanCreationDialog(final Subscription subscription,
5656
}
5757

5858
private AzureValidationInfo validateName() {
59+
final String value = this.textName.getValue();
5960
try {
60-
ValidationUtils.validateAppServicePlanName(this.textName.getValue());
61+
ValidationUtils.validateAppServicePlanName(value);
6162
} catch (final IllegalArgumentException e) {
62-
final AzureValidationInfoBuilder builder = AzureValidationInfo.builder();
63-
return builder.input(this.textName).type(AzureValidationInfo.Type.ERROR).message(e.getMessage()).build();
63+
return AzureValidationInfo.error(e.getMessage(), this);
64+
}
65+
if (ObjectUtils.allNotNull(subscription, resourceGroup)) {
66+
final AppServicePlan appServicePlan = Azure.az(AzureAppService.class).plans(subscription.getId()).get(value, resourceGroup.getName());
67+
if (appServicePlan != null && appServicePlan.exists()) {
68+
return AzureValidationInfo.error("App service plan name must be unique in each resource group.", this);
69+
}
6470
}
6571
return AzureValidationInfo.success(this);
6672
}
@@ -85,15 +91,13 @@ protected JComponent createCenterPanel() {
8591
public AppServicePlanDraft getValue() {
8692
final AppServicePlanDraft draft = Azure.az(AzureAppService.class).plans(this.subscription.getId())
8793
.create(this.textName.getValue(), "<none>");
88-
draft.setRegion(this.region).setOperatingSystem(this.os).setPricingTier(this.comboBoxPricingTier.getValue());
94+
draft.setPricingTier(this.comboBoxPricingTier.getValue());
8995
return draft;
9096
}
9197

9298
@Override
9399
public void setValue(final AppServicePlanDraft data) {
94100
this.subscription = data.getSubscription();
95-
this.os = data.getOperatingSystem();
96-
this.region = data.getRegion();
97101
this.textName.setValue(data.getName());
98102
}
99103

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/function/action/CreateFunctionAppAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public boolean show(IAzureMessage raw) {
8686
}
8787
});
8888
CacheManager.getUsageHistory(FunctionAppConfig.class).push(config);
89-
return AzureTaskManager.getInstance().runInModalAsObservable(task).toSingle().doOnSuccess(app -> {
89+
return AzureTaskManager.getInstance().runInBackgroundAsObservable(task).toSingle().doOnSuccess(app -> {
9090
AzureMessager.getMessager().success(message("function.create.success.message", app.name()), message("function.create.success.title"));
9191
});
9292
}

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/function/action/DeployFunctionAppAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ private RunnerAndConfigurationSettings getRunConfigurationSettings(RunManagerEx
5959
settings = manager.createConfiguration(runConfigurationName, factory);
6060
}
6161
final RunConfiguration runConfiguration = settings.getConfiguration();
62-
if (runConfiguration instanceof FunctionDeployConfiguration && functionApp.getFormalStatus().isRunning()) {
62+
if (runConfiguration instanceof FunctionDeployConfiguration && functionApp.getFormalStatus().isConnected()) {
6363
final FunctionAppConfig config = FunctionAppService.getInstance().getFunctionAppConfigFromExistingFunction(functionApp);
6464
((FunctionDeployConfiguration) runConfiguration).saveConfig(config);
6565
}

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/webapp/action/CreateWebAppAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ private static Single<WebApp> createWebApp(final WebAppConfig config) {
7777
return WebAppService.getInstance().createWebApp(config);
7878
});
7979
CacheManager.getUsageHistory(WebAppConfig.class).push(config);
80-
return AzureTaskManager.getInstance().runInModalAsObservable(task).toSingle().doOnSuccess(CreateWebAppAction::notifyCreationSuccess);
80+
return AzureTaskManager.getInstance().runInBackgroundAsObservable(task).toSingle().doOnSuccess(CreateWebAppAction::notifyCreationSuccess);
8181
}
8282

8383
@AzureOperation(name = "webapp.deploy_artifact.app", params = {"webapp.name()"}, type = AzureOperation.Type.ACTION)

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/intellij/legacy/webapp/runner/webappconfig/WebAppRunState.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,15 +154,15 @@ private void updateApplicationSettings(AppServiceAppBase<?, ?, ?> deployTarget,
154154
if (deployTarget instanceof WebApp) {
155155
processHandler.setText("Updating application settings...");
156156
final WebAppDraft draft = (WebAppDraft) deployTarget.update();
157-
webAppConfiguration.getAppSettingsToRemove().forEach(draft::removeAppSetting);
157+
Optional.ofNullable(webAppConfiguration.getAppSettingsToRemove()).ifPresent(keys -> keys.forEach(draft::removeAppSetting));
158158
draft.setAppSettings(applicationSettings);
159159
draft.updateIfExist();
160160
processHandler.setText("Update application settings successfully.");
161161
} else if (deployTarget instanceof WebAppDeploymentSlot) {
162162
processHandler.setText("Updating deployment slot application settings...");
163163
final WebAppDeploymentSlotDraft update = (WebAppDeploymentSlotDraft) deployTarget.update();
164164
update.setAppSettings(applicationSettings);
165-
webAppConfiguration.getAppSettingsToRemove().forEach(update::removeAppSetting);
165+
Optional.ofNullable(webAppConfiguration.getAppSettingsToRemove()).ifPresent(keys -> keys.forEach(update::removeAppSetting));
166166
update.updateIfExist();
167167
processHandler.setText("Update deployment slot application settings successfully.");
168168
}

PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-appservice/src/main/java/com/microsoft/azure/toolkit/lib/legacy/function/FunctionAppService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public FunctionApp createFunctionApp(final FunctionAppConfig config) {
101101
draft.setRuntime(config.getRuntime());
102102
draft.setAppSettings(appSettings);
103103
draft.setDiagnosticConfig(config.getMonitorConfig().getDiagnosticConfig());
104-
return draft.createIfNotExist();
104+
return draft.commit();
105105
}
106106

107107
private Map<String, String> getAppSettings(final FunctionAppConfig config) {

0 commit comments

Comments
 (0)