Skip to content

Commit

Permalink
Merge pull request #9129 from terraform-providers/deps/timeseriesinsi…
Browse files Browse the repository at this point in the history
…ghts-ga

Updating `iottimeseriesinsights` to `2020-05-15` GA
  • Loading branch information
tombuildsstuff authored Nov 4, 2020
2 parents f08d13b + 04f5783 commit c0cb1c0
Show file tree
Hide file tree
Showing 19 changed files with 1,098 additions and 994 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package client

import (
"github.com/Azure/azure-sdk-for-go/services/preview/timeseriesinsights/mgmt/2018-08-15-preview/timeseriesinsights"
"github.com/Azure/azure-sdk-for-go/services/timeseriesinsights/mgmt/2020-05-15/timeseriesinsights"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/common"
)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package migration

import (
"log"
"strings"

"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
)

func TimeSeriesInsightsAccessPolicyV0() schema.StateUpgrader {
return schema.StateUpgrader{
Type: timeSeriesInsightsAccessPolicyV0StateMigration().CoreConfigSchema().ImpliedType(),
Upgrade: timeSeriesInsightsAccessPolicyV0StateUpgradeV0ToV1,
Version: 0,
}
}

func timeSeriesInsightsAccessPolicyV0StateMigration() *schema.Resource {
return &schema.Resource{
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},

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

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

"description": {
Type: schema.TypeString,
Optional: true,
},

"roles": {
Type: schema.TypeSet,
Required: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
},
}
}

