From 473a63f57419aff4a56b3b63f0ce70d3fefe0b68 Mon Sep 17 00:00:00 2001 From: Shivaprasad Date: Thu, 28 Jul 2022 15:36:31 +0530 Subject: [PATCH] feat: add telegraf config section to firehose --- modules/firehose/config.go | 8 ++++-- modules/firehose/plan_test.go | 6 ++--- modules/firehose/schema/config.json | 39 +++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/modules/firehose/config.go b/modules/firehose/config.go index 395c8b50..27afce7c 100644 --- a/modules/firehose/config.go +++ b/modules/firehose/config.go @@ -31,8 +31,9 @@ var ( ) type moduleConfig struct { - State string `json:"state"` - ChartVersion string `json:"chart_version"` + State string `json:"state"` + ChartVersion string `json:"chart_version"` + Telegraf map[string]interface{} `json:"telegraf"` Firehose struct { Replicas int `json:"replicas"` KafkaBrokerAddress string `json:"kafka_broker_address"` @@ -73,6 +74,9 @@ func (mc moduleConfig) GetHelmReleaseConfig(r resource.Resource) *helm.ReleaseCo "config": fc.EnvVariables, }, } + if len(mc.Telegraf) > 0 { + hv["telegraf"] = mc.Telegraf + } rc.Values = hv return rc diff --git a/modules/firehose/plan_test.go b/modules/firehose/plan_test.go index d75934c0..799c98c5 100644 --- a/modules/firehose/plan_test.go +++ b/modules/firehose/plan_test.go @@ -55,7 +55,7 @@ func TestFirehoseModule_Plan(t *testing.T) { Name: "test", Project: "demo", Spec: resource.Spec{ - Configs: []byte(`{"state":"RUNNING","chart_version":"0.1.1","firehose":{"replicas":1,"kafka_broker_address":"localhost:9092","kafka_topic":"test-topic","kafka_consumer_id":"test-consumer-id","env_variables":{}}}`), + Configs: []byte(`{"state":"RUNNING","chart_version":"0.1.1","telegraf":null,"firehose":{"replicas":1,"kafka_broker_address":"localhost:9092","kafka_topic":"test-topic","kafka_consumer_id":"test-consumer-id","env_variables":{}}}`), }, State: resource.State{ Status: resource.StatusPending, @@ -85,7 +85,7 @@ func TestFirehoseModule_Plan(t *testing.T) { Name: "test", Project: "demo", Spec: resource.Spec{ - Configs: []byte(`{"state":"RUNNING","chart_version":"0.1.1","firehose":{"replicas":5,"kafka_broker_address":"localhost:9092","kafka_topic":"test-topic","kafka_consumer_id":"test-consumer-id","env_variables":{}}}`), + Configs: []byte(`{"state":"RUNNING","chart_version":"0.1.1","telegraf":null,"firehose":{"replicas":5,"kafka_broker_address":"localhost:9092","kafka_topic":"test-topic","kafka_consumer_id":"test-consumer-id","env_variables":{}}}`), }, State: resource.State{ Status: resource.StatusPending, @@ -106,7 +106,7 @@ func TestFirehoseModule_Plan(t *testing.T) { Name: "test", Project: "demo", Spec: resource.Spec{ - Configs: []byte(`{"state":"RUNNING","chart_version":"0.1.1","firehose":{"replicas":1,"kafka_broker_address":"localhost:9092","kafka_topic":"test-topic","kafka_consumer_id":"test-consumer-id","env_variables":{}}}`), + Configs: []byte(`{"state":"RUNNING","chart_version":"0.1.1","telegraf":null,"firehose":{"replicas":1,"kafka_broker_address":"localhost:9092","kafka_topic":"test-topic","kafka_consumer_id":"test-consumer-id","env_variables":{}}}`), }, State: resource.State{ Status: resource.StatusPending, diff --git a/modules/firehose/schema/config.json b/modules/firehose/schema/config.json index 9a4d076a..17a6260a 100644 --- a/modules/firehose/schema/config.json +++ b/modules/firehose/schema/config.json @@ -169,6 +169,45 @@ "kafka_topic", "kafka_consumer_id" ] + }, + "telegraf": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "config": { + "type": "object", + "properties": { + "output": { + "type": "object", + "properties": { + "prometheus_remote_write": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "url": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "enabled", + "url", + "version" + ] + } + } + } + } + } + } } }, "required": [