From 5f235819c938f2d17aff636d7ec3a460dcca07eb Mon Sep 17 00:00:00 2001 From: Vaibhav Date: Mon, 3 Jan 2022 18:11:30 -0500 Subject: [PATCH] feat: added event transform (#1492) --- api/event-bus.md | 679 ++- api/event-source.md | 4460 ++++++++++++++++- api/jsonschema/schema.json | 18 + api/openapi-spec/swagger.json | 18 + api/sensor.html | 56 + api/sensor.md | 3227 +++++++++++- docs/sensors/transform.md | 146 + eventbus/driver/driver.go | 2 +- eventbus/driver/nats.go | 23 +- eventsources/sources/kafka/start.go | 1 - examples/sensors/transform.yaml | 85 + go.mod | 7 +- go.sum | 15 +- hack/crdgen.sh | 2 +- hack/custom-boilerplate.go.txt | 2 +- mkdocs.yml | 1 + pkg/apis/common/deepcopy_generated.go | 2 +- pkg/apis/common/generated.pb.go | 2 +- pkg/apis/common/generated.proto | 2 +- pkg/apis/common/openapi_generated.go | 2 +- pkg/apis/eventbus/v1alpha1/generated.pb.go | 2 +- pkg/apis/eventbus/v1alpha1/generated.proto | 2 +- .../eventbus/v1alpha1/openapi_generated.go | 2 +- .../v1alpha1/zz_generated.deepcopy.go | 2 +- pkg/apis/eventsource/v1alpha1/generated.pb.go | 2 +- pkg/apis/eventsource/v1alpha1/generated.proto | 2 +- .../eventsource/v1alpha1/openapi_generated.go | 2 +- .../v1alpha1/zz_generated.deepcopy.go | 2 +- pkg/apis/sensor/v1alpha1/generated.pb.go | 837 ++-- pkg/apis/sensor/v1alpha1/generated.proto | 16 +- pkg/apis/sensor/v1alpha1/openapi_generated.go | 120 +- pkg/apis/sensor/v1alpha1/types.go | 12 + .../sensor/v1alpha1/zz_generated.deepcopy.go | 23 +- .../eventbus/clientset/versioned/clientset.go | 2 +- .../eventbus/clientset/versioned/doc.go | 2 +- .../versioned/fake/clientset_generated.go | 2 +- .../eventbus/clientset/versioned/fake/doc.go | 2 +- .../clientset/versioned/fake/register.go | 2 +- .../clientset/versioned/scheme/doc.go | 2 +- .../clientset/versioned/scheme/register.go | 2 +- .../versioned/typed/eventbus/v1alpha1/doc.go | 2 +- .../typed/eventbus/v1alpha1/eventbus.go | 2 +- .../eventbus/v1alpha1/eventbus_client.go | 2 +- .../typed/eventbus/v1alpha1/fake/doc.go | 2 +- .../eventbus/v1alpha1/fake/fake_eventbus.go | 2 +- .../v1alpha1/fake/fake_eventbus_client.go | 2 +- .../eventbus/v1alpha1/generated_expansion.go | 2 +- .../externalversions/eventbus/interface.go | 2 +- .../eventbus/v1alpha1/eventbus.go | 2 +- .../eventbus/v1alpha1/interface.go | 2 +- .../informers/externalversions/factory.go | 2 +- .../informers/externalversions/generic.go | 2 +- .../internalinterfaces/factory_interfaces.go | 2 +- .../listers/eventbus/v1alpha1/eventbus.go | 2 +- .../eventbus/v1alpha1/expansion_generated.go | 2 +- .../clientset/versioned/clientset.go | 2 +- .../eventsource/clientset/versioned/doc.go | 2 +- .../versioned/fake/clientset_generated.go | 2 +- .../clientset/versioned/fake/doc.go | 2 +- .../clientset/versioned/fake/register.go | 2 +- .../clientset/versioned/scheme/doc.go | 2 +- .../clientset/versioned/scheme/register.go | 2 +- .../typed/eventsource/v1alpha1/doc.go | 2 +- .../typed/eventsource/v1alpha1/eventsource.go | 2 +- .../v1alpha1/eventsource_client.go | 2 +- .../typed/eventsource/v1alpha1/fake/doc.go | 2 +- .../v1alpha1/fake/fake_eventsource.go | 2 +- .../v1alpha1/fake/fake_eventsource_client.go | 2 +- .../v1alpha1/generated_expansion.go | 2 +- .../externalversions/eventsource/interface.go | 2 +- .../eventsource/v1alpha1/eventsource.go | 2 +- .../eventsource/v1alpha1/interface.go | 2 +- .../informers/externalversions/factory.go | 2 +- .../informers/externalversions/generic.go | 2 +- .../internalinterfaces/factory_interfaces.go | 2 +- .../eventsource/v1alpha1/eventsource.go | 2 +- .../v1alpha1/expansion_generated.go | 2 +- .../sensor/clientset/versioned/clientset.go | 2 +- pkg/client/sensor/clientset/versioned/doc.go | 2 +- .../versioned/fake/clientset_generated.go | 2 +- .../sensor/clientset/versioned/fake/doc.go | 2 +- .../clientset/versioned/fake/register.go | 2 +- .../sensor/clientset/versioned/scheme/doc.go | 2 +- .../clientset/versioned/scheme/register.go | 2 +- .../versioned/typed/sensor/v1alpha1/doc.go | 2 +- .../typed/sensor/v1alpha1/fake/doc.go | 2 +- .../typed/sensor/v1alpha1/fake/fake_sensor.go | 2 +- .../v1alpha1/fake/fake_sensor_client.go | 2 +- .../sensor/v1alpha1/generated_expansion.go | 2 +- .../versioned/typed/sensor/v1alpha1/sensor.go | 2 +- .../typed/sensor/v1alpha1/sensor_client.go | 2 +- .../informers/externalversions/factory.go | 2 +- .../informers/externalversions/generic.go | 2 +- .../internalinterfaces/factory_interfaces.go | 2 +- .../externalversions/sensor/interface.go | 2 +- .../sensor/v1alpha1/interface.go | 2 +- .../sensor/v1alpha1/sensor.go | 2 +- .../sensor/v1alpha1/expansion_generated.go | 2 +- .../sensor/listers/sensor/v1alpha1/sensor.go | 2 +- sensors/dependencies/transform.go | 199 + sensors/dependencies/transform_test.go | 119 + sensors/listener.go | 26 +- 102 files changed, 9781 insertions(+), 469 deletions(-) create mode 100644 docs/sensors/transform.md create mode 100644 examples/sensors/transform.yaml create mode 100644 sensors/dependencies/transform.go create mode 100644 sensors/dependencies/transform_test.go diff --git a/api/event-bus.md b/api/event-bus.md index dcefab8667..d1819925fc 100644 --- a/api/event-bus.md +++ b/api/event-bus.md @@ -1,563 +1,1068 @@

+ Packages: +

+ +

+ argoproj.io/v1alpha1 +

+

+

+ Package v1alpha1 is the v1alpha1 version of the API. +

+

+ Resource Types: + +

+ AuthStrategy (string alias) +

+

+

+ (Appears on: NATSConfig, NativeStrategy) +

+

+

+ AuthStrategy is the auth strategy of native nats installaion +

+

+

+ BusConfig +

+

+ (Appears on: EventBusStatus) +

+

+

+ BusConfig has the finalized configuration for EventBus +

+

+ + + + + + + + + + + + + +
+ Field + + Description +
+ nats
NATSConfig +
+
+

+ ContainerTemplate +

+

+ (Appears on: NativeStrategy) +

+

+

+ ContainerTemplate defines customized spec for a container +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ resources
Kubernetes core/v1.ResourceRequirements +
+
+ imagePullPolicy
Kubernetes core/v1.PullPolicy +
+
+

+ EventBus +

+

+

+ EventBus is the definition of a eventbus resource +

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ metadata
Kubernetes meta/v1.ObjectMeta +
+ Refer to the Kubernetes API documentation for the fields of the metadata field. +
+ spec
EventBusSpec +
+

+ + + + + +
+ nats
NATSBus +
+

+ NATS eventbus +

+
+
+ status
EventBusStatus +
+ (Optional) +
+

+ EventBusSpec +

+

+ (Appears on: EventBus) +

+

+

+ EventBusSpec refers to specification of eventbus resource +

+

+ + + + + + + + + + + + + +
+ Field + + Description +
+ nats
NATSBus +
+

+ NATS eventbus +

+
+

+ EventBusStatus +

+

+ (Appears on: EventBus) +

+

+

+ EventBusStatus holds the status of the eventbus resource +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ Status
github.com/argoproj/argo-events/pkg/apis/common.Status +
+

+ (Members of Status are embedded into this type.) +

+
+ config
BusConfig +
+

+ Config holds the fininalized configuration of EventBus +

+
+

+ NATSBus +

+

+ (Appears on: EventBusSpec) +

+

+

+ NATSBus holds the NATS eventbus information +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ native
NativeStrategy +
+

+ Native means to bring up a native NATS service +

+
+ exotic
NATSConfig +
+

+ Exotic holds an exotic NATS config +

+
+

+ NATSConfig +

+

+ (Appears on: BusConfig, NATSBus) +

+

+

+ NATSConfig holds the config of NATS +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ NATS streaming url +

+
+ clusterID
string +
+

+ Cluster ID for nats streaming +

+
+ auth
AuthStrategy +
+ (Optional) +

+ Auth strategy, default to AuthStrategyNone +

+
+ accessSecret
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ Secret for auth +

+
+

+ NativeStrategy +

+

+ (Appears on: NATSBus) +

+

+

+ NativeStrategy indicates to install a native NATS service +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ replicas
int32 +
+

+ Size is the NATS StatefulSet size +

+
+ auth
AuthStrategy +
+
+ persistence
PersistenceStrategy +
+ (Optional) +
+ containerTemplate
ContainerTemplate +
+ (Optional) +

+ ContainerTemplate contains customized spec for NATS container +

+
+ metricsContainerTemplate
ContainerTemplate +
+ (Optional) +

+ MetricsContainerTemplate contains customized spec for metrics container +

+
+ nodeSelector
map\[string\]string +
+ (Optional) +

+ NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ +

+
+ tolerations
\[\]Kubernetes core/v1.Toleration +
+ (Optional) +

+ If specified, the pod’s tolerations. +

+
+ metadata
github.com/argoproj/argo-events/pkg/apis/common.Metadata +
+

+ Metadata sets the pods’s metadata, i.e. annotations and labels +

+
+ securityContext
Kubernetes core/v1.PodSecurityContext +
+ (Optional) +

+ SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field. +

+
+ maxAge
string +
+ (Optional) +

+ Max Age of existing messages, i.e. “72h”, “4h35m” +

+
+ imagePullSecrets
\[\]Kubernetes core/v1.LocalObjectReference +
+ (Optional) +

+ ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: -https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod +https://kubernetes.io/docs/concepts/containers/images\#specifying-imagepullsecrets-on-a-pod +

+
+ serviceAccountName
string +
+ (Optional) +

+ ServiceAccountName to apply to NATS StatefulSet +

+
+ priorityClassName
string +
+ (Optional) +

+ If specified, indicates the EventSource pod’s priority. “system-node-critical” and “system-cluster-critical” are two special keywords which indicate the highest priorities with the former being the @@ -565,194 +1070,362 @@ highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default. More info: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ +

+
+ priority
int32 +
+ (Optional) +

+ The priority value. Various system components use this field to find the priority of the EventSource pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority. More info: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ +

+
+ affinity
Kubernetes core/v1.Affinity +
+ (Optional) +

+ The pod’s scheduling constraints More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ +

+
+ maxMsgs
uint64 +
+

+ Maximum number of messages per channel, 0 means unlimited. Defaults to 1000000 +

+
+ maxBytes
string +
+

+ Total size of messages per channel, 0 means unlimited. Defaults to 1GB +

+
+ maxSubs
uint64 +
+

+ Maximum number of subscriptions per channel, 0 means unlimited. Defaults to 1000 +

+
+ maxPayload
string +
+

+ Maximum number of bytes in a message payload, 0 means unlimited. Defaults to 1MB +

+
+ raftHeartbeatTimeout
string +
+

+ Specifies the time in follower state without a leader before attempting an election, i.e. “72h”, “4h35m”. Defaults to 2s +

+
+ raftElectionTimeout
string +
+

+ Specifies the time in candidate state without a leader before attempting an election, i.e. “72h”, “4h35m”. Defaults to 2s +

+
+ raftLeaseTimeout
string +
+

+ Specifies how long a leader waits without being able to contact a quorum of nodes before stepping down as leader, i.e. “72h”, “4h35m”. Defaults to 1s +

+
+ raftCommitTimeout
string +
+

+ Specifies the time without an Apply() operation before sending an heartbeat to ensure timely commit, i.e. “72h”, “4h35m”. Defaults to 100ms +

+
+

+ PersistenceStrategy +

+

+ (Appears on: NativeStrategy) +

+

+

+ PersistenceStrategy defines the strategy of persistence +

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ storageClassName
string +
+ (Optional) +

+ Name of the StorageClass required by the claim. More info: -https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 +https://kubernetes.io/docs/concepts/storage/persistent-volumes\#class-1 +

+
+ accessMode
Kubernetes core/v1.PersistentVolumeAccessMode +
+ (Optional) +

+ Available access modes such as ReadWriteOnce, ReadWriteMany -https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes +https://kubernetes.io/docs/concepts/storage/persistent-volumes/\#access-modes +

+
+ volumeSize
k8s.io/apimachinery/pkg/api/resource.Quantity +
+

+ Volume size, e.g. 10Gi +

+
+
+

+ Generated with gen-crd-api-reference-docs. +

diff --git a/api/event-source.md b/api/event-source.md index 937e947f9b..15a29acc9c 100644 --- a/api/event-source.md +++ b/api/event-source.md @@ -1,4290 +1,8115 @@

+ Packages: +

+ +

+ argoproj.io/v1alpha1 +

+

+

+ Package v1alpha1 is the v1alpha1 version of the API. +

+

+ Resource Types: + +

+ AMQPConsumeConfig +

+

+ (Appears on: AMQPEventSource) +

+

+

+ AMQPConsumeConfig holds the configuration to immediately starts delivering queued messages +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ consumerTag
string +
+ (Optional) +

+ ConsumerTag is the identity of the consumer included in every delivery +

+
+ autoAck
bool +
+ (Optional) +

+ AutoAck when true, the server will acknowledge deliveries to this consumer prior to writing the delivery to the network +

+
+ exclusive
bool +
+ (Optional) +

+ Exclusive when true, the server will ensure that this is the sole consumer from this queue +

+
+ noLocal
bool +
+ (Optional) +

+ NoLocal flag is not supported by RabbitMQ +

+
+ noWait
bool +
+ (Optional) +

+ NowWait when true, do not wait for the server to confirm the request and immediately begin deliveries +

+
+

+ AMQPEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ AMQPEventSource refers to an event-source for AMQP stream events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ URL for rabbitmq service +

+
+ exchangeName
string +
+

+ ExchangeName is the exchange name For more information, visit https://www.rabbitmq.com/tutorials/amqp-concepts.html +

+
+ exchangeType
string +
+

+ ExchangeType is rabbitmq exchange type +

+
+ routingKey
string +
+

+ Routing key for bindings +

+
+ connectionBackoff
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+ (Optional) +

+ Backoff holds parameters applied to connection. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the amqp client. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ exchangeDeclare
AMQPExchangeDeclareConfig +
+ (Optional) +

+ ExchangeDeclare holds the configuration for the exchange on the server For more information, visit -https://godoc.org/github.com/streadway/amqp#Channel.ExchangeDeclare +https://godoc.org/github.com/streadway/amqp\#Channel.ExchangeDeclare +

+
+ queueDeclare
AMQPQueueDeclareConfig +
+ (Optional) +

+ QueueDeclare holds the configuration of a queue to hold messages and deliver to consumers. Declaring creates a queue if it doesn’t already exist, or ensures that an existing queue matches the same parameters For more information, visit -https://godoc.org/github.com/streadway/amqp#Channel.QueueDeclare +https://godoc.org/github.com/streadway/amqp\#Channel.QueueDeclare +

+
+ queueBind
AMQPQueueBindConfig +
+ (Optional) +

+ QueueBind holds the configuration that binds an exchange to a queue so that publishings to the exchange will be routed to the queue when the publishing routing key matches the binding routing key For more information, visit -https://godoc.org/github.com/streadway/amqp#Channel.QueueBind +https://godoc.org/github.com/streadway/amqp\#Channel.QueueBind +

+
+ consume
AMQPConsumeConfig +
+ (Optional) +

+ Consume holds the configuration to immediately starts delivering queued messages For more information, visit -https://godoc.org/github.com/streadway/amqp#Channel.Consume +https://godoc.org/github.com/streadway/amqp\#Channel.Consume +

+
+ auth
github.com/argoproj/argo-events/pkg/apis/common.BasicAuth +
+ (Optional) +

+ Auth hosts secret selectors for username and password +

+
+ urlSecret
Kubernetes core/v1.SecretKeySelector +
+

+ URLSecret is secret reference for rabbitmq service URL +

+
+

+ AMQPExchangeDeclareConfig +

+

+ (Appears on: AMQPEventSource) +

+

+

+ AMQPExchangeDeclareConfig holds the configuration for the exchange on the server +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ durable
bool +
+ (Optional) +

+ Durable keeps the exchange also after the server restarts +

+
+ autoDelete
bool +
+ (Optional) +

+ AutoDelete removes the exchange when no bindings are active +

+
+ internal
bool +
+ (Optional) +

+ Internal when true does not accept publishings +

+
+ noWait
bool +
+ (Optional) +

+ NowWait when true does not wait for a confirmation from the server +

+
+

+ AMQPQueueBindConfig +

+

+ (Appears on: AMQPEventSource) +

+

+

+ AMQPQueueBindConfig holds the configuration that binds an exchange to a queue so that publishings to the exchange will be routed to the queue when the publishing routing key matches the binding routing key +

+

+ + + + + + + + + + + + + +
+ Field + + Description +
+ noWait
bool +
+ (Optional) +

+ NowWait false and the queue could not be bound, the channel will be closed with an error +

+
+

+ AMQPQueueDeclareConfig +

+

+ (Appears on: AMQPEventSource) +

+

+

+ AMQPQueueDeclareConfig holds the configuration of a queue to hold messages and deliver to consumers. Declaring creates a queue if it doesn’t already exist, or ensures that an existing queue matches the same parameters +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ name
string +
+ (Optional) +

+ Name of the queue. If empty the server auto-generates a unique name for this queue +

+
+ durable
bool +
+ (Optional) +

+ Durable keeps the queue also after the server restarts +

+
+ autoDelete
bool +
+ (Optional) +

+ AutoDelete removes the queue when no consumers are active +

+
+ exclusive
bool +
+ (Optional) +

+ Exclusive sets the queues to be accessible only by the connection that declares them and will be deleted wgen the connection closes +

+
+ noWait
bool +
+ (Optional) +

+ NowWait when true, the queue assumes to be declared on the server +

+
+

+ AzureEventsHubEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ AzureEventsHubEventSource describes the event source for azure events hub More info at https://docs.microsoft.com/en-us/azure/event-hubs/ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ fqdn
string +
+

+ FQDN of the EventHubs namespace you created More info at https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-get-connection-string +

+
+ sharedAccessKeyName
Kubernetes core/v1.SecretKeySelector +
+

+ SharedAccessKeyName is the name you chose for your application’s SAS keys +

+
+ sharedAccessKey
Kubernetes core/v1.SecretKeySelector +
+

+ SharedAccessKey is the generated value of the key +

+
+ hubName
string +
+

+ Event Hub path/name +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ BitbucketServerEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ BitbucketServerEventSource refers to event-source related to Bitbucket Server events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ webhook
WebhookContext +
+

+ Webhook holds configuration to run a http server +

+
+ projectKey
string +
+

+ ProjectKey is the key of project for which integration needs to setup +

+
+ repositorySlug
string +
+

+ RepositorySlug is the slug of the repository for which integration needs to setup +

+
+ events
\[\]string +
+

+ Events are bitbucket event to listen to. Refer https://confluence.atlassian.com/bitbucketserver/event-payload-938025882.html +

+
+ accessToken
Kubernetes core/v1.SecretKeySelector +
+

+ AccessToken is reference to K8s secret which holds the bitbucket api access information +

+
+ webhookSecret
Kubernetes core/v1.SecretKeySelector +
+

+ WebhookSecret is reference to K8s secret which holds the bitbucket webhook secret (for HMAC validation) +

+
+ bitbucketserverBaseURL
string +
+

+ BitbucketServerBaseURL is the base URL for API requests to a custom endpoint +

+
+ deleteHookOnFinish
bool +
+ (Optional) +

+ DeleteHookOnFinish determines whether to delete the Bitbucket Server hook for the project once the event source is stopped. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ CalendarEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ CalendarEventSource describes a time based dependency. One of the fields (schedule, interval, or recurrence) must be passed. Schedule takes precedence over interval; interval takes precedence over recurrence +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ schedule
string +
+ (Optional) +

+ Schedule is a cron-like expression. For reference, see: https://en.wikipedia.org/wiki/Cron +

+
+ interval
string +
+ (Optional) +

+ Interval is a string that describes an interval duration, e.g. 1s, 30m, 2h… +

+
+ exclusionDates
\[\]string +
+

+ ExclusionDates defines the list of DATE-TIME exceptions for recurring events. +

+
+ timezone
string +
+ (Optional) +

+ Timezone in which to run the schedule +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ persistence
EventPersistence +
+

+ Persistence hold the configuration for event persistence +

+
+

+ CatchupConfiguration +

+

+ (Appears on: EventPersistence) +

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ enabled
bool +
+

+ Enabled enables to triggered the missed schedule when eventsource restarts +

+
+ maxDuration
string +
+

+ MaxDuration holds max catchup duration +

+
+

+ ConfigMapPersistence +

+

+ (Appears on: EventPersistence) +

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ name
string +
+

+ Name of the configmap +

+
+ createIfNotExist
bool +
+

+ CreateIfNotExist will create configmap if it doesn’t exists +

+
+

+ EmitterEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ EmitterEventSource describes the event source for emitter More info at https://emitter.io/develop/getting-started/ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ broker
string +
+

+ Broker URI to connect to. +

+
+ channelKey
string +
+

+ ChannelKey refers to the channel key +

+
+ channelName
string +
+

+ ChannelName refers to the channel name +

+
+ username
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ Username to use to connect to broker +

+
+ password
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ Password to use to connect to broker +

+
+ connectionBackoff
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+ (Optional) +

+ Backoff holds parameters applied to connection. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the emitter client. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ EventPersistence +

+

+ (Appears on: CalendarEventSource) +

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ catchup
CatchupConfiguration +
+

+ Catchup enables to triggered the missed schedule when eventsource restarts +

+
+ configMap
ConfigMapPersistence +
+

+ ConfigMap holds configmap details for persistence +

+
+

+ EventSource +

+

+

+ EventSource is the definition of a eventsource resource +

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ metadata
Kubernetes meta/v1.ObjectMeta +
+ Refer to the Kubernetes API documentation for the fields of the metadata field. +
+ spec
EventSourceSpec +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ eventBusName
string +
+

+ EventBusName references to a EventBus name. By default the value is “default” +

+
+ template
Template +
+ (Optional) +

+ Template is the pod specification for the event source +

+
+ service
Service +
+ (Optional) +

+ Service is the specifications of the service to expose the event source +

+
+ minio
map\[string\]github.com/argoproj/argo-events/pkg/apis/common.S3Artifact +
+

+ Minio event sources +

+
+ calendar
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.CalendarEventSource +
+

+ Calendar event sources +

+
+ file
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.FileEventSource +
+

+ File event sources +

+
+ resource
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.ResourceEventSource +
+

+ Resource event sources +

+
+ webhook
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.WebhookContext +
+

+ Webhook event sources +

+
+ amqp
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.AMQPEventSource +
+

+ AMQP event sources +

+
+ kafka
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.KafkaEventSource +
+

+ Kafka event sources +

+
+ mqtt
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.MQTTEventSource +
+

+ MQTT event sources +

+
+ nats
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.NATSEventsSource +
+

+ NATS event sources +

+
+ sns
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.SNSEventSource +
+

+ SNS event sources +

+
+ sqs
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.SQSEventSource +
+

+ SQS event sources +

+
+ pubSub
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.PubSubEventSource +
+

+ PubSub event sources +

+
+ github
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.GithubEventSource +
+

+ Github event sources +

+
+ gitlab
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.GitlabEventSource +
+

+ Gitlab event sources +

+
+ hdfs
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.HDFSEventSource +
+

+ HDFS event sources +

+
+ slack
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.SlackEventSource +
+

+ Slack event sources +

+
+ storageGrid
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.StorageGridEventSource +
+

+ StorageGrid event sources +

+
+ azureEventsHub
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.AzureEventsHubEventSource +
+

+ AzureEventsHub event sources +

+
+ stripe
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.StripeEventSource +
+

+ Stripe event sources +

+
+ emitter
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.EmitterEventSource +
+

+ Emitter event source +

+
+ redis
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.RedisEventSource +
+

+ Redis event source +

+
+ nsq
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.NSQEventSource +
+

+ NSQ event source +

+
+ pulsar
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.PulsarEventSource +
+

+ Pulsar event source +

+
+ generic
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.GenericEventSource +
+

+ Generic event source +

+
+ replicas
int32 +
+

+ Replicas is the event source deployment replicas +

+
+ bitbucketserver
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.BitbucketServerEventSource +
+

+ Bitbucket Server event sources +

+
+
+ status
EventSourceStatus +
+ (Optional) +
+

+ EventSourceSpec +

+

+ (Appears on: EventSource) +

+

+

+ EventSourceSpec refers to specification of event-source resource +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ eventBusName
string +
+

+ EventBusName references to a EventBus name. By default the value is “default” +

+
+ template
Template +
+ (Optional) +

+ Template is the pod specification for the event source +

+
+ service
Service +
+ (Optional) +

+ Service is the specifications of the service to expose the event source +

+
+ minio
map\[string\]github.com/argoproj/argo-events/pkg/apis/common.S3Artifact +
+

+ Minio event sources +

+
+ calendar
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.CalendarEventSource +
+

+ Calendar event sources +

+
+ file
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.FileEventSource +
+

+ File event sources +

+
+ resource
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.ResourceEventSource +
+

+ Resource event sources +

+
+ webhook
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.WebhookContext +
+

+ Webhook event sources +

+
+ amqp
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.AMQPEventSource +
+

+ AMQP event sources +

+
+ kafka
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.KafkaEventSource +
+

+ Kafka event sources +

+
+ mqtt
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.MQTTEventSource +
+

+ MQTT event sources +

+
+ nats
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.NATSEventsSource +
+

+ NATS event sources +

+
+ sns
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.SNSEventSource +
+

+ SNS event sources +

+
+ sqs
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.SQSEventSource +
+

+ SQS event sources +

+
+ pubSub
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.PubSubEventSource +
+

+ PubSub event sources +

+
+ github
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.GithubEventSource +
+

+ Github event sources +

+
+ gitlab
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.GitlabEventSource +
+

+ Gitlab event sources +

+
+ hdfs
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.HDFSEventSource +
+

+ HDFS event sources +

+
+ slack
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.SlackEventSource +
+

+ Slack event sources +

+
+ storageGrid
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.StorageGridEventSource +
+

+ StorageGrid event sources +

+
+ azureEventsHub
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.AzureEventsHubEventSource +
+

+ AzureEventsHub event sources +

+
+ stripe
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.StripeEventSource +
+

+ Stripe event sources +

+
+ emitter
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.EmitterEventSource +
+

+ Emitter event source +

+
+ redis
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.RedisEventSource +
+

+ Redis event source +

+
+ nsq
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.NSQEventSource +
+

+ NSQ event source +

+
+ pulsar
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.PulsarEventSource +
+

+ Pulsar event source +

+
+ generic
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.GenericEventSource +
+

+ Generic event source +

+
+ replicas
int32 +
+

+ Replicas is the event source deployment replicas +

+
+ bitbucketserver
map\[string\]github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1.BitbucketServerEventSource +
+

+ Bitbucket Server event sources +

+
+

+ EventSourceStatus +

+

+ (Appears on: EventSource) +

+

+

+ EventSourceStatus holds the status of the event-source resource +

+

+ + + + + + + + + + + + + +
+ Field + + Description +
+ Status
github.com/argoproj/argo-events/pkg/apis/common.Status +
+

+ (Members of Status are embedded into this type.) +

+
+

+ FileEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ FileEventSource describes an event-source for file related events. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ eventType
string +
+

+ Type of file operations to watch Refer https://github.com/fsnotify/fsnotify/blob/master/fsnotify.go for more information +

+
+ watchPathConfig
WatchPathConfig +
+

+ WatchPathConfig contains configuration about the file path to watch +

+
+ polling
bool +
+

+ Use polling instead of inotify +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ GenericEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ GenericEventSource refers to a generic event source. It can be used to implement a custom event source. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ URL of the gRPC server that implements the event source. +

+
+ config
string +
+

+ Config is the event source configuration +

+
+ insecure
bool +
+

+ Insecure determines the type of connection. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ authSecret
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ AuthSecret holds a secret selector that contains a bearer token for authentication +

+
+

+ GithubAppCreds +

+

+ (Appears on: GithubEventSource) +

+

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ privateKey
Kubernetes core/v1.SecretKeySelector +
+

+ PrivateKey refers to a K8s secret containing the GitHub app private key +

+
+ appID
int64 +
+

+ AppID refers to the GitHub App ID for the application you created +

+
+ installationID
int64 +
+

+ InstallationID refers to the Installation ID of the GitHub app you created and installed +

+
+

+ GithubEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ GithubEventSource refers to event-source for github related events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ id
int64 +
+ (Optional) +

+ Id is the webhook’s id Deprecated: This is not used at all, will be removed in v1.6 +

+
+ webhook
WebhookContext +
+

+ Webhook refers to the configuration required to run a http server +

+
+ owner
string +
+ (Optional) +

+ DeprecatedOwner refers to GitHub owner name i.e. argoproj Deprecated: use Repositories instead. Will be unsupported in v 1.6 +

+
+ repository
string +
+ (Optional) +

+ DeprecatedRepository refers to GitHub repo name i.e. argo-events Deprecated: use Repositories instead. Will be unsupported in v 1.6 +

+
+ events
\[\]string +
+

+ Events refer to Github events to which the event source will subscribe +

+
+ apiToken
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ APIToken refers to a K8s secret containing github api token +

+
+ webhookSecret
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ WebhookSecret refers to K8s secret containing GitHub webhook secret https://developer.github.com/webhooks/securing/ +

+
+ insecure
bool +
+

+ Insecure tls verification +

+
+ active
bool +
+ (Optional) +

+ Active refers to status of the webhook for event deliveries. -https://developer.github.com/webhooks/creating/#active +https://developer.github.com/webhooks/creating/\#active +

+
+ contentType
string +
+

+ ContentType of the event delivery +

+
+ githubBaseURL
string +
+ (Optional) +

+ GitHub base URL (for GitHub Enterprise) +

+
+ githubUploadURL
string +
+ (Optional) +

+ GitHub upload URL (for GitHub Enterprise) +

+
+ deleteHookOnFinish
bool +
+ (Optional) +

+ DeleteHookOnFinish determines whether to delete the GitHub hook for the repository once the event source is stopped. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ repositories
\[\]OwnedRepositories +
+

+ Repositories holds the information of repositories, which uses repo owner as the key, and list of repo names as the value. Not required if Organizations is set. +

+
+ organizations
\[\]string +
+

+ Organizations holds the names of organizations (used for organization level webhooks). Not required if Repositories is set. +

+
+ githubApp
GithubAppCreds +
+ (Optional) +

+ GitHubApp holds the GitHub app credentials +

+
+

+ GitlabEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ GitlabEventSource refers to event-source related to Gitlab events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ webhook
WebhookContext +
+

+ Webhook holds configuration to run a http server +

+
+ projectID
string +
+

+ DeprecatedProjectID is the id of project for which integration needs to setup Deprecated: use Projects instead. Will be unsupported in v 1.7 +

+
+ events
\[\]string +
+

+ Events are gitlab event to listen to. Refer -https://github.com/xanzy/go-gitlab/blob/bf34eca5d13a9f4c3f501d8a97b8ac226d55e4d9/projects.go#L794. +https://github.com/xanzy/go-gitlab/blob/bf34eca5d13a9f4c3f501d8a97b8ac226d55e4d9/projects.go\#L794. +

+
+ accessToken
Kubernetes core/v1.SecretKeySelector +
+

+ AccessToken references to k8 secret which holds the gitlab api access information +

+
+ enableSSLVerification
bool +
+ (Optional) +

+ EnableSSLVerification to enable ssl verification +

+
+ gitlabBaseURL
string +
+

+ GitlabBaseURL is the base URL for API requests to a custom endpoint +

+
+ deleteHookOnFinish
bool +
+ (Optional) +

+ DeleteHookOnFinish determines whether to delete the GitLab hook for the project once the event source is stopped. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ projects
\[\]string +
+

+ List of project IDs or project namespace paths like “whynowy/test” +

+
+ secretToken
Kubernetes core/v1.SecretKeySelector +
+

+ SecretToken references to k8 secret which holds the Secret Token used by webhook config +

+
+

+ HDFSEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ HDFSEventSource refers to event-source for HDFS related events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ WatchPathConfig
WatchPathConfig +
+

+ (Members of WatchPathConfig are embedded into this type.) +

+
+ type
string +
+

+ Type of file operations to watch +

+
+ checkInterval
string +
+

+ CheckInterval is a string that describes an interval duration to check the directory state, e.g. 1s, 30m, 2h… (defaults to 1m) +

+
+ addresses
\[\]string +
+
+ hdfsUser
string +
+

+ HDFSUser is the user to access HDFS file system. It is ignored if either ccache or keytab is used. +

+
+ krbCCacheSecret
Kubernetes core/v1.SecretKeySelector +
+

+ KrbCCacheSecret is the secret selector for Kerberos ccache Either ccache or keytab can be set to use Kerberos. +

+
+ krbKeytabSecret
Kubernetes core/v1.SecretKeySelector +
+

+ KrbKeytabSecret is the secret selector for Kerberos keytab Either ccache or keytab can be set to use Kerberos. +

+
+ krbUsername
string +
+

+ KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used. +

+
+ krbRealm
string +
+

+ KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used. +

+
+ krbConfigConfigMap
Kubernetes core/v1.ConfigMapKeySelector +
+

+ KrbConfig is the configmap selector for Kerberos config as string It must be set if either ccache or keytab is used. +

+
+ krbServicePrincipalName
string +
+

+ KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ KafkaConsumerGroup +

+

+ (Appears on: KafkaEventSource) +

+

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ groupName
string +
+

+ The name for the consumer group to use +

+
+ oldest
bool +
+ (Optional) +

+ When starting up a new group do we want to start from the oldest event (true) or the newest event (false), defaults to false +

+
+ rebalanceStrategy
string +
+ (Optional) +

+ Rebalance strategy can be one of: sticky, roundrobin, range. Range is the default. +

+
+

+ KafkaEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ KafkaEventSource refers to event-source for Kafka related events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ URL to kafka cluster, multiple URLs separated by comma +

+
+ partition
string +
+

+ Partition name +

+
+ topic
string +
+

+ Topic name +

+
+ connectionBackoff
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+

+ Backoff holds parameters applied to connection. +

+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the kafka client. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ consumerGroup
KafkaConsumerGroup +
+ (Optional) +

+ Consumer group for kafka client +

+
+ limitEventsPerSecond
int64 +
+ (Optional) +

+ Sets a limit on how many events get read from kafka per second. +

+
+ version
string +
+ (Optional) +

+ Specify what kafka version is being connected to enables certain features in sarama, defaults to 1.0.0 +

+
+ sasl
github.com/argoproj/argo-events/pkg/apis/common.SASLConfig +
+ (Optional) +

+ SASL configuration for the kafka client +

+
+

+ MQTTEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ MQTTEventSource refers to event-source for MQTT related events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ URL to connect to broker +

+
+ topic
string +
+

+ Topic name +

+
+ clientId
string +
+

+ ClientID is the id of the client +

+
+ connectionBackoff
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+

+ ConnectionBackoff holds backoff applied to connection. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the mqtt client. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ NATSAuth +

+

+ (Appears on: NATSEventsSource) +

+

+

+ NATSAuth refers to the auth info for NATS EventSource +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ basic
github.com/argoproj/argo-events/pkg/apis/common.BasicAuth +
+ (Optional) +

+ Baisc auth with username and password +

+
+ token
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ Token used to connect +

+
+ nkey
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ NKey used to connect +

+
+ credential
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ credential used to connect +

+
+

+ NATSEventsSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ NATSEventsSource refers to event-source for NATS related events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ URL to connect to NATS cluster +

+
+ subject
string +
+

+ Subject holds the name of the subject onto which messages are published +

+
+ connectionBackoff
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+

+ ConnectionBackoff holds backoff applied to connection. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the nats client. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ auth
NATSAuth +
+ (Optional) +

+ Auth information +

+
+

+ NSQEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ NSQEventSource describes the event source for NSQ PubSub More info at https://godoc.org/github.com/nsqio/go-nsq +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ hostAddress
string +
+

+ HostAddress is the address of the host for NSQ lookup +

+
+ topic
string +
+

+ Topic to subscribe to. +

+
+ channel
string +
+

+ Channel used for subscription +

+
+ connectionBackoff
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+ (Optional) +

+ Backoff holds parameters applied to connection. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the nsq client. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ OwnedRepositories +

+

+ (Appears on: GithubEventSource) +

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ owner
string +
+

+ Organization or user name +

+
+ names
\[\]string +
+

+ Repository names +

+
+

+ PubSubEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ PubSubEventSource refers to event-source for GCP PubSub related events. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ projectID
string +
+ (Optional) +

+ ProjectID is GCP project ID for the subscription. Required if you run Argo Events outside of GKE/GCE. (otherwise, the default value is its project) +

+
+ topicProjectID
string +
+ (Optional) +

+ TopicProjectID is GCP project ID for the topic. By default, it is same as ProjectID. +

+
+ topic
string +
+ (Optional) +

+ Topic to which the subscription should belongs. Required if you want the eventsource to create a new subscription. If you specify this field along with an existing subscription, it will be verified whether it actually belongs to the specified topic. +

+
+ subscriptionID
string +
+ (Optional) +

+ SubscriptionID is ID of subscription. Required if you use existing subscription. The default value will be auto generated hash based on this eventsource setting, so the subscription might be recreated every time you update the setting, which has a possibility of event loss. +

+
+ credentialSecret
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ CredentialSecret references to the secret that contains JSON credentials to access GCP. If it is missing, it implicitly uses Workload Identity to access. https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity +

+
+ deleteSubscriptionOnFinish
bool +
+ (Optional) +

+ DeleteSubscriptionOnFinish determines whether to delete the GCP PubSub subscription once the event source is stopped. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ PulsarEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ PulsarEventSource describes the event source for Apache Pulsar +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ topics
\[\]string +
+

+ Name of the topics to subscribe to. +

+
+ type
string +
+ (Optional) +

+ Type of the subscription. Only “exclusive” and “shared” is supported. Defaults to exclusive. +

+
+ url
string +
+

+ Configure the service URL for the Pulsar service. +

+
+ tlsTrustCertsSecret
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ Trusted TLS certificate secret. +

+
+ tlsAllowInsecureConnection
bool +
+ (Optional) +

+ Whether the Pulsar client accept untrusted TLS certificate from broker. +

+
+ tlsValidateHostname
bool +
+ (Optional) +

+ Whether the Pulsar client verify the validity of the host name from broker. +

+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the pulsar client. +

+
+ connectionBackoff
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+ (Optional) +

+ Backoff holds parameters applied to connection. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ authTokenSecret
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ Authentication token for the pulsar client. +

+
+

+ RedisEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ RedisEventSource describes an event source for the Redis PubSub. More info at -https://godoc.org/github.com/go-redis/redis#example-PubSub +https://godoc.org/github.com/go-redis/redis\#example-PubSub +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ hostAddress
string +
+

+ HostAddress refers to the address of the Redis host/server +

+
+ password
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ Password required for authentication if any. +

+
+ namespace
string +
+ (Optional) +

+ Namespace to use to retrieve the password from. It should only be specified if password is declared +

+
+ db
int32 +
+ (Optional) +

+ DB to use. If not specified, default DB 0 will be used. +

+
+ channels
\[\]string +
+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the redis client. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ ResourceEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ ResourceEventSource refers to a event-source for K8s resource related events. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ namespace
string +
+

+ Namespace where resource is deployed +

+
+ filter
ResourceFilter +
+ (Optional) +

+ Filter is applied on the metadata of the resource If you apply filter, then the internal event informer will only monitor objects that pass the filter. +

+
+ GroupVersionResource
Kubernetes meta/v1.GroupVersionResource +
+

+ (Members of GroupVersionResource are embedded into this type.) +

+

+ Group of the resource +

+
+ eventTypes
\[\]ResourceEventType +
+

+ EventTypes is the list of event type to watch. Possible values are - ADD, UPDATE and DELETE. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ ResourceEventType (string alias) +

+

+

+ (Appears on: ResourceEventSource) +

+

+

+ ResourceEventType is the type of event for the K8s resource mutation +

+

+

+ ResourceFilter +

+

+ (Appears on: ResourceEventSource) +

+

+

+ ResourceFilter contains K8s ObjectMeta information to further filter resource event objects +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ prefix
string +
+ (Optional) +

+ Prefix filter is applied on the resource name. +

+
+ labels
\[\]Selector +
+ (Optional) +

+ Labels provide listing options to K8s API to watch resource/s. Refer https://kubernetes.io/docs/concepts/overview/working-with-objects/label-selectors/ for more info. +

+
+ fields
\[\]Selector +
+ (Optional) +

+ Fields provide field filters similar to K8s field selector (see https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/). Unlike K8s field selector, it supports arbitrary fileds like “spec.serviceAccountName”, and the value could be a string or a regex. -Same as K8s field selector, operator “=”, “==” and “!=” are supported. +Same as K8s field selector, operator “=”, “==” and “\!=” are supported. +

+
+ createdBy
Kubernetes meta/v1.Time +
+ (Optional) +

+ If resource is created before the specified time then the event is treated as valid. +

+
+ afterStart
bool +
+ (Optional) +

+ If the resource is created after the start time then the event is treated as valid. +

+
+

+ SNSEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ SNSEventSource refers to event-source for AWS SNS related events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ webhook
WebhookContext +
+

+ Webhook configuration for http server +

+
+ topicArn
string +
+

+ TopicArn +

+
+ accessKey
Kubernetes core/v1.SecretKeySelector +
+

+ AccessKey refers K8s secret containing aws access key +

+
+ secretKey
Kubernetes core/v1.SecretKeySelector +
+

+ SecretKey refers K8s secret containing aws secret key +

+
+ region
string +
+

+ Region is AWS region +

+
+ roleARN
string +
+ (Optional) +

+ RoleARN is the Amazon Resource Name (ARN) of the role to assume. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ validateSignature
bool +
+ (Optional) +

+ ValidateSignature is boolean that can be set to true for SNS signature verification +

+
+

+ SQSEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ SQSEventSource refers to event-source for AWS SQS related events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ accessKey
Kubernetes core/v1.SecretKeySelector +
+

+ AccessKey refers K8s secret containing aws access key +

+
+ secretKey
Kubernetes core/v1.SecretKeySelector +
+

+ SecretKey refers K8s secret containing aws secret key +

+
+ region
string +
+

+ Region is AWS region +

+
+ queue
string +
+

+ Queue is AWS SQS queue to listen to for messages +

+
+ waitTimeSeconds
int64 +
+

+ WaitTimeSeconds is The duration (in seconds) for which the call waits for a message to arrive in the queue before returning. +

+
+ roleARN
string +
+ (Optional) +

+ RoleARN is the Amazon Resource Name (ARN) of the role to assume. +

+
+ jsonBody
bool +
+ (Optional) +

+ JSONBody specifies that all event body payload coming from this source will be JSON +

+
+ queueAccountId
string +
+ (Optional) +

+ QueueAccountID is the ID of the account that created the queue to monitor +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ dlq
bool +
+ (Optional) +

+ DLQ specifies if a dead-letter queue is configured for messages that can’t be processed successfully. If set to true, messages with invalid payload won’t be acknowledged to allow to forward them farther to the dead-letter queue. The default value is false. +

+
+

+ Selector +

+

+ (Appears on: ResourceFilter) +

+

+

+ Selector represents conditional operation to select K8s objects. +

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ key
string +
+

+ Key name +

+
+ operation
string +
+ (Optional) +

-Supported operations like ==, !=, \<=, \>= etc. Defaults to ==. Refer -https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors + +Supported operations like ==, \!=, \<=, \>= etc. Defaults to ==. Refer +https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/\#label-selectors for more info. +

+
+ value
string +
+

+ Value +

+
+

+ Service +

+

+ (Appears on: EventSourceSpec) +

+

+

+ Service holds the service information eventsource exposes +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ ports
\[\]Kubernetes core/v1.ServicePort +
+

+ The list of ports that are exposed by this ClusterIP service. +

+
+ clusterIP
string +
+ (Optional) +

+ clusterIP is the IP address of the service and is usually assigned randomly by the master. If an address is specified manually and is not in use by others, it will be allocated to the service; otherwise, @@ -4292,495 +8117,927 @@ creation of the service will fail. This field can not be changed through updates. Valid values are “None”, empty string (“”), or a valid IP address. “None” can be specified for headless services when proxying is not required. More info: -https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies +https://kubernetes.io/docs/concepts/services-networking/service/\#virtual-ips-and-service-proxies +

+
+

+ SlackEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ SlackEventSource refers to event-source for Slack related events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ signingSecret
Kubernetes core/v1.SecretKeySelector +
+

+ Slack App signing secret +

+
+ token
Kubernetes core/v1.SecretKeySelector +
+

+ Token for URL verification handshake +

+
+ webhook
WebhookContext +
+

+ Webhook holds configuration for a REST endpoint +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ StorageGridEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ StorageGridEventSource refers to event-source for StorageGrid related events +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ webhook
WebhookContext +
+

+ Webhook holds configuration for a REST endpoint +

+
+ events
\[\]string +
+
+ filter
StorageGridFilter +
+

+ Filter on object key which caused the notification. +

+
+ topicArn
string +
+

+ TopicArn +

+
+ bucket
string +
+

+ Name of the bucket to register notifications for. +

+
+ region
string +
+ (Optional) +

+ S3 region. Defaults to us-east-1 +

+
+ authToken
Kubernetes core/v1.SecretKeySelector +
+

+ Auth token for storagegrid api +

+
+ apiURL
string +
+

+ APIURL is the url of the storagegrid api. +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ StorageGridFilter +

+

+ (Appears on: StorageGridEventSource) +

+

+

+ StorageGridFilter represents filters to apply to bucket notifications for specifying constraints on objects +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ prefix
string +
+
+ suffix
string +
+
+

+ StripeEventSource +

+

+ (Appears on: EventSourceSpec) +

+

+

+ StripeEventSource describes the event source for stripe webhook notifications More info at https://stripe.com/docs/webhooks +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ webhook
WebhookContext +
+

+ Webhook holds configuration for a REST endpoint +

+
+ createWebhook
bool +
+ (Optional) +

+ CreateWebhook if specified creates a new webhook programmatically. +

+
+ apiKey
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ APIKey refers to K8s secret that holds Stripe API key. Used only if CreateWebhook is enabled. +

+
+ eventFilter
\[\]string +
+ (Optional) +

+ EventFilter describes the type of events to listen to. If not specified, all types of events will be processed. More info at https://stripe.com/docs/api/events/list +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+

+ Template +

+

+ (Appears on: EventSourceSpec) +

+

+

+ Template holds the information of an EventSource deployment template +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ metadata
github.com/argoproj/argo-events/pkg/apis/common.Metadata +
+

+ Metadata sets the pods’s metadata, i.e. annotations and labels +

+
+ serviceAccountName
string +
+ (Optional) +

+ ServiceAccountName is the name of the ServiceAccount to use to run event source pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ +

+
+ container
Kubernetes core/v1.Container +
+ (Optional) +

+ Container is the main container image to run in the event source pod +

+
+ volumes
\[\]Kubernetes core/v1.Volume +
+ (Optional) +

+ Volumes is a list of volumes that can be mounted by containers in an eventsource. +

+
+ securityContext
Kubernetes core/v1.PodSecurityContext +
+ (Optional) +

+ SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field. +

+
+ affinity
Kubernetes core/v1.Affinity +
+ (Optional) +

+ If specified, the pod’s scheduling constraints +

+
+ tolerations
\[\]Kubernetes core/v1.Toleration +
+ (Optional) +

+ If specified, the pod’s tolerations. +

+
+ nodeSelector
map\[string\]string +
+ (Optional) +

+ NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ +

+
+ imagePullSecrets
\[\]Kubernetes core/v1.LocalObjectReference +
+ (Optional) +

+ ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: -https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod +https://kubernetes.io/docs/concepts/containers/images\#specifying-imagepullsecrets-on-a-pod +

+
+ priorityClassName
string +
+ (Optional) +

+ If specified, indicates the EventSource pod’s priority. “system-node-critical” and “system-cluster-critical” are two special keywords which indicate the highest priorities with the former being the @@ -4788,86 +9045,159 @@ highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default. More info: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ +

+
+ priority
int32 +
+ (Optional) +

+ The priority value. Various system components use this field to find the priority of the EventSource pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority. More info: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ +

+
+

+ WatchPathConfig +

+

+ (Appears on: FileEventSource, HDFSEventSource) +

+

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ directory
string +
+

+ Directory to watch for events +

+
+ path
string +
+

+ Path is relative path of object to watch with respect to the directory +

+
+ pathRegexp
string +
+

+ PathRegexp is regexp of relative path of object to watch with respect to the directory +

+
+

+ WebhookContext +

+

+ (Appears on: BitbucketServerEventSource, EventSourceSpec, @@ -4877,119 +9207,225 @@ WebhookContext SlackEventSource, StorageGridEventSource, StripeEventSource) +

+

+

+ WebhookContext holds a general purpose REST API context +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ endpoint
string +
+

+ REST API endpoint +

+
+ method
string +
+

+ Method is HTTP request method that indicates the desired action to be performed for a given resource. See RFC7231 Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content +

+
+ port
string +
+

+ Port on which HTTP server is listening for incoming events. +

+
+ url
string +
+

+ URL is the url of the server. +

+
+ serverCertSecret
Kubernetes core/v1.SecretKeySelector +
+

+ ServerCertPath refers the file that contains the cert. +

+
+ serverKeySecret
Kubernetes core/v1.SecretKeySelector +
+

+ ServerKeyPath refers the file that contains private key +

+
+ metadata
map\[string\]string +
+ (Optional) +

+ Metadata holds the user defined metadata which will passed along the event payload. +

+
+ authSecret
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ AuthSecret holds a secret selector that contains a bearer token for authentication +

+
+
+

+ Generated with gen-crd-api-reference-docs. +

diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index 1186c93811..e51aeae78f 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -2682,6 +2682,10 @@ "name": { "description": "Name is a unique name of this dependency", "type": "string" + }, + "transform": { + "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.EventDependencyTransformer", + "description": "Transform transforms the event data" } }, "required": [ @@ -2719,6 +2723,20 @@ }, "type": "object" }, + "io.argoproj.sensor.v1alpha1.EventDependencyTransformer": { + "description": "EventDependencyTransformer transforms the event", + "properties": { + "jq": { + "description": "JQ holds the jq command applied for transformation", + "type": "string" + }, + "script": { + "description": "Script refers to a Lua script used to transform the event", + "type": "string" + } + }, + "type": "object" + }, "io.argoproj.sensor.v1alpha1.ExprFilter": { "properties": { "expr": { diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 0f856d830f..21a41440f5 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -2671,6 +2671,10 @@ "name": { "description": "Name is a unique name of this dependency", "type": "string" + }, + "transform": { + "description": "Transform transforms the event data", + "$ref": "#/definitions/io.argoproj.sensor.v1alpha1.EventDependencyTransformer" } } }, @@ -2702,6 +2706,20 @@ } } }, + "io.argoproj.sensor.v1alpha1.EventDependencyTransformer": { + "description": "EventDependencyTransformer transforms the event", + "type": "object", + "properties": { + "jq": { + "description": "JQ holds the jq command applied for transformation", + "type": "string" + }, + "script": { + "description": "Script refers to a Lua script used to transform the event", + "type": "string" + } + } + }, "io.argoproj.sensor.v1alpha1.ExprFilter": { "type": "object", "required": [ diff --git a/api/sensor.html b/api/sensor.html index dfd53f2597..b6438d06c3 100644 --- a/api/sensor.html +++ b/api/sensor.html @@ -887,6 +887,19 @@

EventDependency

Filters and rules governing toleration of success and constraints on the context and data of an event

+ + +transform
+ + +EventDependencyTransformer + + + + +

Transform transforms the event data

+ +

EventDependencyFilter @@ -960,6 +973,49 @@

EventDependencyFilter +

EventDependencyTransformer +

+

+(Appears on: +EventDependency) +

+

+

EventDependencyTransformer transforms the event

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+jq
+ +string + +
+(Optional) +

JQ holds the jq command applied for transformation

+
+script
+ +string + +
+(Optional) +

Script refers to a Lua script used to transform the event

+

ExprFilter

diff --git a/api/sensor.md b/api/sensor.md index 16ce1ae8f5..b880b08422 100644 --- a/api/sensor.md +++ b/api/sensor.md @@ -1,735 +1,1381 @@

+ Packages: +

+ +

+ argoproj.io/v1alpha1 +

+

+

+ Package v1alpha1 is the v1alpha1 version of the API. +

+

+ Resource Types: + +

+ AWSLambdaTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ AWSLambdaTrigger refers to specification of the trigger to invoke an AWS Lambda function +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ functionName
string +
+

+ FunctionName refers to the name of the function to invoke. +

+
+ accessKey
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ AccessKey refers K8s secret containing aws access key +

+
+ secretKey
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ SecretKey refers K8s secret containing aws secret key +

+
+ region
string +
+

+ Region is AWS region +

+
+ payload
\[\]TriggerParameter +
+

+ Payload is the list of key-value extracted from an event payload to construct the request payload. +

+
+ parameters
\[\]TriggerParameter +
+ (Optional) +

+ Parameters is the list of key-value extracted from event’s payload that are applied to the trigger resource. +

+
+ invocationType
string +
+ (Optional) +

+ Choose from the following options. +

+
    +
  • +

    + RequestResponse (default) - Invoke the function synchronously. Keep the connection open until the function returns a response or times out. The API response includes the function response and additional data. +

    +
  • +
  • +

    + Event - Invoke the function asynchronously. Send events that fail multiple times to the function’s dead-letter queue (if it’s configured). The API response only includes a status code. +

    +
  • +
  • +

    + DryRun - Validate parameter values and verify that the user or role has permission to invoke the function. +

    +
  • +
+
+ roleARN
string +
+ (Optional) +

+ RoleARN is the Amazon Resource Name (ARN) of the role to assume. +

+
+

+ ArgoWorkflowOperation (string alias) +

+

+

+ (Appears on: ArgoWorkflowTrigger) +

+

+

+ ArgoWorkflowOperation refers to the type of the operation performed on the Argo Workflow +

+

+

+ ArgoWorkflowTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ ArgoWorkflowTrigger is the trigger for the Argo Workflow +

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ source
ArtifactLocation +
+

+ Source of the K8s resource file(s) +

+
+ operation
ArgoWorkflowOperation +
+ (Optional) +

+ Operation refers to the type of operation performed on the argo workflow resource. Default value is Submit. +

+
+ parameters
\[\]TriggerParameter +
+

+ Parameters is the list of parameters to pass to resolved Argo Workflow object +

+
+

+ ArtifactLocation +

+

+ (Appears on: ArgoWorkflowTrigger, StandardK8STrigger) +

+

+

+ ArtifactLocation describes the source location for an external artifact +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ s3
github.com/argoproj/argo-events/pkg/apis/common.S3Artifact +
+

+ S3 compliant artifact +

+
+ inline
string +
+

+ Inline artifact is embedded in sensor spec as a string +

+
+ file
FileArtifact +
+

+ File artifact is artifact stored in a file +

+
+ url
URLArtifact +
+

+ URL to fetch the artifact from +

+
+ configmap
Kubernetes core/v1.ConfigMapKeySelector +
+

+ Configmap that stores the artifact +

+
+ git
GitArtifact +
+

+ Git repository hosting the artifact +

+
+ resource
github.com/argoproj/argo-events/pkg/apis/common.Resource +
+

+ Resource is generic template for K8s resource +

+
+

+ AzureEventHubsTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ AzureEventHubsTrigger refers to specification of the Azure Event Hubs Trigger +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ fqdn
string +
+

+ FQDN refers to the namespace dns of Azure Event Hubs to be used i.e. .servicebus.windows.net +

+
+ hubName
string +
+

+ HubName refers to the Azure Event Hub to send events to +

+
+ sharedAccessKeyName
Kubernetes core/v1.SecretKeySelector +
+

+ SharedAccessKeyName refers to the name of the Shared Access Key +

+
+ sharedAccessKey
Kubernetes core/v1.SecretKeySelector +
+

+ SharedAccessKey refers to a K8s secret containing the primary key for the +

+
+ payload
\[\]TriggerParameter +
+

+ Payload is the list of key-value extracted from an event payload to construct the request payload. +

+
+ parameters
\[\]TriggerParameter +
+ (Optional) +

+ Parameters is the list of key-value extracted from event’s payload that are applied to the trigger resource. +

+
+

+ Comparator (string alias) +

+

+

+ (Appears on: DataFilter) +

+

+

+ Comparator refers to the comparator operator for a data filter +

+

+

+ ConditionsResetByTime +

+

+ (Appears on: ConditionsResetCriteria) +

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ cron
string +
+

+ Cron is a cron-like expression. For reference, see: https://en.wikipedia.org/wiki/Cron +

+
+ timezone
string +
+ (Optional) +
+

+ ConditionsResetCriteria +

+

+ (Appears on: TriggerTemplate) +

+

+

+ + + + + + + + + + + + + +
+ Field + + Description +
+ byTime
ConditionsResetByTime +
+

+ Schedule is a cron-like expression. For reference, see: https://en.wikipedia.org/wiki/Cron +

+
+

+ CustomTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ CustomTrigger refers to the specification of the custom trigger. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ serverURL
string +
+

+ ServerURL is the url of the gRPC server that executes custom trigger +

+
+ secure
bool +
+

+ Secure refers to type of the connection between sensor to custom trigger gRPC +

+
+ certSecret
Kubernetes core/v1.SecretKeySelector +
+

+ CertSecret refers to the secret that contains cert for secure connection between sensor and custom trigger gRPC server. +

+
+ serverNameOverride
string +
+

+ ServerNameOverride for the secure connection between sensor and custom trigger gRPC server. +

+
+ spec
map\[string\]string +
+

+ Spec is the custom trigger resource specification that custom trigger gRPC server knows how to interpret. +

+

+ +
+
+ parameters
\[\]TriggerParameter +
+

+ Parameters is the list of parameters that is applied to resolved custom trigger trigger object. +

+
+ payload
\[\]TriggerParameter +
+

+ Payload is the list of key-value extracted from an event payload to construct the request payload. +

+
+

+ DataFilter +

+

+ (Appears on: EventDependencyFilter) +

+

+

+ DataFilter describes constraints and filters for event data Regular Expressions are purposefully not a feature as they are overkill for our uses here See Rob Pike’s Post: https://commandcenter.blogspot.com/2011/08/regular-expressions-in-lexing-and.html +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ path
string +
+

+ Path is the JSONPath of the event’s (JSON decoded) data key Path is a series of keys separated by a dot. A key may contain wildcard characters ‘\*’ and ‘?’. To access an array value use the index as the key. The dot -and wildcard characters can be escaped with ‘’. See -https://github.com/tidwall/gjson#path-syntax +and wildcard characters can be escaped with ‘\’. See +https://github.com/tidwall/gjson\#path-syntax for more information on how to use this. +

+
+ type
JSONType +
+

+ Type contains the JSON type of the data +

+
+ value
\[\]string +
+

+ Value is the allowed string values for this key Booleans are passed using strconv.ParseBool() Numbers are parsed using as float64 using strconv.ParseFloat() Strings are taken as is Nils this value is ignored +

+
+ comparator
Comparator +
+

-Comparator compares the event data with a user given value. Can be “>=”, -“>”, “=”, “!=”, “\<”, or “\<=”. Is optional, and if left blank treated -as equality “=”. + +Comparator compares the event data with a user given value. Can be +“\>=”, “\>”, “=”, “\!=”, “\<”, or “\<=”. Is optional, and if left +blank treated as equality “=”. +

+
+ template
string +
+

+ Template is a go-template for extracting a string from the event’s data. A Template is evaluated with provided path, type and value. The templating follows the standard go-template syntax as well as sprig’s @@ -737,2044 +1383,4004 @@ extra functions. See https://pkg.go.dev/text/template and https://masterminds.github.io/sprig/ +

+
+

+ Event +

+

+

+ Event represents the cloudevent received from an event source. +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ context
EventContext +
+
+ data
\[\]byte +
+
+

+ EventContext +

+

+ (Appears on: Event, EventDependencyFilter) +

+

+

+ EventContext holds the context of the cloudevent received from an event source. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ id
string +
+

+ ID of the event; must be non-empty and unique within the scope of the producer. +

+
+ source
string +
+

+ Source - A URI describing the event producer. +

+
+ specversion
string +
+

+ SpecVersion - The version of the CloudEvents specification used by the event. +

+
+ type
string +
+

+ Type - The type of the occurrence which has happened. +

+
+ datacontenttype
string +
+

+ DataContentType - A MIME (RFC2046) string describing the media type of data. +

+
+ subject
string +
+

+ Subject - The subject of the event in the context of the event producer +

+
+ time
Kubernetes meta/v1.Time +
+

+ Time - A Timestamp when the event happened. +

+
+

+ EventDependency +

+

+ (Appears on: SensorSpec) +

+

+

+ EventDependency describes a dependency +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ name
string +
+

+ Name is a unique name of this dependency +

+
+ eventSourceName
string +
+

+ EventSourceName is the name of EventSource that Sensor depends on +

+
+ eventName
string +
+

+ EventName is the name of the event +

+
+ filters
EventDependencyFilter +
+

+ Filters and rules governing toleration of success and constraints on the context and data of an event +

+
+ +transform
+ +EventDependencyTransformer + +
+ +

+ +Transform transforms the event data + +

+ +
+

+ EventDependencyFilter +

+

+ (Appears on: EventDependency) +

+

+

+ EventDependencyFilter defines filters and constraints for a event. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ time
TimeFilter +
+

+ Time filter on the event with escalation +

+
+ context
EventContext +
+

+ Context filter constraints +

+
+ data
\[\]DataFilter +
+

+ Data filter constraints with escalation +

+
+ exprs
\[\]ExprFilter +
+

+ Exprs contains the list of expressions evaluated against the event payload. + +

+ +
+ +

+ +EventDependencyTransformer + +

+ +

+ +(Appears on: +EventDependency) + +

+ +

+ +

+ +EventDependencyTransformer transforms the event + +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Field + + + +Description + +
+ +jq
string + +
+ +(Optional) + +

+ +JQ holds the jq command applied for transformation + +

+ +
+ +script
string + +
+ +(Optional) + +

+ +Script refers to a Lua script used to transform the event +

+
+

+ ExprFilter +

+

+ (Appears on: EventDependencyFilter) +

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ expr
string +
+

+ Expr refers to the expression that determines the outcome of the filter. +

+
+ fields
\[\]PayloadField +
+

+ Fields refers to set of keys that refer to the paths within event payload. +

+
+

+ FileArtifact +

+

+ (Appears on: ArtifactLocation) +

+

+

+ FileArtifact contains information about an artifact in a filesystem +

+

+ + + + + + + + + + + + + +
+ Field + + Description +
+ path
string +
+
+

+ GitArtifact +

+

+ (Appears on: ArtifactLocation) +

+

+

+ GitArtifact contains information about an artifact stored in git +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ Git URL +

+
+ cloneDirectory
string +
+

+ Directory to clone the repository. We clone complete directory because GitArtifact is not limited to any specific Git service providers. Hence we don’t use any specific git provider client. +

+
+ creds
GitCreds +
+ (Optional) +

+ Creds contain reference to git username and password +

+
+ sshKeySecret
Kubernetes core/v1.SecretKeySelector +
+

+ SSHKeySecret refers to the secret that contains SSH key +

+
+ filePath
string +
+

+ Path to file that contains trigger resource definition +

+
+ branch
string +
+ (Optional) +

+ Branch to use to pull trigger resource +

+
+ tag
string +
+ (Optional) +

+ Tag to use to pull trigger resource +

+
+ ref
string +
+ (Optional) +

+ Ref to use to pull trigger resource. Will result in a shallow clone and fetch. +

+
+ remote
GitRemoteConfig +
+ (Optional) +

+ Remote to manage set of tracked repositories. Defaults to “origin”. Refer https://git-scm.com/docs/git-remote +

+
+

+ GitCreds +

+

+ (Appears on: GitArtifact) +

+

+

+ GitCreds contain reference to git username and password +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ username
Kubernetes core/v1.SecretKeySelector +
+
+ password
Kubernetes core/v1.SecretKeySelector +
+
+

+ GitRemoteConfig +

+

+ (Appears on: GitArtifact) +

+

+

+ GitRemoteConfig contains the configuration of a Git remote +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ name
string +
+

+ Name of the remote to fetch from. +

+
+ urls
\[\]string +
+

+ URLs the URLs of a remote repository. It must be non-empty. Fetch will always use the first URL, while push will use all of them. +

+
+

+ HTTPTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ HTTPTrigger is the trigger for the HTTP request +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ URL refers to the URL to send HTTP request to. +

+
+ payload
\[\]TriggerParameter +
+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the HTTP client. +

+
+ method
string +
+ (Optional) +

+ Method refers to the type of the HTTP request. Refer https://golang.org/src/net/http/method.go for more info. Default value is POST. +

+
+ parameters
\[\]TriggerParameter +
+

+ Parameters is the list of key-value extracted from event’s payload that are applied to the HTTP trigger resource. +

+
+ timeout
int64 +
+ (Optional) +

+ Timeout refers to the HTTP request timeout in seconds. Default value is 60 seconds. +

+
+ basicAuth
github.com/argoproj/argo-events/pkg/apis/common.BasicAuth +
+ (Optional) +

+ BasicAuth configuration for the http request. +

+
+ headers
map\[string\]string +
+ (Optional) +

+ Headers for the HTTP request. +

+
+ secureHeaders
\[\]\*github.com/argoproj/argo-events/pkg/apis/common.SecureHeader +
+ (Optional) +

+ Secure Headers stored in Kubernetes Secrets for the HTTP requests. +

+
+

+ JSONType (string alias) +

+

+

+ (Appears on: DataFilter) +

+

+

+ JSONType contains the supported JSON types for data filtering +

+

+

+ K8SResourcePolicy +

+

+ (Appears on: TriggerPolicy) +

+

+

+ K8SResourcePolicy refers to the policy used to check the state of K8s based triggers using labels +

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ labels
map\[string\]string +
+

+ Labels required to identify whether a resource is in success state +

+
+ backoff
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+

+ Backoff before checking resource state +

+
+ errorOnBackoffTimeout
bool +
+

+ ErrorOnBackoffTimeout determines whether sensor should transition to error state if the trigger policy is unable to determine the state of the resource +

+
+

+ KafkaTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ KafkaTrigger refers to the specification of the Kafka trigger. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ URL of the Kafka broker, multiple URLs separated by comma. +

+
+ topic
string +
+

+ Name of the topic. More info at -https://kafka.apache.org/documentation/#intro_topics +https://kafka.apache.org/documentation/\#intro\_topics +

+
+ partition
int32 +
+

+ Partition to write data to. +

+
+ parameters
\[\]TriggerParameter +
+

+ Parameters is the list of parameters that is applied to resolved Kafka trigger object. +

+
+ requiredAcks
int32 +
+

+ RequiredAcks used in producer to tell the broker how many replica acknowledgements Defaults to 1 (Only wait for the leader to ack). +

+
+ compress
bool +
+ (Optional) +

+ Compress determines whether to compress message or not. Defaults to false. If set to true, compresses message using snappy compression. +

+
+ flushFrequency
int32 +
+ (Optional) +

+ FlushFrequency refers to the frequency in milliseconds to flush batches. Defaults to 500 milliseconds. +

+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the Kafka producer. +

+
+ payload
\[\]TriggerParameter +
+

+ Payload is the list of key-value extracted from an event payload to construct the request payload. +

+
+ partitioningKey
string +
+

+ The partitioning key for the messages put on the Kafka topic. Defaults to broker url. +

+
+ version
string +
+ (Optional) +

+ Specify what kafka version is being connected to enables certain features in sarama, defaults to 1.0.0 +

+
+ sasl
github.com/argoproj/argo-events/pkg/apis/common.SASLConfig +
+ (Optional) +

+ SASL configuration for the kafka client +

+
+

+ KubernetesResourceOperation (string alias) +

+

+

+ (Appears on: StandardK8STrigger) +

+

+

+ KubernetesResourceOperation refers to the type of operation performed on the K8s resource +

+

+

+ LogTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ + + + + + + + + + + + + +
+ Field + + Description +
+ intervalSeconds
uint64 +
+ (Optional) +

+ Only print messages every interval. Useful to prevent logging too much data for busy events. +

+
+

+ NATSTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ NATSTrigger refers to the specification of the NATS trigger. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ URL of the NATS cluster. +

+
+ subject
string +
+

+ Name of the subject to put message on. +

+
+ payload
\[\]TriggerParameter +
+
+ parameters
\[\]TriggerParameter +
+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the NATS producer. +

+
+

+ OpenWhiskTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ OpenWhiskTrigger refers to the specification of the OpenWhisk trigger. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ host
string +
+

+ Host URL of the OpenWhisk. +

+
+ version
string +
+ (Optional) +

+ Version for the API. Defaults to v1. +

+
+ namespace
string +
+

+ Namespace for the action. Defaults to “\_”. +

+
+ authToken
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ AuthToken for authentication. +

+
+ actionName
string +
+

+ Name of the action/function. +

+
+ payload
\[\]TriggerParameter +
+

+ Payload is the list of key-value extracted from an event payload to construct the request payload. +

+
+ parameters
\[\]TriggerParameter +
+ (Optional) +

+ Parameters is the list of key-value extracted from event’s payload that are applied to the trigger resource. +

+
+

+ PayloadField +

+

+ (Appears on: ExprFilter) +

+

+

+ PayloadField binds a value at path within the event payload against a name. +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ path
string +
+

+ Path is the JSONPath of the event’s (JSON decoded) data key Path is a series of keys separated by a dot. A key may contain wildcard characters ‘\*’ and ‘?’. To access an array value use the index as the key. The dot -and wildcard characters can be escaped with ‘’. See -https://github.com/tidwall/gjson#path-syntax +and wildcard characters can be escaped with ‘\’. See +https://github.com/tidwall/gjson\#path-syntax for more information on how to use this. +

+
+ name
string +
+

+ Name acts as key that holds the value at the path. +

+
+

+ PulsarTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ PulsarTrigger refers to the specification of the Pulsar trigger. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ url
string +
+

+ Configure the service URL for the Pulsar service. +

+
+ topic
string +
+

+ Name of the topic. See https://pulsar.apache.org/docs/en/concepts-messaging/ +

+
+ parameters
\[\]TriggerParameter +
+

+ Parameters is the list of parameters that is applied to resolved Kafka trigger object. +

+
+ payload
\[\]TriggerParameter +
+

+ Payload is the list of key-value extracted from an event payload to construct the request payload. +

+
+ tlsTrustCertsSecret
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ Trusted TLS certificate secret. +

+
+ tlsAllowInsecureConnection
bool +
+ (Optional) +

+ Whether the Pulsar client accept untrusted TLS certificate from broker. +

+
+ tlsValidateHostname
bool +
+ (Optional) +

+ Whether the Pulsar client verify the validity of the host name from broker. +

+
+ tls
github.com/argoproj/argo-events/pkg/apis/common.TLSConfig +
+ (Optional) +

+ TLS configuration for the pulsar client. +

+
+ authTokenSecret
Kubernetes core/v1.SecretKeySelector +
+ (Optional) +

+ Authentication token for the pulsar client. +

+
+ connectionBackoff
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+ (Optional) +

+ Backoff holds parameters applied to connection. +

+
+

+ RateLimit +

+

+ (Appears on: Trigger) +

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ unit
RateLimiteUnit +
+

+ Defaults to Second +

+
+ requestsPerUnit
int32 +
+
+

+ RateLimiteUnit (string alias) +

+

+

+ (Appears on: RateLimit) +

+

+

+

+ Sensor +

+

+

+ Sensor is the definition of a sensor resource +

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ metadata
Kubernetes meta/v1.ObjectMeta +
+ Refer to the Kubernetes API documentation for the fields of the metadata field. +
+ spec
SensorSpec +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ dependencies
\[\]EventDependency +
+

+ Dependencies is a list of the events that this sensor is dependent on. +

+
+ triggers
\[\]Trigger +
+

+ Triggers is a list of the things that this sensor evokes. These are the outputs from this sensor. +

+
+ template
Template +
+ (Optional) +

+ Template is the pod specification for the sensor +

+
+ errorOnFailedRound
bool +
+

+ ErrorOnFailedRound if set to true, marks sensor state as error if the previous trigger round fails. Once sensor state is set to error, no further triggers will be processed. +

+
+ eventBusName
string +
+

+ EventBusName references to a EventBus name. By default the value is “default” +

+
+ replicas
int32 +
+

+ Replicas is the sensor deployment replicas +

+
+
+ status
SensorStatus +
+ (Optional) +
+

+ SensorSpec +

+

+ (Appears on: Sensor) +

+

+

+ SensorSpec represents desired sensor state +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ dependencies
\[\]EventDependency +
+

+ Dependencies is a list of the events that this sensor is dependent on. +

+
+ triggers
\[\]Trigger +
+

+ Triggers is a list of the things that this sensor evokes. These are the outputs from this sensor. +

+
+ template
Template +
+ (Optional) +

+ Template is the pod specification for the sensor +

+
+ errorOnFailedRound
bool +
+

+ ErrorOnFailedRound if set to true, marks sensor state as error if the previous trigger round fails. Once sensor state is set to error, no further triggers will be processed. +

+
+ eventBusName
string +
+

+ EventBusName references to a EventBus name. By default the value is “default” +

+
+ replicas
int32 +
+

+ Replicas is the sensor deployment replicas +

+
+

+ SensorStatus +

+

+ (Appears on: Sensor) +

+

+

+ SensorStatus contains information about the status of a sensor. +

+

+ + + + + + + + + + + + + +
+ Field + + Description +
+ Status
github.com/argoproj/argo-events/pkg/apis/common.Status +
+

+ (Members of Status are embedded into this type.) +

+
+

+ SlackTrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ SlackTrigger refers to the specification of the slack notification trigger. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ parameters
\[\]TriggerParameter +
+ (Optional) +

+ Parameters is the list of key-value extracted from event’s payload that are applied to the trigger resource. +

+
+ slackToken
Kubernetes core/v1.SecretKeySelector +
+

+ SlackToken refers to the Kubernetes secret that holds the slack token required to send messages. +

+
+ channel
string +
+ (Optional) +

+ Channel refers to which Slack channel to send slack message. +

+
+ message
string +
+ (Optional) +

+ Message refers to the message to send to the Slack channel. +

+
+

+ StandardK8STrigger +

+

+ (Appears on: TriggerTemplate) +

+

+

+ StandardK8STrigger is the standard Kubernetes resource trigger +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ source
ArtifactLocation +
+

+ Source of the K8s resource file(s) +

+
+ operation
KubernetesResourceOperation +
+ (Optional) +

+ Operation refers to the type of operation performed on the k8s resource. Default value is Create. +

+
+ parameters
\[\]TriggerParameter +
+

+ Parameters is the list of parameters that is applied to resolved K8s trigger object. +

+
+ patchStrategy
k8s.io/apimachinery/pkg/types.PatchType +
+ (Optional) +

+ PatchStrategy controls the K8s object patching strategy when the trigger operation is specified as patch. possible values: “application/json-patch+json” “application/merge-patch+json” -“application/strategic-merge-patch+json” “application/apply-patch+yaml”. -Defaults to “application/merge-patch+json” +“application/strategic-merge-patch+json” +“application/apply-patch+yaml”. Defaults to +“application/merge-patch+json” +

+
+ liveObject
bool +
+ (Optional) +

+ LiveObject specifies whether the resource should be directly fetched from K8s instead of being marshaled from the resource artifact. If set to true, the resource artifact must contain the information required to uniquely identify the resource in the cluster, that is, you must specify “apiVersion”, “kind” as well as “name” and “namespace” meta data. Only valid for operation type update +

+
+

+ StatusPolicy +

+

+ (Appears on: TriggerPolicy) +

+

+

+ StatusPolicy refers to the policy used to check the state of the trigger using response status +

+

+ + + + + + + + + + + + + +
+ Field + + Description +
+ allow
\[\]int32 +
+
+

+ Template +

+

+ (Appears on: SensorSpec) +

+

+

+ Template holds the information of a sensor deployment template +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ metadata
github.com/argoproj/argo-events/pkg/apis/common.Metadata +
+

+ Metadata sets the pods’s metadata, i.e. annotations and labels +

+
+ serviceAccountName
string +
+ (Optional) +

+ ServiceAccountName is the name of the ServiceAccount to use to run sensor pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ +

+
+ container
Kubernetes core/v1.Container +
+ (Optional) +

+ Container is the main container image to run in the sensor pod +

+
+ volumes
\[\]Kubernetes core/v1.Volume +
+ (Optional) +

+ Volumes is a list of volumes that can be mounted by containers in a workflow. +

+
+ securityContext
Kubernetes core/v1.PodSecurityContext +
+ (Optional) +

+ SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field. +

+
+ nodeSelector
map\[string\]string +
+ (Optional) +

+ NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node’s labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ +

+
+ tolerations
\[\]Kubernetes core/v1.Toleration +
+ (Optional) +

+ If specified, the pod’s tolerations. +

+
+ imagePullSecrets
\[\]Kubernetes core/v1.LocalObjectReference +
+ (Optional) +

+ ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: -https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod +https://kubernetes.io/docs/concepts/containers/images\#specifying-imagepullsecrets-on-a-pod +

+
+ priorityClassName
string +
+ (Optional) +

+ If specified, indicates the EventSource pod’s priority. “system-node-critical” and “system-cluster-critical” are two special keywords which indicate the highest priorities with the former being the @@ -2782,184 +5388,339 @@ highest priority. Any other name must be defined by creating a PriorityClass object with that name. If not specified, the pod priority will be default or zero if there is no default. More info: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ +

+
+ priority
int32 +
+ (Optional) +

+ The priority value. Various system components use this field to find the priority of the EventSource pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission controller populates this field from PriorityClassName. The higher the value, the higher the priority. More info: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ +

+
+ affinity
Kubernetes core/v1.Affinity +
+ (Optional) +

+ If specified, the pod’s scheduling constraints +

+
+

+ TimeFilter +

+

+ (Appears on: EventDependencyFilter) +

+

+

+ TimeFilter describes a window in time. It filters out events that occur outside the time limits. In other words, only events that occur after Start and before Stop will pass this filter. +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ start
string +
+

+ Start is the beginning of a time window in UTC. Before this time, events for this dependency are ignored. Format is hh:mm:ss. +

+
+ stop
string +
+

+ Stop is the end of a time window in UTC. After or equal to this time, events for this dependency are ignored and Format is hh:mm:ss. If it is smaller than Start, it is treated as next day of Start (e.g.: 22:00:00-01:00:00 means 22:00:00-25:00:00). +

+
+

+ Trigger +

+

+ (Appears on: SensorSpec) +

+

+

+ Trigger is an action taken, output produced, an event created, a message sent +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ template
TriggerTemplate +
+

+ Template describes the trigger specification. +

+
+ parameters
\[\]TriggerParameter +
+

+ Parameters is the list of parameters applied to the trigger template definition +

+
+ policy
TriggerPolicy +
+ (Optional) +

+ Policy to configure backoff and execution criteria for the trigger +

+
+ retryStrategy
github.com/argoproj/argo-events/pkg/apis/common.Backoff +
+ (Optional) +

+ Retry strategy, defaults to no retry +

+
+ rateLimit
RateLimit +
+ (Optional) +

+ Rate limit, default unit is Second +

+
+

+ TriggerParameter +

+

+ (Appears on: AWSLambdaTrigger, ArgoWorkflowTrigger, @@ -2973,172 +5734,304 @@ TriggerParameter SlackTrigger, StandardK8STrigger, Trigger) +

+

+

+ TriggerParameter indicates a passed parameter to a service template +

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ src
TriggerParameterSource +
+

+ Src contains a source reference to the value of the parameter from a dependency +

+
+ dest
string +
+

+ Dest is the JSONPath of a resource key. A path is a series of keys separated by a dot. The colon character can be escaped with ‘.’ The -1 key can be used to append a value to an existing array. See -https://github.com/tidwall/sjson#path-syntax +https://github.com/tidwall/sjson\#path-syntax for more information about how this is used. +

+
+ operation
TriggerParameterOperation +
+

+ Operation is what to do with the existing value at Dest, whether to ‘prepend’, ‘overwrite’, or ‘append’ it. +

+
+

+ TriggerParameterOperation (string alias) +

+

+

+ (Appears on: TriggerParameter) +

+

+

+ TriggerParameterOperation represents how to set a trigger destination resource key +

+

+

+ TriggerParameterSource +

+

+ (Appears on: TriggerParameter) +

+

+

+ TriggerParameterSource defines the source for a parameter from a event event +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ dependencyName
string +
+

+ DependencyName refers to the name of the dependency. The event which is stored for this dependency is used as payload for the parameterization. Make sure to refer to one of the dependencies you have defined under Dependencies list. +

+
+ contextKey
string +
+

+ ContextKey is the JSONPath of the event’s (JSON decoded) context key ContextKey is a series of keys separated by a dot. A key may contain wildcard characters ‘\*’ and ‘?’. To access an array value use the index as the key. The dot and wildcard characters can be escaped with -‘’. See -https://github.com/tidwall/gjson#path-syntax +‘\’. See +https://github.com/tidwall/gjson\#path-syntax for more information on how to use this. +

+
+ contextTemplate
string +
+

+ ContextTemplate is a go-template for extracting a string from the -event’s context. If a ContextTemplate is provided with a ContextKey, the -template will be evaluated first and fallback to the ContextKey. The +event’s context. If a ContextTemplate is provided with a ContextKey, +the template will be evaluated first and fallback to the ContextKey. The templating follows the standard go-template syntax as well as sprig’s extra functions. See https://pkg.go.dev/text/template and https://masterminds.github.io/sprig/ +

+
+ dataKey
string +
+

+ DataKey is the JSONPath of the event’s (JSON decoded) data key DataKey is a series of keys separated by a dot. A key may contain wildcard characters ‘\*’ and ‘?’. To access an array value use the index as the -key. The dot and wildcard characters can be escaped with ‘’. See -https://github.com/tidwall/gjson#path-syntax +key. The dot and wildcard characters can be escaped with ‘\’. See +https://github.com/tidwall/gjson\#path-syntax for more information on how to use this. +

+
+ dataTemplate
string +
+

+ DataTemplate is a go-template for extracting a string from the event’s data. If a DataTemplate is provided with a DataKey, the template will be evaluated first and fallback to the DataKey. The templating follows the @@ -3146,335 +6039,631 @@ standard go-template syntax as well as sprig’s extra functions. See https://pkg.go.dev/text/template and https://masterminds.github.io/sprig/ +

+
+ value
string +
+

+ Value is the default literal value to use for this parameter source This is only used if the DataKey is invalid. If the DataKey is invalid and this is not defined, this param source will produce an error. +

+
+

+ TriggerPolicy +

+

+ (Appears on: Trigger) +

+

+

+ TriggerPolicy dictates the policy for the trigger retries +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ k8s
K8SResourcePolicy +
+

+ K8SResourcePolicy refers to the policy used to check the state of K8s based triggers using using labels +

+
+ status
StatusPolicy +
+

+ Status refers to the policy used to check the state of the trigger using response status +

+
+

+ TriggerTemplate +

+

+ (Appears on: Trigger) +

+

+

+ TriggerTemplate is the template that describes trigger specification. +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ name
string +
+

+ Name is a unique name of the action to take. +

+
+ conditions
string +
+ (Optional) +

+ Conditions is the conditions to execute the trigger. For example: -“(dep01 \|\| dep02) && dep04” +“(dep01 || dep02) && dep04” +

+
+ k8s
StandardK8STrigger +
+ (Optional) +

+ StandardK8STrigger refers to the trigger designed to create or update a generic Kubernetes resource. +

+
+ argoWorkflow
ArgoWorkflowTrigger +
+ (Optional) +

+ ArgoWorkflow refers to the trigger that can perform various operations on an Argo workflow. +

+
+ http
HTTPTrigger +
+ (Optional) +

+ HTTP refers to the trigger designed to dispatch a HTTP request with on-the-fly constructable payload. +

+
+ awsLambda
AWSLambdaTrigger +
+ (Optional) +

+ AWSLambda refers to the trigger designed to invoke AWS Lambda function with with on-the-fly constructable payload. +

+
+ custom
CustomTrigger +
+ (Optional) +

+ CustomTrigger refers to the trigger designed to connect to a gRPC trigger server and execute a custom trigger. +

+
+ kafka
KafkaTrigger +
+

+ Kafka refers to the trigger designed to place messages on Kafka topic. +

+
+ nats
NATSTrigger +
+

+ NATS refers to the trigger designed to place message on NATS subject. +

+
+ slack
SlackTrigger +
+ (Optional) +

+ Slack refers to the trigger designed to send slack notification message. +

+
+ openWhisk
OpenWhiskTrigger +
+ (Optional) +

+ OpenWhisk refers to the trigger designed to invoke OpenWhisk action. +

+
+ log
LogTrigger +
+ (Optional) +

+ Log refers to the trigger designed to invoke log the event. +

+
+ azureEventHubs
AzureEventHubsTrigger +
+ (Optional) +

+ AzureEventHubs refers to the trigger send an event to an Azure Event Hub. +

+
+ pulsar
PulsarTrigger +
+ (Optional) +

+ Pulsar refers to the trigger designed to place messages on Pulsar topic. +

+
+ conditionsReset
\[\]ConditionsResetCriteria +
+ (Optional) +

+ Criteria to reset the conditons +

+
+

+ URLArtifact +

+

+ (Appears on: ArtifactLocation) +

+

+

+ URLArtifact contains information about an artifact at an http endpoint. +

+

+ + + + + + + + + + + + + + + + + +
+ Field + + Description +
+ path
string +
+

+ Path is the complete URL +

+
+ verifyCert
bool +
+

+ VerifyCert decides whether the connection is secure or not +

+
+
+

+ Generated with gen-crd-api-reference-docs. +

diff --git a/docs/sensors/transform.md b/docs/sensors/transform.md new file mode 100644 index 0000000000..16365f2203 --- /dev/null +++ b/docs/sensors/transform.md @@ -0,0 +1,146 @@ +# Event Transformation + +> Available after v1.5.5 + +1. Lua Script: Executes user-defined Lua script to transform the event. + + +2. JQ Command: Evaluates JQ command to transform the event. We use https://github.com/itchyny/gojq to evaluate JQ commands. + + +### Note + +* If set, transformations are applied to the event before the filters are applied. + + +* Either a Lua script or a JQ command can be used for the transformation, not both. + + +* Only event data is available for the transformation and not the context. + + +* The event is discarded if the transformation fails. + +## Lua Script + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: Sensor +metadata: + name: webhook +spec: + template: + serviceAccountName: operate-workflow-sa + dependencies: + - name: test-dep + eventSourceName: webhook + eventName: example + transform: + script: |- + event.body.message='updated' + return event + triggers: + - template: + name: webhook-workflow-trigger + conditions: "test-dep" + k8s: + operation: create + source: + resource: + apiVersion: argoproj.io/v1alpha1 + kind: Workflow + metadata: + generateName: webhook- + spec: + entrypoint: whalesay + arguments: + parameters: + - name: message + # the value will get overridden by event payload from test-dep + value: hello world + templates: + - name: whalesay + inputs: + parameters: + - name: message + container: + image: docker/whalesay:latest + command: [cowsay] + args: ["{{inputs.parameters.message}}"] + parameters: + - src: + dependencyName: test-dep + dataKey: body + dest: spec.arguments.parameters.0.value +``` + +1. `transform.script` field defines the Lua script that gets executed when an event is received. + + +2. The event data is available to Lua execution context via a global variable called `event`. + + +3. The above script sets the value of `body.message` field within the event data to a new value called `updated` and returns the event. + + +4. The type of the `event` variable is Table and the script must return a Table representing a valid JSON object. + + +## JQ Command + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: Sensor +metadata: + name: webhook +spec: + template: + serviceAccountName: operate-workflow-sa + dependencies: + - name: test-dep + eventSourceName: webhook + eventName: example + transform: + jq: ".body.message *= 2" + triggers: + - template: + name: webhook-workflow-trigger-1 + conditions: "test-dep-foo" + k8s: + operation: create + source: + resource: + apiVersion: argoproj.io/v1alpha1 + kind: Workflow + metadata: + generateName: webhook- + spec: + entrypoint: whalesay + arguments: + parameters: + - name: message + # the value will get overridden by event payload from test-dep + value: hello world + templates: + - name: whalesay + inputs: + parameters: + - name: message + container: + image: docker/whalesay:latest + command: [cowsay] + args: ["{{inputs.parameters.message}}"] + parameters: + - src: + dependencyName: test-dep + dataKey: body + dest: spec.arguments.parameters.0.value +``` + +1. The above script applies a JQ command `.body.message *= 2` on the event data which appends the value of `.body.message` to itself and +return the event. + + +2. The output of the transformation must be a valid JSON object. + + \ No newline at end of file diff --git a/eventbus/driver/driver.go b/eventbus/driver/driver.go index bbc5d25f87..ae8b86faa4 100644 --- a/eventbus/driver/driver.go +++ b/eventbus/driver/driver.go @@ -21,7 +21,7 @@ type Driver interface { // Parameter - dependencies, array of dependencies information // Parameter - filter, a function used to filter the message // Parameter - action, a function to be triggered after all conditions meet - SubscribeEventSources(ctx context.Context, conn Connection, group string, closeCh <-chan struct{}, resetConditionsCh <-chan struct{}, dependencyExpr string, dependencies []Dependency, filter func(string, cloudevents.Event) bool, action func(map[string]cloudevents.Event)) error + SubscribeEventSources(ctx context.Context, conn Connection, group string, closeCh <-chan struct{}, resetConditionsCh <-chan struct{}, dependencyExpr string, dependencies []Dependency, transform func(depName string, event cloudevents.Event) (*cloudevents.Event, error), filter func(string, cloudevents.Event) bool, action func(map[string]cloudevents.Event)) error // Publish a message Publish(conn Connection, message []byte) error diff --git a/eventbus/driver/nats.go b/eventbus/driver/nats.go index 91a6141625..ab05605c62 100644 --- a/eventbus/driver/nats.go +++ b/eventbus/driver/nats.go @@ -8,6 +8,7 @@ import ( "time" "github.com/Knetic/govaluate" + eventbusv1alpha1 "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1" cloudevents "github.com/cloudevents/sdk-go/v2" "github.com/gobwas/glob" nats "github.com/nats-io/nats.go" @@ -15,8 +16,6 @@ import ( "github.com/nats-io/stan.go/pb" "github.com/pkg/errors" "go.uber.org/zap" - - eventbusv1alpha1 "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1" ) type natsStreamingConnection struct { @@ -135,7 +134,7 @@ func (n *natsStreaming) Publish(conn Connection, message []byte) error { // Parameter - dependencies, array of dependencies information // Parameter - filter, a function used to filter the message // Parameter - action, a function to be triggered after all conditions meet -func (n *natsStreaming) SubscribeEventSources(ctx context.Context, conn Connection, group string, closeCh <-chan struct{}, resetConditionsCh <-chan struct{}, dependencyExpr string, dependencies []Dependency, filter func(string, cloudevents.Event) bool, action func(map[string]cloudevents.Event)) error { +func (n *natsStreaming) SubscribeEventSources(ctx context.Context, conn Connection, group string, closeCh <-chan struct{}, resetConditionsCh <-chan struct{}, dependencyExpr string, dependencies []Dependency, transform func(depName string, event cloudevents.Event) (*cloudevents.Event, error), filter func(string, cloudevents.Event) bool, action func(map[string]cloudevents.Event)) error { log := n.logger.With("clientID", n.clientID) msgHolder, err := newEventSourceMessageHolder(dependencyExpr, dependencies) if err != nil { @@ -148,7 +147,7 @@ func (n *natsStreaming) SubscribeEventSources(ctx context.Context, conn Connecti // use group name as durable name durableName := group sub, err := nsc.stanConn.QueueSubscribe(n.subject, group, func(m *stan.Msg) { - n.processEventSourceMsg(m, msgHolder, filter, action, log) + n.processEventSourceMsg(m, msgHolder, transform, filter, action, log) }, stan.DurableName(durableName), stan.SetManualAckMode(), stan.StartAt(pb.StartPosition_NewOnly), @@ -215,7 +214,7 @@ func (n *natsStreaming) SubscribeEventSources(ctx context.Context, conn Connecti } } -func (n *natsStreaming) processEventSourceMsg(m *stan.Msg, msgHolder *eventSourceMessageHolder, filter func(dependencyName string, event cloudevents.Event) bool, action func(map[string]cloudevents.Event), log *zap.SugaredLogger) { +func (n *natsStreaming) processEventSourceMsg(m *stan.Msg, msgHolder *eventSourceMessageHolder, transform func(depName string, event cloudevents.Event) (*cloudevents.Event, error), filter func(dependencyName string, event cloudevents.Event) bool, action func(map[string]cloudevents.Event), log *zap.SugaredLogger) { var event *cloudevents.Event if err := json.Unmarshal(m.Data, &event); err != nil { log.Errorf("Failed to convert to a cloudevent, discarding it... err: %v", err) @@ -230,7 +229,19 @@ func (n *natsStreaming) processEventSourceMsg(m *stan.Msg, msgHolder *eventSourc return } - if depName == "" || !filter(depName, *event) { + if depName == "" { + _ = m.Ack() + return + } + + event, err = transform(depName, *event) + if err != nil { + log.Errorw("failed to apply event transformation", zap.Error(err)) + _ = m.Ack() + return + } + + if !filter(depName, *event) { // message not interested _ = m.Ack() return diff --git a/eventsources/sources/kafka/start.go b/eventsources/sources/kafka/start.go index bb04f946bf..14bed28abc 100644 --- a/eventsources/sources/kafka/start.go +++ b/eventsources/sources/kafka/start.go @@ -392,7 +392,6 @@ func (consumer *Consumer) processOne(session sarama.ConsumerGroupSession, messag // Function can be passed as Option to generate unique id for kafka event // eventSourceName:eventName:kafka-url:topic:partition:offset func genUniqueID(eventSourceName, eventName, kafkaURL, topic string, partition int32, offset int64) string { - kafkaID := fmt.Sprintf("%s:%s:%s:%s:%d:%d", eventSourceName, eventName, strings.Split(kafkaURL, ",")[0], topic, partition, offset) return kafkaID diff --git a/examples/sensors/transform.yaml b/examples/sensors/transform.yaml new file mode 100644 index 0000000000..1c08d49b8e --- /dev/null +++ b/examples/sensors/transform.yaml @@ -0,0 +1,85 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Sensor +metadata: + name: webhook +spec: + template: + serviceAccountName: operate-workflow-sa + dependencies: + - name: test-dep + eventSourceName: webhook + eventName: example + transform: + script: |- + event.body.message='updated' + return event + - name: test-dep-foo + eventSourceName: webhook + eventName: example-foo + transform: + jq: ".body.message *= 2" + triggers: + - template: + name: webhook-workflow-trigger + conditions: "test-dep" + k8s: + operation: create + source: + resource: + apiVersion: argoproj.io/v1alpha1 + kind: Workflow + metadata: + generateName: webhook- + spec: + entrypoint: whalesay + arguments: + parameters: + - name: message + # the value will get overridden by event payload from test-dep + value: hello world + templates: + - name: whalesay + inputs: + parameters: + - name: message + container: + image: docker/whalesay:latest + command: [cowsay] + args: ["{{inputs.parameters.message}}"] + parameters: + - src: + dependencyName: test-dep + dataKey: body + dest: spec.arguments.parameters.0.value + - template: + name: webhook-workflow-trigger-1 + conditions: "test-dep-foo" + k8s: + operation: create + source: + resource: + apiVersion: argoproj.io/v1alpha1 + kind: Workflow + metadata: + generateName: webhook- + spec: + entrypoint: whalesay + arguments: + parameters: + - name: message + # the value will get overridden by event payload from test-dep + value: hello world + templates: + - name: whalesay + inputs: + parameters: + - name: message + container: + image: docker/whalesay:latest + command: [cowsay] + args: ["{{inputs.parameters.message}}"] + parameters: + - src: + dependencyName: test-dep-foo + dataKey: body + dest: spec.arguments.parameters.0.value diff --git a/go.mod b/go.mod index 5c58e4ee70..1745405e27 100644 --- a/go.mod +++ b/go.mod @@ -42,6 +42,7 @@ require ( github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/imdario/mergo v0.3.12 + github.com/itchyny/gojq v0.12.6 github.com/joncalhoun/qson v0.0.0-20200422171543-84433dcd3da0 github.com/minio/minio-go/v7 v7.0.15 github.com/mitchellh/mapstructure v1.4.1 @@ -64,6 +65,7 @@ require ( github.com/tidwall/gjson v1.10.2 github.com/tidwall/sjson v1.1.1 github.com/xanzy/go-gitlab v0.50.2 + github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 go.uber.org/ratelimit v0.2.0 go.uber.org/zap v1.19.0 golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 @@ -154,6 +156,7 @@ require ( github.com/huandu/xstrings v1.3.1 // indirect github.com/imkira/go-interpol v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/itchyny/timefmt-go v0.1.3 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jcmturner/gofork v1.0.0 // indirect github.com/jessevdk/go-flags v1.5.0 // indirect @@ -172,7 +175,7 @@ require ( github.com/magiconair/properties v1.8.5 // indirect github.com/mailru/easyjson v0.7.6 // indirect github.com/mattn/go-colorable v0.1.8 // indirect - github.com/mattn/go-isatty v0.0.12 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/minio/md5-simd v1.1.0 // indirect github.com/minio/sha256-simd v0.1.1 // indirect @@ -231,7 +234,7 @@ require ( golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 // indirect + golang.org/x/sys v0.0.0-20211124211545-fe61309f8881 // indirect golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect golang.org/x/text v0.3.6 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect diff --git a/go.sum b/go.sum index 756529c9c2..673dd814bf 100644 --- a/go.sum +++ b/go.sum @@ -620,6 +620,10 @@ github.com/imkira/go-interpol v1.0.0 h1:HrmLyvOLJyjR0YofMw8QGdCIuYOs4TJUBDNU5sJC github.com/imkira/go-interpol v1.0.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/itchyny/gojq v0.12.6 h1:VjaFn59Em2wTxDNGcrRkDK9ZHMNa8IksOgL13sLL4d0= +github.com/itchyny/gojq v0.12.6/go.mod h1:ZHrkfu7A+RbZLy5J1/JKpS4poEqrzItSTGDItqsfP0A= +github.com/itchyny/timefmt-go v0.1.3 h1:7M3LGVDsqcd0VZH2U+x393obrzZisp7C0uEe921iRkU= +github.com/itchyny/timefmt-go v0.1.3/go.mod h1:0osSSCQSASBJMsIZnhAaF1C2fCBTJZXrnj37mG8/c+A= github.com/jawher/mow.cli v1.0.4/go.mod h1:5hQj2V8g+qYmLUVWqu4Wuja1pI57M83EChYLVZ0sMKk= github.com/jawher/mow.cli v1.1.0/go.mod h1:aNaQlc7ozF3vw6IJ2dHjp2ZFiA4ozMIYY6PyuRJwlUg= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= @@ -719,12 +723,14 @@ github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.8/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= @@ -1037,6 +1043,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9 h1:k/gmLsJDWwWqbLCur2yWnJzwQEKRcAHXo6seXGuSwWw= +github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9/go.mod h1:E1AXubJBdNmFERAOucpDIxNzeGfLzg0mYh+UfMWdChA= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= @@ -1239,6 +1247,7 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1304,8 +1313,10 @@ golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 h1:c8PlLMqBbOHoqtjteWm5/kbe6rNY2pbRfbIMVnepueo= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881 h1:TyHqChC80pFkXWraUUf6RuB5IqFdQieMLwwCJokV2pc= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= diff --git a/hack/crdgen.sh b/hack/crdgen.sh index 52b2be1dba..da96f92c8f 100755 --- a/hack/crdgen.sh +++ b/hack/crdgen.sh @@ -16,7 +16,7 @@ fi header "Generating CRDs" controller-gen crd:crdVersions=v1,maxDescLen=262143,maxDescLen=0 paths=./pkg/apis/... output:dir=manifests/base/crds -mv manifests/base/crds/argoproj.io_eventbuses.yaml manifests/base/crds/argoproj.io_eventbus.yaml +# mv manifests/base/crds/argoproj.io_eventbuses.yaml manifests/base/crds/argoproj.io_eventbus.yaml find manifests/base/crds -name 'argoproj.io*.yaml' | while read -r file; do echo "Patching ${file}" diff --git a/hack/custom-boilerplate.go.txt b/hack/custom-boilerplate.go.txt index c88489e5ec..796ffaa908 100644 --- a/hack/custom-boilerplate.go.txt +++ b/hack/custom-boilerplate.go.txt @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/mkdocs.yml b/mkdocs.yml index 06b6cb7c4b..ee8cb26f27 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -82,6 +82,7 @@ nav: - 'sensors/triggers/pulsar-trigger.md' - 'sensors/triggers/build-your-own-trigger.md' - 'sensors/trigger-conditions.md' + - 'sensors/transform.md' - 'sensors/ha.md' - More Information: 'sensors/more-about-sensors-and-triggers.md' - 'eventbus.md' diff --git a/pkg/apis/common/deepcopy_generated.go b/pkg/apis/common/deepcopy_generated.go index 0e04f6417c..34522a9cef 100644 --- a/pkg/apis/common/deepcopy_generated.go +++ b/pkg/apis/common/deepcopy_generated.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/common/generated.pb.go b/pkg/apis/common/generated.pb.go index c06bef0c87..f0b597a585 100644 --- a/pkg/apis/common/generated.pb.go +++ b/pkg/apis/common/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/common/generated.proto b/pkg/apis/common/generated.proto index 512ddc34f1..9fd844f631 100644 --- a/pkg/apis/common/generated.proto +++ b/pkg/apis/common/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/common/openapi_generated.go b/pkg/apis/common/openapi_generated.go index 509bd9dcf1..87cbaffd3d 100644 --- a/pkg/apis/common/openapi_generated.go +++ b/pkg/apis/common/openapi_generated.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/eventbus/v1alpha1/generated.pb.go b/pkg/apis/eventbus/v1alpha1/generated.pb.go index 22a1b026c6..3c426b424e 100644 --- a/pkg/apis/eventbus/v1alpha1/generated.pb.go +++ b/pkg/apis/eventbus/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/eventbus/v1alpha1/generated.proto b/pkg/apis/eventbus/v1alpha1/generated.proto index 7b50a72483..3887bc600d 100644 --- a/pkg/apis/eventbus/v1alpha1/generated.proto +++ b/pkg/apis/eventbus/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/eventbus/v1alpha1/openapi_generated.go b/pkg/apis/eventbus/v1alpha1/openapi_generated.go index bced1d09b0..63f34d9236 100644 --- a/pkg/apis/eventbus/v1alpha1/openapi_generated.go +++ b/pkg/apis/eventbus/v1alpha1/openapi_generated.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/eventbus/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/eventbus/v1alpha1/zz_generated.deepcopy.go index f86967ad3b..3cf7d6ed74 100644 --- a/pkg/apis/eventbus/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/eventbus/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/eventsource/v1alpha1/generated.pb.go b/pkg/apis/eventsource/v1alpha1/generated.pb.go index 72d6da5a7f..5d7999601c 100644 --- a/pkg/apis/eventsource/v1alpha1/generated.pb.go +++ b/pkg/apis/eventsource/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/eventsource/v1alpha1/generated.proto b/pkg/apis/eventsource/v1alpha1/generated.proto index b4d65146c3..1acbab094a 100644 --- a/pkg/apis/eventsource/v1alpha1/generated.proto +++ b/pkg/apis/eventsource/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/eventsource/v1alpha1/openapi_generated.go b/pkg/apis/eventsource/v1alpha1/openapi_generated.go index b73c2ab993..35fb7979fe 100644 --- a/pkg/apis/eventsource/v1alpha1/openapi_generated.go +++ b/pkg/apis/eventsource/v1alpha1/openapi_generated.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/eventsource/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/eventsource/v1alpha1/zz_generated.deepcopy.go index 21d5cc68dc..42c3ee2d92 100644 --- a/pkg/apis/eventsource/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/eventsource/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/apis/sensor/v1alpha1/generated.pb.go b/pkg/apis/sensor/v1alpha1/generated.pb.go index b6effaba74..00f472b944 100644 --- a/pkg/apis/sensor/v1alpha1/generated.pb.go +++ b/pkg/apis/sensor/v1alpha1/generated.pb.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -384,10 +384,38 @@ func (m *EventDependencyFilter) XXX_DiscardUnknown() { var xxx_messageInfo_EventDependencyFilter proto.InternalMessageInfo +func (m *EventDependencyTransformer) Reset() { *m = EventDependencyTransformer{} } +func (*EventDependencyTransformer) ProtoMessage() {} +func (*EventDependencyTransformer) Descriptor() ([]byte, []int) { + return fileDescriptor_6c4bded897df1f16, []int{12} +} +func (m *EventDependencyTransformer) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventDependencyTransformer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *EventDependencyTransformer) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventDependencyTransformer.Merge(m, src) +} +func (m *EventDependencyTransformer) XXX_Size() int { + return m.Size() +} +func (m *EventDependencyTransformer) XXX_DiscardUnknown() { + xxx_messageInfo_EventDependencyTransformer.DiscardUnknown(m) +} + +var xxx_messageInfo_EventDependencyTransformer proto.InternalMessageInfo + func (m *ExprFilter) Reset() { *m = ExprFilter{} } func (*ExprFilter) ProtoMessage() {} func (*ExprFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{12} + return fileDescriptor_6c4bded897df1f16, []int{13} } func (m *ExprFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -415,7 +443,7 @@ var xxx_messageInfo_ExprFilter proto.InternalMessageInfo func (m *FileArtifact) Reset() { *m = FileArtifact{} } func (*FileArtifact) ProtoMessage() {} func (*FileArtifact) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{13} + return fileDescriptor_6c4bded897df1f16, []int{14} } func (m *FileArtifact) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -443,7 +471,7 @@ var xxx_messageInfo_FileArtifact proto.InternalMessageInfo func (m *GitArtifact) Reset() { *m = GitArtifact{} } func (*GitArtifact) ProtoMessage() {} func (*GitArtifact) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{14} + return fileDescriptor_6c4bded897df1f16, []int{15} } func (m *GitArtifact) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -471,7 +499,7 @@ var xxx_messageInfo_GitArtifact proto.InternalMessageInfo func (m *GitCreds) Reset() { *m = GitCreds{} } func (*GitCreds) ProtoMessage() {} func (*GitCreds) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{15} + return fileDescriptor_6c4bded897df1f16, []int{16} } func (m *GitCreds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -499,7 +527,7 @@ var xxx_messageInfo_GitCreds proto.InternalMessageInfo func (m *GitRemoteConfig) Reset() { *m = GitRemoteConfig{} } func (*GitRemoteConfig) ProtoMessage() {} func (*GitRemoteConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{16} + return fileDescriptor_6c4bded897df1f16, []int{17} } func (m *GitRemoteConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -527,7 +555,7 @@ var xxx_messageInfo_GitRemoteConfig proto.InternalMessageInfo func (m *HTTPTrigger) Reset() { *m = HTTPTrigger{} } func (*HTTPTrigger) ProtoMessage() {} func (*HTTPTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{17} + return fileDescriptor_6c4bded897df1f16, []int{18} } func (m *HTTPTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -555,7 +583,7 @@ var xxx_messageInfo_HTTPTrigger proto.InternalMessageInfo func (m *K8SResourcePolicy) Reset() { *m = K8SResourcePolicy{} } func (*K8SResourcePolicy) ProtoMessage() {} func (*K8SResourcePolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{18} + return fileDescriptor_6c4bded897df1f16, []int{19} } func (m *K8SResourcePolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -583,7 +611,7 @@ var xxx_messageInfo_K8SResourcePolicy proto.InternalMessageInfo func (m *KafkaTrigger) Reset() { *m = KafkaTrigger{} } func (*KafkaTrigger) ProtoMessage() {} func (*KafkaTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{19} + return fileDescriptor_6c4bded897df1f16, []int{20} } func (m *KafkaTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -611,7 +639,7 @@ var xxx_messageInfo_KafkaTrigger proto.InternalMessageInfo func (m *LogTrigger) Reset() { *m = LogTrigger{} } func (*LogTrigger) ProtoMessage() {} func (*LogTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{20} + return fileDescriptor_6c4bded897df1f16, []int{21} } func (m *LogTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -639,7 +667,7 @@ var xxx_messageInfo_LogTrigger proto.InternalMessageInfo func (m *NATSTrigger) Reset() { *m = NATSTrigger{} } func (*NATSTrigger) ProtoMessage() {} func (*NATSTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{21} + return fileDescriptor_6c4bded897df1f16, []int{22} } func (m *NATSTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -667,7 +695,7 @@ var xxx_messageInfo_NATSTrigger proto.InternalMessageInfo func (m *OpenWhiskTrigger) Reset() { *m = OpenWhiskTrigger{} } func (*OpenWhiskTrigger) ProtoMessage() {} func (*OpenWhiskTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{22} + return fileDescriptor_6c4bded897df1f16, []int{23} } func (m *OpenWhiskTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -695,7 +723,7 @@ var xxx_messageInfo_OpenWhiskTrigger proto.InternalMessageInfo func (m *PayloadField) Reset() { *m = PayloadField{} } func (*PayloadField) ProtoMessage() {} func (*PayloadField) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{23} + return fileDescriptor_6c4bded897df1f16, []int{24} } func (m *PayloadField) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -723,7 +751,7 @@ var xxx_messageInfo_PayloadField proto.InternalMessageInfo func (m *PulsarTrigger) Reset() { *m = PulsarTrigger{} } func (*PulsarTrigger) ProtoMessage() {} func (*PulsarTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{24} + return fileDescriptor_6c4bded897df1f16, []int{25} } func (m *PulsarTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -751,7 +779,7 @@ var xxx_messageInfo_PulsarTrigger proto.InternalMessageInfo func (m *RateLimit) Reset() { *m = RateLimit{} } func (*RateLimit) ProtoMessage() {} func (*RateLimit) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{25} + return fileDescriptor_6c4bded897df1f16, []int{26} } func (m *RateLimit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -779,7 +807,7 @@ var xxx_messageInfo_RateLimit proto.InternalMessageInfo func (m *Sensor) Reset() { *m = Sensor{} } func (*Sensor) ProtoMessage() {} func (*Sensor) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{26} + return fileDescriptor_6c4bded897df1f16, []int{27} } func (m *Sensor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -807,7 +835,7 @@ var xxx_messageInfo_Sensor proto.InternalMessageInfo func (m *SensorList) Reset() { *m = SensorList{} } func (*SensorList) ProtoMessage() {} func (*SensorList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{27} + return fileDescriptor_6c4bded897df1f16, []int{28} } func (m *SensorList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -835,7 +863,7 @@ var xxx_messageInfo_SensorList proto.InternalMessageInfo func (m *SensorSpec) Reset() { *m = SensorSpec{} } func (*SensorSpec) ProtoMessage() {} func (*SensorSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{28} + return fileDescriptor_6c4bded897df1f16, []int{29} } func (m *SensorSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -863,7 +891,7 @@ var xxx_messageInfo_SensorSpec proto.InternalMessageInfo func (m *SensorStatus) Reset() { *m = SensorStatus{} } func (*SensorStatus) ProtoMessage() {} func (*SensorStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{29} + return fileDescriptor_6c4bded897df1f16, []int{30} } func (m *SensorStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -891,7 +919,7 @@ var xxx_messageInfo_SensorStatus proto.InternalMessageInfo func (m *SlackTrigger) Reset() { *m = SlackTrigger{} } func (*SlackTrigger) ProtoMessage() {} func (*SlackTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{30} + return fileDescriptor_6c4bded897df1f16, []int{31} } func (m *SlackTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -919,7 +947,7 @@ var xxx_messageInfo_SlackTrigger proto.InternalMessageInfo func (m *StandardK8STrigger) Reset() { *m = StandardK8STrigger{} } func (*StandardK8STrigger) ProtoMessage() {} func (*StandardK8STrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{31} + return fileDescriptor_6c4bded897df1f16, []int{32} } func (m *StandardK8STrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -947,7 +975,7 @@ var xxx_messageInfo_StandardK8STrigger proto.InternalMessageInfo func (m *StatusPolicy) Reset() { *m = StatusPolicy{} } func (*StatusPolicy) ProtoMessage() {} func (*StatusPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{32} + return fileDescriptor_6c4bded897df1f16, []int{33} } func (m *StatusPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -975,7 +1003,7 @@ var xxx_messageInfo_StatusPolicy proto.InternalMessageInfo func (m *Template) Reset() { *m = Template{} } func (*Template) ProtoMessage() {} func (*Template) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{33} + return fileDescriptor_6c4bded897df1f16, []int{34} } func (m *Template) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1003,7 +1031,7 @@ var xxx_messageInfo_Template proto.InternalMessageInfo func (m *TimeFilter) Reset() { *m = TimeFilter{} } func (*TimeFilter) ProtoMessage() {} func (*TimeFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{34} + return fileDescriptor_6c4bded897df1f16, []int{35} } func (m *TimeFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1031,7 +1059,7 @@ var xxx_messageInfo_TimeFilter proto.InternalMessageInfo func (m *Trigger) Reset() { *m = Trigger{} } func (*Trigger) ProtoMessage() {} func (*Trigger) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{35} + return fileDescriptor_6c4bded897df1f16, []int{36} } func (m *Trigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1059,7 +1087,7 @@ var xxx_messageInfo_Trigger proto.InternalMessageInfo func (m *TriggerParameter) Reset() { *m = TriggerParameter{} } func (*TriggerParameter) ProtoMessage() {} func (*TriggerParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{36} + return fileDescriptor_6c4bded897df1f16, []int{37} } func (m *TriggerParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1087,7 +1115,7 @@ var xxx_messageInfo_TriggerParameter proto.InternalMessageInfo func (m *TriggerParameterSource) Reset() { *m = TriggerParameterSource{} } func (*TriggerParameterSource) ProtoMessage() {} func (*TriggerParameterSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{37} + return fileDescriptor_6c4bded897df1f16, []int{38} } func (m *TriggerParameterSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1115,7 +1143,7 @@ var xxx_messageInfo_TriggerParameterSource proto.InternalMessageInfo func (m *TriggerPolicy) Reset() { *m = TriggerPolicy{} } func (*TriggerPolicy) ProtoMessage() {} func (*TriggerPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{38} + return fileDescriptor_6c4bded897df1f16, []int{39} } func (m *TriggerPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1143,7 +1171,7 @@ var xxx_messageInfo_TriggerPolicy proto.InternalMessageInfo func (m *TriggerTemplate) Reset() { *m = TriggerTemplate{} } func (*TriggerTemplate) ProtoMessage() {} func (*TriggerTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{39} + return fileDescriptor_6c4bded897df1f16, []int{40} } func (m *TriggerTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1171,7 +1199,7 @@ var xxx_messageInfo_TriggerTemplate proto.InternalMessageInfo func (m *URLArtifact) Reset() { *m = URLArtifact{} } func (*URLArtifact) ProtoMessage() {} func (*URLArtifact) Descriptor() ([]byte, []int) { - return fileDescriptor_6c4bded897df1f16, []int{40} + return fileDescriptor_6c4bded897df1f16, []int{41} } func (m *URLArtifact) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1210,6 +1238,7 @@ func init() { proto.RegisterType((*EventContext)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.sensor.v1alpha1.EventContext") proto.RegisterType((*EventDependency)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.sensor.v1alpha1.EventDependency") proto.RegisterType((*EventDependencyFilter)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.sensor.v1alpha1.EventDependencyFilter") + proto.RegisterType((*EventDependencyTransformer)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.sensor.v1alpha1.EventDependencyTransformer") proto.RegisterType((*ExprFilter)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.sensor.v1alpha1.ExprFilter") proto.RegisterType((*FileArtifact)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.sensor.v1alpha1.FileArtifact") proto.RegisterType((*GitArtifact)(nil), "github.aaakk.us.kg.argoproj.argo_events.pkg.apis.sensor.v1alpha1.GitArtifact") @@ -1249,266 +1278,270 @@ func init() { } var fileDescriptor_6c4bded897df1f16 = []byte{ - // 4141 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7b, 0x4d, 0x6c, 0x23, 0xd9, - 0x71, 0xf0, 0x90, 0x22, 0x25, 0xb2, 0x44, 0x49, 0x33, 0x6f, 0x3c, 0x5e, 0x5a, 0xde, 0x15, 0x07, - 0x34, 0x3e, 0x7f, 0x63, 0xc3, 0xa6, 0x76, 0x67, 0x93, 0x58, 0x9e, 0x20, 0xf6, 0x52, 0x94, 0x34, - 0x7f, 0x9c, 0x91, 0xb6, 0x9a, 0x9a, 0x45, 0x7e, 0x80, 0x75, 0xab, 0xf9, 0x48, 0xf6, 0xaa, 0xd9, - 0xcd, 0xed, 0xf7, 0xa8, 0x59, 0x19, 0x70, 0x62, 0xc4, 0xc8, 0x21, 0x08, 0xe0, 0xe4, 0x90, 0x43, - 0x4e, 0xf9, 0x39, 0xe4, 0x94, 0x1c, 0x12, 0xe4, 0x18, 0xe4, 0xe2, 0xd3, 0x02, 0x39, 0x64, 0x73, - 0x08, 0xe0, 0x43, 0x20, 0x64, 0xe5, 0x53, 0x0e, 0x41, 0xe2, 0xeb, 0x9c, 0x82, 0xf7, 0xd7, 0x7f, - 0xe4, 0x78, 0xc4, 0xe1, 0x44, 0x13, 0x20, 0xb7, 0xee, 0xaa, 0x7a, 0x55, 0xef, 0xd5, 0xab, 0xaa, - 0x57, 0xf5, 0x7e, 0xe0, 0x5e, 0xdf, 0xe5, 0x83, 0xf1, 0x51, 0xc3, 0x09, 0x86, 0x9b, 0x76, 0xd8, - 0x0f, 0x46, 0x61, 0xf0, 0x91, 0xfc, 0xf8, 0x26, 0x3d, 0xa1, 0x3e, 0x67, 0x9b, 0xa3, 0xe3, 0xfe, - 0xa6, 0x3d, 0x72, 0xd9, 0x26, 0xa3, 0x3e, 0x0b, 0xc2, 0xcd, 0x93, 0x77, 0x6c, 0x6f, 0x34, 0xb0, - 0xdf, 0xd9, 0xec, 0x53, 0x9f, 0x86, 0x36, 0xa7, 0xdd, 0xc6, 0x28, 0x0c, 0x78, 0x40, 0xb6, 0x62, - 0x4e, 0x0d, 0xc3, 0x49, 0x7e, 0x7c, 0xa8, 0x38, 0x35, 0x46, 0xc7, 0xfd, 0x86, 0xe0, 0xd4, 0x50, - 0x9c, 0x1a, 0x86, 0xd3, 0xfa, 0x77, 0x2f, 0xdc, 0x07, 0x27, 0x18, 0x0e, 0x03, 0x3f, 0x2b, 0x7a, - 0xfd, 0x9b, 0x09, 0x06, 0xfd, 0xa0, 0x1f, 0x6c, 0x4a, 0xf0, 0xd1, 0xb8, 0x27, 0xff, 0xe4, 0x8f, - 0xfc, 0xd2, 0xe4, 0xf5, 0xe3, 0x2d, 0xd6, 0x70, 0x03, 0xc1, 0x72, 0xd3, 0x09, 0x42, 0xba, 0x79, - 0x32, 0x31, 0x9a, 0xf5, 0x5f, 0x8a, 0x69, 0x86, 0xb6, 0x33, 0x70, 0x7d, 0x1a, 0x9e, 0xc6, 0xfd, - 0x18, 0x52, 0x6e, 0x4f, 0x6b, 0xb5, 0xf9, 0xbc, 0x56, 0xe1, 0xd8, 0xe7, 0xee, 0x90, 0x4e, 0x34, - 0xf8, 0x95, 0x17, 0x35, 0x60, 0xce, 0x80, 0x0e, 0xed, 0x6c, 0xbb, 0xfa, 0xb3, 0x02, 0x5c, 0x6d, - 0x7e, 0x60, 0xb5, 0xed, 0xe1, 0x51, 0xd7, 0xee, 0x84, 0x6e, 0xbf, 0x4f, 0x43, 0xb2, 0x05, 0x95, - 0xde, 0xd8, 0x77, 0xb8, 0x1b, 0xf8, 0x8f, 0xed, 0x21, 0xad, 0xe6, 0x6e, 0xe6, 0x6e, 0x95, 0xb7, - 0xbf, 0xf0, 0xe9, 0x59, 0xed, 0xca, 0xf9, 0x59, 0xad, 0xb2, 0x97, 0xc0, 0x61, 0x8a, 0x92, 0x20, - 0x94, 0x6d, 0xc7, 0xa1, 0x8c, 0x3d, 0xa4, 0xa7, 0xd5, 0xfc, 0xcd, 0xdc, 0xad, 0xe5, 0xdb, 0xff, - 0xaf, 0xa1, 0xba, 0x26, 0xa6, 0xac, 0x21, 0xb4, 0xd4, 0x38, 0x79, 0xa7, 0x61, 0x51, 0x27, 0xa4, - 0xfc, 0x21, 0x3d, 0xb5, 0xa8, 0x47, 0x1d, 0x1e, 0x84, 0xdb, 0x2b, 0xe7, 0x67, 0xb5, 0x72, 0xd3, - 0xb4, 0xc5, 0x98, 0x8d, 0xe0, 0xc9, 0x0c, 0x79, 0x75, 0x61, 0x66, 0x9e, 0x11, 0x18, 0x63, 0x36, - 0xe4, 0xab, 0xb0, 0x18, 0xd2, 0xbe, 0x1b, 0xf8, 0xd5, 0x82, 0x1c, 0xdb, 0xaa, 0x1e, 0xdb, 0x22, - 0x4a, 0x28, 0x6a, 0x2c, 0x19, 0xc3, 0xd2, 0xc8, 0x3e, 0xf5, 0x02, 0xbb, 0x5b, 0x2d, 0xde, 0x5c, - 0xb8, 0xb5, 0x7c, 0xfb, 0x41, 0xe3, 0x65, 0xad, 0xb3, 0xa1, 0xb5, 0x7b, 0x60, 0x87, 0xf6, 0x90, - 0x72, 0x1a, 0x6e, 0xaf, 0x69, 0xa1, 0x4b, 0x07, 0x4a, 0x04, 0x1a, 0x59, 0xe4, 0xb7, 0x01, 0x46, - 0x86, 0x8c, 0x55, 0x17, 0x5f, 0xb9, 0x64, 0xa2, 0x25, 0x43, 0x04, 0x62, 0x98, 0x90, 0x48, 0xee, - 0xc0, 0xaa, 0xeb, 0x9f, 0x04, 0x8e, 0x2d, 0x26, 0xb6, 0x73, 0x3a, 0xa2, 0xd5, 0x25, 0xa9, 0x26, - 0x72, 0x7e, 0x56, 0x5b, 0xbd, 0x9f, 0xc2, 0x60, 0x86, 0x92, 0x7c, 0x0d, 0x96, 0xc2, 0xc0, 0xa3, - 0x4d, 0x7c, 0x5c, 0x2d, 0xc9, 0x46, 0xd1, 0x30, 0x51, 0x81, 0xd1, 0xe0, 0xeb, 0xff, 0x94, 0x87, - 0xeb, 0xcd, 0xb0, 0x1f, 0x7c, 0x10, 0x84, 0xc7, 0x3d, 0x2f, 0x78, 0x6a, 0xec, 0xcf, 0x87, 0x45, - 0x16, 0x8c, 0x43, 0x47, 0x59, 0xde, 0x5c, 0x43, 0x6f, 0x86, 0xdc, 0xed, 0xd9, 0x0e, 0x6f, 0xeb, - 0x2e, 0x6e, 0x83, 0x98, 0x65, 0x4b, 0x72, 0x47, 0x2d, 0x85, 0xdc, 0x83, 0x72, 0x30, 0x12, 0x6e, - 0x21, 0x0c, 0x22, 0x2f, 0x3b, 0xfd, 0x75, 0xdd, 0xe9, 0xf2, 0xbe, 0x41, 0x3c, 0x3b, 0xab, 0xdd, - 0x48, 0x76, 0x36, 0x42, 0x60, 0xdc, 0x38, 0x33, 0x71, 0x0b, 0x97, 0x3d, 0x71, 0xf5, 0x9f, 0x0b, - 0x77, 0xce, 0x0c, 0x99, 0x58, 0x90, 0x67, 0xef, 0x6a, 0x55, 0xfe, 0xea, 0xc5, 0x3b, 0xa3, 0x62, - 0x64, 0xc3, 0x7a, 0xd7, 0x30, 0xdc, 0x5e, 0x3c, 0x3f, 0xab, 0xe5, 0xad, 0x77, 0x31, 0xcf, 0xde, - 0x25, 0x75, 0x58, 0x74, 0x7d, 0xcf, 0xf5, 0xa9, 0x56, 0x98, 0xd4, 0xeb, 0x7d, 0x09, 0x41, 0x8d, - 0x21, 0x5d, 0x28, 0xf4, 0x5c, 0x8f, 0x6a, 0xa7, 0xdd, 0x7b, 0x79, 0x3d, 0xec, 0xb9, 0x1e, 0x8d, - 0x7a, 0x51, 0x3a, 0x3f, 0xab, 0x15, 0x04, 0x04, 0x25, 0x77, 0xf2, 0x3d, 0x58, 0x18, 0x87, 0x9e, - 0x74, 0xe4, 0xe5, 0xdb, 0xbb, 0x2f, 0x2f, 0xe4, 0x10, 0xdb, 0x91, 0x8c, 0xa5, 0xf3, 0xb3, 0xda, - 0xc2, 0x21, 0xb6, 0x51, 0xb0, 0x26, 0x87, 0x50, 0x76, 0x02, 0xbf, 0xe7, 0xf6, 0x87, 0xf6, 0xa8, - 0x5a, 0x94, 0x72, 0x6e, 0x4d, 0x8b, 0x40, 0x2d, 0x49, 0xf4, 0xc8, 0x1e, 0x4d, 0x04, 0xa1, 0x96, - 0x69, 0x8e, 0x31, 0x27, 0xd1, 0xf1, 0xbe, 0xcb, 0xab, 0x8b, 0xf3, 0x76, 0xfc, 0xae, 0xcb, 0xd3, - 0x1d, 0xbf, 0xeb, 0x72, 0x14, 0xac, 0x89, 0x03, 0xa5, 0x90, 0x6a, 0x57, 0x5a, 0x92, 0x62, 0xbe, - 0x3d, 0xf3, 0xfc, 0xa3, 0x66, 0xb0, 0x5d, 0x39, 0x3f, 0xab, 0x95, 0xcc, 0x1f, 0x46, 0x8c, 0xeb, - 0x7f, 0x57, 0x80, 0x1b, 0xcd, 0xef, 0x8f, 0x43, 0xba, 0x2b, 0x18, 0xdc, 0x1b, 0x1f, 0x31, 0xe3, - 0xc7, 0x37, 0xa1, 0xd0, 0xfb, 0xb8, 0xeb, 0xeb, 0xf5, 0xa3, 0xa2, 0x6d, 0xb7, 0xb0, 0xf7, 0xfe, - 0xce, 0x63, 0x94, 0x18, 0x11, 0x2c, 0x06, 0xe3, 0x23, 0xb9, 0xc8, 0xe4, 0xd3, 0xc1, 0xe2, 0x9e, - 0x02, 0xa3, 0xc1, 0x93, 0x11, 0x5c, 0x67, 0x03, 0x3b, 0xa4, 0xdd, 0x68, 0x91, 0x90, 0xcd, 0x66, - 0x5a, 0x10, 0xde, 0x38, 0x3f, 0xab, 0x5d, 0xb7, 0x26, 0xb9, 0xe0, 0x34, 0xd6, 0xa4, 0x0b, 0x6b, - 0x19, 0xb0, 0x36, 0xb2, 0x0b, 0x4a, 0xbb, 0x7e, 0x7e, 0x56, 0x5b, 0xcb, 0x48, 0xc3, 0x2c, 0xcb, - 0xff, 0xa3, 0x4b, 0x4c, 0xbd, 0x0f, 0x37, 0x5a, 0x81, 0xdf, 0x75, 0x45, 0x84, 0x62, 0x48, 0x19, - 0xe5, 0xdb, 0xa7, 0x1d, 0x77, 0x48, 0x85, 0xd1, 0x38, 0x61, 0x30, 0x61, 0x34, 0xad, 0x30, 0xf0, - 0x51, 0x62, 0xc8, 0x37, 0xa0, 0x24, 0x52, 0x9a, 0xef, 0x07, 0x51, 0xf0, 0xb9, 0xaa, 0xa9, 0x4a, - 0x1d, 0x0d, 0xc7, 0x88, 0xa2, 0xfe, 0xe3, 0x1c, 0xbc, 0x91, 0x91, 0xd4, 0x0a, 0x5d, 0x4e, 0x43, - 0xd7, 0x26, 0x0c, 0x16, 0x8f, 0xa4, 0x54, 0x1d, 0x1d, 0xf7, 0x5f, 0x5e, 0x01, 0x53, 0x07, 0xa3, - 0xa2, 0xa2, 0xfa, 0x46, 0x2d, 0xaa, 0xfe, 0x37, 0x45, 0x58, 0x69, 0x8d, 0x19, 0x0f, 0x86, 0xc6, - 0x4f, 0x36, 0x45, 0x86, 0x13, 0x9e, 0xd0, 0xf0, 0x10, 0xdb, 0x7a, 0xdc, 0xd7, 0xcc, 0xfa, 0x63, - 0x19, 0x04, 0xc6, 0x34, 0x22, 0x7d, 0x61, 0xd4, 0x19, 0x87, 0x6a, 0xfc, 0xa5, 0x38, 0x7d, 0xb1, - 0x24, 0x14, 0x35, 0x96, 0x1c, 0x02, 0x38, 0x34, 0xe4, 0xca, 0x34, 0x67, 0x73, 0x95, 0x55, 0x31, - 0x77, 0xad, 0xa8, 0x31, 0x26, 0x18, 0x91, 0x07, 0x40, 0x54, 0x5f, 0x84, 0x9b, 0xec, 0x9f, 0xd0, - 0x30, 0x74, 0xbb, 0x54, 0x67, 0x52, 0xeb, 0xba, 0x2b, 0xc4, 0x9a, 0xa0, 0xc0, 0x29, 0xad, 0x08, - 0x83, 0x02, 0x1b, 0x51, 0x47, 0xdb, 0xfe, 0xfb, 0x73, 0x4c, 0x40, 0x52, 0xa5, 0x0d, 0x6b, 0x44, - 0x9d, 0x5d, 0x9f, 0x87, 0xa7, 0xb1, 0x05, 0x09, 0x10, 0x4a, 0x61, 0xaf, 0x3d, 0xbf, 0x4a, 0xf8, - 0xfc, 0xd2, 0xe5, 0xf9, 0xfc, 0xfa, 0xb7, 0xa0, 0x1c, 0xe9, 0x85, 0x5c, 0x85, 0x85, 0x63, 0x7a, - 0xaa, 0xcc, 0x0d, 0xc5, 0x27, 0xf9, 0x02, 0x14, 0x4f, 0x6c, 0x6f, 0xac, 0x9d, 0x0a, 0xd5, 0xcf, - 0x9d, 0xfc, 0x56, 0xae, 0xfe, 0x1f, 0x39, 0x80, 0x1d, 0x9b, 0xdb, 0x7b, 0xae, 0xc7, 0x55, 0x5c, - 0x1f, 0xd9, 0x7c, 0x90, 0x75, 0xd1, 0x03, 0x9b, 0x0f, 0x50, 0x62, 0xc8, 0x37, 0xa0, 0xc0, 0x45, - 0xda, 0xa8, 0xdc, 0xb3, 0x6a, 0x28, 0x44, 0x82, 0xf8, 0xec, 0xac, 0x56, 0x7a, 0x60, 0xed, 0x3f, - 0x96, 0xc9, 0xa3, 0xa4, 0x22, 0x35, 0x23, 0x58, 0x24, 0x4c, 0xe5, 0xed, 0xf2, 0xf9, 0x59, 0xad, - 0xf8, 0x44, 0x00, 0x74, 0x1f, 0xc8, 0x7b, 0x00, 0x4e, 0x30, 0x14, 0x0a, 0xe4, 0x41, 0xa8, 0x0d, - 0xed, 0xa6, 0xd1, 0x71, 0x2b, 0xc2, 0x3c, 0x4b, 0xfd, 0x61, 0xa2, 0x8d, 0x8c, 0x19, 0x74, 0x38, - 0xf2, 0x6c, 0x4e, 0xe5, 0x0a, 0x9e, 0x8c, 0x19, 0x1a, 0x8e, 0x11, 0x45, 0xfd, 0x4f, 0x73, 0x50, - 0x94, 0xab, 0x19, 0x19, 0xc2, 0x92, 0x13, 0xf8, 0x9c, 0x7e, 0xc2, 0x75, 0x88, 0x98, 0x23, 0x8b, - 0x91, 0x1c, 0x5b, 0x8a, 0xdb, 0xf6, 0xb2, 0x98, 0x21, 0xfd, 0x83, 0x46, 0x06, 0x79, 0x13, 0x0a, - 0x5d, 0x9b, 0xdb, 0x52, 0x6f, 0x15, 0x95, 0xe9, 0x08, 0xbd, 0xa3, 0x84, 0xde, 0x29, 0xfd, 0xc9, - 0x9f, 0xd7, 0xae, 0xfc, 0xf0, 0x5f, 0x6f, 0x5e, 0xa9, 0xff, 0x3c, 0x0f, 0x95, 0x24, 0x3b, 0xb2, - 0x0e, 0x79, 0xb7, 0xab, 0x27, 0x04, 0xf4, 0xc8, 0xf2, 0xf7, 0x77, 0x30, 0xef, 0x76, 0x65, 0xb4, - 0x50, 0x39, 0x40, 0x3e, 0x5d, 0xec, 0x64, 0xd2, 0xe0, 0x5f, 0x86, 0x65, 0xe1, 0x1d, 0x27, 0x34, - 0x64, 0x22, 0x11, 0x5e, 0x90, 0xc4, 0xd7, 0x35, 0xf1, 0xb2, 0xb0, 0x9c, 0x27, 0x0a, 0x85, 0x49, - 0x3a, 0x61, 0x0d, 0x72, 0xae, 0x0b, 0x69, 0x6b, 0x48, 0xcc, 0x6f, 0x13, 0xd6, 0x44, 0xff, 0xe5, - 0x20, 0x7d, 0x2e, 0x89, 0xd5, 0x1c, 0xbc, 0xa1, 0x89, 0xd7, 0xc4, 0x20, 0x5b, 0x0a, 0x2d, 0xdb, - 0x65, 0xe9, 0x45, 0xa2, 0xc0, 0xc6, 0x47, 0x1f, 0x51, 0x47, 0xe5, 0x4b, 0x89, 0x44, 0xc1, 0x52, - 0x60, 0x34, 0x78, 0xd2, 0x86, 0x82, 0x08, 0xfe, 0x3a, 0xe1, 0xf9, 0x7a, 0x22, 0xdc, 0x45, 0x95, - 0x71, 0x3c, 0x47, 0xa2, 0x00, 0x17, 0x01, 0x50, 0x46, 0xeb, 0xb8, 0xef, 0x22, 0x5e, 0x4b, 0x2e, - 0x09, 0x9d, 0xff, 0x59, 0x1e, 0xd6, 0xa4, 0xce, 0x77, 0xe8, 0x88, 0xfa, 0x5d, 0xea, 0x3b, 0xa7, - 0x62, 0xec, 0x7e, 0x5c, 0x21, 0x47, 0xed, 0x65, 0x4e, 0x21, 0x31, 0x62, 0xec, 0xd2, 0x2e, 0x94, - 0xae, 0x13, 0x99, 0x4e, 0x34, 0xf6, 0xdd, 0x34, 0x1a, 0xb3, 0xf4, 0x62, 0x79, 0x90, 0xa0, 0x28, - 0xdf, 0x49, 0x2c, 0x0f, 0xbb, 0x06, 0x81, 0x31, 0x0d, 0x39, 0x81, 0xa5, 0x9e, 0xf4, 0x54, 0xa6, - 0x13, 0x96, 0xfd, 0x39, 0x8d, 0x36, 0x1e, 0xb1, 0x8a, 0x00, 0xca, 0x7a, 0xd5, 0x37, 0x43, 0x23, - 0xac, 0xfe, 0x0f, 0x0b, 0x70, 0x63, 0x2a, 0x3d, 0x39, 0xd2, 0x73, 0xa2, 0x7c, 0x68, 0x67, 0x8e, - 0x68, 0xe7, 0x0e, 0xa9, 0xee, 0x43, 0x29, 0x3d, 0x53, 0x49, 0x57, 0xcd, 0x5f, 0x82, 0xab, 0xf6, - 0xb4, 0xab, 0xaa, 0x22, 0x6f, 0x8e, 0x21, 0xc5, 0x81, 0x35, 0x36, 0xa0, 0xd8, 0xe9, 0x89, 0x0b, - 0x45, 0xfa, 0xc9, 0x48, 0x4e, 0xe5, 0x9c, 0x82, 0x76, 0x3f, 0x19, 0x85, 0x5a, 0xd0, 0x8a, 0x16, - 0x54, 0x14, 0x30, 0x86, 0x4a, 0x82, 0x08, 0x7b, 0x10, 0x13, 0x09, 0xe3, 0x16, 0xf0, 0xac, 0x71, - 0x0b, 0x0a, 0x94, 0x18, 0x51, 0xa8, 0xf7, 0x5c, 0xea, 0x75, 0x59, 0x35, 0x2f, 0x3b, 0x37, 0x87, - 0xc6, 0xf5, 0x62, 0xb5, 0x27, 0xd8, 0xc5, 0x11, 0x4a, 0xfe, 0x32, 0xd4, 0x52, 0xea, 0x6f, 0x43, - 0x25, 0x59, 0x0a, 0xbe, 0x78, 0x21, 0xaa, 0xff, 0x6d, 0x01, 0x96, 0x13, 0xf5, 0x11, 0x79, 0x4b, - 0x15, 0x8b, 0xaa, 0xc1, 0xb2, 0x6e, 0x10, 0x57, 0x7a, 0xdf, 0x81, 0x55, 0xc7, 0x0b, 0x7c, 0xba, - 0xe3, 0x86, 0x32, 0x0d, 0x3a, 0xd5, 0xce, 0xfa, 0x45, 0x4d, 0xb9, 0xda, 0x4a, 0x61, 0x31, 0x43, - 0x4d, 0x1c, 0x28, 0x3a, 0x21, 0xed, 0x32, 0x9d, 0x6b, 0x6d, 0xcf, 0x55, 0xd4, 0xb5, 0x04, 0x27, - 0xb5, 0x1a, 0xca, 0x4f, 0x54, 0xbc, 0xc9, 0x6f, 0x42, 0x85, 0xb1, 0x81, 0x4c, 0xd6, 0x64, 0x5e, - 0x37, 0x53, 0x51, 0x72, 0xf5, 0xfc, 0xac, 0x56, 0xb1, 0xac, 0x7b, 0x51, 0x73, 0x4c, 0x31, 0x13, - 0x0b, 0xa5, 0xa8, 0xaa, 0x85, 0x0a, 0xb3, 0x0b, 0xe5, 0x9e, 0x86, 0x63, 0x44, 0x21, 0x96, 0x96, - 0xa3, 0xd0, 0xf6, 0x9d, 0x81, 0x8e, 0xca, 0xd1, 0xc4, 0x6d, 0x4b, 0x28, 0x6a, 0xac, 0x50, 0x3b, - 0xb7, 0xfb, 0x7a, 0x17, 0x29, 0x52, 0x7b, 0xc7, 0xee, 0xa3, 0x80, 0x0b, 0x74, 0x48, 0x7b, 0x7a, - 0xbf, 0x28, 0x42, 0x23, 0xed, 0xa1, 0x80, 0x93, 0x21, 0x2c, 0x86, 0x74, 0x18, 0x70, 0x5a, 0x2d, - 0xcb, 0xa1, 0xde, 0x9f, 0x4b, 0xad, 0x28, 0x59, 0xa9, 0x8a, 0x5c, 0x25, 0xe8, 0x0a, 0x82, 0x5a, - 0x48, 0xfd, 0xaf, 0x73, 0x50, 0x32, 0xea, 0x27, 0xfb, 0x50, 0x1a, 0x33, 0x1a, 0x46, 0x51, 0xfe, - 0xc2, 0x8a, 0x96, 0xe5, 0xf2, 0xa1, 0x6e, 0x8a, 0x11, 0x13, 0xc1, 0x70, 0x64, 0x33, 0xf6, 0x34, - 0x08, 0xbb, 0xb3, 0xed, 0x90, 0x4a, 0x86, 0x07, 0xba, 0x29, 0x46, 0x4c, 0xea, 0xef, 0xc3, 0x5a, - 0x66, 0x54, 0x17, 0x58, 0x96, 0xde, 0x84, 0xc2, 0x38, 0xf4, 0x94, 0xdf, 0x96, 0x55, 0x28, 0x3d, - 0xc4, 0xb6, 0x85, 0x12, 0x5a, 0xff, 0xf7, 0x45, 0x58, 0xbe, 0xd7, 0xe9, 0x1c, 0x98, 0x02, 0xe5, - 0x05, 0x5e, 0x93, 0x48, 0x67, 0xf3, 0x97, 0x58, 0xc2, 0x1e, 0xc2, 0x02, 0xf7, 0x8c, 0xab, 0xdd, - 0x99, 0x79, 0x63, 0xa3, 0xd3, 0xb6, 0xb4, 0x11, 0xc8, 0x4d, 0x93, 0x4e, 0xdb, 0x42, 0xc1, 0x4f, - 0xd8, 0xf4, 0x90, 0xf2, 0x41, 0xd0, 0xcd, 0xee, 0x0d, 0x3f, 0x92, 0x50, 0xd4, 0xd8, 0x4c, 0x11, - 0x51, 0xbc, 0xf4, 0x22, 0xe2, 0x6b, 0xb0, 0x24, 0xd6, 0xbd, 0x60, 0xac, 0x52, 0xa2, 0x85, 0x58, - 0x53, 0x1d, 0x05, 0x46, 0x83, 0x27, 0x7d, 0x28, 0x1f, 0xd9, 0xcc, 0x75, 0x9a, 0x63, 0x3e, 0xd0, - 0x79, 0xd1, 0xec, 0xfa, 0xda, 0x36, 0x1c, 0xd4, 0x96, 0x56, 0xf4, 0x8b, 0x31, 0x6f, 0xf2, 0x03, - 0x58, 0x1a, 0x50, 0xbb, 0x2b, 0x14, 0x52, 0x92, 0x0a, 0xc1, 0x97, 0x57, 0x48, 0xc2, 0x00, 0x1b, - 0xf7, 0x14, 0x53, 0x55, 0xd1, 0xc5, 0x7b, 0x44, 0x0a, 0x8a, 0x46, 0x26, 0x39, 0x81, 0x15, 0x55, - 0xf9, 0x6a, 0x4c, 0xb5, 0x2c, 0x3b, 0xf1, 0x6b, 0xb3, 0x6f, 0x7a, 0x26, 0xb8, 0x6c, 0x5f, 0x3b, - 0x3f, 0xab, 0xad, 0x24, 0x21, 0x0c, 0xd3, 0x62, 0xd6, 0xef, 0x40, 0x25, 0xd9, 0xc3, 0x99, 0x6a, - 0xab, 0xdf, 0x5b, 0x80, 0x6b, 0x0f, 0xb7, 0x2c, 0xb3, 0xb1, 0x76, 0x10, 0x78, 0xae, 0x73, 0x4a, - 0x7e, 0x07, 0x16, 0x3d, 0xfb, 0x88, 0x7a, 0xac, 0x9a, 0x93, 0x43, 0xf8, 0xe0, 0xe5, 0xf5, 0x38, - 0xc1, 0xbc, 0xd1, 0x96, 0x9c, 0x95, 0x32, 0x23, 0xeb, 0x56, 0x40, 0xd4, 0x62, 0xc9, 0x87, 0xb0, - 0x74, 0x64, 0x3b, 0xc7, 0x41, 0xaf, 0xa7, 0xa3, 0xd4, 0xd6, 0x4b, 0x18, 0x8c, 0x6c, 0xaf, 0xf2, - 0x27, 0xfd, 0x83, 0x86, 0x2b, 0xb1, 0xe0, 0x06, 0x0d, 0xc3, 0x20, 0xdc, 0xf7, 0x35, 0x4a, 0x5b, - 0xad, 0xf4, 0xe7, 0xd2, 0xf6, 0x5b, 0xba, 0x5f, 0x37, 0x76, 0xa7, 0x11, 0xe1, 0xf4, 0xb6, 0xeb, - 0xdf, 0x86, 0xe5, 0xc4, 0xe0, 0x66, 0x9a, 0x87, 0x9f, 0x2c, 0x42, 0xe5, 0xa1, 0xdd, 0x3b, 0xb6, - 0x2f, 0x18, 0xf4, 0xbe, 0x02, 0x45, 0x1e, 0x8c, 0x5c, 0x47, 0x67, 0x08, 0x51, 0x46, 0xd5, 0x11, - 0x40, 0x54, 0x38, 0x91, 0xba, 0x8f, 0xec, 0x90, 0xcb, 0x8d, 0x21, 0x39, 0xb0, 0x62, 0x9c, 0xba, - 0x1f, 0x18, 0x04, 0xc6, 0x34, 0x99, 0xa0, 0x52, 0xb8, 0xf4, 0xa0, 0xb2, 0x05, 0x95, 0x90, 0x7e, - 0x3c, 0x76, 0xe5, 0x16, 0xe5, 0x31, 0x93, 0x29, 0x40, 0x31, 0x3e, 0xfa, 0xc3, 0x04, 0x0e, 0x53, - 0x94, 0x22, 0x71, 0x10, 0xf5, 0x76, 0x48, 0x19, 0x93, 0xf1, 0xa8, 0x14, 0x27, 0x0e, 0x2d, 0x0d, - 0xc7, 0x88, 0x42, 0x24, 0x5a, 0x3d, 0x6f, 0xcc, 0x06, 0x7b, 0x82, 0x87, 0x28, 0x14, 0x64, 0x58, - 0x2a, 0xc6, 0x89, 0xd6, 0x5e, 0x0a, 0x8b, 0x19, 0x6a, 0x13, 0xfb, 0x4b, 0xaf, 0x38, 0xf6, 0x27, - 0x56, 0xb2, 0xf2, 0x25, 0xae, 0x64, 0x4d, 0x58, 0x8b, 0x4c, 0xc0, 0xf5, 0xfb, 0x0f, 0xe9, 0x69, - 0x15, 0xd2, 0x45, 0xe2, 0x41, 0x1a, 0x8d, 0x59, 0x7a, 0xb1, 0x1a, 0x98, 0xc2, 0x7d, 0x39, 0x5d, - 0x20, 0x9b, 0xa2, 0xdd, 0xe0, 0xc9, 0xaf, 0x43, 0x81, 0xd9, 0xcc, 0xab, 0x56, 0x5e, 0xf6, 0x44, - 0xa8, 0x69, 0xb5, 0xb5, 0xf6, 0x64, 0xe2, 0x20, 0xfe, 0x51, 0xb2, 0xac, 0xef, 0x03, 0xb4, 0x83, - 0xbe, 0xf1, 0xa0, 0x26, 0xac, 0xb9, 0x3e, 0xa7, 0xe1, 0x89, 0xed, 0x59, 0xd4, 0x09, 0xfc, 0x2e, - 0x93, 0xde, 0x54, 0x88, 0x87, 0x75, 0x3f, 0x8d, 0xc6, 0x2c, 0x7d, 0xfd, 0x2f, 0x17, 0x60, 0xf9, - 0x71, 0xb3, 0x63, 0x5d, 0xd0, 0x29, 0x13, 0xdb, 0x04, 0xf9, 0x17, 0x6c, 0x13, 0x24, 0xa6, 0x7a, - 0xe1, 0xb5, 0xed, 0xbb, 0x5f, 0xbe, 0x83, 0x6b, 0xc7, 0x29, 0xbe, 0x5a, 0xc7, 0xa9, 0xff, 0x61, - 0x01, 0xae, 0xee, 0x8f, 0xa8, 0xff, 0xc1, 0xc0, 0x65, 0xc7, 0x89, 0xf3, 0x9f, 0x41, 0xc0, 0x78, - 0x36, 0x0d, 0xbd, 0x17, 0x30, 0x8e, 0x12, 0x93, 0xb4, 0xda, 0xfc, 0x0b, 0xac, 0x76, 0x13, 0xca, - 0x22, 0x73, 0x65, 0x23, 0xdb, 0x99, 0xd8, 0x05, 0x79, 0x6c, 0x10, 0x18, 0xd3, 0xc8, 0xbb, 0x08, - 0x63, 0x3e, 0xe8, 0x04, 0xc7, 0xd4, 0x9f, 0xad, 0x46, 0x52, 0x77, 0x11, 0x4c, 0x5b, 0x8c, 0xd9, - 0x90, 0xdb, 0x00, 0x76, 0x7c, 0x2f, 0x42, 0xd5, 0x47, 0x91, 0xc6, 0x9b, 0xf1, 0xad, 0x88, 0x04, - 0x55, 0xd2, 0xd0, 0x16, 0x5f, 0x9b, 0xa1, 0x2d, 0x5d, 0xfa, 0x01, 0x0f, 0x42, 0x25, 0x59, 0xd3, - 0x5f, 0x60, 0xd3, 0xd8, 0x54, 0x2d, 0xf9, 0xe7, 0x55, 0x2d, 0xf5, 0xbf, 0x5a, 0x82, 0x95, 0x83, - 0xb1, 0xc7, 0xec, 0xf0, 0x55, 0x2e, 0xd2, 0xaf, 0xf9, 0xd0, 0x3e, 0x69, 0x20, 0x85, 0x4b, 0x34, - 0x90, 0x11, 0x5c, 0xe7, 0x1e, 0xeb, 0x84, 0x63, 0xc6, 0x5b, 0x34, 0xe4, 0x4c, 0xef, 0x26, 0x14, - 0x67, 0x3e, 0x50, 0xed, 0xb4, 0xad, 0x2c, 0x17, 0x9c, 0xc6, 0x9a, 0x1c, 0xc1, 0x3a, 0xf7, 0x58, - 0xd3, 0xf3, 0x82, 0xa7, 0xf7, 0x7d, 0x95, 0x41, 0xb7, 0x02, 0xdf, 0xa7, 0xd2, 0x57, 0x74, 0xd2, - 0x50, 0xd7, 0xfd, 0x5d, 0xef, 0xb4, 0xad, 0xe7, 0x50, 0xe2, 0x2f, 0xe0, 0x42, 0x1e, 0xc9, 0x51, - 0x3d, 0xb1, 0x3d, 0xb7, 0x6b, 0x73, 0x2a, 0x42, 0x8d, 0xb4, 0xa9, 0x25, 0xc9, 0xfc, 0xcb, 0x9a, - 0xb9, 0xe8, 0x72, 0x96, 0x04, 0xa7, 0xb5, 0xfb, 0x9f, 0xca, 0x33, 0xba, 0xb0, 0x16, 0x05, 0x15, - 0xad, 0xf7, 0xf2, 0xcc, 0x47, 0xcb, 0xcd, 0x34, 0x07, 0xcc, 0xb2, 0x24, 0x3f, 0x80, 0x6b, 0x4e, - 0xa4, 0x19, 0x9d, 0x29, 0xcb, 0xc4, 0x62, 0x9e, 0x6c, 0xfe, 0xc6, 0xf9, 0x59, 0xed, 0x5a, 0x2b, - 0xcb, 0x16, 0x27, 0x25, 0xd5, 0x7f, 0x37, 0x07, 0x65, 0xb4, 0x39, 0x6d, 0xbb, 0x43, 0x97, 0x93, - 0xdb, 0x50, 0x18, 0xfb, 0xae, 0x59, 0x0c, 0x36, 0x8c, 0x77, 0x1f, 0xfa, 0x2e, 0x7f, 0x76, 0x56, - 0x5b, 0x8d, 0x08, 0xa9, 0x80, 0xa0, 0xa4, 0x15, 0x09, 0x84, 0xcc, 0xf8, 0x18, 0x67, 0x07, 0x34, - 0x14, 0x08, 0xe9, 0xc8, 0xc5, 0x38, 0x81, 0xc0, 0x34, 0x1a, 0xb3, 0xf4, 0xf5, 0x9f, 0xe4, 0x61, - 0xd1, 0x92, 0x4e, 0x42, 0xbe, 0x07, 0xa5, 0x21, 0xe5, 0xb6, 0xdc, 0xb5, 0x55, 0x5b, 0x39, 0x6f, - 0x5f, 0xec, 0x70, 0x60, 0x5f, 0x66, 0x0c, 0x8f, 0x28, 0xb7, 0x63, 0x5f, 0x8e, 0x61, 0x18, 0x71, - 0x25, 0x3d, 0x7d, 0x98, 0x99, 0x9f, 0x77, 0x9b, 0x5b, 0xf5, 0xd8, 0x1a, 0x51, 0x67, 0xea, 0xf9, - 0xa5, 0x0f, 0x8b, 0x8c, 0xdb, 0x7c, 0xcc, 0xe6, 0xbf, 0x5a, 0xa3, 0x25, 0x49, 0x6e, 0x89, 0x93, - 0x21, 0xf9, 0x8f, 0x5a, 0x4a, 0xfd, 0x9f, 0x73, 0x00, 0x8a, 0xb0, 0xed, 0x32, 0x4e, 0x7e, 0x6b, - 0x42, 0x91, 0x8d, 0x8b, 0x29, 0x52, 0xb4, 0x96, 0x6a, 0x8c, 0x4a, 0x03, 0x03, 0x49, 0x28, 0x91, - 0x42, 0xd1, 0xe5, 0x74, 0x68, 0xf6, 0x94, 0xdf, 0x9b, 0x77, 0x6c, 0x71, 0xd4, 0xbf, 0x2f, 0xd8, - 0xa2, 0xe2, 0x5e, 0xff, 0x8b, 0x82, 0x19, 0x93, 0x50, 0x2c, 0xf9, 0x51, 0x0e, 0x2a, 0x5d, 0x73, - 0x6c, 0xe1, 0x52, 0x53, 0x77, 0xdf, 0x7f, 0x65, 0x27, 0x27, 0x71, 0x11, 0xb5, 0x93, 0x10, 0x83, - 0x29, 0xa1, 0x24, 0x80, 0x12, 0x57, 0x11, 0xdc, 0x0c, 0xbf, 0x39, 0xf7, 0x5a, 0x90, 0x38, 0xe9, - 0xd4, 0xac, 0x31, 0x12, 0x42, 0xbc, 0xc4, 0xb9, 0xe8, 0xdc, 0x7b, 0xd6, 0xe6, 0x24, 0x55, 0x6d, - 0x55, 0x4e, 0x9e, 0xab, 0x92, 0x07, 0x40, 0x74, 0xdd, 0xbe, 0x67, 0xbb, 0x1e, 0xed, 0x62, 0x30, - 0xf6, 0xd5, 0x36, 0x5b, 0x29, 0xbe, 0x38, 0xb0, 0x3b, 0x41, 0x81, 0x53, 0x5a, 0x89, 0x4a, 0x55, - 0xf6, 0x67, 0x7b, 0xcc, 0x12, 0xc9, 0x58, 0xa4, 0xe4, 0xdd, 0x04, 0x0e, 0x53, 0x94, 0xe4, 0x16, - 0x94, 0x42, 0x3a, 0xf2, 0x5c, 0xc7, 0x56, 0x95, 0x6a, 0xd1, 0x5c, 0x6d, 0x52, 0x30, 0x8c, 0xb0, - 0xf5, 0x00, 0x2a, 0x49, 0xff, 0x20, 0x1f, 0x46, 0x7e, 0xa7, 0xcc, 0xfe, 0x5b, 0xb3, 0xd7, 0x4e, - 0xbf, 0xd8, 0xd1, 0xfe, 0x3e, 0x0f, 0x15, 0xcb, 0xb3, 0x9d, 0x28, 0x85, 0x4e, 0xe7, 0x26, 0xb9, - 0xd7, 0x50, 0x2e, 0x00, 0x93, 0xfd, 0x91, 0x59, 0x74, 0x7e, 0xe6, 0x1b, 0x24, 0x56, 0xd4, 0x18, - 0x13, 0x8c, 0x44, 0xde, 0xef, 0x0c, 0x6c, 0xdf, 0xa7, 0x9e, 0x4e, 0xe5, 0xa3, 0x34, 0xa5, 0xa5, - 0xc0, 0x68, 0xf0, 0x82, 0x74, 0x48, 0x19, 0xb3, 0xfb, 0xe6, 0x84, 0x39, 0x22, 0x7d, 0xa4, 0xc0, - 0x68, 0xf0, 0xf5, 0xff, 0x5a, 0x00, 0x62, 0x71, 0xdb, 0xef, 0xda, 0x61, 0xf7, 0xe1, 0x96, 0xf5, - 0xba, 0xae, 0x93, 0x3e, 0x9e, 0xbc, 0x4e, 0xfa, 0xf6, 0xb4, 0xeb, 0xa4, 0x5f, 0x7e, 0x38, 0x3e, - 0xa2, 0xa1, 0x4f, 0x39, 0x65, 0x66, 0x83, 0xee, 0x7f, 0xe3, 0xa5, 0x52, 0xd2, 0x83, 0x95, 0x91, - 0xcd, 0x9d, 0x81, 0xc5, 0x43, 0x9b, 0xd3, 0xfe, 0xa9, 0x9e, 0x87, 0xf7, 0x74, 0xb3, 0x95, 0x83, - 0x24, 0xf2, 0xd9, 0x59, 0xed, 0xff, 0x3f, 0xef, 0x2e, 0x3a, 0x3f, 0x1d, 0x51, 0xd6, 0x90, 0xe4, - 0xf2, 0x94, 0x3f, 0xcd, 0x56, 0x14, 0x57, 0x9e, 0x7b, 0x42, 0xd5, 0xca, 0x2a, 0xfd, 0xb9, 0x14, - 0xf7, 0xad, 0x1d, 0x61, 0x30, 0x41, 0x55, 0xdf, 0x84, 0x8a, 0x72, 0x21, 0xbd, 0x6f, 0x5a, 0x83, - 0xa2, 0x2d, 0x32, 0x43, 0xe9, 0x2a, 0x45, 0x75, 0x78, 0x26, 0x53, 0x45, 0x54, 0xf0, 0xfa, 0xef, - 0x97, 0x20, 0x8a, 0x4c, 0xc4, 0x99, 0x58, 0xc8, 0x66, 0xbf, 0x1f, 0xf9, 0x48, 0x33, 0x50, 0x41, - 0xc4, 0xfc, 0x25, 0xd6, 0x33, 0x7d, 0x5b, 0xca, 0x75, 0x68, 0xd3, 0x71, 0x82, 0xb1, 0x3e, 0xc7, - 0xcf, 0x4f, 0xde, 0x96, 0x4a, 0x53, 0xe0, 0x94, 0x56, 0xe4, 0x81, 0xbc, 0x89, 0xca, 0x6d, 0xa1, - 0x53, 0x1d, 0xaf, 0xdf, 0x7a, 0xce, 0x4d, 0x54, 0x45, 0x14, 0x5d, 0x3f, 0x55, 0xbf, 0x18, 0x37, - 0x27, 0xbb, 0xb0, 0x74, 0x12, 0x78, 0xe3, 0x21, 0x35, 0xdb, 0x10, 0xeb, 0xd3, 0x38, 0x3d, 0x91, - 0x24, 0x89, 0xba, 0x5c, 0x35, 0x41, 0xd3, 0x96, 0x50, 0x58, 0x93, 0x49, 0xb8, 0xcb, 0x4f, 0xf5, - 0x19, 0xb9, 0x2e, 0x21, 0xbe, 0x3a, 0x8d, 0xdd, 0x41, 0xd0, 0xb5, 0xd2, 0xd4, 0xfa, 0x9a, 0x64, - 0x1a, 0x88, 0x59, 0x9e, 0xe4, 0xc7, 0x39, 0xa8, 0xf8, 0x41, 0x97, 0x9a, 0xf0, 0xa2, 0x6b, 0xe9, - 0xce, 0xfc, 0xab, 0x55, 0xe3, 0x71, 0x82, 0xad, 0xda, 0x14, 0x8f, 0x56, 0x91, 0x24, 0x0a, 0x53, - 0xf2, 0xc9, 0x21, 0x2c, 0xf3, 0xc0, 0xd3, 0x3e, 0x6a, 0x0a, 0xec, 0x8d, 0x69, 0x63, 0xee, 0x44, - 0x64, 0xf1, 0x6d, 0x9a, 0x18, 0xc6, 0x30, 0xc9, 0x87, 0xf8, 0x70, 0xd5, 0x1d, 0xda, 0x7d, 0x7a, - 0x30, 0xf6, 0x3c, 0x15, 0x53, 0xcd, 0x51, 0xca, 0xd4, 0x2b, 0xc7, 0x22, 0x10, 0x79, 0xda, 0x2f, - 0x68, 0x8f, 0x86, 0xd4, 0x77, 0x68, 0x74, 0xdf, 0xea, 0xea, 0xfd, 0x0c, 0x27, 0x9c, 0xe0, 0x4d, - 0xee, 0xc2, 0xb5, 0x51, 0xe8, 0x06, 0x52, 0xd5, 0x9e, 0xcd, 0xd4, 0x5a, 0x5a, 0x96, 0xc6, 0xf9, - 0x25, 0xcd, 0xe6, 0xda, 0x41, 0x96, 0x00, 0x27, 0xdb, 0x88, 0x55, 0xd5, 0x00, 0x65, 0x8d, 0xa1, - 0x57, 0x55, 0xd3, 0x16, 0x23, 0x2c, 0xd9, 0x83, 0x92, 0xdd, 0xeb, 0xb9, 0xbe, 0xa0, 0x5c, 0x96, - 0xa6, 0xf2, 0xe6, 0xb4, 0xa1, 0x35, 0x35, 0x8d, 0xe2, 0x63, 0xfe, 0x30, 0x6a, 0xbb, 0xfe, 0x5d, - 0xb8, 0x36, 0x31, 0x75, 0x33, 0x6d, 0xf9, 0x5b, 0x00, 0xf1, 0x7d, 0x12, 0xf2, 0x15, 0x28, 0x32, - 0x6e, 0x87, 0xa6, 0x42, 0x89, 0xb2, 0x46, 0x4b, 0x00, 0x51, 0xe1, 0xc8, 0x4d, 0x28, 0x30, 0x1e, - 0x8c, 0xb2, 0x7b, 0x14, 0x16, 0x0f, 0x46, 0x28, 0x31, 0xf5, 0xcf, 0x0a, 0xb0, 0x64, 0x56, 0x1e, - 0x96, 0xc8, 0xae, 0x72, 0xf3, 0x1e, 0x5d, 0x6b, 0xa6, 0x2f, 0x4c, 0xb2, 0xd2, 0xcb, 0x45, 0xfe, - 0xd2, 0x97, 0x8b, 0x63, 0x58, 0x1c, 0xc9, 0x60, 0xac, 0x03, 0xd4, 0xdd, 0xf9, 0x65, 0x4b, 0x76, - 0x6a, 0xad, 0x55, 0xdf, 0xa8, 0x45, 0x90, 0x8f, 0x61, 0x25, 0xa4, 0x3c, 0x3c, 0x4d, 0xad, 0x4d, - 0xf3, 0x94, 0xb7, 0xf2, 0xb0, 0x0f, 0x93, 0x2c, 0x31, 0x2d, 0x81, 0x8c, 0xa0, 0x1c, 0x9a, 0x62, - 0x55, 0x87, 0xba, 0xd6, 0xcb, 0x0f, 0x31, 0xaa, 0x7b, 0x55, 0xa4, 0x8e, 0x7e, 0x31, 0x16, 0x52, - 0xff, 0xcf, 0x1c, 0x5c, 0xcd, 0x4e, 0x03, 0x39, 0x86, 0x05, 0x16, 0x3a, 0xda, 0xac, 0x0e, 0x5e, - 0xdd, 0xfc, 0xaa, 0x64, 0x46, 0xed, 0x57, 0x58, 0xa1, 0x83, 0x42, 0x8a, 0x30, 0xfb, 0x2e, 0x65, - 0x3c, 0x6b, 0xf6, 0x3b, 0x94, 0x71, 0x94, 0x18, 0xd2, 0x4e, 0x26, 0x3d, 0x2a, 0xa7, 0x6b, 0x4c, - 0x4b, 0x7a, 0xbe, 0x94, 0x95, 0x37, 0x2d, 0xe5, 0xa9, 0xff, 0x4b, 0x1e, 0xbe, 0x38, 0xbd, 0x63, - 0xe4, 0x3b, 0xb0, 0x1a, 0x95, 0x4c, 0xa7, 0x89, 0xe7, 0x69, 0xd1, 0xc9, 0xd1, 0x4e, 0x0a, 0x8b, - 0x19, 0x6a, 0x91, 0x65, 0xe8, 0x2b, 0x5c, 0xe6, 0x8d, 0x5a, 0x62, 0x0b, 0xb7, 0x15, 0x61, 0x30, - 0x41, 0x45, 0x9a, 0xb0, 0xa6, 0xff, 0x3a, 0xc9, 0x62, 0x29, 0x71, 0x3e, 0xd3, 0x4a, 0xa3, 0x31, - 0x4b, 0x2f, 0xd2, 0x58, 0x91, 0x0d, 0x98, 0x47, 0x04, 0x89, 0x34, 0x76, 0x47, 0x81, 0xd1, 0xe0, - 0x45, 0x65, 0x23, 0x3e, 0x3b, 0xe9, 0xfb, 0xaa, 0x71, 0xf9, 0x98, 0xc0, 0x61, 0x8a, 0x32, 0xbe, - 0x48, 0xab, 0x6e, 0xe3, 0x4c, 0x5c, 0xa4, 0xad, 0xff, 0x2c, 0x07, 0x2b, 0x29, 0xa7, 0x22, 0x3d, - 0x58, 0x38, 0xde, 0x32, 0xf5, 0xcc, 0xc3, 0x57, 0x78, 0xca, 0xac, 0x2c, 0xe8, 0xe1, 0x16, 0x43, - 0x21, 0x80, 0x7c, 0x14, 0x95, 0x4e, 0x73, 0x5f, 0xce, 0x4b, 0x26, 0x7c, 0x3a, 0x01, 0x4f, 0x57, - 0x51, 0xff, 0x58, 0x81, 0xb5, 0x4c, 0xb4, 0xbc, 0xc0, 0x95, 0x18, 0x65, 0x18, 0xfa, 0x12, 0xff, - 0x14, 0xc3, 0x30, 0xd7, 0xfb, 0x13, 0x54, 0xa4, 0xaf, 0xb4, 0xa7, 0x02, 0x5d, 0x7b, 0xae, 0x21, - 0x65, 0xaa, 0x96, 0x8c, 0xfa, 0x7e, 0x94, 0x83, 0x8a, 0x9d, 0x78, 0x7d, 0xa6, 0xe3, 0xdc, 0xa3, - 0x79, 0x4a, 0x99, 0x89, 0x87, 0x77, 0xea, 0x72, 0x58, 0x12, 0x81, 0x29, 0xa1, 0xc4, 0x81, 0xc2, - 0x80, 0x73, 0xf3, 0x06, 0x6a, 0xf7, 0x95, 0xdc, 0xed, 0x50, 0x67, 0x88, 0x02, 0x80, 0x92, 0x39, - 0x79, 0x0a, 0x65, 0xfb, 0x29, 0x53, 0x2f, 0x52, 0xf5, 0xe3, 0xa8, 0x79, 0x2a, 0xb6, 0xcc, 0xe3, - 0x56, 0x7d, 0xb8, 0x63, 0xa0, 0x18, 0xcb, 0x22, 0x21, 0x2c, 0x3a, 0xf2, 0x11, 0x81, 0xbe, 0x22, - 0x73, 0xf7, 0x15, 0x3d, 0x46, 0x50, 0x6b, 0x4a, 0x0a, 0x84, 0x5a, 0x12, 0xe9, 0x43, 0xf1, 0xd8, - 0xee, 0x1d, 0xdb, 0x7a, 0x87, 0x79, 0x0e, 0xaf, 0x48, 0xde, 0x5d, 0x50, 0x9e, 0x2f, 0x21, 0xa8, - 0xf8, 0x8b, 0xa9, 0xf3, 0x6d, 0xce, 0xf4, 0x36, 0xf3, 0x1c, 0x53, 0x97, 0x38, 0x8d, 0x55, 0x53, - 0x27, 0x00, 0x28, 0x99, 0x8b, 0xd1, 0xc8, 0x22, 0x5f, 0x6f, 0x32, 0xcf, 0xe3, 0xe3, 0x89, 0x4d, - 0x10, 0x35, 0x1a, 0x09, 0x41, 0xc5, 0x5f, 0xd8, 0x48, 0x60, 0x4e, 0x1b, 0x75, 0x0e, 0x39, 0x87, - 0x8d, 0x64, 0x0f, 0x2e, 0x95, 0x8d, 0x44, 0x50, 0x8c, 0x65, 0x91, 0x0f, 0x61, 0xc1, 0x0b, 0xfa, - 0xfa, 0xe8, 0x7c, 0x8e, 0x0d, 0xde, 0xf8, 0x94, 0x5c, 0x39, 0x7a, 0x3b, 0xe8, 0xa3, 0xe0, 0x4c, - 0xfe, 0x20, 0x07, 0xab, 0x76, 0xea, 0x35, 0x5d, 0x75, 0x65, 0xde, 0x3b, 0xdc, 0x53, 0x5f, 0xe7, - 0xa9, 0xc7, 0xbc, 0x69, 0x14, 0x66, 0x44, 0xcb, 0x5c, 0x4e, 0x9e, 0xb7, 0x55, 0x57, 0xe7, 0x75, - 0x89, 0xd4, 0xb9, 0x9d, 0xce, 0xe5, 0x24, 0x08, 0xb5, 0x08, 0xf2, 0xc7, 0x39, 0xb9, 0xcc, 0x26, - 0x9f, 0x51, 0x55, 0xd7, 0xe6, 0x7e, 0x16, 0x34, 0xfd, 0xe9, 0x57, 0x6a, 0xe5, 0x4e, 0x12, 0x60, - 0xb6, 0x0b, 0x75, 0x07, 0x96, 0x13, 0x4f, 0x43, 0x2f, 0x70, 0x8e, 0x79, 0x1b, 0xe0, 0x84, 0x86, - 0x6e, 0xef, 0xb4, 0x45, 0x43, 0xae, 0x5f, 0x68, 0x45, 0x0b, 0xc9, 0x93, 0x08, 0x83, 0x09, 0xaa, - 0xed, 0xc6, 0xa7, 0x9f, 0x6f, 0x5c, 0xf9, 0xec, 0xf3, 0x8d, 0x2b, 0x3f, 0xfd, 0x7c, 0xe3, 0xca, - 0x0f, 0xcf, 0x37, 0x72, 0x9f, 0x9e, 0x6f, 0xe4, 0x3e, 0x3b, 0xdf, 0xc8, 0xfd, 0xf4, 0x7c, 0x23, - 0xf7, 0x6f, 0xe7, 0x1b, 0xb9, 0x3f, 0xfa, 0xd9, 0xc6, 0x95, 0xdf, 0x28, 0x99, 0x61, 0xfd, 0x77, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x7d, 0xb4, 0x34, 0x6f, 0x41, 0x00, 0x00, + // 4202 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3b, 0x4b, 0x6c, 0x23, 0xd9, + 0x71, 0x43, 0x8a, 0x94, 0xc8, 0x12, 0x25, 0xcd, 0xbc, 0xf1, 0x78, 0x69, 0x79, 0x57, 0x1c, 0xd0, + 0x88, 0xb3, 0x36, 0x6c, 0x6a, 0x77, 0x36, 0x89, 0xe5, 0x09, 0x62, 0x2f, 0x45, 0x49, 0xf3, 0xe3, + 0x8c, 0xb4, 0xd5, 0xd4, 0x2c, 0xf2, 0x01, 0x76, 0x5b, 0xcd, 0x47, 0xb2, 0x47, 0xcd, 0x6e, 0x4e, + 0xbf, 0x47, 0xcd, 0xca, 0x80, 0x13, 0x27, 0x46, 0x0e, 0x41, 0x00, 0x27, 0x87, 0x1c, 0x72, 0x0a, + 0x12, 0x04, 0x39, 0x25, 0x87, 0x04, 0x39, 0x06, 0xb9, 0xf8, 0xb4, 0x40, 0x0e, 0xd9, 0x1c, 0x02, + 0xf8, 0x10, 0x08, 0x59, 0xf9, 0x94, 0x43, 0x90, 0xf8, 0x3a, 0xa7, 0xe0, 0xfd, 0xfa, 0x47, 0x8e, + 0x47, 0x1a, 0x2a, 0x9a, 0x00, 0xb9, 0x75, 0x57, 0xd5, 0xab, 0x7a, 0xaf, 0x5e, 0x55, 0xbd, 0xaa, + 0xf7, 0x81, 0xbb, 0x7d, 0x97, 0x0f, 0xc6, 0x07, 0x0d, 0x27, 0x18, 0xae, 0xdb, 0x61, 0x3f, 0x18, + 0x85, 0xc1, 0x13, 0xf9, 0xf1, 0x4d, 0x7a, 0x44, 0x7d, 0xce, 0xd6, 0x47, 0x87, 0xfd, 0x75, 0x7b, + 0xe4, 0xb2, 0x75, 0x46, 0x7d, 0x16, 0x84, 0xeb, 0x47, 0xef, 0xda, 0xde, 0x68, 0x60, 0xbf, 0xbb, + 0xde, 0xa7, 0x3e, 0x0d, 0x6d, 0x4e, 0xbb, 0x8d, 0x51, 0x18, 0xf0, 0x80, 0x6c, 0xc4, 0x9c, 0x1a, + 0x86, 0x93, 0xfc, 0xf8, 0x48, 0x71, 0x6a, 0x8c, 0x0e, 0xfb, 0x0d, 0xc1, 0xa9, 0xa1, 0x38, 0x35, + 0x0c, 0xa7, 0xd5, 0xef, 0x9e, 0xb9, 0x0f, 0x4e, 0x30, 0x1c, 0x06, 0x7e, 0x56, 0xf4, 0xea, 0x37, + 0x13, 0x0c, 0xfa, 0x41, 0x3f, 0x58, 0x97, 0xe0, 0x83, 0x71, 0x4f, 0xfe, 0xc9, 0x1f, 0xf9, 0xa5, + 0xc9, 0xeb, 0x87, 0x1b, 0xac, 0xe1, 0x06, 0x82, 0xe5, 0xba, 0x13, 0x84, 0x74, 0xfd, 0x68, 0x62, + 0x34, 0xab, 0xbf, 0x14, 0xd3, 0x0c, 0x6d, 0x67, 0xe0, 0xfa, 0x34, 0x3c, 0x8e, 0xfb, 0x31, 0xa4, + 0xdc, 0x9e, 0xd6, 0x6a, 0xfd, 0x45, 0xad, 0xc2, 0xb1, 0xcf, 0xdd, 0x21, 0x9d, 0x68, 0xf0, 0x2b, + 0x2f, 0x6b, 0xc0, 0x9c, 0x01, 0x1d, 0xda, 0xd9, 0x76, 0xf5, 0xe7, 0x05, 0xb8, 0xda, 0xfc, 0xd0, + 0x6a, 0xdb, 0xc3, 0x83, 0xae, 0xdd, 0x09, 0xdd, 0x7e, 0x9f, 0x86, 0x64, 0x03, 0x2a, 0xbd, 0xb1, + 0xef, 0x70, 0x37, 0xf0, 0x1f, 0xd9, 0x43, 0x5a, 0xcd, 0xdd, 0xcc, 0xbd, 0x5d, 0xde, 0xfc, 0xc2, + 0xa7, 0x27, 0xb5, 0x2b, 0xa7, 0x27, 0xb5, 0xca, 0x4e, 0x02, 0x87, 0x29, 0x4a, 0x82, 0x50, 0xb6, + 0x1d, 0x87, 0x32, 0xf6, 0x80, 0x1e, 0x57, 0xf3, 0x37, 0x73, 0x6f, 0x2f, 0xde, 0xfa, 0x85, 0x86, + 0xea, 0x9a, 0x98, 0xb2, 0x86, 0xd0, 0x52, 0xe3, 0xe8, 0xdd, 0x86, 0x45, 0x9d, 0x90, 0xf2, 0x07, + 0xf4, 0xd8, 0xa2, 0x1e, 0x75, 0x78, 0x10, 0x6e, 0x2e, 0x9d, 0x9e, 0xd4, 0xca, 0x4d, 0xd3, 0x16, + 0x63, 0x36, 0x82, 0x27, 0x33, 0xe4, 0xd5, 0xb9, 0x73, 0xf3, 0x8c, 0xc0, 0x18, 0xb3, 0x21, 0x5f, + 0x85, 0xf9, 0x90, 0xf6, 0xdd, 0xc0, 0xaf, 0x16, 0xe4, 0xd8, 0x96, 0xf5, 0xd8, 0xe6, 0x51, 0x42, + 0x51, 0x63, 0xc9, 0x18, 0x16, 0x46, 0xf6, 0xb1, 0x17, 0xd8, 0xdd, 0x6a, 0xf1, 0xe6, 0xdc, 0xdb, + 0x8b, 0xb7, 0xee, 0x37, 0x5e, 0xd5, 0x3a, 0x1b, 0x5a, 0xbb, 0x7b, 0x76, 0x68, 0x0f, 0x29, 0xa7, + 0xe1, 0xe6, 0x8a, 0x16, 0xba, 0xb0, 0xa7, 0x44, 0xa0, 0x91, 0x45, 0x7e, 0x1b, 0x60, 0x64, 0xc8, + 0x58, 0x75, 0xfe, 0xc2, 0x25, 0x13, 0x2d, 0x19, 0x22, 0x10, 0xc3, 0x84, 0x44, 0x72, 0x1b, 0x96, + 0x5d, 0xff, 0x28, 0x70, 0x6c, 0x31, 0xb1, 0x9d, 0xe3, 0x11, 0xad, 0x2e, 0x48, 0x35, 0x91, 0xd3, + 0x93, 0xda, 0xf2, 0xbd, 0x14, 0x06, 0x33, 0x94, 0xe4, 0x6b, 0xb0, 0x10, 0x06, 0x1e, 0x6d, 0xe2, + 0xa3, 0x6a, 0x49, 0x36, 0x8a, 0x86, 0x89, 0x0a, 0x8c, 0x06, 0x5f, 0xff, 0xe7, 0x3c, 0x5c, 0x6f, + 0x86, 0xfd, 0xe0, 0xc3, 0x20, 0x3c, 0xec, 0x79, 0xc1, 0x33, 0x63, 0x7f, 0x3e, 0xcc, 0xb3, 0x60, + 0x1c, 0x3a, 0xca, 0xf2, 0x66, 0x1a, 0x7a, 0x33, 0xe4, 0x6e, 0xcf, 0x76, 0x78, 0x5b, 0x77, 0x71, + 0x13, 0xc4, 0x2c, 0x5b, 0x92, 0x3b, 0x6a, 0x29, 0xe4, 0x2e, 0x94, 0x83, 0x91, 0x70, 0x0b, 0x61, + 0x10, 0x79, 0xd9, 0xe9, 0xaf, 0xeb, 0x4e, 0x97, 0x77, 0x0d, 0xe2, 0xf9, 0x49, 0xed, 0x46, 0xb2, + 0xb3, 0x11, 0x02, 0xe3, 0xc6, 0x99, 0x89, 0x9b, 0xbb, 0xec, 0x89, 0xab, 0xff, 0x4c, 0xb8, 0x73, + 0x66, 0xc8, 0xc4, 0x82, 0x3c, 0x7b, 0x4f, 0xab, 0xf2, 0x57, 0xcf, 0xde, 0x19, 0x15, 0x23, 0x1b, + 0xd6, 0x7b, 0x86, 0xe1, 0xe6, 0xfc, 0xe9, 0x49, 0x2d, 0x6f, 0xbd, 0x87, 0x79, 0xf6, 0x1e, 0xa9, + 0xc3, 0xbc, 0xeb, 0x7b, 0xae, 0x4f, 0xb5, 0xc2, 0xa4, 0x5e, 0xef, 0x49, 0x08, 0x6a, 0x0c, 0xe9, + 0x42, 0xa1, 0xe7, 0x7a, 0x54, 0x3b, 0xed, 0xce, 0xab, 0xeb, 0x61, 0xc7, 0xf5, 0x68, 0xd4, 0x8b, + 0xd2, 0xe9, 0x49, 0xad, 0x20, 0x20, 0x28, 0xb9, 0x93, 0x8f, 0x61, 0x6e, 0x1c, 0x7a, 0xd2, 0x91, + 0x17, 0x6f, 0x6d, 0xbf, 0xba, 0x90, 0x7d, 0x6c, 0x47, 0x32, 0x16, 0x4e, 0x4f, 0x6a, 0x73, 0xfb, + 0xd8, 0x46, 0xc1, 0x9a, 0xec, 0x43, 0xd9, 0x09, 0xfc, 0x9e, 0xdb, 0x1f, 0xda, 0xa3, 0x6a, 0x51, + 0xca, 0x79, 0x7b, 0x5a, 0x04, 0x6a, 0x49, 0xa2, 0x87, 0xf6, 0x68, 0x22, 0x08, 0xb5, 0x4c, 0x73, + 0x8c, 0x39, 0x89, 0x8e, 0xf7, 0x5d, 0x5e, 0x9d, 0x9f, 0xb5, 0xe3, 0x77, 0x5c, 0x9e, 0xee, 0xf8, + 0x1d, 0x97, 0xa3, 0x60, 0x4d, 0x1c, 0x28, 0x85, 0x54, 0xbb, 0xd2, 0x82, 0x14, 0xf3, 0xed, 0x73, + 0xcf, 0x3f, 0x6a, 0x06, 0x9b, 0x95, 0xd3, 0x93, 0x5a, 0xc9, 0xfc, 0x61, 0xc4, 0xb8, 0xfe, 0xf7, + 0x05, 0xb8, 0xd1, 0xfc, 0xde, 0x38, 0xa4, 0xdb, 0x82, 0xc1, 0xdd, 0xf1, 0x01, 0x33, 0x7e, 0x7c, + 0x13, 0x0a, 0xbd, 0xa7, 0x5d, 0x5f, 0xaf, 0x1f, 0x15, 0x6d, 0xbb, 0x85, 0x9d, 0x0f, 0xb6, 0x1e, + 0xa1, 0xc4, 0x88, 0x60, 0x31, 0x18, 0x1f, 0xc8, 0x45, 0x26, 0x9f, 0x0e, 0x16, 0x77, 0x15, 0x18, + 0x0d, 0x9e, 0x8c, 0xe0, 0x3a, 0x1b, 0xd8, 0x21, 0xed, 0x46, 0x8b, 0x84, 0x6c, 0x76, 0xae, 0x05, + 0xe1, 0x8d, 0xd3, 0x93, 0xda, 0x75, 0x6b, 0x92, 0x0b, 0x4e, 0x63, 0x4d, 0xba, 0xb0, 0x92, 0x01, + 0x6b, 0x23, 0x3b, 0xa3, 0xb4, 0xeb, 0xa7, 0x27, 0xb5, 0x95, 0x8c, 0x34, 0xcc, 0xb2, 0xfc, 0x7f, + 0xba, 0xc4, 0xd4, 0xfb, 0x70, 0xa3, 0x15, 0xf8, 0x5d, 0x57, 0x44, 0x28, 0x86, 0x94, 0x51, 0xbe, + 0x79, 0xdc, 0x71, 0x87, 0x54, 0x18, 0x8d, 0x13, 0x06, 0x13, 0x46, 0xd3, 0x0a, 0x03, 0x1f, 0x25, + 0x86, 0x7c, 0x03, 0x4a, 0x22, 0xa5, 0xf9, 0x5e, 0x10, 0x05, 0x9f, 0xab, 0x9a, 0xaa, 0xd4, 0xd1, + 0x70, 0x8c, 0x28, 0xea, 0x3f, 0xca, 0xc1, 0x1b, 0x19, 0x49, 0xad, 0xd0, 0xe5, 0x34, 0x74, 0x6d, + 0xc2, 0x60, 0xfe, 0x40, 0x4a, 0xd5, 0xd1, 0x71, 0xf7, 0xd5, 0x15, 0x30, 0x75, 0x30, 0x2a, 0x2a, + 0xaa, 0x6f, 0xd4, 0xa2, 0xea, 0x7f, 0x5b, 0x84, 0xa5, 0xd6, 0x98, 0xf1, 0x60, 0x68, 0xfc, 0x64, + 0x5d, 0x64, 0x38, 0xe1, 0x11, 0x0d, 0xf7, 0xb1, 0xad, 0xc7, 0x7d, 0xcd, 0xac, 0x3f, 0x96, 0x41, + 0x60, 0x4c, 0x23, 0xd2, 0x17, 0x46, 0x9d, 0x71, 0xa8, 0xc6, 0x5f, 0x8a, 0xd3, 0x17, 0x4b, 0x42, + 0x51, 0x63, 0xc9, 0x3e, 0x80, 0x43, 0x43, 0xae, 0x4c, 0xf3, 0x7c, 0xae, 0xb2, 0x2c, 0xe6, 0xae, + 0x15, 0x35, 0xc6, 0x04, 0x23, 0x72, 0x1f, 0x88, 0xea, 0x8b, 0x70, 0x93, 0xdd, 0x23, 0x1a, 0x86, + 0x6e, 0x97, 0xea, 0x4c, 0x6a, 0x55, 0x77, 0x85, 0x58, 0x13, 0x14, 0x38, 0xa5, 0x15, 0x61, 0x50, + 0x60, 0x23, 0xea, 0x68, 0xdb, 0xff, 0x60, 0x86, 0x09, 0x48, 0xaa, 0xb4, 0x61, 0x8d, 0xa8, 0xb3, + 0xed, 0xf3, 0xf0, 0x38, 0xb6, 0x20, 0x01, 0x42, 0x29, 0xec, 0xb5, 0xe7, 0x57, 0x09, 0x9f, 0x5f, + 0xb8, 0x3c, 0x9f, 0x5f, 0xfd, 0x16, 0x94, 0x23, 0xbd, 0x90, 0xab, 0x30, 0x77, 0x48, 0x8f, 0x95, + 0xb9, 0xa1, 0xf8, 0x24, 0x5f, 0x80, 0xe2, 0x91, 0xed, 0x8d, 0xb5, 0x53, 0xa1, 0xfa, 0xb9, 0x9d, + 0xdf, 0xc8, 0xd5, 0xff, 0x33, 0x07, 0xb0, 0x65, 0x73, 0x7b, 0xc7, 0xf5, 0xb8, 0x8a, 0xeb, 0x23, + 0x9b, 0x0f, 0xb2, 0x2e, 0xba, 0x67, 0xf3, 0x01, 0x4a, 0x0c, 0xf9, 0x06, 0x14, 0xb8, 0x48, 0x1b, + 0x95, 0x7b, 0x56, 0x0d, 0x85, 0x48, 0x10, 0x9f, 0x9f, 0xd4, 0x4a, 0xf7, 0xad, 0xdd, 0x47, 0x32, + 0x79, 0x94, 0x54, 0xa4, 0x66, 0x04, 0x8b, 0x84, 0xa9, 0xbc, 0x59, 0x3e, 0x3d, 0xa9, 0x15, 0x1f, + 0x0b, 0x80, 0xee, 0x03, 0x79, 0x1f, 0xc0, 0x09, 0x86, 0x42, 0x81, 0x3c, 0x08, 0xb5, 0xa1, 0xdd, + 0x34, 0x3a, 0x6e, 0x45, 0x98, 0xe7, 0xa9, 0x3f, 0x4c, 0xb4, 0x91, 0x31, 0x83, 0x0e, 0x47, 0x9e, + 0xcd, 0xa9, 0x5c, 0xc1, 0x93, 0x31, 0x43, 0xc3, 0x31, 0xa2, 0xa8, 0xff, 0x59, 0x0e, 0x8a, 0x72, + 0x35, 0x23, 0x43, 0x58, 0x70, 0x02, 0x9f, 0xd3, 0x4f, 0xb8, 0x0e, 0x11, 0x33, 0x64, 0x31, 0x92, + 0x63, 0x4b, 0x71, 0xdb, 0x5c, 0x14, 0x33, 0xa4, 0x7f, 0xd0, 0xc8, 0x20, 0x6f, 0x42, 0xa1, 0x6b, + 0x73, 0x5b, 0xea, 0xad, 0xa2, 0x32, 0x1d, 0xa1, 0x77, 0x94, 0xd0, 0xdb, 0xa5, 0x3f, 0xfd, 0xf3, + 0xda, 0x95, 0x1f, 0xfc, 0xdb, 0xcd, 0x2b, 0xf5, 0x9f, 0xe5, 0xa1, 0x92, 0x64, 0x47, 0x56, 0x21, + 0xef, 0x76, 0xf5, 0x84, 0x80, 0x1e, 0x59, 0xfe, 0xde, 0x16, 0xe6, 0xdd, 0xae, 0x8c, 0x16, 0x2a, + 0x07, 0xc8, 0xa7, 0x8b, 0x9d, 0x4c, 0x1a, 0xfc, 0xcb, 0xb0, 0x28, 0xbc, 0xe3, 0x88, 0x86, 0x4c, + 0x24, 0xc2, 0x73, 0x92, 0xf8, 0xba, 0x26, 0x5e, 0x14, 0x96, 0xf3, 0x58, 0xa1, 0x30, 0x49, 0x27, + 0xac, 0x41, 0xce, 0x75, 0x21, 0x6d, 0x0d, 0x89, 0xf9, 0x6d, 0xc2, 0x8a, 0xe8, 0xbf, 0x1c, 0xa4, + 0xcf, 0x25, 0xb1, 0x9a, 0x83, 0x37, 0x34, 0xf1, 0x8a, 0x18, 0x64, 0x4b, 0xa1, 0x65, 0xbb, 0x2c, + 0xbd, 0x48, 0x14, 0xd8, 0xf8, 0xe0, 0x09, 0x75, 0x54, 0xbe, 0x94, 0x48, 0x14, 0x2c, 0x05, 0x46, + 0x83, 0x27, 0x6d, 0x28, 0x88, 0xe0, 0xaf, 0x13, 0x9e, 0xaf, 0x27, 0xc2, 0x5d, 0x54, 0x19, 0xc7, + 0x73, 0x24, 0x0a, 0x70, 0x11, 0x00, 0x65, 0xb4, 0x8e, 0xfb, 0x2e, 0xe2, 0xb5, 0xe4, 0x92, 0xd0, + 0xf9, 0x5f, 0xce, 0xc1, 0x8a, 0xd4, 0xf9, 0x16, 0x1d, 0x51, 0xbf, 0x4b, 0x7d, 0xe7, 0x58, 0x8c, + 0xdd, 0x8f, 0x2b, 0xe4, 0xa8, 0xbd, 0xcc, 0x29, 0x24, 0x46, 0x8c, 0x5d, 0xda, 0x85, 0xd2, 0x75, + 0x22, 0xd3, 0x89, 0xc6, 0xbe, 0x9d, 0x46, 0x63, 0x96, 0x5e, 0x2c, 0x0f, 0x12, 0x14, 0xe5, 0x3b, + 0x89, 0xe5, 0x61, 0xdb, 0x20, 0x30, 0xa6, 0x21, 0x47, 0xb0, 0xd0, 0x93, 0x9e, 0xca, 0x74, 0xc2, + 0xb2, 0x3b, 0xa3, 0xd1, 0xc6, 0x23, 0x56, 0x11, 0x40, 0x59, 0xaf, 0xfa, 0x66, 0x68, 0x84, 0x91, + 0xdf, 0xcd, 0x41, 0x99, 0x87, 0xb6, 0xcf, 0x7a, 0x41, 0x38, 0xd4, 0x89, 0x72, 0xe7, 0xc2, 0x44, + 0x77, 0x0c, 0x67, 0xaa, 0x93, 0xea, 0x08, 0x80, 0xb1, 0xd4, 0xfa, 0x3f, 0xce, 0xc1, 0x8d, 0xa9, + 0x7d, 0x26, 0x07, 0xda, 0x2e, 0x94, 0x1f, 0x6f, 0xcd, 0x10, 0x71, 0xdd, 0x21, 0xd5, 0x7a, 0x28, + 0xa5, 0xad, 0x25, 0x19, 0x2e, 0xf2, 0x97, 0x10, 0x2e, 0x7a, 0x3a, 0x5c, 0xa8, 0x42, 0x73, 0x86, + 0x21, 0xc5, 0xc1, 0x3d, 0x36, 0xe2, 0x38, 0xf0, 0x10, 0x17, 0x8a, 0xf4, 0x93, 0x91, 0x34, 0xa7, + 0x19, 0x05, 0x6d, 0x7f, 0x32, 0x0a, 0xb5, 0xa0, 0x25, 0x2d, 0xa8, 0x28, 0x60, 0x0c, 0x95, 0x84, + 0xfa, 0xc7, 0xb0, 0xfa, 0xe2, 0x79, 0x17, 0x61, 0xee, 0xc9, 0xd3, 0x6c, 0x98, 0xbb, 0xff, 0x01, + 0xe6, 0x9f, 0x3c, 0x95, 0x61, 0xce, 0x09, 0xdd, 0x11, 0x9f, 0x08, 0x73, 0x12, 0x8a, 0x1a, 0x2b, + 0x82, 0x3b, 0xc4, 0xdd, 0x10, 0x2e, 0x2c, 0x24, 0x67, 0x5d, 0x58, 0x50, 0xa0, 0xc4, 0x10, 0x1f, + 0xe6, 0x7b, 0x2e, 0xf5, 0xba, 0xac, 0x9a, 0x97, 0xc3, 0x9f, 0x61, 0x4e, 0xf5, 0x92, 0xbc, 0x23, + 0xd8, 0xc5, 0x1d, 0x94, 0xbf, 0x0c, 0xb5, 0x94, 0xfa, 0x3b, 0x50, 0x49, 0x16, 0xbc, 0x2f, 0x5f, + 0x6e, 0xeb, 0x7f, 0x57, 0x80, 0xc5, 0x44, 0x15, 0x48, 0xde, 0x52, 0x25, 0xb1, 0x6a, 0xb0, 0xa8, + 0x1b, 0xc4, 0xf5, 0xec, 0x77, 0x60, 0xd9, 0xf1, 0x02, 0x9f, 0x6e, 0xb9, 0xa1, 0x4c, 0xf6, 0x8e, + 0xb5, 0xc6, 0xbe, 0xa8, 0x29, 0x97, 0x5b, 0x29, 0x2c, 0x66, 0xa8, 0x89, 0x03, 0x45, 0x27, 0xa4, + 0x5d, 0xa6, 0x33, 0xca, 0xcd, 0x99, 0x4a, 0xd7, 0x96, 0xe0, 0xa4, 0xd6, 0x7c, 0xf9, 0x89, 0x8a, + 0x37, 0xf9, 0x4d, 0xa8, 0x30, 0x36, 0x90, 0x29, 0xa9, 0xcc, 0x5e, 0xcf, 0x55, 0x7a, 0x5d, 0x3d, + 0x3d, 0xa9, 0x55, 0x2c, 0xeb, 0x6e, 0xd4, 0x1c, 0x53, 0xcc, 0x44, 0x3a, 0xd0, 0x73, 0x3d, 0x2a, + 0x54, 0x98, 0x4d, 0x07, 0x76, 0x34, 0x1c, 0x23, 0x0a, 0x61, 0x59, 0x07, 0xa1, 0xed, 0x3b, 0x03, + 0xbd, 0xf6, 0x44, 0x13, 0xb7, 0x29, 0xa1, 0xa8, 0xb1, 0x42, 0xed, 0xdc, 0xee, 0xeb, 0xbd, 0xb2, + 0x48, 0xed, 0x1d, 0xbb, 0x8f, 0x02, 0x2e, 0xd0, 0x21, 0xed, 0xe9, 0x5d, 0xb1, 0x08, 0x8d, 0xb4, + 0x87, 0x02, 0x4e, 0x86, 0x30, 0x1f, 0xd2, 0x61, 0xc0, 0x69, 0xb5, 0x2c, 0x87, 0x7a, 0x6f, 0x26, + 0xb5, 0xa2, 0x64, 0xa5, 0xf6, 0x1d, 0x54, 0x19, 0xa2, 0x20, 0xa8, 0x85, 0xd4, 0xff, 0x26, 0x07, + 0x25, 0xa3, 0x7e, 0xb2, 0x0b, 0xa5, 0x31, 0xa3, 0x61, 0xb4, 0x96, 0x9d, 0x59, 0xd1, 0x72, 0x53, + 0x60, 0x5f, 0x37, 0xc5, 0x88, 0x89, 0x60, 0x38, 0xb2, 0x19, 0x7b, 0x16, 0x84, 0xdd, 0xf3, 0xed, + 0x03, 0x4b, 0x86, 0x7b, 0xba, 0x29, 0x46, 0x4c, 0xea, 0x1f, 0xc0, 0x4a, 0x66, 0x54, 0x67, 0x58, + 0x7c, 0xdf, 0x84, 0xc2, 0x38, 0xf4, 0x94, 0xdf, 0x96, 0x55, 0xb0, 0xde, 0xc7, 0xb6, 0x85, 0x12, + 0x5a, 0xff, 0x8f, 0x79, 0x58, 0xbc, 0xdb, 0xe9, 0xec, 0x99, 0x32, 0xec, 0x25, 0x5e, 0x93, 0x48, + 0xda, 0xf3, 0x97, 0x58, 0xa8, 0xef, 0xc3, 0x1c, 0xf7, 0x8c, 0xab, 0xdd, 0x3e, 0xf7, 0xf6, 0x4d, + 0xa7, 0x6d, 0x69, 0x23, 0x90, 0x5b, 0x43, 0x9d, 0xb6, 0x85, 0x82, 0x9f, 0xb0, 0xe9, 0x21, 0xe5, + 0x83, 0xa0, 0x9b, 0xdd, 0x01, 0x7f, 0x28, 0xa1, 0xa8, 0xb1, 0x99, 0x52, 0xa9, 0x78, 0xe9, 0xa5, + 0xd2, 0xd7, 0x60, 0x41, 0xac, 0xac, 0xc1, 0x58, 0x25, 0x7e, 0x73, 0xb1, 0xa6, 0x3a, 0x0a, 0x8c, + 0x06, 0x4f, 0xfa, 0x50, 0x3e, 0xb0, 0x99, 0xeb, 0x34, 0xc7, 0x7c, 0xa0, 0xb3, 0xbf, 0xf3, 0xeb, + 0x6b, 0xd3, 0x70, 0x50, 0x39, 0x46, 0xf4, 0x8b, 0x31, 0x6f, 0xf2, 0x7d, 0x58, 0x18, 0x50, 0xbb, + 0x2b, 0x14, 0x52, 0x92, 0x0a, 0xc1, 0x57, 0x57, 0x48, 0xc2, 0x00, 0x1b, 0x77, 0x15, 0x53, 0x55, + 0xb7, 0xc6, 0x3b, 0x61, 0x0a, 0x8a, 0x46, 0x26, 0x39, 0x82, 0x25, 0x55, 0xdf, 0x6b, 0x4c, 0xb5, + 0x2c, 0x3b, 0xf1, 0x6b, 0xe7, 0xdf, 0xda, 0x4d, 0x70, 0xd9, 0xbc, 0x76, 0x7a, 0x52, 0x5b, 0x4a, + 0x42, 0x18, 0xa6, 0xc5, 0xac, 0xde, 0x86, 0x4a, 0xb2, 0x87, 0xe7, 0xaa, 0x20, 0x7f, 0x7f, 0x0e, + 0xae, 0x3d, 0xd8, 0xb0, 0xcc, 0xf6, 0xe1, 0x5e, 0xe0, 0xb9, 0xce, 0x31, 0xf9, 0x1d, 0x98, 0xf7, + 0xec, 0x03, 0xea, 0xb1, 0x6a, 0x4e, 0x0e, 0xe1, 0xc3, 0x57, 0xd7, 0xe3, 0x04, 0xf3, 0x46, 0x5b, + 0x72, 0x56, 0xca, 0x8c, 0xac, 0x5b, 0x01, 0x51, 0x8b, 0x25, 0x1f, 0xc1, 0xc2, 0x81, 0xed, 0x1c, + 0x06, 0xbd, 0x9e, 0x8e, 0x52, 0x1b, 0xaf, 0x60, 0x30, 0xb2, 0xbd, 0xca, 0xd0, 0xf4, 0x0f, 0x1a, + 0xae, 0xc4, 0x82, 0x1b, 0x34, 0x0c, 0x83, 0x70, 0xd7, 0xd7, 0x28, 0x6d, 0xb5, 0xd2, 0x9f, 0x4b, + 0x9b, 0x6f, 0xe9, 0x7e, 0xdd, 0xd8, 0x9e, 0x46, 0x84, 0xd3, 0xdb, 0xae, 0x7e, 0x1b, 0x16, 0x13, + 0x83, 0x3b, 0xd7, 0x3c, 0xfc, 0x78, 0x1e, 0x2a, 0x0f, 0xec, 0xde, 0xa1, 0x7d, 0xc6, 0xa0, 0xf7, + 0x15, 0x28, 0xf2, 0x60, 0xe4, 0x3a, 0x3a, 0x43, 0x88, 0x72, 0xb6, 0x8e, 0x00, 0xa2, 0xc2, 0x89, + 0x02, 0x65, 0x64, 0x87, 0x5c, 0x6e, 0x7f, 0xc9, 0x81, 0x15, 0xe3, 0x02, 0x65, 0xcf, 0x20, 0x30, + 0xa6, 0xc9, 0x04, 0x95, 0xc2, 0xa5, 0x07, 0x95, 0x0d, 0xa8, 0x84, 0xf4, 0xe9, 0xd8, 0x95, 0x1b, + 0xb1, 0x87, 0x4c, 0xa6, 0x00, 0xc5, 0xf8, 0x80, 0x13, 0x13, 0x38, 0x4c, 0x51, 0x8a, 0xc4, 0xc1, + 0x09, 0x86, 0xa3, 0x90, 0x32, 0x26, 0xe3, 0x51, 0x29, 0x4e, 0x1c, 0x5a, 0x1a, 0x8e, 0x11, 0x85, + 0x48, 0xb4, 0x7a, 0xde, 0x98, 0x0d, 0x76, 0x04, 0x0f, 0x91, 0xcb, 0xca, 0xb0, 0x54, 0x8c, 0x13, + 0xad, 0x9d, 0x14, 0x16, 0x33, 0xd4, 0x26, 0xf6, 0x97, 0x2e, 0x38, 0xf6, 0x27, 0x56, 0xb2, 0xf2, + 0x25, 0xae, 0x64, 0x4d, 0x58, 0x89, 0x4c, 0xc0, 0xf5, 0xfb, 0x0f, 0xe8, 0x71, 0x15, 0xd2, 0xa5, + 0xf0, 0x5e, 0x1a, 0x8d, 0x59, 0x7a, 0xb1, 0x1a, 0x98, 0xed, 0x89, 0xc5, 0xf4, 0x36, 0x80, 0xd9, + 0x9a, 0x30, 0x78, 0xf2, 0xeb, 0x50, 0x60, 0x36, 0xf3, 0xaa, 0x95, 0x57, 0x3d, 0xf7, 0x6a, 0x5a, + 0x6d, 0xad, 0x3d, 0x99, 0x38, 0x88, 0x7f, 0x94, 0x2c, 0xeb, 0xbb, 0x00, 0xed, 0xa0, 0x6f, 0x3c, + 0xa8, 0x09, 0x2b, 0xae, 0xcf, 0x69, 0x78, 0x64, 0x7b, 0x16, 0x75, 0x02, 0xbf, 0xcb, 0xa4, 0x37, + 0x15, 0xe2, 0x61, 0xdd, 0x4b, 0xa3, 0x31, 0x4b, 0x5f, 0xff, 0xab, 0x39, 0x58, 0x7c, 0xd4, 0xec, + 0x58, 0x67, 0x74, 0xca, 0xc4, 0x66, 0x48, 0xfe, 0x25, 0x9b, 0x21, 0x89, 0xa9, 0x9e, 0x7b, 0x6d, + 0xa7, 0x0b, 0x97, 0xef, 0xe0, 0xda, 0x71, 0x8a, 0x17, 0xeb, 0x38, 0xf5, 0x3f, 0x2a, 0xc0, 0xd5, + 0xdd, 0x11, 0xf5, 0x3f, 0x1c, 0xb8, 0xec, 0x30, 0x71, 0xca, 0x35, 0x08, 0x18, 0xcf, 0xa6, 0xa1, + 0x77, 0x03, 0xc6, 0x51, 0x62, 0x92, 0x56, 0x9b, 0x7f, 0x89, 0xd5, 0xae, 0x43, 0x59, 0x64, 0xae, + 0x6c, 0x64, 0x3b, 0x13, 0x7b, 0x3d, 0x8f, 0x0c, 0x02, 0x63, 0x1a, 0x79, 0xe3, 0x62, 0xcc, 0x07, + 0x9d, 0xe0, 0x90, 0xfa, 0xe7, 0xab, 0x91, 0xd4, 0x8d, 0x0b, 0xd3, 0x16, 0x63, 0x36, 0xe4, 0x16, + 0x80, 0x1d, 0xdf, 0xfe, 0x50, 0xf5, 0x51, 0xa4, 0xf1, 0x66, 0x7c, 0xf7, 0x23, 0x41, 0x95, 0x34, + 0xb4, 0xf9, 0xd7, 0x66, 0x68, 0x0b, 0x97, 0x7e, 0x8c, 0x85, 0x50, 0x49, 0xd6, 0xf4, 0x67, 0xd8, + 0x1a, 0x37, 0x55, 0x4b, 0xfe, 0x45, 0x55, 0x4b, 0xfd, 0xaf, 0x17, 0x60, 0x69, 0x6f, 0xec, 0x31, + 0x3b, 0xbc, 0xc8, 0x45, 0xfa, 0x35, 0x5f, 0x4d, 0x48, 0x1a, 0x48, 0xe1, 0x12, 0x0d, 0x64, 0x04, + 0xd7, 0xb9, 0xc7, 0x3a, 0xe1, 0x98, 0xf1, 0x16, 0x0d, 0x39, 0xd3, 0xbb, 0x09, 0xc5, 0x73, 0x1f, + 0x1b, 0x77, 0xda, 0x56, 0x96, 0x0b, 0x4e, 0x63, 0x4d, 0x0e, 0x60, 0x95, 0x7b, 0xac, 0xe9, 0x79, + 0xc1, 0xb3, 0x7b, 0xbe, 0xca, 0xa0, 0x5b, 0x81, 0xef, 0x53, 0xe9, 0x2b, 0x3a, 0x69, 0xa8, 0xeb, + 0xfe, 0xae, 0x76, 0xda, 0xd6, 0x0b, 0x28, 0xf1, 0xe7, 0x70, 0x21, 0x0f, 0xe5, 0xa8, 0x1e, 0xdb, + 0x9e, 0xdb, 0xb5, 0x39, 0x15, 0xa1, 0x46, 0xda, 0xd4, 0x82, 0x64, 0xfe, 0x65, 0xcd, 0x5c, 0x74, + 0x39, 0x4b, 0x82, 0xd3, 0xda, 0xfd, 0x6f, 0xe5, 0x19, 0x5d, 0x58, 0x89, 0x82, 0x8a, 0xd6, 0x7b, + 0xf9, 0xdc, 0x07, 0xe8, 0xcd, 0x34, 0x07, 0xcc, 0xb2, 0x24, 0xdf, 0x87, 0x6b, 0x4e, 0xa4, 0x19, + 0x9d, 0x29, 0xcb, 0xc4, 0x62, 0x96, 0x6c, 0xfe, 0xc6, 0xe9, 0x49, 0xed, 0x5a, 0x2b, 0xcb, 0x16, + 0x27, 0x25, 0xd5, 0x7f, 0x2f, 0x07, 0x65, 0xb4, 0x39, 0x6d, 0xbb, 0x43, 0x97, 0x93, 0x5b, 0x50, + 0x18, 0xfb, 0xae, 0x59, 0x0c, 0xd6, 0x8c, 0x77, 0xef, 0xfb, 0x2e, 0x7f, 0x7e, 0x52, 0x5b, 0x8e, + 0x08, 0xa9, 0x80, 0xa0, 0xa4, 0x15, 0x09, 0x84, 0xcc, 0xf8, 0x18, 0x67, 0x7b, 0x34, 0x14, 0x08, + 0xe9, 0xc8, 0xc5, 0x38, 0x81, 0xc0, 0x34, 0x1a, 0xb3, 0xf4, 0xf5, 0x1f, 0xe7, 0x61, 0xde, 0x92, + 0x4e, 0x42, 0x3e, 0x86, 0xd2, 0x90, 0x72, 0x5b, 0xee, 0x0b, 0xab, 0xad, 0x9c, 0x77, 0xce, 0x76, + 0x04, 0xb2, 0x2b, 0x33, 0x86, 0x87, 0x94, 0xdb, 0xb1, 0x2f, 0xc7, 0x30, 0x8c, 0xb8, 0x92, 0x9e, + 0x3e, 0xb2, 0xcd, 0xcf, 0xba, 0x91, 0xae, 0x7a, 0x6c, 0x8d, 0xa8, 0x33, 0xf5, 0x94, 0xd6, 0x87, + 0x79, 0xc6, 0x6d, 0x3e, 0x66, 0xb3, 0x5f, 0x20, 0xd2, 0x92, 0x24, 0xb7, 0xc4, 0xc6, 0xb0, 0xfc, + 0x47, 0x2d, 0xa5, 0xfe, 0x2f, 0x39, 0x00, 0x45, 0xd8, 0x76, 0x19, 0x27, 0xbf, 0x35, 0xa1, 0xc8, + 0xc6, 0xd9, 0x14, 0x29, 0x5a, 0x4b, 0x35, 0x46, 0xa5, 0x81, 0x81, 0x24, 0x94, 0x48, 0xa1, 0xe8, + 0x72, 0x3a, 0x34, 0x7b, 0xca, 0xef, 0xcf, 0x3a, 0xb6, 0x38, 0xea, 0xdf, 0x13, 0x6c, 0x51, 0x71, + 0xaf, 0xff, 0x45, 0xc1, 0x8c, 0x49, 0x28, 0x96, 0xfc, 0x30, 0x07, 0x95, 0xae, 0xd9, 0x59, 0x77, + 0xa9, 0xa9, 0xbb, 0xef, 0x5d, 0xd8, 0x21, 0x4d, 0x5c, 0x44, 0x6d, 0x25, 0xc4, 0x60, 0x4a, 0x28, + 0x09, 0xa0, 0xc4, 0x55, 0x04, 0x37, 0xc3, 0x6f, 0xce, 0xbc, 0x16, 0x24, 0xce, 0x73, 0x35, 0x6b, + 0x8c, 0x84, 0x10, 0x2f, 0x71, 0xfa, 0x3b, 0xf3, 0x9e, 0xb5, 0x39, 0x2f, 0x56, 0x5b, 0x95, 0x93, + 0xa7, 0xc7, 0xe4, 0x3e, 0x10, 0x5d, 0xb7, 0xef, 0xd8, 0xae, 0x47, 0xbb, 0x18, 0x8c, 0x7d, 0xb5, + 0xcd, 0x56, 0x8a, 0xaf, 0x47, 0x6c, 0x4f, 0x50, 0xe0, 0x94, 0x56, 0xa2, 0x52, 0x95, 0xfd, 0xd9, + 0x1c, 0xb3, 0x44, 0x32, 0x16, 0x29, 0x79, 0x3b, 0x81, 0xc3, 0x14, 0x25, 0x79, 0x1b, 0x4a, 0x21, + 0x1d, 0x79, 0xae, 0x63, 0xab, 0x4a, 0xb5, 0x68, 0x2e, 0x70, 0x29, 0x18, 0x46, 0xd8, 0x7a, 0x00, + 0x95, 0xa4, 0x7f, 0x90, 0x8f, 0x22, 0xbf, 0x53, 0x66, 0xff, 0xad, 0xf3, 0xd7, 0x4e, 0x3f, 0xdf, + 0xd1, 0xfe, 0x21, 0x0f, 0x15, 0xcb, 0xb3, 0x9d, 0x28, 0x85, 0x4e, 0xe7, 0x26, 0xb9, 0xd7, 0x50, + 0x2e, 0x00, 0x93, 0xfd, 0x91, 0x59, 0x74, 0xfe, 0xdc, 0xf7, 0x64, 0xac, 0xa8, 0x31, 0x26, 0x18, + 0x89, 0xbc, 0xdf, 0x19, 0xd8, 0xbe, 0x4f, 0x3d, 0x9d, 0xca, 0x47, 0x69, 0x4a, 0x4b, 0x81, 0xd1, + 0xe0, 0x05, 0xe9, 0x90, 0x32, 0x66, 0xf7, 0xcd, 0x39, 0x7a, 0x44, 0xfa, 0x50, 0x81, 0xd1, 0xe0, + 0xeb, 0xff, 0x3d, 0x07, 0xc4, 0xe2, 0xb6, 0xdf, 0xb5, 0xc3, 0xee, 0x83, 0x0d, 0xeb, 0x75, 0x5d, + 0x9a, 0x7d, 0x34, 0x79, 0x69, 0xf6, 0x9d, 0x69, 0x97, 0x66, 0xbf, 0xfc, 0x60, 0x7c, 0x40, 0x43, + 0x9f, 0x72, 0xca, 0xcc, 0x06, 0xdd, 0xff, 0xc5, 0xab, 0xb3, 0xa4, 0x07, 0x4b, 0x23, 0x9b, 0x3b, + 0x03, 0x8b, 0x87, 0x36, 0xa7, 0xfd, 0x63, 0x3d, 0x0f, 0xef, 0xeb, 0x66, 0x4b, 0x7b, 0x49, 0xe4, + 0xf3, 0x93, 0xda, 0x2f, 0xbe, 0xe8, 0xc6, 0x3d, 0x3f, 0x1e, 0x51, 0xd6, 0x90, 0xe4, 0xf2, 0x2e, + 0x43, 0x9a, 0xad, 0x28, 0xae, 0x3c, 0xf7, 0x88, 0xaa, 0x95, 0x55, 0xfa, 0x73, 0x29, 0xee, 0x5b, + 0x3b, 0xc2, 0x60, 0x82, 0xaa, 0xbe, 0x0e, 0x15, 0xe5, 0x42, 0x7a, 0xdf, 0xb4, 0x06, 0x45, 0x5b, + 0x64, 0x86, 0xd2, 0x55, 0x8a, 0xea, 0xf0, 0x4c, 0xa6, 0x8a, 0xa8, 0xe0, 0xf5, 0x3f, 0x28, 0x41, + 0x14, 0x99, 0x88, 0x33, 0xb1, 0x90, 0x9d, 0xff, 0x16, 0xe8, 0x43, 0xcd, 0x40, 0x05, 0x11, 0xf3, + 0x97, 0x58, 0xcf, 0xf4, 0x9d, 0x30, 0xd7, 0xa1, 0x4d, 0xc7, 0x09, 0xc6, 0xfa, 0xb6, 0x42, 0x7e, + 0xf2, 0x4e, 0x58, 0x9a, 0x02, 0xa7, 0xb4, 0x22, 0xf7, 0xe5, 0x7d, 0x5b, 0x6e, 0x0b, 0x9d, 0xea, + 0x78, 0xfd, 0xd6, 0x0b, 0xee, 0xdb, 0x2a, 0xa2, 0xe8, 0x92, 0xad, 0xfa, 0xc5, 0xb8, 0x39, 0xd9, + 0x86, 0x85, 0xa3, 0xc0, 0x1b, 0x0f, 0xa9, 0xd9, 0x86, 0x58, 0x9d, 0xc6, 0xe9, 0xb1, 0x24, 0x49, + 0xd4, 0xe5, 0xaa, 0x09, 0x9a, 0xb6, 0x84, 0xc2, 0x8a, 0x4c, 0xc2, 0x5d, 0x7e, 0xac, 0x4f, 0xe1, + 0x75, 0x09, 0xf1, 0xd5, 0x69, 0xec, 0xf6, 0x82, 0xae, 0x95, 0xa6, 0xd6, 0x97, 0x41, 0xd3, 0x40, + 0xcc, 0xf2, 0x24, 0x3f, 0xca, 0x41, 0xc5, 0x0f, 0xba, 0xd4, 0x84, 0x17, 0x5d, 0x4b, 0x77, 0x66, + 0x5f, 0xad, 0x1a, 0x8f, 0x12, 0x6c, 0xd5, 0xa6, 0x78, 0xb4, 0x8a, 0x24, 0x51, 0x98, 0x92, 0x4f, + 0xf6, 0x61, 0x91, 0x07, 0x9e, 0xf6, 0x51, 0x53, 0x60, 0xaf, 0x4d, 0x1b, 0x73, 0x27, 0x22, 0x8b, + 0xef, 0x0c, 0xc5, 0x30, 0x86, 0x49, 0x3e, 0xc4, 0x87, 0xab, 0xee, 0xd0, 0xee, 0xd3, 0xbd, 0xb1, + 0xe7, 0xa9, 0x98, 0x6a, 0x8e, 0x52, 0xa6, 0x5e, 0xac, 0x16, 0x81, 0xc8, 0xd3, 0x7e, 0x41, 0x7b, + 0x34, 0xa4, 0xbe, 0x43, 0xa3, 0x5b, 0x65, 0x57, 0xef, 0x65, 0x38, 0xe1, 0x04, 0x6f, 0x72, 0x07, + 0xae, 0x8d, 0x42, 0x37, 0x90, 0xaa, 0xf6, 0x6c, 0xa6, 0xd6, 0xd2, 0xb2, 0x34, 0xce, 0x2f, 0x69, + 0x36, 0xd7, 0xf6, 0xb2, 0x04, 0x38, 0xd9, 0x46, 0xac, 0xaa, 0x06, 0x28, 0x6b, 0x0c, 0xbd, 0xaa, + 0x9a, 0xb6, 0x18, 0x61, 0xc9, 0x0e, 0x94, 0xec, 0x5e, 0xcf, 0xf5, 0x05, 0xe5, 0xa2, 0x34, 0x95, + 0x37, 0xa7, 0x0d, 0xad, 0xa9, 0x69, 0x14, 0x1f, 0xf3, 0x87, 0x51, 0xdb, 0xd5, 0xef, 0xc2, 0xb5, + 0x89, 0xa9, 0x3b, 0xd7, 0x96, 0xbf, 0x05, 0x10, 0xdf, 0x58, 0x21, 0x5f, 0x81, 0x22, 0xe3, 0x76, + 0x68, 0x2a, 0x94, 0x28, 0x6b, 0xb4, 0x04, 0x10, 0x15, 0x8e, 0xdc, 0x84, 0x02, 0xe3, 0xc1, 0x28, + 0xbb, 0x47, 0x61, 0xf1, 0x60, 0x84, 0x12, 0x53, 0xff, 0xac, 0x00, 0x0b, 0x66, 0xe5, 0x61, 0x89, + 0xec, 0x2a, 0x37, 0xeb, 0xd1, 0xb5, 0x66, 0xfa, 0xd2, 0x24, 0x2b, 0xbd, 0x5c, 0xe4, 0x2f, 0x7d, + 0xb9, 0x38, 0x84, 0xf9, 0x91, 0x0c, 0xc6, 0x3a, 0x40, 0xdd, 0x99, 0x5d, 0xb6, 0x64, 0xa7, 0xd6, + 0x5a, 0xf5, 0x8d, 0x5a, 0x04, 0x79, 0x0a, 0x4b, 0x21, 0xe5, 0xe1, 0x71, 0x6a, 0x6d, 0x9a, 0xa5, + 0xbc, 0x95, 0x87, 0x7d, 0x98, 0x64, 0x89, 0x69, 0x09, 0x64, 0x04, 0xe5, 0xd0, 0x14, 0xab, 0x3a, + 0xd4, 0xb5, 0x5e, 0x7d, 0x88, 0x51, 0xdd, 0xab, 0x22, 0x75, 0xf4, 0x8b, 0xb1, 0x90, 0xfa, 0x7f, + 0xe5, 0xe0, 0x6a, 0x76, 0x1a, 0xc8, 0x21, 0xcc, 0xb1, 0xd0, 0xd1, 0x66, 0xb5, 0x77, 0x71, 0xf3, + 0xab, 0x92, 0x19, 0xb5, 0x5f, 0x61, 0x85, 0x0e, 0x0a, 0x29, 0xc2, 0xec, 0xbb, 0x94, 0xf1, 0xac, + 0xd9, 0x6f, 0x51, 0xc6, 0x51, 0x62, 0x48, 0x3b, 0x99, 0xf4, 0xa8, 0x9c, 0xae, 0x31, 0x2d, 0xe9, + 0xf9, 0x52, 0x56, 0xde, 0xb4, 0x94, 0xa7, 0xfe, 0xaf, 0x79, 0xf8, 0xe2, 0xf4, 0x8e, 0x91, 0xef, + 0xc0, 0x72, 0x54, 0x32, 0x1d, 0x27, 0x1e, 0xe1, 0x45, 0x27, 0x47, 0x5b, 0x29, 0x2c, 0x66, 0xa8, + 0x45, 0x96, 0xa1, 0x2f, 0x89, 0x99, 0x97, 0x78, 0x89, 0x2d, 0xdc, 0x56, 0x84, 0xc1, 0x04, 0x15, + 0x69, 0xc2, 0x8a, 0xfe, 0xeb, 0x24, 0x8b, 0xa5, 0xc4, 0xf9, 0x4c, 0x2b, 0x8d, 0xc6, 0x2c, 0xbd, + 0x48, 0x63, 0x45, 0x36, 0x60, 0x9e, 0x4a, 0x24, 0xd2, 0xd8, 0x2d, 0x05, 0x46, 0x83, 0x17, 0x95, + 0x8d, 0xf8, 0xec, 0xa4, 0x6f, 0xe5, 0xc6, 0xe5, 0x63, 0x02, 0x87, 0x29, 0xca, 0xf8, 0xba, 0xb0, + 0xba, 0x8d, 0x33, 0x71, 0x5d, 0xb8, 0xfe, 0xd3, 0x1c, 0x2c, 0xa5, 0x9c, 0x8a, 0xf4, 0x60, 0xee, + 0x70, 0xc3, 0xd4, 0x33, 0x0f, 0x2e, 0xf0, 0x94, 0x59, 0x59, 0xd0, 0x83, 0x0d, 0x86, 0x42, 0x00, + 0x79, 0x12, 0x95, 0x4e, 0x33, 0x5f, 0xff, 0x4b, 0x26, 0x7c, 0x3a, 0x01, 0x4f, 0x57, 0x51, 0xff, + 0x54, 0x81, 0x95, 0x4c, 0xb4, 0x3c, 0xc3, 0x95, 0x18, 0x65, 0x18, 0xfa, 0xa9, 0xc2, 0x14, 0xc3, + 0x30, 0x8f, 0x18, 0x12, 0x54, 0xa4, 0xaf, 0xb4, 0xa7, 0x02, 0x5d, 0x7b, 0xa6, 0x21, 0x65, 0xaa, + 0x96, 0x8c, 0xfa, 0x7e, 0x98, 0x83, 0x8a, 0x9d, 0x78, 0x63, 0xa7, 0xe3, 0xdc, 0xc3, 0x59, 0x4a, + 0x99, 0x89, 0xe7, 0x85, 0xea, 0x72, 0x58, 0x12, 0x81, 0x29, 0xa1, 0xc4, 0x81, 0xc2, 0x80, 0x73, + 0xf3, 0xd2, 0x6b, 0xfb, 0x42, 0xee, 0x76, 0xa8, 0x33, 0x44, 0x01, 0x40, 0xc9, 0x9c, 0x3c, 0x83, + 0xb2, 0xfd, 0x8c, 0xa9, 0x77, 0xb7, 0xfa, 0x09, 0xd8, 0x2c, 0x15, 0x5b, 0xe6, 0x09, 0xaf, 0x3e, + 0xdc, 0x31, 0x50, 0x8c, 0x65, 0x91, 0x10, 0xe6, 0x1d, 0xf9, 0x54, 0x42, 0x5f, 0x91, 0xb9, 0x73, + 0x41, 0x4f, 0x2e, 0xd4, 0x9a, 0x92, 0x02, 0xa1, 0x96, 0x44, 0xfa, 0x50, 0x3c, 0xb4, 0x7b, 0x87, + 0xb6, 0xde, 0x61, 0x9e, 0xc1, 0x2b, 0x92, 0x77, 0x17, 0x94, 0xe7, 0x4b, 0x08, 0x2a, 0xfe, 0x62, + 0xea, 0x7c, 0x9b, 0x33, 0xbd, 0xcd, 0x3c, 0xc3, 0xd4, 0x25, 0x4e, 0x63, 0xd5, 0xd4, 0x09, 0x00, + 0x4a, 0xe6, 0x62, 0x34, 0xb2, 0xc8, 0xd7, 0x9b, 0xcc, 0xb3, 0xf8, 0x78, 0x62, 0x13, 0x44, 0x8d, + 0x46, 0x42, 0x50, 0xf1, 0x17, 0x36, 0x12, 0x98, 0xd3, 0x46, 0x9d, 0x43, 0xce, 0x60, 0x23, 0xd9, + 0x83, 0x4b, 0x65, 0x23, 0x11, 0x14, 0x63, 0x59, 0xe4, 0x23, 0x98, 0xf3, 0x82, 0xbe, 0x3e, 0x3a, + 0x9f, 0x61, 0x83, 0x37, 0x3e, 0x25, 0x57, 0x8e, 0xde, 0x0e, 0xfa, 0x28, 0x38, 0x93, 0x3f, 0xcc, + 0xc1, 0xb2, 0x9d, 0x7a, 0x33, 0x58, 0x5d, 0x9a, 0xf5, 0xa6, 0xfa, 0xd4, 0x37, 0x88, 0xea, 0xc9, + 0x72, 0x1a, 0x85, 0x19, 0xd1, 0x32, 0x97, 0x93, 0xe7, 0x6d, 0xd5, 0xe5, 0x59, 0x5d, 0x22, 0x75, + 0x6e, 0xa7, 0x73, 0x39, 0x09, 0x42, 0x2d, 0x82, 0xfc, 0x49, 0x4e, 0x2e, 0xb3, 0xc9, 0xc7, 0x62, + 0xd5, 0x95, 0x99, 0x1f, 0x3f, 0x4d, 0x7f, 0xe0, 0x96, 0x5a, 0xb9, 0x93, 0x04, 0x98, 0xed, 0x42, + 0xdd, 0x81, 0xc5, 0xc4, 0x03, 0xd8, 0x33, 0x9c, 0x63, 0xde, 0x02, 0x38, 0xa2, 0xa1, 0xdb, 0x3b, + 0x6e, 0xd1, 0x90, 0xeb, 0x77, 0x68, 0xd1, 0x42, 0xf2, 0x38, 0xc2, 0x60, 0x82, 0x6a, 0xb3, 0xf1, + 0xe9, 0xe7, 0x6b, 0x57, 0x3e, 0xfb, 0x7c, 0xed, 0xca, 0x4f, 0x3e, 0x5f, 0xbb, 0xf2, 0x83, 0xd3, + 0xb5, 0xdc, 0xa7, 0xa7, 0x6b, 0xb9, 0xcf, 0x4e, 0xd7, 0x72, 0x3f, 0x39, 0x5d, 0xcb, 0xfd, 0xfb, + 0xe9, 0x5a, 0xee, 0x8f, 0x7f, 0xba, 0x76, 0xe5, 0x37, 0x4a, 0x66, 0x58, 0xff, 0x13, 0x00, 0x00, + 0xff, 0xff, 0xfa, 0x8c, 0xad, 0x5b, 0x55, 0x42, 0x00, 0x00, } func (m *AWSLambdaTrigger) Marshal() (dAtA []byte, err error) { @@ -2199,6 +2232,18 @@ func (m *EventDependency) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Transform != nil { + { + size, err := m.Transform.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } if m.Filters != nil { { size, err := m.Filters.MarshalToSizedBuffer(dAtA[:i]) @@ -2304,6 +2349,39 @@ func (m *EventDependencyFilter) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *EventDependencyTransformer) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventDependencyTransformer) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventDependencyTransformer) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Script) + copy(dAtA[i:], m.Script) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Script))) + i-- + dAtA[i] = 0x12 + i -= len(m.JQ) + copy(dAtA[i:], m.JQ) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.JQ))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ExprFilter) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -4521,6 +4599,10 @@ func (m *EventDependency) Size() (n int) { l = m.Filters.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.Transform != nil { + l = m.Transform.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -4553,6 +4635,19 @@ func (m *EventDependencyFilter) Size() (n int) { return n } +func (m *EventDependencyTransformer) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.JQ) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Script) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *ExprFilter) Size() (n int) { if m == nil { return 0 @@ -5443,6 +5538,7 @@ func (this *EventDependency) String() string { `EventSourceName:` + fmt.Sprintf("%v", this.EventSourceName) + `,`, `EventName:` + fmt.Sprintf("%v", this.EventName) + `,`, `Filters:` + strings.Replace(this.Filters.String(), "EventDependencyFilter", "EventDependencyFilter", 1) + `,`, + `Transform:` + strings.Replace(this.Transform.String(), "EventDependencyTransformer", "EventDependencyTransformer", 1) + `,`, `}`, }, "") return s @@ -5470,6 +5566,17 @@ func (this *EventDependencyFilter) String() string { }, "") return s } +func (this *EventDependencyTransformer) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&EventDependencyTransformer{`, + `JQ:` + fmt.Sprintf("%v", this.JQ) + `,`, + `Script:` + fmt.Sprintf("%v", this.Script) + `,`, + `}`, + }, "") + return s +} func (this *ExprFilter) String() string { if this == nil { return "nil" @@ -8369,6 +8476,42 @@ func (m *EventDependency) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Transform", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Transform == nil { + m.Transform = &EventDependencyTransformer{} + } + if err := m.Transform.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -8580,6 +8723,120 @@ func (m *EventDependencyFilter) Unmarshal(dAtA []byte) error { } return nil } +func (m *EventDependencyTransformer) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventDependencyTransformer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventDependencyTransformer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field JQ", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.JQ = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Script", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Script = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ExprFilter) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/sensor/v1alpha1/generated.proto b/pkg/apis/sensor/v1alpha1/generated.proto index 5b7ba7d719..63ca2f9a0f 100644 --- a/pkg/apis/sensor/v1alpha1/generated.proto +++ b/pkg/apis/sensor/v1alpha1/generated.proto @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -249,6 +249,9 @@ message EventDependency { // Filters and rules governing toleration of success and constraints on the context and data of an event optional EventDependencyFilter filters = 4; + + // Transform transforms the event data + optional EventDependencyTransformer transform = 5; } // EventDependencyFilter defines filters and constraints for a event. @@ -266,6 +269,17 @@ message EventDependencyFilter { repeated ExprFilter exprs = 4; } +// EventDependencyTransformer transforms the event +message EventDependencyTransformer { + // JQ holds the jq command applied for transformation + // +optional + optional string jq = 1; + + // Script refers to a Lua script used to transform the event + // +optional + optional string script = 2; +} + message ExprFilter { // Expr refers to the expression that determines the outcome of the filter. optional string expr = 1; diff --git a/pkg/apis/sensor/v1alpha1/openapi_generated.go b/pkg/apis/sensor/v1alpha1/openapi_generated.go index 2e5512e9b7..ab7c5300ef 100644 --- a/pkg/apis/sensor/v1alpha1/openapi_generated.go +++ b/pkg/apis/sensor/v1alpha1/openapi_generated.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -30,47 +30,48 @@ import ( func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition { return map[string]common.OpenAPIDefinition{ - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.AWSLambdaTrigger": schema_pkg_apis_sensor_v1alpha1_AWSLambdaTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ArgoWorkflowTrigger": schema_pkg_apis_sensor_v1alpha1_ArgoWorkflowTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ArtifactLocation": schema_pkg_apis_sensor_v1alpha1_ArtifactLocation(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.AzureEventHubsTrigger": schema_pkg_apis_sensor_v1alpha1_AzureEventHubsTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ConditionsResetByTime": schema_pkg_apis_sensor_v1alpha1_ConditionsResetByTime(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ConditionsResetCriteria": schema_pkg_apis_sensor_v1alpha1_ConditionsResetCriteria(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.CustomTrigger": schema_pkg_apis_sensor_v1alpha1_CustomTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.DataFilter": schema_pkg_apis_sensor_v1alpha1_DataFilter(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.Event": schema_pkg_apis_sensor_v1alpha1_Event(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventContext": schema_pkg_apis_sensor_v1alpha1_EventContext(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependency": schema_pkg_apis_sensor_v1alpha1_EventDependency(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependencyFilter": schema_pkg_apis_sensor_v1alpha1_EventDependencyFilter(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ExprFilter": schema_pkg_apis_sensor_v1alpha1_ExprFilter(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.FileArtifact": schema_pkg_apis_sensor_v1alpha1_FileArtifact(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.GitArtifact": schema_pkg_apis_sensor_v1alpha1_GitArtifact(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.GitCreds": schema_pkg_apis_sensor_v1alpha1_GitCreds(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.GitRemoteConfig": schema_pkg_apis_sensor_v1alpha1_GitRemoteConfig(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.HTTPTrigger": schema_pkg_apis_sensor_v1alpha1_HTTPTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.K8SResourcePolicy": schema_pkg_apis_sensor_v1alpha1_K8SResourcePolicy(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.KafkaTrigger": schema_pkg_apis_sensor_v1alpha1_KafkaTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.LogTrigger": schema_pkg_apis_sensor_v1alpha1_LogTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.NATSTrigger": schema_pkg_apis_sensor_v1alpha1_NATSTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.OpenWhiskTrigger": schema_pkg_apis_sensor_v1alpha1_OpenWhiskTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.PayloadField": schema_pkg_apis_sensor_v1alpha1_PayloadField(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.PulsarTrigger": schema_pkg_apis_sensor_v1alpha1_PulsarTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.RateLimit": schema_pkg_apis_sensor_v1alpha1_RateLimit(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.Sensor": schema_pkg_apis_sensor_v1alpha1_Sensor(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorList": schema_pkg_apis_sensor_v1alpha1_SensorList(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorSpec": schema_pkg_apis_sensor_v1alpha1_SensorSpec(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorStatus": schema_pkg_apis_sensor_v1alpha1_SensorStatus(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackTrigger": schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.StandardK8STrigger": schema_pkg_apis_sensor_v1alpha1_StandardK8STrigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.StatusPolicy": schema_pkg_apis_sensor_v1alpha1_StatusPolicy(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.Template": schema_pkg_apis_sensor_v1alpha1_Template(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TimeFilter": schema_pkg_apis_sensor_v1alpha1_TimeFilter(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.Trigger": schema_pkg_apis_sensor_v1alpha1_Trigger(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameter": schema_pkg_apis_sensor_v1alpha1_TriggerParameter(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameterSource": schema_pkg_apis_sensor_v1alpha1_TriggerParameterSource(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerPolicy": schema_pkg_apis_sensor_v1alpha1_TriggerPolicy(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerTemplate": schema_pkg_apis_sensor_v1alpha1_TriggerTemplate(ref), - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.URLArtifact": schema_pkg_apis_sensor_v1alpha1_URLArtifact(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.AWSLambdaTrigger": schema_pkg_apis_sensor_v1alpha1_AWSLambdaTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ArgoWorkflowTrigger": schema_pkg_apis_sensor_v1alpha1_ArgoWorkflowTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ArtifactLocation": schema_pkg_apis_sensor_v1alpha1_ArtifactLocation(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.AzureEventHubsTrigger": schema_pkg_apis_sensor_v1alpha1_AzureEventHubsTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ConditionsResetByTime": schema_pkg_apis_sensor_v1alpha1_ConditionsResetByTime(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ConditionsResetCriteria": schema_pkg_apis_sensor_v1alpha1_ConditionsResetCriteria(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.CustomTrigger": schema_pkg_apis_sensor_v1alpha1_CustomTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.DataFilter": schema_pkg_apis_sensor_v1alpha1_DataFilter(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.Event": schema_pkg_apis_sensor_v1alpha1_Event(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventContext": schema_pkg_apis_sensor_v1alpha1_EventContext(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependency": schema_pkg_apis_sensor_v1alpha1_EventDependency(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependencyFilter": schema_pkg_apis_sensor_v1alpha1_EventDependencyFilter(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependencyTransformer": schema_pkg_apis_sensor_v1alpha1_EventDependencyTransformer(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.ExprFilter": schema_pkg_apis_sensor_v1alpha1_ExprFilter(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.FileArtifact": schema_pkg_apis_sensor_v1alpha1_FileArtifact(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.GitArtifact": schema_pkg_apis_sensor_v1alpha1_GitArtifact(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.GitCreds": schema_pkg_apis_sensor_v1alpha1_GitCreds(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.GitRemoteConfig": schema_pkg_apis_sensor_v1alpha1_GitRemoteConfig(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.HTTPTrigger": schema_pkg_apis_sensor_v1alpha1_HTTPTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.K8SResourcePolicy": schema_pkg_apis_sensor_v1alpha1_K8SResourcePolicy(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.KafkaTrigger": schema_pkg_apis_sensor_v1alpha1_KafkaTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.LogTrigger": schema_pkg_apis_sensor_v1alpha1_LogTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.NATSTrigger": schema_pkg_apis_sensor_v1alpha1_NATSTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.OpenWhiskTrigger": schema_pkg_apis_sensor_v1alpha1_OpenWhiskTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.PayloadField": schema_pkg_apis_sensor_v1alpha1_PayloadField(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.PulsarTrigger": schema_pkg_apis_sensor_v1alpha1_PulsarTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.RateLimit": schema_pkg_apis_sensor_v1alpha1_RateLimit(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.Sensor": schema_pkg_apis_sensor_v1alpha1_Sensor(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorList": schema_pkg_apis_sensor_v1alpha1_SensorList(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorSpec": schema_pkg_apis_sensor_v1alpha1_SensorSpec(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SensorStatus": schema_pkg_apis_sensor_v1alpha1_SensorStatus(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.SlackTrigger": schema_pkg_apis_sensor_v1alpha1_SlackTrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.StandardK8STrigger": schema_pkg_apis_sensor_v1alpha1_StandardK8STrigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.StatusPolicy": schema_pkg_apis_sensor_v1alpha1_StatusPolicy(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.Template": schema_pkg_apis_sensor_v1alpha1_Template(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TimeFilter": schema_pkg_apis_sensor_v1alpha1_TimeFilter(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.Trigger": schema_pkg_apis_sensor_v1alpha1_Trigger(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameter": schema_pkg_apis_sensor_v1alpha1_TriggerParameter(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerParameterSource": schema_pkg_apis_sensor_v1alpha1_TriggerParameterSource(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerPolicy": schema_pkg_apis_sensor_v1alpha1_TriggerPolicy(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.TriggerTemplate": schema_pkg_apis_sensor_v1alpha1_TriggerTemplate(ref), + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.URLArtifact": schema_pkg_apis_sensor_v1alpha1_URLArtifact(ref), } } @@ -660,12 +661,18 @@ func schema_pkg_apis_sensor_v1alpha1_EventDependency(ref common.ReferenceCallbac Ref: ref("github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependencyFilter"), }, }, + "transform": { + SchemaProps: spec.SchemaProps{ + Description: "Transform transforms the event data", + Ref: ref("github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependencyTransformer"), + }, + }, }, Required: []string{"name", "eventSourceName", "eventName"}, }, }, Dependencies: []string{ - "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependencyFilter"}, + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependencyFilter", "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1.EventDependencyTransformer"}, } } @@ -724,6 +731,33 @@ func schema_pkg_apis_sensor_v1alpha1_EventDependencyFilter(ref common.ReferenceC } } +func schema_pkg_apis_sensor_v1alpha1_EventDependencyTransformer(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "EventDependencyTransformer transforms the event", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "jq": { + SchemaProps: spec.SchemaProps{ + Description: "JQ holds the jq command applied for transformation", + Type: []string{"string"}, + Format: "", + }, + }, + "script": { + SchemaProps: spec.SchemaProps{ + Description: "Script refers to a Lua script used to transform the event", + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, + } +} + func schema_pkg_apis_sensor_v1alpha1_ExprFilter(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/pkg/apis/sensor/v1alpha1/types.go b/pkg/apis/sensor/v1alpha1/types.go index e05c44621b..ae93a7892c 100644 --- a/pkg/apis/sensor/v1alpha1/types.go +++ b/pkg/apis/sensor/v1alpha1/types.go @@ -186,6 +186,18 @@ type EventDependency struct { EventName string `json:"eventName" protobuf:"bytes,3,name=eventName"` // Filters and rules governing toleration of success and constraints on the context and data of an event Filters *EventDependencyFilter `json:"filters,omitempty" protobuf:"bytes,4,opt,name=filters"` + // Transform transforms the event data + Transform *EventDependencyTransformer `json:"transform,omitempty" protobuf:"bytes,5,opt,name=transform"` +} + +// EventDependencyTransformer transforms the event +type EventDependencyTransformer struct { + // JQ holds the jq command applied for transformation + // +optional + JQ string `json:"jq,omitempty" protobuf:"bytes,1,opt,name=jq"` + // Script refers to a Lua script used to transform the event + // +optional + Script string `json:"script,omitempty" protobuf:"bytes,2,opt,name=script"` } // EventDependencyFilter defines filters and constraints for a event. diff --git a/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go index b4a08d4bf9..84f1290ca7 100644 --- a/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/sensor/v1alpha1/zz_generated.deepcopy.go @@ -2,7 +2,7 @@ // +build !ignore_autogenerated /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -342,6 +342,11 @@ func (in *EventDependency) DeepCopyInto(out *EventDependency) { *out = new(EventDependencyFilter) (*in).DeepCopyInto(*out) } + if in.Transform != nil { + in, out := &in.Transform, &out.Transform + *out = new(EventDependencyTransformer) + **out = **in + } return } @@ -395,6 +400,22 @@ func (in *EventDependencyFilter) DeepCopy() *EventDependencyFilter { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EventDependencyTransformer) DeepCopyInto(out *EventDependencyTransformer) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EventDependencyTransformer. +func (in *EventDependencyTransformer) DeepCopy() *EventDependencyTransformer { + if in == nil { + return nil + } + out := new(EventDependencyTransformer) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ExprFilter) DeepCopyInto(out *ExprFilter) { *out = *in diff --git a/pkg/client/eventbus/clientset/versioned/clientset.go b/pkg/client/eventbus/clientset/versioned/clientset.go index c8e47572fc..c0209e617b 100644 --- a/pkg/client/eventbus/clientset/versioned/clientset.go +++ b/pkg/client/eventbus/clientset/versioned/clientset.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/doc.go b/pkg/client/eventbus/clientset/versioned/doc.go index d4d9e0efaf..6e064c137a 100644 --- a/pkg/client/eventbus/clientset/versioned/doc.go +++ b/pkg/client/eventbus/clientset/versioned/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/fake/clientset_generated.go b/pkg/client/eventbus/clientset/versioned/fake/clientset_generated.go index 537b3741fa..b652fc9d85 100644 --- a/pkg/client/eventbus/clientset/versioned/fake/clientset_generated.go +++ b/pkg/client/eventbus/clientset/versioned/fake/clientset_generated.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/fake/doc.go b/pkg/client/eventbus/clientset/versioned/fake/doc.go index 364034b345..e0c04494c2 100644 --- a/pkg/client/eventbus/clientset/versioned/fake/doc.go +++ b/pkg/client/eventbus/clientset/versioned/fake/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/fake/register.go b/pkg/client/eventbus/clientset/versioned/fake/register.go index 741fa545d2..224717b2df 100644 --- a/pkg/client/eventbus/clientset/versioned/fake/register.go +++ b/pkg/client/eventbus/clientset/versioned/fake/register.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/scheme/doc.go b/pkg/client/eventbus/clientset/versioned/scheme/doc.go index 766973c41f..682557074b 100644 --- a/pkg/client/eventbus/clientset/versioned/scheme/doc.go +++ b/pkg/client/eventbus/clientset/versioned/scheme/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/scheme/register.go b/pkg/client/eventbus/clientset/versioned/scheme/register.go index 15a6faf551..4c2272c7b7 100644 --- a/pkg/client/eventbus/clientset/versioned/scheme/register.go +++ b/pkg/client/eventbus/clientset/versioned/scheme/register.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/doc.go b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/doc.go index 46ca232c1e..e4d79ea8e9 100644 --- a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/doc.go +++ b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/eventbus.go b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/eventbus.go index 0bb7e57160..35b6c7b845 100644 --- a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/eventbus.go +++ b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/eventbus.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/eventbus_client.go b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/eventbus_client.go index 36c8ba169c..4de021c2d5 100644 --- a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/eventbus_client.go +++ b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/eventbus_client.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/doc.go b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/doc.go index 9a152b87de..fbac3b1655 100644 --- a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/doc.go +++ b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/fake_eventbus.go b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/fake_eventbus.go index a8e2481123..5797f84cab 100644 --- a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/fake_eventbus.go +++ b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/fake_eventbus.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/fake_eventbus_client.go b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/fake_eventbus_client.go index 1c717379b7..7e54431970 100644 --- a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/fake_eventbus_client.go +++ b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/fake/fake_eventbus_client.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/generated_expansion.go b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/generated_expansion.go index e8ff4a463b..32a985403a 100644 --- a/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/generated_expansion.go +++ b/pkg/client/eventbus/clientset/versioned/typed/eventbus/v1alpha1/generated_expansion.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/informers/externalversions/eventbus/interface.go b/pkg/client/eventbus/informers/externalversions/eventbus/interface.go index 660b7993c5..54fc21d877 100644 --- a/pkg/client/eventbus/informers/externalversions/eventbus/interface.go +++ b/pkg/client/eventbus/informers/externalversions/eventbus/interface.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/informers/externalversions/eventbus/v1alpha1/eventbus.go b/pkg/client/eventbus/informers/externalversions/eventbus/v1alpha1/eventbus.go index 3641f478fc..4fa2350204 100644 --- a/pkg/client/eventbus/informers/externalversions/eventbus/v1alpha1/eventbus.go +++ b/pkg/client/eventbus/informers/externalversions/eventbus/v1alpha1/eventbus.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/informers/externalversions/eventbus/v1alpha1/interface.go b/pkg/client/eventbus/informers/externalversions/eventbus/v1alpha1/interface.go index 867344b645..586b687598 100644 --- a/pkg/client/eventbus/informers/externalversions/eventbus/v1alpha1/interface.go +++ b/pkg/client/eventbus/informers/externalversions/eventbus/v1alpha1/interface.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/informers/externalversions/factory.go b/pkg/client/eventbus/informers/externalversions/factory.go index c54537392f..b5ef39c0eb 100644 --- a/pkg/client/eventbus/informers/externalversions/factory.go +++ b/pkg/client/eventbus/informers/externalversions/factory.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/informers/externalversions/generic.go b/pkg/client/eventbus/informers/externalversions/generic.go index 84bd05cd5d..3b990c09be 100644 --- a/pkg/client/eventbus/informers/externalversions/generic.go +++ b/pkg/client/eventbus/informers/externalversions/generic.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/informers/externalversions/internalinterfaces/factory_interfaces.go b/pkg/client/eventbus/informers/externalversions/internalinterfaces/factory_interfaces.go index 73418cc67f..002582e777 100644 --- a/pkg/client/eventbus/informers/externalversions/internalinterfaces/factory_interfaces.go +++ b/pkg/client/eventbus/informers/externalversions/internalinterfaces/factory_interfaces.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/listers/eventbus/v1alpha1/eventbus.go b/pkg/client/eventbus/listers/eventbus/v1alpha1/eventbus.go index f40c96b717..6b789ec6ff 100644 --- a/pkg/client/eventbus/listers/eventbus/v1alpha1/eventbus.go +++ b/pkg/client/eventbus/listers/eventbus/v1alpha1/eventbus.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventbus/listers/eventbus/v1alpha1/expansion_generated.go b/pkg/client/eventbus/listers/eventbus/v1alpha1/expansion_generated.go index 6cef60f460..d2e4c6bb39 100644 --- a/pkg/client/eventbus/listers/eventbus/v1alpha1/expansion_generated.go +++ b/pkg/client/eventbus/listers/eventbus/v1alpha1/expansion_generated.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/clientset.go b/pkg/client/eventsource/clientset/versioned/clientset.go index 4d8b602ee9..13eeeff9f2 100644 --- a/pkg/client/eventsource/clientset/versioned/clientset.go +++ b/pkg/client/eventsource/clientset/versioned/clientset.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/doc.go b/pkg/client/eventsource/clientset/versioned/doc.go index d4d9e0efaf..6e064c137a 100644 --- a/pkg/client/eventsource/clientset/versioned/doc.go +++ b/pkg/client/eventsource/clientset/versioned/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/fake/clientset_generated.go b/pkg/client/eventsource/clientset/versioned/fake/clientset_generated.go index 87f1fe43d2..19a2c92dc6 100644 --- a/pkg/client/eventsource/clientset/versioned/fake/clientset_generated.go +++ b/pkg/client/eventsource/clientset/versioned/fake/clientset_generated.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/fake/doc.go b/pkg/client/eventsource/clientset/versioned/fake/doc.go index 364034b345..e0c04494c2 100644 --- a/pkg/client/eventsource/clientset/versioned/fake/doc.go +++ b/pkg/client/eventsource/clientset/versioned/fake/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/fake/register.go b/pkg/client/eventsource/clientset/versioned/fake/register.go index 70bf34eff8..6131399848 100644 --- a/pkg/client/eventsource/clientset/versioned/fake/register.go +++ b/pkg/client/eventsource/clientset/versioned/fake/register.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/scheme/doc.go b/pkg/client/eventsource/clientset/versioned/scheme/doc.go index 766973c41f..682557074b 100644 --- a/pkg/client/eventsource/clientset/versioned/scheme/doc.go +++ b/pkg/client/eventsource/clientset/versioned/scheme/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/scheme/register.go b/pkg/client/eventsource/clientset/versioned/scheme/register.go index 4ee66ea518..2355602791 100644 --- a/pkg/client/eventsource/clientset/versioned/scheme/register.go +++ b/pkg/client/eventsource/clientset/versioned/scheme/register.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/doc.go b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/doc.go index 46ca232c1e..e4d79ea8e9 100644 --- a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/doc.go +++ b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/eventsource.go b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/eventsource.go index 43fa59df1c..6cdb34b348 100644 --- a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/eventsource.go +++ b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/eventsource.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/eventsource_client.go b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/eventsource_client.go index f194261b7d..b8c89ed268 100644 --- a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/eventsource_client.go +++ b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/eventsource_client.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/doc.go b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/doc.go index 9a152b87de..fbac3b1655 100644 --- a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/doc.go +++ b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/fake_eventsource.go b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/fake_eventsource.go index dec3376eb1..243c8826d5 100644 --- a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/fake_eventsource.go +++ b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/fake_eventsource.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/fake_eventsource_client.go b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/fake_eventsource_client.go index dea31e43fb..fef393f35b 100644 --- a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/fake_eventsource_client.go +++ b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/fake/fake_eventsource_client.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/generated_expansion.go b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/generated_expansion.go index 149b5ddb28..2b920f1c69 100644 --- a/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/generated_expansion.go +++ b/pkg/client/eventsource/clientset/versioned/typed/eventsource/v1alpha1/generated_expansion.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/informers/externalversions/eventsource/interface.go b/pkg/client/eventsource/informers/externalversions/eventsource/interface.go index ab21abc16a..95b3990c5c 100644 --- a/pkg/client/eventsource/informers/externalversions/eventsource/interface.go +++ b/pkg/client/eventsource/informers/externalversions/eventsource/interface.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/informers/externalversions/eventsource/v1alpha1/eventsource.go b/pkg/client/eventsource/informers/externalversions/eventsource/v1alpha1/eventsource.go index dbe1f5fb61..c0051759a4 100644 --- a/pkg/client/eventsource/informers/externalversions/eventsource/v1alpha1/eventsource.go +++ b/pkg/client/eventsource/informers/externalversions/eventsource/v1alpha1/eventsource.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/informers/externalversions/eventsource/v1alpha1/interface.go b/pkg/client/eventsource/informers/externalversions/eventsource/v1alpha1/interface.go index c1c894db76..8ab84f1684 100644 --- a/pkg/client/eventsource/informers/externalversions/eventsource/v1alpha1/interface.go +++ b/pkg/client/eventsource/informers/externalversions/eventsource/v1alpha1/interface.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/informers/externalversions/factory.go b/pkg/client/eventsource/informers/externalversions/factory.go index 24c6f3bd85..9a6da205de 100644 --- a/pkg/client/eventsource/informers/externalversions/factory.go +++ b/pkg/client/eventsource/informers/externalversions/factory.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/informers/externalversions/generic.go b/pkg/client/eventsource/informers/externalversions/generic.go index bda1f51444..2d4a5a7c7a 100644 --- a/pkg/client/eventsource/informers/externalversions/generic.go +++ b/pkg/client/eventsource/informers/externalversions/generic.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/informers/externalversions/internalinterfaces/factory_interfaces.go b/pkg/client/eventsource/informers/externalversions/internalinterfaces/factory_interfaces.go index aa6520b4bd..421757af00 100644 --- a/pkg/client/eventsource/informers/externalversions/internalinterfaces/factory_interfaces.go +++ b/pkg/client/eventsource/informers/externalversions/internalinterfaces/factory_interfaces.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/listers/eventsource/v1alpha1/eventsource.go b/pkg/client/eventsource/listers/eventsource/v1alpha1/eventsource.go index 19f7855e12..c2c5ef8108 100644 --- a/pkg/client/eventsource/listers/eventsource/v1alpha1/eventsource.go +++ b/pkg/client/eventsource/listers/eventsource/v1alpha1/eventsource.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/eventsource/listers/eventsource/v1alpha1/expansion_generated.go b/pkg/client/eventsource/listers/eventsource/v1alpha1/expansion_generated.go index b10c055aa2..e5dc800832 100644 --- a/pkg/client/eventsource/listers/eventsource/v1alpha1/expansion_generated.go +++ b/pkg/client/eventsource/listers/eventsource/v1alpha1/expansion_generated.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/clientset.go b/pkg/client/sensor/clientset/versioned/clientset.go index 65374ec48c..cac2237db9 100644 --- a/pkg/client/sensor/clientset/versioned/clientset.go +++ b/pkg/client/sensor/clientset/versioned/clientset.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/doc.go b/pkg/client/sensor/clientset/versioned/doc.go index d4d9e0efaf..6e064c137a 100644 --- a/pkg/client/sensor/clientset/versioned/doc.go +++ b/pkg/client/sensor/clientset/versioned/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/fake/clientset_generated.go b/pkg/client/sensor/clientset/versioned/fake/clientset_generated.go index 42272873f2..575298f158 100644 --- a/pkg/client/sensor/clientset/versioned/fake/clientset_generated.go +++ b/pkg/client/sensor/clientset/versioned/fake/clientset_generated.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/fake/doc.go b/pkg/client/sensor/clientset/versioned/fake/doc.go index 364034b345..e0c04494c2 100644 --- a/pkg/client/sensor/clientset/versioned/fake/doc.go +++ b/pkg/client/sensor/clientset/versioned/fake/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/fake/register.go b/pkg/client/sensor/clientset/versioned/fake/register.go index ff3a549616..808eb06f72 100644 --- a/pkg/client/sensor/clientset/versioned/fake/register.go +++ b/pkg/client/sensor/clientset/versioned/fake/register.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/scheme/doc.go b/pkg/client/sensor/clientset/versioned/scheme/doc.go index 766973c41f..682557074b 100644 --- a/pkg/client/sensor/clientset/versioned/scheme/doc.go +++ b/pkg/client/sensor/clientset/versioned/scheme/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/scheme/register.go b/pkg/client/sensor/clientset/versioned/scheme/register.go index 046539db29..a49eedbace 100644 --- a/pkg/client/sensor/clientset/versioned/scheme/register.go +++ b/pkg/client/sensor/clientset/versioned/scheme/register.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/doc.go b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/doc.go index 46ca232c1e..e4d79ea8e9 100644 --- a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/doc.go +++ b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/doc.go b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/doc.go index 9a152b87de..fbac3b1655 100644 --- a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/doc.go +++ b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/fake_sensor.go b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/fake_sensor.go index b9df72ae33..6ba4673fef 100644 --- a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/fake_sensor.go +++ b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/fake_sensor.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/fake_sensor_client.go b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/fake_sensor_client.go index 29cb2ca5fc..eba3a92836 100644 --- a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/fake_sensor_client.go +++ b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/fake/fake_sensor_client.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/generated_expansion.go b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/generated_expansion.go index b49f34463a..97830d783c 100644 --- a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/generated_expansion.go +++ b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/generated_expansion.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/sensor.go b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/sensor.go index 503a72c507..ef762fefed 100644 --- a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/sensor.go +++ b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/sensor.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/sensor_client.go b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/sensor_client.go index a68d027cae..011c321c45 100644 --- a/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/sensor_client.go +++ b/pkg/client/sensor/clientset/versioned/typed/sensor/v1alpha1/sensor_client.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/informers/externalversions/factory.go b/pkg/client/sensor/informers/externalversions/factory.go index f2a8a74adb..43818199a8 100644 --- a/pkg/client/sensor/informers/externalversions/factory.go +++ b/pkg/client/sensor/informers/externalversions/factory.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/informers/externalversions/generic.go b/pkg/client/sensor/informers/externalversions/generic.go index c0a5e22403..f384a25a6f 100644 --- a/pkg/client/sensor/informers/externalversions/generic.go +++ b/pkg/client/sensor/informers/externalversions/generic.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/informers/externalversions/internalinterfaces/factory_interfaces.go b/pkg/client/sensor/informers/externalversions/internalinterfaces/factory_interfaces.go index 89c64fd70c..e14626906f 100644 --- a/pkg/client/sensor/informers/externalversions/internalinterfaces/factory_interfaces.go +++ b/pkg/client/sensor/informers/externalversions/internalinterfaces/factory_interfaces.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/informers/externalversions/sensor/interface.go b/pkg/client/sensor/informers/externalversions/sensor/interface.go index d958b095ec..2bd1080ad2 100644 --- a/pkg/client/sensor/informers/externalversions/sensor/interface.go +++ b/pkg/client/sensor/informers/externalversions/sensor/interface.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/informers/externalversions/sensor/v1alpha1/interface.go b/pkg/client/sensor/informers/externalversions/sensor/v1alpha1/interface.go index 724ebf827f..cccbbdf436 100644 --- a/pkg/client/sensor/informers/externalversions/sensor/v1alpha1/interface.go +++ b/pkg/client/sensor/informers/externalversions/sensor/v1alpha1/interface.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/informers/externalversions/sensor/v1alpha1/sensor.go b/pkg/client/sensor/informers/externalversions/sensor/v1alpha1/sensor.go index 7ecdd39744..68d35d7132 100644 --- a/pkg/client/sensor/informers/externalversions/sensor/v1alpha1/sensor.go +++ b/pkg/client/sensor/informers/externalversions/sensor/v1alpha1/sensor.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/listers/sensor/v1alpha1/expansion_generated.go b/pkg/client/sensor/listers/sensor/v1alpha1/expansion_generated.go index 5ce1a6153b..49964bfc2c 100644 --- a/pkg/client/sensor/listers/sensor/v1alpha1/expansion_generated.go +++ b/pkg/client/sensor/listers/sensor/v1alpha1/expansion_generated.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/pkg/client/sensor/listers/sensor/v1alpha1/sensor.go b/pkg/client/sensor/listers/sensor/v1alpha1/sensor.go index 2b376a6b1e..a3972faf47 100644 --- a/pkg/client/sensor/listers/sensor/v1alpha1/sensor.go +++ b/pkg/client/sensor/listers/sensor/v1alpha1/sensor.go @@ -1,5 +1,5 @@ /* -Copyright 2020 BlackRock, Inc. +Copyright 2021 BlackRock, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/sensors/dependencies/transform.go b/sensors/dependencies/transform.go new file mode 100644 index 0000000000..da754adc13 --- /dev/null +++ b/sensors/dependencies/transform.go @@ -0,0 +1,199 @@ +package dependencies + +import ( + "encoding/json" + "fmt" + "time" + + "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1" + cloudevents "github.com/cloudevents/sdk-go/v2" + "github.com/itchyny/gojq" + "github.com/tidwall/gjson" + lua "github.com/yuin/gopher-lua" +) + +func ApplyTransform(event *cloudevents.Event, transform *v1alpha1.EventDependencyTransformer) (*cloudevents.Event, error) { + if transform == nil { + return event, nil + } + if transform.JQ != "" { + return applyJQTransform(event, transform.JQ) + } + if transform.Script != "" { + return applyScriptTransform(event, transform.Script) + } + return event, nil +} + +func applyJQTransform(event *cloudevents.Event, command string) (*cloudevents.Event, error) { + if event == nil { + return nil, fmt.Errorf("nil Event") + } + payload := event.Data() + if payload == nil { + return event, nil + } + var js *json.RawMessage + if err := json.Unmarshal(payload, &js); err != nil { + return nil, err + } + var jsData []byte + jsData, err := json.Marshal(js) + if err != nil { + return nil, err + } + query, err := gojq.Parse(command) + if err != nil { + return nil, err + } + var temp map[string]interface{} + if err = json.Unmarshal(jsData, &temp); err != nil { + return nil, err + } + iter := query.Run(temp) + v, ok := iter.Next() + if !ok { + return nil, fmt.Errorf("no output available from the jq command execution") + } + switch v.(type) { + case map[string]interface{}: + resultContent, err := json.Marshal(v) + if err != nil { + return nil, err + } + if !gjson.ValidBytes(resultContent) { + return nil, fmt.Errorf("jq transformation output is not a JSON object") + } + if err = event.SetData(cloudevents.ApplicationJSON, resultContent); err != nil { + return nil, err + } + return event, nil + default: + return nil, fmt.Errorf("jq transformation output must be a JSON object") + } +} + +func applyScriptTransform(event *cloudevents.Event, script string) (*cloudevents.Event, error) { + l := lua.NewState() + defer l.Close() + payload := event.Data() + if payload == nil { + return event, nil + } + var js *json.RawMessage + if err := json.Unmarshal(payload, &js); err != nil { + return nil, err + } + var jsData []byte + jsData, err := json.Marshal(js) + if err != nil { + return nil, err + } + var payloadJson map[string]interface{} + if err = json.Unmarshal(jsData, &payloadJson); err != nil { + return nil, err + } + lEvent := mapToTable(payloadJson) + l.SetGlobal("event", lEvent) + if err = l.DoString(script); err != nil { + return nil, err + } + lv := l.Get(-1) + tbl, ok := lv.(*lua.LTable) + if !ok { + return nil, fmt.Errorf("transformation script output type is not of lua table") + } + result := toGoValue(tbl) + resultJson, err := json.Marshal(result) + if err != nil { + return nil, err + } + if !gjson.Valid(string(resultJson)) { + return nil, fmt.Errorf("script transformation output is not a JSON object") + } + if err := event.SetData(cloudevents.ApplicationJSON, resultJson); err != nil { + return nil, err + } + return event, nil +} + +// MapToTable converts a Go map to a lua table +func mapToTable(m map[string]interface{}) *lua.LTable { + resultTable := &lua.LTable{} + for key, element := range m { + switch t := element.(type) { + case float64: + resultTable.RawSetString(key, lua.LNumber(t)) + case int64: + resultTable.RawSetString(key, lua.LNumber(t)) + case string: + resultTable.RawSetString(key, lua.LString(t)) + case bool: + resultTable.RawSetString(key, lua.LBool(t)) + case []byte: + resultTable.RawSetString(key, lua.LString(string(t))) + case map[string]interface{}: + table := mapToTable(element.(map[string]interface{})) + resultTable.RawSetString(key, table) + case time.Time: + resultTable.RawSetString(key, lua.LNumber(t.Unix())) + case []map[string]interface{}: + sliceTable := &lua.LTable{} + for _, s := range element.([]map[string]interface{}) { + table := mapToTable(s) + sliceTable.Append(table) + } + resultTable.RawSetString(key, sliceTable) + case []interface{}: + sliceTable := &lua.LTable{} + for _, s := range element.([]interface{}) { + switch tt := s.(type) { + case map[string]interface{}: + t := mapToTable(s.(map[string]interface{})) + sliceTable.Append(t) + case float64: + sliceTable.Append(lua.LNumber(tt)) + case string: + sliceTable.Append(lua.LString(tt)) + case bool: + sliceTable.Append(lua.LBool(tt)) + } + } + resultTable.RawSetString(key, sliceTable) + default: + } + } + return resultTable +} + +// toGoValue converts the given LValue to a Go object. +func toGoValue(lv lua.LValue) interface{} { + switch v := lv.(type) { + case *lua.LNilType: + return nil + case lua.LBool: + return bool(v) + case lua.LString: + return string(v) + case lua.LNumber: + return float64(v) + case *lua.LTable: + maxn := v.MaxN() + if maxn == 0 { // table + ret := make(map[string]interface{}) + v.ForEach(func(key, value lua.LValue) { + keystr := key.String() + ret[keystr] = toGoValue(value) + }) + return ret + } else { // array + ret := make([]interface{}, 0, maxn) + for i := 1; i <= maxn; i++ { + ret = append(ret, toGoValue(v.RawGetInt(i))) + } + return ret + } + default: + return v + } +} diff --git a/sensors/dependencies/transform_test.go b/sensors/dependencies/transform_test.go new file mode 100644 index 0000000000..bd0ddb4792 --- /dev/null +++ b/sensors/dependencies/transform_test.go @@ -0,0 +1,119 @@ +package dependencies + +import ( + "testing" + + cloudevents "github.com/cloudevents/sdk-go/v2" + "github.com/cloudevents/sdk-go/v2/types" + "github.com/stretchr/testify/assert" +) + +func strptr(s string) *string { + return &s +} + +func TestApplyJQTransform(t *testing.T) { + tests := []struct { + event *cloudevents.Event + result *cloudevents.Event + command string + hasError bool + }{ + { + event: &cloudevents.Event{ + Context: &cloudevents.EventContextV1{ + ID: "123", + Source: types.URIRef{}, + DataContentType: strptr(cloudevents.ApplicationJSON), + Subject: strptr("hello"), + Time: &types.Timestamp{}, + }, + DataEncoded: []byte(`{"a":1,"b":"2"}`), + }, + result: &cloudevents.Event{ + Context: &cloudevents.EventContextV1{ + ID: "123", + Source: types.URIRef{}, + DataContentType: strptr(cloudevents.ApplicationJSON), + Subject: strptr("hello"), + Time: &types.Timestamp{}, + }, + DataEncoded: []byte(`{"a":2,"b":"22"}`), + }, + hasError: false, + command: ".a += 1 | .b *= 2", + }, + } + for _, tt := range tests { + result, err := applyJQTransform(tt.event, tt.command) + if tt.hasError { + assert.NotNil(t, err) + } else { + assert.Nil(t, err) + } + assert.Equal(t, tt.result.Data(), result.Data()) + } +} + +func TestApplyScriptTransform(t *testing.T) { + tests := []struct { + event *cloudevents.Event + result *cloudevents.Event + script string + hasError bool + }{ + { + event: &cloudevents.Event{ + Context: &cloudevents.EventContextV1{ + ID: "123", + Source: types.URIRef{}, + DataContentType: strptr(cloudevents.ApplicationJSON), + Subject: strptr("hello"), + Time: &types.Timestamp{}, + }, + DataEncoded: []byte(`{"a":1,"b":"2","c":{"d":[3]}}`), + }, + result: &cloudevents.Event{ + Context: &cloudevents.EventContextV1{ + ID: "123", + Source: types.URIRef{}, + DataContentType: strptr(cloudevents.ApplicationJSON), + Subject: strptr("hello"), + Time: &types.Timestamp{}, + }, + DataEncoded: []byte(`{"a":1,"b":"2","c":{"d":[4]}}`), + }, + hasError: false, + script: ` +event.c.d[1]=4 +return event +`, + }, + { + event: &cloudevents.Event{ + Context: &cloudevents.EventContextV1{ + ID: "123", + Source: types.URIRef{}, + DataContentType: strptr(cloudevents.ApplicationJSON), + Subject: strptr("hello"), + Time: &types.Timestamp{}, + }, + DataEncoded: []byte(`{"a":1,"b":"2","c":{"d":[3]}}`), + }, + result: nil, + hasError: true, + script: ` +return "hello" +`, + }, + } + for _, tt := range tests { + result, err := applyScriptTransform(tt.event, tt.script) + if tt.hasError { + assert.NotNil(t, err) + } else { + assert.Nil(t, err) + assert.Equal(t, tt.result.Data(), result.Data()) + } + } +} diff --git a/sensors/listener.go b/sensors/listener.go index 90a7641068..9a914e37fb 100644 --- a/sensors/listener.go +++ b/sensors/listener.go @@ -27,13 +27,6 @@ import ( "github.com/Knetic/govaluate" "github.com/antonmedv/expr" - cloudevents "github.com/cloudevents/sdk-go/v2" - "github.com/pkg/errors" - cronlib "github.com/robfig/cron/v3" - "go.uber.org/ratelimit" - "go.uber.org/zap" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/argoproj/argo-events/common" "github.com/argoproj/argo-events/common/leaderelection" "github.com/argoproj/argo-events/common/logging" @@ -43,6 +36,12 @@ import ( "github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1" sensordependencies "github.com/argoproj/argo-events/sensors/dependencies" sensortriggers "github.com/argoproj/argo-events/sensors/triggers" + cloudevents "github.com/cloudevents/sdk-go/v2" + "github.com/pkg/errors" + cronlib "github.com/robfig/cron/v3" + "go.uber.org/ratelimit" + "go.uber.org/zap" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) var rateLimiters = make(map[string]ratelimit.Limiter) @@ -166,6 +165,17 @@ func (sensorCtx *SensorContext) listenEvents(ctx context.Context) error { } defer conn.Close() + transformFunc := func(depName string, event cloudevents.Event) (*cloudevents.Event, error) { + dep, ok := depMapping[depName] + if !ok { + return nil, fmt.Errorf("dependency %s not found", dep.Name) + } + if dep.Transform == nil { + return &event, nil + } + return sensordependencies.ApplyTransform(&event, dep.Transform) + } + filterFunc := func(depName string, event cloudevents.Event) bool { dep, ok := depMapping[depName] if !ok { @@ -203,7 +213,7 @@ func (sensorCtx *SensorContext) listenEvents(ctx context.Context) error { logger.Infof("started subscribing to events for trigger %s with client %s", trigger.Template.Name, clientID) - err = ebDriver.SubscribeEventSources(ctx, conn, group, closeSubCh, resetConditionsCh, depExpression, deps, filterFunc, actionFunc) + err = ebDriver.SubscribeEventSources(ctx, conn, group, closeSubCh, resetConditionsCh, depExpression, deps, transformFunc, filterFunc, actionFunc) if err != nil { logger.Errorw("failed to subscribe to eventbus", zap.Any("clientID", clientID), zap.Error(err)) return