1
0
Fork 0
mirror of https://github.com/arangodb/kube-arangodb.git synced 2024-12-14 11:57:37 +00:00

[Maintenance] Update K8S API to 1.29.2 (#1615)

This commit is contained in:
Adam Janikowski 2024-03-08 23:27:25 +01:00 committed by GitHub
parent 55e9220aca
commit 0157381677
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
68 changed files with 3794 additions and 1010 deletions

View file

@ -77,6 +77,8 @@ linters-settings:
alias: pbSharedV1
- pkg: github.com/arangodb/kube-arangodb/integrations/shared/v1
alias: pbImplSharedV1
- pkg: github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources
alias: kresources
gci:
sections:
- standard

View file

@ -14,6 +14,7 @@
- (Maintenance) Update Go to 1.21.8 & Dependencies
- (Feature) (ArangoBackup) Propagate message during retries
- (Bugfix) Fix ActiveFailover Mode
- (Maintenance) Update K8S API to 1.29.2
## [1.2.38](https://github.com/arangodb/kube-arangodb/tree/1.2.38) (2024-02-22)
- (Feature) Extract GRPC Server

View file

@ -1,5 +1,12 @@
# Maintainer Instructions
## Build
Due to changes in the upstream Kubernetes API Dependency, by default Client and Operator will compile with Kubernetes 1.29+
If Client is used with:
- 1.28 or lower, build tag `kube_arangodb_k8s_1_28` is required
## Before
To run templating models HELM needs to be installed. We are supporting HELM 2.14+

View file

@ -9,8 +9,8 @@ ifeq ($(shell uname),Darwin)
REALPATH ?= grealpath
endif
KUBERNETES_VERSION_MINOR:=28
KUBERNETES_VERSION_PATCH:=5
KUBERNETES_VERSION_MINOR:=29
KUBERNETES_VERSION_PATCH:=2
PROJECT := arangodb_operator
SCRIPTDIR := $(shell pwd)

File diff suppressed because it is too large Load diff

View file

@ -24,5 +24,5 @@ JobTemplate holds the Kubernetes Job Template
Links:
* [Kubernetes Documentation](https://kubernetes.io/docs/concepts/workloads/controllers/job/)
* [Documentation of batch.JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#jobspec-v1-batch)
* [Documentation of batch.JobSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#jobspec-v1-batch)

View file

@ -82,5 +82,5 @@ Type: `[]core.Toleration` <sup>[\[ref\]](https://github.com/arangodb/kube-arango
Tolerations specifies the tolerations added to pods of storage provisioner
Links:
* [Documentation of core.Toleration](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core)
* [Documentation of core.Toleration](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#toleration-v1-core)

View file

@ -79,7 +79,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -90,7 +90,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -188,7 +188,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -233,7 +233,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -244,7 +244,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -342,7 +342,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -449,7 +449,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -460,7 +460,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -558,7 +558,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -651,7 +651,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -662,7 +662,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -795,7 +795,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -897,7 +897,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -908,7 +908,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -1041,7 +1041,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -1143,7 +1143,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -1154,7 +1154,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -1287,7 +1287,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -1389,7 +1389,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -1400,7 +1400,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -1533,7 +1533,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -1635,7 +1635,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -1646,7 +1646,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -1779,7 +1779,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -1881,7 +1881,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -1892,7 +1892,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -2025,7 +2025,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -2127,7 +2127,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -2138,7 +2138,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -2271,7 +2271,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***

View file

@ -121,7 +121,7 @@ Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blo
Env keeps the information about environment variables provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
***
@ -132,7 +132,7 @@ Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arang
EnvFrom keeps the information about environment variable sources provided to the container
Links:
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core)
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
***
@ -222,7 +222,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits for container
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***

View file

@ -47,7 +47,7 @@ Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kub
Resources holds resource requests & limits. Overrides template provided on the group level.
Links:
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core)
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
***
@ -58,7 +58,7 @@ Type: `core.PersistentVolumeClaim` <sup>[\[ref\]](https://github.com/arangodb/ku
VolumeClaimTemplate specifies a template for volume claims. Overrides template provided on the group level.
Links:
* [Documentation of core.PersistentVolumeClaim](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaim-v1-core)
* [Documentation of core.PersistentVolumeClaim](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#persistentvolumeclaim-v1-core)
***
@ -88,7 +88,7 @@ Type: `core.PodTemplateSpec` <sup>[\[ref\]](https://github.com/arangodb/kube-ara
PodSpec specifies the Pod Spec used for this Member.
Links:
* [Documentation of core.PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podtemplatespec-v1-core)
* [Documentation of core.PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podtemplatespec-v1-core)
***

48
go.mod
View file

@ -1,24 +1,26 @@
module github.com/arangodb/kube-arangodb
go 1.20
go 1.21
toolchain go1.21.8
replace (
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring => github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.46.0
github.com/prometheus-operator/prometheus-operator/pkg/client => github.com/prometheus-operator/prometheus-operator/pkg/client v0.46.0
github.com/stretchr/testify => github.com/stretchr/testify v1.5.1
github.com/stretchr/testify => github.com/stretchr/testify v1.9.0
github.com/ugorji/go => github.com/ugorji/go v0.0.0-20181209151446-772ced7fd4c2
k8s.io/api => k8s.io/api v0.28.5
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.28.5
k8s.io/apimachinery => k8s.io/apimachinery v0.28.5
k8s.io/apiserver => k8s.io/apiserver v0.28.5
k8s.io/client-go => k8s.io/client-go v0.28.5
k8s.io/cloud-provider => k8s.io/cloud-provider v0.28.5
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.28.5
k8s.io/api => k8s.io/api v0.29.2
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.29.2
k8s.io/apimachinery => k8s.io/apimachinery v0.29.2
k8s.io/apiserver => k8s.io/apiserver v0.29.2
k8s.io/client-go => k8s.io/client-go v0.29.2
k8s.io/cloud-provider => k8s.io/cloud-provider v0.29.2
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.29.2
k8s.io/code-generator => ./deps/k8s.io/code-generator
k8s.io/component-base => k8s.io/component-base v0.28.5
k8s.io/kubernetes => k8s.io/kubernetes v0.28.5
k8s.io/metrics => k8s.io/metrics v0.28.5
k8s.io/component-base => k8s.io/component-base v0.29.2
k8s.io/kubernetes => k8s.io/kubernetes v0.29.2
k8s.io/metrics => k8s.io/metrics v0.29.2
)
require (
@ -59,11 +61,11 @@ require (
google.golang.org/grpc v1.60.1
google.golang.org/protobuf v1.33.0
gopkg.in/yaml.v3 v3.0.1
k8s.io/api v0.28.5
k8s.io/apiextensions-apiserver v0.28.5
k8s.io/apimachinery v0.28.5
k8s.io/client-go v0.28.5
k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9
k8s.io/api v0.29.2
k8s.io/apiextensions-apiserver v0.29.2
k8s.io/apimachinery v0.29.2
k8s.io/client-go v0.29.2
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00
sigs.k8s.io/yaml v1.3.0
)
@ -76,7 +78,7 @@ require (
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/dchest/siphash v1.2.2 // indirect
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
@ -94,6 +96,7 @@ require (
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/imdario/mergo v0.3.6 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
@ -108,12 +111,13 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/pavel-v-chernykh/keystore-go v2.1.0+incompatible // indirect
github.com/pelletier/go-toml/v2 v2.1.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/common v0.44.0 // indirect
github.com/prometheus/procfs v0.10.1 // indirect
github.com/stretchr/objx v0.4.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect
golang.org/x/arch v0.3.0 // indirect
@ -126,8 +130,8 @@ require (
google.golang.org/genproto/googleapis/rpc v0.0.0-20240102182953-50ed04b92917 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
k8s.io/klog/v2 v2.100.1 // indirect
k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect
k8s.io/klog/v2 v2.110.1 // indirect
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
)

384
go.sum

File diff suppressed because it is too large Load diff

View file

@ -29,6 +29,6 @@ type ArangoJobSpec struct {
// JobTemplate holds the Kubernetes Job Template
// +doc/type: batch.JobSpec
// +doc/link: Kubernetes Documentation|https://kubernetes.io/docs/concepts/workloads/controllers/job/
// +doc/link: Documentation of batch.JobSpec|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#jobspec-v1-batch
// +doc/link: Documentation of batch.JobSpec|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#jobspec-v1-batch
JobTemplate *batch.JobSpec `json:"jobTemplate,omitempty"`
}

View file

@ -50,7 +50,7 @@ func GetArangoMemberPodTemplate(pod *core.PodTemplateSpec, podSpecChecksum strin
type ArangoMemberPodTemplate struct {
// PodSpec specifies the Pod Spec used for this Member.
// +doc/type: core.PodTemplateSpec
// +doc/link: Documentation of core.PodTemplateSpec|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podtemplatespec-v1-core
// +doc/link: Documentation of core.PodTemplateSpec|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podtemplatespec-v1-core
PodSpec *core.PodTemplateSpec `json:"podSpec,omitempty"`
// PodSpecChecksum keep the Pod Spec Checksum (without ignored fields).

View file

@ -29,12 +29,12 @@ import (
type ArangoMemberSpecOverrides struct {
// VolumeClaimTemplate specifies a template for volume claims. Overrides template provided on the group level.
// +doc/type: core.PersistentVolumeClaim
// +doc/link: Documentation of core.PersistentVolumeClaim|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaim-v1-core
// +doc/link: Documentation of core.PersistentVolumeClaim|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#persistentvolumeclaim-v1-core
VolumeClaimTemplate *core.PersistentVolumeClaim `json:"volumeClaimTemplate,omitempty"`
// Resources holds resource requests & limits. Overrides template provided on the group level.
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources core.ResourceRequirements `json:"resources,omitempty"`
}

View file

@ -88,7 +88,7 @@ type MetricsSpec struct {
Authentication MetricsAuthenticationSpec `json:"authentication,omitempty"`
// Resources holds resource requests & limits
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources core.ResourceRequirements `json:"resources,omitempty"`
// Mode define metrics exported mode

View file

@ -27,7 +27,7 @@ import (
type LifecycleSpec struct {
// Resources holds resource requests & limits
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources core.ResourceRequirements `json:"resources,omitempty"`
}

View file

@ -88,7 +88,7 @@ type MemberStatus struct {
// Deprecated
// SideCarSpecs contains map of specifications specified for side cars
// +doc/type: map[string]core.Container
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#container-v1-core
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#container-v1-core
SideCarSpecs map[string]core.Container `json:"sidecars-specs,omitempty"`
// Deprecated
// PodName holds the name of the Pod that currently runs this member

View file

@ -60,7 +60,7 @@ func (e *EphemeralVolumes) getTempSize(d *resource.Quantity) *resource.Quantity
type EphemeralVolume struct {
// Size define size of the ephemeral volume
// +doc/type: resource.Quantity
// +doc/link: Documentation of resource.Quantity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#quantity-resource-core
// +doc/link: Documentation of resource.Quantity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#quantity-resource-core
Size *resource.Quantity `json:"size"`
}

View file

@ -87,7 +87,7 @@ const (
type ServerGroupInitContainers struct {
// Containers contains list of containers
// +doc/type: []core.Container
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#container-v1-core
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#container-v1-core
Containers []core.Container `json:"containers,omitempty"`
// Mode keep container replace mode

View file

@ -73,12 +73,12 @@ type ServerGroupSpecSecurityContext struct {
// SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.
// +doc/type: core.SeccompProfile
// +doc/link: Documentation of core.SeccompProfile|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#seccompprofile-v1-core
// +doc/link: Documentation of core.SeccompProfile|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#seccompprofile-v1-core
SeccompProfile *core.SeccompProfile `json:"seccompProfile,omitempty" protobuf:"bytes,11,opt,name=seccompProfile"`
// SELinuxOptions are the labels to be applied to the container
// +doc/type: core.SELinuxOptions
// +doc/link: Documentation of core.SELinuxOptions|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#selinuxoptions-v1-core
// +doc/link: Documentation of core.SELinuxOptions|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#selinuxoptions-v1-core
SELinuxOptions *core.SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,3,opt,name=seLinuxOptions"`
}

View file

@ -33,6 +33,7 @@ import (
arangodOptions "github.com/arangodb/kube-arangodb/pkg/util/arangod/options"
arangosyncOptions "github.com/arangodb/kube-arangodb/pkg/util/arangosync/options"
"github.com/arangodb/kube-arangodb/pkg/util/errors"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
// ServerGroupShutdownMethod enum of possible shutdown methods
@ -93,7 +94,7 @@ type ServerGroupSpec struct {
StorageClassName *string `json:"storageClassName,omitempty"`
// Resources holds resource requests & limits
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources core.ResourceRequirements `json:"resources,omitempty"`
// OverrideDetectedTotalMemory determines if memory should be overridden based on values in resources.
// If is set to true and Container Memory Limits are set, it sets Container Environment Variable `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` to the value from the Container Memory Limits.
@ -120,7 +121,7 @@ type ServerGroupSpec struct {
// - `node.alpha.kubernetes.io/unreachable` (will be removed in future version)
// For more information on tolerations, consult the https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
// +doc/type: []core.Toleration
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#toleration-v1-core
Tolerations []core.Toleration `json:"tolerations,omitempty"`
// Annotations specified the annotations added to Pods in this group.
// Annotations are merged with `spec.annotations`.
@ -163,7 +164,7 @@ type ServerGroupSpec struct {
// with size as specified by `spec.<group>.resources.requests.storage` will be created. In that case `storage`
// and `iops` is not forwarded to the pods resource requirements.
// +doc/type: core.PersistentVolumeClaim
// +doc/link: Documentation of core.PersistentVolumeClaim|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaim-v1-core
// +doc/link: Documentation of core.PersistentVolumeClaim|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#persistentvolumeclaim-v1-core
VolumeClaimTemplate *core.PersistentVolumeClaim `json:"volumeClaimTemplate,omitempty"`
// VolumeResizeMode specified resize mode for PVCs and PVs
// +doc/enum: runtime|PVC will be resized in Pod runtime (EKS, GKE)
@ -176,22 +177,22 @@ type ServerGroupSpec struct {
VolumeAllowShrink *bool `json:"volumeAllowShrink,omitempty"`
// AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions
// +doc/type: core.PodAntiAffinity
// +doc/link: Documentation of core.Pod.AntiAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podantiaffinity-v1-core
// +doc/link: Documentation of core.Pod.AntiAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podantiaffinity-v1-core
AntiAffinity *core.PodAntiAffinity `json:"antiAffinity,omitempty"`
// Affinity specified additional affinity settings in ArangoDB Pod definitions
// +doc/type: core.PodAffinity
// +doc/link: Documentation of core.PodAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podaffinity-v1-core
// +doc/link: Documentation of core.PodAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podaffinity-v1-core
Affinity *core.PodAffinity `json:"affinity,omitempty"`
// NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions
// +doc/type: core.NodeAffinity
// +doc/link: Documentation of code.NodeAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#nodeaffinity-v1-core
// +doc/link: Documentation of code.NodeAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#nodeaffinity-v1-core
NodeAffinity *core.NodeAffinity `json:"nodeAffinity,omitempty"`
// SidecarCoreNames is a list of sidecar containers which must run in the pod.
// Some names (e.g.: "server", "worker") are reserved, and they don't have any impact.
SidecarCoreNames []string `json:"sidecarCoreNames,omitempty"`
// Sidecars specifies a list of additional containers to be started
// +doc/type: []core.Container
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#container-v1-core
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#container-v1-core
Sidecars []core.Container `json:"sidecars,omitempty"`
// SecurityContext specifies additional `securityContext` settings in ArangoDB Pod definitions.
// This is similar (but not fully compatible) to k8s SecurityContext definition.
@ -201,7 +202,7 @@ type ServerGroupSpec struct {
Volumes ServerGroupSpecVolumes `json:"volumes,omitempty"`
// VolumeMounts define list of volume mounts mounted into server container
// +doc/type: []ServerGroupSpecVolumeMount
// +doc/link: Documentation of ServerGroupSpecVolumeMount|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#volumemount-v1-core
// +doc/link: Documentation of ServerGroupSpecVolumeMount|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#volumemount-v1-core
VolumeMounts ServerGroupSpecVolumeMounts `json:"volumeMounts,omitempty"`
// EphemeralVolumes keeps information about ephemeral volumes.
EphemeralVolumes *EphemeralVolumes `json:"ephemeralVolumes,omitempty"`
@ -638,11 +639,11 @@ func (s *ServerGroupSpec) SetDefaults(group ServerGroup, used bool, mode Deploym
core.ReadWriteOnce,
},
VolumeMode: &volumeMode,
Resources: core.ResourceRequirements{
Resources: kresources.ExtractStorageResourceRequirement(core.ResourceRequirements{
Requests: core.ResourceList{
core.ResourceStorage: resource.MustParse("8Gi"),
},
},
}),
},
}
}

View file

@ -129,27 +129,27 @@ type ServerGroupSpecVolume struct {
// Secret which should be mounted into pod
// +doc/type: core.SecretVolumeSource
// +doc/link: Documentation of core.SecretVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#secretvolumesource-v1-core
// +doc/link: Documentation of core.SecretVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretvolumesource-v1-core
Secret *ServerGroupSpecVolumeSecret `json:"secret,omitempty"`
// ConfigMap which should be mounted into pod
// +doc/type: core.ConfigMapVolumeSource
// +doc/link: Documentation of core.ConfigMapVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#configmapvolumesource-v1-core
// +doc/link: Documentation of core.ConfigMapVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#configmapvolumesource-v1-core
ConfigMap *ServerGroupSpecVolumeConfigMap `json:"configMap,omitempty"`
// EmptyDir
// +doc/type: core.EmptyDirVolumeSource
// +doc/link: Documentation of core.EmptyDirVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#emptydirvolumesource-v1-core
// +doc/link: Documentation of core.EmptyDirVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#emptydirvolumesource-v1-core
EmptyDir *ServerGroupSpecVolumeEmptyDir `json:"emptyDir,omitempty"`
// HostPath
// +doc/type: core.HostPathVolumeSource
// +doc/link: Documentation of core.HostPathVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#hostpathvolumesource-v1-core
// +doc/link: Documentation of core.HostPathVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#hostpathvolumesource-v1-core
HostPath *ServerGroupSpecVolumeHostPath `json:"hostPath,omitempty"`
// PersistentVolumeClaim
// +doc/type: core.PersistentVolumeClaimVolumeSource
// +doc/link: Documentation of core.PersistentVolumeClaimVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaimvolumesource-v1-core
// +doc/link: Documentation of core.PersistentVolumeClaimVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#persistentvolumeclaimvolumesource-v1-core
PersistentVolumeClaim *ServerGroupSpecVolumePersistentVolumeClaim `json:"persistentVolumeClaim,omitempty"`
}

View file

@ -32,7 +32,7 @@ type ServerIDGroupSpec struct {
Args []string `json:"args,omitempty"`
// Tolerations specifies the tolerations added to Pods in this group.
// +doc/type: []core.Toleration
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#toleration-v1-core
Tolerations []core.Toleration `json:"tolerations,omitempty"`
// NodeSelector specifies a set of selectors for nodes
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
@ -40,15 +40,15 @@ type ServerIDGroupSpec struct {
PriorityClassName string `json:"priorityClassName,omitempty"`
// AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions
// +doc/type: core.PodAntiAffinity
// +doc/link: Documentation of core.Pod.AntiAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podantiaffinity-v1-core
// +doc/link: Documentation of core.Pod.AntiAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podantiaffinity-v1-core
AntiAffinity *core.PodAntiAffinity `json:"antiAffinity,omitempty"`
// Affinity specified additional affinity settings in ArangoDB Pod definitions
// +doc/type: core.PodAffinity
// +doc/link: Documentation of core.PodAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podaffinity-v1-core
// +doc/link: Documentation of core.PodAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podaffinity-v1-core
Affinity *core.PodAffinity `json:"affinity,omitempty"`
// NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions
// +doc/type: core.NodeAffinity
// +doc/link: Documentation of code.NodeAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#nodeaffinity-v1-core
// +doc/link: Documentation of code.NodeAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#nodeaffinity-v1-core
NodeAffinity *core.NodeAffinity `json:"nodeAffinity,omitempty"`
// ServiceAccountName specifies the name of the service account used for Pods in this group.
ServiceAccountName *string `json:"serviceAccountName,omitempty"`
@ -56,7 +56,7 @@ type ServerIDGroupSpec struct {
SecurityContext *ServerGroupSpecSecurityContext `json:"securityContext,omitempty"`
// Resources holds resource requests & limits
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources *core.ResourceRequirements `json:"resources,omitempty"`
}

View file

@ -50,7 +50,7 @@ func GetArangoMemberPodTemplate(pod *core.PodTemplateSpec, podSpecChecksum strin
type ArangoMemberPodTemplate struct {
// PodSpec specifies the Pod Spec used for this Member.
// +doc/type: core.PodTemplateSpec
// +doc/link: Documentation of core.PodTemplateSpec|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podtemplatespec-v1-core
// +doc/link: Documentation of core.PodTemplateSpec|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podtemplatespec-v1-core
PodSpec *core.PodTemplateSpec `json:"podSpec,omitempty"`
// PodSpecChecksum keep the Pod Spec Checksum (without ignored fields).

View file

@ -29,12 +29,12 @@ import (
type ArangoMemberSpecOverrides struct {
// VolumeClaimTemplate specifies a template for volume claims. Overrides template provided on the group level.
// +doc/type: core.PersistentVolumeClaim
// +doc/link: Documentation of core.PersistentVolumeClaim|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaim-v1-core
// +doc/link: Documentation of core.PersistentVolumeClaim|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#persistentvolumeclaim-v1-core
VolumeClaimTemplate *core.PersistentVolumeClaim `json:"volumeClaimTemplate,omitempty"`
// Resources holds resource requests & limits. Overrides template provided on the group level.
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources core.ResourceRequirements `json:"resources,omitempty"`
}

View file

@ -88,7 +88,7 @@ type MetricsSpec struct {
Authentication MetricsAuthenticationSpec `json:"authentication,omitempty"`
// Resources holds resource requests & limits
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources core.ResourceRequirements `json:"resources,omitempty"`
// Mode define metrics exported mode

View file

@ -27,7 +27,7 @@ import (
type LifecycleSpec struct {
// Resources holds resource requests & limits
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources core.ResourceRequirements `json:"resources,omitempty"`
}

View file

@ -88,7 +88,7 @@ type MemberStatus struct {
// Deprecated
// SideCarSpecs contains map of specifications specified for side cars
// +doc/type: map[string]core.Container
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#container-v1-core
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#container-v1-core
SideCarSpecs map[string]core.Container `json:"sidecars-specs,omitempty"`
// Deprecated
// PodName holds the name of the Pod that currently runs this member

View file

@ -60,7 +60,7 @@ func (e *EphemeralVolumes) getTempSize(d *resource.Quantity) *resource.Quantity
type EphemeralVolume struct {
// Size define size of the ephemeral volume
// +doc/type: resource.Quantity
// +doc/link: Documentation of resource.Quantity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#quantity-resource-core
// +doc/link: Documentation of resource.Quantity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#quantity-resource-core
Size *resource.Quantity `json:"size"`
}

View file

@ -87,7 +87,7 @@ const (
type ServerGroupInitContainers struct {
// Containers contains list of containers
// +doc/type: []core.Container
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#container-v1-core
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#container-v1-core
Containers []core.Container `json:"containers,omitempty"`
// Mode keep container replace mode

View file

@ -73,12 +73,12 @@ type ServerGroupSpecSecurityContext struct {
// SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.
// +doc/type: core.SeccompProfile
// +doc/link: Documentation of core.SeccompProfile|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#seccompprofile-v1-core
// +doc/link: Documentation of core.SeccompProfile|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#seccompprofile-v1-core
SeccompProfile *core.SeccompProfile `json:"seccompProfile,omitempty" protobuf:"bytes,11,opt,name=seccompProfile"`
// SELinuxOptions are the labels to be applied to the container
// +doc/type: core.SELinuxOptions
// +doc/link: Documentation of core.SELinuxOptions|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#selinuxoptions-v1-core
// +doc/link: Documentation of core.SELinuxOptions|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#selinuxoptions-v1-core
SELinuxOptions *core.SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,3,opt,name=seLinuxOptions"`
}

View file

@ -33,6 +33,7 @@ import (
arangodOptions "github.com/arangodb/kube-arangodb/pkg/util/arangod/options"
arangosyncOptions "github.com/arangodb/kube-arangodb/pkg/util/arangosync/options"
"github.com/arangodb/kube-arangodb/pkg/util/errors"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
// ServerGroupShutdownMethod enum of possible shutdown methods
@ -93,7 +94,7 @@ type ServerGroupSpec struct {
StorageClassName *string `json:"storageClassName,omitempty"`
// Resources holds resource requests & limits
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources core.ResourceRequirements `json:"resources,omitempty"`
// OverrideDetectedTotalMemory determines if memory should be overridden based on values in resources.
// If is set to true and Container Memory Limits are set, it sets Container Environment Variable `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` to the value from the Container Memory Limits.
@ -120,7 +121,7 @@ type ServerGroupSpec struct {
// - `node.alpha.kubernetes.io/unreachable` (will be removed in future version)
// For more information on tolerations, consult the https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
// +doc/type: []core.Toleration
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#toleration-v1-core
Tolerations []core.Toleration `json:"tolerations,omitempty"`
// Annotations specified the annotations added to Pods in this group.
// Annotations are merged with `spec.annotations`.
@ -163,7 +164,7 @@ type ServerGroupSpec struct {
// with size as specified by `spec.<group>.resources.requests.storage` will be created. In that case `storage`
// and `iops` is not forwarded to the pods resource requirements.
// +doc/type: core.PersistentVolumeClaim
// +doc/link: Documentation of core.PersistentVolumeClaim|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaim-v1-core
// +doc/link: Documentation of core.PersistentVolumeClaim|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#persistentvolumeclaim-v1-core
VolumeClaimTemplate *core.PersistentVolumeClaim `json:"volumeClaimTemplate,omitempty"`
// VolumeResizeMode specified resize mode for PVCs and PVs
// +doc/enum: runtime|PVC will be resized in Pod runtime (EKS, GKE)
@ -176,22 +177,22 @@ type ServerGroupSpec struct {
VolumeAllowShrink *bool `json:"volumeAllowShrink,omitempty"`
// AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions
// +doc/type: core.PodAntiAffinity
// +doc/link: Documentation of core.Pod.AntiAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podantiaffinity-v1-core
// +doc/link: Documentation of core.Pod.AntiAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podantiaffinity-v1-core
AntiAffinity *core.PodAntiAffinity `json:"antiAffinity,omitempty"`
// Affinity specified additional affinity settings in ArangoDB Pod definitions
// +doc/type: core.PodAffinity
// +doc/link: Documentation of core.PodAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podaffinity-v1-core
// +doc/link: Documentation of core.PodAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podaffinity-v1-core
Affinity *core.PodAffinity `json:"affinity,omitempty"`
// NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions
// +doc/type: core.NodeAffinity
// +doc/link: Documentation of code.NodeAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#nodeaffinity-v1-core
// +doc/link: Documentation of code.NodeAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#nodeaffinity-v1-core
NodeAffinity *core.NodeAffinity `json:"nodeAffinity,omitempty"`
// SidecarCoreNames is a list of sidecar containers which must run in the pod.
// Some names (e.g.: "server", "worker") are reserved, and they don't have any impact.
SidecarCoreNames []string `json:"sidecarCoreNames,omitempty"`
// Sidecars specifies a list of additional containers to be started
// +doc/type: []core.Container
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#container-v1-core
// +doc/link: Documentation of core.Container|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#container-v1-core
Sidecars []core.Container `json:"sidecars,omitempty"`
// SecurityContext specifies additional `securityContext` settings in ArangoDB Pod definitions.
// This is similar (but not fully compatible) to k8s SecurityContext definition.
@ -201,7 +202,7 @@ type ServerGroupSpec struct {
Volumes ServerGroupSpecVolumes `json:"volumes,omitempty"`
// VolumeMounts define list of volume mounts mounted into server container
// +doc/type: []ServerGroupSpecVolumeMount
// +doc/link: Documentation of ServerGroupSpecVolumeMount|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#volumemount-v1-core
// +doc/link: Documentation of ServerGroupSpecVolumeMount|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#volumemount-v1-core
VolumeMounts ServerGroupSpecVolumeMounts `json:"volumeMounts,omitempty"`
// EphemeralVolumes keeps information about ephemeral volumes.
EphemeralVolumes *EphemeralVolumes `json:"ephemeralVolumes,omitempty"`
@ -638,11 +639,11 @@ func (s *ServerGroupSpec) SetDefaults(group ServerGroup, used bool, mode Deploym
core.ReadWriteOnce,
},
VolumeMode: &volumeMode,
Resources: core.ResourceRequirements{
Resources: kresources.ExtractStorageResourceRequirement(core.ResourceRequirements{
Requests: core.ResourceList{
core.ResourceStorage: resource.MustParse("8Gi"),
},
},
}),
},
}
}

View file

@ -129,27 +129,27 @@ type ServerGroupSpecVolume struct {
// Secret which should be mounted into pod
// +doc/type: core.SecretVolumeSource
// +doc/link: Documentation of core.SecretVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#secretvolumesource-v1-core
// +doc/link: Documentation of core.SecretVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#secretvolumesource-v1-core
Secret *ServerGroupSpecVolumeSecret `json:"secret,omitempty"`
// ConfigMap which should be mounted into pod
// +doc/type: core.ConfigMapVolumeSource
// +doc/link: Documentation of core.ConfigMapVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#configmapvolumesource-v1-core
// +doc/link: Documentation of core.ConfigMapVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#configmapvolumesource-v1-core
ConfigMap *ServerGroupSpecVolumeConfigMap `json:"configMap,omitempty"`
// EmptyDir
// +doc/type: core.EmptyDirVolumeSource
// +doc/link: Documentation of core.EmptyDirVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#emptydirvolumesource-v1-core
// +doc/link: Documentation of core.EmptyDirVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#emptydirvolumesource-v1-core
EmptyDir *ServerGroupSpecVolumeEmptyDir `json:"emptyDir,omitempty"`
// HostPath
// +doc/type: core.HostPathVolumeSource
// +doc/link: Documentation of core.HostPathVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#hostpathvolumesource-v1-core
// +doc/link: Documentation of core.HostPathVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#hostpathvolumesource-v1-core
HostPath *ServerGroupSpecVolumeHostPath `json:"hostPath,omitempty"`
// PersistentVolumeClaim
// +doc/type: core.PersistentVolumeClaimVolumeSource
// +doc/link: Documentation of core.PersistentVolumeClaimVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#persistentvolumeclaimvolumesource-v1-core
// +doc/link: Documentation of core.PersistentVolumeClaimVolumeSource|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#persistentvolumeclaimvolumesource-v1-core
PersistentVolumeClaim *ServerGroupSpecVolumePersistentVolumeClaim `json:"persistentVolumeClaim,omitempty"`
}

View file

@ -32,7 +32,7 @@ type ServerIDGroupSpec struct {
Args []string `json:"args,omitempty"`
// Tolerations specifies the tolerations added to Pods in this group.
// +doc/type: []core.Toleration
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#toleration-v1-core
Tolerations []core.Toleration `json:"tolerations,omitempty"`
// NodeSelector specifies a set of selectors for nodes
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
@ -40,15 +40,15 @@ type ServerIDGroupSpec struct {
PriorityClassName string `json:"priorityClassName,omitempty"`
// AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions
// +doc/type: core.PodAntiAffinity
// +doc/link: Documentation of core.Pod.AntiAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podantiaffinity-v1-core
// +doc/link: Documentation of core.Pod.AntiAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podantiaffinity-v1-core
AntiAffinity *core.PodAntiAffinity `json:"antiAffinity,omitempty"`
// Affinity specified additional affinity settings in ArangoDB Pod definitions
// +doc/type: core.PodAffinity
// +doc/link: Documentation of core.PodAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podaffinity-v1-core
// +doc/link: Documentation of core.PodAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#podaffinity-v1-core
Affinity *core.PodAffinity `json:"affinity,omitempty"`
// NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions
// +doc/type: core.NodeAffinity
// +doc/link: Documentation of code.NodeAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#nodeaffinity-v1-core
// +doc/link: Documentation of code.NodeAffinity|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#nodeaffinity-v1-core
NodeAffinity *core.NodeAffinity `json:"nodeAffinity,omitempty"`
// ServiceAccountName specifies the name of the service account used for Pods in this group.
ServiceAccountName *string `json:"serviceAccountName,omitempty"`
@ -56,7 +56,7 @@ type ServerIDGroupSpec struct {
SecurityContext *ServerGroupSpecSecurityContext `json:"securityContext,omitempty"`
// Resources holds resource requests & limits
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources *core.ResourceRequirements `json:"resources,omitempty"`
}

View file

@ -24,7 +24,7 @@ import (
core "k8s.io/api/core/v1"
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
var _ interfaces.Container[Environments] = &Environments{}
@ -32,12 +32,12 @@ var _ interfaces.Container[Environments] = &Environments{}
type Environments struct {
// Env keeps the information about environment variables provided to the container
// +doc/type: core.EnvVar
// +doc/link: Kubernetes Docs|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core
// +doc/link: Kubernetes Docs|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core
Env []core.EnvVar `json:"env,omitempty"`
// EnvFrom keeps the information about environment variable sources provided to the container
// +doc/type: core.EnvFromSource
// +doc/link: Kubernetes Docs|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core
// +doc/link: Kubernetes Docs|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core
EnvFrom []core.EnvFromSource `json:"envFrom,omitempty"`
}
@ -46,8 +46,8 @@ func (e *Environments) Apply(_ *core.PodTemplateSpec, container *core.Container)
return nil
}
container.Env = resources.MergeEnvs(container.Env, e.Env...)
container.EnvFrom = resources.MergeEnvFrom(container.EnvFrom, e.EnvFrom...)
container.Env = kresources.MergeEnvs(container.Env, e.Env...)
container.EnvFrom = kresources.MergeEnvFrom(container.EnvFrom, e.EnvFrom...)
return nil
}
@ -66,8 +66,8 @@ func (e *Environments) With(other *Environments) *Environments {
}
return &Environments{
Env: resources.MergeEnvs(e.Env, other.Env...),
EnvFrom: resources.MergeEnvFrom(e.EnvFrom, other.EnvFrom...),
Env: kresources.MergeEnvs(e.Env, other.Env...),
EnvFrom: kresources.MergeEnvFrom(e.EnvFrom, other.EnvFrom...),
}
}

View file

@ -24,7 +24,7 @@ import (
core "k8s.io/api/core/v1"
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
var _ interfaces.Container[Lifecycle] = &Lifecycle{}
@ -59,7 +59,7 @@ func (n *Lifecycle) With(newResources *Lifecycle) *Lifecycle {
}
return &Lifecycle{
Lifecycle: resources.MergeLifecycle(n.Lifecycle, newResources.Lifecycle),
Lifecycle: kresources.MergeLifecycle(n.Lifecycle, newResources.Lifecycle),
}
}

View file

@ -25,7 +25,7 @@ import (
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util/errors"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
var _ interfaces.Container[Networking] = &Networking{}
@ -78,7 +78,7 @@ func (n *Networking) With(newResources *Networking) *Networking {
return n.DeepCopy()
}
return &Networking{Ports: resources.MergeContainerPorts(n.Ports, newResources.Ports...)}
return &Networking{Ports: kresources.MergeContainerPorts(n.Ports, newResources.Ports...)}
}
func (n *Networking) Validate() error {

View file

@ -24,7 +24,7 @@ import (
core "k8s.io/api/core/v1"
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
var _ interfaces.Container[Probes] = &Probes{}
@ -76,9 +76,9 @@ func (n *Probes) With(newResources *Probes) *Probes {
}
return &Probes{
LivenessProbe: resources.MergeProbes(n.LivenessProbe, newResources.LivenessProbe),
ReadinessProbe: resources.MergeProbes(n.ReadinessProbe, newResources.ReadinessProbe),
StartupProbe: resources.MergeProbes(n.StartupProbe, newResources.StartupProbe),
LivenessProbe: kresources.MergeProbes(n.LivenessProbe, newResources.LivenessProbe),
ReadinessProbe: kresources.MergeProbes(n.ReadinessProbe, newResources.ReadinessProbe),
StartupProbe: kresources.MergeProbes(n.StartupProbe, newResources.StartupProbe),
}
}

View file

@ -25,7 +25,7 @@ import (
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
var _ interfaces.Container[Resources] = &Resources{}
@ -33,7 +33,7 @@ var _ interfaces.Container[Resources] = &Resources{}
type Resources struct {
// Resources holds resource requests & limits for container
// +doc/type: core.ResourceRequirements
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core
// +doc/link: Documentation of core.ResourceRequirements|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core
Resources *core.ResourceRequirements `json:"resources,omitempty"`
}
@ -60,7 +60,7 @@ func (r *Resources) With(newResources *Resources) *Resources {
return r.DeepCopy()
}
return &Resources{Resources: util.NewType(resources.MergeContainerResource(r.GetResources(), newResources.GetResources()))}
return &Resources{Resources: util.NewType(kresources.MergeContainerResource(r.GetResources(), newResources.GetResources()))}
}
func (r *Resources) GetResources() core.ResourceRequirements {
@ -70,7 +70,7 @@ func (r *Resources) GetResources() core.ResourceRequirements {
local := r.Resources.DeepCopy()
local.Limits = resources.UpscaleOptionalContainerResourceList(local.Limits, local.Requests)
local.Limits = kresources.UpscaleOptionalContainerResourceList(local.Limits, local.Requests)
return *local
}

View file

@ -24,7 +24,7 @@ import (
core "k8s.io/api/core/v1"
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
var _ interfaces.Container[VolumeMounts] = &VolumeMounts{}
@ -61,7 +61,7 @@ func (v *VolumeMounts) With(other *VolumeMounts) *VolumeMounts {
}
return &VolumeMounts{
VolumeMounts: resources.MergeVolumeMounts(v.VolumeMounts, other.VolumeMounts...),
VolumeMounts: kresources.MergeVolumeMounts(v.VolumeMounts, other.VolumeMounts...),
}
}

View file

@ -25,7 +25,7 @@ import (
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util"
"github.com/arangodb/kube-arangodb/pkg/util/affinity"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/tolerations"
)
@ -147,7 +147,7 @@ func (s *Scheduling) With(other *Scheduling) *Scheduling {
current.Tolerations = tolerations.AddTolerationsIfNotFound(new.Tolerations, other.Tolerations...)
// Affinity
current.Affinity = affinity.Merge(current.Affinity, new.Affinity)
current.Affinity = kresources.Merge(current.Affinity, new.Affinity)
// return

View file

@ -24,7 +24,7 @@ import (
core "k8s.io/api/core/v1"
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
var _ interfaces.Pod[Volumes] = &Volumes{}
@ -62,7 +62,7 @@ func (v *Volumes) With(other *Volumes) *Volumes {
}
return &Volumes{
Volumes: resources.MergeVolumes(v.Volumes, other.Volumes...),
Volumes: kresources.MergeVolumes(v.Volumes, other.Volumes...),
}
}

View file

@ -37,7 +37,7 @@ type LocalStorageSpec struct {
// Tolerations specifies the tolerations added to pods of storage provisioner
// +doc/type: []core.Toleration
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core
// +doc/link: Documentation of core.Toleration|https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#toleration-v1-core
Tolerations []core.Toleration `json:"tolerations,omitempty"`
// NodeSelector setting specifies which nodes the operator will provision persistent volumes on.
NodeSelector map[string]string `json:"nodeSelector,omitempty"`

View file

@ -272,6 +272,14 @@ v1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -327,6 +335,14 @@ v1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -383,6 +399,14 @@ v1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -438,6 +462,14 @@ v1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -584,6 +616,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -623,6 +661,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1113,6 +1157,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1152,6 +1202,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1648,6 +1704,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1687,6 +1749,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -2486,13 +2554,6 @@ v1:
type: object
resources:
properties:
claims:
items:
properties:
name:
type: string
type: object
type: array
limits:
additionalProperties:
type: string
@ -2524,6 +2585,8 @@ v1:
type: object
storageClassName:
type: string
volumeAttributesClassName:
type: string
volumeMode:
type: string
volumeName:
@ -2684,6 +2747,37 @@ v1:
sources:
items:
properties:
clusterTrustBundle:
properties:
labelSelector:
properties:
matchExpressions:
items:
properties:
key:
type: string
operator:
type: string
values:
items:
type: string
type: array
type: object
type: array
matchLabels:
additionalProperties:
type: string
type: object
type: object
name:
type: string
optional:
type: boolean
path:
type: string
signerName:
type: string
type: object
configMap:
properties:
items:

File diff suppressed because it is too large Load diff

View file

@ -152,13 +152,6 @@ v1:
type: object
resources:
properties:
claims:
items:
properties:
name:
type: string
type: object
type: array
limits:
additionalProperties:
type: string
@ -190,6 +183,8 @@ v1:
type: object
storageClassName:
type: string
volumeAttributesClassName:
type: string
volumeMode:
type: string
volumeName:
@ -232,6 +227,15 @@ v1:
type: string
type: object
type: array
currentVolumeAttributesClassName:
type: string
modifyVolumeStatus:
properties:
status:
type: string
targetVolumeAttributesClassName:
type: string
type: object
phase:
type: string
type: object
@ -432,6 +436,14 @@ v1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -487,6 +499,14 @@ v1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -543,6 +563,14 @@ v1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -598,6 +626,14 @@ v1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -744,6 +780,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -783,6 +825,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1273,6 +1321,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1312,6 +1366,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1808,6 +1868,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1847,6 +1913,12 @@ v1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -2646,13 +2718,6 @@ v1:
type: object
resources:
properties:
claims:
items:
properties:
name:
type: string
type: object
type: array
limits:
additionalProperties:
type: string
@ -2684,6 +2749,8 @@ v1:
type: object
storageClassName:
type: string
volumeAttributesClassName:
type: string
volumeMode:
type: string
volumeName:
@ -2844,6 +2911,37 @@ v1:
sources:
items:
properties:
clusterTrustBundle:
properties:
labelSelector:
properties:
matchExpressions:
items:
properties:
key:
type: string
operator:
type: string
values:
items:
type: string
type: array
type: object
type: array
matchLabels:
additionalProperties:
type: string
type: object
type: object
name:
type: string
optional:
type: boolean
path:
type: string
signerName:
type: string
type: object
configMap:
properties:
items:
@ -3203,13 +3301,6 @@ v1alpha:
type: object
resources:
properties:
claims:
items:
properties:
name:
type: string
type: object
type: array
limits:
additionalProperties:
type: string
@ -3241,6 +3332,8 @@ v1alpha:
type: object
storageClassName:
type: string
volumeAttributesClassName:
type: string
volumeMode:
type: string
volumeName:
@ -3283,6 +3376,15 @@ v1alpha:
type: string
type: object
type: array
currentVolumeAttributesClassName:
type: string
modifyVolumeStatus:
properties:
status:
type: string
targetVolumeAttributesClassName:
type: string
type: object
phase:
type: string
type: object
@ -3483,6 +3585,14 @@ v1alpha:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -3538,6 +3648,14 @@ v1alpha:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -3594,6 +3712,14 @@ v1alpha:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -3649,6 +3775,14 @@ v1alpha:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -3795,6 +3929,12 @@ v1alpha:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -3834,6 +3974,12 @@ v1alpha:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -4324,6 +4470,12 @@ v1alpha:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -4363,6 +4515,12 @@ v1alpha:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -4859,6 +5017,12 @@ v1alpha:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -4898,6 +5062,12 @@ v1alpha:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -5697,13 +5867,6 @@ v1alpha:
type: object
resources:
properties:
claims:
items:
properties:
name:
type: string
type: object
type: array
limits:
additionalProperties:
type: string
@ -5735,6 +5898,8 @@ v1alpha:
type: object
storageClassName:
type: string
volumeAttributesClassName:
type: string
volumeMode:
type: string
volumeName:
@ -5895,6 +6060,37 @@ v1alpha:
sources:
items:
properties:
clusterTrustBundle:
properties:
labelSelector:
properties:
matchExpressions:
items:
properties:
key:
type: string
operator:
type: string
values:
items:
type: string
type: array
type: object
type: array
matchLabels:
additionalProperties:
type: string
type: object
type: object
name:
type: string
optional:
type: boolean
path:
type: string
signerName:
type: string
type: object
configMap:
properties:
items:
@ -6254,13 +6450,6 @@ v2alpha1:
type: object
resources:
properties:
claims:
items:
properties:
name:
type: string
type: object
type: array
limits:
additionalProperties:
type: string
@ -6292,6 +6481,8 @@ v2alpha1:
type: object
storageClassName:
type: string
volumeAttributesClassName:
type: string
volumeMode:
type: string
volumeName:
@ -6334,6 +6525,15 @@ v2alpha1:
type: string
type: object
type: array
currentVolumeAttributesClassName:
type: string
modifyVolumeStatus:
properties:
status:
type: string
targetVolumeAttributesClassName:
type: string
type: object
phase:
type: string
type: object
@ -6534,6 +6734,14 @@ v2alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -6589,6 +6797,14 @@ v2alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -6645,6 +6861,14 @@ v2alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -6700,6 +6924,14 @@ v2alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -6846,6 +7078,12 @@ v2alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -6885,6 +7123,12 @@ v2alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -7375,6 +7619,12 @@ v2alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -7414,6 +7664,12 @@ v2alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -7910,6 +8166,12 @@ v2alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -7949,6 +8211,12 @@ v2alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -8748,13 +9016,6 @@ v2alpha1:
type: object
resources:
properties:
claims:
items:
properties:
name:
type: string
type: object
type: array
limits:
additionalProperties:
type: string
@ -8786,6 +9047,8 @@ v2alpha1:
type: object
storageClassName:
type: string
volumeAttributesClassName:
type: string
volumeMode:
type: string
volumeName:
@ -8946,6 +9209,37 @@ v2alpha1:
sources:
items:
properties:
clusterTrustBundle:
properties:
labelSelector:
properties:
matchExpressions:
items:
properties:
key:
type: string
operator:
type: string
values:
items:
type: string
type: array
type: object
type: array
matchLabels:
additionalProperties:
type: string
type: object
type: object
name:
type: string
optional:
type: boolean
path:
type: string
signerName:
type: string
type: object
configMap:
properties:
items:

File diff suppressed because it is too large Load diff

View file

@ -266,6 +266,14 @@ v1alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -321,6 +329,14 @@ v1alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -377,6 +393,14 @@ v1alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -432,6 +456,14 @@ v1alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -578,6 +610,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -617,6 +655,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1107,6 +1151,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1146,6 +1196,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1642,6 +1698,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1681,6 +1743,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -2480,13 +2548,6 @@ v1alpha1:
type: object
resources:
properties:
claims:
items:
properties:
name:
type: string
type: object
type: array
limits:
additionalProperties:
type: string
@ -2518,6 +2579,8 @@ v1alpha1:
type: object
storageClassName:
type: string
volumeAttributesClassName:
type: string
volumeMode:
type: string
volumeName:
@ -2678,6 +2741,37 @@ v1alpha1:
sources:
items:
properties:
clusterTrustBundle:
properties:
labelSelector:
properties:
matchExpressions:
items:
properties:
key:
type: string
operator:
type: string
values:
items:
type: string
type: array
type: object
type: array
matchLabels:
additionalProperties:
type: string
type: object
type: object
name:
type: string
optional:
type: boolean
path:
type: string
signerName:
type: string
type: object
configMap:
properties:
items:

View file

@ -351,6 +351,14 @@ v1alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -406,6 +414,14 @@ v1alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -462,6 +478,14 @@ v1alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -517,6 +541,14 @@ v1alpha1:
type: string
type: object
type: object
matchLabelKeys:
items:
type: string
type: array
mismatchLabelKeys:
items:
type: string
type: array
namespaceSelector:
properties:
matchExpressions:
@ -663,6 +695,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -702,6 +740,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1192,6 +1236,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1231,6 +1281,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1727,6 +1783,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -1766,6 +1828,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -2565,13 +2633,6 @@ v1alpha1:
type: object
resources:
properties:
claims:
items:
properties:
name:
type: string
type: object
type: array
limits:
additionalProperties:
type: string
@ -2603,6 +2664,8 @@ v1alpha1:
type: object
storageClassName:
type: string
volumeAttributesClassName:
type: string
volumeMode:
type: string
volumeName:
@ -2763,6 +2826,37 @@ v1alpha1:
sources:
items:
properties:
clusterTrustBundle:
properties:
labelSelector:
properties:
matchExpressions:
items:
properties:
key:
type: string
operator:
type: string
values:
items:
type: string
type: array
type: object
type: array
matchLabels:
additionalProperties:
type: string
type: object
type: object
name:
type: string
optional:
type: boolean
path:
type: string
signerName:
type: string
type: object
configMap:
properties:
items:

View file

@ -179,6 +179,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:
@ -218,6 +224,12 @@ v1alpha1:
scheme:
type: string
type: object
sleep:
properties:
seconds:
format: int64
type: integer
type: object
tcpSocket:
properties:
host:

View file

@ -1,7 +1,7 @@
//
// DISCLAIMER
//
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -33,7 +33,7 @@ import (
shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
"github.com/arangodb/kube-arangodb/pkg/util"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
func TestEnsurePod_ArangoDB_Core(t *testing.T) {
@ -543,7 +543,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) {
Image: testImage,
Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false),
Ports: createTestPorts(api.ServerGroupDBServers),
Resources: resources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
Resources: kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
VolumeMounts: []core.VolumeMount{
k8sutil.ArangodVolumeMount(),
},
@ -600,7 +600,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) {
Image: testImage,
Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false),
Ports: createTestPorts(api.ServerGroupDBServers),
Resources: resources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
Resources: kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
VolumeMounts: []core.VolumeMount{
k8sutil.ArangodVolumeMount(),
},
@ -660,7 +660,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) {
Image: testImage,
Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false),
Ports: createTestPorts(api.ServerGroupDBServers),
Resources: resources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
Resources: kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
VolumeMounts: []core.VolumeMount{
k8sutil.ArangodVolumeMount(),
},
@ -1194,7 +1194,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) {
ImagePullPolicy: core.PullIfNotPresent,
SecurityContext: securityContext.NewSecurityContext(),
},
testArangodbInternalExporterContainer(false, true, resources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered)),
testArangodbInternalExporterContainer(false, true, kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered)),
},
RestartPolicy: core.RestartPolicyNever,
TerminationGracePeriodSeconds: &defaultDBServerTerminationTimeout,
@ -1249,7 +1249,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) {
k8sutil.LifecycleVolume(),
},
InitContainers: []core.Container{
createTestLifecycleContainer(resources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered)),
createTestLifecycleContainer(kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered)),
},
Containers: []core.Container{
{

View file

@ -1,7 +1,7 @@
//
// DISCLAIMER
//
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -32,7 +32,7 @@ import (
"github.com/arangodb/kube-arangodb/pkg/deployment/resources"
"github.com/arangodb/kube-arangodb/pkg/util"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
resources2 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
type envFunc func() []core.EnvVar
@ -135,7 +135,7 @@ func TestEnsurePod_ArangoDB_Resources(t *testing.T) {
Image: testImage,
Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false),
Ports: createTestPorts(api.ServerGroupAgents),
Resources: resources2.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
Resources: kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
VolumeMounts: []core.VolumeMount{
k8sutil.ArangodVolumeMount(),
},
@ -195,7 +195,7 @@ func TestEnsurePod_ArangoDB_Resources(t *testing.T) {
Image: testImage,
Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false),
Ports: createTestPorts(api.ServerGroupAgents),
Resources: resources2.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
Resources: kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
VolumeMounts: []core.VolumeMount{
k8sutil.ArangodVolumeMount(),
},
@ -253,7 +253,7 @@ func TestEnsurePod_ArangoDB_Resources(t *testing.T) {
Image: testImage,
Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false),
Ports: createTestPorts(api.ServerGroupAgents),
Resources: resources2.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
Resources: kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
VolumeMounts: []core.VolumeMount{
k8sutil.ArangodVolumeMount(),
},

View file

@ -1,7 +1,7 @@
//
// DISCLAIMER
//
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -34,7 +34,7 @@ import (
"github.com/arangodb/kube-arangodb/pkg/util/constants"
"github.com/arangodb/kube-arangodb/pkg/util/errors"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
func TestEnsurePod_Sync_Error(t *testing.T) {
@ -1305,7 +1305,7 @@ func TestEnsurePod_Sync_Worker(t *testing.T) {
},
ImagePullPolicy: core.PullIfNotPresent,
Lifecycle: createTestLifecycle(api.ServerGroupSyncMasters),
Resources: resources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
Resources: kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
SecurityContext: securityContext.NewSecurityContext(),
VolumeMounts: []core.VolumeMount{
k8sutil.LifecycleVolumeMount(),
@ -1400,7 +1400,7 @@ func TestEnsurePod_Sync_Worker(t *testing.T) {
},
ImagePullPolicy: core.PullIfNotPresent,
Lifecycle: createTestLifecycle(api.ServerGroupSyncMasters),
Resources: resources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
Resources: kresources.ExtractPodAcceptedResourceRequirement(resourcesUnfiltered),
SecurityContext: securityContext.NewSecurityContext(),
VolumeMounts: []core.VolumeMount{
k8sutil.LifecycleVolumeMount(),

View file

@ -37,7 +37,6 @@ import (
"github.com/arangodb/kube-arangodb/pkg/handlers/utils"
"github.com/arangodb/kube-arangodb/pkg/logging"
"github.com/arangodb/kube-arangodb/pkg/util"
"github.com/arangodb/kube-arangodb/pkg/util/affinity"
"github.com/arangodb/kube-arangodb/pkg/util/arangod"
"github.com/arangodb/kube-arangodb/pkg/util/constants"
"github.com/arangodb/kube-arangodb/pkg/util/errors"
@ -46,6 +45,7 @@ import (
inspectorInterface "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/tolerations"
)
@ -359,26 +359,26 @@ func (i *ImageUpdatePod) GetPodAntiAffinity() *core.PodAntiAffinity {
pod.AppendPodAntiAffinityDefault(i, a)
a = affinity.MergePodAntiAffinity(a, i.spec.ID.Get().AntiAffinity)
a = kresources.MergePodAntiAffinity(a, i.spec.ID.Get().AntiAffinity)
return affinity.OptionalPodAntiAffinity(a)
return kresources.OptionalPodAntiAffinity(a)
}
func (i *ImageUpdatePod) GetPodAffinity() *core.PodAffinity {
a := &core.PodAffinity{}
a = affinity.MergePodAffinity(a, i.spec.ID.Get().Affinity)
a = kresources.MergePodAffinity(a, i.spec.ID.Get().Affinity)
return affinity.OptionalPodAffinity(a)
return kresources.OptionalPodAffinity(a)
}
func (i *ImageUpdatePod) GetNodeAffinity() *core.NodeAffinity {
a := &core.NodeAffinity{}
pod.AppendArchSelector(a, i.spec.Architecture.AsNodeSelectorRequirement())
a = affinity.MergeNodeAffinity(a, i.spec.ID.Get().NodeAffinity)
a = kresources.MergeNodeAffinity(a, i.spec.ID.Get().NodeAffinity)
return affinity.OptionalNodeAffinity(a)
return kresources.OptionalNodeAffinity(a)
}
func (i *ImageUpdatePod) Validate(_ interfaces.Inspector) error {

View file

@ -25,7 +25,7 @@ import (
shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/probes"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
// ArangodbInternalExporterContainer creates metrics container based on internal exporter
@ -55,7 +55,7 @@ func ArangodbInternalExporterContainer(image string, args []string, livenessProb
Protocol: core.ProtocolTCP,
},
},
Resources: resources.ExtractPodAcceptedResourceRequirement(res),
Resources: kresources.ExtractPodAcceptedResourceRequirement(res),
SecurityContext: k8sutil.CreateSecurityContext(groupSpec.SecurityContext),
ImagePullPolicy: core.PullIfNotPresent,
VolumeMounts: []core.VolumeMount{k8sutil.LifecycleVolumeMount()},

View file

@ -35,12 +35,11 @@ import (
"github.com/arangodb/kube-arangodb/pkg/deployment/pod"
"github.com/arangodb/kube-arangodb/pkg/deployment/topology"
"github.com/arangodb/kube-arangodb/pkg/util"
"github.com/arangodb/kube-arangodb/pkg/util/affinity"
"github.com/arangodb/kube-arangodb/pkg/util/collection"
"github.com/arangodb/kube-arangodb/pkg/util/constants"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
const (
@ -287,7 +286,7 @@ func (a *ArangoDContainer) GetEnvs() ([]core.EnvVar, []core.EnvFromSource) {
}
func (a *ArangoDContainer) GetResourceRequirements() core.ResourceRequirements {
return resources.ExtractPodAcceptedResourceRequirement(a.arangoMember.Spec.Overrides.GetResources(&a.groupSpec))
return kresources.ExtractPodAcceptedResourceRequirement(a.arangoMember.Spec.Overrides.GetResources(&a.groupSpec))
}
func (a *ArangoDContainer) GetLifecycle() (*core.Lifecycle, error) {
@ -373,21 +372,21 @@ func (m *MemberArangoDPod) GetPodAntiAffinity() *core.PodAntiAffinity {
pod.AppendPodAntiAffinityDefault(m, a)
a = affinity.MergePodAntiAffinity(a, topology.GetTopologyAffinityRules(m.context.GetName(), m.deploymentStatus, m.group, m.status).PodAntiAffinity)
a = kresources.MergePodAntiAffinity(a, topology.GetTopologyAffinityRules(m.context.GetName(), m.deploymentStatus, m.group, m.status).PodAntiAffinity)
a = affinity.MergePodAntiAffinity(a, m.groupSpec.AntiAffinity)
a = kresources.MergePodAntiAffinity(a, m.groupSpec.AntiAffinity)
return affinity.OptionalPodAntiAffinity(a)
return kresources.OptionalPodAntiAffinity(a)
}
func (m *MemberArangoDPod) GetPodAffinity() *core.PodAffinity {
a := &core.PodAffinity{}
a = affinity.MergePodAffinity(a, m.groupSpec.Affinity)
a = kresources.MergePodAffinity(a, m.groupSpec.Affinity)
a = affinity.MergePodAffinity(a, topology.GetTopologyAffinityRules(m.context.GetName(), m.deploymentStatus, m.group, m.status).PodAffinity)
a = kresources.MergePodAffinity(a, topology.GetTopologyAffinityRules(m.context.GetName(), m.deploymentStatus, m.group, m.status).PodAffinity)
return affinity.OptionalPodAffinity(a)
return kresources.OptionalPodAffinity(a)
}
func (m *MemberArangoDPod) GetNodeAffinity() *core.NodeAffinity {
@ -395,11 +394,11 @@ func (m *MemberArangoDPod) GetNodeAffinity() *core.NodeAffinity {
pod.AppendArchSelector(a, m.status.Architecture.Default(m.spec.Architecture.GetDefault()).AsNodeSelectorRequirement())
a = affinity.MergeNodeAffinity(a, m.groupSpec.NodeAffinity)
a = kresources.MergeNodeAffinity(a, m.groupSpec.NodeAffinity)
a = affinity.MergeNodeAffinity(a, topology.GetTopologyAffinityRules(m.context.GetName(), m.deploymentStatus, m.group, m.status).NodeAffinity)
a = kresources.MergeNodeAffinity(a, topology.GetTopologyAffinityRules(m.context.GetName(), m.deploymentStatus, m.group, m.status).NodeAffinity)
return affinity.OptionalNodeAffinity(a)
return kresources.OptionalNodeAffinity(a)
}
func (m *MemberArangoDPod) GetNodeSelector() map[string]string {
@ -520,7 +519,7 @@ func (m *MemberArangoDPod) GetInitContainers(cachedStatus interfaces.Inspector)
}
}
res := resources.ExtractPodInitContainerAcceptedResourceRequirement(m.GetContainerCreator().GetResourceRequirements())
res := kresources.ExtractPodInitContainerAcceptedResourceRequirement(m.GetContainerCreator().GetResourceRequirements())
initContainers = applyInitContainersResourceResources(initContainers, res)
initContainers = upscaleInitContainersResourceResources(initContainers, res)

View file

@ -36,14 +36,13 @@ import (
"github.com/arangodb/kube-arangodb/pkg/deployment/features"
"github.com/arangodb/kube-arangodb/pkg/deployment/pod"
"github.com/arangodb/kube-arangodb/pkg/handlers/utils"
"github.com/arangodb/kube-arangodb/pkg/util/affinity"
"github.com/arangodb/kube-arangodb/pkg/util/collection"
"github.com/arangodb/kube-arangodb/pkg/util/constants"
"github.com/arangodb/kube-arangodb/pkg/util/errors"
"github.com/arangodb/kube-arangodb/pkg/util/globals"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/interfaces"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
const (
@ -154,7 +153,7 @@ func (a *ArangoSyncContainer) GetProbes() (*core.Probe, *core.Probe, *core.Probe
}
func (a *ArangoSyncContainer) GetResourceRequirements() core.ResourceRequirements {
return resources.ExtractPodAcceptedResourceRequirement(a.arangoMember.Spec.Overrides.GetResources(&a.groupSpec))
return kresources.ExtractPodAcceptedResourceRequirement(a.arangoMember.Spec.Overrides.GetResources(&a.groupSpec))
}
func (a *ArangoSyncContainer) GetLifecycle() (*core.Lifecycle, error) {
@ -232,9 +231,9 @@ func (m *MemberSyncPod) GetPodAntiAffinity() *core.PodAntiAffinity {
pod.AppendPodAntiAffinityDefault(m, a)
a = affinity.MergePodAntiAffinity(a, m.groupSpec.AntiAffinity)
a = kresources.MergePodAntiAffinity(a, m.groupSpec.AntiAffinity)
return affinity.OptionalPodAntiAffinity(a)
return kresources.OptionalPodAntiAffinity(a)
}
func (m *MemberSyncPod) GetPodAffinity() *core.PodAffinity {
@ -244,9 +243,9 @@ func (m *MemberSyncPod) GetPodAffinity() *core.PodAffinity {
pod.AppendAffinityWithRole(m, a, api.ServerGroupDBServers.AsRole())
}
a = affinity.MergePodAffinity(a, m.groupSpec.Affinity)
a = kresources.MergePodAffinity(a, m.groupSpec.Affinity)
return affinity.OptionalPodAffinity(a)
return kresources.OptionalPodAffinity(a)
}
func (m *MemberSyncPod) GetNodeAffinity() *core.NodeAffinity {
@ -254,9 +253,9 @@ func (m *MemberSyncPod) GetNodeAffinity() *core.NodeAffinity {
pod.AppendArchSelector(a, m.memberStatus.Architecture.Default(m.spec.Architecture.GetDefault()).AsNodeSelectorRequirement())
a = affinity.MergeNodeAffinity(a, m.groupSpec.NodeAffinity)
a = kresources.MergeNodeAffinity(a, m.groupSpec.NodeAffinity)
return affinity.OptionalNodeAffinity(a)
return kresources.OptionalNodeAffinity(a)
}
func (m *MemberSyncPod) GetNodeSelector() map[string]string {
@ -310,7 +309,7 @@ func (m *MemberSyncPod) GetInitContainers(cachedStatus interfaces.Inspector) ([]
initContainers = append(initContainers, c)
}
res := resources.ExtractPodInitContainerAcceptedResourceRequirement(m.GetContainerCreator().GetResourceRequirements())
res := kresources.ExtractPodInitContainerAcceptedResourceRequirement(m.GetContainerCreator().GetResourceRequirements())
initContainers = applyInitContainersResourceResources(initContainers, res)
initContainers = upscaleInitContainersResourceResources(initContainers, res)

View file

@ -25,7 +25,7 @@ import (
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
"github.com/arangodb/kube-arangodb/pkg/deployment/features"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
// applyInitContainersResourceResources updates passed init containers to ensure that all resources are set (if such feature is enabled)
@ -40,7 +40,7 @@ func applyInitContainersResourceResources(initContainers []core.Container, mainC
continue
}
resources.ApplyContainerResourceRequirements(&initContainers[i], mainContainerResources)
kresources.ApplyContainerResourceRequirements(&initContainers[i], mainContainerResources)
}
return initContainers
}
@ -57,7 +57,7 @@ func upscaleInitContainersResourceResources(initContainers []core.Container, mai
continue
}
resources.UpscaleContainerResourceRequirements(&initContainers[i], mainContainerResources)
kresources.UpscaleContainerResourceRequirements(&initContainers[i], mainContainerResources)
}
return initContainers
}

View file

@ -51,6 +51,7 @@ type sharedInformerFactory struct {
lock sync.Mutex
defaultResync time.Duration
customResync map[reflect.Type]time.Duration
transform cache.TransformFunc
informers map[reflect.Type]cache.SharedIndexInformer
// startedInformers is used for tracking which informers have been started.
@ -89,6 +90,14 @@ func WithNamespace(namespace string) SharedInformerOption {
}
}
// WithTransform sets a transform on all informers.
func WithTransform(transform cache.TransformFunc) SharedInformerOption {
return func(factory *sharedInformerFactory) *sharedInformerFactory {
factory.transform = transform
return factory
}
}
// NewSharedInformerFactory constructs a new instance of sharedInformerFactory for all namespaces.
func NewSharedInformerFactory(client versioned.Interface, defaultResync time.Duration) SharedInformerFactory {
return NewSharedInformerFactoryWithOptions(client, defaultResync)
@ -193,6 +202,7 @@ func (f *sharedInformerFactory) InformerFor(obj runtime.Object, newFunc internal
}
informer = newFunc(f.client, resyncPeriod)
informer.SetTransform(f.transform)
f.informers[informerType] = informer
return informer

View file

@ -1,7 +1,7 @@
//
// DISCLAIMER
//
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -27,7 +27,7 @@ import (
core "k8s.io/api/core/v1"
"github.com/arangodb/kube-arangodb/pkg/util/constants"
resources2 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
const (
@ -74,7 +74,7 @@ func InitLifecycleContainer(image, binaryPath string, resources *core.ResourceRe
}
if resources != nil {
c.Resources = resources2.ExtractPodAcceptedResourceRequirement(*resources)
c.Resources = kresources.ExtractPodAcceptedResourceRequirement(*resources)
}
return c, nil
}

View file

@ -1,7 +1,7 @@
//
// DISCLAIMER
//
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -31,9 +31,13 @@ import (
"github.com/arangodb/kube-arangodb/pkg/util/errors"
persistentvolumeclaimv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/persistentvolumeclaim/v1"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors"
resources2 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
)
// ExtractStorageResourceRequirement filters resource requirements for Pods.
// Keep reference for backward compatibility
var ExtractStorageResourceRequirement = kresources.ExtractStorageResourceRequirement
// IsPersistentVolumeClaimMarkedForDeletion returns true if the pvc has been marked for deletion.
func IsPersistentVolumeClaimMarkedForDeletion(pvc *core.PersistentVolumeClaim) bool {
return pvc.DeletionTimestamp != nil
@ -59,16 +63,6 @@ func IsPersistentVolumeClaimResizing(pvc *core.PersistentVolumeClaim) bool {
return false
}
// ExtractStorageResourceRequirement filters resource requirements for Pods.
func ExtractStorageResourceRequirement(resources core.ResourceRequirements) core.ResourceRequirements {
filterStorage := resources2.NewPodResourceListFilter(core.ResourceStorage, "iops")
return core.ResourceRequirements{
Limits: filterStorage(resources.Limits),
Requests: filterStorage(resources.Requests),
}
}
// CreatePersistentVolumeClaim creates a persistent volume claim with given name and configuration.
// If the pvc already exists, nil is returned.
// If another error occurs, that error is returned.

View file

@ -18,7 +18,7 @@
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
package affinity
package resources
import core "k8s.io/api/core/v1"

View file

@ -38,21 +38,3 @@ func MergeLifecycle(a, b *core.Lifecycle) *core.Lifecycle {
PreStop: MergeLifecycleHandler(b.PreStop, a.PreStop),
}
}
func MergeLifecycleHandler(a, b *core.LifecycleHandler) *core.LifecycleHandler {
if a == nil && b == nil {
return nil
}
if a == nil {
return b.DeepCopy()
}
if b == nil {
return a.DeepCopy()
}
if a.HTTPGet != nil || a.Exec != nil || a.TCPSocket != nil {
return a.DeepCopy()
}
return b.DeepCopy()
}

View file

@ -0,0 +1,43 @@
//
// DISCLAIMER
//
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
//
// 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.
//
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
//go:build kube_arangodb_k8s_1_28
package resources
import core "k8s.io/api/core/v1"
func MergeLifecycleHandler(a, b *core.LifecycleHandler) *core.LifecycleHandler {
if a == nil && b == nil {
return nil
}
if a == nil {
return b.DeepCopy()
}
if b == nil {
return a.DeepCopy()
}
if a.HTTPGet != nil || a.Exec != nil || a.TCPSocket != nil {
return a.DeepCopy()
}
return b.DeepCopy()
}

View file

@ -0,0 +1,43 @@
//
// DISCLAIMER
//
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
//
// 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.
//
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
//go:build !kube_arangodb_k8s_1_28
package resources
import core "k8s.io/api/core/v1"
func MergeLifecycleHandler(a, b *core.LifecycleHandler) *core.LifecycleHandler {
if a == nil && b == nil {
return nil
}
if a == nil {
return b.DeepCopy()
}
if b == nil {
return a.DeepCopy()
}
if a.HTTPGet != nil || a.Exec != nil || a.TCPSocket != nil || a.Sleep != nil {
return a.DeepCopy()
}
return b.DeepCopy()
}

View file

@ -0,0 +1,37 @@
//
// DISCLAIMER
//
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
//
// 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.
//
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
//go:build kube_arangodb_k8s_1_28
package resources
import (
core "k8s.io/api/core/v1"
)
// ExtractStorageResourceRequirement filters resource requirements for Pods.
func ExtractStorageResourceRequirement(resources core.ResourceRequirements) core.ResourceRequirements {
filterStorage := NewPodResourceListFilter(core.ResourceStorage, "iops")
return core.ResourceRequirements{
Limits: filterStorage(resources.Limits),
Requests: filterStorage(resources.Requests),
}
}

View file

@ -0,0 +1,37 @@
//
// DISCLAIMER
//
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
//
// 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.
//
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
//go:build !kube_arangodb_k8s_1_28
package resources
import (
core "k8s.io/api/core/v1"
)
// ExtractStorageResourceRequirement filters resource requirements for Pods.
func ExtractStorageResourceRequirement(resources core.ResourceRequirements) core.VolumeResourceRequirements {
filterStorage := NewPodResourceListFilter(core.ResourceStorage, "iops")
return core.VolumeResourceRequirements{
Limits: filterStorage(resources.Limits),
Requests: filterStorage(resources.Requests),
}
}