Skip to content

Commit 4d0b092

Browse files
committed
Import sumologic_ingest_budget_v2 by ID or by name
1 parent 1da6ecb commit 4d0b092

File tree

5 files changed

+74
-35
lines changed

5 files changed

+74
-35
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ BUG FIXES:
1010

1111
ENHANCEMENTS:
1212
* Improve error message when an API URL is constructed with missing parameters
13+
* sumologic_ingest_budget_v2 can be imported by ID or by name
1314

1415
## 3.0.8 (April 1, 2025)
1516

sumologic/resource_sumologic_ingest_budget_v2.go

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,7 @@
1-
// ----------------------------------------------------------------------------
2-
//
3-
// *** AUTO GENERATED CODE *** AUTO GENERATED CODE ***
4-
//
5-
// ----------------------------------------------------------------------------
6-
//
7-
// This file is automatically generated by Sumo Logic and manual
8-
// changes will be clobbered when the file is regenerated. Do not submit
9-
// changes to this file.
10-
//
11-
// ----------------------------------------------------------------------------
121
package sumologic
132

143
import (
4+
"fmt"
155
"log"
166

177
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
@@ -24,7 +14,7 @@ func resourceSumologicIngestBudgetV2() *schema.Resource {
2414
Update: resourceSumologicIngestBudgetV2Update,
2515
Delete: resourceSumologicIngestBudgetV2Delete,
2616
Importer: &schema.ResourceImporter{
27-
State: schema.ImportStatePassthrough,
17+
State: resourceSumologicIngestBudgetV2Import,
2818
},
2919

3020
Schema: map[string]*schema.Schema{
@@ -149,6 +139,28 @@ func resourceSumologicIngestBudgetV2Update(d *schema.ResourceData, meta interfac
149139
return resourceSumologicIngestBudgetV2Read(d, meta)
150140
}
151141

142+
func resourceSumologicIngestBudgetV2Import(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
143+
c := meta.(*Client)
144+
145+
identifier := d.Id()
146+
147+
// Try to find by ID first
148+
ingestBudgetV2, err1 := c.GetIngestBudgetV2(identifier)
149+
if err1 == nil && ingestBudgetV2 != nil {
150+
d.SetId(ingestBudgetV2.ID)
151+
return []*schema.ResourceData{d}, nil
152+
}
153+
154+
// If not found by ID, try to find by name
155+
ingestBudgetV2, err2 := c.FindIngestBudgetV2(identifier)
156+
if err2 == nil && ingestBudgetV2 != nil {
157+
d.SetId(ingestBudgetV2.ID)
158+
return []*schema.ResourceData{d}, nil
159+
}
160+
161+
return nil, fmt.Errorf("failed to find IngestBudgetV2: by ID error: %v, by name error: %v", err1, err2)
162+
}
163+
152164
func resourceToIngestBudgetV2(d *schema.ResourceData) IngestBudgetV2 {
153165

154166
return IngestBudgetV2{

sumologic/resource_sumologic_ingest_budget_v2_test.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,3 @@
1-
// ----------------------------------------------------------------------------
2-
//
3-
// *** AUTO GENERATED CODE *** AUTO GENERATED CODE ***
4-
//
5-
// ----------------------------------------------------------------------------
6-
//
7-
// This file is automatically generated by Sumo Logic and manual
8-
// changes will be clobbered when the file is regenerated. Do not submit
9-
// changes to this file.
10-
//
11-
// ----------------------------------------------------------------------------
121
package sumologic
132

143
import (
@@ -46,6 +35,12 @@ func TestAccSumologicIngestBudgetV2_basic(t *testing.T) {
4635
ImportState: true,
4736
ImportStateVerify: true,
4837
},
38+
{
39+
ResourceName: "sumologic_ingest_budget_v2.foo",
40+
ImportState: true,
41+
ImportStateVerify: true,
42+
ImportStateId: testName,
43+
},
4944
},
5045
})
5146
}

sumologic/sumologic_ingest_budget_v2.go

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,3 @@
1-
// ----------------------------------------------------------------------------
2-
//
3-
// *** AUTO GENERATED CODE *** AUTO GENERATED CODE ***
4-
//
5-
// ----------------------------------------------------------------------------
6-
//
7-
// This file is automatically generated by Sumo Logic and manual
8-
// changes will be clobbered when the file is regenerated. Do not submit
9-
// changes to this file.
10-
//
11-
// ----------------------------------------------------------------------------
121
package sumologic
132

143
import (
@@ -91,6 +80,47 @@ func (s *Client) UpdateIngestBudgetV2(ingestBudgetV2 IngestBudgetV2) error {
9180

9281
}
9382

83+
func (s *Client) FindIngestBudgetV2(name string) (*IngestBudgetV2, error) {
84+
type IngestBudgetV2List struct {
85+
Next string `json:"next"`
86+
Data []IngestBudgetV2 `json:"data"`
87+
}
88+
89+
next := ""
90+
91+
for {
92+
body, err := s.Get(fmt.Sprintf("v2/ingestBudgets?token=%s", next))
93+
if err != nil {
94+
return nil, err
95+
}
96+
97+
if body == nil {
98+
return nil, fmt.Errorf("received empty response while searching for ingest budget '%s'", name)
99+
}
100+
101+
var response IngestBudgetV2List
102+
103+
err = json.Unmarshal(body, &response)
104+
if err != nil {
105+
return nil, err
106+
}
107+
108+
for _, budgetV2 := range response.Data {
109+
if budgetV2.Name == name {
110+
return &budgetV2, nil
111+
}
112+
}
113+
114+
if response.Next == "" {
115+
break
116+
}
117+
118+
next = response.Next
119+
}
120+
121+
return nil, fmt.Errorf("unable to find ingest budget '%s'", name)
122+
}
123+
94124
type IngestBudgetV2 struct {
95125
AuditThreshold int `json:"auditThreshold,omitempty"`
96126
Action string `json:"action"`

website/docs/r/ingest_budget_v2.html.markdown

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ The following attributes are exported:
4242
* `id` - The internal ID of the ingest budget.
4343

4444
## Import
45-
Ingest budgets can be imported using the budget ID, e.g.:
45+
Ingest budgets can be imported using the budget ID or name, e.g.:
4646

4747
```hcl
4848
terraform import sumologic_ingest_budget_v2.budget 00000000000123AB
49+
terraform import sumologic_ingest_budget_v2.dev_budget "DevelopersBudget"
4950
```
5051

5152
[1]: https://help.sumologic.com/Beta/Metadata_Ingest_Budgets

0 commit comments

Comments
 (0)