Skip to content

Commit a7e4a3c

Browse files
author
Pedro Montiel
committed
INVS-175: CSE Entity/Inventory Entity group configuration
1 parent 793a43d commit a7e4a3c

9 files changed

+900
-58
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
## 2.16.0 (Unreleased)
2-
2+
FEATURES:
3+
* **New Resource:** sumologic_cse_entity_entity_group_configuration (GH-376)
4+
* **New Resource:** sumologic_cse_inventory_entity_group_configuration (GH-376)
35

46
## 2.15.0 (May 13, 2022)
57

sumologic/provider.go

Lines changed: 59 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -43,63 +43,65 @@ func Provider() terraform.ResourceProvider {
4343
},
4444
},
4545
ResourcesMap: map[string]*schema.Resource{
46-
"sumologic_cse_match_list": resourceSumologicCSEMatchList(),
47-
"sumologic_cse_log_mapping": resourceSumologicCSELogMapping(),
48-
"sumologic_cse_rule_tuning_expression": resourceSumologicCSERuleTuningExpression(),
49-
"sumologic_cse_network_block": resourceSumologicCSENetworkBlock(),
50-
"sumologic_cse_custom_entity_type": resourceSumologicCSECustomEntityType(),
51-
"sumologic_cse_custom_insight": resourceSumologicCSECustomInsight(),
52-
"sumologic_cse_entity_criticality_config": resourceSumologicCSEEntityCriticalityConfig(),
53-
"sumologic_cse_insights_configuration": resourceSumologicCSEInsightsConfiguration(),
54-
"sumologic_cse_insights_resolution": resourceSumologicCSEInsightsResolution(),
55-
"sumologic_cse_insights_status": resourceSumologicCSEInsightsStatus(),
56-
"sumologic_cse_aggregation_rule": resourceSumologicCSEAggregationRule(),
57-
"sumologic_cse_chain_rule": resourceSumologicCSEChainRule(),
58-
"sumologic_cse_match_rule": resourceSumologicCSEMatchRule(),
59-
"sumologic_cse_threshold_rule": resourceSumologicCSEThresholdRule(),
60-
"sumologic_collector": resourceSumologicCollector(),
61-
"sumologic_http_source": resourceSumologicHTTPSource(),
62-
"sumologic_gcp_source": resourceSumologicGCPSource(),
63-
"sumologic_polling_source": resourceSumologicPollingSource(),
64-
"sumologic_s3_source": resourceSumologicGenericPollingSource(),
65-
"sumologic_s3_audit_source": resourceSumologicGenericPollingSource(),
66-
"sumologic_cloudwatch_source": resourceSumologicGenericPollingSource(),
67-
"sumologic_aws_inventory_source": resourceSumologicGenericPollingSource(),
68-
"sumologic_aws_xray_source": resourceSumologicGenericPollingSource(),
69-
"sumologic_cloudtrail_source": resourceSumologicGenericPollingSource(),
70-
"sumologic_elb_source": resourceSumologicGenericPollingSource(),
71-
"sumologic_cloudfront_source": resourceSumologicGenericPollingSource(),
72-
"sumologic_gcp_metrics_source": resourceSumologicGenericPollingSource(),
73-
"sumologic_cloud_to_cloud_source": resourceSumologicCloudToCloudSource(),
74-
"sumologic_metadata_source": resourceSumologicMetadataSource(),
75-
"sumologic_cloudsyslog_source": resourceSumologicCloudsyslogSource(),
76-
"sumologic_role": resourceSumologicRole(),
77-
"sumologic_user": resourceSumologicUser(),
78-
"sumologic_ingest_budget": resourceSumologicIngestBudget(),
79-
"sumologic_collector_ingest_budget_assignment": resourceSumologicCollectorIngestBudgetAssignment(),
80-
"sumologic_folder": resourceSumologicFolder(),
81-
"sumologic_content": resourceSumologicContent(),
82-
"sumologic_scheduled_view": resourceSumologicScheduledView(),
83-
"sumologic_partition": resourceSumologicPartition(),
84-
"sumologic_field_extraction_rule": resourceSumologicFieldExtractionRule(),
85-
"sumologic_connection": resourceSumologicConnection(),
86-
"sumologic_monitor": resourceSumologicMonitorsLibraryMonitor(),
87-
"sumologic_monitor_folder": resourceSumologicMonitorsLibraryFolder(),
88-
"sumologic_slo": resourceSumologicSLO(),
89-
"sumologic_slo_folder": resourceSumologicSLOLibraryFolder(),
90-
"sumologic_ingest_budget_v2": resourceSumologicIngestBudgetV2(),
91-
"sumologic_field": resourceSumologicField(),
92-
"sumologic_lookup_table": resourceSumologicLookupTable(),
93-
"sumologic_subdomain": resourceSumologicSubdomain(),
94-
"sumologic_dashboard": resourceSumologicDashboard(),
95-
"sumologic_password_policy": resourceSumologicPasswordPolicy(),
96-
"sumologic_saml_configuration": resourceSumologicSamlConfiguration(),
97-
"sumologic_kinesis_metrics_source": resourceSumologicKinesisMetricsSource(),
98-
"sumologic_kinesis_log_source": resourceSumologicKinesisLogSource(),
99-
"sumologic_token": resourceSumologicToken(),
100-
"sumologic_policies": resourceSumologicPolicies(),
101-
"sumologic_hierarchy": resourceSumologicHierarchy(),
102-
"sumologic_content_permission": resourceSumologicPermissions(),
46+
"sumologic_cse_inventory_entity_group_configuration": resourceSumologicCSEInventoryEntityGroupConfiguration(),
47+
"sumologic_cse_entity_entity_group_configuration": resourceSumologicCSEEntityEntityGroupConfiguration(),
48+
"sumologic_cse_match_list": resourceSumologicCSEMatchList(),
49+
"sumologic_cse_log_mapping": resourceSumologicCSELogMapping(),
50+
"sumologic_cse_rule_tuning_expression": resourceSumologicCSERuleTuningExpression(),
51+
"sumologic_cse_network_block": resourceSumologicCSENetworkBlock(),
52+
"sumologic_cse_custom_entity_type": resourceSumologicCSECustomEntityType(),
53+
"sumologic_cse_custom_insight": resourceSumologicCSECustomInsight(),
54+
"sumologic_cse_entity_criticality_config": resourceSumologicCSEEntityCriticalityConfig(),
55+
"sumologic_cse_insights_configuration": resourceSumologicCSEInsightsConfiguration(),
56+
"sumologic_cse_insights_resolution": resourceSumologicCSEInsightsResolution(),
57+
"sumologic_cse_insights_status": resourceSumologicCSEInsightsStatus(),
58+
"sumologic_cse_aggregation_rule": resourceSumologicCSEAggregationRule(),
59+
"sumologic_cse_chain_rule": resourceSumologicCSEChainRule(),
60+
"sumologic_cse_match_rule": resourceSumologicCSEMatchRule(),
61+
"sumologic_cse_threshold_rule": resourceSumologicCSEThresholdRule(),
62+
"sumologic_collector": resourceSumologicCollector(),
63+
"sumologic_http_source": resourceSumologicHTTPSource(),
64+
"sumologic_gcp_source": resourceSumologicGCPSource(),
65+
"sumologic_polling_source": resourceSumologicPollingSource(),
66+
"sumologic_s3_source": resourceSumologicGenericPollingSource(),
67+
"sumologic_s3_audit_source": resourceSumologicGenericPollingSource(),
68+
"sumologic_cloudwatch_source": resourceSumologicGenericPollingSource(),
69+
"sumologic_aws_inventory_source": resourceSumologicGenericPollingSource(),
70+
"sumologic_aws_xray_source": resourceSumologicGenericPollingSource(),
71+
"sumologic_cloudtrail_source": resourceSumologicGenericPollingSource(),
72+
"sumologic_elb_source": resourceSumologicGenericPollingSource(),
73+
"sumologic_cloudfront_source": resourceSumologicGenericPollingSource(),
74+
"sumologic_gcp_metrics_source": resourceSumologicGenericPollingSource(),
75+
"sumologic_cloud_to_cloud_source": resourceSumologicCloudToCloudSource(),
76+
"sumologic_metadata_source": resourceSumologicMetadataSource(),
77+
"sumologic_cloudsyslog_source": resourceSumologicCloudsyslogSource(),
78+
"sumologic_role": resourceSumologicRole(),
79+
"sumologic_user": resourceSumologicUser(),
80+
"sumologic_ingest_budget": resourceSumologicIngestBudget(),
81+
"sumologic_collector_ingest_budget_assignment": resourceSumologicCollectorIngestBudgetAssignment(),
82+
"sumologic_folder": resourceSumologicFolder(),
83+
"sumologic_content": resourceSumologicContent(),
84+
"sumologic_scheduled_view": resourceSumologicScheduledView(),
85+
"sumologic_partition": resourceSumologicPartition(),
86+
"sumologic_field_extraction_rule": resourceSumologicFieldExtractionRule(),
87+
"sumologic_connection": resourceSumologicConnection(),
88+
"sumologic_monitor": resourceSumologicMonitorsLibraryMonitor(),
89+
"sumologic_monitor_folder": resourceSumologicMonitorsLibraryFolder(),
90+
"sumologic_slo": resourceSumologicSLO(),
91+
"sumologic_slo_folder": resourceSumologicSLOLibraryFolder(),
92+
"sumologic_ingest_budget_v2": resourceSumologicIngestBudgetV2(),
93+
"sumologic_field": resourceSumologicField(),
94+
"sumologic_lookup_table": resourceSumologicLookupTable(),
95+
"sumologic_subdomain": resourceSumologicSubdomain(),
96+
"sumologic_dashboard": resourceSumologicDashboard(),
97+
"sumologic_password_policy": resourceSumologicPasswordPolicy(),
98+
"sumologic_saml_configuration": resourceSumologicSamlConfiguration(),
99+
"sumologic_kinesis_metrics_source": resourceSumologicKinesisMetricsSource(),
100+
"sumologic_kinesis_log_source": resourceSumologicKinesisLogSource(),
101+
"sumologic_token": resourceSumologicToken(),
102+
"sumologic_policies": resourceSumologicPolicies(),
103+
"sumologic_hierarchy": resourceSumologicHierarchy(),
104+
"sumologic_content_permission": resourceSumologicPermissions(),
103105
},
104106
DataSourcesMap: map[string]*schema.Resource{
105107
"sumologic_cse_log_mapping_vendor_product": dataSourceCSELogMappingVendorAndProduct(),
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
package sumologic
2+
3+
import (
4+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
5+
"log"
6+
)
7+
8+
func resourceSumologicCSEEntityEntityGroupConfiguration() *schema.Resource {
9+
return &schema.Resource{
10+
Create: resourceSumologicCSEEntityEntityGroupConfigurationCreate,
11+
Read: resourceSumologicCSEEntityEntityGroupConfigurationRead,
12+
Delete: resourceSumologicCSEEntityEntityGroupConfigurationDelete,
13+
Update: resourceSumologicCSEEntityEntityGroupConfigurationUpdate,
14+
Importer: &schema.ResourceImporter{
15+
State: schema.ImportStatePassthrough,
16+
},
17+
18+
Schema: map[string]*schema.Schema{
19+
"criticality": {
20+
Type: schema.TypeString,
21+
Required: false,
22+
Optional: true,
23+
Default: "",
24+
},
25+
"description": {
26+
Type: schema.TypeString,
27+
Optional: true,
28+
Default: "",
29+
},
30+
"entity_namespace": {
31+
Type: schema.TypeString,
32+
Optional: true,
33+
Default: "",
34+
},
35+
"entity_type": {
36+
Type: schema.TypeString,
37+
Optional: true,
38+
Default: "",
39+
},
40+
"name": {
41+
Type: schema.TypeString,
42+
Required: true,
43+
},
44+
"network_block": {
45+
Type: schema.TypeString,
46+
Optional: true,
47+
Default: "",
48+
},
49+
"prefix": {
50+
Type: schema.TypeString,
51+
Optional: true,
52+
Default: "",
53+
},
54+
"suffix": {
55+
Type: schema.TypeString,
56+
Optional: true,
57+
Default: "",
58+
},
59+
"suppressed": {
60+
Type: schema.TypeBool,
61+
Optional: true,
62+
Default: false,
63+
},
64+
"tags": {
65+
Type: schema.TypeList,
66+
Optional: true,
67+
Elem: &schema.Schema{
68+
Type: schema.TypeString,
69+
},
70+
},
71+
},
72+
}
73+
}
74+
75+
func resourceSumologicCSEEntityEntityGroupConfigurationRead(d *schema.ResourceData, meta interface{}) error {
76+
c := meta.(*Client)
77+
78+
var CSEEntityEntityGroupConfigurationGet *CSEEntityGroupConfiguration
79+
id := d.Id()
80+
81+
CSEEntityEntityGroupConfigurationGet, err := c.GetCSEntityGroupConfiguration(id)
82+
if err != nil {
83+
log.Printf("[WARN] CSE Entity Entity Group Configuration not found when looking by id: %s, err: %v", id, err)
84+
}
85+
86+
if CSEEntityEntityGroupConfigurationGet == nil {
87+
log.Printf("[WARN] CSE Entity Entity Group Configuration not found, removing from state: %v - %v", id, err)
88+
d.SetId("")
89+
return nil
90+
}
91+
92+
d.Set("criticality", CSEEntityEntityGroupConfigurationGet.Criticality)
93+
d.Set("description", CSEEntityEntityGroupConfigurationGet.Description)
94+
d.Set("entity_namespace", CSEEntityEntityGroupConfigurationGet.EntityNamespace)
95+
d.Set("entity_type", CSEEntityEntityGroupConfigurationGet.EntityType)
96+
d.Set("name", CSEEntityEntityGroupConfigurationGet.Name)
97+
d.Set("network_block", CSEEntityEntityGroupConfigurationGet.NetworkBlock)
98+
d.Set("prefix", CSEEntityEntityGroupConfigurationGet.Prefix)
99+
d.Set("suffix", CSEEntityEntityGroupConfigurationGet.Suffix)
100+
d.Set("suppressed", CSEEntityEntityGroupConfigurationGet.Suppressed)
101+
d.Set("tags", CSEEntityEntityGroupConfigurationGet.Tags)
102+
103+
return nil
104+
}
105+
106+
func resourceSumologicCSEEntityEntityGroupConfigurationDelete(d *schema.ResourceData, meta interface{}) error {
107+
c := meta.(*Client)
108+
109+
return c.DeleteCSEEntityGroupConfiguration(d.Id())
110+
111+
}
112+
113+
func resourceSumologicCSEEntityEntityGroupConfigurationCreate(d *schema.ResourceData, meta interface{}) error {
114+
c := meta.(*Client)
115+
116+
if d.Id() == "" {
117+
id, err := c.CreateCSEEntityEntityGroupConfiguration(CSEEntityGroupConfiguration{
118+
Criticality: d.Get("criticality").(string),
119+
Description: d.Get("description").(string),
120+
EntityNamespace: d.Get("entity_namespace").(string),
121+
EntityType: d.Get("entity_type").(string),
122+
Name: d.Get("name").(string),
123+
NetworkBlock: d.Get("network_block").(string),
124+
Prefix: d.Get("prefix").(string),
125+
Suffix: d.Get("suffix").(string),
126+
Suppressed: d.Get("suppressed").(bool),
127+
Tags: resourceToStringArray(d.Get("tags").([]interface{})),
128+
})
129+
130+
if err != nil {
131+
return err
132+
}
133+
d.SetId(id)
134+
}
135+
136+
return resourceSumologicCSEEntityEntityGroupConfigurationRead(d, meta)
137+
}
138+
139+
func resourceSumologicCSEEntityEntityGroupConfigurationUpdate(d *schema.ResourceData, meta interface{}) error {
140+
CSEEntityEntityGroupConfiguration, err := resourceToCSEEntityEntityGroupConfiguration(d)
141+
if err != nil {
142+
return err
143+
}
144+
145+
c := meta.(*Client)
146+
if err = c.UpdateCSEEntityEntityGroupConfiguration(CSEEntityEntityGroupConfiguration); err != nil {
147+
return err
148+
}
149+
150+
return resourceSumologicCSEEntityEntityGroupConfigurationRead(d, meta)
151+
}
152+
153+
func resourceToCSEEntityEntityGroupConfiguration(d *schema.ResourceData) (CSEEntityGroupConfiguration, error) {
154+
id := d.Id()
155+
if id == "" {
156+
return CSEEntityGroupConfiguration{}, nil
157+
}
158+
159+
return CSEEntityGroupConfiguration{
160+
ID: id,
161+
Criticality: d.Get("criticality").(string),
162+
Description: d.Get("description").(string),
163+
EntityNamespace: d.Get("entity_namespace").(string),
164+
EntityType: d.Get("entity_type").(string),
165+
Name: d.Get("name").(string),
166+
NetworkBlock: d.Get("network_block").(string),
167+
Prefix: d.Get("prefix").(string),
168+
Suffix: d.Get("suffix").(string),
169+
Suppressed: d.Get("suppressed").(bool),
170+
Tags: resourceToStringArray(d.Get("tags").([]interface{})),
171+
}, nil
172+
}

0 commit comments

Comments
 (0)