From 45304cf28d6c4a3254733bcd5f0b11633b908645 Mon Sep 17 00:00:00 2001 From: Derek Wang Date: Fri, 20 Sep 2024 09:36:54 -0700 Subject: [PATCH 1/2] fix(ci): fix bunch of ci issues (#3292) Signed-off-by: Derek Wang --- .github/workflows/ci.yaml | 50 +- .github/workflows/gh-pages.yaml | 7 +- .github/workflows/release.yml | 4 +- Makefile | 60 +- api/event-bus.md | 907 +++++ api/event-source.md | 4615 +++++++++++++++++++++++ api/jsonschema/schema.json | 12 + api/openapi-spec/swagger.json | 12 + api/sensor.md | 2865 ++++++++++++++ go.mod | 4 +- hack/generate-proto.sh | 54 +- hack/library.sh | 42 +- hack/tools.go | 1 + hack/update-api-docs.sh | 58 +- hack/update-codegen.sh | 10 +- test/e2e/fixtures/e2e_suite.go | 2 +- test/e2e/functional_test.go | 1026 ++--- test/manifests/kafka/kafka.yaml | 112 +- test/manifests/kafka/kustomization.yaml | 3 +- test/manifests/kafka/zookeeper.yaml | 38 - test/util/util.go | 2 +- 21 files changed, 9195 insertions(+), 689 deletions(-) delete mode 100644 test/manifests/kafka/zookeeper.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9a0f6dbb1d..8e62f6ca81 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -21,7 +21,7 @@ jobs: - name: Setup Golang uses: actions/setup-go@v5 with: - go-version: "1.21" + go-version: "1.22" - name: Restore go build cache uses: actions/cache@v4 with: @@ -31,28 +31,6 @@ jobs: key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - - name: Install protoc - run: | - set -eux -o pipefail - PROTOC_VERSION=3.19.4 - PROTOC_ZIP=protoc-$PROTOC_VERSION-linux-x86_64.zip - curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOC_VERSION/$PROTOC_ZIP - sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc - sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*' - sudo chmod +x /usr/local/bin/protoc - sudo find /usr/local/include -type f | xargs sudo chmod a+r - sudo find /usr/local/include -type d | xargs sudo chmod a+rx - rm -f $PROTOC_ZIP - ls /usr/local/include/google/protobuf/ - - name: Install pandoc - run: | - set -eux -o pipefail - PANDOC_VERSION=2.17.1 - PANDOC_ZIP=pandoc-$PANDOC_VERSION-linux-amd64.tar.gz - curl -OL https://github.com/jgm/pandoc/releases/download/$PANDOC_VERSION/$PANDOC_ZIP - sudo tar xvzf $PANDOC_ZIP --strip-components 1 -C /usr/local - rm -f $PANDOC_ZIP - echo /usr/local/pandoc-$PANDOC_VERSION/bin >> $GITHUB_PATH - name: Get dependencies run: go mod download - name: Make codegen @@ -70,7 +48,7 @@ jobs: - name: Setup Golang uses: actions/setup-go@v5 with: - go-version: "1.21" + go-version: "1.22" - name: Restore go build cache uses: actions/cache@v4 with: @@ -97,7 +75,7 @@ jobs: - name: Setup Golang uses: actions/setup-go@v5 with: - go-version: "1.21" + go-version: "1.22" - name: Restore go build cache uses: actions/cache@v4 with: @@ -123,14 +101,14 @@ jobs: include: - driver: stan - driver: jetstream - - driver: kafka + #- driver: kafka steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Golang uses: actions/setup-go@v5 with: - go-version: "1.21" + go-version: "1.22" - name: Restore go build cache uses: actions/cache@v4 with: @@ -142,12 +120,18 @@ jobs: ${{ runner.os }}-go- - name: Install k3d run: curl -sfL https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash & - - name: Create k3d registry and cluster + - name: Create k3d cluster + run: | + k3d cluster create e2e + mkdir -p ~/.kube + k3d kubeconfig get e2e > ~/.kube/argo-events-e2e-config + - name: Install Argo Events + env: + GOPATH: /home/runner/go run: | - k3d registry create e2e-registry --port 5111 - k3d cluster create e2e -i rancher/k3s:v1.21.7-k3s1 --registry-use k3d-e2e-registry:5111 - echo '127.0.0.1 k3d-e2e-registry' | sudo tee -a /etc/hosts + KUBECONFIG=~/.kube/argo-events-e2e-config VERSION=${{ github.sha }} make start - name: Run tests + env: + GOPATH: /home/runner/go run: | - IMAGE_NAMESPACE=k3d-e2e-registry:5111 VERSION=${{ github.sha }} DOCKER_PUSH=true make start - EventBusDriver=${{ matrix.driver }} make test-functional + KUBECONFIG=~/.kube/argo-events-e2e-config EventBusDriver=${{ matrix.driver }} make test-functional diff --git a/.github/workflows/gh-pages.yaml b/.github/workflows/gh-pages.yaml index 95700d1f87..3557293af1 100644 --- a/.github/workflows/gh-pages.yaml +++ b/.github/workflows/gh-pages.yaml @@ -23,13 +23,12 @@ jobs: - name: Setup Golang uses: actions/setup-go@v5 with: - go-version: '1.21' + go-version: '1.22' - name: build - run: | - pip install mkdocs==1.3.0 mkdocs_material==8.2.9 - mkdocs build + run: make docs - name: deploy uses: peaceiris/actions-gh-pages@v4 + if: github.repository == 'argoproj/argo-events' && github.ref == 'refs/heads/master' with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./site diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3d7dc690ab..c5c246ee91 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: "1.21" + go-version: "1.22" - name: Build binaries run: | @@ -95,7 +95,7 @@ jobs: fi - uses: actions/setup-go@v5 with: - go-version: "1.21" + go-version: "1.22" - uses: actions/checkout@v4 - run: go install sigs.k8s.io/bom/cmd/bom@v0.2.0 - run: go install github.com/spdx/spdx-sbom-generator/cmd/generator@v0.0.13 diff --git a/Makefile b/Makefile index 6b32404406..96e1a94c1e 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +SHELL:=/bin/bash + PACKAGE=github.com/argoproj/argo-events CURRENT_DIR=$(shell pwd) DIST_DIR=${CURRENT_DIR}/dist @@ -9,8 +11,8 @@ BINARY_NAME:=argo-events BUILD_DATE=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') GIT_COMMIT=$(shell git rev-parse HEAD) GIT_BRANCH=$(shell git rev-parse --symbolic-full-name --verify --quiet --abbrev-ref HEAD) -GIT_TAG=$(shell if [ -z "`git status --porcelain`" ]; then git describe --exact-match --tags HEAD 2>/dev/null; fi) -GIT_TREE_STATE=$(shell if [ -z "`git status --porcelain`" ]; then echo "clean" ; else echo "dirty"; fi) +GIT_TAG=$(shell if [[ -z "`git status --porcelain`" ]]; then git describe --exact-match --tags HEAD 2>/dev/null; fi) +GIT_TREE_STATE=$(shell if [[ -z "`git status --porcelain`" ]]; then echo "clean" ; else echo "dirty"; fi) EXECUTABLES = curl docker gzip go # docker image publishing options @@ -37,7 +39,28 @@ VERSION=$(GIT_TAG) override LDFLAGS += -X ${PACKAGE}.gitTag=${GIT_TAG} endif -K3D ?= $(shell [ "`command -v kubectl`" != '' ] && [ "`command -v k3d`" != '' ] && [[ "`kubectl config current-context`" =~ k3d-* ]] && echo true || echo false) +# Check Python +PYTHON:=$(shell command -v python 2> /dev/null) +ifndef PYTHON +PYTHON:=$(shell command -v python3 2> /dev/null) +endif +ifndef PYTHON +$(error "Python is not available, please install.") +endif + +CURRENT_CONTEXT:=$(shell [[ "`command -v kubectl`" != '' ]] && kubectl config current-context 2> /dev/null || echo "unset") +IMAGE_IMPORT_CMD:=$(shell [[ "`command -v k3d`" != '' ]] && [[ "$(CURRENT_CONTEXT)" =~ k3d-* ]] && echo "k3d image import -c `echo $(CURRENT_CONTEXT) | cut -c 5-`") +ifndef IMAGE_IMPORT_CMD +IMAGE_IMPORT_CMD:=$(shell [[ "`command -v minikube`" != '' ]] && [[ "$(CURRENT_CONTEXT)" =~ minikube* ]] && echo "minikube image load") +endif +ifndef IMAGE_IMPORT_CMD +IMAGE_IMPORT_CMD:=$(shell [[ "`command -v kind`" != '' ]] && [[ "$(CURRENT_CONTEXT)" =~ kind-* ]] && echo "kind load docker-image") +endif + +DOCKER:=$(shell command -v docker 2> /dev/null) +ifndef DOCKER +DOCKER:=$(shell command -v podman 2> /dev/null) +endif # Check that the needed executables are available, else exit before the build K := $(foreach exec,$(EXECUTABLES), $(if $(shell which $(exec)),some string,$(error "No $(exec) in PATH"))) @@ -49,7 +72,7 @@ K := $(foreach exec,$(EXECUTABLES), $(if $(shell which $(exec)),some string,$(er build: dist/$(BINARY_NAME)-linux-amd64.gz dist/$(BINARY_NAME)-linux-arm64.gz dist/$(BINARY_NAME)-linux-arm.gz dist/$(BINARY_NAME)-linux-ppc64le.gz dist/$(BINARY_NAME)-linux-s390x.gz dist/$(BINARY_NAME)-%.gz: dist/$(BINARY_NAME)-% - @[ -e dist/$(BINARY_NAME)-$*.gz ] || gzip -k dist/$(BINARY_NAME)-$* + @[[ -e dist/$(BINARY_NAME)-$*.gz ]] || gzip -k dist/$(BINARY_NAME)-$* dist/$(BINARY_NAME): GOARGS = GOOS= GOARCH= dist/$(BINARY_NAME)-linux-amd64: GOARGS = GOOS=linux GOARCH=amd64 @@ -70,22 +93,22 @@ ifeq ($(shell uname -m),arm64) BUILD_DIST = dist/$(BINARY_NAME)-linux-arm64 endif image: clean $(BUILD_DIST) - DOCKER_BUILDKIT=1 docker build -t $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION) --target $(BINARY_NAME) -f $(DOCKERFILE) . - @if [ "$(DOCKER_PUSH)" = "true" ]; then docker push $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION); fi -ifeq ($(K3D),true) - k3d image import $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION) + DOCKER_BUILDKIT=1 $(DOCKER) build -t $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION) --target $(BINARY_NAME) -f $(DOCKERFILE) . + @if [[ "$(DOCKER_PUSH)" = "true" ]]; then $(DOCKER) push $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION); fi +ifdef IMAGE_IMPORT_CMD + $(IMAGE_IMPORT_CMD) $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION) endif image-linux-%: dist/$(BINARY_NAME)-linux-% - DOCKER_BUILDKIT=1 docker build --build-arg "ARCH=$*" -t $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION)-linux-$* --platform "linux/$*" --target $(BINARY_NAME) -f $(DOCKERFILE) . - @if [ "$(DOCKER_PUSH)" = "true" ]; then docker push $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION)-linux-$*; fi + DOCKER_BUILDKIT=1 $(DOCKER) build --build-arg "ARCH=$*" -t $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION)-linux-$* --platform "linux/$*" --target $(BINARY_NAME) -f $(DOCKERFILE) . + @if [[ "$(DOCKER_PUSH)" = "true" ]]; then $(DOCKER) push $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION)-linux-$*; fi image-multi: set-qemu dist/$(BINARY_NAME)-linux-arm64.gz dist/$(BINARY_NAME)-linux-amd64.gz - docker buildx build --sbom=false --provenance=false --tag $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION) --target $(BINARY_NAME) --platform linux/amd64,linux/arm64 --file ./Dockerfile ${PUSH_OPTION} . + $(DOCKER) buildx build --sbom=false --provenance=false --tag $(IMAGE_NAMESPACE)/$(BINARY_NAME):$(VERSION) --target $(BINARY_NAME) --platform linux/amd64,linux/arm64 --file ./Dockerfile ${PUSH_OPTION} . set-qemu: - docker pull tonistiigi/binfmt:latest - docker run --rm --privileged tonistiigi/binfmt:latest --install amd64,arm64 + $(DOCKER) pull tonistiigi/binfmt:latest + $(DOCKER) run --rm --privileged tonistiigi/binfmt:latest --install amd64,arm64 test: go test $(shell go list ./... | grep -v /vendor/ | grep -v /test/e2e/) -race -short -v @@ -93,7 +116,7 @@ test: test-functional: ifeq ($(EventBusDriver),kafka) kubectl -n argo-events apply -k test/manifests/kafka - kubectl -n argo-events wait -l statefulset.kubernetes.io/pod-name=kafka-0 --for=condition=ready pod --timeout=60s + kubectl -n argo-events wait -l statefulset.kubernetes.io/pod-name=kafka-broker-0 --for=condition=ready pod --timeout=60s endif go test -v -timeout 20m -count 1 --tags functional -p 1 ./test/e2e ifeq ($(EventBusDriver),kafka) @@ -162,6 +185,13 @@ lint: $(GOPATH)/bin/golangci-lint go mod tidy golangci-lint run --fix --verbose --concurrency 4 --timeout 5m --enable goimports +/usr/local/bin/mkdocs: + $(PYTHON) -m pip install mkdocs==1.3.0 mkdocs_material==8.3.9 mkdocs-embed-external-markdown==2.3.0 + +.PHONY: docs +docs: /usr/local/bin/mkdocs + mkdocs build + # release - targets only available on release branch ifneq ($(findstring release,$(GIT_BRANCH)),) @@ -183,7 +213,7 @@ endif .PHONY: check-version-warning check-version-warning: - @if [[ ! "$(VERSION)" =~ ^v[0-9]+\.[0-9]+\.[0-9]+.*$ ]]; then echo -n "It looks like you're not using a version format like 'v1.2.3', or 'v1.2.3-rc2', that version format is required for our releases. Do you wish to continue anyway? [y/N]" && read ans && [ $${ans:-N} = y ]; fi + @if [[ ! "$(VERSION)" =~ ^v[0-9]+\.[0-9]+\.[0-9]+.*$ ]]; then echo -n "It looks like you're not using a version format like 'v1.2.3', or 'v1.2.3-rc2', that version format is required for our releases. Do you wish to continue anyway? [y/N]" && read ans && [[ $${ans:-N} = y ]]; fi .PHONY: update-manifests-version update-manifests-version: diff --git a/api/event-bus.md b/api/event-bus.md index 00f622a537..7f426306aa 100644 --- a/api/event-bus.md +++ b/api/event-bus.md @@ -1,520 +1,874 @@

+ 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
+ (Optional)
+ jetstream
JetStreamConfig
+ (Optional)
+ kafka
KafkaBus
+ (Optional)
+

+ ContainerTemplate

+

+ (Appears on: JetStreamBus, NativeStrategy)

+

+

+ ContainerTemplate defines customized spec for a container

+

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

+ 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
+ (Optional)

+ NATS eventbus

+
+ jetstream
JetStreamBus
+ (Optional)
+ kafka
KafkaBus
+ (Optional)

+ Kafka eventbus

+
+ jetstreamExotic
JetStreamConfig
+ (Optional)

+ Exotic JetStream

+
+
+ status
EventBusStatus
+ (Optional)
+

+ EventBusSpec

+

+ (Appears on: EventBus)

+

+

+ EventBusSpec refers to specification of eventbus resource

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + Description
+ nats
NATSBus
+ (Optional)

+ NATS eventbus

+
+ jetstream
JetStreamBus
+ (Optional)
+ kafka
KafkaBus
+ (Optional)

+ Kafka eventbus

+
+ jetstreamExotic
JetStreamConfig
+ (Optional)

+ Exotic JetStream

+
+

+ 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

+
+

+ JetStreamBus

+

+ (Appears on: EventBusSpec)

+

+

+ JetStreamBus holds the JetStream EventBus information

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + Description
+ version
string
+

+ JetStream version, such as “2.7.3”

+
+ replicas
int32
+

+ JetStream StatefulSet size

+
+ containerTemplate
ContainerTemplate
+ (Optional)

+ ContainerTemplate contains customized spec for Nats JetStream container

+
+ reloaderContainerTemplate
ContainerTemplate
+ (Optional)

+ ReloaderContainerTemplate contains customized spec for config reloader container

+
+ metricsContainerTemplate
ContainerTemplate
+ (Optional)

+ MetricsContainerTemplate contains customized spec for metrics container

+
+ persistence
PersistenceStrategy
+ (Optional)
+ metadata
github.com/argoproj/argo-events/pkg/apis/common.Metadata
+

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

+
+ 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.

+
+ 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.

+
+ 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 @@ -522,15 +876,23 @@ 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

+
+ priorityClassName
string
+ (Optional)

+ If specified, indicates the Redis pod’s priority. “system-node-critical” and “system-cluster-critical” are two special keywords which indicate the highest priorities with the former being the highest priority. Any @@ -539,15 +901,23 @@ 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 Redis pod. When Priority Admission Controller is enabled, it prevents users from setting this field. The admission @@ -555,69 +925,109 @@ 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/

+
+ serviceAccountName
string
+ (Optional)

+ ServiceAccountName to apply to the StatefulSet

+
+ settings
string
+ (Optional)

+ JetStream configuration, if not specified, global settings in controller-config will be used. See https://docs.nats.io/running-a-nats-service/configuration#jetstream. Only configure “max_memory_store” or “max_file_store”, do not set “store_dir” as it has been hardcoded.

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

+ Optional arguments to start nats-server. For example, “-D” to enable debugging output, “-DV” to enable debugging and tracing. Check https://docs.nats.io/ for all the available arguments.

+
+ streamConfig
string
+ (Optional)

+ Optional configuration for the streams to be created in this JetStream service, if specified, it will be merged with the default configuration in controller-config. It accepts a YAML format configuration, available @@ -626,503 +1036,853 @@ fields include, “maxBytes”, “maxMsgs”, “maxAge” (e.g. 72h), “repl (default), 1: Interest, 2: WorkQueue), “Discard” (e.g. 0: DiscardOld (default), 1: DiscardNew).

