Skip to content

Commit

Permalink
feat(pkger): extend SummaryTelegrafConfig with its env references
Browse files Browse the repository at this point in the history
references: #18407
  • Loading branch information
jsteenb2 committed Jun 11, 2020
1 parent b4e1ea7 commit 5d8538d
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 5 deletions.
2 changes: 2 additions & 0 deletions http/swagger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8120,6 +8120,8 @@ components:
type: array
items:
$ref: "#/components/schemas/PkgSummaryLabel"
envReferences:
$ref: "#/components/schemas/PkgEnvReferences"
variables:
type: array
items:
Expand Down
8 changes: 5 additions & 3 deletions pkger/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -649,9 +649,11 @@ type SummaryTask struct {

// SummaryTelegraf provides a summary of a pkg telegraf config.
type SummaryTelegraf struct {
PkgName string `json:"pkgName"`
TelegrafConfig influxdb.TelegrafConfig `json:"telegrafConfig"`
LabelAssociations []SummaryLabel `json:"labelAssociations"`
PkgName string `json:"pkgName"`
TelegrafConfig influxdb.TelegrafConfig `json:"telegrafConfig"`

EnvReferences []SummaryReference `json:"envReferences"`
LabelAssociations []SummaryLabel `json:"labelAssociations"`
}

// SummaryVariable provides a summary of a pkg variable.
Expand Down
1 change: 1 addition & 0 deletions pkger/parser_models.go
Original file line number Diff line number Diff line change
Expand Up @@ -1851,6 +1851,7 @@ func (t *telegraf) summarize() SummaryTelegraf {
PkgName: t.PkgName(),
TelegrafConfig: cfg,
LabelAssociations: toSummaryLabels(t.labels...),
EnvReferences: summarizeCommonReferences(t.identity, t.labels),
}
}

Expand Down
25 changes: 23 additions & 2 deletions pkger/parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3342,8 +3342,8 @@ spec:
})
})

t.Run("pkg with telegraf and label associations", func(t *testing.T) {
t.Run("with valid fields", func(t *testing.T) {
t.Run("pkg with telegraf config", func(t *testing.T) {
t.Run("and associated labels should be successful", func(t *testing.T) {
testfileRunner(t, "testdata/telegraf", func(t *testing.T, pkg *Pkg) {
sum := pkg.Summary()
require.Len(t, sum.TelegrafConfigs, 2)
Expand Down Expand Up @@ -3376,6 +3376,27 @@ spec:
})
})

t.Run("with env refs should be valid", func(t *testing.T) {
testfileRunner(t, "testdata/telegraf_ref.yml", func(t *testing.T, pkg *Pkg) {
actual := pkg.Summary().TelegrafConfigs
require.Len(t, actual, 1)

expectedEnvRefs := []SummaryReference{
{
Field: "metadata.name",
EnvRefKey: "meta-name",
DefaultValue: "env-meta-name",
},
{
Field: "spec.name",
EnvRefKey: "spec-name",
DefaultValue: "env-spec-name",
},
}
assert.Equal(t, expectedEnvRefs, actual[0].EnvReferences)
})
})

t.Run("handles bad config", func(t *testing.T) {
tests := []testPkgResourceError{
{
Expand Down
58 changes: 58 additions & 0 deletions pkger/testdata/telegraf_ref.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
apiVersion: influxdata.com/v2alpha1
kind: Telegraf
metadata:
name:
envRef:
key: meta-name
spec:
name:
envRef:
key: spec-name
config: |
# Configuration for telegraf agent
[agent]
## Default data collection interval for all inputs
interval = "10s"
## Rounds collection interval to 'interval'
## ie, if interval="10s" then always collect on :00, :10, :20, etc.
round_interval = true
## Telegraf will send metrics to outputs in batches of at most
## metric_batch_size metrics.
## This controls the size of writes that Telegraf sends to output plugins.
metric_batch_size = 1000
## For failed writes, telegraf will cache metric_buffer_limit metrics for each
## output, and will flush this buffer on a successful write. Oldest metrics
## are dropped first when this buffer fills.
## This buffer only fills when writes fail to output plugin(s).
metric_buffer_limit = 10000
## Collection jitter is used to jitter the collection by a random amount.
## Each plugin will sleep for a random time within jitter before collecting.
## This can be used to avoid many plugins querying things like sysfs at the
## same time, which can have a measurable effect on the system.
collection_jitter = "0s"
## Default flushing interval for all outputs. Maximum flush_interval will be
## flush_interval + flush_jitter
flush_interval = "10s"
## Jitter the flush interval by a random amount. This is primarily to avoid
## large write spikes for users running a large number of telegraf instances.
## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
flush_jitter = "0s"
## By default or when set to "0s", precision will be set to the same
## timestamp order as the collection interval, with the maximum being 1s.
## ie, when interval = "10s", precision will be "1s"
## when interval = "250ms", precision will be "1ms"
## Precision will NOT be used for service inputs. It is up to each individual
## service input to set the timestamp at the appropriate precision.
## Valid time units are "ns", "us" (or "µs"), "ms", "s".
precision = ""
debug = false
quiet = false
logfile = ""
hostname = ""
omit_hostname = false

0 comments on commit 5d8538d

Please sign in to comment.