Skip to content

Commit 69d8e42

Browse files
authored
Merge pull request #709 from SumoLogic/priyansh-field
SUMO-252740 Add method to update status of fields resource
2 parents 681fca8 + e0dae79 commit 69d8e42

File tree

4 files changed

+99
-1
lines changed

4 files changed

+99
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## X.Y.Z (Unreleased)
22
* Add new change notes here
3+
* Add support for update method to change state of the fields resource
34

45
## 3.0.0 (December 09, 2024)
56
**REMOVALS:**

sumologic/resource_sumologic_field.go

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package sumologic
22

33
import (
4+
"errors"
45
"fmt"
56

67
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
@@ -10,6 +11,7 @@ func resourceSumologicField() *schema.Resource {
1011
return &schema.Resource{
1112
Create: resourceSumologicFieldCreate,
1213
Read: resourceSumologicFieldRead,
14+
Update: resourceSumologicFieldUpdate,
1315
Delete: resourceSumologicFieldDelete,
1416
Importer: &schema.ResourceImporter{
1517
State: resourceSumologicFieldImport,
@@ -38,7 +40,6 @@ func resourceSumologicField() *schema.Resource {
3840
"state": {
3941
Type: schema.TypeString,
4042
Optional: true,
41-
ForceNew: true,
4243
},
4344
},
4445
}
@@ -116,6 +117,43 @@ func resourceSumologicFieldImport(d *schema.ResourceData, meta interface{}) ([]*
116117
return []*schema.ResourceData{d}, nil
117118
}
118119

120+
func resourceSumologicFieldUpdate(d *schema.ResourceData, meta interface{}) error {
121+
c := meta.(*Client)
122+
123+
id := d.Get("field_id").(string)
124+
name := d.Get("field_name").(string)
125+
state := d.Get("state").(string)
126+
if id == "" {
127+
newId, err := c.FindFieldId(name)
128+
if err != nil {
129+
return err
130+
}
131+
id = newId
132+
}
133+
_, err := c.GetField(id)
134+
135+
if err != nil {
136+
return err
137+
}
138+
139+
if state == "Enabled" {
140+
err := c.EnableField(id)
141+
if err != nil {
142+
return err
143+
}
144+
} else if state == "Disabled" {
145+
err := c.DisableField(id)
146+
if err != nil {
147+
return err
148+
}
149+
} else {
150+
return errors.New("Invalid value of state field. Only Enabled or Disabled values are accepted")
151+
}
152+
153+
return resourceSumologicFieldRead(d, meta)
154+
155+
}
156+
119157
func resourceToField(d *schema.ResourceData) Field {
120158
return Field{
121159
DataType: d.Get("data_type").(string),

sumologic/resource_sumologic_field_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,41 @@ func TestAccSumologicField_create(t *testing.T) {
5656
})
5757
}
5858

59+
func TestAccSumologicField_update(t *testing.T) {
60+
var field Field
61+
testFieldName := "fields_provider_test"
62+
testDataType := "String"
63+
testState := "Enabled"
64+
updatedState := "Disabled"
65+
resource.Test(t, resource.TestCase{
66+
PreCheck: func() { testAccPreCheck(t) },
67+
Providers: testAccProviders,
68+
CheckDestroy: testAccCheckFieldDestroy(field),
69+
Steps: []resource.TestStep{
70+
{
71+
Config: testAccSumologicField(testFieldName, testDataType, testState),
72+
Check: resource.ComposeTestCheckFunc(
73+
testAccCheckFieldExists("sumologic_field.test", &field, t),
74+
testAccCheckFieldAttributes("sumologic_field.test"),
75+
resource.TestCheckResourceAttr("sumologic_field.test", "field_name", testFieldName),
76+
resource.TestCheckResourceAttr("sumologic_field.test", "data_type", testDataType),
77+
resource.TestCheckResourceAttr("sumologic_field.test", "state", testState),
78+
),
79+
},
80+
{
81+
Config: testAccSumologicFieldUpdate(testFieldName, testDataType, updatedState),
82+
Check: resource.ComposeTestCheckFunc(
83+
testAccCheckFieldExists("sumologic_field.test", &field, t),
84+
testAccCheckFieldAttributes("sumologic_field.test"),
85+
resource.TestCheckResourceAttr("sumologic_field.test", "field_name", testFieldName),
86+
resource.TestCheckResourceAttr("sumologic_field.test", "data_type", testDataType),
87+
resource.TestCheckResourceAttr("sumologic_field.test", "state", updatedState),
88+
),
89+
},
90+
},
91+
})
92+
}
93+
5994
func testAccCheckFieldDestroy(field Field) resource.TestCheckFunc {
6095
return func(s *terraform.State) error {
6196
client := testAccProvider.Meta().(*Client)
@@ -116,6 +151,16 @@ resource "sumologic_field" "test" {
116151
`, fieldName, dataType, state)
117152
}
118153

154+
func testAccSumologicFieldUpdate(fieldName string, dataType string, state string) string {
155+
return fmt.Sprintf(`
156+
resource "sumologic_field" "test" {
157+
field_name = "%s"
158+
data_type = "%s"
159+
state = "%s"
160+
}
161+
`, fieldName, dataType, state)
162+
}
163+
119164
func testAccCheckFieldAttributes(name string) resource.TestCheckFunc {
120165
return func(s *terraform.State) error {
121166
f := resource.ComposeTestCheckFunc(

sumologic/sumologic_field.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,20 @@ func (s *Client) FindFieldId(name string) (string, error) {
9494
return "", fmt.Errorf("Field \"%s\" not found", name)
9595
}
9696

97+
func (s *Client) DisableField(id string) error {
98+
urlWithParams := fmt.Sprintf("v1/fields/%s/disable", id)
99+
100+
_, err := s.Delete(urlWithParams)
101+
return err
102+
}
103+
104+
func (s *Client) EnableField(id string) error {
105+
urlWithParams := fmt.Sprintf("v1/fields/%s/enable", id)
106+
107+
_, err := s.Put(urlWithParams, nil)
108+
return err
109+
}
110+
97111
type Field struct {
98112
FieldId string `json:"fieldId"`
99113
DataType string `json:"dataType"`

0 commit comments

Comments
 (0)