Skip to content

Commit d72a877

Browse files
authored
Merge pull request #271 from rawmind0/logging
Added custom_target_config argument to cluster and project logging
2 parents 5a651d6 + c3d2987 commit d72a877

13 files changed

Lines changed: 348 additions & 22 deletions

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ ENHANCEMENTS:
88

99
* Added `plugin` optional value `none` to `rke_config` argument on `rancher2_cluster` resource
1010
* Updated multiline arguments to trim spaces by default and avoid false diff
11+
* Added `custom_target_config` argument to `rancher2_cluster_logging` and `rancher2_project_logging` resources
1112

1213
BUG FIXES:
1314

rancher2/resource_rancher2_cluster_logging.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ func resourceRancher2ClusterLoggingUpdate(d *schema.ResourceData, meta interface
121121
}
122122

123123
switch kind := d.Get("kind").(string); kind {
124+
case loggingCustomTargetKind:
125+
customConfig, err := expandLoggingCustomTargetConfig(d.Get("custom_target_config").([]interface{}))
126+
if err != nil {
127+
return err
128+
}
129+
update["customTargetConfig"] = customConfig
124130
case loggingElasticsearchKind:
125131
elkConfig, err := expandLoggingElasticsearchConfig(d.Get("elasticsearch_config").([]interface{}))
126132
if err != nil {

rancher2/resource_rancher2_project_logging.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ func resourceRancher2ProjectLoggingUpdate(d *schema.ResourceData, meta interface
121121
}
122122

123123
switch kind := d.Get("kind").(string); kind {
124+
case loggingCustomTargetKind:
125+
customConfig, err := expandLoggingCustomTargetConfig(d.Get("custom_target_config").([]interface{}))
126+
if err != nil {
127+
return err
128+
}
129+
update["customTargetConfig"] = customConfig
124130
case loggingElasticsearchKind:
125131
elkConfig, err := expandLoggingElasticsearchConfig(d.Get("elasticsearch_config").([]interface{}))
126132
if err != nil {

rancher2/schema_cluster_logging.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
)
77

88
var (
9-
clusterLoggingKinds = []string{loggingElasticsearchKind, loggingFluentdKind, loggingKafkaKind, loggingSplunkKind, loggingSyslogKind}
9+
clusterLoggingKinds = []string{loggingCustomTargetKind, loggingElasticsearchKind, loggingFluentdKind, loggingKafkaKind, loggingSplunkKind, loggingSyslogKind}
1010
)
1111

1212
// Shemas
@@ -28,11 +28,20 @@ func clusterLoggingFields() map[string]*schema.Schema {
2828
ForceNew: true,
2929
ValidateFunc: validation.StringInSlice(clusterLoggingKinds, true),
3030
},
31+
"custom_target_config": &schema.Schema{
32+
Type: schema.TypeList,
33+
MaxItems: 1,
34+
Optional: true,
35+
ConflictsWith: []string{"elasticsearch_config", "fluentd_config", "kafka_config", "splunk_config", "syslog_config"},
36+
Elem: &schema.Resource{
37+
Schema: loggingCustomTargetConfigFields(),
38+
},
39+
},
3140
"elasticsearch_config": &schema.Schema{
3241
Type: schema.TypeList,
3342
MaxItems: 1,
3443
Optional: true,
35-
ConflictsWith: []string{"fluentd_config", "kafka_config", "splunk_config", "syslog_config"},
44+
ConflictsWith: []string{"custom_target_config", "fluentd_config", "kafka_config", "splunk_config", "syslog_config"},
3645
Elem: &schema.Resource{
3746
Schema: loggingElasticsearchConfigFields(),
3847
},
@@ -41,7 +50,7 @@ func clusterLoggingFields() map[string]*schema.Schema {
4150
Type: schema.TypeList,
4251
MaxItems: 1,
4352
Optional: true,
44-
ConflictsWith: []string{"elasticsearch_config", "kafka_config", "splunk_config", "syslog_config"},
53+
ConflictsWith: []string{"custom_target_config", "elasticsearch_config", "kafka_config", "splunk_config", "syslog_config"},
4554
Elem: &schema.Resource{
4655
Schema: loggingFluentdConfigFields(),
4756
},
@@ -50,7 +59,7 @@ func clusterLoggingFields() map[string]*schema.Schema {
5059
Type: schema.TypeList,
5160
MaxItems: 1,
5261
Optional: true,
53-
ConflictsWith: []string{"elasticsearch_config", "fluentd_config", "splunk_config", "syslog_config"},
62+
ConflictsWith: []string{"custom_target_config", "elasticsearch_config", "fluentd_config", "splunk_config", "syslog_config"},
5463
Elem: &schema.Resource{
5564
Schema: loggingKafkaConfigFields(),
5665
},
@@ -73,7 +82,7 @@ func clusterLoggingFields() map[string]*schema.Schema {
7382
Type: schema.TypeList,
7483
MaxItems: 1,
7584
Optional: true,
76-
ConflictsWith: []string{"elasticsearch_config", "fluentd_config", "kafka_config", "syslog_config"},
85+
ConflictsWith: []string{"custom_target_config", "elasticsearch_config", "fluentd_config", "kafka_config", "syslog_config"},
7786
Elem: &schema.Resource{
7887
Schema: loggingSplunkConfigFields(),
7988
},
@@ -82,7 +91,7 @@ func clusterLoggingFields() map[string]*schema.Schema {
8291
Type: schema.TypeList,
8392
MaxItems: 1,
8493
Optional: true,
85-
ConflictsWith: []string{"elasticsearch_config", "fluentd_config", "kafka_config", "splunk_config"},
94+
ConflictsWith: []string{"custom_target_config", "elasticsearch_config", "fluentd_config", "kafka_config", "splunk_config"},
8695
Elem: &schema.Resource{
8796
Schema: loggingSyslogConfigFields(),
8897
},
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package rancher2
2+
3+
import (
4+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
5+
)
6+
7+
const (
8+
loggingCustomTargetKind = "custom"
9+
)
10+
11+
func loggingCustomTargetConfigFields() map[string]*schema.Schema {
12+
s := map[string]*schema.Schema{
13+
"content": {
14+
Type: schema.TypeString,
15+
Required: true,
16+
StateFunc: TrimSpace,
17+
},
18+
"certificate": {
19+
Type: schema.TypeString,
20+
Optional: true,
21+
Sensitive: true,
22+
StateFunc: TrimSpace,
23+
},
24+
"client_cert": {
25+
Type: schema.TypeString,
26+
Optional: true,
27+
Sensitive: true,
28+
StateFunc: TrimSpace,
29+
},
30+
"client_key": {
31+
Type: schema.TypeString,
32+
Optional: true,
33+
Sensitive: true,
34+
StateFunc: TrimSpace,
35+
},
36+
}
37+
38+
return s
39+
}

rancher2/schema_project_logging.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
)
77

88
var (
9-
projectLoggingKinds = []string{loggingElasticsearchKind, loggingFluentdKind, loggingKafkaKind, loggingSplunkKind, loggingSyslogKind}
9+
projectLoggingKinds = []string{loggingCustomTargetKind, loggingElasticsearchKind, loggingFluentdKind, loggingKafkaKind, loggingSplunkKind, loggingSyslogKind}
1010
)
1111

1212
//Schemas
@@ -28,11 +28,20 @@ func projectLoggingFields() map[string]*schema.Schema {
2828
ForceNew: true,
2929
ValidateFunc: validation.StringInSlice(projectLoggingKinds, true),
3030
},
31+
"custom_target_config": &schema.Schema{
32+
Type: schema.TypeList,
33+
MaxItems: 1,
34+
Optional: true,
35+
ConflictsWith: []string{"elasticsearch_config", "fluentd_config", "kafka_config", "splunk_config", "syslog_config"},
36+
Elem: &schema.Resource{
37+
Schema: loggingCustomTargetConfigFields(),
38+
},
39+
},
3140
"elasticsearch_config": &schema.Schema{
3241
Type: schema.TypeList,
3342
MaxItems: 1,
3443
Optional: true,
35-
ConflictsWith: []string{"fluentd_config", "kafka_config", "splunk_config", "syslog_config"},
44+
ConflictsWith: []string{"custom_target_config", "fluentd_config", "kafka_config", "splunk_config", "syslog_config"},
3645
Elem: &schema.Resource{
3746
Schema: loggingElasticsearchConfigFields(),
3847
},
@@ -41,7 +50,7 @@ func projectLoggingFields() map[string]*schema.Schema {
4150
Type: schema.TypeList,
4251
MaxItems: 1,
4352
Optional: true,
44-
ConflictsWith: []string{"elasticsearch_config", "kafka_config", "splunk_config", "syslog_config"},
53+
ConflictsWith: []string{"custom_target_config", "elasticsearch_config", "kafka_config", "splunk_config", "syslog_config"},
4554
Elem: &schema.Resource{
4655
Schema: loggingFluentdConfigFields(),
4756
},
@@ -50,7 +59,7 @@ func projectLoggingFields() map[string]*schema.Schema {
5059
Type: schema.TypeList,
5160
MaxItems: 1,
5261
Optional: true,
53-
ConflictsWith: []string{"elasticsearch_config", "fluentd_config", "splunk_config", "syslog_config"},
62+
ConflictsWith: []string{"custom_target_config", "elasticsearch_config", "fluentd_config", "splunk_config", "syslog_config"},
5463
Elem: &schema.Resource{
5564
Schema: loggingKafkaConfigFields(),
5665
},
@@ -73,7 +82,7 @@ func projectLoggingFields() map[string]*schema.Schema {
7382
Type: schema.TypeList,
7483
MaxItems: 1,
7584
Optional: true,
76-
ConflictsWith: []string{"elasticsearch_config", "fluentd_config", "kafka_config", "syslog_config"},
85+
ConflictsWith: []string{"custom_target_config", "elasticsearch_config", "fluentd_config", "kafka_config", "syslog_config"},
7786
Elem: &schema.Resource{
7887
Schema: loggingSplunkConfigFields(),
7988
},
@@ -82,7 +91,7 @@ func projectLoggingFields() map[string]*schema.Schema {
8291
Type: schema.TypeList,
8392
MaxItems: 1,
8493
Optional: true,
85-
ConflictsWith: []string{"elasticsearch_config", "fluentd_config", "kafka_config", "splunk_config"},
94+
ConflictsWith: []string{"custom_target_config", "elasticsearch_config", "fluentd_config", "kafka_config", "splunk_config"},
8695
Elem: &schema.Resource{
8796
Schema: loggingSyslogConfigFields(),
8897
},

rancher2/structure_cluster_logging.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ func flattenClusterLogging(d *schema.ResourceData, in *managementClient.ClusterL
2020

2121
kind := d.Get("kind").(string)
2222
if kind == "" {
23+
if in.CustomTargetConfig != nil {
24+
kind = loggingCustomTargetKind
25+
}
2326
if in.ElasticsearchConfig != nil {
2427
kind = loggingElasticsearchKind
2528
}
@@ -40,6 +43,19 @@ func flattenClusterLogging(d *schema.ResourceData, in *managementClient.ClusterL
4043
}
4144

4245
switch kind {
46+
case loggingCustomTargetKind:
47+
v, ok := d.Get("custom_target_config").([]interface{})
48+
if !ok {
49+
v = []interface{}{}
50+
}
51+
customConfig, err := flattenLoggingCustomTargetConfig(in.CustomTargetConfig, v)
52+
if err != nil {
53+
return err
54+
}
55+
err = d.Set("custom_target_config", customConfig)
56+
if err != nil {
57+
return err
58+
}
4359
case loggingElasticsearchKind:
4460
v, ok := d.Get("elasticsearch_config").([]interface{})
4561
if !ok {
@@ -147,6 +163,12 @@ func expandClusterLogging(in *schema.ResourceData) (*managementClient.ClusterLog
147163
obj.Name = in.Get("name").(string)
148164

149165
switch kind := in.Get("kind").(string); kind {
166+
case loggingCustomTargetKind:
167+
customConfig, err := expandLoggingCustomTargetConfig(in.Get("custom_target_config").([]interface{}))
168+
if err != nil {
169+
return obj, err
170+
}
171+
obj.CustomTargetConfig = customConfig
150172
case loggingElasticsearchKind:
151173
elkConfig, err := expandLoggingElasticsearchConfig(in.Get("elasticsearch_config").([]interface{}))
152174
if err != nil {

rancher2/structure_cluster_logging_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import (
99
)
1010

1111
var (
12+
testClusterLoggingConfCustomTarget *managementClient.ClusterLogging
13+
testClusterLoggingInterfaceCustomTarget map[string]interface{}
1214
testClusterLoggingConfElasticSearch *managementClient.ClusterLogging
1315
testClusterLoggingInterfaceElasticSearch map[string]interface{}
1416
testClusterLoggingConfFluentd *managementClient.ClusterLogging
@@ -22,6 +24,20 @@ var (
2224
)
2325

2426
func init() {
27+
testLoggingCustomTargetConf = &managementClient.CustomTargetConfig{
28+
Certificate: "certificate",
29+
ClientCert: "client_cert",
30+
ClientKey: "client_key",
31+
Content: "content",
32+
}
33+
testLoggingCustomTargetInterface = []interface{}{
34+
map[string]interface{}{
35+
"certificate": "certificate",
36+
"client_cert": "client_cert",
37+
"client_key": "client_key",
38+
"content": "content",
39+
},
40+
}
2541
testLoggingElasticsearchConf = &managementClient.ElasticsearchConfig{
2642
Endpoint: "hostname.test",
2743
DateFormat: "YYYY-MM-DD",
@@ -152,6 +168,29 @@ func init() {
152168
"token": "XXXXXXXXXXXX",
153169
},
154170
}
171+
testClusterLoggingConfCustomTarget = &managementClient.ClusterLogging{
172+
ClusterID: "cluster-test",
173+
Name: "test",
174+
CustomTargetConfig: testLoggingCustomTargetConf,
175+
NamespaceId: "namespace-test",
176+
OutputFlushInterval: 10,
177+
OutputTags: map[string]string{
178+
"outputTag1": "value1",
179+
"outputTag2": "value2",
180+
},
181+
}
182+
testClusterLoggingInterfaceCustomTarget = map[string]interface{}{
183+
"cluster_id": "cluster-test",
184+
"name": "test",
185+
"kind": loggingCustomTargetKind,
186+
"custom_target_config": testLoggingCustomTargetInterface,
187+
"namespace_id": "namespace-test",
188+
"output_flush_interval": 10,
189+
"output_tags": map[string]interface{}{
190+
"outputTag1": "value1",
191+
"outputTag2": "value2",
192+
},
193+
}
155194
testClusterLoggingConfElasticSearch = &managementClient.ClusterLogging{
156195
ClusterID: "cluster-test",
157196
Name: "test",
@@ -275,6 +314,10 @@ func TestFlattenClusterLogging(t *testing.T) {
275314
Input *managementClient.ClusterLogging
276315
ExpectedOutput map[string]interface{}
277316
}{
317+
{
318+
testClusterLoggingConfCustomTarget,
319+
testClusterLoggingInterfaceCustomTarget,
320+
},
278321
{
279322
testClusterLoggingConfElasticSearch,
280323
testClusterLoggingInterfaceElasticSearch,
@@ -320,6 +363,10 @@ func TestExpandClusterLogging(t *testing.T) {
320363
Input map[string]interface{}
321364
ExpectedOutput *managementClient.ClusterLogging
322365
}{
366+
{
367+
testClusterLoggingInterfaceCustomTarget,
368+
testClusterLoggingConfCustomTarget,
369+
},
323370
{
324371
testClusterLoggingInterfaceElasticSearch,
325372
testClusterLoggingConfElasticSearch,

0 commit comments

Comments
 (0)