Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow java_version 21 for app services. fixes #25490 #26304

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions internal/services/appservice/helpers/app_stack.go
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,7 @@ func linuxApplicationStackSchema() *pluginsdk.Schema {
"8",
"11",
"17",
"21",
}, false),
ExactlyOneOf: linuxApplicationStackConstraint,
RequiredWith: []string{
Expand Down
10 changes: 6 additions & 4 deletions internal/services/appservice/helpers/function_app_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -1034,7 +1034,7 @@ type ApplicationStackLinuxFunctionApp struct {
NodeVersion string `tfschema:"node_version"` // Supported values `12LTS`, `14LTS`, `16LTS`, `18LTS, `20LTS``
PythonVersion string `tfschema:"python_version"` // Supported values `3.12`, `3.11`, `3.10`, `3.9`, `3.8`, `3.7`
PowerShellCoreVersion string `tfschema:"powershell_core_version"` // Supported values are `7.0`, `7.2`
JavaVersion string `tfschema:"java_version"` // Supported values `8`, `11`, `17`
JavaVersion string `tfschema:"java_version"` // Supported values `8`, `11`, `17`, `21`
CustomHandler bool `tfschema:"use_custom_runtime"` // Supported values `true`
Docker []ApplicationStackDocker `tfschema:"docker"` // Needs ElasticPremium or Basic (B1) Standard (S 1-3) or Premium(PxV2 or PxV3) LINUX Service Plan
}
Expand All @@ -1043,7 +1043,7 @@ type ApplicationStackWindowsFunctionApp struct {
DotNetVersion string `tfschema:"dotnet_version"` // Supported values `v3.0`, `v4.0`, `v6.0`, `v7.0` and `v8.0`
DotNetIsolated bool `tfschema:"use_dotnet_isolated_runtime"` // Supported values `true` for `dotnet-isolated`, `false` otherwise
NodeVersion string `tfschema:"node_version"` // Supported values `12LTS`, `14LTS`, `16LTS`, `18LTS, `20LTS`
JavaVersion string `tfschema:"java_version"` // Supported values `8`, `11`, `17`
JavaVersion string `tfschema:"java_version"` // Supported values `8`, `11`, `17`, `21`
PowerShellCoreVersion string `tfschema:"powershell_core_version"` // Supported values are `7.0`, `7.2`
CustomHandler bool `tfschema:"use_custom_runtime"` // Supported values `true`
}
Expand Down Expand Up @@ -1171,6 +1171,7 @@ func linuxFunctionAppStackSchema() *pluginsdk.Schema {
"8",
"11",
"17",
"21",
}, false),
ExactlyOneOf: []string{
"site_config.0.application_stack.0.dotnet_version",
Expand All @@ -1181,7 +1182,7 @@ func linuxFunctionAppStackSchema() *pluginsdk.Schema {
"site_config.0.application_stack.0.docker",
"site_config.0.application_stack.0.use_custom_runtime",
},
Description: "The version of Java to use. Possible values are `8`, `11`, and `17`",
Description: "The version of Java to use. Possible values are `8`, `11`, `17`, and `21`",
},

"docker": {
Expand Down Expand Up @@ -1403,6 +1404,7 @@ func windowsFunctionAppStackSchema() *pluginsdk.Schema {
"1.8",
"11",
"17",
"21",
}, false),
ExactlyOneOf: []string{
"site_config.0.application_stack.0.dotnet_version",
Expand All @@ -1411,7 +1413,7 @@ func windowsFunctionAppStackSchema() *pluginsdk.Schema {
"site_config.0.application_stack.0.powershell_core_version",
"site_config.0.application_stack.0.use_custom_runtime",
},
Description: "The version of Java to use. Possible values are `1.8`, `11` and `17`",
Description: "The version of Java to use. Possible values are `1.8`, `11`, `17`, and `21`",
},

"powershell_core_version": {
Expand Down
17 changes: 17 additions & 0 deletions internal/services/appservice/linux_function_app_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1232,6 +1232,23 @@ func TestAccLinuxFunctionApp_appStackJava(t *testing.T) {
})
}

func TestAccLinuxFunctionApp_appStackJava21(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_linux_function_app", "test")
r := LinuxFunctionAppResource{}

data.ResourceTest(t, r, []acceptance.TestStep{
{
Config: r.appStackJava(data, SkuBasicPlan, "21"),
Check: acceptance.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
check.That(data.ResourceName).Key("kind").HasValue("functionapp,linux"),
check.That(data.ResourceName).Key("site_config.0.linux_fx_version").HasValue("JAVA|21"),
),
},
data.ImportStep("site_credential.0.password"),
})
}

func TestAccLinuxFunctionApp_appStackJavaUpdate(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_linux_function_app", "test")
r := LinuxFunctionAppResource{}
Expand Down
32 changes: 32 additions & 0 deletions internal/services/appservice/linux_web_app_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1185,6 +1185,38 @@ func TestAccLinuxWebApp_withJava8JBOSSEAP73(t *testing.T) {
})
}

func TestAccLinuxWebApp_withJre17Java(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_linux_web_app", "test")
r := LinuxWebAppResource{}

data.ResourceTest(t, r, []acceptance.TestStep{
{
Config: r.java(data, "17", "JAVA", "17"),
Check: acceptance.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
check.That(data.ResourceName).Key("site_config.0.linux_fx_version").HasValue("JAVA|17-java17"),
),
},
data.ImportStep("site_credential.0.password"),
})
}

