Skip to content

Commit

Permalink
Merge branch 'release'
Browse files Browse the repository at this point in the history
  • Loading branch information
Flanker32 committed Mar 9, 2021
2 parents 6bffbc0 + 4efb677 commit d58e49d
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- Version: 3.47.0 -->
<!-- Version: 3.50.0 -->
# What's new in Azure Toolkit for IntelliJ

## 3.50.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

import com.microsoft.azure.common.project.IProject;
import com.microsoft.azure.management.Azure;
import com.microsoft.azuretools.authmanage.AuthMethodManager;
import com.microsoft.azure.toolkit.intellij.function.runner.library.IFunctionContext;
import com.microsoft.azuretools.authmanage.AuthMethodManager;
import lombok.Data;

import java.util.HashMap;
Expand Down Expand Up @@ -37,8 +37,12 @@ public class IntelliJFunctionContext implements IFunctionContext {

private String deployment;

// todo: remove app settings and related codes
@Deprecated
private Map<String, String> appSettings = new HashMap<>();

private String appSettingsKey;

private String moduleName;

private String insightsName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import com.microsoft.azuretools.azurecommons.helpers.Nullable;
import com.microsoft.azuretools.utils.JsonUtils;
import com.microsoft.azuretools.utils.WebAppUtils;
import com.microsoft.intellij.secure.IdeaSecureStore;
import com.sun.tools.sjavac.Log;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.io.FileUtils;
Expand Down Expand Up @@ -75,6 +76,22 @@ public class FunctionUtils {
REQUIRED_ATTRIBUTE_MAP.put(BindingEnum.HttpTrigger, Arrays.asList("authLevel"));
}

public static void saveAppSettingsToSecurityStorage(String key, Map<String, String> appSettings) {
if (StringUtils.isEmpty(key)) {
return;
}
final String appSettingsJsonValue = JsonUtils.toJsonString(appSettings);
IdeaSecureStore.getInstance().savePassword(FunctionApp.class.getName(), key, appSettingsJsonValue);
}

public static Map<String, String> loadAppSettingsFromSecurityStorage(String key) {
if (StringUtils.isEmpty(key)) {
return new HashMap<>();
}
final String value = IdeaSecureStore.getInstance().loadPassword(FunctionApp.class.getName(), key);
return StringUtils.isEmpty(value) ? new HashMap<>() : JsonUtils.fromJson(value, Map.class);
}

public static String getFunctionJavaVersion(FunctionApp functionApp) {
if (!WebAppUtils.isJavaWebApp(functionApp)) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,14 @@ public String getInsightsName() {
return functionDeployModel.getInsightsName();
}

public String getAppSettingsKey() {
return functionDeployModel.getAppSettingsKey();
}

public void setAppSettingsKey(String appSettingsStorageKey) {
functionDeployModel.setAppSettingsKey(appSettingsStorageKey);
}

public void saveModel(FunctionAppComboBoxModel functionAppComboBoxModel) {
if (functionAppComboBoxModel.getFunctionDeployModel() != null) {
setFunctionDeployModel(functionAppComboBoxModel.getFunctionDeployModel());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.UUID;

import static com.microsoft.intellij.CommonConst.EMPTY_TEXT;
import static com.microsoft.intellij.CommonConst.LOADING_TEXT;
Expand All @@ -46,6 +47,7 @@ public class FunctionDeploymentPanel extends AzureSettingPanel<FunctionDeployCon
private FunctionAppComboBox functionAppComboBox;
private AppSettingsTable appSettingsTable;
private FunctionAppComboBoxModel appSettingsFunctionApp;
private String appSettingsKey = UUID.randomUUID().toString();


public FunctionDeploymentPanel(@NotNull Project project, @NotNull FunctionDeployConfiguration functionDeployConfiguration) {
Expand Down Expand Up @@ -124,6 +126,10 @@ protected void resetFromConfig(@NotNull FunctionDeployConfiguration configuratio
if (MapUtils.isNotEmpty(configuration.getAppSettings())) {
appSettingsTable.setAppSettings(configuration.getAppSettings());
}
if (StringUtils.isNotEmpty(configuration.getAppSettingsKey())) {
this.appSettingsKey = configuration.getAppSettingsKey();
appSettingsTable.setAppSettings(FunctionUtils.loadAppSettingsFromSecurityStorage(appSettingsKey));
}
if (StringUtils.isAllEmpty(configuration.getFunctionId(), configuration.getAppName())) {
functionAppComboBox.refreshItems();
} else {
Expand All @@ -147,7 +153,10 @@ protected void resetFromConfig(@NotNull FunctionDeployConfiguration configuratio
@Override
protected void apply(@NotNull FunctionDeployConfiguration configuration) {
configuration.saveTargetModule((Module) cbFunctionModule.getSelectedItem());
configuration.setAppSettings(appSettingsTable.getAppSettings());
FunctionUtils.saveAppSettingsToSecurityStorage(appSettingsKey, appSettingsTable.getAppSettings());
// save app settings storage key instead of real value
configuration.setAppSettings(Collections.EMPTY_MAP);
configuration.setAppSettingsKey(appSettingsKey);
final FunctionAppComboBoxModel functionModel = functionAppComboBox.getValue();
if (functionModel != null) {
configuration.saveModel(functionModel);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import java.util.function.Consumer;

import static com.microsoft.intellij.ui.messages.AzureBundle.message;

Expand Down Expand Up @@ -85,9 +85,12 @@ private FunctionApp createFunctionApp() {
final String action = "confirm if the web app is properly configured";
throw new AzureToolkitRuntimeException(error, e, action);
}
bindingApplicationInsights();
configureApplicationLog(withCreate);
configureAppSettings(withCreate::withAppSettings, getAppSettingsWithDefaultValue());

final Map<String, String> appSettings = getAppSettingsWithDefaultValue();
appSettings.putAll(bindingApplicationInsights());
withCreate.withAppSettings(appSettings);

FunctionApp result = withCreate.create();
Log.prompt(message("function.create.hint.functionCreated", ctx.getAppName()));
return result;
Expand All @@ -108,9 +111,9 @@ private WithCreate configureApplicationLog(WithCreate withCreate) {
params = {"@ctx.getAppName()"},
type = AzureOperation.Type.SERVICE
)
private void bindingApplicationInsights() {
private Map<String, String> bindingApplicationInsights() {
if (StringUtils.isAllEmpty(ctx.getInsightsName(), ctx.getInstrumentationKey())) {
return;
return Collections.emptyMap();
}
String instrumentationKey = ctx.getInstrumentationKey();
if (StringUtils.isEmpty(instrumentationKey)) {
Expand All @@ -123,13 +126,7 @@ private void bindingApplicationInsights() {
Log.prompt(message("function.create.error.createApplicationInsightsFailed", ctx.getAppName()));
}
}
ctx.getAppSettings().put(APP_INSIGHTS_INSTRUMENTATION_KEY, instrumentationKey);
}

private void configureAppSettings(final Consumer<Map> withAppSettings, final Map appSettings) {
if (appSettings != null && !appSettings.isEmpty()) {
withAppSettings.accept(appSettings);
}
return Collections.singletonMap(APP_INSIGHTS_INSTRUMENTATION_KEY, instrumentationKey);
}

// endregion
Expand Down Expand Up @@ -215,11 +212,12 @@ private FunctionExtensionVersion getFunctionExtensionVersion() throws AzureExecu

// region get App Settings
private Map getAppSettingsWithDefaultValue() {
final Map settings = ctx.getAppSettings();
final Map settings =
com.microsoft.azure.toolkit.intellij.function.runner.core.FunctionUtils.loadAppSettingsFromSecurityStorage(ctx.getAppSettingsKey());
overrideDefaultAppSetting(settings, FUNCTIONS_WORKER_RUNTIME_NAME, message("function.hint.setFunctionWorker"),
FUNCTIONS_WORKER_RUNTIME_VALUE, message("function.hint.changeFunctionWorker"));
FUNCTIONS_WORKER_RUNTIME_VALUE, message("function.hint.changeFunctionWorker"));
setDefaultAppSetting(settings, FUNCTIONS_EXTENSION_VERSION_NAME, message("function.hint.setFunctionVersion"),
FUNCTIONS_EXTENSION_VERSION_VALUE);
FUNCTIONS_EXTENSION_VERSION_VALUE);
return settings;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,8 @@ private FunctionApp getFunctionApp() {

// region get App Settings
private Map getAppSettingsWithDefaultValue() {
final Map settings = model.getAppSettings();
final Map settings =
com.microsoft.azure.toolkit.intellij.function.runner.core.FunctionUtils.loadAppSettingsFromSecurityStorage(model.getAppSettingsKey());
overrideDefaultAppSetting(settings, FUNCTIONS_WORKER_RUNTIME_NAME, message("function.hint.setFunctionWorker"),
FUNCTIONS_WORKER_RUNTIME_VALUE, message("function.hint.changeFunctionWorker"));
setDefaultAppSetting(settings, FUNCTIONS_EXTENSION_VERSION_NAME, message("function.hint.setFunctionVersion"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,14 @@ public void setAppSettingsJsonObject(JsonObject appSettingsJsonObject) {
this.appSettingsJsonObject = appSettingsJsonObject;
}

public String getAppSettingsKey() {
return functionRunModel.getAppSettingsKey();
}

public void setAppSettingsKey(String appSettingsStorageKey) {
functionRunModel.setAppSettingsKey(appSettingsStorageKey);
}

public void saveModule(Module module) {
if (module == null) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,8 @@ private void prepareStagingFolder(File stagingFolder, RunProcessHandler processH
try {
Map<String, FunctionConfiguration> configMap =
FunctionUtils.prepareStagingFolder(folder, hostJsonPath, functionRunConfiguration.getModule(), methods);
FunctionUtils.copyLocalSettingsToStagingFolder(folder, localSettingsJson, functionRunConfiguration.getAppSettings());
final Map<String, String> appSettings = FunctionUtils.loadAppSettingsFromSecurityStorage(functionRunConfiguration.getAppSettingsKey());
FunctionUtils.copyLocalSettingsToStagingFolder(folder, localSettingsJson, appSettings);

final Set<BindingEnum> bindingClasses = getFunctionBindingEnums(configMap);
if (isInstallingExtensionNeeded(bindingClasses, processHandler)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Collections;
import java.util.UUID;

import static com.microsoft.intellij.ui.messages.AzureBundle.message;

Expand All @@ -41,6 +43,7 @@ public class FunctionRunPanel extends AzureSettingPanel<FunctionRunConfiguration
private JPanel pnlAppSettings;
private JComboBox<Module> cbFunctionModule;
private AppSettingsTable appSettingsTable;
private String appSettingsKey = UUID.randomUUID().toString();

private FunctionRunConfiguration functionRunConfiguration;

Expand Down Expand Up @@ -85,6 +88,10 @@ protected void resetFromConfig(@NotNull FunctionRunConfiguration configuration)
if (MapUtils.isNotEmpty(configuration.getAppSettings())) {
appSettingsTable.setAppSettings(configuration.getAppSettings());
}
if (StringUtils.isNotEmpty(configuration.getAppSettingsKey())) {
this.appSettingsKey = configuration.getAppSettingsKey();
appSettingsTable.setAppSettings(FunctionUtils.loadAppSettingsFromSecurityStorage(appSettingsKey));
}
// In case `FUNCTIONS_WORKER_RUNTIME` or `AZURE_WEB_JOB_STORAGE_KEY` was missed in configuration
appSettingsTable.loadRequiredSettings();
if (StringUtils.isNotEmpty(configuration.getFuncPath())) {
Expand All @@ -102,8 +109,11 @@ protected void resetFromConfig(@NotNull FunctionRunConfiguration configuration)
@Override
protected void apply(@NotNull FunctionRunConfiguration configuration) {
configuration.setFuncPath(txtFunc.getText());
configuration.setAppSettings(appSettingsTable.getAppSettings());
configuration.saveModule((Module) cbFunctionModule.getSelectedItem());
FunctionUtils.saveAppSettingsToSecurityStorage(appSettingsKey, appSettingsTable.getAppSettings());
// save app settings storage key instead of real value
configuration.setAppSettings(Collections.EMPTY_MAP);
configuration.setAppSettingsKey(appSettingsKey);
}

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ public static JsonObject readJsonFile(File target) {
}
}

public static String toJsonString(Object o) {
return GSON.toJson(o);
}

public static <T> T fromJsonString(String jsonString, Class<T> clz) {
return GSON.fromJson(jsonString, clz);
}
Expand Down

0 comments on commit d58e49d

Please sign in to comment.