mirror of https://github.com/kedacore/keda.git
Migrate to Kubebuilder v3 (#2082)
This commit is contained in:
parent
5f94b80277
commit
61740daffa
|
@ -1,12 +1,5 @@
|
|||
# Don't send .git context
|
||||
.git/
|
||||
|
||||
# Binaries
|
||||
/bin/
|
||||
/keda
|
||||
|
||||
# Dockerfiles
|
||||
Dockerfile
|
||||
Dockerfile.*
|
||||
|
||||
*.md
|
||||
# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file
|
||||
# Ignore all files which are not go type
|
||||
!**/*.go
|
||||
!**/*.mod
|
||||
!**/*.sum
|
||||
|
|
|
@ -1,338 +1,35 @@
|
|||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
# Binaries for programs and plugins
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
bin
|
||||
testbin/*
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
# Test binary, build with `go test -c`
|
||||
*.test
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
bld/
|
||||
[Oo]bj/
|
||||
# Commented out as it does nothing & was removing a vendor folder
|
||||
# [Ll]og/
|
||||
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||
*.out
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
# Kubernetes Generated files - skip generated files, except for vendored files
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
!vendor/**/zz_generated.*
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
**/Properties/launchSettings.json
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
# editor and IDE paraphernalia
|
||||
.idea
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# JetBrains Rider
|
||||
.idea/
|
||||
*.sln.iml
|
||||
|
||||
# CodeRush
|
||||
.cr/
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# KEDA artifacts
|
||||
dist/
|
||||
bin
|
||||
.DS_Store
|
||||
node_modules
|
||||
*.log
|
||||
|
||||
apiserver.local.config/
|
||||
*.cert
|
||||
|
@ -347,6 +44,3 @@ cover.out
|
|||
|
||||
# GO debug binary
|
||||
cmd/manager/debug.test
|
||||
|
||||
# testenv binary location
|
||||
testbin
|
||||
|
|
|
@ -38,6 +38,8 @@
|
|||
|
||||
### Other
|
||||
|
||||
- Migrate to Kubebuilder v3 ([#2082](https://github.com/kedacore/keda/pull/2082))
|
||||
- API path has been changed: `github.com/kedacore/keda/v2/api/v1alpha1` -> `github.com/kedacore/keda/v2/apis/keda/v1alpha1`
|
||||
- Use Patch to set FallbackCondition on ScaledObject.Status ([#2037](https://github.com/kedacore/keda/pull/2037))
|
||||
- Bump Golang to 1.16.7 ([#2065](https://github.com/kedacore/keda/pull/2065))
|
||||
|
||||
|
|
|
@ -21,12 +21,12 @@ COPY hack/ hack/
|
|||
COPY version/ version/
|
||||
COPY main.go main.go
|
||||
COPY adapter/ adapter/
|
||||
COPY api/ api/
|
||||
COPY apis/ apis/
|
||||
COPY controllers/ controllers/
|
||||
COPY pkg/ pkg/
|
||||
|
||||
# Build
|
||||
RUN VERSION=${BUILD_VERSION} GIT_COMMIT=${GIT_COMMIT} GIT_VERSION=${GIT_VERSION} make manager-dockerfile
|
||||
RUN VERSION=${BUILD_VERSION} GIT_COMMIT=${GIT_COMMIT} GIT_VERSION=${GIT_VERSION} make manager
|
||||
|
||||
# Use distroless as minimal base image to package the manager binary
|
||||
# Refer to https://github.com/GoogleContainerTools/distroless for more details
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Build the manager binary
|
||||
# Build the adapter binary
|
||||
FROM golang:1.16.7 as builder
|
||||
|
||||
ARG BUILD_VERSION=main
|
||||
|
@ -21,14 +21,14 @@ COPY hack/ hack/
|
|||
COPY version/ version/
|
||||
COPY main.go main.go
|
||||
COPY adapter/ adapter/
|
||||
COPY api/ api/
|
||||
COPY apis/ apis/
|
||||
COPY controllers/ controllers/
|
||||
COPY pkg/ pkg/
|
||||
|
||||
RUN mkdir -p /apiserver.local.config/certificates && chmod -R 777 /apiserver.local.config
|
||||
|
||||
# Build
|
||||
RUN VERSION=${BUILD_VERSION} GIT_COMMIT=${GIT_COMMIT} GIT_VERSION=${GIT_VERSION} make adapter-dockerfile
|
||||
RUN VERSION=${BUILD_VERSION} GIT_COMMIT=${GIT_COMMIT} GIT_VERSION=${GIT_VERSION} make adapter
|
||||
|
||||
# Use distroless as minimal base image to package the manager binary
|
||||
# Refer to https://github.com/GoogleContainerTools/distroless for more details
|
||||
|
|
308
Makefile
308
Makefile
|
@ -31,24 +31,32 @@ endif
|
|||
GO_BUILD_VARS= GO111MODULE=on CGO_ENABLED=$(CGO) GOOS=$(TARGET_OS) GOARCH=$(ARCH)
|
||||
GO_LDFLAGS="-X=github.com/kedacore/keda/v2/version.GitCommit=$(GIT_COMMIT) -X=github.com/kedacore/keda/v2/version.Version=$(VERSION)"
|
||||
|
||||
# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary.
|
||||
ENVTEST_K8S_VERSION = 1.22
|
||||
|
||||
# Setting SHELL to bash allows bash commands to be executed by recipes.
|
||||
# This is a requirement for 'setup-envtest.sh' in the test target.
|
||||
# Options are set to exit when a recipe line exits non-zero or a piped command fails.
|
||||
SHELL = /usr/bin/env bash -o pipefail
|
||||
.SHELLFLAGS = -ec
|
||||
|
||||
##################################################
|
||||
# All #
|
||||
##################################################
|
||||
.PHONY: All
|
||||
all: test build
|
||||
.PHONY: all
|
||||
all: build
|
||||
|
||||
##################################################
|
||||
# Tests #
|
||||
##################################################
|
||||
ENVTEST_ASSETS_DIR=$(shell pwd)/testbin
|
||||
.PHONY: test
|
||||
test: generate manifests gofmt govet
|
||||
mkdir -p ${ENVTEST_ASSETS_DIR}
|
||||
test -f ${ENVTEST_ASSETS_DIR}/setup-envtest.sh || curl -sSLo ${ENVTEST_ASSETS_DIR}/setup-envtest.sh https://raw.githubusercontent.com/kubernetes-sigs/controller-runtime/v0.6.5/hack/setup-envtest.sh
|
||||
source ${ENVTEST_ASSETS_DIR}/setup-envtest.sh; fetch_envtest_tools $(ENVTEST_ASSETS_DIR); setup_envtest_env $(ENVTEST_ASSETS_DIR); go test ./... -covermode=atomic -coverprofile cover.out
|
||||
|
||||
##@ Test
|
||||
|
||||
test: manifests generate fmt vet envtest ## Run tests.
|
||||
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test ./... -coverprofile cover.out
|
||||
|
||||
.PHONY: e2e-test
|
||||
e2e-test:
|
||||
e2e-test: ## Run e2e tests against Azure cluster.
|
||||
TERMINFO=/etc/terminfo
|
||||
TERM=linux
|
||||
@az login --service-principal -u $(AZURE_SP_ID) -p "$(AZURE_SP_KEY)" --tenant $(AZURE_SP_TENANT)
|
||||
|
@ -60,34 +68,96 @@ e2e-test:
|
|||
|
||||
./tests/run-all.sh
|
||||
|
||||
# Run e2e tests against the configured Kubernetes cluster in ~/.kube/config
|
||||
.PHONY: e2e-test-local
|
||||
e2e-test-local:
|
||||
e2e-test-local: ## Run e2e tests against Kubernetes cluster configured in ~/.kube/config.
|
||||
npm install --prefix tests
|
||||
./tests/run-all.sh
|
||||
|
||||
##################################################
|
||||
# PUBLISH #
|
||||
# Development #
|
||||
##################################################
|
||||
.PHONY: publish
|
||||
publish: docker-build
|
||||
|
||||
##@ Development
|
||||
|
||||
manifests: controller-gen ## Generate ClusterRole and CustomResourceDefinition objects.
|
||||
$(CONTROLLER_GEN) crd:crdVersions=v1 rbac:roleName=keda-operator paths="./..." output:crd:artifacts:config=config/crd/bases
|
||||
# withTriggers is only used for duck typing so we only need the deepcopy methods
|
||||
# However operator-sdk generate doesn't appear to have an option for that
|
||||
# until this issue is fixed: https://github.com/kubernetes-sigs/controller-tools/issues/398
|
||||
rm config/crd/bases/keda.sh_withtriggers.yaml
|
||||
|
||||
generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations (API).
|
||||
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
|
||||
|
||||
adapter/generated/openapi/zz_generated.openapi.go: go.mod go.sum ## Generate OpenAPI for KEDA Metrics Adapter.
|
||||
@OPENAPI_PATH=`go list -mod=readonly -m -f '{{.Dir}}' k8s.io/kube-openapi`; \
|
||||
go run $${OPENAPI_PATH}/cmd/openapi-gen/openapi-gen.go --logtostderr \
|
||||
-i k8s.io/metrics/pkg/apis/custom_metrics,k8s.io/metrics/pkg/apis/custom_metrics/v1beta1,k8s.io/metrics/pkg/apis/custom_metrics/v1beta2,k8s.io/metrics/pkg/apis/external_metrics,k8s.io/metrics/pkg/apis/external_metrics/v1beta1,k8s.io/metrics/pkg/apis/metrics,k8s.io/metrics/pkg/apis/metrics/v1beta1,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/version,k8s.io/api/core/v1 \
|
||||
--build-tag autogenerated \
|
||||
-h ./hack/boilerplate.go.txt \
|
||||
-p ./adapter/generated/openapi \
|
||||
-O zz_generated.openapi \
|
||||
-o ./ \
|
||||
-r /dev/null
|
||||
|
||||
fmt: ## Run go fmt against code.
|
||||
go fmt ./...
|
||||
|
||||
vet: ## Run go vet against code.
|
||||
go vet ./...
|
||||
|
||||
golangci: ## Run golangci against code.
|
||||
golangci-lint run
|
||||
|
||||
clientset-verify: ## Verify that generated client-go clientset, listers and informers are up to date.
|
||||
go mod vendor
|
||||
./hack/verify-codegen.sh
|
||||
rm -rf vendor
|
||||
|
||||
clientset-generate: ## Generate client-go clientset, listers and informers.
|
||||
go mod vendor
|
||||
./hack/update-codegen.sh
|
||||
rm -rf vendor
|
||||
|
||||
# Generate Liiklus proto
|
||||
pkg/scalers/liiklus/LiiklusService.pb.go: hack/LiiklusService.proto
|
||||
protoc -I hack/ hack/LiiklusService.proto --go_out=plugins=grpc:pkg/scalers/liiklus
|
||||
|
||||
pkg/scalers/liiklus/mocks/mock_liiklus.go: pkg/scalers/liiklus/LiiklusService.pb.go
|
||||
mockgen github.com/kedacore/keda/pkg/scalers/liiklus LiiklusServiceClient > pkg/scalers/liiklus/mocks/mock_liiklus.go
|
||||
|
||||
##################################################
|
||||
# Build #
|
||||
##################################################
|
||||
|
||||
##@ Build
|
||||
|
||||
build: generate fmt vet manager adapter ## Build Operator (manager) and Metrics Server (adapter) binaries.
|
||||
|
||||
manager: generate
|
||||
${GO_BUILD_VARS} go build -ldflags $(GO_LDFLAGS) -o bin/keda main.go
|
||||
|
||||
adapter: generate adapter/generated/openapi/zz_generated.openapi.go
|
||||
${GO_BUILD_VARS} go build -ldflags $(GO_LDFLAGS) -o bin/keda-adapter adapter/main.go
|
||||
|
||||
run: manifests generate ## Run a controller from your host.
|
||||
WATCH_NAMESPACE="" go run -ldflags $(GO_LDFLAGS) ./main.go $(ARGS)
|
||||
|
||||
docker-build: ## Build docker images with the KEDA Operator and Metrics Server.
|
||||
docker build . -t ${IMAGE_CONTROLLER} --build-arg BUILD_VERSION=${VERSION} --build-arg GIT_VERSION=${GIT_VERSION} --build-arg GIT_COMMIT=${GIT_COMMIT}
|
||||
docker build -f Dockerfile.adapter -t ${IMAGE_ADAPTER} . --build-arg BUILD_VERSION=${VERSION} --build-arg GIT_VERSION=${GIT_VERSION} --build-arg GIT_COMMIT=${GIT_COMMIT}
|
||||
|
||||
publish: docker-build ## Push images on to Container Registry (default: ghcr.io).
|
||||
docker push $(IMAGE_CONTROLLER)
|
||||
docker push $(IMAGE_ADAPTER)
|
||||
|
||||
# Mirror images on Docker Hub
|
||||
.PHONY: publish-dockerhub
|
||||
publish-dockerhub:
|
||||
publish-dockerhub: ## Mirror images on Docker Hub.
|
||||
docker tag $(IMAGE_CONTROLLER) docker.io/$(IMAGE_REPO)/keda:$(VERSION)
|
||||
docker tag $(IMAGE_ADAPTER) docker.io/$(IMAGE_REPO)/keda-metrics-apiserver:$(VERSION)
|
||||
docker push docker.io/$(IMAGE_REPO)/keda:$(VERSION)
|
||||
docker push docker.io/$(IMAGE_REPO)/keda-metrics-apiserver:$(VERSION)
|
||||
|
||||
|
||||
##################################################
|
||||
# Release #
|
||||
##################################################
|
||||
.PHONY: release
|
||||
release: manifests kustomize set-version
|
||||
release: manifests kustomize set-version ## Produce new KEDA release in keda-$(VERSION).yaml file.
|
||||
cd config/manager && \
|
||||
$(KUSTOMIZE) edit set image ghcr.io/kedacore/keda=${IMAGE_CONTROLLER}
|
||||
cd config/metrics-server && \
|
||||
|
@ -104,26 +174,18 @@ set-version:
|
|||
rm -rf ./version/version.go.out
|
||||
|
||||
##################################################
|
||||
# RUN / (UN)INSTALL / DEPLOY #
|
||||
# Deployment #
|
||||
##################################################
|
||||
# Run against the configured Kubernetes cluster in ~/.kube/config
|
||||
.PHONY: run
|
||||
run: generate
|
||||
WATCH_NAMESPACE="" go run -ldflags $(GO_LDFLAGS) ./main.go $(ARGS)
|
||||
|
||||
# Install CRDs into a cluster
|
||||
.PHONY: install
|
||||
install: manifests kustomize
|
||||
##@ Deployment
|
||||
|
||||
install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config.
|
||||
$(KUSTOMIZE) build config/crd | kubectl apply -f -
|
||||
|
||||
# Uninstall CRDs from a cluster
|
||||
.PHONY: uninstall
|
||||
uninstall: manifests kustomize
|
||||
uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config.
|
||||
$(KUSTOMIZE) build config/crd | kubectl delete -f -
|
||||
|
||||
# Deploy controller in the configured Kubernetes cluster in ~/.kube/config
|
||||
.PHONY: deploy
|
||||
deploy: manifests kustomize
|
||||
deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config.
|
||||
cd config/manager && \
|
||||
$(KUSTOMIZE) edit set image ghcr.io/kedacore/keda=${IMAGE_CONTROLLER}
|
||||
cd config/metrics-server && \
|
||||
|
@ -134,151 +196,57 @@ deploy: manifests kustomize
|
|||
rm -rf config/default/kustomize-config/metadataLabelTransformer.yaml.out
|
||||
$(KUSTOMIZE) build config/default | kubectl apply -f -
|
||||
|
||||
# Undeploy controller
|
||||
.PHONY: undeploy
|
||||
undeploy:
|
||||
undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config.
|
||||
$(KUSTOMIZE) build config/default | kubectl delete -f -
|
||||
|
||||
##################################################
|
||||
# Build #
|
||||
##################################################
|
||||
.PHONY: build
|
||||
build: manifests set-version manager adapter
|
||||
|
||||
# Build the docker image
|
||||
docker-build:
|
||||
docker build . -t ${IMAGE_CONTROLLER} --build-arg BUILD_VERSION=${VERSION} --build-arg GIT_VERSION=${GIT_VERSION} --build-arg GIT_COMMIT=${GIT_COMMIT}
|
||||
docker build -f Dockerfile.adapter -t ${IMAGE_ADAPTER} . --build-arg BUILD_VERSION=${VERSION} --build-arg GIT_VERSION=${GIT_VERSION} --build-arg GIT_COMMIT=${GIT_COMMIT}
|
||||
CONTROLLER_GEN = $(shell pwd)/bin/controller-gen
|
||||
controller-gen: ## Download controller-gen locally if necessary.
|
||||
$(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen@v0.6.1)
|
||||
|
||||
# Build KEDA Operator binary
|
||||
.PHONY: manager
|
||||
manager: manager-dockerfile gofmt govet
|
||||
KUSTOMIZE = $(shell pwd)/bin/kustomize
|
||||
kustomize: ## Download kustomize locally if necessary.
|
||||
$(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v3@v3.8.7)
|
||||
|
||||
# Build the manager inside the Dockerfile. This elides
|
||||
# the gofmt and govet commands. Since code quality checks
|
||||
# are already in CI, we don't need to run them every
|
||||
# time we build the image
|
||||
.PHONY: manager-dockerfile
|
||||
manager-dockerfile: generate
|
||||
${GO_BUILD_VARS} go build -ldflags $(GO_LDFLAGS) -o bin/keda main.go
|
||||
ENVTEST = $(shell pwd)/bin/setup-envtest
|
||||
envtest: ## Download envtest-setup locally if necessary.
|
||||
$(call go-get-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest@latest)
|
||||
|
||||
# Build KEDA Metrics Server Adapter binary
|
||||
.PHONY: adapter
|
||||
adapter: adapter-dockerfile gofmt govet
|
||||
|
||||
# Build the adapter inside the Dockerfile. This elides
|
||||
# the gofmt and govet commands. Since code quality checks
|
||||
# are already in CI, we don't need to run them every
|
||||
# time we build the image
|
||||
.PHONY: adapter-dockerfile
|
||||
adapter-dockerfile: generate adapter/generated/openapi/zz_generated.openapi.go
|
||||
${GO_BUILD_VARS} go build -ldflags $(GO_LDFLAGS) -o bin/keda-adapter adapter/main.go
|
||||
|
||||
# Generate manifests e.g. CRD, RBAC etc.
|
||||
.PHONY: manifests
|
||||
manifests: controller-gen
|
||||
$(CONTROLLER_GEN) crd:crdVersions=v1 rbac:roleName=keda-operator paths="./..." output:crd:artifacts:config=config/crd/bases
|
||||
# withTriggers is only used for duck typing so we only need the deepcopy methods
|
||||
# However operator-sdk generate doesn't appear to have an option for that
|
||||
# until this issue is fixed: https://github.com/kubernetes-sigs/controller-tools/issues/398
|
||||
rm config/crd/bases/keda.sh_withtriggers.yaml
|
||||
|
||||
# Generate code (API)
|
||||
.PHONY: generate
|
||||
generate: controller-gen
|
||||
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
|
||||
|
||||
# Generate OpenAPI for Metrics Adapter
|
||||
adapter/generated/openapi/zz_generated.openapi.go: go.mod go.sum
|
||||
@OPENAPI_PATH=`go list -mod=readonly -m -f '{{.Dir}}' k8s.io/kube-openapi`; \
|
||||
go run $${OPENAPI_PATH}/cmd/openapi-gen/openapi-gen.go --logtostderr \
|
||||
-i k8s.io/metrics/pkg/apis/custom_metrics,k8s.io/metrics/pkg/apis/custom_metrics/v1beta1,k8s.io/metrics/pkg/apis/custom_metrics/v1beta2,k8s.io/metrics/pkg/apis/external_metrics,k8s.io/metrics/pkg/apis/external_metrics/v1beta1,k8s.io/metrics/pkg/apis/metrics,k8s.io/metrics/pkg/apis/metrics/v1beta1,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/apimachinery/pkg/api/resource,k8s.io/apimachinery/pkg/version,k8s.io/api/core/v1 \
|
||||
--build-tag autogenerated \
|
||||
-h ./hack/boilerplate.go.txt \
|
||||
-p ./adapter/generated/openapi \
|
||||
-O zz_generated.openapi \
|
||||
-o ./ \
|
||||
-r /dev/null
|
||||
|
||||
# find or download controller-gen
|
||||
# download controller-gen if necessary
|
||||
.PHONY: controller-gen
|
||||
controller-gen:
|
||||
ifeq (, $(shell which controller-gen))
|
||||
@{ \
|
||||
cd / ;\
|
||||
GO111MODULE=on go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.3.0 ;\
|
||||
}
|
||||
CONTROLLER_GEN=$(GOBIN)/controller-gen
|
||||
else
|
||||
CONTROLLER_GEN=$(shell which controller-gen)
|
||||
endif
|
||||
|
||||
# find or download kustomize
|
||||
.PHONY: kustomize
|
||||
kustomize:
|
||||
ifeq (, $(shell which kustomize))
|
||||
@{ \
|
||||
cd / ;\
|
||||
GO111MODULE=on go get sigs.k8s.io/kustomize/kustomize/v3@v3.5.4 ;\
|
||||
}
|
||||
KUSTOMIZE=$(GOBIN)/kustomize
|
||||
else
|
||||
KUSTOMIZE=$(shell which kustomize)
|
||||
endif
|
||||
|
||||
# Generate Liiklus proto
|
||||
pkg/scalers/liiklus/LiiklusService.pb.go: hack/LiiklusService.proto
|
||||
protoc -I hack/ hack/LiiklusService.proto --go_out=plugins=grpc:pkg/scalers/liiklus
|
||||
|
||||
pkg/scalers/liiklus/mocks/mock_liiklus.go: pkg/scalers/liiklus/LiiklusService.pb.go
|
||||
mockgen github.com/kedacore/keda/pkg/scalers/liiklus LiiklusServiceClient > pkg/scalers/liiklus/mocks/mock_liiklus.go
|
||||
|
||||
# Run go fmt against code
|
||||
.PHONY: gofmt
|
||||
gofmt:
|
||||
gofmt -l -w -s .
|
||||
|
||||
# Run go vet against code
|
||||
.PHONY: govet
|
||||
govet:
|
||||
go vet ./...
|
||||
|
||||
# Run golangci against code
|
||||
.PHONY: golangci
|
||||
golangci:
|
||||
golangci-lint run
|
||||
# go-get-tool will 'go get' any package $2 and install it to $1.
|
||||
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
|
||||
define go-get-tool
|
||||
@[ -f $(1) ] || { \
|
||||
set -e ;\
|
||||
TMP_DIR=$$(mktemp -d) ;\
|
||||
cd $$TMP_DIR ;\
|
||||
go mod init tmp ;\
|
||||
echo "Downloading $(2)" ;\
|
||||
GOBIN=$(PROJECT_DIR)/bin go get $(2) ;\
|
||||
rm -rf $$TMP_DIR ;\
|
||||
}
|
||||
endef
|
||||
|
||||
##################################################
|
||||
# Clientset #
|
||||
# General #
|
||||
##################################################
|
||||
# Kubebuilder project layout has API under 'api/v1alpha1'
|
||||
# client-go codegen expects group name (keda) in the path ie. 'api/keda/v1alpha1'
|
||||
# Because there's no way how to modify any of these settings,
|
||||
# we need to hack things a little bit (use tmp directory 'api/keda/v1alpha1' and replace the name of package)
|
||||
.PHONY: clientset-prepare
|
||||
clientset-prepare:
|
||||
go mod vendor
|
||||
rm -rf api/keda
|
||||
mkdir api/keda
|
||||
cp -r api/v1alpha1 api/keda/v1alpha1
|
||||
|
||||
.PHONY: clientset-verify
|
||||
clientset-verify: clientset-prepare
|
||||
./hack/verify-codegen.sh
|
||||
rm -rf api/keda
|
||||
rm -rf vendor
|
||||
##@ General
|
||||
|
||||
.PHONY: clientset-generate
|
||||
clientset-generate: clientset-prepare
|
||||
./hack/update-codegen.sh
|
||||
rm -rf api/keda
|
||||
rm -rf vendor
|
||||
# The help target prints out all targets with their descriptions organized
|
||||
# beneath their categories. The categories are represented by '##@' and the
|
||||
# target descriptions by '##'. The awk commands is responsible for reading the
|
||||
# entire set of makefiles included in this invocation, looking for lines of the
|
||||
# file as xyz: ## something, and then pretty-format the target and help. Then,
|
||||
# if there's a line with ##@ something, that gets pretty-printed as a category.
|
||||
# More info on the usage of ANSI control characters for terminal formatting:
|
||||
# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
|
||||
# More info on the awk command:
|
||||
# http://linuxcommand.org/lc3_adv_awk.php
|
||||
|
||||
help: ## Display this help.
|
||||
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
|
||||
|
||||
##################################################
|
||||
# Build Tools Image #
|
||||
##################################################
|
||||
.PHONY: publish-build-tools
|
||||
publish-build-tools:
|
||||
publish-build-tools: ## Publish build-tools image
|
||||
docker build -f tools/build-tools.Dockerfile -t $(IMAGE_BUILD_TOOLS) .
|
||||
docker push $(IMAGE_BUILD_TOOLS)
|
||||
|
|
42
PROJECT
42
PROJECT
|
@ -1,14 +1,44 @@
|
|||
domain: keda.sh
|
||||
layout: go.kubebuilder.io/v2
|
||||
layout:
|
||||
- go.kubebuilder.io/v3
|
||||
multigroup: true
|
||||
projectName: keda
|
||||
repo: github.com/kedacore/keda
|
||||
resources:
|
||||
- group: keda.sh
|
||||
- api:
|
||||
crdVersion: v1
|
||||
namespaced: true
|
||||
controller: true
|
||||
domain: keda.sh
|
||||
group: keda
|
||||
kind: ScaledObject
|
||||
path: github.com/kedacore/keda/v2/apis/keda/v1alpha1
|
||||
version: v1alpha1
|
||||
- group: keda.sh
|
||||
- api:
|
||||
crdVersion: v1
|
||||
namespaced: true
|
||||
controller: true
|
||||
domain: keda.sh
|
||||
group: keda
|
||||
kind: ScaledJob
|
||||
path: github.com/kedacore/keda/v2/apis/keda/v1alpha1
|
||||
version: v1alpha1
|
||||
version: 3-alpha
|
||||
plugins:
|
||||
go.sdk.operatorframework.io/v2-alpha: {}
|
||||
- api:
|
||||
crdVersion: v1
|
||||
namespaced: true
|
||||
controller: true
|
||||
domain: keda.sh
|
||||
group: keda
|
||||
kind: TriggerAuthentication
|
||||
path: github.com/kedacore/keda/v2/apis/keda/v1alpha1
|
||||
version: v1alpha1
|
||||
- api:
|
||||
crdVersion: v1
|
||||
namespaced: true
|
||||
controller: true
|
||||
domain: keda.sh
|
||||
group: keda
|
||||
kind: ClusterTriggerAuthentication
|
||||
path: github.com/kedacore/keda/v2/apis/keda/v1alpha1
|
||||
version: v1alpha1
|
||||
version: "3"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// +build !autogenerated
|
||||
|
||||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -24,10 +24,10 @@ limitations under the License.
|
|||
package openapi
|
||||
|
||||
import (
|
||||
spec "github.com/go-openapi/spec"
|
||||
resource "k8s.io/apimachinery/pkg/api/resource"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
common "k8s.io/kube-openapi/pkg/common"
|
||||
spec "k8s.io/kube-openapi/pkg/validation/spec"
|
||||
)
|
||||
|
||||
func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition {
|
||||
|
@ -81,7 +81,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
|
|||
"k8s.io/api/core/v1.EnvVarSource": schema_k8sio_api_core_v1_EnvVarSource(ref),
|
||||
"k8s.io/api/core/v1.EphemeralContainer": schema_k8sio_api_core_v1_EphemeralContainer(ref),
|
||||
"k8s.io/api/core/v1.EphemeralContainerCommon": schema_k8sio_api_core_v1_EphemeralContainerCommon(ref),
|
||||
"k8s.io/api/core/v1.EphemeralContainers": schema_k8sio_api_core_v1_EphemeralContainers(ref),
|
||||
"k8s.io/api/core/v1.EphemeralVolumeSource": schema_k8sio_api_core_v1_EphemeralVolumeSource(ref),
|
||||
"k8s.io/api/core/v1.Event": schema_k8sio_api_core_v1_Event(ref),
|
||||
"k8s.io/api/core/v1.EventList": schema_k8sio_api_core_v1_EventList(ref),
|
||||
|
@ -246,11 +245,11 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
|
|||
"k8s.io/apimachinery/pkg/apis/meta/v1.APIResource": schema_pkg_apis_meta_v1_APIResource(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.APIResourceList": schema_pkg_apis_meta_v1_APIResourceList(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.APIVersions": schema_pkg_apis_meta_v1_APIVersions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.ApplyOptions": schema_pkg_apis_meta_v1_ApplyOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.Condition": schema_pkg_apis_meta_v1_Condition(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.CreateOptions": schema_pkg_apis_meta_v1_CreateOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.DeleteOptions": schema_pkg_apis_meta_v1_DeleteOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.Duration": schema_pkg_apis_meta_v1_Duration(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.ExportOptions": schema_pkg_apis_meta_v1_ExportOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.FieldsV1": schema_pkg_apis_meta_v1_FieldsV1(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GetOptions": schema_pkg_apis_meta_v1_GetOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GroupKind": schema_pkg_apis_meta_v1_GroupKind(ref),
|
||||
|
@ -1233,7 +1232,7 @@ func schema_k8sio_api_core_v1_ConfigMap(ref common.ReferenceCallback) common.Ope
|
|||
},
|
||||
"immutable": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil. This is a beta field enabled by ImmutableEphemeralVolumes feature gate.",
|
||||
Description: "Immutable, if set to true, ensures that data stored in the ConfigMap cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil.",
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
|
@ -1336,6 +1335,11 @@ func schema_k8sio_api_core_v1_ConfigMapKeySelector(ref common.ReferenceCallback)
|
|||
},
|
||||
Required: []string{"key"},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -1395,7 +1399,7 @@ func schema_k8sio_api_core_v1_ConfigMapNodeConfigSource(ref common.ReferenceCall
|
|||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.",
|
||||
Description: "ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node. This API is deprecated since 1.22: https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration",
|
||||
Type: []string{"object"},
|
||||
Properties: map[string]spec.Schema{
|
||||
"namespace": {
|
||||
|
@ -1560,7 +1564,7 @@ func schema_k8sio_api_core_v1_Container(ref common.ReferenceCallback) common.Ope
|
|||
},
|
||||
"command": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Description: "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -1575,7 +1579,7 @@ func schema_k8sio_api_core_v1_Container(ref common.ReferenceCallback) common.Ope
|
|||
},
|
||||
"args": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Description: "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -1656,7 +1660,7 @@ func schema_k8sio_api_core_v1_Container(ref common.ReferenceCallback) common.Ope
|
|||
},
|
||||
"resources": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/",
|
||||
Description: "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
|
||||
Default: map[string]interface{}{},
|
||||
Ref: ref("k8s.io/api/core/v1.ResourceRequirements"),
|
||||
},
|
||||
|
@ -1748,7 +1752,7 @@ func schema_k8sio_api_core_v1_Container(ref common.ReferenceCallback) common.Ope
|
|||
},
|
||||
"securityContext": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/",
|
||||
Description: "SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/",
|
||||
Ref: ref("k8s.io/api/core/v1.SecurityContext"),
|
||||
},
|
||||
},
|
||||
|
@ -1812,7 +1816,6 @@ func schema_k8sio_api_core_v1_ContainerImage(ref common.ReferenceCallback) commo
|
|||
},
|
||||
},
|
||||
},
|
||||
Required: []string{"names"},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -2297,6 +2300,11 @@ func schema_k8sio_api_core_v1_EndpointAddress(ref common.ReferenceCallback) comm
|
|||
},
|
||||
Required: []string{"ip"},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
Dependencies: []string{
|
||||
"k8s.io/api/core/v1.ObjectReference"},
|
||||
|
@ -2334,7 +2342,7 @@ func schema_k8sio_api_core_v1_EndpointPort(ref common.ReferenceCallback) common.
|
|||
},
|
||||
"appProtocol": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol. This is a beta field that is guarded by the ServiceAppProtocol feature gate and enabled by default.",
|
||||
Description: "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
|
@ -2342,6 +2350,11 @@ func schema_k8sio_api_core_v1_EndpointPort(ref common.ReferenceCallback) common.
|
|||
},
|
||||
Required: []string{"port"},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -2555,7 +2568,7 @@ func schema_k8sio_api_core_v1_EnvVar(ref common.ReferenceCallback) common.OpenAP
|
|||
},
|
||||
"value": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".",
|
||||
Description: "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
|
@ -2638,7 +2651,7 @@ func schema_k8sio_api_core_v1_EphemeralContainer(ref common.ReferenceCallback) c
|
|||
},
|
||||
"command": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Description: "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -2653,7 +2666,7 @@ func schema_k8sio_api_core_v1_EphemeralContainer(ref common.ReferenceCallback) c
|
|||
},
|
||||
"args": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Description: "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -2815,7 +2828,7 @@ func schema_k8sio_api_core_v1_EphemeralContainer(ref common.ReferenceCallback) c
|
|||
},
|
||||
"securityContext": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "SecurityContext is not allowed for ephemeral containers.",
|
||||
Description: "Optional: SecurityContext defines the security options the ephemeral container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.",
|
||||
Ref: ref("k8s.io/api/core/v1.SecurityContext"),
|
||||
},
|
||||
},
|
||||
|
@ -2880,7 +2893,7 @@ func schema_k8sio_api_core_v1_EphemeralContainerCommon(ref common.ReferenceCallb
|
|||
},
|
||||
"command": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Description: "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -2895,7 +2908,7 @@ func schema_k8sio_api_core_v1_EphemeralContainerCommon(ref common.ReferenceCallb
|
|||
},
|
||||
"args": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Description: "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -3057,7 +3070,7 @@ func schema_k8sio_api_core_v1_EphemeralContainerCommon(ref common.ReferenceCallb
|
|||
},
|
||||
"securityContext": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "SecurityContext is not allowed for ephemeral containers.",
|
||||
Description: "Optional: SecurityContext defines the security options the ephemeral container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.",
|
||||
Ref: ref("k8s.io/api/core/v1.SecurityContext"),
|
||||
},
|
||||
},
|
||||
|
@ -3091,62 +3104,6 @@ func schema_k8sio_api_core_v1_EphemeralContainerCommon(ref common.ReferenceCallb
|
|||
}
|
||||
}
|
||||
|
||||
func schema_k8sio_api_core_v1_EphemeralContainers(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "A list of ephemeral containers used with the Pod ephemeralcontainers subresource.",
|
||||
Type: []string{"object"},
|
||||
Properties: map[string]spec.Schema{
|
||||
"kind": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"apiVersion": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
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",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"metadata": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Default: map[string]interface{}{},
|
||||
Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"),
|
||||
},
|
||||
},
|
||||
"ephemeralContainers": {
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-patch-merge-key": "name",
|
||||
"x-kubernetes-patch-strategy": "merge",
|
||||
},
|
||||
},
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "A list of ephemeral containers associated with this pod. New ephemeral containers may be appended to this list, but existing ephemeral containers may not be removed or modified.",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Default: map[string]interface{}{},
|
||||
Ref: ref("k8s.io/api/core/v1.EphemeralContainer"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Required: []string{"ephemeralContainers"},
|
||||
},
|
||||
},
|
||||
Dependencies: []string{
|
||||
"k8s.io/api/core/v1.EphemeralContainer", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
|
||||
}
|
||||
}
|
||||
|
||||
func schema_k8sio_api_core_v1_EphemeralVolumeSource(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
|
@ -3160,13 +3117,6 @@ func schema_k8sio_api_core_v1_EphemeralVolumeSource(ref common.ReferenceCallback
|
|||
Ref: ref("k8s.io/api/core/v1.PersistentVolumeClaimTemplate"),
|
||||
},
|
||||
},
|
||||
"readOnly": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Specifies a read-only configuration for the volume. Defaults to false (read/write).",
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -4443,7 +4393,7 @@ func schema_k8sio_api_core_v1_LimitRangeList(ref common.ReferenceCallback) commo
|
|||
},
|
||||
"items": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/",
|
||||
Description: "Items is a list of LimitRange objects. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -4638,6 +4588,11 @@ func schema_k8sio_api_core_v1_LocalObjectReference(ref common.ReferenceCallback)
|
|||
},
|
||||
},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -5108,7 +5063,7 @@ func schema_k8sio_api_core_v1_NodeConfigSource(ref common.ReferenceCallback) com
|
|||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.",
|
||||
Description: "NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil. This API is deprecated since 1.22",
|
||||
Type: []string{"object"},
|
||||
Properties: map[string]spec.Schema{
|
||||
"configMap": {
|
||||
|
@ -5327,6 +5282,11 @@ func schema_k8sio_api_core_v1_NodeSelector(ref common.ReferenceCallback) common.
|
|||
},
|
||||
Required: []string{"nodeSelectorTerms"},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
Dependencies: []string{
|
||||
"k8s.io/api/core/v1.NodeSelectorTerm"},
|
||||
|
@ -5415,6 +5375,11 @@ func schema_k8sio_api_core_v1_NodeSelectorTerm(ref common.ReferenceCallback) com
|
|||
},
|
||||
},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
Dependencies: []string{
|
||||
"k8s.io/api/core/v1.NodeSelectorRequirement"},
|
||||
|
@ -5485,7 +5450,7 @@ func schema_k8sio_api_core_v1_NodeSpec(ref common.ReferenceCallback) common.Open
|
|||
},
|
||||
"configSource": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "If specified, the source to get node configuration from The DynamicKubeletConfig feature gate must be enabled for the Kubelet to use this field",
|
||||
Description: "Deprecated. If specified, the source of the node's configuration. The DynamicKubeletConfig feature gate must be enabled for the Kubelet to use this field. This field is deprecated as of 1.22: https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration",
|
||||
Ref: ref("k8s.io/api/core/v1.NodeConfigSource"),
|
||||
},
|
||||
},
|
||||
|
@ -5778,6 +5743,11 @@ func schema_k8sio_api_core_v1_ObjectFieldSelector(ref common.ReferenceCallback)
|
|||
},
|
||||
Required: []string{"fieldPath"},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -5840,6 +5810,11 @@ func schema_k8sio_api_core_v1_ObjectReference(ref common.ReferenceCallback) comm
|
|||
},
|
||||
},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -6111,7 +6086,13 @@ func schema_k8sio_api_core_v1_PersistentVolumeClaimSpec(ref common.ReferenceCall
|
|||
},
|
||||
"dataSource": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source.",
|
||||
Description: "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field.",
|
||||
Ref: ref("k8s.io/api/core/v1.TypedLocalObjectReference"),
|
||||
},
|
||||
},
|
||||
"dataSourceRef": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef\n allows any non-core object, as well as PersistentVolumeClaim objects.\n* While DataSource ignores disallowed values (dropping them), DataSourceRef\n preserves all values, and generates an error if a disallowed value is\n specified.\n(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled.",
|
||||
Ref: ref("k8s.io/api/core/v1.TypedLocalObjectReference"),
|
||||
},
|
||||
},
|
||||
|
@ -6848,7 +6829,7 @@ func schema_k8sio_api_core_v1_PodAffinityTerm(ref common.ReferenceCallback) comm
|
|||
},
|
||||
"namespaces": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means \"this pod's namespace\"",
|
||||
Description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -6869,6 +6850,12 @@ func schema_k8sio_api_core_v1_PodAffinityTerm(ref common.ReferenceCallback) comm
|
|||
Format: "",
|
||||
},
|
||||
},
|
||||
"namespaceSelector": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled.",
|
||||
Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"),
|
||||
},
|
||||
},
|
||||
},
|
||||
Required: []string{"topologyKey"},
|
||||
},
|
||||
|
@ -7680,7 +7667,7 @@ func schema_k8sio_api_core_v1_PodSpec(ref common.ReferenceCallback) common.OpenA
|
|||
},
|
||||
"terminationGracePeriodSeconds": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.",
|
||||
Description: "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.",
|
||||
Type: []string{"integer"},
|
||||
Format: "int64",
|
||||
},
|
||||
|
@ -7700,6 +7687,11 @@ func schema_k8sio_api_core_v1_PodSpec(ref common.ReferenceCallback) common.OpenA
|
|||
},
|
||||
},
|
||||
"nodeSelector": {
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "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/",
|
||||
Type: []string{"object"},
|
||||
|
@ -7880,7 +7872,7 @@ func schema_k8sio_api_core_v1_PodSpec(ref common.ReferenceCallback) common.OpenA
|
|||
},
|
||||
"readinessGates": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \"True\" More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md",
|
||||
Description: "If specified, all readiness gates will be evaluated for pod readiness. A pod is ready when all its containers are ready AND all conditions specified in the readiness gates have status equal to \"True\" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -7894,7 +7886,7 @@ func schema_k8sio_api_core_v1_PodSpec(ref common.ReferenceCallback) common.OpenA
|
|||
},
|
||||
"runtimeClassName": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md This is a beta feature as of Kubernetes v1.14.",
|
||||
Description: "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run. If unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an empty definition that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class This is a beta feature as of Kubernetes v1.14.",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
|
@ -7915,7 +7907,7 @@ func schema_k8sio_api_core_v1_PodSpec(ref common.ReferenceCallback) common.OpenA
|
|||
},
|
||||
"overhead": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.",
|
||||
Description: "Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md This field is beta-level as of Kubernetes v1.18, and is only honored by servers that enable the PodOverhead feature.",
|
||||
Type: []string{"object"},
|
||||
AdditionalProperties: &spec.SchemaOrBool{
|
||||
Allows: true,
|
||||
|
@ -8494,6 +8486,13 @@ func schema_k8sio_api_core_v1_Probe(ref common.ReferenceCallback) common.OpenAPI
|
|||
Format: "int32",
|
||||
},
|
||||
},
|
||||
"terminationGracePeriodSeconds": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.",
|
||||
Type: []string{"integer"},
|
||||
Format: "int64",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -8984,6 +8983,11 @@ func schema_k8sio_api_core_v1_ReplicationControllerSpec(ref common.ReferenceCall
|
|||
},
|
||||
},
|
||||
"selector": {
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Selector is a label query over pods that should match the Replicas count. If Selector is empty, it is defaulted to the labels present on the Pod template. Label keys and values that must match in order to be controlled by this replication controller, if empty defaulted to labels on Pod template. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors",
|
||||
Type: []string{"object"},
|
||||
|
@ -9117,6 +9121,11 @@ func schema_k8sio_api_core_v1_ResourceFieldSelector(ref common.ReferenceCallback
|
|||
},
|
||||
Required: []string{"resource"},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
Dependencies: []string{
|
||||
"k8s.io/apimachinery/pkg/api/resource.Quantity"},
|
||||
|
@ -9329,7 +9338,7 @@ func schema_k8sio_api_core_v1_ResourceRequirements(ref common.ReferenceCallback)
|
|||
Properties: map[string]spec.Schema{
|
||||
"limits": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/",
|
||||
Description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
|
||||
Type: []string{"object"},
|
||||
AdditionalProperties: &spec.SchemaOrBool{
|
||||
Allows: true,
|
||||
|
@ -9344,7 +9353,7 @@ func schema_k8sio_api_core_v1_ResourceRequirements(ref common.ReferenceCallback)
|
|||
},
|
||||
"requests": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/",
|
||||
Description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
|
||||
Type: []string{"object"},
|
||||
AdditionalProperties: &spec.SchemaOrBool{
|
||||
Allows: true,
|
||||
|
@ -9603,6 +9612,11 @@ func schema_k8sio_api_core_v1_ScopeSelector(ref common.ReferenceCallback) common
|
|||
},
|
||||
},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
Dependencies: []string{
|
||||
"k8s.io/api/core/v1.ScopedResourceSelectorRequirement"},
|
||||
|
@ -9725,7 +9739,7 @@ func schema_k8sio_api_core_v1_Secret(ref common.ReferenceCallback) common.OpenAP
|
|||
},
|
||||
"immutable": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil. This is a beta field enabled by ImmutableEphemeralVolumes feature gate.",
|
||||
Description: "Immutable, if set to true, ensures that data stored in the Secret cannot be updated (only object metadata can be modified). If not set to true, the field can be modified at any time. Defaulted to nil.",
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
|
@ -9747,7 +9761,7 @@ func schema_k8sio_api_core_v1_Secret(ref common.ReferenceCallback) common.OpenAP
|
|||
},
|
||||
"stringData": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "stringData allows specifying non-binary secret data in string form. It is provided as a write-only convenience method. All keys and values are merged into the data field on write, overwriting any existing values. It is never output when reading from the API.",
|
||||
Description: "stringData allows specifying non-binary secret data in string form. It is provided as a write-only input field for convenience. All keys and values are merged into the data field on write, overwriting any existing values. The stringData field is never output when reading from the API.",
|
||||
Type: []string{"object"},
|
||||
AdditionalProperties: &spec.SchemaOrBool{
|
||||
Allows: true,
|
||||
|
@ -9835,6 +9849,11 @@ func schema_k8sio_api_core_v1_SecretKeySelector(ref common.ReferenceCallback) co
|
|||
},
|
||||
Required: []string{"key"},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -9956,6 +9975,11 @@ func schema_k8sio_api_core_v1_SecretReference(ref common.ReferenceCallback) comm
|
|||
},
|
||||
},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -10423,7 +10447,7 @@ func schema_k8sio_api_core_v1_ServicePort(ref common.ReferenceCallback) common.O
|
|||
},
|
||||
"appProtocol": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol. This is a beta field that is guarded by the ServiceAppProtocol feature gate and enabled by default.",
|
||||
Description: "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
|
@ -10526,6 +10550,11 @@ func schema_k8sio_api_core_v1_ServiceSpec(ref common.ReferenceCallback) common.O
|
|||
},
|
||||
},
|
||||
"selector": {
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Route service traffic to pods with label keys and values matching this selector. If empty or not present, the service is assumed to have an external process managing its endpoints, which Kubernetes will not modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/",
|
||||
Type: []string{"object"},
|
||||
|
@ -10606,7 +10635,7 @@ func schema_k8sio_api_core_v1_ServiceSpec(ref common.ReferenceCallback) common.O
|
|||
},
|
||||
"loadBalancerSourceRanges": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/",
|
||||
Description: "If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
|
@ -10621,7 +10650,7 @@ func schema_k8sio_api_core_v1_ServiceSpec(ref common.ReferenceCallback) common.O
|
|||
},
|
||||
"externalName": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires Type to be",
|
||||
Description: "externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be \"ExternalName\".",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
|
@ -10653,21 +10682,6 @@ func schema_k8sio_api_core_v1_ServiceSpec(ref common.ReferenceCallback) common.O
|
|||
Ref: ref("k8s.io/api/core/v1.SessionAffinityConfig"),
|
||||
},
|
||||
},
|
||||
"topologyKeys": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "topologyKeys is a preference-order list of topology keys which implementations of services should use to preferentially sort endpoints when accessing this Service, it can not be used at the same time as externalTrafficPolicy=Local. Topology keys must be valid label keys and at most 16 keys may be specified. Endpoints are chosen based on the first topology key with available backends. If this field is specified and all entries have no backends that match the topology of the client, the service has no backends for that client and connections should fail. The special value \"*\" may be used to mean \"any topology\". This catch-all value, if used, only makes sense as the last value in the list. If this is not specified or empty, no topology constraints will be applied. This field is alpha-level and is only honored by servers that enable the ServiceTopology feature.",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Default: "",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"ipFamilies": {
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
|
@ -10697,11 +10711,25 @@ func schema_k8sio_api_core_v1_ServiceSpec(ref common.ReferenceCallback) common.O
|
|||
},
|
||||
"allocateLoadBalancerNodePorts": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. Default is \"true\". It may be set to \"false\" if the cluster load-balancer does not rely on NodePorts. allocateLoadBalancerNodePorts may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. This field is alpha-level and is only honored by servers that enable the ServiceLBNodePortControl feature.",
|
||||
Description: "allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. Default is \"true\". It may be set to \"false\" if the cluster load-balancer does not rely on NodePorts. If the caller requests specific NodePorts (by specifying a value), those requests will be respected, regardless of this field. This field may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. This field is beta-level and is only honored by servers that enable the ServiceLBNodePortControl feature.",
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"loadBalancerClass": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "loadBalancerClass is the class of the load balancer implementation this Service belongs to. If specified, the value of this field must be a label-style identifier, with an optional prefix, e.g. \"internal-vip\" or \"example.com/internal-vip\". Unprefixed names are reserved for end-users. This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load balancer implementation is used, today this is typically done through the cloud provider integration, but should apply for any default implementation. If set, it is assumed that a load balancer implementation is watching for Services with a matching class. Any default load balancer implementation (e.g. cloud providers) should ignore Services that set this field. This field can only be set when creating or updating a Service to type 'LoadBalancer'. Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"internalTrafficPolicy": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "InternalTrafficPolicy specifies if the cluster internal traffic should be routed to all endpoints or node-local endpoints only. \"Cluster\" routes internal traffic to a Service to all endpoints. \"Local\" routes traffic to node-local endpoints only, traffic is dropped if no node-local endpoints are ready. The default value is \"Cluster\".",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -11088,6 +11116,11 @@ func schema_k8sio_api_core_v1_TopologySelectorTerm(ref common.ReferenceCallback)
|
|||
},
|
||||
},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
Dependencies: []string{
|
||||
"k8s.io/api/core/v1.TopologySelectorLabelRequirement"},
|
||||
|
@ -11173,6 +11206,11 @@ func schema_k8sio_api_core_v1_TypedLocalObjectReference(ref common.ReferenceCall
|
|||
},
|
||||
Required: []string{"kind", "name"},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
@ -11362,7 +11400,7 @@ func schema_k8sio_api_core_v1_Volume(ref common.ReferenceCallback) common.OpenAP
|
|||
},
|
||||
"ephemeral": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Ephemeral represents a volume that is handled by a cluster storage driver (Alpha feature). The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.\n\nUse this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity\n tracking are needed,\nc) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\n information on the connection between this volume type\n and PersistentVolumeClaim).\n\nUse PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod.\n\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information.\n\nA pod can use both types of ephemeral volumes and persistent volumes at the same time.",
|
||||
Description: "Ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.\n\nUse this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity\n tracking are needed,\nc) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\n information on the connection between this volume type\n and PersistentVolumeClaim).\n\nUse PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod.\n\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information.\n\nA pod can use both types of ephemeral volumes and persistent volumes at the same time.\n\nThis is a beta feature and only available when the GenericEphemeralVolume feature gate is enabled.",
|
||||
Ref: ref("k8s.io/api/core/v1.EphemeralVolumeSource"),
|
||||
},
|
||||
},
|
||||
|
@ -11700,7 +11738,7 @@ func schema_k8sio_api_core_v1_VolumeSource(ref common.ReferenceCallback) common.
|
|||
},
|
||||
"ephemeral": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Ephemeral represents a volume that is handled by a cluster storage driver (Alpha feature). The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.\n\nUse this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity\n tracking are needed,\nc) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\n information on the connection between this volume type\n and PersistentVolumeClaim).\n\nUse PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod.\n\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information.\n\nA pod can use both types of ephemeral volumes and persistent volumes at the same time.",
|
||||
Description: "Ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.\n\nUse this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity\n tracking are needed,\nc) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\n information on the connection between this volume type\n and PersistentVolumeClaim).\n\nUse PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod.\n\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information.\n\nA pod can use both types of ephemeral volumes and persistent volumes at the same time.\n\nThis is a beta feature and only available when the GenericEphemeralVolume feature gate is enabled.",
|
||||
Ref: ref("k8s.io/api/core/v1.EphemeralVolumeSource"),
|
||||
},
|
||||
},
|
||||
|
@ -11814,6 +11852,13 @@ func schema_k8sio_api_core_v1_WindowsSecurityContextOptions(ref common.Reference
|
|||
Format: "",
|
||||
},
|
||||
},
|
||||
"hostProcess": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true.",
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -12200,6 +12245,65 @@ func schema_pkg_apis_meta_v1_APIVersions(ref common.ReferenceCallback) common.Op
|
|||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_ApplyOptions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "ApplyOptions may be provided when applying an API object. FieldManager is required for apply requests. ApplyOptions is equivalent to PatchOptions. It is provided as a convenience with documentation that speaks specifically to how the options fields relate to apply.",
|
||||
Type: []string{"object"},
|
||||
Properties: map[string]spec.Schema{
|
||||
"kind": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"apiVersion": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
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",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"dryRun": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed",
|
||||
Type: []string{"array"},
|
||||
Items: &spec.SchemaOrArray{
|
||||
Schema: &spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Default: "",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"force": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"fieldManager": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required.",
|
||||
Default: "",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
Required: []string{"force", "fieldManager"},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_Condition(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
|
@ -12394,50 +12498,6 @@ func schema_pkg_apis_meta_v1_Duration(ref common.ReferenceCallback) common.OpenA
|
|||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_ExportOptions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "ExportOptions is the query options to the standard REST get call. Deprecated. Planned for removal in 1.18.",
|
||||
Type: []string{"object"},
|
||||
Properties: map[string]spec.Schema{
|
||||
"kind": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"apiVersion": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
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",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"export": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should this value be exported. Export strips fields that a user can not specify. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"exact": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
Required: []string{"export", "exact"},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_FieldsV1(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
|
@ -12933,7 +12993,7 @@ func schema_pkg_apis_meta_v1_ListOptions(ref common.ReferenceCallback) common.Op
|
|||
},
|
||||
"allowWatchBookmarks": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.",
|
||||
Description: "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored.",
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
|
@ -13026,6 +13086,13 @@ func schema_pkg_apis_meta_v1_ManagedFieldsEntry(ref common.ReferenceCallback) co
|
|||
Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.FieldsV1"),
|
||||
},
|
||||
},
|
||||
"subresource": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -13279,6 +13346,11 @@ func schema_pkg_apis_meta_v1_OwnerReference(ref common.ReferenceCallback) common
|
|||
},
|
||||
Required: []string{"apiVersion", "kind", "name", "uid"},
|
||||
},
|
||||
VendorExtensible: spec.VendorExtensible{
|
||||
Extensions: spec.Extensions{
|
||||
"x-kubernetes-map-type": "atomic",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
|
@ -8,25 +24,24 @@ import (
|
|||
"strconv"
|
||||
"time"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/client-go/tools/record"
|
||||
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
openapinamer "k8s.io/apiserver/pkg/endpoints/openapi"
|
||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||
"k8s.io/client-go/kubernetes/scheme"
|
||||
"k8s.io/client-go/tools/record"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/klog/v2/klogr"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client/config"
|
||||
|
||||
basecmd "github.com/kubernetes-sigs/custom-metrics-apiserver/pkg/cmd"
|
||||
"github.com/kubernetes-sigs/custom-metrics-apiserver/pkg/provider"
|
||||
basecmd "sigs.k8s.io/custom-metrics-apiserver/pkg/cmd"
|
||||
"sigs.k8s.io/custom-metrics-apiserver/pkg/provider"
|
||||
|
||||
generatedopenapi "github.com/kedacore/keda/v2/adapter/generated/openapi"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
prommetrics "github.com/kedacore/keda/v2/pkg/metrics"
|
||||
kedaprovider "github.com/kedacore/keda/v2/pkg/provider"
|
||||
"github.com/kedacore/keda/v2/pkg/scaling"
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
|
@ -1,14 +1,29 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"knative.dev/pkg/apis"
|
||||
"knative.dev/pkg/apis/duck"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
"knative.dev/pkg/apis"
|
||||
"knative.dev/pkg/apis/duck"
|
||||
)
|
||||
|
||||
const (
|
|
@ -2,7 +2,7 @@
|
|||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
|
@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.3.0
|
||||
controller-gen.kubebuilder.io/version: v0.4.1
|
||||
creationTimestamp: null
|
||||
name: clustertriggerauthentications.keda.sh
|
||||
spec:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.3.0
|
||||
controller-gen.kubebuilder.io/version: v0.4.1
|
||||
creationTimestamp: null
|
||||
name: scaledobjects.keda.sh
|
||||
spec:
|
||||
|
|
|
@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1
|
|||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.3.0
|
||||
controller-gen.kubebuilder.io/version: v0.4.1
|
||||
creationTimestamp: null
|
||||
name: triggerauthentications.keda.sh
|
||||
spec:
|
||||
|
|
|
@ -29,7 +29,7 @@ spec:
|
|||
command:
|
||||
- /keda
|
||||
args:
|
||||
- --enable-leader-election
|
||||
- --leader-elect
|
||||
- --zap-log-level=info
|
||||
- --zap-encoder=console
|
||||
imagePullPolicy: Always
|
||||
|
|
|
@ -57,6 +57,12 @@ rules:
|
|||
- jobs
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- coordination.k8s.io
|
||||
resources:
|
||||
- leases
|
||||
verbs:
|
||||
- '*'
|
||||
- apiGroups:
|
||||
- keda.sh
|
||||
resources:
|
||||
|
|
|
@ -1,36 +1,53 @@
|
|||
package controllers
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package keda
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/client-go/tools/record"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/builder"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/log"
|
||||
"sigs.k8s.io/controller-runtime/pkg/predicate"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
)
|
||||
|
||||
// +kubebuilder:rbac:groups=keda.sh,resources=clustertriggerauthentications;clustertriggerauthentications/status,verbs="*"
|
||||
|
||||
// ClusterTriggerAuthenticationReconciler reconciles a ClusterTriggerAuthentication object
|
||||
type ClusterTriggerAuthenticationReconciler struct {
|
||||
Client client.Client
|
||||
Log logr.Logger
|
||||
client.Client
|
||||
Scheme *runtime.Scheme
|
||||
Recorder record.EventRecorder
|
||||
}
|
||||
|
||||
// +kubebuilder:rbac:groups=keda.sh,resources=clustertriggerauthentications;clustertriggerauthentications/status,verbs="*"
|
||||
|
||||
// Reconcile performs reconciliation on the identified TriggerAuthentication resource based on the request information passed, returns the result and an error (if any).
|
||||
func (r *ClusterTriggerAuthenticationReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
|
||||
reqLogger := r.Log.WithValues("ClusterTriggerAuthentication.Namespace", req.Namespace, "ClusterTriggerAuthentication.Name", req.Name)
|
||||
func (r *ClusterTriggerAuthenticationReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
|
||||
reqLogger := log.FromContext(ctx)
|
||||
|
||||
clusterTriggerAuthentication := &kedav1alpha1.ClusterTriggerAuthentication{}
|
||||
err := r.Client.Get(context.TODO(), req.NamespacedName, clusterTriggerAuthentication)
|
||||
err := r.Client.Get(ctx, req.NamespacedName, clusterTriggerAuthentication)
|
||||
if err != nil {
|
||||
if errors.IsNotFound(err) {
|
||||
return ctrl.Result{}, nil
|
||||
|
@ -47,11 +64,10 @@ func (r *ClusterTriggerAuthenticationReconciler) Reconcile(req ctrl.Request) (ct
|
|||
if clusterTriggerAuthentication.ObjectMeta.Generation == 1 {
|
||||
r.Recorder.Event(clusterTriggerAuthentication, corev1.EventTypeNormal, eventreason.ClusterTriggerAuthenticationAdded, "New ClusterTriggerAuthentication configured")
|
||||
}
|
||||
|
||||
return ctrl.Result{}, nil
|
||||
}
|
||||
|
||||
// SetupWithManager initializes the ClusterTriggerAuthenticationReconciler instance and starts a new controller managed by the passed Manager instance.
|
||||
// SetupWithManager sets up the controller with the Manager.
|
||||
func (r *ClusterTriggerAuthenticationReconciler) SetupWithManager(mgr ctrl.Manager) error {
|
||||
return ctrl.NewControllerManagedBy(mgr).
|
||||
For(&kedav1alpha1.ClusterTriggerAuthentication{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
|
|
@ -1,4 +1,20 @@
|
|||
package controllers
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package keda
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
@ -8,14 +24,14 @@ import (
|
|||
"unicode"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
version "github.com/kedacore/keda/v2/version"
|
||||
autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
|
||||
"k8s.io/apimachinery/pkg/api/equality"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedacontrollerutil "github.com/kedacore/keda/v2/controllers/util"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
kedacontrollerutil "github.com/kedacore/keda/v2/controllers/keda/util"
|
||||
version "github.com/kedacore/keda/v2/version"
|
||||
)
|
||||
|
||||
const (
|
|
@ -1,17 +1,34 @@
|
|||
package controllers
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package keda
|
||||
|
||||
import (
|
||||
"github.com/go-logr/logr"
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/mock/mock_client"
|
||||
mock_scalers "github.com/kedacore/keda/v2/pkg/mock/mock_scaler"
|
||||
"github.com/kedacore/keda/v2/pkg/mock/mock_scaling"
|
||||
kedascalers "github.com/kedacore/keda/v2/pkg/scalers"
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
"k8s.io/api/autoscaling/v2beta2"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
"github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/mock/mock_client"
|
||||
mock_scalers "github.com/kedacore/keda/v2/pkg/mock/mock_scaler"
|
||||
"github.com/kedacore/keda/v2/pkg/mock/mock_scaling"
|
||||
kedascalers "github.com/kedacore/keda/v2/pkg/scalers"
|
||||
)
|
||||
|
||||
var _ = Describe("hpa", func() {
|
|
@ -1,27 +1,42 @@
|
|||
package controllers
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package keda
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
kedacontrollerutil "github.com/kedacore/keda/v2/controllers/util"
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
||||
"k8s.io/client-go/tools/record"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
batchv1 "k8s.io/api/batch/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/client-go/tools/record"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/builder"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/log"
|
||||
"sigs.k8s.io/controller-runtime/pkg/predicate"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
kedacontrollerutil "github.com/kedacore/keda/v2/controllers/keda/util"
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
"github.com/kedacore/keda/v2/pkg/scaling"
|
||||
)
|
||||
|
||||
|
@ -31,7 +46,6 @@ import (
|
|||
// ScaledJobReconciler reconciles a ScaledJob object
|
||||
type ScaledJobReconciler struct {
|
||||
client.Client
|
||||
Log logr.Logger
|
||||
Scheme *runtime.Scheme
|
||||
GlobalHTTPTimeout time.Duration
|
||||
Recorder record.EventRecorder
|
||||
|
@ -50,12 +64,12 @@ func (r *ScaledJobReconciler) SetupWithManager(mgr ctrl.Manager) error {
|
|||
}
|
||||
|
||||
// Reconcile performs reconciliation on the identified ScaledJob resource based on the request information passed, returns the result and an error (if any).
|
||||
func (r *ScaledJobReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
|
||||
reqLogger := r.Log.WithValues("ScaledJob.Namespace", req.Namespace, "ScaledJob.Name", req.Name)
|
||||
func (r *ScaledJobReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
|
||||
reqLogger := log.FromContext(ctx)
|
||||
|
||||
// Fetch the ScaledJob instance
|
||||
scaledJob := &kedav1alpha1.ScaledJob{}
|
||||
err := r.Client.Get(context.TODO(), req.NamespacedName, scaledJob)
|
||||
err := r.Client.Get(ctx, req.NamespacedName, scaledJob)
|
||||
if err != nil {
|
||||
if errors.IsNotFound(err) {
|
||||
// Request object not found, could have been deleted after reconcile request.
|
|
@ -1,15 +1,30 @@
|
|||
package controllers
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package keda
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
"github.com/go-logr/logr"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/controllers/util"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/controllers/keda/util"
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
)
|
||||
|
||||
const (
|
|
@ -1,4 +1,20 @@
|
|||
package controllers
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package keda
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
@ -6,13 +22,10 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/client-go/tools/record"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
autoscalingv1 "k8s.io/api/autoscaling/v1"
|
||||
autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
@ -23,14 +36,17 @@ import (
|
|||
"k8s.io/client-go/dynamic"
|
||||
"k8s.io/client-go/scale"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
"k8s.io/client-go/tools/record"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/builder"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/log"
|
||||
"sigs.k8s.io/controller-runtime/pkg/manager"
|
||||
"sigs.k8s.io/controller-runtime/pkg/predicate"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedacontrollerutil "github.com/kedacore/keda/v2/controllers/util"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
kedacontrollerutil "github.com/kedacore/keda/v2/controllers/keda/util"
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
"github.com/kedacore/keda/v2/pkg/scaling"
|
||||
kedautil "github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
@ -42,10 +58,10 @@ import (
|
|||
// +kubebuilder:rbac:groups="*",resources="*/scale",verbs="*"
|
||||
// +kubebuilder:rbac:groups="*",resources="*",verbs=get
|
||||
// +kubebuilder:rbac:groups="apps",resources=deployments;statefulsets,verbs=list;watch
|
||||
// +kubebuilder:rbac:groups="coordination.k8s.io",resources=leases,verbs="*"
|
||||
|
||||
// ScaledObjectReconciler reconciles a ScaledObject object
|
||||
type ScaledObjectReconciler struct {
|
||||
Log logr.Logger
|
||||
Client client.Client
|
||||
Scheme *runtime.Scheme
|
||||
GlobalHTTPTimeout time.Duration
|
||||
|
@ -71,11 +87,13 @@ func init() {
|
|||
|
||||
// SetupWithManager initializes the ScaledObjectReconciler instance and starts a new controller managed by the passed Manager instance.
|
||||
func (r *ScaledObjectReconciler) SetupWithManager(mgr ctrl.Manager) error {
|
||||
setupLog := log.Log.WithName("setup")
|
||||
|
||||
// create Discovery clientset
|
||||
// TODO If we need to increase the QPS of scaling API calls, copy and tweak this RESTConfig.
|
||||
clientset, err := discovery.NewDiscoveryClientForConfig(mgr.GetConfig())
|
||||
if err != nil {
|
||||
r.Log.Error(err, "Not able to create Discovery clientset")
|
||||
setupLog.Error(err, "Not able to create Discovery clientset")
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -83,9 +101,9 @@ func (r *ScaledObjectReconciler) SetupWithManager(mgr ctrl.Manager) error {
|
|||
version, err := clientset.ServerVersion()
|
||||
if err == nil {
|
||||
r.kubeVersion = kedautil.NewK8sVersion(version)
|
||||
r.Log.Info("Running on Kubernetes "+r.kubeVersion.PrettyVersion, "version", version)
|
||||
setupLog.Info("Running on Kubernetes "+r.kubeVersion.PrettyVersion, "version", version)
|
||||
} else {
|
||||
r.Log.Error(err, "Not able to get Kubernetes version")
|
||||
setupLog.Error(err, "Not able to get Kubernetes version")
|
||||
}
|
||||
|
||||
// Create Scale Client
|
||||
|
@ -116,13 +134,13 @@ func initScaleClient(mgr manager.Manager, clientset *discovery.DiscoveryClient)
|
|||
)
|
||||
}
|
||||
|
||||
// Reconcile performs reconciliation on the identified ScaledObject resource based on the request information passed, returns the result and an error (if any).
|
||||
func (r *ScaledObjectReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
|
||||
reqLogger := r.Log.WithValues("ScaledObject.Namespace", req.Namespace, "ScaledObject.Name", req.Name)
|
||||
// Reconcile performs reconciliation on the identified ScaledObject resource based on the request information passed, returns the result and an error (if any).
|
||||
func (r *ScaledObjectReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
|
||||
reqLogger := log.FromContext(ctx)
|
||||
|
||||
// Fetch the ScaledObject instance
|
||||
scaledObject := &kedav1alpha1.ScaledObject{}
|
||||
err := r.Client.Get(context.TODO(), req.NamespacedName, scaledObject)
|
||||
err := r.Client.Get(ctx, req.NamespacedName, scaledObject)
|
||||
if err != nil {
|
||||
if errors.IsNotFound(err) {
|
||||
// Request object not found, could have been deleted after reconcile request.
|
|
@ -1,4 +1,20 @@
|
|||
package controllers
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package keda
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
@ -15,7 +31,7 @@ import (
|
|||
"k8s.io/apimachinery/pkg/types"
|
||||
"sigs.k8s.io/controller-runtime/pkg/log/zap"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/mock/mock_client"
|
||||
"github.com/kedacore/keda/v2/pkg/mock/mock_scaling"
|
||||
"github.com/kedacore/keda/v2/pkg/scalers"
|
|
@ -1,17 +1,32 @@
|
|||
package controllers
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package keda
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/controllers/util"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/controllers/keda/util"
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
)
|
||||
|
||||
const (
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -14,9 +14,10 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
package controllers
|
||||
package keda
|
||||
|
||||
import (
|
||||
"context"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
|
@ -32,12 +33,10 @@ import (
|
|||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
"sigs.k8s.io/controller-runtime/pkg/log/zap"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
// +kubebuilder:scaffold:imports
|
||||
)
|
||||
|
||||
// TODO add tests for controllers
|
||||
|
||||
// These tests use Ginkgo (BDD-style Go testing framework). Refer to
|
||||
// http://onsi.github.io/ginkgo/ to learn more about Ginkgo.
|
||||
|
||||
|
@ -45,6 +44,9 @@ var cfg *rest.Config
|
|||
var testEnv *envtest.Environment
|
||||
var k8sClient client.Client
|
||||
|
||||
var ctx context.Context
|
||||
var cancel context.CancelFunc
|
||||
|
||||
func TestAPIs(t *testing.T) {
|
||||
RegisterFailHandler(Fail)
|
||||
|
||||
|
@ -58,7 +60,8 @@ var _ = BeforeSuite(func(done Done) {
|
|||
|
||||
By("bootstrapping test environment")
|
||||
testEnv = &envtest.Environment{
|
||||
CRDDirectoryPaths: []string{filepath.Join("..", "config", "crd", "bases")},
|
||||
CRDDirectoryPaths: []string{filepath.Join("..", "..", "config", "crd", "bases")},
|
||||
ErrorIfCRDPathMissing: true,
|
||||
}
|
||||
|
||||
var err error
|
||||
|
@ -71,6 +74,8 @@ var _ = BeforeSuite(func(done Done) {
|
|||
|
||||
// +kubebuilder:scaffold:scheme
|
||||
|
||||
ctx, cancel = context.WithCancel(context.Background())
|
||||
|
||||
k8sManager, err := ctrl.NewManager(cfg, ctrl.Options{
|
||||
Scheme: scheme.Scheme,
|
||||
})
|
||||
|
@ -80,7 +85,6 @@ var _ = BeforeSuite(func(done Done) {
|
|||
Client: k8sManager.GetClient(),
|
||||
Scheme: k8sManager.GetScheme(),
|
||||
Recorder: k8sManager.GetEventRecorderFor("keda-operator"),
|
||||
Log: ctrl.Log.WithName("controllers").WithName("ScaledObject"),
|
||||
}).SetupWithManager(k8sManager)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
|
@ -89,7 +93,7 @@ var _ = BeforeSuite(func(done Done) {
|
|||
Expect(k8sClient).ToNot(BeNil())
|
||||
|
||||
go func() {
|
||||
err = k8sManager.Start(ctrl.SetupSignalHandler())
|
||||
err = k8sManager.Start(ctx)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}()
|
||||
|
||||
|
@ -98,6 +102,10 @@ var _ = BeforeSuite(func(done Done) {
|
|||
|
||||
var _ = AfterSuite(func() {
|
||||
By("tearing down the test environment")
|
||||
|
||||
// stop k8sManager
|
||||
cancel()
|
||||
|
||||
err := testEnv.Stop()
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
})
|
|
@ -1,35 +1,53 @@
|
|||
package controllers
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package keda
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/client-go/tools/record"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/builder"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/log"
|
||||
"sigs.k8s.io/controller-runtime/pkg/predicate"
|
||||
)
|
||||
|
||||
// +kubebuilder:rbac:groups=keda.sh,resources=triggerauthentications;triggerauthentications/status,verbs="*"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/eventreason"
|
||||
)
|
||||
|
||||
// TriggerAuthenticationReconciler reconciles a TriggerAuthentication object
|
||||
type TriggerAuthenticationReconciler struct {
|
||||
Client client.Client
|
||||
Log logr.Logger
|
||||
client.Client
|
||||
Scheme *runtime.Scheme
|
||||
Recorder record.EventRecorder
|
||||
}
|
||||
|
||||
// +kubebuilder:rbac:groups=keda.sh,resources=triggerauthentications;triggerauthentications/status,verbs="*"
|
||||
|
||||
// Reconcile performs reconciliation on the identified TriggerAuthentication resource based on the request information passed, returns the result and an error (if any).
|
||||
func (r *TriggerAuthenticationReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
|
||||
reqLogger := r.Log.WithValues("TriggerAuthentication.Namespace", req.Namespace, "TriggerAuthentication.Name", req.Name)
|
||||
func (r *TriggerAuthenticationReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
|
||||
reqLogger := log.FromContext(ctx)
|
||||
|
||||
triggerAuthentication := &kedav1alpha1.TriggerAuthentication{}
|
||||
err := r.Client.Get(context.TODO(), req.NamespacedName, triggerAuthentication)
|
||||
err := r.Client.Get(ctx, req.NamespacedName, triggerAuthentication)
|
||||
if err != nil {
|
||||
if errors.IsNotFound(err) {
|
||||
return ctrl.Result{}, nil
|
||||
|
@ -50,7 +68,7 @@ func (r *TriggerAuthenticationReconciler) Reconcile(req ctrl.Request) (ctrl.Resu
|
|||
return ctrl.Result{}, nil
|
||||
}
|
||||
|
||||
// SetupWithManager initializes the TriggerAuthenticationReconciler instance and starts a new controller managed by the passed Manager instance.
|
||||
// SetupWithManager sets up the controller with the Manager.
|
||||
func (r *TriggerAuthenticationReconciler) SetupWithManager(mgr ctrl.Manager) error {
|
||||
return ctrl.NewControllerManagedBy(mgr).
|
||||
For(&kedav1alpha1.TriggerAuthentication{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package util
|
||||
|
||||
import (
|
||||
|
@ -5,17 +21,16 @@ import (
|
|||
"fmt"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
runtimeclient "sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
)
|
||||
|
||||
// SetStatusConditions patches given object with passed list of conditions based on the object's type or returns an error.
|
||||
func SetStatusConditions(client runtimeclient.StatusClient, logger logr.Logger, object interface{}, conditions *kedav1alpha1.Conditions) error {
|
||||
var patch runtimeclient.Patch
|
||||
|
||||
runtimeObj := object.(runtime.Object)
|
||||
runtimeObj := object.(runtimeclient.Object)
|
||||
switch obj := runtimeObj.(type) {
|
||||
case *kedav1alpha1.ScaledObject:
|
||||
patch = runtimeclient.MergeFrom(obj.DeepCopy())
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package util
|
||||
|
||||
// Contains checks if the passed string is present in the given slice of strings.
|
||||
func Contains(list []string, s string) bool {
|
||||
for _, v := range list {
|
||||
if v == s {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Remove deletes the passed string from the given slice of strings.
|
||||
func Remove(list []string, s string) []string {
|
||||
for i, v := range list {
|
||||
if v == s {
|
||||
list = append(list[:i], list[i+1:]...)
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
package util
|
||||
|
||||
// Contains checks if the passed string is present in the given slice of strings.
|
||||
func Contains(list []string, s string) bool {
|
||||
for _, v := range list {
|
||||
if v == s {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Remove deletes the passed string from the given slice of strings.
|
||||
func Remove(list []string, s string) []string {
|
||||
for i, v := range list {
|
||||
if v == s {
|
||||
list = append(list[:i], list[i+1:]...)
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
60
go.mod
60
go.mod
|
@ -3,63 +3,55 @@ module github.com/kedacore/keda/v2
|
|||
go 1.16
|
||||
|
||||
require (
|
||||
cloud.google.com/go v0.86.0
|
||||
github.com/Azure/azure-amqp-common-go/v3 v3.1.0
|
||||
github.com/Azure/azure-event-hubs-go/v3 v3.3.10
|
||||
github.com/Azure/azure-sdk-for-go v55.6.0+incompatible
|
||||
github.com/Azure/azure-service-bus-go v0.10.13
|
||||
cloud.google.com/go/monitoring v0.1.0
|
||||
github.com/Azure/azure-amqp-common-go/v3 v3.1.1
|
||||
github.com/Azure/azure-event-hubs-go/v3 v3.3.13
|
||||
github.com/Azure/azure-sdk-for-go v57.0.0+incompatible
|
||||
github.com/Azure/azure-service-bus-go v0.10.16
|
||||
github.com/Azure/azure-storage-blob-go v0.14.0
|
||||
github.com/Azure/azure-storage-queue-go v0.0.0-20191125232315-636801874cdd
|
||||
github.com/Azure/go-autorest/autorest v0.11.19
|
||||
github.com/Azure/go-autorest/autorest v0.11.20
|
||||
github.com/Azure/go-autorest/autorest/azure/auth v0.5.8
|
||||
github.com/Huawei/gophercloud v1.0.21
|
||||
github.com/Shopify/sarama v1.29.1
|
||||
github.com/aws/aws-sdk-go v1.39.4
|
||||
github.com/aws/aws-sdk-go v1.40.34
|
||||
github.com/denisenkom/go-mssqldb v0.10.0
|
||||
github.com/go-logr/logr v0.4.0
|
||||
github.com/go-logr/zapr v0.4.0 // indirect
|
||||
github.com/go-openapi/spec v0.20.3
|
||||
github.com/go-playground/assert/v2 v2.0.1
|
||||
github.com/go-redis/redis v6.15.9+incompatible
|
||||
github.com/go-sql-driver/mysql v1.6.0
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/golang/protobuf v1.5.2
|
||||
github.com/google/go-cmp v0.5.6
|
||||
github.com/hashicorp/vault/api v1.1.0
|
||||
github.com/hashicorp/vault/api v1.1.1
|
||||
github.com/imdario/mergo v0.3.12
|
||||
github.com/influxdata/influxdb-client-go/v2 v2.4.0
|
||||
github.com/kubernetes-sigs/custom-metrics-apiserver v0.0.0-20210706132418-63a83be59f5f
|
||||
github.com/influxdata/influxdb-client-go/v2 v2.5.0
|
||||
github.com/lib/pq v1.10.2
|
||||
github.com/mitchellh/hashstructure v1.1.0
|
||||
github.com/onsi/ginkgo v1.16.4
|
||||
github.com/onsi/gomega v1.14.0
|
||||
github.com/onsi/gomega v1.16.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/prometheus/client_golang v1.11.0
|
||||
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475
|
||||
github.com/robfig/cron/v3 v3.0.1
|
||||
github.com/spf13/afero v1.6.0 // indirect
|
||||
github.com/streadway/amqp v1.0.0
|
||||
github.com/stretchr/testify v1.7.0
|
||||
github.com/tidwall/gjson v1.8.1
|
||||
github.com/xdg/scram v1.0.3
|
||||
go.mongodb.org/mongo-driver v1.5.4
|
||||
google.golang.org/api v0.50.0
|
||||
google.golang.org/genproto v0.0.0-20210708141623-e76da96a951f
|
||||
google.golang.org/grpc v1.39.0
|
||||
k8s.io/api v0.20.8
|
||||
k8s.io/apimachinery v0.20.8
|
||||
k8s.io/apiserver v0.20.8
|
||||
k8s.io/client-go v11.0.1-0.20190805182717-6502b5e7b1b5+incompatible
|
||||
k8s.io/code-generator v0.20.8
|
||||
k8s.io/klog/v2 v2.9.0
|
||||
k8s.io/kube-openapi v0.0.0-20210305164622-f622666832c1
|
||||
k8s.io/metrics v0.20.8
|
||||
knative.dev/pkg v0.0.0-20210708145023-4a3e56dc13b2
|
||||
sigs.k8s.io/controller-runtime v0.6.5
|
||||
go.mongodb.org/mongo-driver v1.7.1
|
||||
google.golang.org/api v0.56.0
|
||||
google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2
|
||||
google.golang.org/grpc v1.40.0
|
||||
k8s.io/api v0.22.1
|
||||
k8s.io/apimachinery v0.22.1
|
||||
k8s.io/apiserver v0.22.1
|
||||
k8s.io/client-go v0.22.1
|
||||
k8s.io/code-generator v0.22.1
|
||||
k8s.io/klog/v2 v2.10.0
|
||||
k8s.io/kube-openapi v0.0.0-20210817084001-7fbd8d59e5b8
|
||||
k8s.io/metrics v0.22.1
|
||||
knative.dev/pkg v0.0.0-20210830224055-82f3a9f1c5bc
|
||||
sigs.k8s.io/controller-runtime v0.10.0
|
||||
sigs.k8s.io/custom-metrics-apiserver v1.22.0
|
||||
)
|
||||
|
||||
replace k8s.io/client-go => k8s.io/client-go v0.20.8
|
||||
|
||||
// adapter uses k8s.io/apiserver/pkg/server, which indirectly uses go.etcd.io/etcd/proxy/grpcproxy.
|
||||
// etcd is not compatible with newer grpc version, see here https://github.com/etcd-io/etcd/issues/12124
|
||||
// so until that is fixed, we will pin the grpc version to v1.29.1
|
||||
replace google.golang.org/grpc => google.golang.org/grpc v1.29.1
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -20,7 +20,7 @@ CODEGEN_OUTPUT_GENERATED="${CODEGEN_OUTPUT_BASE}"/github.com/kedacore/keda/v2/pk
|
|||
# bash "${CODEGEN_PKG}"/generate-groups.sh "deepcopy,client,informer,lister" \
|
||||
# Deepcopy is generated by operator-sdk
|
||||
bash "${CODEGEN_PKG}"/generate-groups.sh "client,informer,lister" \
|
||||
github.com/kedacore/keda/v2/pkg/generated github.com/kedacore/keda/v2/api \
|
||||
github.com/kedacore/keda/v2/pkg/generated github.com/kedacore/keda/v2/apis \
|
||||
keda:v1alpha1 \
|
||||
--go-header-file "${SCRIPT_ROOT}"/hack/boilerplate.go.txt --output-base "${CODEGEN_OUTPUT_BASE}"
|
||||
|
||||
|
@ -31,11 +31,3 @@ if [ -d "${CODEGEN_OUTPUT_GENERATED}" ]; then
|
|||
mv "${CODEGEN_OUTPUT_GENERATED}" "${SCRIPT_ROOT}"/pkg/
|
||||
rm -rf "${SCRIPT_ROOT}"/output
|
||||
fi
|
||||
|
||||
# (Zbynek): Kubebuilder project layout has api under 'api/v1alpha1'
|
||||
# client-go codegen expects group name in the path ie. 'api/keda/v1alpha'
|
||||
# Because there's no way how to modify any of these settings,
|
||||
# we need to hack things a little bit (replace the name of package)
|
||||
find pkg/generated -type f -name "*.go" |\
|
||||
xargs sed -i".out" -e "s#github.com/kedacore/keda/v2/api/keda/v1alpha1#github.com/kedacore/keda/v2/api/v1alpha1#g"
|
||||
find pkg/generated -type f -name "*.go.out" | xargs rm -rf
|
||||
|
|
|
@ -22,13 +22,6 @@ cp -a "${DIFFROOT}"/* "${TMP_DIFFROOT}"
|
|||
|
||||
"${SCRIPT_ROOT}/hack/update-codegen.sh"
|
||||
|
||||
# (Zbynek): Kubebuilder project layout has api under 'api/v1alpha1'
|
||||
# client-go codegen expects group name in the path ie. 'api/keda/v1alpha'
|
||||
# Because there's no way how to modify any of these settings,
|
||||
# we need to hack things a little bit (replace the name of package)
|
||||
find "${DIFFROOT}/generated" -type f -name "*.go" |\
|
||||
xargs sed -i "s#github.com/kedacore/keda/v2/api/keda/v1alpha1#github.com/kedacore/keda/v2/api/v1alpha1#g"
|
||||
|
||||
echo "diffing ${DIFFROOT} against freshly generated codegen"
|
||||
ret=0
|
||||
diff -Naupr "${DIFFROOT}" "${TMP_DIFFROOT}" || ret=$?
|
||||
|
|
65
main.go
65
main.go
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -27,26 +27,27 @@ import (
|
|||
apimachineryruntime "k8s.io/apimachinery/pkg/runtime"
|
||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
|
||||
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
|
||||
_ "k8s.io/client-go/plugin/pkg/client/auth"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/healthz"
|
||||
"sigs.k8s.io/controller-runtime/pkg/log/zap"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/controllers"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
kedacontrollers "github.com/kedacore/keda/v2/controllers/keda"
|
||||
"github.com/kedacore/keda/v2/version"
|
||||
// +kubebuilder:scaffold:imports
|
||||
//+kubebuilder:scaffold:imports
|
||||
)
|
||||
|
||||
var (
|
||||
scheme = apimachineryruntime.NewScheme()
|
||||
scheme = apimachineryruntime.NewScheme()
|
||||
setupLog = ctrl.Log.WithName("setup")
|
||||
)
|
||||
|
||||
func init() {
|
||||
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
|
||||
|
||||
utilruntime.Must(kedav1alpha1.AddToScheme(scheme))
|
||||
// +kubebuilder:scaffold:scheme
|
||||
//+kubebuilder:scaffold:scheme
|
||||
}
|
||||
|
||||
// getWatchNamespace returns the namespace the operator should be watching for changes
|
||||
|
@ -62,19 +63,18 @@ func getWatchNamespace() (string, error) {
|
|||
func main() {
|
||||
var metricsAddr string
|
||||
var enableLeaderElection bool
|
||||
flag.StringVar(&metricsAddr, "metrics-addr", ":8080", "The address the metric endpoint binds to.")
|
||||
flag.BoolVar(&enableLeaderElection, "enable-leader-election", false,
|
||||
var probeAddr string
|
||||
flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metric endpoint binds to.")
|
||||
flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.")
|
||||
flag.BoolVar(&enableLeaderElection, "leader-elect", false,
|
||||
"Enable leader election for controller manager. "+
|
||||
"Enabling this will ensure there is only one active controller manager.")
|
||||
|
||||
// Add the zap logger flag set to the CLI.
|
||||
opts := zap.Options{}
|
||||
opts.BindFlags(flag.CommandLine)
|
||||
|
||||
flag.Parse()
|
||||
|
||||
ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
|
||||
setupLog := ctrl.Log.WithName("setup")
|
||||
|
||||
namespace, err := getWatchNamespace()
|
||||
if err != nil {
|
||||
|
@ -85,8 +85,8 @@ func main() {
|
|||
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
|
||||
Scheme: scheme,
|
||||
MetricsBindAddress: metricsAddr,
|
||||
HealthProbeBindAddress: ":8081",
|
||||
Port: 9443,
|
||||
HealthProbeBindAddress: probeAddr,
|
||||
LeaderElection: enableLeaderElection,
|
||||
LeaderElectionID: "operator.keda.sh",
|
||||
Namespace: namespace,
|
||||
|
@ -96,20 +96,6 @@ func main() {
|
|||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Add readiness probe
|
||||
err = mgr.AddReadyzCheck("ready-ping", healthz.Ping)
|
||||
if err != nil {
|
||||
setupLog.Error(err, "Unable to add a readiness check")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Add liveness probe
|
||||
err = mgr.AddHealthzCheck("health-ping", healthz.Ping)
|
||||
if err != nil {
|
||||
setupLog.Error(err, "Unable to add a health check")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
globalHTTPTimeoutStr := os.Getenv("KEDA_HTTP_DEFAULT_TIMEOUT")
|
||||
if globalHTTPTimeoutStr == "" {
|
||||
// default to 3 seconds if they don't pass the env var
|
||||
|
@ -125,9 +111,8 @@ func main() {
|
|||
globalHTTPTimeout := time.Duration(globalHTTPTimeoutMS) * time.Millisecond
|
||||
eventRecorder := mgr.GetEventRecorderFor("keda-operator")
|
||||
|
||||
if err = (&controllers.ScaledObjectReconciler{
|
||||
if err = (&kedacontrollers.ScaledObjectReconciler{
|
||||
Client: mgr.GetClient(),
|
||||
Log: ctrl.Log.WithName("controllers").WithName("ScaledObject"),
|
||||
Scheme: mgr.GetScheme(),
|
||||
GlobalHTTPTimeout: globalHTTPTimeout,
|
||||
Recorder: eventRecorder,
|
||||
|
@ -135,9 +120,8 @@ func main() {
|
|||
setupLog.Error(err, "unable to create controller", "controller", "ScaledObject")
|
||||
os.Exit(1)
|
||||
}
|
||||
if err = (&controllers.ScaledJobReconciler{
|
||||
if err = (&kedacontrollers.ScaledJobReconciler{
|
||||
Client: mgr.GetClient(),
|
||||
Log: ctrl.Log.WithName("controllers").WithName("ScaledJob"),
|
||||
Scheme: mgr.GetScheme(),
|
||||
GlobalHTTPTimeout: globalHTTPTimeout,
|
||||
Recorder: eventRecorder,
|
||||
|
@ -145,23 +129,32 @@ func main() {
|
|||
setupLog.Error(err, "unable to create controller", "controller", "ScaledJob")
|
||||
os.Exit(1)
|
||||
}
|
||||
if err = (&controllers.TriggerAuthenticationReconciler{
|
||||
if err = (&kedacontrollers.TriggerAuthenticationReconciler{
|
||||
Client: mgr.GetClient(),
|
||||
Log: ctrl.Log.WithName("controllers").WithName("TriggerAuthentication"),
|
||||
Scheme: mgr.GetScheme(),
|
||||
Recorder: eventRecorder,
|
||||
}).SetupWithManager(mgr); err != nil {
|
||||
setupLog.Error(err, "unable to create controller", "controller", "TriggerAuthentication")
|
||||
os.Exit(1)
|
||||
}
|
||||
if err = (&controllers.ClusterTriggerAuthenticationReconciler{
|
||||
if err = (&kedacontrollers.ClusterTriggerAuthenticationReconciler{
|
||||
Client: mgr.GetClient(),
|
||||
Log: ctrl.Log.WithName("controllers").WithName("ClusterTriggerAuthentication"),
|
||||
Scheme: mgr.GetScheme(),
|
||||
Recorder: eventRecorder,
|
||||
}).SetupWithManager(mgr); err != nil {
|
||||
setupLog.Error(err, "unable to create controller", "controller", "ClusterTriggerAuthentication")
|
||||
os.Exit(1)
|
||||
}
|
||||
// +kubebuilder:scaffold:builder
|
||||
//+kubebuilder:scaffold:builder
|
||||
|
||||
if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
|
||||
setupLog.Error(err, "unable to set up health check")
|
||||
os.Exit(1)
|
||||
}
|
||||
if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil {
|
||||
setupLog.Error(err, "unable to set up ready check")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
setupLog.Info("Starting manager")
|
||||
setupLog.Info(fmt.Sprintf("KEDA Version: %s", version.Version))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -74,7 +74,10 @@ func (c *Clientset) Tracker() testing.ObjectTracker {
|
|||
return c.tracker
|
||||
}
|
||||
|
||||
var _ clientset.Interface = &Clientset{}
|
||||
var (
|
||||
_ clientset.Interface = &Clientset{}
|
||||
_ testing.FakeClient = &Clientset{}
|
||||
)
|
||||
|
||||
// KedaV1alpha1 retrieves the KedaV1alpha1Client
|
||||
func (c *Clientset) KedaV1alpha1() kedav1alpha1.KedaV1alpha1Interface {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -19,7 +19,7 @@ limitations under the License.
|
|||
package fake
|
||||
|
||||
import (
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -19,7 +19,7 @@ limitations under the License.
|
|||
package scheme
|
||||
|
||||
import (
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -22,7 +22,7 @@ import (
|
|||
"context"
|
||||
"time"
|
||||
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
scheme "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned/scheme"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
types "k8s.io/apimachinery/pkg/types"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -21,7 +21,7 @@ package fake
|
|||
import (
|
||||
"context"
|
||||
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
labels "k8s.io/apimachinery/pkg/labels"
|
||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -21,7 +21,7 @@ package fake
|
|||
import (
|
||||
"context"
|
||||
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
labels "k8s.io/apimachinery/pkg/labels"
|
||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -21,7 +21,7 @@ package fake
|
|||
import (
|
||||
"context"
|
||||
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
labels "k8s.io/apimachinery/pkg/labels"
|
||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -21,7 +21,7 @@ package fake
|
|||
import (
|
||||
"context"
|
||||
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
labels "k8s.io/apimachinery/pkg/labels"
|
||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -19,7 +19,7 @@ limitations under the License.
|
|||
package v1alpha1
|
||||
|
||||
import (
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/generated/clientset/versioned/scheme"
|
||||
rest "k8s.io/client-go/rest"
|
||||
)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -22,7 +22,7 @@ import (
|
|||
"context"
|
||||
"time"
|
||||
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
scheme "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned/scheme"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
types "k8s.io/apimachinery/pkg/types"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -22,7 +22,7 @@ import (
|
|||
"context"
|
||||
"time"
|
||||
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
scheme "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned/scheme"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
types "k8s.io/apimachinery/pkg/types"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -22,7 +22,7 @@ import (
|
|||
"context"
|
||||
"time"
|
||||
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
scheme "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned/scheme"
|
||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
types "k8s.io/apimachinery/pkg/types"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -21,7 +21,7 @@ package externalversions
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
schema "k8s.io/apimachinery/pkg/runtime/schema"
|
||||
cache "k8s.io/client-go/tools/cache"
|
||||
)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -22,7 +22,7 @@ import (
|
|||
"context"
|
||||
time "time"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
versioned "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned"
|
||||
internalinterfaces "github.com/kedacore/keda/v2/pkg/generated/informers/externalversions/internalinterfaces"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/pkg/generated/listers/keda/v1alpha1"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -22,7 +22,7 @@ import (
|
|||
"context"
|
||||
time "time"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
versioned "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned"
|
||||
internalinterfaces "github.com/kedacore/keda/v2/pkg/generated/informers/externalversions/internalinterfaces"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/pkg/generated/listers/keda/v1alpha1"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -22,7 +22,7 @@ import (
|
|||
"context"
|
||||
time "time"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
versioned "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned"
|
||||
internalinterfaces "github.com/kedacore/keda/v2/pkg/generated/informers/externalversions/internalinterfaces"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/pkg/generated/listers/keda/v1alpha1"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -22,7 +22,7 @@ import (
|
|||
"context"
|
||||
time "time"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
versioned "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned"
|
||||
internalinterfaces "github.com/kedacore/keda/v2/pkg/generated/informers/externalversions/internalinterfaces"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/pkg/generated/listers/keda/v1alpha1"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -19,7 +19,7 @@ limitations under the License.
|
|||
package v1alpha1
|
||||
|
||||
import (
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -19,7 +19,7 @@ limitations under the License.
|
|||
package v1alpha1
|
||||
|
||||
import (
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -19,7 +19,7 @@ limitations under the License.
|
|||
package v1alpha1
|
||||
|
||||
import (
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright 2020 The KEDA Authors
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
@ -19,7 +19,7 @@ limitations under the License.
|
|||
package v1alpha1
|
||||
|
||||
import (
|
||||
v1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
v1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package metrics
|
||||
|
||||
// Server an HTTP serving instance to track metrics
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package metrics
|
||||
|
||||
import (
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: /Users/zroubali/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.6.5/pkg/client/interfaces.go
|
||||
// Source: /Users/zroubali/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.6/pkg/client/interfaces.go
|
||||
|
||||
// Package mock_client is a generated GoMock package.
|
||||
package mock_client
|
||||
|
@ -9,8 +9,10 @@ import (
|
|||
reflect "reflect"
|
||||
|
||||
gomock "github.com/golang/mock/gomock"
|
||||
meta "k8s.io/apimachinery/pkg/api/meta"
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
types "k8s.io/apimachinery/pkg/types"
|
||||
watch "k8s.io/apimachinery/pkg/watch"
|
||||
client "sigs.k8s.io/controller-runtime/pkg/client"
|
||||
)
|
||||
|
||||
|
@ -38,7 +40,7 @@ func (m *MockPatch) EXPECT() *MockPatchMockRecorder {
|
|||
}
|
||||
|
||||
// Data mocks base method.
|
||||
func (m *MockPatch) Data(obj runtime.Object) ([]byte, error) {
|
||||
func (m *MockPatch) Data(obj client.Object) ([]byte, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Data", obj)
|
||||
ret0, _ := ret[0].([]byte)
|
||||
|
@ -90,7 +92,7 @@ func (m *MockReader) EXPECT() *MockReaderMockRecorder {
|
|||
}
|
||||
|
||||
// Get mocks base method.
|
||||
func (m *MockReader) Get(ctx context.Context, key client.ObjectKey, obj runtime.Object) error {
|
||||
func (m *MockReader) Get(ctx context.Context, key client.ObjectKey, obj client.Object) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Get", ctx, key, obj)
|
||||
ret0, _ := ret[0].(error)
|
||||
|
@ -104,7 +106,7 @@ func (mr *MockReaderMockRecorder) Get(ctx, key, obj interface{}) *gomock.Call {
|
|||
}
|
||||
|
||||
// List mocks base method.
|
||||
func (m *MockReader) List(ctx context.Context, list runtime.Object, opts ...client.ListOption) error {
|
||||
func (m *MockReader) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, list}
|
||||
for _, a := range opts {
|
||||
|
@ -146,7 +148,7 @@ func (m *MockWriter) EXPECT() *MockWriterMockRecorder {
|
|||
}
|
||||
|
||||
// Create mocks base method.
|
||||
func (m *MockWriter) Create(ctx context.Context, obj runtime.Object, opts ...client.CreateOption) error {
|
||||
func (m *MockWriter) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
|
@ -165,7 +167,7 @@ func (mr *MockWriterMockRecorder) Create(ctx, obj interface{}, opts ...interface
|
|||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockWriter) Delete(ctx context.Context, obj runtime.Object, opts ...client.DeleteOption) error {
|
||||
func (m *MockWriter) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
|
@ -184,7 +186,7 @@ func (mr *MockWriterMockRecorder) Delete(ctx, obj interface{}, opts ...interface
|
|||
}
|
||||
|
||||
// DeleteAllOf mocks base method.
|
||||
func (m *MockWriter) DeleteAllOf(ctx context.Context, obj runtime.Object, opts ...client.DeleteAllOfOption) error {
|
||||
func (m *MockWriter) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
|
@ -203,7 +205,7 @@ func (mr *MockWriterMockRecorder) DeleteAllOf(ctx, obj interface{}, opts ...inte
|
|||
}
|
||||
|
||||
// Patch mocks base method.
|
||||
func (m *MockWriter) Patch(ctx context.Context, obj runtime.Object, patch client.Patch, opts ...client.PatchOption) error {
|
||||
func (m *MockWriter) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj, patch}
|
||||
for _, a := range opts {
|
||||
|
@ -222,7 +224,7 @@ func (mr *MockWriterMockRecorder) Patch(ctx, obj, patch interface{}, opts ...int
|
|||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockWriter) Update(ctx context.Context, obj runtime.Object, opts ...client.UpdateOption) error {
|
||||
func (m *MockWriter) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
|
@ -301,7 +303,7 @@ func (m *MockStatusWriter) EXPECT() *MockStatusWriterMockRecorder {
|
|||
}
|
||||
|
||||
// Patch mocks base method.
|
||||
func (m *MockStatusWriter) Patch(ctx context.Context, obj runtime.Object, patch client.Patch, opts ...client.PatchOption) error {
|
||||
func (m *MockStatusWriter) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj, patch}
|
||||
for _, a := range opts {
|
||||
|
@ -320,7 +322,7 @@ func (mr *MockStatusWriterMockRecorder) Patch(ctx, obj, patch interface{}, opts
|
|||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockStatusWriter) Update(ctx context.Context, obj runtime.Object, opts ...client.UpdateOption) error {
|
||||
func (m *MockStatusWriter) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
|
@ -362,7 +364,7 @@ func (m *MockClient) EXPECT() *MockClientMockRecorder {
|
|||
}
|
||||
|
||||
// Create mocks base method.
|
||||
func (m *MockClient) Create(ctx context.Context, obj runtime.Object, opts ...client.CreateOption) error {
|
||||
func (m *MockClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
|
@ -381,7 +383,7 @@ func (mr *MockClientMockRecorder) Create(ctx, obj interface{}, opts ...interface
|
|||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockClient) Delete(ctx context.Context, obj runtime.Object, opts ...client.DeleteOption) error {
|
||||
func (m *MockClient) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
|
@ -400,7 +402,7 @@ func (mr *MockClientMockRecorder) Delete(ctx, obj interface{}, opts ...interface
|
|||
}
|
||||
|
||||
// DeleteAllOf mocks base method.
|
||||
func (m *MockClient) DeleteAllOf(ctx context.Context, obj runtime.Object, opts ...client.DeleteAllOfOption) error {
|
||||
func (m *MockClient) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
|
@ -419,7 +421,7 @@ func (mr *MockClientMockRecorder) DeleteAllOf(ctx, obj interface{}, opts ...inte
|
|||
}
|
||||
|
||||
// Get mocks base method.
|
||||
func (m *MockClient) Get(ctx context.Context, key client.ObjectKey, obj runtime.Object) error {
|
||||
func (m *MockClient) Get(ctx context.Context, key client.ObjectKey, obj client.Object) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Get", ctx, key, obj)
|
||||
ret0, _ := ret[0].(error)
|
||||
|
@ -433,7 +435,7 @@ func (mr *MockClientMockRecorder) Get(ctx, key, obj interface{}) *gomock.Call {
|
|||
}
|
||||
|
||||
// List mocks base method.
|
||||
func (m *MockClient) List(ctx context.Context, list runtime.Object, opts ...client.ListOption) error {
|
||||
func (m *MockClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, list}
|
||||
for _, a := range opts {
|
||||
|
@ -452,7 +454,7 @@ func (mr *MockClientMockRecorder) List(ctx, list interface{}, opts ...interface{
|
|||
}
|
||||
|
||||
// Patch mocks base method.
|
||||
func (m *MockClient) Patch(ctx context.Context, obj runtime.Object, patch client.Patch, opts ...client.PatchOption) error {
|
||||
func (m *MockClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj, patch}
|
||||
for _, a := range opts {
|
||||
|
@ -470,6 +472,34 @@ func (mr *MockClientMockRecorder) Patch(ctx, obj, patch interface{}, opts ...int
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Patch", reflect.TypeOf((*MockClient)(nil).Patch), varargs...)
|
||||
}
|
||||
|
||||
// RESTMapper mocks base method.
|
||||
func (m *MockClient) RESTMapper() meta.RESTMapper {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "RESTMapper")
|
||||
ret0, _ := ret[0].(meta.RESTMapper)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// RESTMapper indicates an expected call of RESTMapper.
|
||||
func (mr *MockClientMockRecorder) RESTMapper() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RESTMapper", reflect.TypeOf((*MockClient)(nil).RESTMapper))
|
||||
}
|
||||
|
||||
// Scheme mocks base method.
|
||||
func (m *MockClient) Scheme() *runtime.Scheme {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Scheme")
|
||||
ret0, _ := ret[0].(*runtime.Scheme)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Scheme indicates an expected call of Scheme.
|
||||
func (mr *MockClientMockRecorder) Scheme() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Scheme", reflect.TypeOf((*MockClient)(nil).Scheme))
|
||||
}
|
||||
|
||||
// Status mocks base method.
|
||||
func (m *MockClient) Status() client.StatusWriter {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -485,7 +515,7 @@ func (mr *MockClientMockRecorder) Status() *gomock.Call {
|
|||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockClient) Update(ctx context.Context, obj runtime.Object, opts ...client.UpdateOption) error {
|
||||
func (m *MockClient) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
|
@ -503,6 +533,219 @@ func (mr *MockClientMockRecorder) Update(ctx, obj interface{}, opts ...interface
|
|||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockClient)(nil).Update), varargs...)
|
||||
}
|
||||
|
||||
// MockWithWatch is a mock of WithWatch interface.
|
||||
type MockWithWatch struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockWithWatchMockRecorder
|
||||
}
|
||||
|
||||
// MockWithWatchMockRecorder is the mock recorder for MockWithWatch.
|
||||
type MockWithWatchMockRecorder struct {
|
||||
mock *MockWithWatch
|
||||
}
|
||||
|
||||
// NewMockWithWatch creates a new mock instance.
|
||||
func NewMockWithWatch(ctrl *gomock.Controller) *MockWithWatch {
|
||||
mock := &MockWithWatch{ctrl: ctrl}
|
||||
mock.recorder = &MockWithWatchMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockWithWatch) EXPECT() *MockWithWatchMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// Create mocks base method.
|
||||
func (m *MockWithWatch) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "Create", varargs...)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Create indicates an expected call of Create.
|
||||
func (mr *MockWithWatchMockRecorder) Create(ctx, obj interface{}, opts ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{ctx, obj}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockWithWatch)(nil).Create), varargs...)
|
||||
}
|
||||
|
||||
// Delete mocks base method.
|
||||
func (m *MockWithWatch) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "Delete", varargs...)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Delete indicates an expected call of Delete.
|
||||
func (mr *MockWithWatchMockRecorder) Delete(ctx, obj interface{}, opts ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{ctx, obj}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockWithWatch)(nil).Delete), varargs...)
|
||||
}
|
||||
|
||||
// DeleteAllOf mocks base method.
|
||||
func (m *MockWithWatch) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "DeleteAllOf", varargs...)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// DeleteAllOf indicates an expected call of DeleteAllOf.
|
||||
func (mr *MockWithWatchMockRecorder) DeleteAllOf(ctx, obj interface{}, opts ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{ctx, obj}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteAllOf", reflect.TypeOf((*MockWithWatch)(nil).DeleteAllOf), varargs...)
|
||||
}
|
||||
|
||||
// Get mocks base method.
|
||||
func (m *MockWithWatch) Get(ctx context.Context, key client.ObjectKey, obj client.Object) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Get", ctx, key, obj)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Get indicates an expected call of Get.
|
||||
func (mr *MockWithWatchMockRecorder) Get(ctx, key, obj interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockWithWatch)(nil).Get), ctx, key, obj)
|
||||
}
|
||||
|
||||
// List mocks base method.
|
||||
func (m *MockWithWatch) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, list}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "List", varargs...)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// List indicates an expected call of List.
|
||||
func (mr *MockWithWatchMockRecorder) List(ctx, list interface{}, opts ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{ctx, list}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "List", reflect.TypeOf((*MockWithWatch)(nil).List), varargs...)
|
||||
}
|
||||
|
||||
// Patch mocks base method.
|
||||
func (m *MockWithWatch) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj, patch}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "Patch", varargs...)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Patch indicates an expected call of Patch.
|
||||
func (mr *MockWithWatchMockRecorder) Patch(ctx, obj, patch interface{}, opts ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{ctx, obj, patch}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Patch", reflect.TypeOf((*MockWithWatch)(nil).Patch), varargs...)
|
||||
}
|
||||
|
||||
// RESTMapper mocks base method.
|
||||
func (m *MockWithWatch) RESTMapper() meta.RESTMapper {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "RESTMapper")
|
||||
ret0, _ := ret[0].(meta.RESTMapper)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// RESTMapper indicates an expected call of RESTMapper.
|
||||
func (mr *MockWithWatchMockRecorder) RESTMapper() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RESTMapper", reflect.TypeOf((*MockWithWatch)(nil).RESTMapper))
|
||||
}
|
||||
|
||||
// Scheme mocks base method.
|
||||
func (m *MockWithWatch) Scheme() *runtime.Scheme {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Scheme")
|
||||
ret0, _ := ret[0].(*runtime.Scheme)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Scheme indicates an expected call of Scheme.
|
||||
func (mr *MockWithWatchMockRecorder) Scheme() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Scheme", reflect.TypeOf((*MockWithWatch)(nil).Scheme))
|
||||
}
|
||||
|
||||
// Status mocks base method.
|
||||
func (m *MockWithWatch) Status() client.StatusWriter {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "Status")
|
||||
ret0, _ := ret[0].(client.StatusWriter)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Status indicates an expected call of Status.
|
||||
func (mr *MockWithWatchMockRecorder) Status() *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Status", reflect.TypeOf((*MockWithWatch)(nil).Status))
|
||||
}
|
||||
|
||||
// Update mocks base method.
|
||||
func (m *MockWithWatch) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "Update", varargs...)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// Update indicates an expected call of Update.
|
||||
func (mr *MockWithWatchMockRecorder) Update(ctx, obj interface{}, opts ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{ctx, obj}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockWithWatch)(nil).Update), varargs...)
|
||||
}
|
||||
|
||||
// Watch mocks base method.
|
||||
func (m *MockWithWatch) Watch(ctx context.Context, obj client.ObjectList, opts ...client.ListOption) (watch.Interface, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{ctx, obj}
|
||||
for _, a := range opts {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "Watch", varargs...)
|
||||
ret0, _ := ret[0].(watch.Interface)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// Watch indicates an expected call of Watch.
|
||||
func (mr *MockWithWatchMockRecorder) Watch(ctx, obj interface{}, opts ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{ctx, obj}, opts...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Watch", reflect.TypeOf((*MockWithWatch)(nil).Watch), varargs...)
|
||||
}
|
||||
|
||||
// MockFieldIndexer is a mock of FieldIndexer interface.
|
||||
type MockFieldIndexer struct {
|
||||
ctrl *gomock.Controller
|
||||
|
@ -527,7 +770,7 @@ func (m *MockFieldIndexer) EXPECT() *MockFieldIndexerMockRecorder {
|
|||
}
|
||||
|
||||
// IndexField mocks base method.
|
||||
func (m *MockFieldIndexer) IndexField(ctx context.Context, obj runtime.Object, field string, extractValue client.IndexerFunc) error {
|
||||
func (m *MockFieldIndexer) IndexField(ctx context.Context, obj client.Object, field string, extractValue client.IndexerFunc) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "IndexField", ctx, obj, field, extractValue)
|
||||
ret0, _ := ret[0].(error)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: /home/misha/go/pkg/mod/k8s.io/client-go@v0.20.7/scale/interfaces.go
|
||||
// Source: /Users/zroubali/go/pkg/mod/k8s.io/client-go@v0.22.1/scale/interfaces.go
|
||||
|
||||
// Package mock_scale is a generated GoMock package.
|
||||
package mock_scale
|
||||
|
|
|
@ -1,53 +1,40 @@
|
|||
// Code generated by MockGen. DO NOT EDIT.
|
||||
// Source: scale_handler.go
|
||||
// Source: pkg/scaling/scale_handler.go
|
||||
|
||||
// Package mock_scaling is a generated GoMock package.
|
||||
package mock_scaling
|
||||
|
||||
import (
|
||||
reflect "reflect"
|
||||
|
||||
gomock "github.com/golang/mock/gomock"
|
||||
scalers "github.com/kedacore/keda/v2/pkg/scalers"
|
||||
reflect "reflect"
|
||||
)
|
||||
|
||||
// MockScaleHandler is a mock of ScaleHandler interface
|
||||
// MockScaleHandler is a mock of ScaleHandler interface.
|
||||
type MockScaleHandler struct {
|
||||
ctrl *gomock.Controller
|
||||
recorder *MockScaleHandlerMockRecorder
|
||||
}
|
||||
|
||||
// MockScaleHandlerMockRecorder is the mock recorder for MockScaleHandler
|
||||
// MockScaleHandlerMockRecorder is the mock recorder for MockScaleHandler.
|
||||
type MockScaleHandlerMockRecorder struct {
|
||||
mock *MockScaleHandler
|
||||
}
|
||||
|
||||
// NewMockScaleHandler creates a new mock instance
|
||||
// NewMockScaleHandler creates a new mock instance.
|
||||
func NewMockScaleHandler(ctrl *gomock.Controller) *MockScaleHandler {
|
||||
mock := &MockScaleHandler{ctrl: ctrl}
|
||||
mock.recorder = &MockScaleHandlerMockRecorder{mock}
|
||||
return mock
|
||||
}
|
||||
|
||||
// EXPECT returns an object that allows the caller to indicate expected use
|
||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
||||
func (m *MockScaleHandler) EXPECT() *MockScaleHandlerMockRecorder {
|
||||
return m.recorder
|
||||
}
|
||||
|
||||
// HandleScalableObject mocks base method
|
||||
func (m *MockScaleHandler) HandleScalableObject(scalableObject interface{}) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "HandleScalableObject", scalableObject)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// HandleScalableObject indicates an expected call of HandleScalableObject
|
||||
func (mr *MockScaleHandlerMockRecorder) HandleScalableObject(scalableObject interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HandleScalableObject", reflect.TypeOf((*MockScaleHandler)(nil).HandleScalableObject), scalableObject)
|
||||
}
|
||||
|
||||
// DeleteScalableObject mocks base method
|
||||
// DeleteScalableObject mocks base method.
|
||||
func (m *MockScaleHandler) DeleteScalableObject(scalableObject interface{}) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "DeleteScalableObject", scalableObject)
|
||||
|
@ -55,13 +42,13 @@ func (m *MockScaleHandler) DeleteScalableObject(scalableObject interface{}) erro
|
|||
return ret0
|
||||
}
|
||||
|
||||
// DeleteScalableObject indicates an expected call of DeleteScalableObject
|
||||
// DeleteScalableObject indicates an expected call of DeleteScalableObject.
|
||||
func (mr *MockScaleHandlerMockRecorder) DeleteScalableObject(scalableObject interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteScalableObject", reflect.TypeOf((*MockScaleHandler)(nil).DeleteScalableObject), scalableObject)
|
||||
}
|
||||
|
||||
// GetScalers mocks base method
|
||||
// GetScalers mocks base method.
|
||||
func (m *MockScaleHandler) GetScalers(scalableObject interface{}) ([]scalers.Scaler, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetScalers", scalableObject)
|
||||
|
@ -70,8 +57,22 @@ func (m *MockScaleHandler) GetScalers(scalableObject interface{}) ([]scalers.Sca
|
|||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetScalers indicates an expected call of GetScalers
|
||||
// GetScalers indicates an expected call of GetScalers.
|
||||
func (mr *MockScaleHandlerMockRecorder) GetScalers(scalableObject interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetScalers", reflect.TypeOf((*MockScaleHandler)(nil).GetScalers), scalableObject)
|
||||
}
|
||||
|
||||
// HandleScalableObject mocks base method.
|
||||
func (m *MockScaleHandler) HandleScalableObject(scalableObject interface{}) error {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "HandleScalableObject", scalableObject)
|
||||
ret0, _ := ret[0].(error)
|
||||
return ret0
|
||||
}
|
||||
|
||||
// HandleScalableObject indicates an expected call of HandleScalableObject.
|
||||
func (mr *MockScaleHandlerMockRecorder) HandleScalableObject(scalableObject interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HandleScalableObject", reflect.TypeOf((*MockScaleHandler)(nil).HandleScalableObject), scalableObject)
|
||||
}
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package provider
|
||||
|
||||
import (
|
||||
|
@ -11,7 +27,7 @@ import (
|
|||
"k8s.io/metrics/pkg/apis/external_metrics"
|
||||
runtimeclient "sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/scalers"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package provider
|
||||
|
||||
import (
|
||||
|
@ -7,7 +23,6 @@ import (
|
|||
|
||||
"github.com/go-logr/logr"
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/kubernetes-sigs/custom-metrics-apiserver/pkg/provider"
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
"github.com/onsi/gomega/types"
|
||||
|
@ -16,8 +31,9 @@ import (
|
|||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/metrics/pkg/apis/external_metrics"
|
||||
"sigs.k8s.io/controller-runtime/pkg/envtest/printer"
|
||||
"sigs.k8s.io/custom-metrics-apiserver/pkg/provider"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/mock/mock_client"
|
||||
mock_scalers "github.com/kedacore/keda/v2/pkg/mock/mock_scaler"
|
||||
"github.com/kedacore/keda/v2/pkg/mock/mock_scaling"
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package provider
|
||||
|
||||
import (
|
||||
|
@ -5,18 +21,18 @@ import (
|
|||
"fmt"
|
||||
"strings"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
prommetrics "github.com/kedacore/keda/v2/pkg/metrics"
|
||||
"github.com/kedacore/keda/v2/pkg/scaling"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
"github.com/kubernetes-sigs/custom-metrics-apiserver/pkg/provider"
|
||||
apiErrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/metrics/pkg/apis/custom_metrics"
|
||||
"k8s.io/metrics/pkg/apis/external_metrics"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/custom-metrics-apiserver/pkg/provider"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
prommetrics "github.com/kedacore/keda/v2/pkg/metrics"
|
||||
"github.com/kedacore/keda/v2/pkg/scaling"
|
||||
)
|
||||
|
||||
// KedaProvider implements External Metrics Provider
|
||||
|
@ -51,7 +67,7 @@ func NewProvider(adapterLogger logr.Logger, scaleHandler scaling.ScaleHandler, c
|
|||
// Metric is normally identified by a name and a set of labels/tags. It is up to a specific
|
||||
// implementation how to translate metricSelector to a filter for metric values.
|
||||
// Namespace can be used by the implementation for metric identification, access control or ignored.
|
||||
func (p *KedaProvider) GetExternalMetric(namespace string, metricSelector labels.Selector, info provider.ExternalMetricInfo) (*external_metrics.ExternalMetricValueList, error) {
|
||||
func (p *KedaProvider) GetExternalMetric(ctx context.Context, namespace string, metricSelector labels.Selector, info provider.ExternalMetricInfo) (*external_metrics.ExternalMetricValueList, error) {
|
||||
// Note:
|
||||
// metric name and namespace is used to lookup for the CRD which contains configuration to call azure
|
||||
// if not found then ignored and label selector is parsed for all the metrics
|
||||
|
@ -68,7 +84,7 @@ func (p *KedaProvider) GetExternalMetric(namespace string, metricSelector labels
|
|||
client.InNamespace(namespace),
|
||||
client.MatchingLabels(selector),
|
||||
}
|
||||
err = p.client.List(context.TODO(), scaledObjects, opts...)
|
||||
err = p.client.List(ctx, scaledObjects, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if len(scaledObjects.Items) != 1 {
|
||||
|
@ -146,14 +162,14 @@ func (p *KedaProvider) ListAllExternalMetrics() []provider.ExternalMetricInfo {
|
|||
|
||||
// GetMetricByName fetches a particular metric for a particular object.
|
||||
// The namespace will be empty if the metric is root-scoped.
|
||||
func (p *KedaProvider) GetMetricByName(name types.NamespacedName, info provider.CustomMetricInfo, metricSelector labels.Selector) (*custom_metrics.MetricValue, error) {
|
||||
func (p *KedaProvider) GetMetricByName(ctx context.Context, name types.NamespacedName, info provider.CustomMetricInfo, metricSelector labels.Selector) (*custom_metrics.MetricValue, error) {
|
||||
// not implemented yet
|
||||
return nil, apiErrors.NewServiceUnavailable("not implemented yet")
|
||||
}
|
||||
|
||||
// GetMetricBySelector fetches a particular metric for a set of objects matching
|
||||
// the given label selector. The namespace will be empty if the metric is root-scoped.
|
||||
func (p *KedaProvider) GetMetricBySelector(namespace string, selector labels.Selector, info provider.CustomMetricInfo, metricSelector labels.Selector) (*custom_metrics.MetricValueList, error) {
|
||||
func (p *KedaProvider) GetMetricBySelector(ctx context.Context, namespace string, selector labels.Selector, info provider.CustomMetricInfo, metricSelector labels.Selector) (*custom_metrics.MetricValueList, error) {
|
||||
logger.V(0).Info("Received request for custom metric", "groupresource", info.GroupResource.String(), "namespace", namespace, "metric name", info.Metric, "selector", selector.String())
|
||||
return nil, apiErrors.NewServiceUnavailable("not implemented yet")
|
||||
}
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package azure
|
||||
|
||||
import (
|
||||
|
@ -5,7 +21,7 @@ import (
|
|||
|
||||
"github.com/Azure/azure-storage-blob-go/azblob"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package azure
|
||||
|
||||
import (
|
||||
|
@ -11,7 +27,8 @@ import (
|
|||
|
||||
"github.com/Azure/azure-storage-blob-go/azblob"
|
||||
"github.com/imdario/mergo"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package azure
|
||||
|
||||
import (
|
||||
|
@ -12,7 +28,7 @@ import (
|
|||
"github.com/Azure/go-autorest/autorest/azure/auth"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
)
|
||||
|
||||
// Much of the code in this file is taken from the Azure Kubernetes Metrics Adapter
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package azure
|
||||
|
||||
import (
|
||||
|
@ -5,7 +21,7 @@ import (
|
|||
|
||||
"github.com/Azure/azure-storage-queue-go/azqueue"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package azure
|
||||
|
||||
import (
|
||||
|
@ -10,7 +26,7 @@ import (
|
|||
"github.com/Azure/azure-storage-queue-go/azqueue"
|
||||
az "github.com/Azure/go-autorest/autorest/azure"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package scalers
|
||||
|
||||
import (
|
||||
|
@ -6,8 +22,6 @@ import (
|
|||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/kedacore/keda/v2/pkg/scalers/azure"
|
||||
|
||||
v2beta2 "k8s.io/api/autoscaling/v2beta2"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
@ -15,7 +29,8 @@ import (
|
|||
"k8s.io/metrics/pkg/apis/external_metrics"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/scalers/azure"
|
||||
kedautil "github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,10 +1,26 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package scalers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
)
|
||||
|
||||
var testAzBlobResolvedEnv = map[string]string{
|
||||
|
|
|
@ -1,5 +1,21 @@
|
|||
package scalers
|
||||
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
@ -17,7 +33,7 @@ import (
|
|||
"k8s.io/metrics/pkg/apis/external_metrics"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
|
||||
"github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/scalers/azure"
|
||||
kedautil "github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package scalers
|
||||
|
||||
import (
|
||||
|
@ -22,7 +38,7 @@ import (
|
|||
"k8s.io/metrics/pkg/apis/external_metrics"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
kedautil "github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,10 +1,26 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package scalers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package scalers
|
||||
|
||||
import (
|
||||
|
@ -6,8 +22,6 @@ import (
|
|||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/kedacore/keda/v2/pkg/scalers/azure"
|
||||
|
||||
v2beta2 "k8s.io/api/autoscaling/v2beta2"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
@ -15,7 +29,8 @@ import (
|
|||
"k8s.io/metrics/pkg/apis/external_metrics"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
"github.com/kedacore/keda/v2/pkg/scalers/azure"
|
||||
kedautil "github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,9 +1,25 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package scalers
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
)
|
||||
|
||||
type parseAzMonitorMetadataTestData struct {
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package scalers
|
||||
|
||||
import (
|
||||
|
@ -15,7 +31,7 @@ import (
|
|||
"k8s.io/metrics/pkg/apis/external_metrics"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
kedautil "github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,10 +1,26 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package scalers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
)
|
||||
|
||||
var testAzQueueResolvedEnv = map[string]string{
|
||||
|
|
|
@ -1,5 +1,21 @@
|
|||
package scalers
|
||||
|
||||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
@ -17,7 +33,7 @@ import (
|
|||
"k8s.io/metrics/pkg/apis/external_metrics"
|
||||
logf "sigs.k8s.io/controller-runtime/pkg/log"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
kedautil "github.com/kedacore/keda/v2/pkg/util"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
/*
|
||||
Copyright 2021 The KEDA Authors
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package scalers
|
||||
|
||||
import (
|
||||
|
@ -7,7 +23,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/api/v1alpha1"
|
||||
kedav1alpha1 "github.com/kedacore/keda/v2/apis/keda/v1alpha1"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue