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

appinsights: switching to use generated ID Formatters/Parsers #9446

Merged
merged 7 commits into from
Nov 24, 2020
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/location"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/applicationinsights/parse"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tags"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
Expand Down Expand Up @@ -74,6 +76,7 @@ func dataSourceArmApplicationInsights() *schema.Resource {

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

Expand All @@ -83,20 +86,24 @@ func dataSourceArmApplicationInsightsRead(d *schema.ResourceData, meta interface
resp, err := client.Get(ctx, resGroup, name)
if err != nil {
if utils.ResponseWasNotFound(resp.Response) {
return fmt.Errorf("Error: Application Insights bucket %q (Resource Group %q) was not found", name, resGroup)
return fmt.Errorf("Application Insights %q (Resource Group %q) was not found", name, resGroup)
}

return fmt.Errorf("Error making Read request on Application Insights bucket %q (Resource Group %q): %+v", name, resGroup, err)
return fmt.Errorf("retrieving Application Insights %q (Resource Group %q): %+v", name, resGroup, err)
}

d.SetId(*resp.ID)
d.Set("instrumentation_key", resp.InstrumentationKey)
d.Set("connection_string", resp.ConnectionString)
d.Set("location", resp.Location)
d.Set("app_id", resp.AppID)
d.Set("application_type", resp.ApplicationType)
if v := resp.RetentionInDays; v != nil {
d.Set("retention_in_days", v)
d.SetId(parse.NewComponentID(subscriptionId, resGroup, name).ID(""))
d.Set("location", location.NormalizeNilable(resp.Location))
if props := resp.ApplicationInsightsComponentProperties; props != nil {
d.Set("app_id", props.AppID)
d.Set("application_type", props.ApplicationType)
d.Set("connection_string", props.ConnectionString)
d.Set("instrumentation_key", props.InstrumentationKey)
retentionInDays := 0
if props.RetentionInDays != nil {
retentionInDays = int(*props.RetentionInDays)
}
d.Set("retention_in_days", retentionInDays)
}
return tags.FlattenAndSet(d, resp.Tags)
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/applicationinsights/parse"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tags"
azSchema "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tf/schema"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
)
Expand All @@ -24,9 +25,10 @@ func resourceArmApplicationInsights() *schema.Resource {
Read: resourceArmApplicationInsightsRead,
Update: resourceArmApplicationInsightsCreateUpdate,
Delete: resourceArmApplicationInsightsDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Importer: azSchema.ValidateResourceIDPriorToImport(func(id string) error {
_, err := parse.ComponentID(id)
return err
}),

Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(30 * time.Minute),
Expand Down Expand Up @@ -130,15 +132,16 @@ func resourceArmApplicationInsights() *schema.Resource {
func resourceArmApplicationInsightsCreateUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*clients.Client).AppInsights.ComponentsClient
billingClient := meta.(*clients.Client).AppInsights.BillingClient
subscriptionId := meta.(*clients.Client).Account.SubscriptionId
ctx, cancel := timeouts.ForCreateUpdate(meta.(*clients.Client).StopContext, d)

defer cancel()

log.Printf("[INFO] preparing arguments for AzureRM Application Insights creation.")

name := d.Get("name").(string)
resGroup := d.Get("resource_group_name").(string)

resourceId := parse.NewComponentID(subscriptionId, resGroup, name).ID("")
if d.IsNewResource() {
existing, err := client.Get(ctx, resGroup, name)
if err != nil {
Expand All @@ -147,8 +150,8 @@ func resourceArmApplicationInsightsCreateUpdate(d *schema.ResourceData, meta int
}
}

if existing.ID != nil && *existing.ID != "" {
return tf.ImportAsExistsError("azurerm_application_insights", *existing.ID)
if !utils.ResponseWasNotFound(existing.Response) {
return tf.ImportAsExistsError("azurerm_application_insights", resourceId)
}
}

Expand Down Expand Up @@ -212,7 +215,7 @@ func resourceArmApplicationInsightsCreateUpdate(d *schema.ResourceData, meta int
return fmt.Errorf("Error update Application Insights Billing Feature %q (Resource Group %q): %+v", name, resGroup, err)
}

d.SetId(*read.ID)
d.SetId(resourceId)

return resourceArmApplicationInsightsRead(d, meta)
}
Expand All @@ -223,28 +226,28 @@ func resourceArmApplicationInsightsRead(d *schema.ResourceData, meta interface{}
ctx, cancel := timeouts.ForRead(meta.(*clients.Client).StopContext, d)
defer cancel()

id, err := parse.ApplicationInsightsID(d.Id())
id, err := parse.ComponentID(d.Id())
if err != nil {
return err
}

log.Printf("[DEBUG] Reading AzureRM Application Insights '%s'", id)

resp, err := client.Get(ctx, id.ResourceGroup, id.Name)
resp, err := client.Get(ctx, id.ResourceGroup, id.ComponentName)
if err != nil {
if utils.ResponseWasNotFound(resp.Response) {
d.SetId("")
return nil
}
return fmt.Errorf("Error making Read request on AzureRM Application Insights '%s': %+v", id.Name, err)
return fmt.Errorf("Error making Read request on AzureRM Application Insights '%s': %+v", id.ComponentName, err)
}

billingResp, err := billingClient.Get(ctx, id.ResourceGroup, id.Name)
billingResp, err := billingClient.Get(ctx, id.ResourceGroup, id.ComponentName)
if err != nil {
return fmt.Errorf("Error making Read request on AzureRM Application Insights Billing Feature '%s': %+v", id.Name, err)
return fmt.Errorf("Error making Read request on AzureRM Application Insights Billing Feature '%s': %+v", id.ComponentName, err)
}

d.Set("name", id.Name)
d.Set("name", id.ComponentName)
d.Set("resource_group_name", id.ResourceGroup)
if location := resp.Location; location != nil {
d.Set("location", azure.NormalizeLocation(*location))
Expand Down Expand Up @@ -275,19 +278,19 @@ func resourceArmApplicationInsightsDelete(d *schema.ResourceData, meta interface
ctx, cancel := timeouts.ForDelete(meta.(*clients.Client).StopContext, d)
defer cancel()

id, err := parse.ApplicationInsightsID(d.Id())
id, err := parse.ComponentID(d.Id())
if err != nil {
return err
}

log.Printf("[DEBUG] Deleting AzureRM Application Insights '%s' (resource group '%s')", id.Name, id.ResourceGroup)
log.Printf("[DEBUG] Deleting AzureRM Application Insights %q (resource group %q)", id.ComponentName, id.ResourceGroup)

resp, err := client.Delete(ctx, id.ResourceGroup, id.Name)
resp, err := client.Delete(ctx, id.ResourceGroup, id.ComponentName)
if err != nil {
if resp.StatusCode == http.StatusNotFound {
return nil
}
return fmt.Errorf("Error issuing AzureRM delete request for Application Insights '%s': %+v", id.Name, err)
return fmt.Errorf("Error issuing AzureRM delete request for Application Insights %q: %+v", id.ComponentName, err)
}

return err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,14 +149,14 @@ func TestAccAzureRMApplicationInsights_basiciOS(t *testing.T) {
}

func (t AppInsightsResource) Exists(ctx context.Context, clients *clients.Client, state *terraform.InstanceState) (*bool, error) {
id, err := parse.ApplicationInsightsID(state.ID)
id, err := parse.ComponentID(state.ID)
if err != nil {
return nil, err
}

resp, err := clients.AppInsights.ComponentsClient.Get(ctx, id.ResourceGroup, id.Name)
resp, err := clients.AppInsights.ComponentsClient.Get(ctx, id.ResourceGroup, id.ComponentName)
if err != nil {
return nil, fmt.Errorf("retrieving Application Insights '%q' (resource group: '%q') does not exist", id.ResourceGroup, id.Name)
return nil, fmt.Errorf("retrieving Application Insights %q (resource group: %q) does not exist", id.ComponentName, id.ResourceGroup)
}

return utils.Bool(resp.ApplicationInsightsComponentProperties != nil), nil
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/location"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/applicationinsights/parse"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tags"
azSchema "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tf/schema"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tf/suppress"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts"
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
Expand All @@ -27,9 +28,10 @@ func resourceArmApplicationInsightsWebTests() *schema.Resource {
Read: resourceArmApplicationInsightsWebTestsRead,
Update: resourceArmApplicationInsightsWebTestsCreateUpdate,
Delete: resourceArmApplicationInsightsWebTestsDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Importer: azSchema.ValidateResourceIDPriorToImport(func(id string) error {
_, err := parse.WebTestID(id)
return err
}),

Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(30 * time.Minute),
Expand Down Expand Up @@ -209,21 +211,21 @@ func resourceArmApplicationInsightsWebTestsRead(d *schema.ResourceData, meta int
ctx, cancel := timeouts.ForRead(meta.(*clients.Client).StopContext, d)
defer cancel()

id, err := parse.ApplicationInsightsWebTestID(d.Id())
id, err := parse.WebTestID(d.Id())
if err != nil {
return err
}

log.Printf("[DEBUG] Reading AzureRM Application Insights WebTests '%s'", id)
log.Printf("[DEBUG] Reading AzureRM Application Insights WebTests %q", id)

resp, err := client.Get(ctx, id.ResourceGroup, id.Name)
resp, err := client.Get(ctx, id.ResourceGroup, id.WebtestName)
if err != nil {
if utils.ResponseWasNotFound(resp.Response) {
log.Printf("[DEBUG] Application Insights WebTest %q was not found in Resource Group %q - removing from state!", id.Name, id.ResourceGroup)
log.Printf("[DEBUG] Application Insights WebTest %q was not found in Resource Group %q - removing from state!", id.WebtestName, id.ResourceGroup)
d.SetId("")
return nil
}
return fmt.Errorf("Error retrieving Application Insights WebTests %q (Resource Group %q): %+v", id.Name, id.ResourceGroup, err)
return fmt.Errorf("Error retrieving Application Insights WebTests %q (Resource Group %q): %+v", id.WebtestName, id.ResourceGroup, err)
}

appInsightsId := ""
Expand All @@ -233,7 +235,7 @@ func resourceArmApplicationInsightsWebTestsRead(d *schema.ResourceData, meta int
}
}
d.Set("application_insights_id", appInsightsId)
d.Set("name", resp.Name)
d.Set("name", id.WebtestName)
d.Set("resource_group_name", id.ResourceGroup)
d.Set("kind", resp.Kind)

Expand Down Expand Up @@ -270,19 +272,19 @@ func resourceArmApplicationInsightsWebTestsDelete(d *schema.ResourceData, meta i
ctx, cancel := timeouts.ForDelete(meta.(*clients.Client).StopContext, d)
defer cancel()

id, err := parse.ApplicationInsightsWebTestID(d.Id())
id, err := parse.WebTestID(d.Id())
if err != nil {
return err
}

log.Printf("[DEBUG] Deleting AzureRM Application Insights WebTest '%s' (resource group '%s')", id.Name, id.ResourceGroup)
log.Printf("[DEBUG] Deleting AzureRM Application Insights WebTest '%s' (resource group '%s')", id.WebtestName, id.ResourceGroup)

resp, err := client.Delete(ctx, id.ResourceGroup, id.Name)
resp, err := client.Delete(ctx, id.ResourceGroup, id.WebtestName)
if err != nil {
if resp.StatusCode == http.StatusNotFound {
return nil
}
return fmt.Errorf("Error issuing AzureRM delete request for Application Insights WebTest '%s': %+v", id.Name, err)
return fmt.Errorf("Error issuing AzureRM delete request for Application Insights WebTest '%s': %+v", id.WebtestName, err)
}

return err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,14 @@ func TestAccAzureRMApplicationInsightsWebTests_requiresImport(t *testing.T) {
}

func (t AppInsightsWebTestsResource) Exists(ctx context.Context, clients *clients.Client, state *terraform.InstanceState) (*bool, error) {
id, err := parse.ApplicationInsightsWebTestID(state.ID)
id, err := parse.WebTestID(state.ID)
if err != nil {
return nil, err
}

resp, err := clients.AppInsights.WebTestsClient.Get(ctx, id.ResourceGroup, id.Name)
resp, err := clients.AppInsights.WebTestsClient.Get(ctx, id.ResourceGroup, id.WebtestName)
if err != nil {
return nil, fmt.Errorf("retrieving Application Insights '%q' (resource group: '%q') does not exist", id.ResourceGroup, id.Name)
return nil, fmt.Errorf("retrieving Application Insights '%q' (resource group: '%q') does not exist", id.ResourceGroup, id.WebtestName)
}

return utils.Bool(resp.WebTestProperties != nil), nil
Expand Down

This file was deleted.

Loading