diff --git a/docs/configuration/crds/v1beta1/output_types.md b/docs/configuration/crds/v1beta1/output_types.md index 73efd97bb..8f3bad24c 100644 --- a/docs/configuration/crds/v1beta1/output_types.md +++ b/docs/configuration/crds/v1beta1/output_types.md @@ -95,10 +95,10 @@ OutputSpec defines the desired state of Output ### syslog (*output.SyslogOutputConfig, optional) {#outputspec-syslog} -### vmwareLogIntelligence (*output.VMWareLogIntelligenceOutput, optional) {#outputspec-vmwarelogintelligence} +### vmwareLogInsight (*output.VMwareLogInsightOutput, optional) {#outputspec-vmwareloginsight} -### vmwareLogInsight (*output.VMwareLogInsightOutput, optional) {#outputspec-vmwareloginsight} +### vmwareLogIntelligence (*output.VMwareLogIntelligenceOutputConfig, optional) {#outputspec-vmwarelogintelligence} diff --git a/docs/configuration/plugins/outputs/vmware_log_intelligence.md b/docs/configuration/plugins/outputs/vmware_log_intelligence.md index 1d443e9f0..d87ba1fb0 100644 --- a/docs/configuration/plugins/outputs/vmware_log_intelligence.md +++ b/docs/configuration/plugins/outputs/vmware_log_intelligence.md @@ -13,16 +13,20 @@ For details, see [https://github.com/vmware/fluent-plugin-vmware-log-intelligenc spec: vmwarelogintelligence: endpoint_url: https://data.upgrade.symphony-dev.com/le-mans/v1/streams/ingestion-pipeline-stream - verify_ssl: true - http_compress: false - headers: - Content-Type: "application/json" - Authorization: "Bearer 12345" - structure: simple - buffer: - chunk_limit_records: 300 - flush_interval: 3s - retry_max_times: 3 + verify_ssl: true + http_compress: false + headers: + content_type: "application/json" + authorization: + valueFrom: + secretKeyRef: + name: vmware-log-intelligence-token + key: authorization + structure: simple + buffer: + chunk_limit_records: 300 + flush_interval: 3s + retry_max_times: 3 ``` @@ -54,7 +58,7 @@ Compress http request https://github.com/vmware/fluent-plugin-vmware-log-intelli Required headers for sending logs to VMware Log Intelligence https://github.com/vmware/fluent-plugin-vmware-log-intelligence?tab=readme-ov-file#label-3Cheaders-3E -### verify_ssl (bool, required) {#vmwarelogintelligence-verify_ssl} +### verify_ssl (*bool, required) {#vmwarelogintelligence-verify_ssl} Verify SSL (default: true) https://github.com/vmware/fluent-plugin-vmware-log-intelligence?tab=readme-ov-file#label-verify_ssl diff --git a/pkg/sdk/logging/api/v1beta1/output_types.go b/pkg/sdk/logging/api/v1beta1/output_types.go index 5f3fab463..f18218b7b 100644 --- a/pkg/sdk/logging/api/v1beta1/output_types.go +++ b/pkg/sdk/logging/api/v1beta1/output_types.go @@ -31,37 +31,37 @@ type _metaOutputSpec interface{} //nolint:deadcode,unused // OutputSpec defines the desired state of Output type OutputSpec struct { - LoggingRef string `json:"loggingRef,omitempty"` - S3OutputConfig *output.S3OutputConfig `json:"s3,omitempty"` - AzureStorage *output.AzureStorage `json:"azurestorage,omitempty"` - GCSOutput *output.GCSOutput `json:"gcs,omitempty"` - OSSOutput *output.OSSOutput `json:"oss,omitempty"` - ElasticsearchOutput *output.ElasticsearchOutput `json:"elasticsearch,omitempty"` - OpenSearchOutput *output.OpenSearchOutput `json:"opensearch,omitempty"` - LogZOutput *output.LogZOutput `json:"logz,omitempty"` - LokiOutput *output.LokiOutput `json:"loki,omitempty"` - SumologicOutput *output.SumologicOutput `json:"sumologic,omitempty"` - DatadogOutput *output.DatadogOutput `json:"datadog,omitempty"` - ForwardOutput *output.ForwardOutput `json:"forward,omitempty"` - FileOutput *output.FileOutputConfig `json:"file,omitempty"` - NullOutputConfig *output.NullOutputConfig `json:"nullout,omitempty"` - KafkaOutputConfig *output.KafkaOutputConfig `json:"kafka,omitempty"` - CloudWatchOutput *output.CloudWatchOutput `json:"cloudwatch,omitempty"` - KinesisFirehoseOutputConfig *output.KinesisFirehoseOutputConfig `json:"kinesisFirehose,omitempty"` - KinesisStreamOutputConfig *output.KinesisStreamOutputConfig `json:"kinesisStream,omitempty"` - LogDNAOutput *output.LogDNAOutput `json:"logdna,omitempty"` - NewRelicOutputConfig *output.NewRelicOutputConfig `json:"newrelic,omitempty"` - SplunkHecOutput *output.SplunkHecOutput `json:"splunkHec,omitempty"` - HTTPOutput *output.HTTPOutputConfig `json:"http,omitempty"` - AwsElasticsearchOutputConfig *output.AwsElasticsearchOutputConfig `json:"awsElasticsearch,omitempty"` - RedisOutputConfig *output.RedisOutputConfig `json:"redis,omitempty"` - SyslogOutputConfig *output.SyslogOutputConfig `json:"syslog,omitempty"` - GELFOutputConfig *output.GELFOutputConfig `json:"gelf,omitempty"` - SQSOutputConfig *output.SQSOutputConfig `json:"sqs,omitempty"` - MattermostOutputConfig *output.MattermostOutputConfig `json:"mattermost,omitempty"` - RelabelOutputConfig *output.RelabelOutputConfig `json:"relabel,omitempty"` - VMwareLogInsightConfig *output.VMwareLogInsightOutput `json:"vmwareLogInsight,omitempty"` - VMWareLogIntelligenceOutput *output.VMWareLogIntelligenceOutput `json:"vmwareLogIntelligence,omitempty"` + LoggingRef string `json:"loggingRef,omitempty"` + S3OutputConfig *output.S3OutputConfig `json:"s3,omitempty"` + AzureStorage *output.AzureStorage `json:"azurestorage,omitempty"` + GCSOutput *output.GCSOutput `json:"gcs,omitempty"` + OSSOutput *output.OSSOutput `json:"oss,omitempty"` + ElasticsearchOutput *output.ElasticsearchOutput `json:"elasticsearch,omitempty"` + OpenSearchOutput *output.OpenSearchOutput `json:"opensearch,omitempty"` + LogZOutput *output.LogZOutput `json:"logz,omitempty"` + LokiOutput *output.LokiOutput `json:"loki,omitempty"` + SumologicOutput *output.SumologicOutput `json:"sumologic,omitempty"` + DatadogOutput *output.DatadogOutput `json:"datadog,omitempty"` + ForwardOutput *output.ForwardOutput `json:"forward,omitempty"` + FileOutput *output.FileOutputConfig `json:"file,omitempty"` + NullOutputConfig *output.NullOutputConfig `json:"nullout,omitempty"` + KafkaOutputConfig *output.KafkaOutputConfig `json:"kafka,omitempty"` + CloudWatchOutput *output.CloudWatchOutput `json:"cloudwatch,omitempty"` + KinesisFirehoseOutputConfig *output.KinesisFirehoseOutputConfig `json:"kinesisFirehose,omitempty"` + KinesisStreamOutputConfig *output.KinesisStreamOutputConfig `json:"kinesisStream,omitempty"` + LogDNAOutput *output.LogDNAOutput `json:"logdna,omitempty"` + NewRelicOutputConfig *output.NewRelicOutputConfig `json:"newrelic,omitempty"` + SplunkHecOutput *output.SplunkHecOutput `json:"splunkHec,omitempty"` + HTTPOutput *output.HTTPOutputConfig `json:"http,omitempty"` + AwsElasticsearchOutputConfig *output.AwsElasticsearchOutputConfig `json:"awsElasticsearch,omitempty"` + RedisOutputConfig *output.RedisOutputConfig `json:"redis,omitempty"` + SyslogOutputConfig *output.SyslogOutputConfig `json:"syslog,omitempty"` + GELFOutputConfig *output.GELFOutputConfig `json:"gelf,omitempty"` + SQSOutputConfig *output.SQSOutputConfig `json:"sqs,omitempty"` + MattermostOutputConfig *output.MattermostOutputConfig `json:"mattermost,omitempty"` + RelabelOutputConfig *output.RelabelOutputConfig `json:"relabel,omitempty"` + VMwareLogInsightConfig *output.VMwareLogInsightOutput `json:"vmwareLogInsight,omitempty"` + VMwareLogIntelligenceOutputConfig *output.VMwareLogIntelligenceOutputConfig `json:"vmwareLogIntelligence,omitempty"` } // OutputStatus defines the observed state of Output diff --git a/pkg/sdk/logging/api/v1beta1/zz_generated.deepcopy.go b/pkg/sdk/logging/api/v1beta1/zz_generated.deepcopy.go index 26e74a894..aa1c3f529 100644 --- a/pkg/sdk/logging/api/v1beta1/zz_generated.deepcopy.go +++ b/pkg/sdk/logging/api/v1beta1/zz_generated.deepcopy.go @@ -2531,9 +2531,9 @@ func (in *OutputSpec) DeepCopyInto(out *OutputSpec) { *out = new(output.VMwareLogInsightOutput) (*in).DeepCopyInto(*out) } - if in.VMWareLogIntelligenceOutput != nil { - in, out := &in.VMWareLogIntelligenceOutput, &out.VMWareLogIntelligenceOutput - *out = new(output.VMWareLogIntelligenceOutput) + if in.VMwareLogIntelligenceOutputConfig != nil { + in, out := &in.VMwareLogIntelligenceOutputConfig, &out.VMwareLogIntelligenceOutputConfig + *out = new(output.VMwareLogIntelligenceOutputConfig) (*in).DeepCopyInto(*out) } } diff --git a/pkg/sdk/logging/model/output/vmware_log_intelligence.go b/pkg/sdk/logging/model/output/vmware_log_intelligence.go index 5c7f9b386..2cb85b625 100644 --- a/pkg/sdk/logging/model/output/vmware_log_intelligence.go +++ b/pkg/sdk/logging/model/output/vmware_log_intelligence.go @@ -21,7 +21,7 @@ import ( // +name:"VMware Log Intelligence" // +weight:"200" -type _hugoVMWareLogIntelligence interface{} //nolint:deadcode,unused +type _hugoVMwareLogIntelligence interface{} //nolint:deadcode,unused // +docName:"VMware Log Intelligence output plugin for Fluentd" /* @@ -31,34 +31,38 @@ For details, see [https://github.com/vmware/fluent-plugin-vmware-log-intelligenc spec: vmwarelogintelligence: endpoint_url: https://data.upgrade.symphony-dev.com/le-mans/v1/streams/ingestion-pipeline-stream - verify_ssl: true - http_compress: false - headers: - Content-Type: "application/json" - Authorization: "Bearer 12345" - structure: simple - buffer: - chunk_limit_records: 300 - flush_interval: 3s - retry_max_times: 3 + verify_ssl: true + http_compress: false + headers: + content_type: "application/json" + authorization: + valueFrom: + secretKeyRef: + name: vmware-log-intelligence-token + key: authorization + structure: simple + buffer: + chunk_limit_records: 300 + flush_interval: 3s + retry_max_times: 3 ``` */ -type _docVMWareLogIntelligence interface{} //nolint:deadcode,unused +type _docVMwareLogIntelligence interface{} //nolint:deadcode,unused // +name:"VMwareLogIntelligence" // +url:"https://github.com/vmware/fluent-plugin-vmware-log-intelligence/releases/tag/v2.0.8" // +version:"v2.0.8" // +description:"Send your logs to VMware Log Intelligence" // +status:"GA" -type _metaVMWareLogIntelligence interface{} //nolint:deadcode,unused +type _metaVMwareLogIntelligence interface{} //nolint:deadcode,unused // +kubebuilder:object:generate=true // +docName:"VMwareLogIntelligence" -type VMWareLogIntelligenceOutput struct { +type VMwareLogIntelligenceOutputConfig struct { // Log Intelligence endpoint to send logs to https://github.com/vmware/fluent-plugin-vmware-log-intelligence?tab=readme-ov-file#label-endpoint_url EndpointURL string `json:"endpoint_url"` // Verify SSL (default: true) https://github.com/vmware/fluent-plugin-vmware-log-intelligence?tab=readme-ov-file#label-verify_ssl - VerifySSL bool `json:"verify_ssl" plugin:"default:true"` + VerifySSL *bool `json:"verify_ssl" plugin:"default:true"` // Compress http request https://github.com/vmware/fluent-plugin-vmware-log-intelligence?tab=readme-ov-file#label-http_compress HTTPCompress *bool `json:"http_compress,omitempty"` // Required headers for sending logs to VMware Log Intelligence https://github.com/vmware/fluent-plugin-vmware-log-intelligence?tab=readme-ov-file#label-3Cheaders-3E @@ -102,7 +106,7 @@ func (l *LogIntelligenceHeadersOut) ToDirective(secretLoader secret.SecretLoader }, l, secretLoader) } -func (v *VMWareLogIntelligenceOutput) ToDirective(secretLoader secret.SecretLoader, id string) (types.Directive, error) { +func (v *VMwareLogIntelligenceOutputConfig) ToDirective(secretLoader secret.SecretLoader, id string) (types.Directive, error) { const pluginType = "vmware_log_intelligence" vmwli := &types.OutputPlugin{ PluginMeta: types.PluginMeta{ diff --git a/pkg/sdk/logging/model/output/vmware_log_intelligence_test.go b/pkg/sdk/logging/model/output/vmware_log_intelligence_test.go index fed31efc8..5dce4316f 100644 --- a/pkg/sdk/logging/model/output/vmware_log_intelligence_test.go +++ b/pkg/sdk/logging/model/output/vmware_log_intelligence_test.go @@ -24,7 +24,7 @@ import ( "github.com/stretchr/testify/require" ) -func TestVMWareLogIntelligenceOutputConfig(t *testing.T) { +func TestVMwareLogIntelligenceOutputConfig(t *testing.T) { CONFIG := []byte(` endpoint_url: https://data.upgrade.symphony-dev.com/le-mans/v1/streams/ingestion-pipeline-stream verify_ssl: true @@ -65,13 +65,13 @@ buffer: ` - s := &output.VMWareLogIntelligenceOutput{} + s := &output.VMwareLogIntelligenceOutputConfig{} require.NoError(t, yaml.Unmarshal(CONFIG, s)) test := render.NewOutputPluginTest(t, s) test.DiffResult(expected) } -func TestVMWareLogIntelligenceOutputConfigWithDefaultHeaderValues(t *testing.T) { +func TestVMwareLogIntelligenceOutputConfigWithDefaultHeaderValues(t *testing.T) { CONFIG := []byte(` endpoint_url: https://data.upgrade.symphony-dev.com/le-mans/v1/streams/ingestion-pipeline-stream verify_ssl: true @@ -85,7 +85,6 @@ buffer: retry_max_times: 3 `) - //TODO: test format block expected := ` @type vmware_log_intelligence @@ -111,13 +110,13 @@ buffer: ` - s := &output.VMWareLogIntelligenceOutput{} + s := &output.VMwareLogIntelligenceOutputConfig{} require.NoError(t, yaml.Unmarshal(CONFIG, s)) test := render.NewOutputPluginTest(t, s) test.DiffResult(expected) } -func TestVMWareLogIntelligenceOutputConfigWithFormat(t *testing.T) { +func TestVMwareLogIntelligenceOutputConfigWithFormat(t *testing.T) { CONFIG := []byte(` endpoint_url: https://data.upgrade.symphony-dev.com/le-mans/v1/streams/ingestion-pipeline-stream verify_ssl: true @@ -134,7 +133,6 @@ format: type: json `) - //TODO: test format block expected := ` @type vmware_log_intelligence @@ -162,7 +160,7 @@ format: ` - s := &output.VMWareLogIntelligenceOutput{} + s := &output.VMwareLogIntelligenceOutputConfig{} require.NoError(t, yaml.Unmarshal(CONFIG, s)) test := render.NewOutputPluginTest(t, s) test.DiffResult(expected) diff --git a/pkg/sdk/logging/model/output/zz_generated.deepcopy.go b/pkg/sdk/logging/model/output/zz_generated.deepcopy.go index 5d2abbd74..b8007c1cc 100644 --- a/pkg/sdk/logging/model/output/zz_generated.deepcopy.go +++ b/pkg/sdk/logging/model/output/zz_generated.deepcopy.go @@ -1740,37 +1740,6 @@ func (in *SyslogOutputConfig) DeepCopy() *SyslogOutputConfig { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *VMWareLogIntelligenceOutput) DeepCopyInto(out *VMWareLogIntelligenceOutput) { - *out = *in - if in.HTTPCompress != nil { - in, out := &in.HTTPCompress, &out.HTTPCompress - *out = new(bool) - **out = **in - } - in.Headers.DeepCopyInto(&out.Headers) - if in.Buffer != nil { - in, out := &in.Buffer, &out.Buffer - *out = new(Buffer) - (*in).DeepCopyInto(*out) - } - if in.Format != nil { - in, out := &in.Format, &out.Format - *out = new(Format) - (*in).DeepCopyInto(*out) - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VMWareLogIntelligenceOutput. -func (in *VMWareLogIntelligenceOutput) DeepCopy() *VMWareLogIntelligenceOutput { - if in == nil { - return nil - } - out := new(VMWareLogIntelligenceOutput) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *VMwareLogInsightOutput) DeepCopyInto(out *VMwareLogInsightOutput) { *out = *in @@ -1839,3 +1808,39 @@ func (in *VMwareLogInsightOutput) DeepCopy() *VMwareLogInsightOutput { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VMwareLogIntelligenceOutputConfig) DeepCopyInto(out *VMwareLogIntelligenceOutputConfig) { + *out = *in + if in.VerifySSL != nil { + in, out := &in.VerifySSL, &out.VerifySSL + *out = new(bool) + **out = **in + } + if in.HTTPCompress != nil { + in, out := &in.HTTPCompress, &out.HTTPCompress + *out = new(bool) + **out = **in + } + in.Headers.DeepCopyInto(&out.Headers) + if in.Buffer != nil { + in, out := &in.Buffer, &out.Buffer + *out = new(Buffer) + (*in).DeepCopyInto(*out) + } + if in.Format != nil { + in, out := &in.Format, &out.Format + *out = new(Format) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VMwareLogIntelligenceOutputConfig. +func (in *VMwareLogIntelligenceOutputConfig) DeepCopy() *VMwareLogIntelligenceOutputConfig { + if in == nil { + return nil + } + out := new(VMwareLogIntelligenceOutputConfig) + in.DeepCopyInto(out) + return out +}