forked from hashicorp/terraform-provider-azurerm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Revert "
Nginx
: embed nginx configuration into deployment resource (h…
…ashicorp#24276)" This reverts commit 7a1f9f7.
- Loading branch information
1 parent
7709fe9
commit 6996302
Showing
8 changed files
with
521 additions
and
402 deletions.
There are no files selected for viewing
39 changes: 39 additions & 0 deletions
39
internal/services/nginx/nginx_configuration_data_source_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
// Copyright (c) HashiCorp, Inc. | ||
// SPDX-License-Identifier: MPL-2.0 | ||
|
||
package nginx_test | ||
|
||
import ( | ||
"fmt" | ||
"testing" | ||
|
||
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance" | ||
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/check" | ||
) | ||
|
||
type NginxConfigurationDataSource struct{} | ||
|
||
func TestAccNginxConfigurationDataSource_basic(t *testing.T) { | ||
data := acceptance.BuildTestData(t, "data.azurerm_nginx_configuration", "test") | ||
r := NginxConfigurationDataSource{} | ||
|
||
data.DataSourceTest(t, []acceptance.TestStep{ | ||
{ | ||
Config: r.basic(data), | ||
Check: acceptance.ComposeTestCheckFunc( | ||
check.That(data.ResourceName).Key("root_file").Exists(), | ||
check.That(data.ResourceName).Key("config_file").Exists(), | ||
), | ||
}, | ||
}) | ||
} | ||
|
||
func (d NginxConfigurationDataSource) basic(data acceptance.TestData) string { | ||
return fmt.Sprintf(` | ||
%s | ||
data "azurerm_nginx_configuration" "test" { | ||
nginx_deployment_id = azurerm_nginx_deployment.test.id | ||
} | ||
`, ConfigurationResource{}.basic(data)) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
257 changes: 257 additions & 0 deletions
257
internal/services/nginx/nginx_configuration_resource_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,257 @@ | ||
// Copyright (c) HashiCorp, Inc. | ||
// SPDX-License-Identifier: MPL-2.0 | ||
|
||
package nginx_test | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
"testing" | ||
|
||
"github.com/hashicorp/go-azure-sdk/resource-manager/nginx/2024-01-01-preview/nginxconfiguration" | ||
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance" | ||
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/check" | ||
"github.com/hashicorp/terraform-provider-azurerm/internal/clients" | ||
"github.com/hashicorp/terraform-provider-azurerm/internal/services/nginx" | ||
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk" | ||
"github.com/hashicorp/terraform-provider-azurerm/utils" | ||
) | ||
|
||
type ConfigurationResource struct{} | ||
|
||
func (a ConfigurationResource) Exists(ctx context.Context, client *clients.Client, state *pluginsdk.InstanceState) (*bool, error) { | ||
id, err := nginxconfiguration.ParseConfigurationID(state.ID) | ||
if err != nil { | ||
return nil, err | ||
} | ||
resp, err := client.Nginx.NginxConfiguration.ConfigurationsGet(ctx, *id) | ||
if err != nil { | ||
return nil, fmt.Errorf("retrieving Configuration %s: %+v", id, err) | ||
} | ||
return utils.Bool(resp.Model != nil), nil | ||
} | ||
|
||
func TestAccConfiguration_basic(t *testing.T) { | ||
data := acceptance.BuildTestData(t, nginx.ConfigurationResource{}.ResourceType(), "test") | ||
r := ConfigurationResource{} | ||
data.ResourceTest(t, r, []acceptance.TestStep{ | ||
{ | ||
Config: r.basic(data), | ||
Check: acceptance.ComposeTestCheckFunc( | ||
check.That(data.ResourceName).ExistsInAzure(r), | ||
), | ||
}, | ||
data.ImportStep("protected_file"), | ||
}) | ||
} | ||
|
||
func TestAccConfiguration_update(t *testing.T) { | ||
data := acceptance.BuildTestData(t, nginx.ConfigurationResource{}.ResourceType(), "test") | ||
r := ConfigurationResource{} | ||
data.ResourceTest(t, r, []acceptance.TestStep{ | ||
{ | ||
Config: r.basic(data), | ||
Check: acceptance.ComposeTestCheckFunc( | ||
check.That(data.ResourceName).ExistsInAzure(r), | ||
), | ||
}, | ||
data.ImportStep("protected_file"), | ||
{ | ||
Config: r.update(data), | ||
Check: acceptance.ComposeTestCheckFunc( | ||
check.That(data.ResourceName).ExistsInAzure(r), | ||
), | ||
}, | ||
data.ImportStep("protected_file"), | ||
}) | ||
} | ||
|
||
func TestAccConfiguration_requiresImport(t *testing.T) { | ||
data := acceptance.BuildTestData(t, nginx.ConfigurationResource{}.ResourceType(), "test") | ||
r := ConfigurationResource{} | ||
data.ResourceTest(t, r, []acceptance.TestStep{ | ||
{ | ||
Config: r.basic(data), | ||
Check: acceptance.ComposeTestCheckFunc( | ||
check.That(data.ResourceName).ExistsInAzure(r), | ||
), | ||
}, | ||
data.RequiresImportErrorStep(r.requiresImport), | ||
}) | ||
} | ||
|
||
func (a ConfigurationResource) basic(data acceptance.TestData) string { | ||
return fmt.Sprintf(` | ||
%s | ||
resource "azurerm_nginx_configuration" "test" { | ||
nginx_deployment_id = azurerm_nginx_deployment.test.id | ||
root_file = "/etc/nginx/nginx.conf" | ||
config_file { | ||
content = local.config_content | ||
virtual_path = "/etc/nginx/nginx.conf" | ||
} | ||
protected_file { | ||
content = local.protected_content | ||
virtual_path = "/opt/.htpasswd" | ||
} | ||
} | ||
`, a.template(data)) | ||
} | ||
|
||
func (a ConfigurationResource) requiresImport(data acceptance.TestData) string { | ||
return fmt.Sprintf(` | ||
%s | ||
resource "azurerm_nginx_configuration" "import" { | ||
nginx_deployment_id = azurerm_nginx_configuration.test.nginx_deployment_id | ||
root_file = azurerm_nginx_configuration.test.root_file | ||
config_file { | ||
content = base64encode("http{}") | ||
virtual_path = "/" | ||
} | ||
} | ||
`, a.basic(data)) | ||
} | ||
|
||
func (a ConfigurationResource) update(data acceptance.TestData) string { | ||
return fmt.Sprintf(` | ||
%s | ||
resource "azurerm_nginx_configuration" "test" { | ||
nginx_deployment_id = azurerm_nginx_deployment.test.id | ||
root_file = "/etc/nginx/nginx.conf" | ||
config_file { | ||
content = local.config_content | ||
virtual_path = "/etc/nginx/nginx.conf" | ||
} | ||
config_file { | ||
content = local.sub_config_content | ||
virtual_path = "/etc/nginx/site/b.conf" | ||
} | ||
protected_file { | ||
content = local.protected_content | ||
virtual_path = "/opt/.htpasswd" | ||
} | ||
} | ||
`, a.template(data)) | ||
} | ||
|
||
func (a ConfigurationResource) template(data acceptance.TestData) string { | ||
return fmt.Sprintf(` | ||
provider "azurerm" { | ||
features {} | ||
} | ||
resource "azurerm_resource_group" "test" { | ||
name = "acctestRG-auto-%[1]d" | ||
location = "%[2]s" | ||
} | ||
locals { | ||
config_content = base64encode(<<-EOT | ||
http { | ||
server { | ||
listen 80; | ||
location / { | ||
auth_basic "Protected Area"; | ||
auth_basic_user_file /opt/.htpasswd; | ||
default_type text/html; | ||
return 200 '<!doctype html><html lang="en"><head></head><body> | ||
<div>this one will be updated</div> | ||
<div>at 10:38 am</div> | ||
</body></html>'; | ||
} | ||
include site/*.conf; | ||
} | ||
} | ||
EOT | ||
) | ||
protected_content = base64encode(<<-EOT | ||
user:$apr1$VeUA5kt.$IjjRk//8miRxDsZvD4daF1 | ||
EOT | ||
) | ||
sub_config_content = base64encode(<<-EOT | ||
location /bbb { | ||
default_type text/html; | ||
return 200 '<!doctype html><html lang="en"><head></head><body> | ||
<div>this one will be updated</div> | ||
<div>at 10:38 am</div> | ||
</body></html>'; | ||
} | ||
EOT | ||
) | ||
} | ||
resource "azurerm_public_ip" "test" { | ||
name = "acctest%[1]d" | ||
resource_group_name = azurerm_resource_group.test.name | ||
location = azurerm_resource_group.test.location | ||
allocation_method = "Static" | ||
sku = "Standard" | ||
tags = { | ||
environment = "Production" | ||
} | ||
} | ||
resource "azurerm_virtual_network" "test" { | ||
name = "acctestvirtnet%[1]d" | ||
address_space = ["10.0.0.0/16"] | ||
location = azurerm_resource_group.test.location | ||
resource_group_name = azurerm_resource_group.test.name | ||
} | ||
resource "azurerm_subnet" "test" { | ||
name = "accsubnet%[1]d" | ||
resource_group_name = azurerm_resource_group.test.name | ||
virtual_network_name = azurerm_virtual_network.test.name | ||
address_prefixes = ["10.0.2.0/24"] | ||
delegation { | ||
name = "delegation" | ||
service_delegation { | ||
name = "NGINX.NGINXPLUS/nginxDeployments" | ||
actions = [ | ||
"Microsoft.Network/virtualNetworks/subnets/join/action", | ||
] | ||
} | ||
} | ||
} | ||
resource "azurerm_nginx_deployment" "test" { | ||
name = "acctest-%[1]d" | ||
resource_group_name = azurerm_resource_group.test.name | ||
sku = "standard_Monthly" | ||
location = azurerm_resource_group.test.location | ||
//message: "Conflict managed resource group name: tenant: -91a, subscription xxx, resource group example." | ||
managed_resource_group = "accmr%[1]d" | ||
diagnose_support_enabled = true | ||
frontend_public { | ||
ip_address = [azurerm_public_ip.test.id] | ||
} | ||
network_interface { | ||
subnet_id = azurerm_subnet.test.id | ||
} | ||
tags = { | ||
foo = "bar" | ||
} | ||
} | ||
`, data.RandomInteger, data.Locations.Primary) | ||
} |
Oops, something went wrong.