+
+ maxPayload
string
+ (Optional)

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

+
+

+ JetStreamConfig

+

+ (Appears on: BusConfig, EventBusSpec)

+

+

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

+ JetStream (Nats) URL

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

+ Secret for auth

+
+ streamConfig
string
+ (Optional)
+

+ KafkaBus

+

+ (Appears on: BusConfig, EventBusSpec)

+

+

+ KafkaBus holds the KafkaBus EventBus information

+

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

+ URL to kafka cluster, multiple URLs separated by comma

+
+ topic
string
+ (Optional)

+ Topic name, defaults to {namespace_name}-{eventbus_name}

+
+ version
string
+ (Optional)

+ Kafka version, sarama defaults to the oldest supported stable version

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

+ TLS configuration for the kafka client.

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

+ SASL configuration for the kafka client

+
+ consumerGroup
KafkaConsumerGroup
+ (Optional)

+ Consumer group for kafka client

+
+

+ KafkaConsumerGroup

+

+ (Appears on: KafkaBus)

+

+

+ + + + + + + + + + + + + + + + + + + + + +
+ Field + Description
+ groupName
string
+ (Optional)

+ Consumer group name, defaults to {namespace_name}-{sensor_name}

+
+ rebalanceStrategy
string
+ (Optional)

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

+
+ startOldest
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

+
+

+ 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 @@ -1130,26 +1890,42 @@ 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

+
+ 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 @@ -1158,15 +1934,23 @@ 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 @@ -1174,178 +1958,301 @@ 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: JetStreamBus, 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

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

+ Available access modes such as ReadWriteOnce, ReadWriteMany 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 2496e283d4..d17b964865 100644 --- a/api/event-source.md +++ b/api/event-source.md @@ -1,2361 +1,3954 @@

+ 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://pkg.go.dev/github.com/rabbitmq/amqp091-go#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://pkg.go.dev/github.com/rabbitmq/amqp091-go#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://pkg.go.dev/github.com/rabbitmq/amqp091-go#Channel.QueueBind

+
+ consume
AMQPConsumeConfig
+ (Optional)

+ Consume holds the configuration to immediately starts delivering queued messages For more information, visit https://pkg.go.dev/github.com/rabbitmq/amqp091-go#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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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

+
+ arguments
string
+ (Optional)

+ Arguments of a queue (also known as “x-arguments”) used for optional features and plugins

+
+

+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ AzureQueueStorageEventSource

+

+ (Appears on: EventSourceSpec)

+

+

+ AzureQueueStorageEventSource describes the event source for azure queue storage more info at https://learn.microsoft.com/en-us/azure/storage/queues/

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + Description
+ storageAccountName
string
+ (Optional)

+ StorageAccountName is the name of the storage account where the queue is. This field is necessary to access via Azure AD (managed identity) and it is ignored if ConnectionString is set.

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

+ ConnectionString is the connection string to access Azure Queue Storage. If this fields is not provided it will try to access via Azure AD with StorageAccountName.

+
+ queueName
string
+

+ QueueName is the name of the queue

+
+ jsonBody
bool
+ (Optional)

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

+
+ 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.

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

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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+ decodeMessage
bool
+ (Optional)

+ DecodeMessage specifies if all the messages should be base64 decoded. If set to true the decoding is done before the evaluation of JSONBody

+
+ waitTimeInSeconds
int32
+ (Optional)

+ WaitTimeInSeconds is the duration (in seconds) for which the event source waits between empty results from the queue. The default value is 3 seconds.

+
+

+ AzureServiceBusEventSource

+

+ (Appears on: EventSourceSpec)

+

+

+ AzureServiceBusEventSource describes the event source for azure service bus More info at https://docs.microsoft.com/en-us/azure/service-bus-messaging/

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + Description
+ connectionString
Kubernetes core/v1.SecretKeySelector
+ (Optional)

+ ConnectionString is the connection string for the Azure Service Bus. If this fields is not provided it will try to access via Azure AD with DefaultAzureCredential and FullyQualifiedNamespace.

+
+ queueName
string
+

+ QueueName is the name of the Azure Service Bus Queue

+
+ topicName
string
+

+ TopicName is the name of the Azure Service Bus Topic

+
+ subscriptionName
string
+

+ SubscriptionName is the name of the Azure Service Bus Topic Subscription

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

+ TLS configuration for the service bus 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+ fullyQualifiedNamespace
string
+ (Optional)

+ FullyQualifiedNamespace is the Service Bus namespace name (ex: myservicebus.servicebus.windows.net). This field is necessary to access via Azure AD (managed identity) and it is ignored if ConnectionString is set.

+
+

+ BitbucketAuth

+

+ (Appears on: BitbucketEventSource)

+

+

+ BitbucketAuth holds the different auth strategies for connecting to Bitbucket

+

+ + + + + + + + + + + + + + + + + +
+ Field + Description
+ basic
BitbucketBasicAuth
+ (Optional)

+ Basic is BasicAuth auth strategy.

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

