mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-05 03:01:11 +00:00
ECS reporter: Use persistent client objects across reports
Not only does this allow us to re-use connections, but vitally it allows us to make use of the new task and service caching within the client object.
This commit is contained in:
@@ -78,10 +78,17 @@ func getLabelInfo(rpt report.Report) map[string]map[string]*taskLabelInfo {
|
||||
|
||||
// Reporter implements Tagger, Reporter
|
||||
type Reporter struct {
|
||||
clients map[string]ecsClient
|
||||
}
|
||||
|
||||
func New() Reporter {
|
||||
return Reporter{
|
||||
clients: map[string]ecsClient{},
|
||||
}
|
||||
}
|
||||
|
||||
// Tag needed for Tagger
|
||||
func (Reporter) Tag(rpt report.Report) (report.Report, error) {
|
||||
func (r Reporter) Tag(rpt report.Report) (report.Report, error) {
|
||||
rpt = rpt.Copy()
|
||||
|
||||
clusterMap := getLabelInfo(rpt)
|
||||
@@ -89,9 +96,12 @@ func (Reporter) Tag(rpt report.Report) (report.Report, error) {
|
||||
for cluster, taskMap := range clusterMap {
|
||||
log.Debugf("Fetching ECS info for cluster %v with %v tasks", cluster, len(taskMap))
|
||||
|
||||
client, err := newClient(cluster)
|
||||
if err != nil {
|
||||
return rpt, err
|
||||
client, ok := r.clients[cluster]
|
||||
if !ok {
|
||||
client, err := newClient(cluster)
|
||||
if err != nil {
|
||||
return rpt, err
|
||||
}
|
||||
}
|
||||
|
||||
taskArns := make([]string, 0, len(taskMap))
|
||||
|
||||
@@ -206,7 +206,7 @@ func probeMain(flags probeFlags, targets []appclient.Target) {
|
||||
}
|
||||
|
||||
if flags.ecsEnabled {
|
||||
reporter := awsecs.Reporter{}
|
||||
reporter := awsecs.New()
|
||||
p.AddReporter(reporter)
|
||||
p.AddTagger(reporter)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user