Skip to content

Commit

Permalink
azurerm_iothub_x - a state migration to work around the previously …
Browse files Browse the repository at this point in the history
…incorrect id casing (#19524)
  • Loading branch information
mbfrahry committed Dec 2, 2022
1 parent 1872238 commit 6031d3a
Show file tree
Hide file tree
Showing 67 changed files with 3,593 additions and 155 deletions.
6 changes: 6 additions & 0 deletions internal/services/iothub/iothub_certificate_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
Expand All @@ -23,6 +24,11 @@ func resourceIotHubCertificate() *pluginsdk.Resource {
Update: resourceIotHubCertificateCreateUpdate,
Delete: resourceIotHubCertificateDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubCertificateV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.IotHubCertificateID(id)
return err
Expand Down
6 changes: 6 additions & 0 deletions internal/services/iothub/iothub_consumer_group_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
Expand All @@ -23,6 +24,11 @@ func resourceIotHubConsumerGroup() *pluginsdk.Resource {
Read: resourceIotHubConsumerGroupRead,
Delete: resourceIotHubConsumerGroupDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubConsumerGroupV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.ConsumerGroupID(id)
return err
Expand Down
6 changes: 6 additions & 0 deletions internal/services/iothub/iothub_endpoint_eventhub_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/eventhub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
iothubValidate "github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
Expand All @@ -28,6 +29,11 @@ func resourceIotHubEndpointEventHub() *pluginsdk.Resource {
Update: resourceIotHubEndpointEventHubCreateUpdate,
Delete: resourceIotHubEndpointEventHubDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubEndPointEventHubV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.EndpointEventhubID(id)
return err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
iothubValidate "github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/servicebus/validate"
Expand All @@ -28,6 +29,11 @@ func resourceIotHubEndpointServiceBusQueue() *pluginsdk.Resource {
Update: resourceIotHubEndpointServiceBusQueueCreateUpdate,
Delete: resourceIotHubEndpointServiceBusQueueDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubServiceBusQueueV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.EndpointServiceBusQueueID(id)
return err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
iothubValidate "github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/servicebus/validate"
Expand All @@ -28,6 +29,11 @@ func resourceIotHubEndpointServiceBusTopic() *pluginsdk.Resource {
Update: resourceIotHubEndpointServiceBusTopicCreateUpdate,
Delete: resourceIotHubEndpointServiceBusTopicDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubEndpointServiceBusTopicV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.EndpointServiceBusTopicID(id)
return err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
iothubValidate "github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/storage/validate"
Expand All @@ -29,6 +30,11 @@ func resourceIotHubEndpointStorageContainer() *pluginsdk.Resource {
Update: resourceIotHubEndpointStorageContainerCreateUpdate,
Delete: resourceIotHubEndpointStorageContainerDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubEndPointStorageContainerV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.EndpointStorageContainerID(id)
return err
Expand Down
6 changes: 6 additions & 0 deletions internal/services/iothub/iothub_enrichment_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
Expand All @@ -27,6 +28,11 @@ func resourceIotHubEnrichment() *pluginsdk.Resource {
Update: resourceArmIotHubEnrichmentCreateUpdate,
Delete: resourceArmIotHubEnrichmentDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubEnrichmentV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.EnrichmentID(id)
return err
Expand Down
6 changes: 6 additions & 0 deletions internal/services/iothub/iothub_fallback_route_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/hashicorp/go-azure-helpers/resourcemanager/commonschema"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
Expand All @@ -23,6 +24,11 @@ func resourceIotHubFallbackRoute() *pluginsdk.Resource {
Update: resourceIotHubFallbackRouteCreateUpdate,
Delete: resourceIotHubFallbackRouteDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubFallbackRouteV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.FallbackRouteID(id)
return err
Expand Down
6 changes: 6 additions & 0 deletions internal/services/iothub/iothub_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
eventhubValidate "github.com/hashicorp/terraform-provider-azurerm/internal/services/eventhub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
iothubValidate "github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
servicebusValidate "github.com/hashicorp/terraform-provider-azurerm/internal/services/servicebus/validate"
Expand Down Expand Up @@ -71,6 +72,11 @@ func resourceIotHub() *pluginsdk.Resource {
Update: resourceIotHubCreateUpdate,
Delete: resourceIotHubDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.IotHubID(id)
return err
Expand Down
6 changes: 6 additions & 0 deletions internal/services/iothub/iothub_route_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
Expand All @@ -26,6 +27,11 @@ func resourceIotHubRoute() *pluginsdk.Resource {
Update: resourceIotHubRouteCreateUpdate,
Delete: resourceIotHubRouteDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubRouteV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.RouteID(id)
return err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
"github.com/hashicorp/terraform-provider-azurerm/helpers/tf"
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
"github.com/hashicorp/terraform-provider-azurerm/internal/locks"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/migration"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/validate"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
Expand All @@ -27,6 +28,11 @@ func resourceIotHubSharedAccessPolicy() *pluginsdk.Resource {
Update: resourceIotHubSharedAccessPolicyCreateUpdate,
Delete: resourceIotHubSharedAccessPolicyDelete,

SchemaVersion: 1,
StateUpgraders: pluginsdk.StateUpgrades(map[int]pluginsdk.StateUpgrade{
0: migration.IoTHubSharedAccessPolicyV0ToV1{},
}),

Importer: pluginsdk.ImporterValidatingResourceId(func(id string) error {
_, err := parse.SharedAccessPolicyID(id)
return err
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package migration

import (
"context"
"log"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
)

type IoTHubCertificateV0ToV1 struct{}

func (s IoTHubCertificateV0ToV1) Schema() map[string]*pluginsdk.Schema {
return map[string]*pluginsdk.Schema{
"name": {
Type: pluginsdk.TypeString,
Required: true,
ForceNew: true,
},

"resource_group_name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},

"iothub_name": {
Type: pluginsdk.TypeString,
Required: true,
ForceNew: true,
},

"certificate_content": {
Type: pluginsdk.TypeString,
Required: true,
Sensitive: true,
},

"is_verified": {
Type: pluginsdk.TypeBool,
Optional: true,
Default: false,
},
}
}

func (s IoTHubCertificateV0ToV1) UpgradeFunc() pluginsdk.StateUpgraderFunc {
return func(ctx context.Context, rawState map[string]interface{}, meta interface{}) (map[string]interface{}, error) {
oldId := rawState["id"].(string)
newId, err := parse.IotHubCertificateIDInsensitively(oldId)
if err != nil {
return nil, err
}

log.Printf("[DEBUG] Updating ID from %q to %q", oldId, newId)

rawState["id"] = newId.ID()
return rawState, nil
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package migration

import (
"context"
"log"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-azurerm/internal/services/iothub/parse"
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
)

type IoTHubConsumerGroupV0ToV1 struct{}

func (s IoTHubConsumerGroupV0ToV1) Schema() map[string]*pluginsdk.Schema {
return map[string]*pluginsdk.Schema{
"name": {
Type: pluginsdk.TypeString,
Required: true,
ForceNew: true,
},

"iothub_name": {
Type: pluginsdk.TypeString,
Required: true,
ForceNew: true,
},

"eventhub_endpoint_name": {
Type: pluginsdk.TypeString,
Required: true,
ForceNew: true,
},

"resource_group_name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
}
}

func (s IoTHubConsumerGroupV0ToV1) UpgradeFunc() pluginsdk.StateUpgraderFunc {
return func(ctx context.Context, rawState map[string]interface{}, meta interface{}) (map[string]interface{}, error) {
oldId := rawState["id"].(string)
newId, err := parse.ConsumerGroupIDInsensitively(oldId)
if err != nil {
return nil, err
}

log.Printf("[DEBUG] Updating ID from %q to %q", oldId, newId)

rawState["id"] = newId.ID()
return rawState, nil
}
}
Loading

0 comments on commit 6031d3a

Please sign in to comment.