This repository has been archived by the owner on Nov 7, 2019. It is now read-only.
/
base.go
75 lines (70 loc) · 2.7 KB
/
base.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package base
import (
"context"
"github.com/awslabs/aws-service-operator/pkg/config"
"github.com/awslabs/aws-service-operator/pkg/operators/cloudformationtemplate"
"github.com/awslabs/aws-service-operator/pkg/operators/dynamodb"
"github.com/awslabs/aws-service-operator/pkg/operators/ecrrepository"
"github.com/awslabs/aws-service-operator/pkg/operators/elasticache"
"github.com/awslabs/aws-service-operator/pkg/operators/s3bucket"
"github.com/awslabs/aws-service-operator/pkg/operators/snssubscription"
"github.com/awslabs/aws-service-operator/pkg/operators/snstopic"
"github.com/awslabs/aws-service-operator/pkg/operators/sqsqueue"
"github.com/awslabs/aws-service-operator/pkg/queuemanager"
)
type base struct {
config config.Config
queueManager *queuemanager.QueueManager
cloudformationtemplate *cloudformationtemplate.Operator
dynamodb *dynamodb.Operator
ecrrepository *ecrrepository.Operator
elasticache *elasticache.Operator
s3bucket *s3bucket.Operator
snssubscription *snssubscription.Operator
snstopic *snstopic.Operator
sqsqueue *sqsqueue.Operator
}
func New(
config config.Config,
queueManager *queuemanager.QueueManager,
) *base {
return &base{
config: config,
queueManager: queueManager,
cloudformationtemplate: cloudformationtemplate.NewOperator(config, queueManager),
dynamodb: dynamodb.NewOperator(config, queueManager),
ecrrepository: ecrrepository.NewOperator(config, queueManager),
elasticache: elasticache.NewOperator(config, queueManager),
s3bucket: s3bucket.NewOperator(config, queueManager),
snssubscription: snssubscription.NewOperator(config, queueManager),
snstopic: snstopic.NewOperator(config, queueManager),
sqsqueue: sqsqueue.NewOperator(config, queueManager),
}
}
func (b *base) Watch(ctx context.Context, namespace string) {
if b.config.Resources["cloudformationtemplate"] {
go b.cloudformationtemplate.StartWatch(ctx, namespace)
}
if b.config.Resources["dynamodb"] {
go b.dynamodb.StartWatch(ctx, namespace)
}
if b.config.Resources["ecrrepository"] {
go b.ecrrepository.StartWatch(ctx, namespace)
}
if b.config.Resources["elasticache"] {
go b.elasticache.StartWatch(ctx, namespace)
}
if b.config.Resources["s3bucket"] {
go b.s3bucket.StartWatch(ctx, namespace)
}
if b.config.Resources["snssubscription"] {
go b.snssubscription.StartWatch(ctx, namespace)
}
if b.config.Resources["snstopic"] {
go b.snstopic.StartWatch(ctx, namespace)
}
if b.config.Resources["sqsqueue"] {
go b.sqsqueue.StartWatch(ctx, namespace)
}
<-ctx.Done()
}