+ OAuthToken refers to the K8s secret that holds the OAuth Bearer token.

+
+

+ BitbucketBasicAuth

+

+ (Appears on: BitbucketAuth)

+

+

+ BasicAuth holds the information required to authenticate user via basic auth mechanism

+

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

+ Username refers to the K8s secret that holds the username.

+
+ password
Kubernetes core/v1.SecretKeySelector
+

+ Password refers to the K8s secret that holds the password.

+
+

+ BitbucketEventSource

+

+ (Appears on: EventSourceSpec)

+

+

+ BitbucketEventSource describes the event source for Bitbucket

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field + Description
+ deleteHookOnFinish
bool
+ (Optional)

+ DeleteHookOnFinish determines whether to delete the defined Bitbucket hook once the event source is stopped.

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

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

+
+ webhook
WebhookContext
+

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

+
+ auth
BitbucketAuth
+

+ Auth information required to connect to Bitbucket.

+
+ events
\[\]string
+

+ Events this webhook is subscribed to.

+
+ owner
string
+ (Optional)

+ DeprecatedOwner is the owner of the repository. Deprecated: use Repositories instead. Will be unsupported in v1.9

+
+ projectKey
string
+ (Optional)

+ DeprecatedProjectKey is the key of the project to which the repository relates Deprecated: use Repositories instead. Will be unsupported in v1.9

+
+ repositorySlug
string
+ (Optional)

+ DeprecatedRepositorySlug is a URL-friendly version of a repository name, automatically generated by Bitbucket for use in the URL Deprecated: use Repositories instead. Will be unsupported in v1.9

+
+ repositories
\[\]BitbucketRepository
+ (Optional)

+ Repositories holds a list of repositories for which integration needs to set up

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ BitbucketRepository

+

+ (Appears on: BitbucketEventSource)

+

+

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

+ Owner is the owner of the repository

+
+ repositorySlug
string
+

+ RepositorySlug is a URL-friendly version of a repository name, automatically generated by Bitbucket for use in the URL

+
+

+ 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
+ (Optional)

+ DeprecatedProjectKey is the key of project for which integration needs to set up. Deprecated: use Repositories instead. Will be unsupported in v1.8.

+
+ repositorySlug
string
+ (Optional)

+ DeprecatedRepositorySlug is the slug of the repository for which integration needs to set up. Deprecated: use Repositories instead. Will be unsupported in v1.8.

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

+ Projects holds a list of projects for which integration needs to set up, this will add the webhook to all repositories in the project.

+
+ repositories
\[\]BitbucketServerRepository
+ (Optional)

+ Repositories holds a list of repositories for which integration needs to set up.

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

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

+
+ skipBranchRefsChangedOnOpenPR
bool
+ (Optional)

+ SkipBranchRefsChangedOnOpenPR bypasses the event repo:refs_changed for branches whenever there’s an associated open pull request. This helps in optimizing the event handling process by avoiding unnecessary triggers for branch reference changes that are already part of a pull request under review.

+
+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

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

+ TLS configuration for the bitbucketserver client.

+
+ checkInterval
string
+ (Optional)

+ CheckInterval is a duration in which to wait before checking that the webhooks exist, e.g. 1s, 30m, 2h… (defaults to 1m)

+
+

+ BitbucketServerRepository

+

+ (Appears on: BitbucketServerEventSource)

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + Description
+ projectKey
string
+

+ ProjectKey is the key of project for which integration needs to set up.

+
+ repositorySlug
string
+

+ RepositorySlug is the slug of the repository for which integration needs to set up.

+
+

+ 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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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.WebhookEventSource
+

+ 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

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

+ Bitbucket event sources

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

+ Redis stream source

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

+ Azure Service Bus event source

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

+ AzureQueueStorage event source

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

+ SFTP event sources

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

+ Gerrit event source

+
+
+ status
EventSourceStatus
+ (Optional)
+

+ EventSourceFilter

+

+ (Appears on: AMQPEventSource, AzureEventsHubEventSource, @@ -2385,2805 +3978,4733 @@ EventSourceFilter SlackEventSource, WebhookEventSource)

+

+

+ + + + + + + + + + + + + +
+ Field + Description
+ expression
string
+
+

+ 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.WebhookEventSource
+

+ 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

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

+ Bitbucket event sources

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

+ Redis stream source

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

+ Azure Service Bus event source

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

+ AzureQueueStorage event source

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

+ SFTP event sources

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

+ Gerrit event source

+
+

+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ GerritEventSource

+

+ (Appears on: EventSourceSpec)

+

+

+ GerritEventSource refers to event-source related to gerrit events

+

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

+ Webhook holds configuration to run a http server

+
+ hookName
string
+

+ HookName is the name of the webhook

+
+ events
\[\]string
+

+ Events are gerrit event to listen to. Refer https://gerrit-review.googlesource.com/Documentation/cmd-stream-events.html#events

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

+ Auth hosts secret selectors for username and password

+
+ gerritBaseURL
string
+

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

+
+ deleteHookOnFinish
bool
+ (Optional)

+ DeleteHookOnFinish determines whether to delete the Gerrit 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 namespace paths like “whynowy/test”.

+
+ sslVerify
bool
+ (Optional)

+ SslVerify to enable ssl verification

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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

+
+ 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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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
+ (Optional)

+ 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.

+
+ 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
+ (Optional)

+ List of project IDs or project namespace paths like “whynowy/test”. Projects and groups cannot be empty at the same time.

+
+ secretToken
Kubernetes core/v1.SecretKeySelector
+

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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

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

+ List of group IDs or group name like “test”. Group level hook available in Premium and Ultimate Gitlab.

+
+

+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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
+ (Optional)

+ 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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+ config
string
+ (Optional)

+ Yaml format Sarama config for Kafka connection. It follows the struct of sarama.Config. See https://github.com/IBM/sarama/blob/main/config.go e.g.

+

+ consumer: fetch: min: 1 net: MaxOpenRequests: 5

+
+

+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

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

+ Auth hosts secret selectors for username and password

+
+

+ 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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+ queue
string
+ (Optional)

+ Queue is the name of the queue group to subscribe as if specified. Uses QueueSubscribe logic to subscribe as queue group. If the queue is empty, uses default Subscribe logic.

+
+

+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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. Either token or athenz can be set to use auth.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

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

+ Authentication athenz parameters for the pulsar client. Refer https://github.com/apache/pulsar-client-go/blob/master/pulsar/auth/athenz.go Either token or athenz can be set to use auth.

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

+ Authentication athenz privateKey secret for the pulsar client. AuthAthenzSecret must be set if AuthAthenzParams is used.

+
+

+ 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

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+ jsonBody
bool
+ (Optional)

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

+
+ username
string
+ (Optional)

+ Username required for ACL style authentication if any.

+
+

+ RedisStreamEventSource

+

+ (Appears on: EventSourceSpec)

+

+

+ RedisStreamEventSource describes an event source for Redis streams (https://redis.io/topics/streams-intro)

+

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

+ HostAddress refers to the address of the Redis host/server (master instance)

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

+ Password required for authentication if any.

+
+ db
int32
+ (Optional)

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

+
+ streams
\[\]string
+

+ Streams to look for entries. XREADGROUP is used on all streams using a single consumer group.

+
+ maxMsgCountPerRead
int32
+ (Optional)

+ MaxMsgCountPerRead holds the maximum number of messages per stream that will be read in each XREADGROUP of all streams Example: if there are 2 streams and MaxMsgCountPerRead=10, then each XREADGROUP may read upto a @@ -5191,221 +8712,368 @@ total of 20 messages. Same as COUNT option in XREADGROUP(https://redis.io/topics/streams-intro). Defaults to 10

+
+ consumerGroup
string
+ (Optional)

+ ConsumerGroup refers to the Redis stream consumer group that will be created on all redis streams. Messages are read through this group. Defaults to ‘argo-events-cg’

+
+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+ username
string
+ (Optional)

+ Username required for ACL style authentication if any.

+
+

+ 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. Unlike K8s field selector, multiple values are passed as @@ -5413,613 +9081,1033 @@ comma separated values instead of list of values. Eg: value: value1,value2. Same as K8s label selector, operator “=”, “==”, “!=”, “exists”, “!”, “notin”, “in”, “gt” and “lt” are supported

+
+ 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.

+
+ 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.

+
+

+ SFTPEventSource

+

+ (Appears on: EventSourceSpec)

+

+

+ SFTPEventSource describes an event-source for sftp 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

+
+ username
Kubernetes core/v1.SecretKeySelector
+

+ Username required for authentication if any.

+
+ password
Kubernetes core/v1.SecretKeySelector
+

+ Password required for authentication if any.

+
+ sshKeySecret
Kubernetes core/v1.SecretKeySelector
+

+ SSHKeySecret refers to the secret that contains SSH key. Key needs to contain private key and public key.

+
+ address
Kubernetes core/v1.SecretKeySelector
+

+ Address sftp address.

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

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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+ pollIntervalDuration
string
+ (Optional)

+ PollIntervalDuration the interval at which to poll the SFTP server defaults to 10 seconds

+
+

+ 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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+ endpoint
string
+ (Optional)

+ Endpoint configures connection to a specific SNS endpoint instead of Amazons servers

+
+

+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+ endpoint
string
+ (Optional)

+ Endpoint configures connection to a specific SQS endpoint instead of Amazons servers

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

+ SessionToken refers to K8s secret containing AWS temporary credentials(STS) session token

+
+

+ 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 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, @@ -6029,490 +10117,824 @@ 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

+
+

+ 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.

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+

+ 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 @@ -6520,15 +10942,23 @@ 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

+
+ 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 @@ -6537,15 +10967,23 @@ 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 @@ -6553,70 +10991,120 @@ 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, SFTPEventSource)

+

+

+ + + + + + + + + + + + + + + + + + + + + +
+ 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: BitbucketEventSource, BitbucketServerEventSource, @@ -6629,182 +11117,309 @@ WebhookContext StripeEventSource, WebhookEventSource)

+

+

+ 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

+
+ maxPayloadSize
int64
+ (Optional)

+ MaxPayloadSize is the maximum webhook payload size that the server will accept. Requests exceeding that limit will be rejected with “request too large” response. Default value: 1048576 (1MB).

+
+

+ WebhookEventSource

+

+ (Appears on: EventSourceSpec)

+

+

+ CalendarEventSource describes an HTTP based EventSource

+

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

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

+
+ filter
EventSourceFilter
+ (Optional)

+ Filter

+
+
+

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

diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index e66bae75ec..3f9716d050 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -5381,6 +5381,9 @@ "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" } }, + "required": [ + "items" + ], "type": "object", "x-kubernetes-group-version-kind": [ { @@ -5439,6 +5442,9 @@ "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" } }, + "required": [ + "items" + ], "type": "object", "x-kubernetes-group-version-kind": [ { @@ -5854,6 +5860,9 @@ "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" } }, + "required": [ + "items" + ], "type": "object", "x-kubernetes-group-version-kind": [ { @@ -5912,6 +5921,9 @@ "description": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" } }, + "required": [ + "items" + ], "type": "object", "x-kubernetes-group-version-kind": [ { diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 11fb93c340..ca2c530acb 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -5335,6 +5335,9 @@ "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList": { "description": "ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.", "type": "object", + "required": [ + "items" + ], "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", @@ -5393,6 +5396,9 @@ "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList": { "description": "ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.", "type": "object", + "required": [ + "items" + ], "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", @@ -5808,6 +5814,9 @@ "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList": { "description": "ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding.", "type": "object", + "required": [ + "items" + ], "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", @@ -5866,6 +5875,9 @@ "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList": { "description": "ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy.", "type": "object", + "required": [ + "items" + ], "properties": { "apiVersion": { "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", diff --git a/api/sensor.md b/api/sensor.md index ed6570cf98..44d9a8dfac 100644 --- a/api/sensor.md +++ b/api/sensor.md @@ -1,798 +1,1357 @@

+ 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

+
+ args
\[\]string
+

+ Args is the list of arguments to pass to the argo CLI

+
+

+ 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.

+
+

+ AzureServiceBusTrigger

+

+ (Appears on: TriggerTemplate)

+

+

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

+ ConnectionString is the connection string for the Azure Service Bus

+
+ queueName
string
+

+ QueueName is the name of the Azure Service Bus Queue

+
+ topicName
string
+

+ TopicName is the name of the Azure Service Bus Topic

+
+ subscriptionName
string
+

+ SubscriptionName is the name of the Azure Service Bus Topic Subscription

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

+ TLS configuration for the service bus client

+
+ 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 @@ -800,50 +1359,82 @@ 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 “=”.

+
+ 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 @@ -852,1501 +1443,2576 @@ extra functions. See and https://masterminds.github.io/sprig/

+
+

+ EmailTrigger

+

+ (Appears on: TriggerTemplate)

+

+

+ EmailTrigger refers to the specification of the email 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.

+
+ username
string
+ (Optional)

+ Username refers to the username used to connect to the smtp server.

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

+ SMTPPassword refers to the Kubernetes secret that holds the smtp password used to connect to smtp server.

+
+ host
string
+

+ Host refers to the smtp host url to which email is send.

+
+ port
int32
+ (Optional)

+ Port refers to the smtp server port to which email is send. Defaults to 0.

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

+ To refers to the email addresses to which the emails are send.

+
+ from
string
+ (Optional)

+ From refers to the address from which the email is send from.

+
+ subject
string
+ (Optional)

+ Subject refers to the subject line for the email send.

+
+ body
string
+ (Optional)

+ Body refers to the body/content of the email send.

+
+

+ 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

+
+ filtersLogicalOperator
LogicalOperator
+

+ FiltersLogicalOperator defines how different filters are evaluated together. Available values: and (&&), or (\|\|) Is optional and if left blank treated as and (&&).

+
+

+ 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.

+
+ dataLogicalOperator
LogicalOperator
+

+ DataLogicalOperator defines how multiple Data filters (if defined) are evaluated together. Available values: and (&&), or (\|\|) Is optional and if left blank treated as and (&&).

+
+ exprLogicalOperator
LogicalOperator
+

+ ExprLogicalOperator defines how multiple Exprs filters (if defined) are evaluated together. Available values: and (&&), or (\|\|) Is optional and if left blank treated as and (&&).

+
+ script
string
+

+ Script refers to a Lua script evaluated to determine the validity of an event.

+
+

+ 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

+
+ insecureIgnoreHostKey
bool
+ (Optional)

+ Whether to ignore host key

+
+

+ 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

+
+ partition
int32
+ (Optional)

+ DEPRECATED

+
+ 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.

+
+ 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

+
+ schemaRegistry
github.com/argoproj/argo-events/pkg/apis/common.SchemaRegistryConfig
+ (Optional)

+ Schema Registry configuration to producer message with avro format

+
+

+ 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.

+
+

+ LogicalOperator (string alias)

+

+

+ (Appears on: EventDependency, EventDependencyFilter)

+

+

+

+ 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 @@ -2354,855 +4020,1444 @@ 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. Either token or athenz can be set to use auth.

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

+ Backoff holds parameters applied to connection.

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

+ Authentication athenz parameters for the pulsar client. Refer https://github.com/apache/pulsar-client-go/blob/master/pulsar/auth/athenz.go Either token or athenz can be set to use auth.

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

+ Authentication athenz privateKey secret for the pulsar client. AuthAthenzSecret must be set if AuthAthenzParams is used.

+
+

+ 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

+
+ revisionHistoryLimit
int32
+ (Optional)

+ RevisionHistoryLimit specifies how many old deployment revisions to retain

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

+ LoggingFields add additional key-value pairs when logging happens

+
+
+ 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

+
+ revisionHistoryLimit
int32
+ (Optional)

+ RevisionHistoryLimit specifies how many old deployment revisions to retain

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

+ LoggingFields add additional key-value pairs when logging happens

+
+

+ 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.)

+
+

+ SlackSender

+

+ (Appears on: SlackTrigger)

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + Description
+ username
string
+ (Optional)

+ Username is the Slack application’s username

+
+ icon
string
+ (Optional)

+ Icon is the Slack application’s icon, e.g. :robot_face: or https://example.com/image.png

+
+

+ SlackThread

+

+ (Appears on: SlackTrigger)

+

+

+ + + + + + + + + + + + + + + + + +
+ Field + Description
+ messageAggregationKey
string
+ (Optional)

+ MessageAggregationKey allows to aggregate the messages to a thread by some key.

+
+ broadcastMessageToChannel
bool
+ (Optional)

+ BroadcastMessageToChannel allows to also broadcast the message from the thread to the channel

+
+

+ 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.

+
+ attachments
string
+ (Optional)

+ Attachments is a JSON format string that represents an array of Slack attachments according to the attachments API: https://api.slack.com/reference/messaging/attachments .

+
+ blocks
string
+ (Optional)

+ Blocks is a JSON format string that represents an array of Slack blocks according to the blocks API: https://api.slack.com/reference/block-kit/blocks .

+
+ thread
SlackThread
+ (Optional)

+ Thread refers to additional options for sending messages to a Slack thread.

+
+ sender
SlackSender
+ (Optional)

+ Sender refers to additional configuration of the Slack application that sends the message.

+
+

+ 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”

+
+ 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 @@ -3210,170 +5465,280 @@ 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 @@ -3381,15 +5746,23 @@ 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

+
+ 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 @@ -3398,15 +5771,23 @@ 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 @@ -3414,197 +5795,325 @@ 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)

+

+

+ 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

+
+ atLeastOnce
bool
+ (Optional)

+ AtLeastOnce determines the trigger execution semantics. Defaults to false. Trigger execution will use at-most-once semantics. If set to true, Trigger execution will switch to at-least-once semantics.

+
+ dlqTrigger
Trigger
+ (Optional)

+ If the trigger fails, it will retry up to the configured number of retries. If the maximum retries are reached and the trigger is set to execute atLeastOnce, the dead letter queue (DLQ) trigger will be invoked if specified. Invoking the dead letter queue trigger helps prevent data loss.

+
+

+ TriggerParameter

+

