Skip to content

Commit abe256e

Browse files
authored
Merge pull request #9034 from dw511214992/add-fields-to-loganalytics-saved-search
azurerm_log_analytics_saved_search - support for `tags`
2 parents 9461ea3 + 49b9d7e commit abe256e

File tree

3 files changed

+95
-0
lines changed

3 files changed

+95
-0
lines changed

azurerm/internal/services/loganalytics/log_analytics_saved_search_resource.go

+41
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients"
1616
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/loganalytics/parse"
1717
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/loganalytics/validate"
18+
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/tags"
1819
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/timeouts"
1920
"github.com/terraform-providers/terraform-provider-azurerm/azurerm/utils"
2021
)
@@ -94,6 +95,8 @@ func resourceArmLogAnalyticsSavedSearch() *schema.Resource {
9495
),
9596
},
9697
},
98+
99+
"tags": tags.ForceNewSchema(),
97100
},
98101
}
99102
}
@@ -130,6 +133,7 @@ func resourceArmLogAnalyticsSavedSearchCreate(d *schema.ResourceData, meta inter
130133
DisplayName: utils.String(d.Get("display_name").(string)),
131134
Query: utils.String(d.Get("query").(string)),
132135
FunctionAlias: utils.String(d.Get("function_alias").(string)),
136+
Tags: expandArmSavedSearchTag(d.Get("tags").(map[string]interface{})), // expand tags because it's defined as object set in service
133137
},
134138
}
135139

@@ -194,6 +198,11 @@ func resourceArmLogAnalyticsSavedSearchRead(d *schema.ResourceData, meta interfa
194198
functionParams = strings.Split(*props.FunctionParameters, ", ")
195199
}
196200
d.Set("function_parameters", functionParams)
201+
202+
// flatten tags because it's defined as object set in service
203+
if err := d.Set("tags", flattenArmSavedSearchTag(props.Tags)); err != nil {
204+
return fmt.Errorf("setting `tag`: %+v", err)
205+
}
197206
}
198207

199208
return nil
@@ -214,3 +223,35 @@ func resourceArmLogAnalyticsSavedSearchDelete(d *schema.ResourceData, meta inter
214223

215224
return nil
216225
}
226+
227+
func expandArmSavedSearchTag(input map[string]interface{}) *[]operationalinsights.Tag {
228+
results := make([]operationalinsights.Tag, 0)
229+
for key, value := range input {
230+
result := operationalinsights.Tag{
231+
Name: utils.String(key),
232+
Value: utils.String(value.(string)),
233+
}
234+
results = append(results, result)
235+
}
236+
return &results
237+
}
238+
239+
func flattenArmSavedSearchTag(input *[]operationalinsights.Tag) map[string]interface{} {
240+
results := make(map[string]interface{})
241+
if input == nil {
242+
return results
243+
}
244+
245+
for _, item := range *input {
246+
var key string
247+
if item.Name != nil {
248+
key = *item.Name
249+
}
250+
var value string
251+
if item.Value != nil {
252+
value = *item.Value
253+
}
254+
results[key] = value
255+
}
256+
return results
257+
}

azurerm/internal/services/loganalytics/tests/log_analytics_saved_search_resource_test.go

+52
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,25 @@ func TestAccAzureRMLogAnalyticsSavedSearch_complete(t *testing.T) {
5050
})
5151
}
5252

53+
func TestAccAzureRMLogAnalyticsSavedSearch_withTag(t *testing.T) {
54+
data := acceptance.BuildTestData(t, "azurerm_log_analytics_saved_search", "test")
55+
56+
resource.ParallelTest(t, resource.TestCase{
57+
PreCheck: func() { acceptance.PreCheck(t) },
58+
Providers: acceptance.SupportedProviders,
59+
CheckDestroy: testCheckAzureRMLogAnalyticsSavedSearchDestroy,
60+
Steps: []resource.TestStep{
61+
{
62+
Config: testAccAzureRMLogAnalyticsSavedSearch_withTag(data),
63+
Check: resource.ComposeTestCheckFunc(
64+
testCheckAzureRMLogAnalyticsSavedSearchExists(data.ResourceName),
65+
),
66+
},
67+
data.ImportStep(),
68+
},
69+
})
70+
}
71+
5372
func TestAccAzureRMLogAnalyticsSavedSearch_requiresImport(t *testing.T) {
5473
data := acceptance.BuildTestData(t, "azurerm_log_analytics_saved_search", "test")
5574

@@ -205,3 +224,36 @@ resource "azurerm_log_analytics_saved_search" "test" {
205224
}
206225
`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger)
207226
}
227+
228+
func testAccAzureRMLogAnalyticsSavedSearch_withTag(data acceptance.TestData) string {
229+
return fmt.Sprintf(`
230+
provider "azurerm" {
231+
features {}
232+
}
233+
234+
resource "azurerm_resource_group" "test" {
235+
name = "acctestRG-%d"
236+
location = "%s"
237+
}
238+
239+
resource "azurerm_log_analytics_workspace" "test" {
240+
name = "acctestLAW-%d"
241+
location = azurerm_resource_group.test.location
242+
resource_group_name = azurerm_resource_group.test.name
243+
sku = "PerGB2018"
244+
}
245+
246+
resource "azurerm_log_analytics_saved_search" "test" {
247+
name = "acctestLASS-%d"
248+
log_analytics_workspace_id = azurerm_log_analytics_workspace.test.id
249+
250+
category = "Saved Search Test Category"
251+
display_name = "Create or Update Saved Search Test"
252+
query = "Heartbeat | summarize Count() by Computer | take a"
253+
254+
tags = {
255+
"Environment" = "Test"
256+
}
257+
}
258+
`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger)
259+
}

website/docs/r/log_analytics_saved_search.html.markdown

+2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ The following arguments are supported:
5454

5555
* `function_parameters` - (Optional) The function parameters if the query serves as a function. Changing this forces a new resource to be created.
5656

57+
* `tags` - (Optional) A mapping of tags which should be assigned to the Logs Analytics Saved Search.
58+
5759
## Attributes Reference
5860

5961
The following attributes are exported:

0 commit comments

Comments
 (0)