in azure-toolkit-libs/azure-toolkit-appservice-lib/src/main/java/com/microsoft/azure/toolkit/lib/appservice/service/impl/FunctionAppDeploymentSlot.java [145:179]
public FunctionAppDeploymentSlot commit() {
final com.azure.resourcemanager.appservice.models.FunctionApp functionApp = functionAppClient;
final FunctionDeploymentSlot.DefinitionStages.Blank blank = functionApp.deploymentSlots().define(getName());
final FunctionDeploymentSlot.DefinitionStages.WithCreate withCreate;
// Using configuration from parent by default
final String source = StringUtils.isEmpty(configurationSource) ? CONFIGURATION_SOURCE_PARENT : StringUtils.lowerCase(configurationSource);
switch (source) {
case CONFIGURATION_SOURCE_NEW:
withCreate = blank.withBrandNewConfiguration();
break;
case CONFIGURATION_SOURCE_PARENT:
withCreate = blank.withConfigurationFromParent();
break;
default:
try {
final FunctionDeploymentSlot deploymentSlot = Optional.ofNullable(functionApp.deploymentSlots().getByName(configurationSource))
.orElseThrow(() -> new AzureToolkitRuntimeException(CONFIGURATION_SOURCE_DOES_NOT_EXISTS));
withCreate = blank.withConfigurationFromDeploymentSlot(deploymentSlot);
} catch (ManagementException e) {
throw new AzureToolkitRuntimeException(FAILED_TO_GET_CONFIGURATION_SOURCE, e);
}
break;
}
if (getAppSettings() != null) {
withCreate.withAppSettings(getAppSettings());
}
if (getDiagnosticConfig() != null) {
AppServiceUtils.defineDiagnosticConfigurationForWebAppBase(withCreate, getDiagnosticConfig());
}
FunctionAppDeploymentSlot.this.remote = withCreate.create();
FunctionAppDeploymentSlot.this.entity = AppServiceUtils.fromFunctionAppDeploymentSlot(FunctionAppDeploymentSlot.this.remote);
FunctionAppDeploymentSlot.this.refreshStatus();
FunctionAppDeploymentSlot.this.parent.refresh();
return FunctionAppDeploymentSlot.this;
}