+ (Appears on: AWSLambdaTrigger, ArgoWorkflowTrigger, @@ -3621,123 +6130,204 @@ TriggerParameter 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 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 @@ -3746,14 +6336,22 @@ as the key. The dot and wildcard characters can be escaped with 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 @@ -3763,14 +6361,22 @@ extra functions. See 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 @@ -3778,14 +6384,22 @@ 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 @@ -3794,27 +6408,43 @@ standard go-template syntax as well as sprig’s extra functions. See 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.

+
+ useRawData
bool
+ (Optional)

+ UseRawData indicates if the value in an event at data key should be used without converting to string. When true, a number, boolean, json or string parameter may be extracted. When the field is unspecified, or @@ -3823,348 +6453,583 @@ string. (e.g. when set to true, the parameter 123 will resolve to the numerical type, but when false, or not provided, the string “123” will be resolved)

+
+

+ 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”

+
+ 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

+
+ azureServiceBus
AzureServiceBusTrigger
+ (Optional)

+ AzureServiceBus refers to the trigger designed to place messages on Azure Service Bus

+
+ email
EmailTrigger
+ (Optional)

+ Email refers to the trigger designed to send an email notification

+
+

+ 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/go.mod b/go.mod index fe6a09570f..44d80bd91a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/argoproj/argo-events -go 1.21 +go 1.22 retract v1.15.1 // Contains retractions only. @@ -82,6 +82,7 @@ require ( go.uber.org/zap v1.27.0 golang.org/x/crypto v0.25.0 golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d google.golang.org/api v0.181.0 google.golang.org/grpc v1.63.2 gopkg.in/jcmturner/gokrb5.v5 v5.3.0 @@ -310,7 +311,6 @@ require ( golang.org/x/term v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect gomodules.xyz/envconfig v1.3.1-0.20190308184047-426f31af0d45 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect gomodules.xyz/notify v0.1.1 // indirect diff --git a/hack/generate-proto.sh b/hack/generate-proto.sh index 43d25825d6..a4345717da 100755 --- a/hack/generate-proto.sh +++ b/hack/generate-proto.sh @@ -7,41 +7,53 @@ set -o pipefail source $(dirname $0)/library.sh header "generating proto files" -ensure_protobuf ensure_vendor -if [ "`command -v protoc-gen-gogo`" = "" ]; then - go install -mod=vendor ./vendor/github.com/gogo/protobuf/protoc-gen-gogo -fi - -if [ "`command -v protoc-gen-gogofast`" = "" ]; then - go install -mod=vendor ./vendor/github.com/gogo/protobuf/protoc-gen-gogofast -fi - -if [ "`command -v goimports`" = "" ]; then - export GO111MODULE="off" - go get golang.org/x/tools/cmd/goimports - export GO111MODULE="on" -fi - make_fake_paths export GOPATH="${FAKE_GOPATH}" +export PATH="${GOPATH}/bin:${PATH}" cd "${FAKE_REPOPATH}" -# go < 1.17 -#go install -mod=vendor ./vendor/k8s.io/code-generator/cmd/go-to-protobuf -# go >= 1.17 -GOBIN=${GOPATH}/bin go install -mod=vendor ./vendor/k8s.io/code-generator/cmd/go-to-protobuf +install-protobuf() { + # protobuf version + PROTOBUF_VERSION=27.2 + PB_REL="https://github.com/protocolbuffers/protobuf/releases" + OS=$(uname_os) + ARCH=$(uname_arch) + + echo "OS: $OS ARCH: $ARCH" + BINARY_URL=$PB_REL/download/v${PROTOBUF_VERSION}/protoc-${PROTOBUF_VERSION}-${OS}-${ARCH}.zip + if [[ "$OS" = "darwin" ]]; then + BINARY_URL=$PB_REL/download/v${PROTOBUF_VERSION}/protoc-${PROTOBUF_VERSION}-osx-universal_binary.zip + elif [[ "$OS" = "linux" ]]; then + BINARY_URL=$PB_REL/download/v${PROTOBUF_VERSION}/protoc-${PROTOBUF_VERSION}-linux-x86_64.zip + fi + echo "Downloading $BINARY_URL" + + tmp=$(mktemp -d) + trap 'rm -rf ${tmp}' EXIT + + curl -sL -o ${tmp}/protoc-${PROTOBUF_VERSION}-${OS}-${ARCH}.zip $BINARY_URL + unzip ${tmp}/protoc-${PROTOBUF_VERSION}-${OS}-${ARCH}.zip -d ${GOPATH} +} + +install-protobuf + +go install -mod=vendor ./vendor/github.com/gogo/protobuf/protoc-gen-gogo +go install -mod=vendor ./vendor/github.com/gogo/protobuf/protoc-gen-gogofast +go install -mod=vendor ./vendor/github.com/gogo/protobuf/gogoproto +go install -mod=vendor ./vendor/golang.org/x/tools/cmd/goimports +go install -mod=vendor ./vendor/k8s.io/code-generator/cmd/go-to-protobuf export GO111MODULE="off" -${GOPATH}/bin/go-to-protobuf \ +go-to-protobuf \ --go-header-file=./hack/custom-boilerplate.go.txt \ --packages=github.com/argoproj/argo-events/pkg/apis/common \ --apimachinery-packages=+k8s.io/apimachinery/pkg/util/intstr,+k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/runtime/schema,+k8s.io/apimachinery/pkg/runtime,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1,k8s.io/api/policy/v1beta1 \ --proto-import ./vendor -${GOPATH}/bin/go-to-protobuf \ +go-to-protobuf \ --go-header-file=./hack/custom-boilerplate.go.txt \ --packages=github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1,github.com/argoproj/argo-events/pkg/apis/eventsource/v1alpha1,github.com/argoproj/argo-events/pkg/apis/sensor/v1alpha1 \ --apimachinery-packages=github.com/argoproj/argo-events/pkg/apis/common,+k8s.io/apimachinery/pkg/util/intstr,+k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/runtime/schema,+k8s.io/apimachinery/pkg/runtime,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1,k8s.io/api/policy/v1beta1 \ diff --git a/hack/library.sh b/hack/library.sh index 839e90f613..29b7ed4779 100644 --- a/hack/library.sh +++ b/hack/library.sh @@ -38,20 +38,6 @@ ensure_vendor() { go mod vendor } -ensure_pandoc() { - if [ "`command -v pandoc`" = "" ]; then - warning "Please install pandoc with - brew install pandoc" - exit 1 - fi -} - -ensure_protobuf() { - if [ "`command -v protoc`" = "" ]; then - warning "Please install protobuf with - brew install protobuf" - exit 1 - fi -} - ensure_mockery() { if [ "`command -v mockery`" = "" ]; then warning "Please install mockery with - brew install vektra/tap/mockery" @@ -59,3 +45,31 @@ ensure_mockery() { fi } +uname_os() { + os=$(uname -s | tr '[:upper:]' '[:lower:]') + case "$os" in + msys*) os="windows" ;; + mingw*) os="windows" ;; + cygwin*) os="windows" ;; + win*) os="windows" ;; + sunos) [ "$(uname -o)" = "illumos" ] && os=illumos ;; + esac + echo "$os" +} + +uname_arch() { + arch=$(uname -m) + case $arch in + x86_64) arch="amd64" ;; + x86) arch="386" ;; + i686) arch="386" ;; + i386) arch="386" ;; + i86pc) arch="amd64" ;; + aarch64) arch="arm64" ;; + armv5*) arch="armv5" ;; + armv6*) arch="armv6" ;; + armv7*) arch="armv7" ;; + loongarch64) arch="loong64" ;; + esac + echo "${arch}" +} diff --git a/hack/tools.go b/hack/tools.go index 06452db4e3..63a4b405fe 100644 --- a/hack/tools.go +++ b/hack/tools.go @@ -13,6 +13,7 @@ import ( _ "github.com/gogo/protobuf/protoc-gen-gogofast" _ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway" _ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger" + _ "golang.org/x/tools/cmd/goimports" _ "k8s.io/code-generator" _ "k8s.io/code-generator/cmd/client-gen" _ "k8s.io/code-generator/cmd/conversion-gen" diff --git a/hack/update-api-docs.sh b/hack/update-api-docs.sh index f4e17b4d38..50cfa4104d 100755 --- a/hack/update-api-docs.sh +++ b/hack/update-api-docs.sh @@ -9,7 +9,6 @@ set -o pipefail source $(dirname $0)/library.sh header "updating api docs" -ensure_pandoc ensure_vendor make_fake_paths @@ -39,9 +38,60 @@ go run ${FAKE_REPOPATH}/vendor/github.com/ahmetb/gen-crd-api-reference-docs/main -out-file "${FAKE_REPOPATH}/api/event-bus.html" \ -template-dir "${FAKE_REPOPATH}/hack/api-docs-template" +install-pandoc() { + # pandoc version + PANDOC_VERSION=3.2.1 + + if [[ "`command -v pandoc`" != "" ]]; then + if [[ "`pandoc -v | head -1 | awk '{print $2}'`" != "${PANDOC_VERSION}" ]]; then + warning "Existing pandoc version does not match the requirement (${PANDOC_VERSION}), will download a new one..." + else + PANDOC_BINARY="`command -v pandoc`" + return + fi + fi + + PD_REL="https://github.com/jgm/pandoc/releases" + OS=$(uname_os) + ARCH=$(uname_arch) + + echo "OS: $OS ARCH: $ARCH" + + BINARY_NAME="pandoc-${PANDOC_VERSION}-${OS}-${ARCH}.zip" + if [[ "$OS" = "darwin" ]]; then + if [[ "$ARCH" = "arm64" ]]; then + BINARY_NAME="pandoc-${PANDOC_VERSION}-arm64-macOS.zip" + elif [[ "$ARCH" = "amd64" ]]; then + BINARY_NAME="pandoc-${PANDOC_VERSION}-x86_64-macOS.zip" + fi + elif [[ "$OS" = "linux" ]]; then + if [[ "$ARCH" = "arm64" ]]; then + BINARY_NAME="pandoc-${PANDOC_VERSION}-linux-arm64.tar.gz" + elif [[ "$ARCH" = "amd64" ]]; then + BINARY_NAME="pandoc-${PANDOC_VERSION}-linux-amd64.tar.gz" + fi + fi + BINARY_URL=$PD_REL/download/${PANDOC_VERSION}/${BINARY_NAME} + echo "Downloading $BINARY_URL" + + tmp=$(mktemp -d) + trap 'rm -rf ${tmp}' EXIT + + curl -sL -o ${tmp}/${BINARY_NAME} $BINARY_URL + if [[ "$BINARY_NAME" =~ .zip$ ]]; then + unzip ${tmp}/${BINARY_NAME} -d ${tmp} + for a in `ls -d -1 ${tmp}/* | grep pandoc | grep -v zip`; do mv $a/* ${tmp}; rmdir $a; done + elif [[ "$BINARY_NAME" =~ .tar.gz$ ]]; then + tar xvzf ${tmp}/${BINARY_NAME} --strip-components 1 -C ${tmp}/ + fi + PANDOC_BINARY="${tmp}/bin/pandoc" +} + +install-pandoc + # Setup at https://pandoc.org/installing.html -pandoc --from markdown --to gfm ${FAKE_REPOPATH}/api/event-source.html > ${FAKE_REPOPATH}/api/event-source.md -pandoc --from markdown --to gfm ${FAKE_REPOPATH}/api/sensor.html > ${FAKE_REPOPATH}/api/sensor.md -pandoc --from markdown --to gfm ${FAKE_REPOPATH}/api/event-bus.html > ${FAKE_REPOPATH}/api/event-bus.md +${PANDOC_BINARY} --from markdown --to gfm ${FAKE_REPOPATH}/api/event-source.html > ${FAKE_REPOPATH}/api/event-source.md +${PANDOC_BINARY} --from markdown --to gfm ${FAKE_REPOPATH}/api/sensor.html > ${FAKE_REPOPATH}/api/sensor.md +${PANDOC_BINARY} --from markdown --to gfm ${FAKE_REPOPATH}/api/event-bus.html > ${FAKE_REPOPATH}/api/event-bus.md diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh index c6d4d34fe5..13407cad03 100755 --- a/hack/update-codegen.sh +++ b/hack/update-codegen.sh @@ -17,27 +17,25 @@ cd "${FAKE_REPOPATH}" CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${FAKE_REPOPATH}"; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator)} -chmod +x ${CODEGEN_PKG}/*.sh - subheader "running codegen for sensor" -bash -x ${CODEGEN_PKG}/generate-groups.sh "deepcopy,client,informer,lister" \ +bash -x ${CODEGEN_PKG}/kube_codegen.sh "deepcopy,client,informer,lister" \ github.com/argoproj/argo-events/pkg/client/sensor github.com/argoproj/argo-events/pkg/apis \ "sensor:v1alpha1" \ --go-header-file hack/custom-boilerplate.go.txt subheader "running codegen for eventsource" -bash -x ${CODEGEN_PKG}/generate-groups.sh "deepcopy,client,informer,lister" \ +bash -x ${CODEGEN_PKG}/kube_codegen.sh "deepcopy,client,informer,lister" \ github.com/argoproj/argo-events/pkg/client/eventsource github.com/argoproj/argo-events/pkg/apis \ "eventsource:v1alpha1" \ --go-header-file hack/custom-boilerplate.go.txt subheader "running codegen for eventbus" -bash -x ${CODEGEN_PKG}/generate-groups.sh "deepcopy" \ +bash -x ${CODEGEN_PKG}/kube_codegen.sh "deepcopy" \ github.com/argoproj/argo-events/pkg/client/eventbus github.com/argoproj/argo-events/pkg/apis \ "eventbus:v1alpha1" \ --go-header-file hack/custom-boilerplate.go.txt -bash -x ${CODEGEN_PKG}/generate-groups.sh "client,informer,lister" \ +bash -x ${CODEGEN_PKG}/kube_codegen.sh "client,informer,lister" \ github.com/argoproj/argo-events/pkg/client/eventbus github.com/argoproj/argo-events/pkg/apis \ "eventbus:v1alpha1" \ --plural-exceptions="EventBus:EventBus" \ diff --git a/test/e2e/fixtures/e2e_suite.go b/test/e2e/fixtures/e2e_suite.go index ea5f78f410..c213cde8bc 100644 --- a/test/e2e/fixtures/e2e_suite.go +++ b/test/e2e/fixtures/e2e_suite.go @@ -59,7 +59,7 @@ metadata: name: default spec: kafka: - url: kafka:9092` + url: kafka-broker:9092` ) type E2ESuite struct { diff --git a/test/e2e/functional_test.go b/test/e2e/functional_test.go index 04ee82b28d..716e938ebf 100644 --- a/test/e2e/functional_test.go +++ b/test/e2e/functional_test.go @@ -10,6 +10,7 @@ import ( "time" "github.com/argoproj/argo-events/test/e2e/fixtures" + "github.com/argoproj/argo-events/test/util" "github.com/gavv/httpexpect/v2" "github.com/stretchr/testify/suite" ) @@ -47,98 +48,98 @@ func (s *FunctionalSuite) e(baseURL string) *httpexpect.Expect { Builder(func(req *httpexpect.Request) {}) } -// func (s *FunctionalSuite) TestCreateCalendarEventSource() { -// t1 := s.Given().EventSource("@testdata/es-calendar.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady(). -// Then(). -// ExpectEventSourcePodLogContains(LogPublishEventSuccessful) - -// defer t1.When().DeleteEventSource() - -// t2 := s.Given().Sensor("@testdata/sensor-log.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady(). -// Then(). -// ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger")) - -// defer t2.When().DeleteSensor() -// } - -// func (s *FunctionalSuite) TestCreateCalendarEventSourceWithHA() { -// for _, test := range []struct { -// es, s string -// }{ -// {"@testdata/es-calendar-ha.yaml", "@testdata/sensor-log-ha.yaml"}, -// {"@testdata/es-calendar-ha-k8s.yaml", "@testdata/sensor-log-ha-k8s.yaml"}, -// } { -// t1 := s.Given().EventSource(test.es). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady(). -// Wait(3 * time.Second). -// Then(). -// ExpectEventSourcePodLogContains(LogPublishEventSuccessful) - -// defer t1.When().DeleteEventSource() - -// t2 := s.Given().Sensor(test.s). -// When(). -// CreateSensor(). -// WaitForSensorReady(). -// Wait(3 * time.Second). -// Then(). -// ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger")) -// defer t2.When().DeleteSensor() -// } -// } - -// func (s *FunctionalSuite) TestMetricsWithCalendar() { -// w1 := s.Given().EventSource("@testdata/es-calendar-metrics.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady() - -// defer w1.DeleteEventSource() - -// w1.Then(). -// ExpectEventSourcePodLogContains(LogEventSourceStarted) - -// defer w1.Then().EventSourcePodPortForward(17777, 7777).TerminateAllPodPortForwards() - -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful) - -// // EventSource POD metrics -// s.e("http://localhost:17777").GET("/metrics"). -// Expect(). -// Status(200). -// Body(). -// Contains("argo_events_event_service_running_total"). -// Contains("argo_events_events_sent_total"). -// Contains("argo_events_event_processing_duration_milliseconds") - -// w2 := s.Given().Sensor("@testdata/sensor-log-metrics.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// defer w2.DeleteSensor() - -// w2.Then(). -// ExpectSensorPodLogContains(LogSensorStarted) -// defer w2.Then().SensorPodPortForward(17778, 7777).TerminateAllPodPortForwards() - -// w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger")) - -// // Sensor POD metrics -// s.e("http://localhost:17778").GET("/metrics"). -// Expect(). -// Status(200). -// Body(). -// Contains("argo_events_action_triggered_total"). -// Contains("argo_events_action_duration_milliseconds") -// } +func (s *FunctionalSuite) TestCreateCalendarEventSource() { + t1 := s.Given().EventSource("@testdata/es-calendar.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady(). + Then(). + ExpectEventSourcePodLogContains(LogPublishEventSuccessful) + + defer t1.When().DeleteEventSource() + + t2 := s.Given().Sensor("@testdata/sensor-log.yaml"). + When(). + CreateSensor(). + WaitForSensorReady(). + Then(). + ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger")) + + defer t2.When().DeleteSensor() +} + +func (s *FunctionalSuite) TestCreateCalendarEventSourceWithHA() { + for _, test := range []struct { + es, s string + }{ + {"@testdata/es-calendar-ha.yaml", "@testdata/sensor-log-ha.yaml"}, + {"@testdata/es-calendar-ha-k8s.yaml", "@testdata/sensor-log-ha-k8s.yaml"}, + } { + t1 := s.Given().EventSource(test.es). + When(). + CreateEventSource(). + WaitForEventSourceReady(). + Wait(3 * time.Second). + Then(). + ExpectEventSourcePodLogContains(LogPublishEventSuccessful) + + defer t1.When().DeleteEventSource() + + t2 := s.Given().Sensor(test.s). + When(). + CreateSensor(). + WaitForSensorReady(). + Wait(3 * time.Second). + Then(). + ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger")) + defer t2.When().DeleteSensor() + } +} + +func (s *FunctionalSuite) TestMetricsWithCalendar() { + w1 := s.Given().EventSource("@testdata/es-calendar-metrics.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady() + + defer w1.DeleteEventSource() + + w1.Then(). + ExpectEventSourcePodLogContains(LogEventSourceStarted) + + defer w1.Then().EventSourcePodPortForward(17777, 7777).TerminateAllPodPortForwards() + + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful) + + // EventSource POD metrics + s.e("http://localhost:17777").GET("/metrics"). + Expect(). + Status(200). + Body(). + Contains("argo_events_event_service_running_total"). + Contains("argo_events_events_sent_total"). + Contains("argo_events_event_processing_duration_milliseconds") + + w2 := s.Given().Sensor("@testdata/sensor-log-metrics.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + defer w2.DeleteSensor() + + w2.Then(). + ExpectSensorPodLogContains(LogSensorStarted) + defer w2.Then().SensorPodPortForward(17778, 7777).TerminateAllPodPortForwards() + + w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger")) + + // Sensor POD metrics + s.e("http://localhost:17778").GET("/metrics"). + Expect(). + Status(200). + Body(). + Contains("argo_events_action_triggered_total"). + Contains("argo_events_action_duration_milliseconds") +} func (s *FunctionalSuite) TestMetricsWithWebhook() { w1 := s.Given().EventSource("@testdata/es-test-metrics-webhook.yaml"). @@ -202,424 +203,429 @@ func (s *FunctionalSuite) TestMetricsWithWebhook() { Contains("argo_events_action_failed_total") } -// func (s *FunctionalSuite) TestResourceEventSource() { -// w1 := s.Given().EventSource("@testdata/es-resource.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady(). -// Exec("kubectl", []string{"-n", fixtures.Namespace, "run", "test-pod", "--image", "hello-world", "-l", fixtures.Label + "=" + fixtures.LabelValue}, fixtures.OutputRegexp(`pod/.* created`)) - -// t1 := w1.Then(). -// ExpectEventSourcePodLogContains(LogEventSourceStarted) -// defer t1.When().DeleteEventSource() - -// t2 := s.Given().Sensor("@testdata/sensor-resource.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady(). -// Then(). -// ExpectSensorPodLogContains(LogSensorStarted) -// defer t2.When().DeleteSensor() - -// w1.Exec("kubectl", []string{"-n", fixtures.Namespace, "delete", "pod", "test-pod"}, fixtures.OutputRegexp(`pod "test-pod" deleted`)) - -// t1.ExpectEventSourcePodLogContains(LogPublishEventSuccessful) - -// t2.ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger")) -// } - -// func (s *FunctionalSuite) TestMultiDependencyConditions() { - -// w1 := s.Given().EventSource("@testdata/es-multi-dep.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady() -// defer w1.DeleteEventSource() - -// w1.Then().ExpectEventSourcePodLogContains(LogEventSourceStarted) - -// defer w1.Then(). -// EventSourcePodPortForward(12011, 12000). -// EventSourcePodPortForward(13011, 13000). -// EventSourcePodPortForward(14011, 14000). -// TerminateAllPodPortForwards() - -// w2 := s.Given().Sensor("@testdata/sensor-multi-dep.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// defer w2.DeleteSensor() - -// w2.Then().ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// time.Sleep(3 * time.Second) - -// // need to verify the conditional logic is working successfully -// // If we trigger test-dep-1 (port 12000) we should see log-trigger-2 but not log-trigger-1 -// s.e("http://localhost:12011").POST("/example1").WithBytes([]byte("{}")). -// Expect(). -// Status(200) - -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) - -// w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-2"), util.PodLogCheckOptionWithCount(1)). -// ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(0)) - -// // Then if we trigger test-dep-2 we should see log-trigger-2 -// s.e("http://localhost:13011").POST("/example2").WithBytes([]byte("{}")). -// Expect(). -// Status(200) - -// w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(1)) - -// // Then we trigger test-dep-2 again and shouldn't see anything -// s.e("http://localhost:13011").POST("/example2").WithBytes([]byte("{}")). -// Expect(). -// Status(200) -// w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(1)) - -// // Finally trigger test-dep-3 and we should see log-trigger-1.. -// s.e("http://localhost:14011").POST("/example3").WithBytes([]byte("{}")). -// Expect(). -// Status(200) -// w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(2)) -// } - -// // Start Pod with a multidependency condition -// // send it one dependency -// // verify that if it goes down and comes back up it triggers when sent the other part of the condition -// func (s *FunctionalSuite) TestDurableConsumer() { -// if fixtures.GetBusDriverSpec() == fixtures.E2EEventBusSTAN { -// s.T().SkipNow() // todo: TestDurableConsumer() is being skipped for now due to it not reliably passing with the STAN bus -// // (because when Sensor pod restarts it sometimes takes a little while for the STAN bus to resend the message to the durable consumer) -// } - -// w1 := s.Given().EventSource("@testdata/es-durable-consumer.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady() -// defer w1.DeleteEventSource() - -// w1.Then().ExpectEventSourcePodLogContains(LogEventSourceStarted) - -// defer w1.Then(). -// EventSourcePodPortForward(12102, 12000). -// EventSourcePodPortForward(13102, 13000).TerminateAllPodPortForwards() - -// w2 := s.Given().Sensor("@testdata/sensor-durable-consumer.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() - -// w2.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// // test-dep-1 -// s.e("http://localhost:12102").POST("/example1").WithBytes([]byte("{}")). -// Expect(). -// Status(200) - -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) - -// // delete the Sensor -// w2.DeleteSensor().Then().ExpectNoSensorPodFound() - -// w3 := s.Given().Sensor("@testdata/sensor-durable-consumer.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// defer w3.DeleteSensor() - -// w3.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// // test-dep-2 -// s.e("http://localhost:13102").POST("/example2").WithBytes([]byte("{}")). -// Expect(). -// Status(200) -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(2)) -// w3.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(1)) -// } - -// func (s *FunctionalSuite) TestMultipleSensors() { -// // Start two sensors which each use "A && B", but staggered in time such that one receives the partial condition -// // Then send the other part of the condition and verify that only one triggers - -// // Start EventSource -// w1 := s.Given().EventSource("@testdata/es-multi-sensor.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady() -// defer w1.DeleteEventSource() - -// w1.Then(). -// ExpectEventSourcePodLogContains(LogEventSourceStarted) - -// defer w1.Then().EventSourcePodPortForward(12003, 12000). -// EventSourcePodPortForward(13003, 13000). -// EventSourcePodPortForward(14003, 14000).TerminateAllPodPortForwards() - -// // Start one Sensor -// w2 := s.Given().Sensor("@testdata/sensor-multi-sensor.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// defer w2.DeleteSensor() - -// w2.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// time.Sleep(3 * time.Second) - -// // Trigger first dependency -// // test-dep-1 -// s.e("http://localhost:12003").POST("/example1").WithBytes([]byte("{}")). -// Expect(). -// Status(200) - -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) - -// // Start second Sensor -// w3 := s.Given().Sensor("@testdata/sensor-multi-sensor-2.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// defer w3.DeleteSensor() - -// w3.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// // Trigger second dependency -// // test-dep-2 -// s.e("http://localhost:13003").POST("/example2").WithBytes([]byte("{}")). -// Expect(). -// Status(200) -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(2)) - -// // Verify trigger occurs for first Sensor and not second -// w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1")) -// w3.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(0)) - -// } - -// func (s *FunctionalSuite) TestAtLeastOnce() { -// // Send an event to a sensor with a failing trigger and make sure it doesn't ACK it. -// // Delete the sensor and launch sensor with same name and non-failing trigger so it ACKS it. - -// if fixtures.GetBusDriverSpec() == fixtures.E2EEventBusSTAN { -// s.T().SkipNow() // Skipping because AtLeastOnce does not apply for NATS. -// } - -// w1 := s.Given().EventSource("@testdata/es-webhook.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady() - -// defer w1.DeleteEventSource() - -// w1.Then(). -// ExpectEventSourcePodLogContains(LogEventSourceStarted) - -// defer w1.Then().EventSourcePodPortForward(12006, 12000). -// TerminateAllPodPortForwards() - -// w2 := s.Given().Sensor("@testdata/sensor-atleastonce-fail.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// w2.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) -// time.Sleep(3 * time.Second) -// s.e("http://localhost:12006").POST("/example").WithBytes([]byte("{}")). -// Expect(). -// Status(200) - -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) -// w2.Then().ExpectSensorPodLogContains("Making a http request...") -// time.Sleep(5 * time.Second) // make sure we defintely attempt to trigger - -// w2.DeleteSensor() -// time.Sleep(10 * time.Second) - -// w3 := s.Given().Sensor("@testdata/sensor-atleastonce-succeed.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// defer w3.DeleteSensor() - -// w3.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// w3.Then(). -// ExpectSensorPodLogContains(LogTriggerActionSuccessful("trigger-atleastonce")) -// } - -// func (s *FunctionalSuite) TestAtMostOnce() { -// // Send an event to a sensor with a failing trigger but it will ACK it. -// // Delete the sensor and launch sensor with same name and non-failing trigger -// // to see that the event doesn't come through. - -// w1 := s.Given().EventSource("@testdata/es-webhook.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady() -// defer w1.DeleteEventSource() -// w1.Then(). -// ExpectEventSourcePodLogContains(LogEventSourceStarted) - -// defer w1.Then().EventSourcePodPortForward(12007, 12000). -// TerminateAllPodPortForwards() - -// w2 := s.Given().Sensor("@testdata/sensor-atmostonce-fail.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// w2.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) -// time.Sleep(3 * time.Second) -// s.e("http://localhost:12007").POST("/example").WithBytes([]byte("{}")). -// Expect(). -// Status(200) - -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) -// w2.Then().ExpectSensorPodLogContains("Making a http request...") -// time.Sleep(5 * time.Second) // make sure we defintely attempt to trigger - -// w2.DeleteSensor() -// time.Sleep(10 * time.Second) - -// w3 := s.Given().Sensor("@testdata/sensor-atmostonce-succeed.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// defer w3.DeleteSensor() - -// w3.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// w3.Then(). -// ExpectSensorPodLogContains(LogTriggerActionSuccessful("trigger-atmostonce"), util.PodLogCheckOptionWithCount(0)) -// } - -// func (s *FunctionalSuite) TestMultipleSensorAtLeastOnceTrigger() { -// // Start two sensors which each use "A && B", but staggered in time such that one receives the partial condition -// // Then send the other part of the condition and verify that only one triggers -// // With AtLeastOnce flag set. - -// w1 := s.Given().EventSource("@testdata/es-multi-sensor.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady() -// defer w1.DeleteEventSource() - -// w1.Then(). -// ExpectEventSourcePodLogContains(LogEventSourceStarted) - -// defer w1.Then().EventSourcePodPortForward(12004, 12000). -// EventSourcePodPortForward(13004, 13000). -// EventSourcePodPortForward(14004, 14000).TerminateAllPodPortForwards() - -// // Start one Sensor -// w2 := s.Given().Sensor("@testdata/sensor-multi-sensor-atleastonce.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// defer w2.DeleteSensor() - -// w2.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// time.Sleep(3 * time.Second) - -// // Trigger first dependency -// // test-dep-1 -// s.e("http://localhost:12004").POST("/example1").WithBytes([]byte("{}")). -// Expect(). -// Status(200) - -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) - -// // Start second Sensor -// w3 := s.Given().Sensor("@testdata/sensor-multi-sensor-2-atleastonce.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady() -// defer w3.DeleteSensor() - -// w3.Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// // Trigger second dependency -// // test-dep-2 -// s.e("http://localhost:13004").POST("/example2").WithBytes([]byte("{}")). -// Expect(). -// Status(200) -// w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(2)) - -// // Verify trigger occurs for first Sensor and not second -// w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1-atleastonce")) -// w3.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1-atleastonce"), util.PodLogCheckOptionWithCount(0)) -// } - -// func (s *FunctionalSuite) TestTriggerSpecChange() { -// // Start a sensor which uses "A && B"; send A; replace the Sensor with a new spec which uses A; send C and verify that there's no trigger - -// // Start EventSource -// t1 := s.Given().EventSource("@testdata/es-trigger-spec-change.yaml"). -// When(). -// CreateEventSource(). -// WaitForEventSourceReady(). -// Then(). -// ExpectEventSourcePodLogContains(LogEventSourceStarted). -// EventSourcePodPortForward(12005, 12000). -// EventSourcePodPortForward(13005, 13000). -// EventSourcePodPortForward(14005, 14000) - -// defer t1.When().DeleteEventSource() -// defer t1.TerminateAllPodPortForwards() - -// // Start one Sensor - -// t2 := s.Given().Sensor("@testdata/sensor-trigger-spec-change.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady(). -// Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// time.Sleep(3 * time.Second) - -// // Trigger first dependency -// // test-dep-1 -// s.e("http://localhost:12005").POST("/example").WithBytes([]byte("{}")). -// Expect(). -// Status(200) - -// t1.ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) - -// t2.When().DeleteSensor().Then().ExpectNoSensorPodFound() - -// // Change Sensor's spec -// t2 = s.Given().Sensor("@testdata/sensor-trigger-spec-change-2.yaml"). -// When(). -// CreateSensor(). -// WaitForSensorReady(). -// Then(). -// ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) - -// defer t2.When().DeleteSensor() - -// time.Sleep(3 * time.Second) - -// // test-dep-3 -// s.e("http://localhost:14005").POST("/example").WithBytes([]byte("{}")). -// Expect(). -// Status(200) - -// t1.ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(2)) -// // Verify no Trigger this time since test-dep-1 should have been cleared -// t2.ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(0)) -// } +func (s *FunctionalSuite) TestResourceEventSource() { + w1 := s.Given().EventSource("@testdata/es-resource.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady(). + Exec("kubectl", []string{"-n", fixtures.Namespace, "run", "test-pod", "--image", "hello-world", "-l", fixtures.Label + "=" + fixtures.LabelValue}, fixtures.OutputRegexp(`pod/.* created`)) + + t1 := w1.Then(). + ExpectEventSourcePodLogContains(LogEventSourceStarted) + defer t1.When().DeleteEventSource() + + t2 := s.Given().Sensor("@testdata/sensor-resource.yaml"). + When(). + CreateSensor(). + WaitForSensorReady(). + Then(). + ExpectSensorPodLogContains(LogSensorStarted) + defer t2.When().DeleteSensor() + + w1.Exec("kubectl", []string{"-n", fixtures.Namespace, "delete", "pod", "test-pod"}, fixtures.OutputRegexp(`pod "test-pod" deleted`)) + + t1.ExpectEventSourcePodLogContains(LogPublishEventSuccessful) + + t2.ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger")) +} + +func (s *FunctionalSuite) TestMultiDependencyConditions() { + + w1 := s.Given().EventSource("@testdata/es-multi-dep.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady() + defer w1.DeleteEventSource() + + w1.Then().ExpectEventSourcePodLogContains(LogEventSourceStarted) + + defer w1.Then(). + EventSourcePodPortForward(12011, 12000). + EventSourcePodPortForward(13011, 13000). + EventSourcePodPortForward(14011, 14000). + TerminateAllPodPortForwards() + + w2 := s.Given().Sensor("@testdata/sensor-multi-dep.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + defer w2.DeleteSensor() + + w2.Then().ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + time.Sleep(3 * time.Second) + + // need to verify the conditional logic is working successfully + // If we trigger test-dep-1 (port 12000) we should see log-trigger-2 but not log-trigger-1 + s.e("http://localhost:12011").POST("/example1").WithBytes([]byte("{}")). + Expect(). + Status(200) + + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) + + w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-2"), util.PodLogCheckOptionWithCount(1)). + ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(0)) + + // Then if we trigger test-dep-2 we should see log-trigger-2 + s.e("http://localhost:13011").POST("/example2").WithBytes([]byte("{}")). + Expect(). + Status(200) + + w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(1)) + + // Then we trigger test-dep-2 again and shouldn't see anything + s.e("http://localhost:13011").POST("/example2").WithBytes([]byte("{}")). + Expect(). + Status(200) + w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(1)) + + // Finally trigger test-dep-3 and we should see log-trigger-1.. + s.e("http://localhost:14011").POST("/example3").WithBytes([]byte("{}")). + Expect(). + Status(200) + w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(2)) +} + +// Start Pod with a multidependency condition +// send it one dependency +// verify that if it goes down and comes back up it triggers when sent the other part of the condition +func (s *FunctionalSuite) TestDurableConsumer() { + if fixtures.GetBusDriverSpec() == fixtures.E2EEventBusSTAN { + s.T().SkipNow() // todo: TestDurableConsumer() is being skipped for now due to it not reliably passing with the STAN bus + // (because when Sensor pod restarts it sometimes takes a little while for the STAN bus to resend the message to the durable consumer) + } + + w1 := s.Given().EventSource("@testdata/es-durable-consumer.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady() + defer w1.DeleteEventSource() + + w1.Then().ExpectEventSourcePodLogContains(LogEventSourceStarted) + + defer w1.Then(). + EventSourcePodPortForward(12102, 12000). + EventSourcePodPortForward(13102, 13000).TerminateAllPodPortForwards() + + w2 := s.Given().Sensor("@testdata/sensor-durable-consumer.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + + w2.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + // test-dep-1 + s.e("http://localhost:12102").POST("/example1").WithBytes([]byte("{}")). + Expect(). + Status(200) + + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) + + // delete the Sensor + w2.DeleteSensor().Then().ExpectNoSensorPodFound() + + w3 := s.Given().Sensor("@testdata/sensor-durable-consumer.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + defer w3.DeleteSensor() + + w3.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + // test-dep-2 + s.e("http://localhost:13102").POST("/example2").WithBytes([]byte("{}")). + Expect(). + Status(200) + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(2)) + w3.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(1)) +} + +func (s *FunctionalSuite) TestMultipleSensors() { + s.T().SkipNow() + // Start two sensors which each use "A && B", but staggered in time such that one receives the partial condition + // Then send the other part of the condition and verify that only one triggers + + // Start EventSource + w1 := s.Given().EventSource("@testdata/es-multi-sensor.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady() + defer w1.DeleteEventSource() + + w1.Then(). + ExpectEventSourcePodLogContains(LogEventSourceStarted) + + defer w1.Then().EventSourcePodPortForward(12003, 12000). + EventSourcePodPortForward(13003, 13000). + EventSourcePodPortForward(14003, 14000).TerminateAllPodPortForwards() + + // Start one Sensor + w2 := s.Given().Sensor("@testdata/sensor-multi-sensor.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + defer w2.DeleteSensor() + + w2.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + time.Sleep(3 * time.Second) + + // Trigger first dependency + // test-dep-1 + s.e("http://localhost:12003").POST("/example1").WithBytes([]byte("{}")). + Expect(). + Status(200) + + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) + + // Start second Sensor + w3 := s.Given().Sensor("@testdata/sensor-multi-sensor-2.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + defer w3.DeleteSensor() + + w3.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + // Trigger second dependency + // test-dep-2 + s.e("http://localhost:13003").POST("/example2").WithBytes([]byte("{}")). + Expect(). + Status(200) + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(2)) + + // Verify trigger occurs for first Sensor and not second + w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1")) + w3.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(0)) + +} + +func (s *FunctionalSuite) TestAtLeastOnce() { + s.T().SkipNow() + // Send an event to a sensor with a failing trigger and make sure it doesn't ACK it. + // Delete the sensor and launch sensor with same name and non-failing trigger so it ACKS it. + + if fixtures.GetBusDriverSpec() == fixtures.E2EEventBusSTAN { + s.T().SkipNow() // Skipping because AtLeastOnce does not apply for NATS. + } + + w1 := s.Given().EventSource("@testdata/es-webhook.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady() + + defer w1.DeleteEventSource() + + w1.Then(). + ExpectEventSourcePodLogContains(LogEventSourceStarted) + + defer w1.Then().EventSourcePodPortForward(12006, 12000). + TerminateAllPodPortForwards() + + w2 := s.Given().Sensor("@testdata/sensor-atleastonce-fail.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + w2.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + time.Sleep(3 * time.Second) + s.e("http://localhost:12006").POST("/example").WithBytes([]byte("{}")). + Expect(). + Status(200) + + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) + w2.Then().ExpectSensorPodLogContains("Making a http request...") + time.Sleep(5 * time.Second) // make sure we defintely attempt to trigger + + w2.DeleteSensor() + time.Sleep(10 * time.Second) + + w3 := s.Given().Sensor("@testdata/sensor-atleastonce-succeed.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + defer w3.DeleteSensor() + + w3.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + w3.Then(). + ExpectSensorPodLogContains(LogTriggerActionSuccessful("trigger-atleastonce")) +} + +func (s *FunctionalSuite) TestAtMostOnce() { + s.T().SkipNow() + // Send an event to a sensor with a failing trigger but it will ACK it. + // Delete the sensor and launch sensor with same name and non-failing trigger + // to see that the event doesn't come through. + + w1 := s.Given().EventSource("@testdata/es-webhook.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady() + defer w1.DeleteEventSource() + w1.Then(). + ExpectEventSourcePodLogContains(LogEventSourceStarted) + + defer w1.Then().EventSourcePodPortForward(12007, 12000). + TerminateAllPodPortForwards() + + w2 := s.Given().Sensor("@testdata/sensor-atmostonce-fail.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + w2.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + time.Sleep(3 * time.Second) + s.e("http://localhost:12007").POST("/example").WithBytes([]byte("{}")). + Expect(). + Status(200) + + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) + w2.Then().ExpectSensorPodLogContains("Making a http request...") + time.Sleep(5 * time.Second) // make sure we defintely attempt to trigger + + w2.DeleteSensor() + time.Sleep(10 * time.Second) + + w3 := s.Given().Sensor("@testdata/sensor-atmostonce-succeed.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + defer w3.DeleteSensor() + + w3.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + w3.Then(). + ExpectSensorPodLogContains(LogTriggerActionSuccessful("trigger-atmostonce"), util.PodLogCheckOptionWithCount(0)) +} + +func (s *FunctionalSuite) TestMultipleSensorAtLeastOnceTrigger() { + s.T().SkipNow() + // Start two sensors which each use "A && B", but staggered in time such that one receives the partial condition + // Then send the other part of the condition and verify that only one triggers + // With AtLeastOnce flag set. + + w1 := s.Given().EventSource("@testdata/es-multi-sensor.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady() + defer w1.DeleteEventSource() + + w1.Then(). + ExpectEventSourcePodLogContains(LogEventSourceStarted) + + defer w1.Then().EventSourcePodPortForward(12004, 12000). + EventSourcePodPortForward(13004, 13000). + EventSourcePodPortForward(14004, 14000).TerminateAllPodPortForwards() + + // Start one Sensor + w2 := s.Given().Sensor("@testdata/sensor-multi-sensor-atleastonce.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + defer w2.DeleteSensor() + + w2.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + time.Sleep(3 * time.Second) + + // Trigger first dependency + // test-dep-1 + s.e("http://localhost:12004").POST("/example1").WithBytes([]byte("{}")). + Expect(). + Status(200) + + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) + + // Start second Sensor + w3 := s.Given().Sensor("@testdata/sensor-multi-sensor-2-atleastonce.yaml"). + When(). + CreateSensor(). + WaitForSensorReady() + defer w3.DeleteSensor() + + w3.Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + // Trigger second dependency + // test-dep-2 + s.e("http://localhost:13004").POST("/example2").WithBytes([]byte("{}")). + Expect(). + Status(200) + w1.Then().ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(2)) + + // Verify trigger occurs for first Sensor and not second + w2.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1-atleastonce")) + w3.Then().ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1-atleastonce"), util.PodLogCheckOptionWithCount(0)) +} + +func (s *FunctionalSuite) TestTriggerSpecChange() { + s.T().SkipNow() + // Start a sensor which uses "A && B"; send A; replace the Sensor with a new spec which uses A; send C and verify that there's no trigger + + // Start EventSource + t1 := s.Given().EventSource("@testdata/es-trigger-spec-change.yaml"). + When(). + CreateEventSource(). + WaitForEventSourceReady(). + Then(). + ExpectEventSourcePodLogContains(LogEventSourceStarted). + EventSourcePodPortForward(12005, 12000). + EventSourcePodPortForward(13005, 13000). + EventSourcePodPortForward(14005, 14000) + + defer t1.When().DeleteEventSource() + defer t1.TerminateAllPodPortForwards() + + // Start one Sensor + + t2 := s.Given().Sensor("@testdata/sensor-trigger-spec-change.yaml"). + When(). + CreateSensor(). + WaitForSensorReady(). + Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + time.Sleep(3 * time.Second) + + // Trigger first dependency + // test-dep-1 + s.e("http://localhost:12005").POST("/example").WithBytes([]byte("{}")). + Expect(). + Status(200) + + t1.ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(1)) + + t2.When().DeleteSensor().Then().ExpectNoSensorPodFound() + + // Change Sensor's spec + t2 = s.Given().Sensor("@testdata/sensor-trigger-spec-change-2.yaml"). + When(). + CreateSensor(). + WaitForSensorReady(). + Then(). + ExpectSensorPodLogContains(LogSensorStarted, util.PodLogCheckOptionWithCount(1)) + + defer t2.When().DeleteSensor() + + time.Sleep(3 * time.Second) + + // test-dep-3 + s.e("http://localhost:14005").POST("/example").WithBytes([]byte("{}")). + Expect(). + Status(200) + + t1.ExpectEventSourcePodLogContains(LogPublishEventSuccessful, util.PodLogCheckOptionWithCount(2)) + // Verify no Trigger this time since test-dep-1 should have been cleared + t2.ExpectSensorPodLogContains(LogTriggerActionSuccessful("log-trigger-1"), util.PodLogCheckOptionWithCount(0)) +} func TestFunctionalSuite(t *testing.T) { suite.Run(t, new(FunctionalSuite)) diff --git a/test/manifests/kafka/kafka.yaml b/test/manifests/kafka/kafka.yaml index 4c38956775..053a77f50c 100644 --- a/test/manifests/kafka/kafka.yaml +++ b/test/manifests/kafka/kafka.yaml @@ -1,54 +1,94 @@ -apiVersion: apps/v1 +--- +apiVersion: v1 +kind: Service +metadata: + name: zookeeper +spec: + ports: + - name: client + port: 2181 + selector: + app: zookeeper + +--- kind: StatefulSet +apiVersion: apps/v1 metadata: - labels: - app: kafka - name: kafka + name: zookeeper spec: - serviceName: kafka - replicas: 1 selector: matchLabels: - app: kafka + app: zookeeper template: metadata: labels: - app: kafka + app: zookeeper spec: containers: - - env: - - name: KAFKA_ADVERTISED_PORT - value: "9092" - - name: KAFKA_ADVERTISED_HOST_NAME - value: "kafka" - - name: KAFKA_BROKER_ID - value: "0" - - name: KAFKA_PORT - value: "9092" - - name: KAFKA_ZOOKEEPER_CONNECT - value: "zookeeper:2181" - - name: KAFKA_LISTENERS - value: "INSIDE://:9092" - - name: KAFKA_ADVERTISED_LISTENERS - value: "INSIDE://:9092" - - name: KAFKA_INTER_BROKER_LISTENER_NAME - value: "INSIDE" - - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP - value: "INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT" - image: wurstmeister/kafka - name: kafka + - name: main + image: bitnami/zookeeper + imagePullPolicy: IfNotPresent ports: - - containerPort: 9092 + - containerPort: 2181 + env: + - name: ZOOKEEPER_ID + value: "1" + - name: ZOOKEEPER_SERVER_1 + value: zoo + - name: ALLOW_ANONYMOUS_LOGIN + value: "yes" + readinessProbe: + tcpSocket: + port: 2181 + serviceName: zookeeper --- apiVersion: v1 kind: Service metadata: - labels: - app: kafka - name: kafka + name: kafka-broker spec: - type: NodePort - selector: - app: kafka ports: - port: 9092 + selector: + app: kafka-broker +--- +kind: StatefulSet +apiVersion: apps/v1 +metadata: + name: kafka-broker +spec: + template: + metadata: + labels: + app: kafka-broker + spec: + containers: + - name: main + image: bitnami/kafka:3.7 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 9092 + env: + - name: KAFKA_CFG_BROKER_ID + value: "0" + - name: KAFKA_CFG_ZOOKEEPER_CONNECT + value: zookeeper:2181 + - name: KAFKA_CFG_LISTENERS + value: PLAINTEXT://:9092 + - name: KAFKA_CFG_ADVERTISED_LISTENERS + value: PLAINTEXT://kafka-broker:9092 + - name: ALLOW_PLAINTEXT_LISTENER + value: "yes" + - name: KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE + value: "true" + - name: KAFKA_CFG_DELETE_TOPIC_ENABLE + value: "true" + - name: KAFKA_CFG_NUM_PARTITIONS + value: "2" + readinessProbe: + tcpSocket: + port: 9092 + selector: + matchLabels: + app: kafka-broker + serviceName: kafka-broker diff --git a/test/manifests/kafka/kustomization.yaml b/test/manifests/kafka/kustomization.yaml index c386e1eea6..da465e0934 100644 --- a/test/manifests/kafka/kustomization.yaml +++ b/test/manifests/kafka/kustomization.yaml @@ -2,5 +2,4 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- kafka.yaml -- zookeeper.yaml + - kafka.yaml diff --git a/test/manifests/kafka/zookeeper.yaml b/test/manifests/kafka/zookeeper.yaml deleted file mode 100644 index be0b5dfbb9..0000000000 --- a/test/manifests/kafka/zookeeper.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: zookeeper - name: zookeeper -spec: - replicas: 1 - selector: - matchLabels: - app: zookeeper - template: - metadata: - labels: - app: zookeeper - spec: - containers: - - image: wurstmeister/zookeeper - imagePullPolicy: IfNotPresent - name: zookeeper - ports: - - containerPort: 2181 ---- -apiVersion: v1 -kind: Service -metadata: - labels: - app: zookeeper - name: zookeeper -spec: - type: NodePort - selector: - app: zookeeper - ports: - - name: zookeeper-port - port: 2181 - nodePort: 30181 - targetPort: 2181 diff --git a/test/util/util.go b/test/util/util.go index 1175e4486c..d98e899a07 100644 --- a/test/util/util.go +++ b/test/util/util.go @@ -156,7 +156,7 @@ type podLogCheckOptions struct { func defaultPodLogCheckOptions() *podLogCheckOptions { return &podLogCheckOptions{ - timeout: 15 * time.Second, + timeout: 60 * time.Second, count: -1, } } From e3ce354204708b0922b7b5b7bb57439d64d5b7eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 21 Sep 2024 12:26:28 +0000 Subject: [PATCH 2/2] chore(deps): bump github.com/prometheus/client_golang from 1.19.1 to 1.20.4 (#3295) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 +++++++------- go.sum | 27 ++++++++++++++------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index 44d80bd91a..534907cc46 100644 --- a/go.mod +++ b/go.mod @@ -62,7 +62,7 @@ require ( github.com/nats-io/stan.go v0.10.4 github.com/nsqio/go-nsq v1.1.0 github.com/pkg/sftp v1.13.6 - github.com/prometheus/client_golang v1.19.1 + github.com/prometheus/client_golang v1.20.4 github.com/rabbitmq/amqp091-go v1.10.0 github.com/radovskyb/watcher v1.0.7 github.com/riferrei/srclient v0.5.4 @@ -138,7 +138,7 @@ require ( github.com/benbjohnson/clock v1.3.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.4.0 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect @@ -257,9 +257,9 @@ require ( github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_model v0.5.0 // indirect - github.com/prometheus/common v0.48.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/xid v1.5.0 // indirect @@ -305,7 +305,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.26.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.22.0 // indirect golang.org/x/term v0.22.0 // indirect @@ -317,7 +317,7 @@ require ( google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect - google.golang.org/protobuf v1.34.1 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index da14564510..61fa5dfd36 100644 --- a/go.sum +++ b/go.sum @@ -167,8 +167,8 @@ github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7N github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -760,19 +760,19 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI= +github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw= github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o= github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE= @@ -1053,8 +1053,9 @@ golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAG golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1225,8 +1226,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=