Skip to content

Commit ff66a5d

Browse files
Vishal SahuSean Sain
authored andcommitted
Add Lookup Table resource
1 parent 6d4801a commit ff66a5d

File tree

4 files changed

+558
-0
lines changed

4 files changed

+558
-0
lines changed

sumologic/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func Provider() terraform.ResourceProvider {
6666
"sumologic_monitor_folder": resourceSumologicMonitorsLibraryFolder(),
6767
"sumologic_ingest_budget_v2": resourceSumologicIngestBudgetV2(),
6868
"sumologic_field": resourceSumologicField(),
69+
"sumologic_lookup_table": resourceSumologicLookupTable(),
6970
},
7071
DataSourcesMap: map[string]*schema.Resource{
7172
"sumologic_caller_identity": dataSourceSumologicCallerIdentity(),
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
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+
// ----------------------------------------------------------------------------
12+
package sumologic
13+
14+
import (
15+
"fmt"
16+
"log"
17+
18+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
19+
)
20+
21+
func resourceSumologicLookupTable() *schema.Resource {
22+
return &schema.Resource{
23+
Create: resourceSumologicLookupTableCreate,
24+
Read: resourceSumologicLookupTableRead,
25+
Update: resourceSumologicLookupTableUpdate,
26+
Delete: resourceSumologicLookupTableDelete,
27+
Importer: &schema.ResourceImporter{
28+
State: schema.ImportStatePassthrough,
29+
},
30+
31+
Schema: map[string]*schema.Schema{
32+
33+
"primary_keys": {
34+
Type: schema.TypeList,
35+
Optional: true,
36+
Description: "The primary key field names.",
37+
Elem: &schema.Schema{
38+
Type: schema.TypeString,
39+
},
40+
},
41+
42+
"parent_folder_id": {
43+
Type: schema.TypeString,
44+
Optional: true,
45+
ForceNew: false,
46+
},
47+
48+
"description": {
49+
Type: schema.TypeString,
50+
Required: true,
51+
ForceNew: false,
52+
},
53+
54+
"size_limit_action": {
55+
Type: schema.TypeString,
56+
Optional: true,
57+
ForceNew: false,
58+
Default: "StopIncomingMessages",
59+
},
60+
61+
"fields": {
62+
Type: schema.TypeList,
63+
Optional: true,
64+
Description: "The list of fields in the lookup table.",
65+
Elem: &schema.Resource{
66+
Schema: map[string]*schema.Schema{
67+
68+
"field_name": {
69+
Type: schema.TypeString,
70+
Required: true,
71+
ForceNew: false,
72+
},
73+
74+
"field_type": {
75+
Type: schema.TypeString,
76+
Required: true,
77+
ForceNew: false,
78+
},
79+
},
80+
},
81+
},
82+
83+
"ttl": {
84+
Type: schema.TypeInt,
85+
Optional: true,
86+
ForceNew: false,
87+
Default: 0,
88+
},
89+
90+
"name": {
91+
Type: schema.TypeString,
92+
Optional: true,
93+
ForceNew: false,
94+
},
95+
},
96+
}
97+
}
98+
99+
func resourceSumologicLookupTableCreate(d *schema.ResourceData, meta interface{}) error {
100+
c := meta.(*Client)
101+
102+
if d.Id() == "" {
103+
lookupTable := resourceToLookupTable(d)
104+
id, err := c.CreateLookupTable(lookupTable)
105+
if err != nil {
106+
return err
107+
}
108+
109+
d.SetId(id)
110+
}
111+
112+
fmt.Printf("##DEBUG## created lookup: %+v\n", d)
113+
fmt.Printf("##DEBUG## lookup id: %v\n", d.Id())
114+
return resourceSumologicLookupTableRead(d, meta)
115+
}
116+
117+
func resourceSumologicLookupTableRead(d *schema.ResourceData, meta interface{}) error {
118+
c := meta.(*Client)
119+
120+
id := d.Id()
121+
lookupTable, err := c.GetLookupTable(id)
122+
fmt.Printf("##DEBUG## read lookup: %+v\n", lookupTable)
123+
if err != nil {
124+
return err
125+
}
126+
127+
if lookupTable == nil {
128+
log.Printf("[WARN] LookupTable not found, removing from state: %v - %v", id, err)
129+
d.SetId("")
130+
return nil
131+
}
132+
133+
d.Set("name", lookupTable.Name)
134+
d.Set("fields", lookupTable.Fields)
135+
d.Set("ttl", lookupTable.Ttl)
136+
d.Set("primary_keys", lookupTable.PrimaryKeys)
137+
d.Set("parent_folder_id", lookupTable.ParentFolderId)
138+
d.Set("size_limit_action", lookupTable.SizeLimitAction)
139+
d.Set("description", lookupTable.Description)
140+
141+
return nil
142+
}
143+
144+
func resourceSumologicLookupTableDelete(d *schema.ResourceData, meta interface{}) error {
145+
c := meta.(*Client)
146+
147+
fmt.Println("##DEBUG## resourceSumologicLookupTableDelete: ", d.Id())
148+
return c.DeleteLookupTable(d.Id())
149+
}
150+
151+
func resourceSumologicLookupTableUpdate(d *schema.ResourceData, meta interface{}) error {
152+
c := meta.(*Client)
153+
154+
lookupTable := resourceToLookupTable(d)
155+
err := c.UpdateLookupTable(lookupTable)
156+
if err != nil {
157+
return err
158+
}
159+
160+
return resourceSumologicLookupTableRead(d, meta)
161+
}
162+
163+
func resourceToLookupTable(d *schema.ResourceData) LookupTable {
164+
165+
fieldsData := d.Get("fields").([]interface{})
166+
var fields []LookupTableField
167+
for _, data := range fieldsData {
168+
fields = append(fields, resourceToLookupTableField([]interface{}{data}))
169+
}
170+
171+
primaryKeysData := d.Get("primary_keys").([]interface{})
172+
var primaryKeys []string
173+
for _, data := range primaryKeysData {
174+
primaryKeys = append(primaryKeys, data.(string))
175+
}
176+
177+
return LookupTable{
178+
Name: d.Get("name").(string),
179+
ID: d.Id(),
180+
Fields: fields,
181+
Description: d.Get("description").(string),
182+
Ttl: d.Get("ttl").(int),
183+
SizeLimitAction: d.Get("size_limit_action").(string),
184+
PrimaryKeys: primaryKeys,
185+
ParentFolderId: d.Get("parent_folder_id").(string),
186+
}
187+
}
188+
189+
func resourceToLookupTableField(data interface{}) LookupTableField {
190+
191+
lookupTableFieldSlice := data.([]interface{})
192+
lookupTableField := LookupTableField{}
193+
if len(lookupTableFieldSlice) > 0 {
194+
lookupTableFieldObj := lookupTableFieldSlice[0].(map[string]interface{})
195+
lookupTableField.FieldName = lookupTableFieldObj["field_name"].(string)
196+
lookupTableField.FieldType = lookupTableFieldObj["field_type"].(string)
197+
}
198+
199+
return lookupTableField
200+
}

0 commit comments

Comments
 (0)