This repository has been archived by the owner on Nov 28, 2022. It is now read-only.
forked from knative/eventing
/
parallel.go
121 lines (100 loc) · 3.63 KB
/
parallel.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
Copyright 2019 The Knative Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package testing
import (
"context"
"time"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
eventingduck "knative.dev/eventing/pkg/apis/duck/v1alpha1"
"knative.dev/eventing/pkg/apis/messaging/v1alpha1"
duckv1 "knative.dev/pkg/apis/duck/v1"
)
// ParallelOption enables further configuration of a Parallel.
type ParallelOption func(*v1alpha1.Parallel)
// NewParallel creates an Parallel with ParallelOptions.
func NewParallel(name, namespace string, popt ...ParallelOption) *v1alpha1.Parallel {
p := &v1alpha1.Parallel{
ObjectMeta: metav1.ObjectMeta{
Name: name,
Namespace: namespace,
},
Spec: v1alpha1.ParallelSpec{},
}
for _, opt := range popt {
opt(p)
}
p.SetDefaults(context.Background())
return p
}
func WithInitParallelConditions(p *v1alpha1.Parallel) {
p.Status.InitializeConditions()
}
func WithParallelDeleted(p *v1alpha1.Parallel) {
deleteTime := metav1.NewTime(time.Unix(1e9, 0))
p.ObjectMeta.SetDeletionTimestamp(&deleteTime)
}
func WithParallelChannelTemplateSpec(cts *eventingduck.ChannelTemplateSpec) ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Spec.ChannelTemplate = cts
}
}
func WithParallelBranches(branches []v1alpha1.ParallelBranch) ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Spec.Branches = branches
}
}
func WithParallelReply(reply *duckv1.Destination) ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Spec.Reply = reply
}
}
func WithParallelBranchStatuses(branchStatuses []v1alpha1.ParallelBranchStatus) ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Status.BranchStatuses = branchStatuses
}
}
func WithParallelDeprecatedReplyStatus() ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Status.MarkDeprecated("replyDeprecatedRef", "spec.reply.{apiVersion,kind,name} are deprecated and will be removed in the future. Use spec.reply.ref instead.")
}
}
func WithParallelDeprecatedStatus() ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Status.MarkDeprecated("parallelMessagingDeprecated", "parallels.messaging.knative.dev are deprecated and will be removed in the future. Use parallels.flows.knative.dev instead.")
}
}
func WithParallelDeprecatedBranchReplyStatus() ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Status.MarkDeprecated("branchReplyDeprecatedRef", "spec.branches[*].reply.{apiVersion,kind,name} are deprecated and will be removed in the future. Use spec.branches[*].reply.ref instead.")
}
}
func WithParallelIngressChannelStatus(status v1alpha1.ParallelChannelStatus) ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Status.IngressChannelStatus = status
}
}
func WithParallelChannelsNotReady(reason, message string) ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Status.MarkChannelsNotReady(reason, message)
}
}
func WithParallelSubscriptionsNotReady(reason, message string) ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Status.MarkSubscriptionsNotReady(reason, message)
}
}
func WithParallelAddressableNotReady(reason, message string) ParallelOption {
return func(p *v1alpha1.Parallel) {
p.Status.MarkAddressableNotReady(reason, message)
}
}