Documentation ¶
Overview ¶
Example (Full) ¶
package main import ( "embed" "os" testlog "knative.dev/reconciler-test/pkg/logging" "knative.dev/reconciler-test/pkg/manifest" ) //go:embed *.yaml var yaml embed.FS func main() { ctx := testlog.NewContext() images := map[string]string{} cfg := map[string]interface{}{ "name": "foo", "namespace": "bar", "channelTemplate": map[string]interface{}{ "apiVersion": "channelimpl/v1", "kind": "mychannel", "spec": map[string]string{ "thing1": "value1", "thing2": "value2", }, }, "branches": []map[string]interface{}{{ "filter": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "filter1-api", "kind": "filter1-kind", "name": "filter1", "namespace": "bar", }, "uri": "/extra/path", }, "subscriber": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "subscriber1-api", "kind": "subscriber1-kind", "name": "subscriber1", "namespace": "bar", }, "uri": "/extra/path", }, "reply": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "reply1-api", "kind": "reply1-kind", "name": "reply1", "namespace": "bar", }, "uri": "/extra/path", }}, { "filter": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "filter2-api", "kind": "filter2-kind", "name": "filter2", "namespace": "bar", }, "uri": "/extra/path", }, "subscriber": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "subscriber2-api", "kind": "subscriber2-kind", "name": "subscriber2", "namespace": "bar", }, "uri": "/extra/path", }, "reply": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "reply2-api", "kind": "reply2-kind", "name": "reply2", "namespace": "bar", }, "uri": "/extra/path", }}, }, "reply": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "reply1-api", "kind": "reply1-kind", "name": "reply1", "namespace": "bar", }, "uri": "/extra/path", }, } files, err := manifest.ExecuteYAML(ctx, yaml, images, cfg) if err != nil { panic(err) } manifest.OutputYAML(os.Stdout, files) }
Output: apiVersion: flows.knative.dev/v1 kind: Parallel metadata: name: foo namespace: bar spec: channelTemplate: apiVersion: channelimpl/v1 kind: mychannel spec: thing1: value1 thing2: value2 branches: - filter: ref: kind: filter1-kind namespace: bar name: filter1 apiVersion: filter1-api uri: /extra/path subscriber: ref: kind: subscriber1-kind namespace: bar name: subscriber1 apiVersion: subscriber1-api uri: /extra/path reply: ref: kind: reply1-kind namespace: bar name: reply1 apiVersion: reply1-api uri: /extra/path - filter: ref: kind: filter2-kind namespace: bar name: filter2 apiVersion: filter2-api uri: /extra/path subscriber: ref: kind: subscriber2-kind namespace: bar name: subscriber2 apiVersion: subscriber2-api uri: /extra/path reply: ref: kind: reply2-kind namespace: bar name: reply2 apiVersion: reply2-api uri: /extra/path reply: ref: kind: reply1-kind namespace: bar name: reply1 apiVersion: reply1-api uri: /extra/path
Example (FullDelivery) ¶
package main import ( "embed" "os" testlog "knative.dev/reconciler-test/pkg/logging" "knative.dev/reconciler-test/pkg/manifest" ) //go:embed *.yaml var yaml embed.FS func main() { ctx := testlog.NewContext() images := map[string]string{} cfg := map[string]interface{}{ "name": "foo", "namespace": "bar", "channelTemplate": map[string]interface{}{ "apiVersion": "channelimpl/v1", "kind": "mychannel", "spec": map[string]interface{}{ "delivery": map[string]interface{}{ "retry": 8, }, "thing2": "value2", }, }, "branches": []map[string]interface{}{{ "filter": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "filter1-api", "kind": "filter1-kind", "name": "filter1", "namespace": "bar", }, "uri": "/extra/path", }, "subscriber": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "subscriber1-api", "kind": "subscriber1-kind", "name": "subscriber1", "namespace": "bar", }, "uri": "/extra/path", }, "reply": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "reply1-api", "kind": "reply1-kind", "name": "reply1", "namespace": "bar", }, "uri": "/extra/path", }}, { "filter": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "filter2-api", "kind": "filter2-kind", "name": "filter2", "namespace": "bar", }, "uri": "/extra/path", }, "subscriber": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "subscriber2-api", "kind": "subscriber2-kind", "name": "subscriber2", "namespace": "bar", }, "uri": "/extra/path", }, "reply": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "reply2-api", "kind": "reply2-kind", "name": "reply2", "namespace": "bar", }, "uri": "/extra/path", }}, }, "reply": map[string]interface{}{ "ref": map[string]string{ "apiVersion": "reply1-api", "kind": "reply1-kind", "name": "reply1", "namespace": "bar", }, "uri": "/extra/path", }, } files, err := manifest.ExecuteYAML(ctx, yaml, images, cfg) if err != nil { panic(err) } manifest.OutputYAML(os.Stdout, files) }
Output: apiVersion: flows.knative.dev/v1 kind: Parallel metadata: name: foo namespace: bar spec: channelTemplate: apiVersion: channelimpl/v1 kind: mychannel spec: delivery: retry: 8 thing2: value2 branches: - filter: ref: kind: filter1-kind namespace: bar name: filter1 apiVersion: filter1-api uri: /extra/path subscriber: ref: kind: subscriber1-kind namespace: bar name: subscriber1 apiVersion: subscriber1-api uri: /extra/path reply: ref: kind: reply1-kind namespace: bar name: reply1 apiVersion: reply1-api uri: /extra/path - filter: ref: kind: filter2-kind namespace: bar name: filter2 apiVersion: filter2-api uri: /extra/path subscriber: ref: kind: subscriber2-kind namespace: bar name: subscriber2 apiVersion: subscriber2-api uri: /extra/path reply: ref: kind: reply2-kind namespace: bar name: reply2 apiVersion: reply2-api uri: /extra/path reply: ref: kind: reply1-kind namespace: bar name: reply1 apiVersion: reply1-api uri: /extra/path
Example (Min) ¶
package main import ( "embed" "os" testlog "knative.dev/reconciler-test/pkg/logging" "knative.dev/reconciler-test/pkg/manifest" ) //go:embed *.yaml var yaml embed.FS func main() { ctx := testlog.NewContext() images := map[string]string{} cfg := map[string]interface{}{ "name": "foo", "namespace": "bar", } files, err := manifest.ExecuteYAML(ctx, yaml, images, cfg) if err != nil { panic(err) } manifest.OutputYAML(os.Stdout, files) }
Output: apiVersion: flows.knative.dev/v1 kind: Parallel metadata: name: foo namespace: bar spec: branches:
Example (WithFilterAt) ¶
package main import ( "embed" "os" "knative.dev/pkg/apis" v1 "knative.dev/pkg/apis/duck/v1" testlog "knative.dev/reconciler-test/pkg/logging" "knative.dev/reconciler-test/pkg/manifest" "knative.dev/eventing/test/rekt/resources/parallel" ) //go:embed *.yaml var yaml embed.FS func main() { ctx := testlog.NewContext() images := map[string]string{} cfg := map[string]interface{}{ "name": "foo", "namespace": "bar", } parallel.WithFilterAt(0, &v1.Destination{ Ref: &v1.KReference{ Kind: "fil0kind", APIVersion: "fil0version", Name: "fil0name", Namespace: "bar", }, URI: &apis.URL{Path: "/extra/path"}, })(cfg) parallel.WithFilterAt(1, &v1.Destination{ Ref: &v1.KReference{ Kind: "fil1kind", APIVersion: "fil1version", Name: "fil1name", Namespace: "bar", }, })(cfg) parallel.WithFilterAt(2, &v1.Destination{URI: &apis.URL{Scheme: "http", Host: "full", Path: "path"}})(cfg) files, err := manifest.ExecuteYAML(ctx, yaml, images, cfg) if err != nil { panic(err) } manifest.OutputYAML(os.Stdout, files) }
Output: apiVersion: flows.knative.dev/v1 kind: Parallel metadata: name: foo namespace: bar spec: branches: - filter: ref: kind: fil0kind namespace: bar name: fil0name apiVersion: fil0version uri: /extra/path - filter: ref: kind: fil1kind namespace: bar name: fil1name apiVersion: fil1version - filter: uri: http://full/path
Example (WithFullAt) ¶
package main import ( "embed" "os" "knative.dev/pkg/apis" v1 "knative.dev/pkg/apis/duck/v1" testlog "knative.dev/reconciler-test/pkg/logging" "knative.dev/reconciler-test/pkg/manifest" "knative.dev/eventing/test/rekt/resources/parallel" ) //go:embed *.yaml var yaml embed.FS func main() { ctx := testlog.NewContext() images := map[string]string{} cfg := map[string]interface{}{ "name": "foo", "namespace": "bar", } parallel.WithSubscriberAt(0, &v1.Destination{ Ref: &v1.KReference{ Kind: "sub0kind", APIVersion: "sub0version", Name: "sub0name", Namespace: "bar", }, URI: &apis.URL{Path: "/extra/path"}, })(cfg) parallel.WithReplyAt(0, &v1.Destination{ Ref: &v1.KReference{ Kind: "rep0kind", APIVersion: "rep0version", Name: "rep0name", Namespace: "bar", }, URI: &apis.URL{Path: "/extra/path"}, })(cfg) parallel.WithFilterAt(0, &v1.Destination{ Ref: &v1.KReference{ Kind: "fil0kind", APIVersion: "fil0version", Name: "fil0name", Namespace: "bar", }, URI: &apis.URL{Path: "/extra/path"}, })(cfg) files, err := manifest.ExecuteYAML(ctx, yaml, images, cfg) if err != nil { panic(err) } manifest.OutputYAML(os.Stdout, files) }
Output: apiVersion: flows.knative.dev/v1 kind: Parallel metadata: name: foo namespace: bar spec: branches: - filter: ref: kind: fil0kind namespace: bar name: fil0name apiVersion: fil0version uri: /extra/path subscriber: ref: kind: sub0kind namespace: bar name: sub0name apiVersion: sub0version uri: /extra/path reply: ref: kind: rep0kind namespace: bar name: rep0name apiVersion: rep0version uri: /extra/path
Example (WithReply) ¶
package main import ( "embed" "os" "knative.dev/pkg/apis" v1 "knative.dev/pkg/apis/duck/v1" testlog "knative.dev/reconciler-test/pkg/logging" "knative.dev/reconciler-test/pkg/manifest" "knative.dev/eventing/test/rekt/resources/parallel" ) //go:embed *.yaml var yaml embed.FS func main() { ctx := testlog.NewContext() images := map[string]string{} cfg := map[string]interface{}{ "name": "foo", "namespace": "bar", } parallel.WithReply(&v1.Destination{ Ref: &v1.KReference{ Kind: "repkind", APIVersion: "repversion", Name: "repname", }, URI: &apis.URL{Path: "/extra/path"}, })(cfg) files, err := manifest.ExecuteYAML(ctx, yaml, images, cfg) if err != nil { panic(err) } manifest.OutputYAML(os.Stdout, files) }
Output: apiVersion: flows.knative.dev/v1 kind: Parallel metadata: name: foo namespace: bar spec: branches: reply: ref: kind: repkind namespace: bar name: repname apiVersion: repversion uri: /extra/path
Example (WithReplyAt) ¶
package main import ( "embed" "os" "knative.dev/pkg/apis" v1 "knative.dev/pkg/apis/duck/v1" testlog "knative.dev/reconciler-test/pkg/logging" "knative.dev/reconciler-test/pkg/manifest" "knative.dev/eventing/test/rekt/resources/parallel" ) //go:embed *.yaml var yaml embed.FS func main() { ctx := testlog.NewContext() images := map[string]string{} cfg := map[string]interface{}{ "name": "foo", "namespace": "bar", } parallel.WithReplyAt(0, &v1.Destination{ Ref: &v1.KReference{ Kind: "rep0kind", APIVersion: "rep0version", Name: "rep0name", Namespace: "bar", }, URI: &apis.URL{Path: "/extra/path"}, })(cfg) parallel.WithReplyAt(1, &v1.Destination{ Ref: &v1.KReference{ Kind: "rep1kind", APIVersion: "rep1version", Name: "rep1name", Namespace: "bar", }, })(cfg) parallel.WithReplyAt(2, &v1.Destination{URI: &apis.URL{Scheme: "http", Host: "full", Path: "path"}})(cfg) files, err := manifest.ExecuteYAML(ctx, yaml, images, cfg) if err != nil { panic(err) } manifest.OutputYAML(os.Stdout, files) }
Output: apiVersion: flows.knative.dev/v1 kind: Parallel metadata: name: foo namespace: bar spec: branches: - reply: ref: kind: rep0kind namespace: bar name: rep0name apiVersion: rep0version uri: /extra/path - reply: ref: kind: rep1kind namespace: bar name: rep1name apiVersion: rep1version - reply: uri: http://full/path
Example (WithSubscriberAt) ¶
package main import ( "embed" "os" "knative.dev/pkg/apis" v1 "knative.dev/pkg/apis/duck/v1" testlog "knative.dev/reconciler-test/pkg/logging" "knative.dev/reconciler-test/pkg/manifest" "knative.dev/eventing/test/rekt/resources/parallel" ) //go:embed *.yaml var yaml embed.FS func main() { ctx := testlog.NewContext() images := map[string]string{} cfg := map[string]interface{}{ "name": "foo", "namespace": "bar", } parallel.WithSubscriberAt(0, &v1.Destination{ Ref: &v1.KReference{ Kind: "sub0kind", APIVersion: "sub0version", Name: "sub0name", Namespace: "bar", }, URI: &apis.URL{Path: "/extra/path"}, })(cfg) parallel.WithSubscriberAt(1, &v1.Destination{ Ref: &v1.KReference{ Kind: "sub1kind", APIVersion: "sub1version", Name: "sub1name", Namespace: "bar", }, })(cfg) parallel.WithSubscriberAt(2, &v1.Destination{URI: &apis.URL{Scheme: "http", Host: "full", Path: "path"}})(cfg) files, err := manifest.ExecuteYAML(ctx, yaml, images, cfg) if err != nil { panic(err) } manifest.OutputYAML(os.Stdout, files) }
Output: apiVersion: flows.knative.dev/v1 kind: Parallel metadata: name: foo namespace: bar spec: branches: - subscriber: ref: kind: sub0kind namespace: bar name: sub0name apiVersion: sub0version uri: /extra/path - subscriber: ref: kind: sub1kind namespace: bar name: sub1name apiVersion: sub1version - subscriber: uri: http://full/path
Index ¶
- func Address(ctx context.Context, name string, timings ...time.Duration) (*duckv1.Addressable, error)
- func AsRef(name string) *duckv1.KReference
- func GVK() schema.GroupVersionKind
- func GVR() schema.GroupVersionResource
- func Install(name string, opts ...manifest.CfgFn) feature.StepFn
- func IsAddressable(name string, timing ...time.Duration) feature.StepFn
- func IsReady(name string, timing ...time.Duration) feature.StepFn
- func ValidateAddress(name string, validate addressable.ValidateAddressFn, timings ...time.Duration) feature.StepFn
- func WithChannelTemplate(template channel_template.ChannelTemplate) manifest.CfgFn
- func WithFilterAt(index int, d *duckv1.Destination) manifest.CfgFn
- func WithReply(d *duckv1.Destination) manifest.CfgFn
- func WithReplyAt(index int, d *duckv1.Destination) manifest.CfgFn
- func WithSubscriberAt(index int, d *duckv1.Destination) manifest.CfgFn
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Address ¶
func Address(ctx context.Context, name string, timings ...time.Duration) (*duckv1.Addressable, error)
Address returns a Parallel's address.
func AsRef ¶
func AsRef(name string) *duckv1.KReference
AsRef returns a KRef for a Parallel without namespace.
func GVK ¶
func GVK() schema.GroupVersionKind
func GVR ¶
func GVR() schema.GroupVersionResource
func IsAddressable ¶
IsAddressable tests to see if a Parallel becomes addressable within the time given.
func ValidateAddress ¶ added in v0.38.9
func ValidateAddress(name string, validate addressable.ValidateAddressFn, timings ...time.Duration) feature.StepFn
ValidateAddress validates the address retured by Address
func WithChannelTemplate ¶ added in v0.25.4
func WithChannelTemplate(template channel_template.ChannelTemplate) manifest.CfgFn
WithChannelTemplate adds the top level channel references.
func WithFilterAt ¶
func WithFilterAt(index int, d *duckv1.Destination) manifest.CfgFn
WithFilterAt adds the filter related config to a Parallel spec at branches[`index`].
func WithReply ¶
func WithReply(d *duckv1.Destination) manifest.CfgFn
WithReply adds the top level reply config to a Parallel spec.
func WithReplyAt ¶
func WithReplyAt(index int, d *duckv1.Destination) manifest.CfgFn
WithReplyAt adds the reply related config to a Parallel spec at branches[`index`].
func WithSubscriberAt ¶
func WithSubscriberAt(index int, d *duckv1.Destination) manifest.CfgFn
WithSubscriberAt adds the subscriber related config to a Parallel spec at branches[`index`].
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.