Skip to content

Commit

Permalink
Issue influxdata#3911: Expose telegraf agent version in internal module
Browse files Browse the repository at this point in the history
  • Loading branch information
Kevin Conaway authored and Kevin Conaway committed Oct 8, 2018
1 parent 3579d1d commit 35f6127
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
5 changes: 5 additions & 0 deletions cmd/telegraf/telegraf.go
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,11 @@ func main() {
return
}

// Configure version
if err := internal.SetVersion(formatFullVersion()); err != nil {
log.Println("Telegraf version already configured to: " + internal.Version())
}

if runtime.GOOS == "windows" && !(*fRunAsConsole) {
svcConfig := &service.Config{
Name: *fServiceName,
Expand Down
19 changes: 19 additions & 0 deletions internal/internal.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,32 @@ var (
TimeoutErr = errors.New("Command timed out.")

NotImplementedError = errors.New("not implemented yet")

VersionAlreadySetError = errors.New("version has already been set")
)

// Set via the main module
var version string

// Duration just wraps time.Duration
type Duration struct {
Duration time.Duration
}

// SetVersion sets the telegraf agent version
func SetVersion(v string) error {
if version != "" {
return VersionAlreadySetError
}
version = v
return nil
}

// Version returns the telegraf agent version
func Version() string {
return version
}

// UnmarshalTOML parses the duration from the TOML config file
func (d *Duration) UnmarshalTOML(b []byte) error {
var err error
Expand Down
12 changes: 12 additions & 0 deletions internal/internal_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,3 +182,15 @@ func TestCompressWithGzip(t *testing.T) {

assert.Equal(t, testData, string(output))
}

func TestVersionAlreadySet(t *testing.T) {
err := SetVersion("foo")
assert.Nil(t, err)

err = SetVersion("bar")

assert.NotNil(t, err)
assert.IsType(t, VersionAlreadySetError, err)

assert.Equal(t, "foo", Version())
}

0 comments on commit 35f6127

Please sign in to comment.