Skip to content

Commit

Permalink
Merge pull request #566 from lufia/migrate-client
Browse files Browse the repository at this point in the history
migrate to mackerel.Client
  • Loading branch information
lufia committed Jun 12, 2019
2 parents abd96be + edde7d6 commit a8bf455
Show file tree
Hide file tree
Showing 8 changed files with 93 additions and 810 deletions.
27 changes: 13 additions & 14 deletions command/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func prepareHost(conf *config.Config, ameta *AgentMeta, api *mackerel.API) (*mkr
logger.Warningf("%s", msg)
}
}
if apiErr, ok := err.(*mackerel.Error); ok && apiErr.IsClientError() {
if mackerel.IsClientError(err) {
// don't retry when client error (APIKey error etc.) occurred
return nil
}
Expand Down Expand Up @@ -319,7 +319,7 @@ func loop(app *App, termCh chan struct{}) error {
for _, v := range origPostValues {
postValues = append(postValues, v.values...)
}
err := app.API.PostMetricValues(postValues)
err := app.API.PostHostMetricValues(postValues)
if err != nil {
logger.Warningf("Failed to post metrics value (will retry): %s", err.Error())
if lState != loopStateTerminating {
Expand Down Expand Up @@ -541,7 +541,7 @@ func reportCheckMonitors(app *App, reports []*checks.Report) {

logger.Errorf("ReportCheckMonitors: %s", err)

if apiErr, ok := err.(*mackerel.Error); ok && apiErr.IsClientError() {
if mackerel.IsClientError(err) {
break
}

Expand All @@ -553,10 +553,10 @@ func reportCheckMonitors(app *App, reports []*checks.Report) {
}

// collectHostParam collects host specs (correspond to "name", "meta", "interfaces" and "customIdentifier" fields in API v0)
func collectHostParam(conf *config.Config, ameta *AgentMeta) (mkr.CreateHostParam, error) {
func collectHostParam(conf *config.Config, ameta *AgentMeta) (*mkr.CreateHostParam, error) {
hostname, err := os.Hostname()
if err != nil {
return mkr.CreateHostParam{}, fmt.Errorf("failed to obtain hostname: %s", err.Error())
return nil, fmt.Errorf("failed to obtain hostname: %s", err.Error())
}

specGens := specGenerators()
Expand All @@ -576,7 +576,7 @@ func collectHostParam(conf *config.Config, ameta *AgentMeta) (mkr.CreateHostPara

interfaces, err := interfaceGenerator().Generate()
if err != nil {
return mkr.CreateHostParam{}, fmt.Errorf("failed to collect interfaces: %s", err.Error())
return nil, fmt.Errorf("failed to collect interfaces: %s", err.Error())
}

meta.AgentVersion = ameta.Version
Expand All @@ -592,7 +592,7 @@ func collectHostParam(conf *config.Config, ameta *AgentMeta) (mkr.CreateHostPara
})
}

return mkr.CreateHostParam{
return &mkr.CreateHostParam{
Name: hostname,
Meta: meta,
Interfaces: interfaces,
Expand All @@ -613,8 +613,7 @@ func (app *App) UpdateHostSpecs() {
return
}

err = app.API.UpdateHost(app.Host.ID, mkr.UpdateHostParam(hostParam))

_, err = app.API.UpdateHost(app.Host.ID, (*mkr.UpdateHostParam)(hostParam))
if err != nil {
logger.Errorf("Error while updating host specs: %s", err)
} else {
Expand All @@ -632,10 +631,10 @@ func NewMackerelClient(apibase, apikey, ver, rev string, verbose bool) (*mackere
if err != nil {
return nil, err
}
api.UA = buildUA(ver, rev)
api.DefaultHeaders = http.Header{}
api.DefaultHeaders.Add("X-Agent-Version", ver)
api.DefaultHeaders.Add("X-Revision", rev)
api.UserAgent = buildUA(ver, rev)
api.AdditionalHeaders = make(http.Header)
api.AdditionalHeaders.Add("X-Agent-Version", ver)
api.AdditionalHeaders.Add("X-Revision", rev)
return api, nil
}

Expand Down Expand Up @@ -696,7 +695,7 @@ func runOncePayload(conf *config.Config, ameta *AgentMeta) ([]*mkr.GraphDefsPara
ag := NewAgent(conf)
graphdefs := ag.CollectGraphDefsOfPlugins()
metrics := ag.CollectMetrics(time.Now())
return graphdefs, &hostParam, metrics, nil
return graphdefs, hostParam, metrics, nil
}

// NewAgent creates a new instance of agent.Agent from its configuration conf.
Expand Down
9 changes: 6 additions & 3 deletions command/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import (

"github.com/mackerelio/golib/pluginutil"
"github.com/mackerelio/mackerel-agent/config"
"github.com/mackerelio/mackerel-agent/mackerel"
"github.com/mackerelio/mackerel-agent/metadata"
mkr "github.com/mackerelio/mackerel-client-go"
)

func metadataGenerators(conf *config.Config) []*metadata.Generator {
Expand Down Expand Up @@ -66,10 +68,11 @@ func runMetadataLoop(app *App, termMetadataCh <-chan struct{}, quit <-chan struc
}

for _, result := range results {
resp, err := app.API.PutMetadata(app.Host.ID, result.namespace, result.metadata)
err := app.API.PutHostMetaData(app.Host.ID, result.namespace, result.metadata)
// retry on 5XX errors
if resp != nil && resp.StatusCode >= 500 {
logger.Errorf("put metadata %q failed: status %s", result.namespace, resp.Status)
if mackerel.IsServerError(err) {
e := err.(*mkr.APIError)
logger.Errorf("put metadata %q failed: status %s", result.namespace, e.StatusCode)
go func() {
resultCh <- result
}()
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ require (
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/mackerelio/go-osstat v0.0.0-20190412014440-b90c0b34edef
github.com/mackerelio/golib v0.0.0-20190411032134-c87047ca454e
github.com/mackerelio/mackerel-client-go v0.3.0
github.com/mackerelio/mackerel-client-go v0.5.0
github.com/mattn/go-encoding v0.0.2
github.com/motemen/go-cli v0.0.0-20180105012931-9961a876eb5f
github.com/pkg/errors v0.8.1
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ github.com/mackerelio/golib v0.0.0-20190411032134-c87047ca454e h1:MwWzFCq2tENDy2
github.com/mackerelio/golib v0.0.0-20190411032134-c87047ca454e/go.mod h1:kbqYA8VcFqcMt07v+GPSZQwqtwc7Wr0V0vzxUNMrk7E=
github.com/mackerelio/mackerel-client-go v0.3.0 h1:4SFqVdKIWz5IiL/LY/SosoZJ73zDpgaX2rw0/JW6mLo=
github.com/mackerelio/mackerel-client-go v0.3.0/go.mod h1:/FVnUK7nsg/MEBpIVOCZLYzdIwY5mg/SyAlXDnxVcAI=
github.com/mackerelio/mackerel-client-go v0.5.0 h1:j+H/RKELHLAHbXOtc+R04v9DYSFjzPJs+7RCO/E7G1g=
github.com/mackerelio/mackerel-client-go v0.5.0/go.mod h1:/FVnUK7nsg/MEBpIVOCZLYzdIwY5mg/SyAlXDnxVcAI=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-encoding v0.0.2 h1:OC1L+QXLJge9n7yIE3R5Os/UNasUeFvK3Sa4NjbDi6c=
github.com/mattn/go-encoding v0.0.2/go.mod h1:WUNsdPQLK4JYRzkn8IAdmYKFYGGJ4/9YPxdPoMumPgY=
Expand Down
Loading

0 comments on commit a8bf455

Please sign in to comment.