feat(cli): List available parsers and serializers (#15426)

Co-authored-by: Joshua Powers <powersj@fastmail.com>
This commit is contained in:
Lars Stegman 2024-05-31 10:32:35 +02:00 committed by GitHub
parent b516ead921
commit 719e3cbb3b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 56 additions and 2 deletions

View File

@ -10,8 +10,10 @@ import (
"github.com/influxdata/telegraf/plugins/aggregators" "github.com/influxdata/telegraf/plugins/aggregators"
"github.com/influxdata/telegraf/plugins/inputs" "github.com/influxdata/telegraf/plugins/inputs"
"github.com/influxdata/telegraf/plugins/outputs" "github.com/influxdata/telegraf/plugins/outputs"
"github.com/influxdata/telegraf/plugins/parsers"
"github.com/influxdata/telegraf/plugins/processors" "github.com/influxdata/telegraf/plugins/processors"
"github.com/influxdata/telegraf/plugins/secretstores" "github.com/influxdata/telegraf/plugins/secretstores"
"github.com/influxdata/telegraf/plugins/serializers"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
) )
@ -42,12 +44,16 @@ func getPluginCommands(outputBuffer io.Writer) []*cli.Command {
outputBuffer.Write(pluginNames(processors.Deprecations, "processors")) outputBuffer.Write(pluginNames(processors.Deprecations, "processors"))
outputBuffer.Write(pluginNames(aggregators.Deprecations, "aggregators")) outputBuffer.Write(pluginNames(aggregators.Deprecations, "aggregators"))
outputBuffer.Write(pluginNames(secretstores.Deprecations, "secretstores")) outputBuffer.Write(pluginNames(secretstores.Deprecations, "secretstores"))
outputBuffer.Write(pluginNames(parsers.Deprecations, "parsers"))
outputBuffer.Write(pluginNames(serializers.Deprecations, "serializers"))
} else { } else {
outputBuffer.Write(pluginNames(inputs.Inputs, "inputs")) outputBuffer.Write(pluginNames(inputs.Inputs, "inputs"))
outputBuffer.Write(pluginNames(outputs.Outputs, "outputs")) outputBuffer.Write(pluginNames(outputs.Outputs, "outputs"))
outputBuffer.Write(pluginNames(processors.Processors, "processors")) outputBuffer.Write(pluginNames(processors.Processors, "processors"))
outputBuffer.Write(pluginNames(aggregators.Aggregators, "aggregators")) outputBuffer.Write(pluginNames(aggregators.Aggregators, "aggregators"))
outputBuffer.Write(pluginNames(secretstores.SecretStores, "secretstores")) outputBuffer.Write(pluginNames(secretstores.SecretStores, "secretstores"))
outputBuffer.Write(pluginNames(parsers.Parsers, "parsers"))
outputBuffer.Write(pluginNames(serializers.Serializers, "serializers"))
} }
return nil return nil
@ -143,6 +149,42 @@ func getPluginCommands(outputBuffer io.Writer) []*cli.Command {
return nil return nil
}, },
}, },
{
Name: "parsers",
Usage: "Print available parser plugins",
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "deprecated",
Usage: "print only deprecated plugins",
},
},
Action: func(cCtx *cli.Context) error {
if cCtx.Bool("deprecated") {
outputBuffer.Write(pluginNames(parsers.Deprecations, "parsers"))
} else {
outputBuffer.Write(pluginNames(parsers.Parsers, "parsers"))
}
return nil
},
},
{
Name: "serializers",
Usage: "Print available serializer plugins",
Flags: []cli.Flag{
&cli.BoolFlag{
Name: "deprecated",
Usage: "print only deprecated plugins",
},
},
Action: func(cCtx *cli.Context) error {
if cCtx.Bool("deprecated") {
outputBuffer.Write(pluginNames(serializers.Deprecations, "serializers"))
} else {
outputBuffer.Write(pluginNames(serializers.Serializers, "serializers"))
}
return nil
},
},
}, },
}, },
} }

View File

@ -4,8 +4,8 @@ You can build customized versions of Telegraf with a specific plugin set using
the [custom builder](/tools/custom_builder) tool or the [custom builder](/tools/custom_builder) tool or
[build-tags](https://pkg.go.dev/cmd/go#hdr-Build_constraints). [build-tags](https://pkg.go.dev/cmd/go#hdr-Build_constraints).
For build tags, the plugins can be selected either category-wise, i.e. For build tags, the plugins can be selected either category-wise, i.e.
`inputs`, `outputs`,`processors`, `aggregators` and `parsers` or `inputs`, `outputs`,`processors`, `aggregators`, `parsers`, `secretstores`
individually, e.g. `inputs.modbus` or `outputs.influxdb`. and `serializers` or individually, e.g. `inputs.modbus` or `outputs.influxdb`.
Usually the build tags correspond to the plugin names used in the Telegraf Usually the build tags correspond to the plugin names used in the Telegraf
configuration. To be sure, check the files in the corresponding configuration. To be sure, check the files in the corresponding

View File

@ -0,0 +1,6 @@
package parsers
import "github.com/influxdata/telegraf"
// Deprecations lists the deprecated plugins
var Deprecations = map[string]telegraf.DeprecationInfo{}

View File

@ -0,0 +1,6 @@
package serializers
import "github.com/influxdata/telegraf"
// Deprecations lists the deprecated plugins
var Deprecations = map[string]telegraf.DeprecationInfo{}