Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
32
migrations/inputs_io/migration.go
Normal file
32
migrations/inputs_io/migration.go
Normal file
|
@ -0,0 +1,32 @@
|
|||
package inputs_io
|
||||
|
||||
import (
|
||||
"github.com/influxdata/toml"
|
||||
"github.com/influxdata/toml/ast"
|
||||
|
||||
"github.com/influxdata/telegraf/migrations"
|
||||
)
|
||||
|
||||
// Migration function
|
||||
func migrate(tbl *ast.Table) ([]byte, string, error) {
|
||||
// Load the plugin config and directly encode it again as we do not want to
|
||||
// modify anything beyond the name.
|
||||
|
||||
// Decode the old data structure
|
||||
var plugin interface{}
|
||||
if err := toml.UnmarshalTable(tbl, &plugin); err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
|
||||
// Create the corresponding metric configurations
|
||||
cfg := migrations.CreateTOMLStruct("inputs", "diskio")
|
||||
cfg.Add("inputs", "diskio", plugin)
|
||||
|
||||
output, err := toml.Marshal(cfg)
|
||||
return output, "", err
|
||||
}
|
||||
|
||||
// Register the migration function for the plugin type
|
||||
func init() {
|
||||
migrations.AddPluginMigration("inputs.io", migrate)
|
||||
}
|
61
migrations/inputs_io/migration_test.go
Normal file
61
migrations/inputs_io/migration_test.go
Normal file
|
@ -0,0 +1,61 @@
|
|||
package inputs_io_test
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/influxdata/telegraf/config"
|
||||
_ "github.com/influxdata/telegraf/migrations/inputs_io" // register migration
|
||||
_ "github.com/influxdata/telegraf/plugins/inputs/diskio" // register plugin
|
||||
)
|
||||
|
||||
func TestCases(t *testing.T) {
|
||||
// Get all directories in testdata
|
||||
folders, err := os.ReadDir("testcases")
|
||||
require.NoError(t, err)
|
||||
|
||||
for _, f := range folders {
|
||||
// Only handle folders
|
||||
if !f.IsDir() {
|
||||
continue
|
||||
}
|
||||
|
||||
t.Run(f.Name(), func(t *testing.T) {
|
||||
testcasePath := filepath.Join("testcases", f.Name())
|
||||
inputFile := filepath.Join(testcasePath, "telegraf.conf")
|
||||
expectedFile := filepath.Join(testcasePath, "expected.conf")
|
||||
|
||||
// Read the expected output
|
||||
expected := config.NewConfig()
|
||||
require.NoError(t, expected.LoadConfig(expectedFile))
|
||||
require.NotEmpty(t, expected.Inputs)
|
||||
|
||||
// Read the input data
|
||||
input, remote, err := config.LoadConfigFile(inputFile)
|
||||
require.NoError(t, err)
|
||||
require.False(t, remote)
|
||||
require.NotEmpty(t, input)
|
||||
|
||||
// Migrate
|
||||
output, n, err := config.ApplyMigrations(input)
|
||||
require.NoError(t, err)
|
||||
require.NotEmpty(t, output)
|
||||
require.GreaterOrEqual(t, n, uint64(1))
|
||||
actual := config.NewConfig()
|
||||
require.NoError(t, actual.LoadConfigData(output, config.EmptySourcePath))
|
||||
|
||||
// Test the output
|
||||
require.Len(t, actual.Inputs, len(expected.Inputs))
|
||||
actualIDs := make([]string, 0, len(expected.Inputs))
|
||||
expectedIDs := make([]string, 0, len(expected.Inputs))
|
||||
for i := range actual.Inputs {
|
||||
actualIDs = append(actualIDs, actual.Inputs[i].ID())
|
||||
expectedIDs = append(expectedIDs, expected.Inputs[i].ID())
|
||||
}
|
||||
require.ElementsMatch(t, expectedIDs, actualIDs, string(output))
|
||||
})
|
||||
}
|
||||
}
|
29
migrations/inputs_io/testcases/empty/expected.conf
Normal file
29
migrations/inputs_io/testcases/empty/expected.conf
Normal file
|
@ -0,0 +1,29 @@
|
|||
# Read metrics about disk IO by device
|
||||
[[inputs.diskio]]
|
||||
## By default, telegraf will gather stats for all devices including
|
||||
## disk partitions.
|
||||
## Setting devices will restrict the stats to the specified devices.
|
||||
## NOTE: Globbing expressions (e.g. asterix) are not supported for
|
||||
## disk synonyms like '/dev/disk/by-id'.
|
||||
# devices = ["sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"]
|
||||
## Uncomment the following line if you need disk serial numbers.
|
||||
# skip_serial_number = false
|
||||
#
|
||||
## On systems which support it, device metadata can be added in the form of
|
||||
## tags.
|
||||
## Currently only Linux is supported via udev properties. You can view
|
||||
## available properties for a device by running:
|
||||
## 'udevadm info -q property -n /dev/sda'
|
||||
## Note: Most, but not all, udev properties can be accessed this way. Properties
|
||||
## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH.
|
||||
# device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"]
|
||||
#
|
||||
## Using the same metadata source as device_tags, you can also customize the
|
||||
## name of the device via templates.
|
||||
## The 'name_templates' parameter is a list of templates to try and apply to
|
||||
## the device. The template may contain variables in the form of '$PROPERTY' or
|
||||
## '${PROPERTY}'. The first template which does not contain any variables not
|
||||
## present for the device is used as the device name tag.
|
||||
## The typical use case is for LVM volumes, to get the VG/LV name instead of
|
||||
## the near-meaningless DM-0 name.
|
||||
# name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"]
|
29
migrations/inputs_io/testcases/empty/telegraf.conf
Normal file
29
migrations/inputs_io/testcases/empty/telegraf.conf
Normal file
|
@ -0,0 +1,29 @@
|
|||
# Read metrics about disk IO by device
|
||||
[[inputs.io]]
|
||||
## By default, telegraf will gather stats for all devices including
|
||||
## disk partitions.
|
||||
## Setting devices will restrict the stats to the specified devices.
|
||||
## NOTE: Globbing expressions (e.g. asterix) are not supported for
|
||||
## disk synonyms like '/dev/disk/by-id'.
|
||||
# devices = ["sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"]
|
||||
## Uncomment the following line if you need disk serial numbers.
|
||||
# skip_serial_number = false
|
||||
#
|
||||
## On systems which support it, device metadata can be added in the form of
|
||||
## tags.
|
||||
## Currently only Linux is supported via udev properties. You can view
|
||||
## available properties for a device by running:
|
||||
## 'udevadm info -q property -n /dev/sda'
|
||||
## Note: Most, but not all, udev properties can be accessed this way. Properties
|
||||
## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH.
|
||||
# device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"]
|
||||
#
|
||||
## Using the same metadata source as device_tags, you can also customize the
|
||||
## name of the device via templates.
|
||||
## The 'name_templates' parameter is a list of templates to try and apply to
|
||||
## the device. The template may contain variables in the form of '$PROPERTY' or
|
||||
## '${PROPERTY}'. The first template which does not contain any variables not
|
||||
## present for the device is used as the device name tag.
|
||||
## The typical use case is for LVM volumes, to get the VG/LV name instead of
|
||||
## the near-meaningless DM-0 name.
|
||||
# name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"]
|
10
migrations/inputs_io/testcases/full/expected.conf
Normal file
10
migrations/inputs_io/testcases/full/expected.conf
Normal file
|
@ -0,0 +1,10 @@
|
|||
# Read metrics about disk IO by device
|
||||
[[inputs.diskio]]
|
||||
name_override = "foo"
|
||||
devices = ["nvme0n1", "sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"]
|
||||
skip_serial_number = true
|
||||
device_tags = ["ID_FS_TYPE"]
|
||||
name_templates = ["$ID_FS_LABEL", "$DM_VG_NAME/$DM_LV_NAME", "test"]
|
||||
|
||||
[[inputs.diskio.tags]]
|
||||
should = "work"
|
34
migrations/inputs_io/testcases/full/telegraf.conf
Normal file
34
migrations/inputs_io/testcases/full/telegraf.conf
Normal file
|
@ -0,0 +1,34 @@
|
|||
# Read metrics about disk IO by device
|
||||
[[inputs.io]]
|
||||
name_override = "foo"
|
||||
|
||||
# By default, telegraf will gather stats for all devices including
|
||||
# disk partitions.
|
||||
# Setting devices will restrict the stats to the specified devices.
|
||||
# NOTE: Globbing expressions (e.g. asterix) are not supported for
|
||||
# disk synonyms like '/dev/disk/by-id'.
|
||||
devices = ["nvme0n1", "sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"]
|
||||
# Uncomment the following line if you need disk serial numbers.
|
||||
skip_serial_number = true
|
||||
|
||||
# On systems which support it, device metadata can be added in the form of
|
||||
# tags.
|
||||
# Currently only Linux is supported via udev properties. You can view
|
||||
# available properties for a device by running:
|
||||
# 'udevadm info -q property -n /dev/sda'
|
||||
# Note: Most, but not all, udev properties can be accessed this way. Properties
|
||||
# that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH.
|
||||
device_tags = ["ID_FS_TYPE"]
|
||||
|
||||
# Using the same metadata source as device_tags, you can also customize the
|
||||
# name of the device via templates.
|
||||
# The 'name_templates' parameter is a list of templates to try and apply to
|
||||
# the device. The template may contain variables in the form of '$PROPERTY' or
|
||||
# '${PROPERTY}'. The first template which does not contain any variables not
|
||||
# present for the device is used as the device name tag.
|
||||
# The typical use case is for LVM volumes, to get the VG/LV name instead of
|
||||
# the near-meaningless DM-0 name.
|
||||
name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME", "test"]
|
||||
|
||||
[[inputs.io.tags]]
|
||||
should = "work"
|
Loading…
Add table
Add a link
Reference in a new issue