func TestAccLinuxWebApp_withJre21Java(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_linux_web_app", "test")
r := LinuxWebAppResource{}

data.ResourceTest(t, r, []acceptance.TestStep{
{
Config: r.java(data, "21", "JAVA", "21"),
Check: acceptance.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
check.That(data.ResourceName).Key("site_config.0.linux_fx_version").HasValue("JAVA|21-21"),
),
},
data.ImportStep("site_credential.0.password"),
})
}

// TODO - finish known Java matrix combination tests...?

func TestAccLinuxWebApp_withDocker(t *testing.T) {
Expand Down
32 changes: 32 additions & 0 deletions internal/services/appservice/windows_function_app_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1225,6 +1225,38 @@ func TestAccWindowsFunctionApp_appStackJava11(t *testing.T) {
})
}

func TestAccWindowsFunctionApp_appStackJava17(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_windows_function_app", "test")
r := WindowsFunctionAppResource{}

data.ResourceTest(t, r, []acceptance.TestStep{
{
Config: r.appStackJava(data, SkuBasicPlan, "17"),
Check: acceptance.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
check.That(data.ResourceName).Key("kind").HasValue("functionapp"),
),
},
data.ImportStep("site_credential.0.password"),
})
}

func TestAccWindowsFunctionApp_appStackJava21(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_windows_function_app", "test")
r := WindowsFunctionAppResource{}

data.ResourceTest(t, r, []acceptance.TestStep{
{
Config: r.appStackJava(data, SkuBasicPlan, "21"),
Check: acceptance.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
check.That(data.ResourceName).Key("kind").HasValue("functionapp"),
),
},
data.ImportStep("site_credential.0.password"),
})
}

func TestAccWindowsFunctionApp_appStackJavaUpdate(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_windows_function_app", "test")
r := WindowsFunctionAppResource{}
Expand Down
15 changes: 15 additions & 0 deletions internal/services/appservice/windows_web_app_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -961,6 +961,21 @@ func TestAccWindowsWebApp_withJava17Embedded(t *testing.T) {
})
}

func TestAccWindowsWebApp_withJava21Embedded(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_windows_web_app", "test")
r := WindowsWebAppResource{}

data.ResourceTest(t, r, []acceptance.TestStep{
{
Config: r.java(data, "21"),
Check: acceptance.ComposeTestCheckFunc(
check.That(data.ResourceName).ExistsInAzure(r),
),
},
data.ImportStep("site_credential.0.password"),
})
}

func TestAccWindowsWebApp_withJava1702Embedded(t *testing.T) {
data := acceptance.BuildTestData(t, "azurerm_windows_web_app", "test")
r := WindowsWebAppResource{}
Expand Down
2 changes: 1 addition & 1 deletion website/docs/r/function_app.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ The `site_config` block supports the following:

-> **NOTE** User has to explicitly set `ip_restriction` to empty slice (`[]`) to remove it.

* `java_version` - (Optional) Java version hosted by the function app in Azure. Possible values are `1.8`, `11` & `17` (In-Preview).
* `java_version` - (Optional) Java version hosted by the function app in Azure. Possible values are `1.8`, `11`, `17`, `21` (In-Preview).

* `linux_fx_version` - (Optional) Linux App Framework and version for the AppService, e.g. `DOCKER|(golang:latest)`.

Expand Down
2 changes: 1 addition & 1 deletion website/docs/r/linux_function_app.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ A `application_stack` block supports the following:

* `use_dotnet_isolated_runtime` - (Optional) Should the DotNet process use an isolated runtime. Defaults to `false`.

* `java_version` - (Optional) The Version of Java to use. Supported versions include `8`, `11` & `17`.
* `java_version` - (Optional) The Version of Java to use. Supported versions include `8`, `11`, `17`, `21` (In-Preview).

* `node_version` - (Optional) The version of Node to run. Possible values include `12`, `14`, `16`, `18` and `20`.

Expand Down
2 changes: 1 addition & 1 deletion website/docs/r/linux_web_app.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ An `application_stack` block supports the following:

* `java_server_version` - (Optional) The Version of the `java_server` to use.

* `java_version` - (Optional) The Version of Java to use. Possible values include `8`, `11`, and `17`.
* `java_version` - (Optional) The Version of Java to use. Possible values include `8`, `11`, `17`, and `21`.

~> **NOTE:** The valid version combinations for `java_version`, `java_server` and `java_server_version` can be checked from the command line via `az webapp list-runtimes --linux`.

Expand Down
2 changes: 1 addition & 1 deletion website/docs/r/windows_function_app.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ A `application_stack` block supports the following:

* `use_dotnet_isolated_runtime` - (Optional) Should the DotNet process use an isolated runtime. Defaults to `false`.

* `java_version` - (Optional) The Version of Java to use. Supported versions include `1.8`, `11` & `17` (In-Preview).
* `java_version` - (Optional) The Version of Java to use. Supported versions include `1.8`, `11`, `17`, `21` (In-Preview).

* `node_version` - (Optional) The version of Node to run. Possible values include `~12`, `~14`, `~16`, `~18` and `~20`.

Expand Down