Skip to content
This repository was archived by the owner on Nov 7, 2019. It is now read-only.

Commit 85af64a

Browse files
author
Christopher Hein
authored
Merge pull request #130 from christopherhein/chore/21-single-queue
Single Queue With Multiple Topics Subscribed
2 parents d1d2eef + 0784af1 commit 85af64a

File tree

30 files changed

+465
-275
lines changed

30 files changed

+465
-275
lines changed

cloudformation/dynamodb.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
AWSTemplateFormatVersion: 2010-09-09
2-
Description: 'AWS Service Operator - Amazon DynamoDB'
2+
Description: 'AWS Service Operator - Amazon DynamoDB (aso-1otq2cgc4)'
33
Parameters:
44
Namespace:
55
Description: >-

cloudformation/ecrrepository.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
AWSTemplateFormatVersion: 2010-09-09
2-
Description: 'AWS Service Operator - Amazon ECR Repository'
2+
Description: 'AWS Service Operator - Amazon ECR Repository (aso-1otq2cgc9)'
33
Parameters:
44
Namespace:
55
Description: >-

cloudformation/s3bucket.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
AWSTemplateFormatVersion: 2010-09-09
2-
Description: 'AWS Service Operator - Amazon S3 Bucket'
2+
Description: 'AWS Service Operator - Amazon S3 Bucket (aso-1otq2cgce)'
33
Parameters:
44
Namespace:
55
Description: >-

cloudformation/snssubscription.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
AWSTemplateFormatVersion: 2010-09-09
2-
Description: 'AWS Service Operator - Amazon SNS Subscription'
2+
Description: 'AWS Service Operator - Amazon SNS Subscription (aso-1otq2cgcj)'
33
Parameters:
44
Namespace:
55
Description: >-

cloudformation/snstopic.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
AWSTemplateFormatVersion: 2010-09-09
2-
Description: 'AWS Service Operator - Amazon SNS Topic'
2+
Description: 'AWS Service Operator - Amazon SNS Topic (aso-1otq2cgcp)'
33
Parameters:
44
Namespace:
55
Description: >-

cloudformation/sqsqueue.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
AWSTemplateFormatVersion: 2010-09-09
2-
Description: "AWS Service Operator - Amazon SQS Queue"
2+
Description: "AWS Service Operator - Amazon SQS Queue (aso-1otq2cgcu)"
33
Parameters:
44
Namespace:
55
Type: String

code-generation/pkg/codegen/assets/base.go.templ

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,37 @@ package base
33
import (
44
"context"
55
"github.com/awslabs/aws-service-operator/pkg/config"
6+
"github.com/awslabs/aws-service-operator/pkg/queuemanager"
67
{{- range $index, $element := .Items}}
78
"github.com/awslabs/aws-service-operator/pkg/operators/{{$element.Spec.Resource.Name}}"
89
{{- end}}
910
)
1011

1112
type base struct {
1213
config *config.Config
14+
queueManager *queuemanager.QueueManager
15+
{{- range $index, $element := .Items}}
16+
{{$element.Spec.Resource.Name}} *{{$element.Spec.Resource.Name}}.Operator
17+
{{- end}}
1318
}
1419

1520
func New(
1621
config *config.Config,
22+
queueManager *queuemanager.QueueManager,
1723
) *base {
1824
return &base{
1925
config: config,
26+
queueManager: queueManager,
27+
{{- range $index, $element := .Items}}
28+
{{$element.Spec.Resource.Name}}: {{$element.Spec.Resource.Name}}.NewOperator(config, queueManager),
29+
{{- end}}
2030
}
2131
}
2232

