Skip to content

Commit

Permalink
Add Upgrade Channels to NGINXaaS
Browse files Browse the repository at this point in the history
  • Loading branch information
puneetsarna committed Feb 26, 2024
1 parent c2f0b98 commit fb04426
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 11 deletions.
10 changes: 10 additions & 0 deletions internal/services/nginx/nginx_deployment_data_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ type DeploymentDataSourceModel struct {
FrontendPublic []FrontendPublic `tfschema:"frontend_public"`
FrontendPrivate []FrontendPrivate `tfschema:"frontend_private"`
NetworkInterface []NetworkInterface `tfschema:"network_interface"`
UpgradeChannel string `tfschema:"automatic_upgrade_channel"`
Tags map[string]string `tfschema:"tags"`
}

Expand Down Expand Up @@ -164,6 +165,11 @@ func (m DeploymentDataSource) Attributes() map[string]*pluginsdk.Schema {
},
},

"automatic_upgrade_channel": {
Type: pluginsdk.TypeString,
Computed: true,
},

"tags": commonschema.TagsDataSource(),
}
}
Expand Down Expand Up @@ -267,6 +273,10 @@ func (m DeploymentDataSource) Read() sdk.ResourceFunc {
if userProfile := props.UserProfile; userProfile != nil && userProfile.PreferredEmail != nil {
output.Email = pointer.ToString(props.UserProfile.PreferredEmail)
}

if props.AutoUpgradeProfile != nil {
output.UpgradeChannel = props.AutoUpgradeProfile.UpgradeChannel
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ func TestAccNginxDeploymentDataSource_basic(t *testing.T) {
check.That(data.ResourceName).Key("capacity").Exists(),
check.That(data.ResourceName).Key("managed_resource_group").Exists(),
check.That(data.ResourceName).Key("ip_address").Exists(),
check.That(data.ResourceName).Key("automatic_upgrade_channel").Exists(),
),
},
})
Expand Down
28 changes: 28 additions & 0 deletions internal/services/nginx/nginx_deployment_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ type DeploymentModel struct {
FrontendPublic []FrontendPublic `tfschema:"frontend_public"`
FrontendPrivate []FrontendPrivate `tfschema:"frontend_private"`
NetworkInterface []NetworkInterface `tfschema:"network_interface"`
UpgradeChannel string `tfschema:"automatic_upgrade_channel"`
Tags map[string]string `tfschema:"tags"`
}

Expand Down Expand Up @@ -194,6 +195,17 @@ func (m DeploymentResource) Arguments() map[string]*pluginsdk.Schema {
},
},

"automatic_upgrade_channel": {
Type: pluginsdk.TypeString,
Optional: true,
Default: "stable",
ValidateFunc: validation.StringInSlice(
[]string{
"stable",
"preview",
}, false),
},

"tags": commonschema.Tags(),
}
}
Expand Down Expand Up @@ -309,6 +321,12 @@ func (m DeploymentResource) Create() sdk.ResourceFunc {
}
}

if model.UpgradeChannel != "" {
prop.AutoUpgradeProfile = &nginxdeployment.AutoUpgradeProfile{
UpgradeChannel: model.UpgradeChannel,
}
}

req.Properties = prop

req.Identity, err = identity.ExpandSystemAndUserAssignedMapFromModel(model.Identity)
Expand Down Expand Up @@ -412,6 +430,10 @@ func (m DeploymentResource) Read() sdk.ResourceFunc {
output.Email = pointer.ToString(props.UserProfile.PreferredEmail)
}

if props.AutoUpgradeProfile != nil {
output.UpgradeChannel = props.AutoUpgradeProfile.UpgradeChannel
}

flattenedIdentity, err := identity.FlattenSystemAndUserAssignedMapToModel(model.Identity)
if err != nil {
return fmt.Errorf("flattening `identity`: %v", err)
Expand Down Expand Up @@ -481,6 +503,12 @@ func (m DeploymentResource) Update() sdk.ResourceFunc {
}
}

if meta.ResourceData.HasChange("automatic_upgrade_channel") {
req.Properties.AutoUpgradeProfile = &nginxdeployment.AutoUpgradeProfile{
UpgradeChannel: model.UpgradeChannel,
}
}

if err := client.DeploymentsUpdateThenPoll(ctx, *id, req); err != nil {
return fmt.Errorf("updating %s: %v", id, err)
}
Expand Down
11 changes: 6 additions & 5 deletions internal/services/nginx/nginx_deployment_resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,11 +105,12 @@ func (a DeploymentResource) basic(data acceptance.TestData) string {
%s
resource "azurerm_nginx_deployment" "test" {
name = "acctest-%[2]d"
resource_group_name = azurerm_resource_group.test.name
sku = "standard_Monthly"
location = azurerm_resource_group.test.location
diagnose_support_enabled = true
name = "acctest-%[2]d"
resource_group_name = azurerm_resource_group.test.name
sku = "standard_Monthly"
location = azurerm_resource_group.test.location
diagnose_support_enabled = true
automatic_upgrade_channel = "stable"
frontend_public {
ip_address = [azurerm_public_ip.test.id]
Expand Down
2 changes: 2 additions & 0 deletions website/docs/d/nginx_deployment.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ In addition to the Arguments listed above - the following Attributes are exporte

* `sku` - Name of the SKU for this Nginx Deployment.

* `automatic_upgrade_channel` - The automatic upgrade channel for this NGINX deployment.

* `tags` - A mapping of tags assigned to the Nginx Deployment.

---
Expand Down
15 changes: 9 additions & 6 deletions website/docs/r/nginx_deployment.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,13 @@ resource "azurerm_subnet" "example" {
}
resource "azurerm_nginx_deployment" "example" {
name = "example-nginx"
resource_group_name = azurerm_resource_group.example.name
sku = "publicpreview_Monthly_gmz7xq9ge3py"
location = azurerm_resource_group.example.location
managed_resource_group = "example"
diagnose_support_enabled = true
name = "example-nginx"
resource_group_name = azurerm_resource_group.example.name
sku = "publicpreview_Monthly_gmz7xq9ge3py"
location = azurerm_resource_group.example.location
managed_resource_group = "example"
diagnose_support_enabled = true
automatic_upgrade_channel = "stable"
frontend_public {
ip_address = [azurerm_public_ip.example.id]
Expand Down Expand Up @@ -109,6 +110,8 @@ The following arguments are supported:

* `network_interface` - (Optional) One or more `network_interface` blocks as defined below. Changing this forces a new Nginx Deployment to be created.

* `automatic_upgrade_channel` - (Optional) Specify the automatic upgrade channel for the NGINX deployment. Defaults to `stable`. The possible values are `stable` and `preview`.

* `tags` - (Optional) A mapping of tags which should be assigned to the Nginx Deployment.

---
Expand Down

0 comments on commit fb04426

Please sign in to comment.