From 9e0f0c51b9722852dfa79f3b30d361a1e15067c8 Mon Sep 17 00:00:00 2001 From: Jonathan Lange Date: Thu, 30 Jun 2016 17:01:58 +0100 Subject: [PATCH] Configuration type for AWS collector --- app/multitenant/aws_collector.go | 32 ++++++++++++++++++-------------- prog/app.go | 10 ++++++++-- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/app/multitenant/aws_collector.go b/app/multitenant/aws_collector.go index ad0e36e2d..477e2261b 100644 --- a/app/multitenant/aws_collector.go +++ b/app/multitenant/aws_collector.go @@ -94,6 +94,16 @@ type ReportStore interface { FetchReports([]string) (map[string]report.Report, []string, error) } +// AWSCollectorConfig has everything we need to make an AWS collector. +type AWSCollectorConfig struct { + UserIDer UserIDer + DynamoDBConfig *aws.Config + DynamoTable string + S3Store *S3Store + NatsHost string + MemcacheClient *MemcacheClient +} + type awsCollector struct { userIDer UserIDer db *dynamodb.DynamoDB @@ -124,30 +134,24 @@ type watchKey struct { // NewAWSCollector the elastic reaper of souls // https://github.com/aws/aws-sdk-go/wiki/common-examples -func NewAWSCollector( - userIDer UserIDer, - dynamoDBConfig *aws.Config, tableName string, - s3Store *S3Store, - natsHost string, - memcacheClient *MemcacheClient, -) (AWSCollector, error) { +func NewAWSCollector(config AWSCollectorConfig) (AWSCollector, error) { var nc *nats.Conn - if natsHost != "" { + if config.NatsHost != "" { var err error - nc, err = nats.Connect(natsHost) + nc, err = nats.Connect(config.NatsHost) if err != nil { return nil, err } } return &awsCollector{ - db: dynamodb.New(session.New(dynamoDBConfig)), - s3: s3Store, - userIDer: userIDer, - tableName: tableName, + db: dynamodb.New(session.New(config.DynamoDBConfig)), + s3: config.S3Store, + userIDer: config.UserIDer, + tableName: config.DynamoTable, merger: app.NewSmartMerger(), inProcess: newInProcessStore(reportCacheSize, reportCacheExpiration), - memcache: memcacheClient, + memcache: config.MemcacheClient, nats: nc, waiters: map[watchKey]*nats.Subscription{}, }, nil diff --git a/prog/app.go b/prog/app.go index 1ca9cfb55..1fd1e008b 100644 --- a/prog/app.go +++ b/prog/app.go @@ -126,8 +126,14 @@ func collectorFactory(userIDer multitenant.UserIDer, collectorURL, s3URL, natsHo } } awsCollector, err := multitenant.NewAWSCollector( - userIDer, dynamoDBConfig, tableName, &s3Store, natsHostname, - memcacheClient, + multitenant.AWSCollectorConfig{ + UserIDer: userIDer, + DynamoDBConfig: dynamoDBConfig, + DynamoTable: tableName, + S3Store: &s3Store, + NatsHost: natsHostname, + MemcacheClient: memcacheClient, + }, ) if err != nil { return nil, err