func timeSeriesInsightsAccessPolicyV0StateUpgradeV0ToV1(rawState map[string]interface{}, meta interface{}) (map[string]interface{}, error) {
log.Println("[DEBUG] Migrating ResourceType from v0 to v1 format")
oldId := rawState["id"].(string)
newId := strings.Replace(oldId, "/accesspolicies/", "/accessPolicies/", 1)

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

rawState["id"] = newId

return rawState, nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,21 @@ import (

type TimeSeriesInsightsAccessPolicyId struct {
ResourceGroup string
Name string
EnvironmentName string
Name string
}

func NewTimeSeriesInsightsAccessPolicyID(resourceGroup, environmentName, name string) TimeSeriesInsightsAccessPolicyId {
return TimeSeriesInsightsAccessPolicyId{
ResourceGroup: resourceGroup,
EnvironmentName: environmentName,
Name: name,
}
}

func (id TimeSeriesInsightsAccessPolicyId) ID(subscriptionId string) string {
fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.TimeSeriesInsights/environments/%s/accessPolicies/%s"
return fmt.Sprintf(fmtString, subscriptionId, id.ResourceGroup, id.EnvironmentName, id.Name)
}

func TimeSeriesInsightsAccessPolicyID(input string) (*TimeSeriesInsightsAccessPolicyId, error) {
Expand All @@ -26,7 +39,7 @@ func TimeSeriesInsightsAccessPolicyID(input string) (*TimeSeriesInsightsAccessPo
return nil, err
}

if service.Name, err = id.PopSegment("accesspolicies"); err != nil {
if service.Name, err = id.PopSegment("accessPolicies"); err != nil {
return nil, err
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,17 @@ func TestTimeSeriesInsightsAccessPolicyId(t *testing.T) {
},
{
Name: "Time Series Insight AccessPolicy Value",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.TimeSeriesInsights/environments/Environment1/accesspolicies/",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.TimeSeriesInsights/environments/Environment1/accessPolicies/",
Expected: nil,
},
{
Name: "Time Series Insight Access Policy ID legacy casing",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.TimeSeriesInsights/environments/Environment1/accesspolicies/Policy1",
Expected: nil,
},
{
Name: "Time Series Insight Access Policy ID",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.TimeSeriesInsights/environments/Environment1/accesspolicies/Policy1",
Input: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resGroup1/providers/Microsoft.TimeSeriesInsights/environments/Environment1/accessPolicies/Policy1",
Expected: &TimeSeriesInsightsAccessPolicyId{
EnvironmentName: "Environment1",
ResourceGroup: "resGroup1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,18 @@ type TimeSeriesInsightsEnvironmentId struct {
Name string
}

func NewTimeSeriesInsightsEnvironmentID(resourceGroup, name string) TimeSeriesInsightsEnvironmentId {
return TimeSeriesInsightsEnvironmentId{
ResourceGroup: resourceGroup,
Name: name,
}
}

func (id TimeSeriesInsightsEnvironmentId) ID(subscriptionId string) string {
fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.TimeSeriesInsights/environments/%s"
return fmt.Sprintf(fmtString, subscriptionId, id.ResourceGroup, id.Name)
}

func TimeSeriesInsightsEnvironmentID(input string) (*TimeSeriesInsightsEnvironmentId, error) {
id, err := azure.ParseAzureResourceID(input)
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ package iottimeseriesinsights
import (
"fmt"
"regexp"
"strings"
"time"

"github.com/Azure/azure-sdk-for-go/services/preview/timeseriesinsights/mgmt/2018-08-15-preview/timeseriesinsights"
"github.com/Azure/azure-sdk-for-go/services/timeseriesinsights/mgmt/2020-05-15/timeseriesinsights"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/tf"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/iottimeseriesinsights/migration"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/iottimeseriesinsights/parse"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/iottimeseriesinsights/validate"
azSchema "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tf/schema"
Expand All @@ -36,6 +36,11 @@ func resourceArmIoTTimeSeriesInsightsAccessPolicy() *schema.Resource {
Delete: schema.DefaultTimeout(30 * time.Minute),
},

SchemaVersion: 1,
StateUpgraders: []schema.StateUpgrader{
migration.TimeSeriesInsightsAccessPolicyV0(),
},

Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Expand Down Expand Up @@ -84,26 +89,27 @@ func resourceArmIoTTimeSeriesInsightsAccessPolicy() *schema.Resource {

func resourceArmIoTTimeSeriesInsightsAccessPolicyCreateUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*clients.Client).IoTTimeSeriesInsights.AccessPoliciesClient
subscriptionId := meta.(*clients.Client).Account.SubscriptionId
ctx, cancel := timeouts.ForCreateUpdate(meta.(*clients.Client).StopContext, d)
defer cancel()

name := d.Get("name").(string)
environmentID := d.Get("time_series_insights_environment_id").(string)
id, err := parse.TimeSeriesInsightsEnvironmentID(environmentID)
environmentId, err := parse.TimeSeriesInsightsEnvironmentID(d.Get("time_series_insights_environment_id").(string))
if err != nil {
return err
}

id := parse.NewTimeSeriesInsightsAccessPolicyID(environmentId.ResourceGroup, environmentId.Name, name)
if d.IsNewResource() {
existing, err := client.Get(ctx, id.ResourceGroup, id.Name, name)
existing, err := client.Get(ctx, environmentId.ResourceGroup, environmentId.Name, name)
if err != nil {
if !utils.ResponseWasNotFound(existing.Response) {
return fmt.Errorf("checking for presence of existing IoT Time Series Insights Access Policy %q (Resource Group %q): %s", name, id.ResourceGroup, err)
return fmt.Errorf("checking for presence of existing IoT Time Series Insights Access Policy %q (Resource Group %q): %s", name, environmentId.ResourceGroup, err)
}
}

if existing.ID != nil && *existing.ID != "" {
return tf.ImportAsExistsError("azurerm_iot_time_series_insights_access_policy", *existing.ID)
return tf.ImportAsExistsError("azurerm_iot_time_series_insights_access_policy", id.ID(subscriptionId))
}
}

Expand All @@ -115,26 +121,27 @@ func resourceArmIoTTimeSeriesInsightsAccessPolicyCreateUpdate(d *schema.Resource
},
}

if _, err := client.CreateOrUpdate(ctx, id.ResourceGroup, id.Name, name, policy); err != nil {
return fmt.Errorf("creating/updating IoT Time Series Insights Access Policy %q (Resource Group %q): %+v", name, id.ResourceGroup, err)
if _, err := client.CreateOrUpdate(ctx, environmentId.ResourceGroup, environmentId.Name, name, policy); err != nil {
return fmt.Errorf("creating/updating IoT Time Series Insights Access Policy %q (Resource Group %q): %+v", name, environmentId.ResourceGroup, err)
}

resp, err := client.Get(ctx, id.ResourceGroup, id.Name, name)
resp, err := client.Get(ctx, environmentId.ResourceGroup, environmentId.Name, name)
if err != nil {
return fmt.Errorf("retrieving IoT Time Series Insights Access Policy %q (Resource Group %q): %+v", name, id.ResourceGroup, err)
return fmt.Errorf("retrieving IoT Time Series Insights Access Policy %q (Resource Group %q): %+v", name, environmentId.ResourceGroup, err)
}

if resp.ID == nil || *resp.ID == "" {
return fmt.Errorf("cannot read IoT Time Series Insights Access Policy %q (Resource Group %q) ID", name, id.ResourceGroup)
return fmt.Errorf("cannot read IoT Time Series Insights Access Policy %q (Resource Group %q) ID", name, environmentId.ResourceGroup)
}

d.SetId(*resp.ID)
d.SetId(id.ID(subscriptionId))

return resourceArmIoTTimeSeriesInsightsAccessPolicyRead(d, meta)
}

func resourceArmIoTTimeSeriesInsightsAccessPolicyRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*clients.Client).IoTTimeSeriesInsights.AccessPoliciesClient
subscriptionId := meta.(*clients.Client).Account.SubscriptionId
ctx, cancel := timeouts.ForRead(meta.(*clients.Client).StopContext, d)
defer cancel()

Expand All @@ -153,8 +160,10 @@ func resourceArmIoTTimeSeriesInsightsAccessPolicyRead(d *schema.ResourceData, me
return fmt.Errorf("retrieving IoT Time Series Insights Access Policy %q (Resource Group %q): %+v", id.Name, id.ResourceGroup, err)
}

environmentId := parse.NewTimeSeriesInsightsEnvironmentID(id.ResourceGroup, id.EnvironmentName)

d.Set("name", resp.Name)
d.Set("time_series_insights_environment_id", strings.Split(d.Id(), "/accesspolicies")[0])
d.Set("time_series_insights_environment_id", environmentId.ID(subscriptionId))

if props := resp.AccessPolicyResourceProperties; props != nil {
d.Set("description", props.Description)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"strings"
"time"

"github.com/Azure/azure-sdk-for-go/services/preview/timeseriesinsights/mgmt/2018-08-15-preview/timeseriesinsights"
"github.com/Azure/azure-sdk-for-go/services/timeseriesinsights/mgmt/2020-05-15/timeseriesinsights"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"strings"
"time"

"github.com/Azure/azure-sdk-for-go/services/preview/timeseriesinsights/mgmt/2018-08-15-preview/timeseriesinsights"
"github.com/Azure/azure-sdk-for-go/services/timeseriesinsights/mgmt/2020-05-15/timeseriesinsights"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
Expand Down Expand Up @@ -134,7 +134,7 @@ func resourceArmIoTTimeSeriesInsightsStandardEnvironmentCreateUpdate(d *schema.R
}

if existing.Value != nil {
environment, ok := existing.Value.AsStandardEnvironmentResource()
environment, ok := existing.Value.AsGen1EnvironmentResource()
if !ok {
return fmt.Errorf("exisiting resource was not a standard IoT Time Series Insights Standard Environment %q (Resource Group %q)", name, resourceGroup)
}
Expand All @@ -145,11 +145,11 @@ func resourceArmIoTTimeSeriesInsightsStandardEnvironmentCreateUpdate(d *schema.R
}
}

environment := timeseriesinsights.StandardEnvironmentCreateOrUpdateParameters{
environment := timeseriesinsights.Gen1EnvironmentCreateOrUpdateParameters{
Location: &location,
Tags: tags.Expand(t),
Sku: sku,
StandardEnvironmentCreationProperties: &timeseriesinsights.StandardEnvironmentCreationProperties{
Gen1EnvironmentCreationProperties: &timeseriesinsights.Gen1EnvironmentCreationProperties{
StorageLimitExceededBehavior: timeseriesinsights.StorageLimitExceededBehavior(d.Get("storage_limit_exceeded_behavior").(string)),
DataRetentionTime: utils.String(d.Get("data_retention_time").(string)),
},
Expand All @@ -161,7 +161,7 @@ func resourceArmIoTTimeSeriesInsightsStandardEnvironmentCreateUpdate(d *schema.R
Name: utils.String(v.(string)),
Type: timeseriesinsights.String,
}
environment.StandardEnvironmentCreationProperties.PartitionKeyProperties = &partition
environment.Gen1EnvironmentCreationProperties.PartitionKeyProperties = &partition
}

future, err := client.CreateOrUpdate(ctx, resourceGroup, name, environment)
Expand All @@ -178,7 +178,7 @@ func resourceArmIoTTimeSeriesInsightsStandardEnvironmentCreateUpdate(d *schema.R
return fmt.Errorf("retrieving IoT Time Series Insights Standard Environment %q (Resource Group %q): %+v", name, resourceGroup, err)
}

resource, ok := resp.Value.AsStandardEnvironmentResource()
resource, ok := resp.Value.AsGen1EnvironmentResource()
if !ok {
return fmt.Errorf("resource was not a standard IoT Time Series Insights Standard Environment %q (Resource Group %q)", name, resourceGroup)
}
Expand Down Expand Up @@ -212,7 +212,7 @@ func resourceArmIoTTimeSeriesInsightsStandardEnvironmentRead(d *schema.ResourceD
return fmt.Errorf("retrieving IoT Time Series Insights Standard Environment %q (Resource Group %q): %+v", id.Name, id.ResourceGroup, err)
}

environment, ok := resp.Value.AsStandardEnvironmentResource()
environment, ok := resp.Value.AsGen1EnvironmentResource()
if !ok {
return fmt.Errorf("exisiting resource was not a standard IoT Time Series Insights Standard Environment %q (Resource Group %q)", id.Name, id.ResourceGroup)
}
Expand All @@ -224,7 +224,7 @@ func resourceArmIoTTimeSeriesInsightsStandardEnvironmentRead(d *schema.ResourceD
d.Set("location", azure.NormalizeLocation(*location))
}

if props := environment.StandardEnvironmentResourceProperties; props != nil {
if props := environment.Gen1EnvironmentResourceProperties; props != nil {
d.Set("storage_limit_exceeded_behavior", string(props.StorageLimitExceededBehavior))
d.Set("data_retention_time", props.DataRetentionTime)

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit c0cb1c0

Please sign in to comment.