2333
func (b *base) Watch(ctx context.Context, namespace string) {
2434
{{- range $index, $element := .Items}}
2535
if b.config.Resources["{{$element.Spec.Resource.Name}}"] {
26-
{{$element.Spec.Resource.Name}}operator := {{$element.Spec.Resource.Name}}.NewOperator(b.config)
27-
go {{$element.Spec.Resource.Name}}operator.StartWatch(ctx, namespace)
36+
go b.{{$element.Spec.Resource.Name}}.StartWatch(ctx, namespace)
2837
}
2938
{{- end}}
3039

code-generation/pkg/codegen/assets/operator.go.templ

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@ import (
1414
{{- end}}
1515

1616
"github.com/awslabs/aws-service-operator/pkg/config"
17-
{{- if .Spec.Queue}}
18-
"github.com/awslabs/aws-service-operator/pkg/queue"
19-
corev1 "k8s.io/api/core/v1"
20-
"github.com/iancoleman/strcase"
21-
"strings"
22-
awsclient "github.com/awslabs/aws-service-operator/pkg/client/clientset/versioned/typed/service-operator.aws/v1alpha1"
17+
"github.com/awslabs/aws-service-operator/pkg/queuemanager"
18+
{{- if .Spec.Queue}}
19+
corev1 "k8s.io/api/core/v1"
20+
"github.com/iancoleman/strcase"
21+
"strings"
22+
awsclient "github.com/awslabs/aws-service-operator/pkg/client/clientset/versioned/typed/service-operator.aws/v1alpha1"
23+
"github.com/awslabs/aws-service-operator/pkg/queue"
2324
{{- end}}
2425
"github.com/awslabs/aws-service-operator/pkg/operator"
2526
"k8s.io/client-go/tools/cache"
@@ -34,12 +35,23 @@ import (
3435
type Operator struct {
3536
config *config.Config
3637
topicARN string
38+
queueManager *queuemanager.QueueManager
3739
}
3840

3941
// NewOperator create controller for watching object store custom resources created
40-
func NewOperator(config *config.Config) *Operator {
42+
func NewOperator(config *config.Config, queueManager *queuemanager.QueueManager) *Operator {
43+
{{- if .Spec.Queue}}
44+
queuectrl := queue.New(config, config.AWSClientset, 10)
45+
topicARN, _ := queuectrl.Register("{{.Spec.Resource.Name}}")
46+
queueManager.Add(topicARN, queuemanager.HandlerFunc(QueueUpdater))
47+
{{- end}}
48+
4149
return &Operator{
4250
config: config,
51+
{{- if .Spec.Queue}}
52+
topicARN: topicARN,
53+
{{- end}}
54+
queueManager: queueManager,
4355
}
4456
}
4557

@@ -50,19 +62,14 @@ func (c *Operator) StartWatch(ctx context.Context, namespace string) {
5062
UpdateFunc: c.onUpdate,
5163
DeleteFunc: c.onDelete,
5264
}
53-
{{- if .Spec.Queue}}
54-
queuectrl := queue.New(c.config, c.config.AWSClientset, 1)
55-
c.topicARN, _, _, _ = queuectrl.Register("{{.Spec.Resource.Name}}", &awsV1alpha1.{{.Spec.Kind}}{})
56-
go queuectrl.StartWatch(queue.HandlerFunc(QueueUpdater), ctx.Done())
57-
{{- end}}
5865

5966
oper := operator.New("{{.Spec.Resource.Plural}}", namespace, resourceHandlers, c.config.AWSClientset.RESTClient())
6067
oper.Watch(&awsV1alpha1.{{.Spec.Kind}}{}, ctx.Done())
6168
}
6269

6370
{{- if .Spec.Queue}}
6471
// QueueUpdater will take the messages from the queue and process them
65-
func QueueUpdater(config *config.Config, msg *queue.MessageBody) error {
72+
func QueueUpdater(config *config.Config, msg *queuemanager.MessageBody) error {
6673
logger := config.Logger
6774
var name, namespace string
6875
if msg.Updatable {

code-generation/pkg/codegen/templates.go

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

configs/aws-service-operator.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,13 +150,15 @@ items:
150150
- pods
151151
- configmaps
152152
- services
153+
- events
153154
verbs:
154155
- get
155156
- list
156157
- watch
157158
- create
158159
- delete
159160
- update
161+
- patch
160162
- apiGroups:
161163
- apiextensions.k8s.io
162164
resources:
@@ -203,7 +205,7 @@ items:
203205
template:
204206
metadata:
205207
annotations:
206-
iam.amazonaws.com/role: arn:aws:iam::<ACCOUNT_ID>:role/aws-service-operator
208+
iam.amazonaws.com/role: aws-service-operator
207209
labels:
208210
app: aws-service-operator
209211
spec:

0 commit comments

Comments
 (0)