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

[Feature] Integration PongV1 Service (#1709)

This commit is contained in:
Adam Janikowski 2024-08-28 09:48:59 +02:00 committed by GitHub
parent 91793bce16
commit 88c5df2078
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
25 changed files with 1227 additions and 118 deletions

View file

@ -103,6 +103,10 @@ linters-settings:
alias: pbConfigV1 alias: pbConfigV1
- pkg: github.com/arangodb/kube-arangodb/integrations/config/v1 - pkg: github.com/arangodb/kube-arangodb/integrations/config/v1
alias: pbImplConfigV1 alias: pbImplConfigV1
- pkg: github.com/arangodb/kube-arangodb/integrations/pong/v1/definition
alias: pbPongV1
- pkg: github.com/arangodb/kube-arangodb/integrations/pong/v1
alias: pbImplPongV1
- pkg: github.com/arangodb/kube-arangodb/integrations/shared/v1/definition - pkg: github.com/arangodb/kube-arangodb/integrations/shared/v1/definition
alias: pbSharedV1 alias: pbSharedV1
- pkg: github.com/arangodb/kube-arangodb/integrations/shared/v1 - pkg: github.com/arangodb/kube-arangodb/integrations/shared/v1

View file

@ -16,6 +16,7 @@
- (Feature) ConfigV1 Integration Service - (Feature) ConfigV1 Integration Service
- (Feature) Integration Service Authentication - (Feature) Integration Service Authentication
- (Improvement) Better panic handling - (Improvement) Better panic handling
- (Feature) PongV1 Integration Service
## [1.2.42](https://github.com/arangodb/kube-arangodb/tree/1.2.42) (2024-07-23) ## [1.2.42](https://github.com/arangodb/kube-arangodb/tree/1.2.42) (2024-07-23)
- (Maintenance) Go 1.22.4 & Kubernetes 1.29.6 libraries - (Maintenance) Go 1.22.4 & Kubernetes 1.29.6 libraries

View file

@ -917,6 +917,6 @@ sync-charts:
sync: sync-charts sync: sync-charts
ci-check: ci-check:
@$(MAKE) tidy vendor update-generated synchronize-v2alpha1-with-v1 generate-internal sync fmt yamlfmt license @$(MAKE) tidy vendor generate update-generated synchronize-v2alpha1-with-v1 sync fmt yamlfmt license
@git checkout -- go.sum # ignore changes in go.sum @git checkout -- go.sum # ignore changes in go.sum
@if [ ! -z "$(git status --porcelain)" ]; then echo "There are uncommited changes!"; git status; exit 1; fi @if [ ! -z "$(git status --porcelain)" ]; then echo "There are uncommited changes!"; git status; exit 1; fi

View file

@ -182,7 +182,7 @@ Flags:
--kubernetes.max-batch-size int Size of batch during objects read (default 256) --kubernetes.max-batch-size int Size of batch during objects read (default 256)
--kubernetes.qps float32 Number of queries per second for k8s API (default 15) --kubernetes.qps float32 Number of queries per second for k8s API (default 15)
--log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty") --log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty")
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, http, inspector, integration-config-v1, integrations, k8s-client, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, pod_compare, root, root-event-recorder, server, server-authentication (default [info]) --log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, http, inspector, integration-config-v1, integrations, k8s-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, pod_compare, root, root-event-recorder, server, server-authentication (default [info])
--log.sampling If true, operator will try to minimize duplication of logging events (default true) --log.sampling If true, operator will try to minimize duplication of logging events (default true)
--memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing --memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing
--metrics.excluded-prefixes stringArray List of the excluded metrics prefixes --metrics.excluded-prefixes stringArray List of the excluded metrics prefixes

View file

@ -1,7 +1,7 @@
// //
// DISCLAIMER // DISCLAIMER
// //
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany // Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -29,11 +29,15 @@ import (
var ( var (
cmdOps = cobra.Command{ cmdOps = cobra.Command{
Use: "arangodb_ops", Use: "arangodb_operator_ops",
Run: executeUsage, Run: executeUsage,
} }
) )
func CommandOps() *cobra.Command {
return &cmdOps
}
func ExecuteOps() int { func ExecuteOps() int {
flag.CommandLine.AddGoFlagSet(goflag.CommandLine) flag.CommandLine.AddGoFlagSet(goflag.CommandLine)

60
cmd/integration/init.go Normal file
View file

@ -0,0 +1,60 @@
//
// 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
//
package integration
import (
goflag "flag"
"github.com/spf13/cobra"
flag "github.com/spf13/pflag"
"github.com/arangodb/kube-arangodb/pkg/integrations"
)
var (
cmd = cobra.Command{
Use: "arangodb_operator_integration",
RunE: func(cmd *cobra.Command, args []string) error {
return cmd.Usage()
},
}
)
func init() {
if err := integrations.Register(&cmd); err != nil {
panic(err.Error())
}
flag.CommandLine.AddGoFlagSet(goflag.CommandLine)
}
func Command() *cobra.Command {
return &cmd
}
func Execute() int {
flag.CommandLine.AddGoFlagSet(goflag.CommandLine)
if err := cmd.Execute(); err != nil {
return 1
}
return 0
}

View file

@ -21,40 +21,11 @@
package main package main
import ( import (
goflag "flag"
"os" "os"
"github.com/spf13/cobra" "github.com/arangodb/kube-arangodb/cmd/integration"
flag "github.com/spf13/pflag"
"github.com/arangodb/kube-arangodb/pkg/integrations"
) )
var (
cmd = cobra.Command{
Use: "arangodb_int",
RunE: func(cmd *cobra.Command, args []string) error {
return cmd.Usage()
},
}
)
func init() {
if err := integrations.Register(&cmd); err != nil {
panic(err.Error())
}
}
func Execute() int {
flag.CommandLine.AddGoFlagSet(goflag.CommandLine)
if err := cmd.Execute(); err != nil {
return 1
}
return 0
}
func main() { func main() {
os.Exit(Execute()) os.Exit(integration.Execute())
} }

View file

@ -3043,9 +3043,15 @@ Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.
*** ***
### .spec.gateway.enabled
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/deployment_spec_gateway.go#L24)</sup>
***
### .spec.gateways.affinity ### .spec.gateways.affinity
Type: `core.PodAffinity` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L185)</sup> Type: `core.PodAffinity` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L156)</sup>
Affinity specified additional affinity settings in ArangoDB Pod definitions Affinity specified additional affinity settings in ArangoDB Pod definitions
@ -3056,7 +3062,7 @@ Links:
### .spec.gateways.allowMemberRecreation ### .spec.gateways.allowMemberRecreation
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L227)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L198)</sup>
AllowMemberRecreation allows to recreate member. AllowMemberRecreation allows to recreate member.
This setting changes the member recreation logic based on group: This setting changes the member recreation logic based on group:
@ -3067,7 +3073,7 @@ This setting changes the member recreation logic based on group:
### .spec.gateways.annotations ### .spec.gateways.annotations
Type: `object` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L128)</sup> Type: `object` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L99)</sup>
Annotations specified the annotations added to Pods in this group. Annotations specified the annotations added to Pods in this group.
Annotations are merged with `spec.annotations`. Annotations are merged with `spec.annotations`.
@ -3076,7 +3082,7 @@ Annotations are merged with `spec.annotations`.
### .spec.gateways.annotationsIgnoreList ### .spec.gateways.annotationsIgnoreList
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L130)</sup> Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L101)</sup>
AnnotationsIgnoreList list regexp or plain definitions which annotations should be ignored AnnotationsIgnoreList list regexp or plain definitions which annotations should be ignored
@ -3084,7 +3090,7 @@ AnnotationsIgnoreList list regexp or plain definitions which annotations should
### .spec.gateways.annotationsMode ### .spec.gateways.annotationsMode
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L132)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L103)</sup>
AnnotationsMode Define annotations mode which should be use while overriding annotations AnnotationsMode Define annotations mode which should be use while overriding annotations
@ -3092,7 +3098,7 @@ AnnotationsMode Define annotations mode which should be use while overriding ann
### .spec.gateways.antiAffinity ### .spec.gateways.antiAffinity
Type: `core.PodAntiAffinity` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L181)</sup> Type: `core.PodAntiAffinity` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L152)</sup>
AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions AntiAffinity specified additional antiAffinity settings in ArangoDB Pod definitions
@ -3103,7 +3109,7 @@ Links:
### .spec.gateways.args ### .spec.gateways.args
Type: `[]string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L86)</sup> Type: `[]string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L57)</sup>
Args setting specifies additional command-line arguments passed to all servers of this group. Args setting specifies additional command-line arguments passed to all servers of this group.
@ -3113,7 +3119,7 @@ Default Value: `[]`
### .spec.gateways.count ### .spec.gateways.count
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L78)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L49)</sup>
Count setting specifies the number of servers to start for the given group. Count setting specifies the number of servers to start for the given group.
For the Agent group, this value must be a positive, odd number. For the Agent group, this value must be a positive, odd number.
@ -3126,7 +3132,7 @@ as for the `dbservers` group.
### .spec.gateways.entrypoint ### .spec.gateways.entrypoint
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L88)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L59)</sup>
Entrypoint overrides container executable Entrypoint overrides container executable
@ -3168,7 +3174,7 @@ Links:
### .spec.gateways.exporterPort ### .spec.gateways.exporterPort
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L240)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L211)</sup>
ExporterPort define Port used by exporter ExporterPort define Port used by exporter
@ -3176,7 +3182,7 @@ ExporterPort define Port used by exporter
### .spec.gateways.extendedRotationCheck ### .spec.gateways.extendedRotationCheck
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L210)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L181)</sup>
ExtendedRotationCheck extend checks for rotation ExtendedRotationCheck extend checks for rotation
@ -3184,7 +3190,7 @@ ExtendedRotationCheck extend checks for rotation
### .spec.gateways.externalPortEnabled ### .spec.gateways.externalPortEnabled
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L222)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L193)</sup>
ExternalPortEnabled if external port should be enabled. If is set to false, ports needs to be exposed via sidecar. Only for ArangoD members ExternalPortEnabled if external port should be enabled. If is set to false, ports needs to be exposed via sidecar. Only for ArangoD members
@ -3192,7 +3198,7 @@ ExternalPortEnabled if external port should be enabled. If is set to false, port
### .spec.gateways.indexMethod ### .spec.gateways.indexMethod
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L233)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L204)</sup>
IndexMethod define group Indexing method IndexMethod define group Indexing method
@ -3223,7 +3229,7 @@ Mode keep container replace mode
### .spec.gateways.internalPort ### .spec.gateways.internalPort
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L218)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L189)</sup>
InternalPort define port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members InternalPort define port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members
@ -3231,7 +3237,7 @@ InternalPort define port used in internal communication, can be accessed over lo
### .spec.gateways.internalPortProtocol ### .spec.gateways.internalPortProtocol
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L220)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L191)</sup>
InternalPortProtocol define protocol of port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members InternalPortProtocol define protocol of port used in internal communication, can be accessed over localhost via sidecar. Only for ArangoD members
@ -3239,7 +3245,7 @@ InternalPortProtocol define protocol of port used in internal communication, can
### .spec.gateways.labels ### .spec.gateways.labels
Type: `object` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L134)</sup> Type: `object` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L105)</sup>
Labels specified the labels added to Pods in this group. Labels specified the labels added to Pods in this group.
@ -3247,7 +3253,7 @@ Labels specified the labels added to Pods in this group.
### .spec.gateways.labelsIgnoreList ### .spec.gateways.labelsIgnoreList
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L136)</sup> Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L107)</sup>
LabelsIgnoreList list regexp or plain definitions which labels should be ignored LabelsIgnoreList list regexp or plain definitions which labels should be ignored
@ -3255,7 +3261,7 @@ LabelsIgnoreList list regexp or plain definitions which labels should be ignored
### .spec.gateways.labelsMode ### .spec.gateways.labelsMode
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L138)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L109)</sup>
LabelsMode Define labels mode which should be use while overriding labels LabelsMode Define labels mode which should be use while overriding labels
@ -3263,7 +3269,7 @@ LabelsMode Define labels mode which should be use while overriding labels
### .spec.gateways.maxCount ### .spec.gateways.maxCount
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L82)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L53)</sup>
MaxCount specifies a maximum for the count of servers. If set, a specification is invalid if `count > maxCount`. MaxCount specifies a maximum for the count of servers. If set, a specification is invalid if `count > maxCount`.
@ -3271,7 +3277,7 @@ MaxCount specifies a maximum for the count of servers. If set, a specification i
### .spec.gateways.memoryReservation ### .spec.gateways.memoryReservation
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L110)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L81)</sup>
MemoryReservation determines the system reservation of memory while calculating `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` value. MemoryReservation determines the system reservation of memory while calculating `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` value.
If this field is set, `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` is reduced by a specified value in percent. If this field is set, `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` is reduced by a specified value in percent.
@ -3286,7 +3292,7 @@ Default Value: `0`
### .spec.gateways.minCount ### .spec.gateways.minCount
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L80)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L51)</sup>
MinCount specifies a minimum for the count of servers. If set, a specification is invalid if `count < minCount`. MinCount specifies a minimum for the count of servers. If set, a specification is invalid if `count < minCount`.
@ -3294,7 +3300,7 @@ MinCount specifies a minimum for the count of servers. If set, a specification i
### .spec.gateways.nodeAffinity ### .spec.gateways.nodeAffinity
Type: `core.NodeAffinity` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L189)</sup> Type: `core.NodeAffinity` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L160)</sup>
NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions NodeAffinity specified additional nodeAffinity settings in ArangoDB Pod definitions
@ -3305,7 +3311,7 @@ Links:
### .spec.gateways.nodeSelector ### .spec.gateways.nodeSelector
Type: `map[string]string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L153)</sup> Type: `map[string]string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L124)</sup>
NodeSelector setting specifies a set of labels to be used as `nodeSelector` for Pods of this node. NodeSelector setting specifies a set of labels to be used as `nodeSelector` for Pods of this node.
@ -3346,7 +3352,7 @@ Default Value: `/usr/bin/numactl`
### .spec.gateways.overrideDetectedNumberOfCores ### .spec.gateways.overrideDetectedNumberOfCores
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L116)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L87)</sup>
> [!IMPORTANT] > [!IMPORTANT]
> **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` Container Environment Variable** > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` Container Environment Variable**
@ -3363,7 +3369,7 @@ Default Value: `true`
### .spec.gateways.overrideDetectedTotalMemory ### .spec.gateways.overrideDetectedTotalMemory
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L104)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L75)</sup>
> [!IMPORTANT] > [!IMPORTANT]
> **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` Container Environment Variable** > **Values set by this feature override user-provided `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` Container Environment Variable**
@ -3392,7 +3398,7 @@ Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2
### .spec.gateways.port ### .spec.gateways.port
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L238)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L209)</sup>
Port define Port used by member Port define Port used by member
@ -3400,7 +3406,7 @@ Port define Port used by member
### .spec.gateways.priorityClassName ### .spec.gateways.priorityClassName
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L159)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L130)</sup>
PriorityClassName specifies a priority class name PriorityClassName specifies a priority class name
Will be forwarded to the pod spec. Will be forwarded to the pod spec.
@ -3412,7 +3418,7 @@ Links:
### .spec.gateways.probes.livenessProbeDisabled ### .spec.gateways.probes.livenessProbeDisabled
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L250)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L27)</sup>
LivenessProbeDisabled if set to true, the operator does not generate a liveness probe for new pods belonging to this group LivenessProbeDisabled if set to true, the operator does not generate a liveness probe for new pods belonging to this group
@ -3422,7 +3428,7 @@ Default Value: `false`
### .spec.gateways.probes.livenessProbeSpec.failureThreshold ### .spec.gateways.probes.livenessProbeSpec.failureThreshold
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L300)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L77)</sup>
FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up.
Giving up means restarting the container. Giving up means restarting the container.
@ -3434,7 +3440,7 @@ Default Value: `3`
### .spec.gateways.probes.livenessProbeSpec.initialDelaySeconds ### .spec.gateways.probes.livenessProbeSpec.initialDelaySeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L283)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L60)</sup>
InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated.
Minimum value is 0. Minimum value is 0.
@ -3445,7 +3451,7 @@ Default Value: `2`
### .spec.gateways.probes.livenessProbeSpec.periodSeconds ### .spec.gateways.probes.livenessProbeSpec.periodSeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L287)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L64)</sup>
PeriodSeconds How often (in seconds) to perform the probe. PeriodSeconds How often (in seconds) to perform the probe.
Minimum value is 1. Minimum value is 1.
@ -3456,7 +3462,7 @@ Default Value: `10`
### .spec.gateways.probes.livenessProbeSpec.successThreshold ### .spec.gateways.probes.livenessProbeSpec.successThreshold
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L295)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L72)</sup>
SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed.
Minimum value is 1. Minimum value is 1.
@ -3467,7 +3473,7 @@ Default Value: `1`
### .spec.gateways.probes.livenessProbeSpec.timeoutSeconds ### .spec.gateways.probes.livenessProbeSpec.timeoutSeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L291)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L68)</sup>
TimeoutSeconds specifies number of seconds after which the probe times out TimeoutSeconds specifies number of seconds after which the probe times out
Minimum value is 1. Minimum value is 1.
@ -3478,7 +3484,7 @@ Default Value: `2`
### .spec.gateways.probes.ReadinessProbeDisabled ### .spec.gateways.probes.ReadinessProbeDisabled
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L257)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L34)</sup>
> [!WARNING] > [!WARNING]
> ***DEPRECATED*** > ***DEPRECATED***
@ -3491,7 +3497,7 @@ OldReadinessProbeDisabled if true readinessProbes are disabled
### .spec.gateways.probes.readinessProbeDisabled ### .spec.gateways.probes.readinessProbeDisabled
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L259)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L36)</sup>
ReadinessProbeDisabled override flag for probe disabled in good manner (lowercase) with backward compatibility ReadinessProbeDisabled override flag for probe disabled in good manner (lowercase) with backward compatibility
@ -3499,7 +3505,7 @@ ReadinessProbeDisabled override flag for probe disabled in good manner (lowercas
### .spec.gateways.probes.readinessProbeSpec.failureThreshold ### .spec.gateways.probes.readinessProbeSpec.failureThreshold
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L300)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L77)</sup>
FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up.
Giving up means restarting the container. Giving up means restarting the container.
@ -3511,7 +3517,7 @@ Default Value: `3`
### .spec.gateways.probes.readinessProbeSpec.initialDelaySeconds ### .spec.gateways.probes.readinessProbeSpec.initialDelaySeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L283)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L60)</sup>
InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated.
Minimum value is 0. Minimum value is 0.
@ -3522,7 +3528,7 @@ Default Value: `2`
### .spec.gateways.probes.readinessProbeSpec.periodSeconds ### .spec.gateways.probes.readinessProbeSpec.periodSeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L287)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L64)</sup>
PeriodSeconds How often (in seconds) to perform the probe. PeriodSeconds How often (in seconds) to perform the probe.
Minimum value is 1. Minimum value is 1.
@ -3533,7 +3539,7 @@ Default Value: `10`
### .spec.gateways.probes.readinessProbeSpec.successThreshold ### .spec.gateways.probes.readinessProbeSpec.successThreshold
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L295)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L72)</sup>
SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed.
Minimum value is 1. Minimum value is 1.
@ -3544,7 +3550,7 @@ Default Value: `1`
### .spec.gateways.probes.readinessProbeSpec.timeoutSeconds ### .spec.gateways.probes.readinessProbeSpec.timeoutSeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L291)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L68)</sup>
TimeoutSeconds specifies number of seconds after which the probe times out TimeoutSeconds specifies number of seconds after which the probe times out
Minimum value is 1. Minimum value is 1.
@ -3555,7 +3561,7 @@ Default Value: `2`
### .spec.gateways.probes.startupProbeDisabled ### .spec.gateways.probes.startupProbeDisabled
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L264)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L41)</sup>
StartupProbeDisabled if true startupProbes are disabled StartupProbeDisabled if true startupProbes are disabled
@ -3563,7 +3569,7 @@ StartupProbeDisabled if true startupProbes are disabled
### .spec.gateways.probes.startupProbeSpec.failureThreshold ### .spec.gateways.probes.startupProbeSpec.failureThreshold
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L300)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L77)</sup>
FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up. FailureThreshold when a Pod starts and the probe fails, Kubernetes will try failureThreshold times before giving up.
Giving up means restarting the container. Giving up means restarting the container.
@ -3575,7 +3581,7 @@ Default Value: `3`
### .spec.gateways.probes.startupProbeSpec.initialDelaySeconds ### .spec.gateways.probes.startupProbeSpec.initialDelaySeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L283)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L60)</sup>
InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated. InitialDelaySeconds specifies number of seconds after the container has started before liveness or readiness probes are initiated.
Minimum value is 0. Minimum value is 0.
@ -3586,7 +3592,7 @@ Default Value: `2`
### .spec.gateways.probes.startupProbeSpec.periodSeconds ### .spec.gateways.probes.startupProbeSpec.periodSeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L287)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L64)</sup>
PeriodSeconds How often (in seconds) to perform the probe. PeriodSeconds How often (in seconds) to perform the probe.
Minimum value is 1. Minimum value is 1.
@ -3597,7 +3603,7 @@ Default Value: `10`
### .spec.gateways.probes.startupProbeSpec.successThreshold ### .spec.gateways.probes.startupProbeSpec.successThreshold
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L295)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L72)</sup>
SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed. SuccessThreshold Minimum consecutive successes for the probe to be considered successful after having failed.
Minimum value is 1. Minimum value is 1.
@ -3608,7 +3614,7 @@ Default Value: `1`
### .spec.gateways.probes.startupProbeSpec.timeoutSeconds ### .spec.gateways.probes.startupProbeSpec.timeoutSeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L291)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec_probe.go#L68)</sup>
TimeoutSeconds specifies number of seconds after which the probe times out TimeoutSeconds specifies number of seconds after which the probe times out
Minimum value is 1. Minimum value is 1.
@ -3619,7 +3625,7 @@ Default Value: `2`
### .spec.gateways.pvcResizeMode ### .spec.gateways.pvcResizeMode
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L173)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L144)</sup>
VolumeResizeMode specified resize mode for PVCs and PVs VolumeResizeMode specified resize mode for PVCs and PVs
@ -3631,7 +3637,7 @@ Possible Values:
### .spec.gateways.resources ### .spec.gateways.resources
Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L98)</sup> Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L69)</sup>
Resources holds resource requests & limits Resources holds resource requests & limits
@ -3642,7 +3648,7 @@ Links:
### .spec.gateways.schedulerName ### .spec.gateways.schedulerName
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L90)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L61)</sup>
SchedulerName define scheduler name used for group SchedulerName define scheduler name used for group
@ -3780,7 +3786,7 @@ sysctls:
### .spec.gateways.serviceAccountName ### .spec.gateways.serviceAccountName
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L149)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L120)</sup>
ServiceAccountName setting specifies the `serviceAccountName` for the `Pods` created ServiceAccountName setting specifies the `serviceAccountName` for the `Pods` created
for each server of this group. If empty, it defaults to using the for each server of this group. If empty, it defaults to using the
@ -3795,7 +3801,7 @@ to that service account.
### .spec.gateways.shutdownDelay ### .spec.gateways.shutdownDelay
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L216)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L187)</sup>
ShutdownDelay define how long operator should delay finalizer removal after shutdown ShutdownDelay define how long operator should delay finalizer removal after shutdown
@ -3803,7 +3809,7 @@ ShutdownDelay define how long operator should delay finalizer removal after shut
### .spec.gateways.shutdownMethod ### .spec.gateways.shutdownMethod
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L214)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L185)</sup>
ShutdownMethod describe procedure of member shutdown taken by Operator ShutdownMethod describe procedure of member shutdown taken by Operator
@ -3811,7 +3817,7 @@ ShutdownMethod describe procedure of member shutdown taken by Operator
### .spec.gateways.sidecarCoreNames ### .spec.gateways.sidecarCoreNames
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L192)</sup> Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L163)</sup>
SidecarCoreNames is a list of sidecar containers which must run in the pod. 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. Some names (e.g.: "server", "worker") are reserved, and they don't have any impact.
@ -3820,7 +3826,7 @@ Some names (e.g.: "server", "worker") are reserved, and they don't have any impa
### .spec.gateways.sidecars ### .spec.gateways.sidecars
Type: `[]core.Container` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L196)</sup> Type: `[]core.Container` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L167)</sup>
Sidecars specifies a list of additional containers to be started Sidecars specifies a list of additional containers to be started
@ -3831,7 +3837,7 @@ Links:
### .spec.gateways.storageClassName ### .spec.gateways.storageClassName
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L94)</sup> Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L65)</sup>
> [!WARNING] > [!WARNING]
> ***DEPRECATED*** > ***DEPRECATED***
@ -3844,7 +3850,7 @@ StorageClassName specifies the classname for storage of the servers.
### .spec.gateways.terminationGracePeriodSeconds ### .spec.gateways.terminationGracePeriodSeconds
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L229)</sup> Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L200)</sup>
TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for pods - via silent rotation TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for pods - via silent rotation
@ -3852,7 +3858,7 @@ TerminationGracePeriodSeconds override default TerminationGracePeriodSeconds for
### .spec.gateways.tolerations ### .spec.gateways.tolerations
Type: `[]core.Toleration` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L125)</sup> Type: `[]core.Toleration` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L96)</sup>
Tolerations specifies the tolerations added to Pods in this group. Tolerations specifies the tolerations added to Pods in this group.
By default, suitable tolerations are set for the following keys with the `NoExecute` effect: By default, suitable tolerations are set for the following keys with the `NoExecute` effect:
@ -3868,7 +3874,7 @@ Links:
### .spec.gateways.volumeAllowShrink ### .spec.gateways.volumeAllowShrink
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L177)</sup> Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L148)</sup>
> [!WARNING] > [!WARNING]
> ***DEPRECATED*** > ***DEPRECATED***
@ -3881,7 +3887,7 @@ VolumeAllowShrink allows shrinking of the volume
### .spec.gateways.volumeClaimTemplate ### .spec.gateways.volumeClaimTemplate
Type: `core.PersistentVolumeClaim` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L168)</sup> Type: `core.PersistentVolumeClaim` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L139)</sup>
VolumeClaimTemplate specifies a volumeClaimTemplate used by operator to create to volume claims for pods of this group. VolumeClaimTemplate specifies a volumeClaimTemplate used by operator to create to volume claims for pods of this group.
This setting is not available for group `coordinators`, `syncmasters` & `syncworkers`. This setting is not available for group `coordinators`, `syncmasters` & `syncworkers`.
@ -3897,7 +3903,7 @@ Links:
### .spec.gateways.volumeMounts ### .spec.gateways.volumeMounts
Type: `[]ServerGroupSpecVolumeMount` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L206)</sup> Type: `[]ServerGroupSpecVolumeMount` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/deployment/v1/server_group_spec.go#L177)</sup>
VolumeMounts define list of volume mounts mounted into server container VolumeMounts define list of volume mounts mounted into server container

6
docs/cli.md Normal file
View file

@ -0,0 +1,6 @@
---
layout: page
has_children: true
title: Binaries
has_toc: false
---

View file

@ -0,0 +1,122 @@
---
layout: page
parent: Binaries
title: arangodb_operator
---
# ArangoDB Operator Command
[START_INJECT]: # (arangodb_operator_cmd)
```
Usage:
arangodb_operator [flags]
arangodb_operator [command]
Available Commands:
admin Administration operations
completion Generate the autocompletion script for the specified shell
crd CRD operations
debug-package Generate debug package for debugging
exporter
features Describe all operator features
help Help about any command
integration
storage
task
version
Flags:
--action.PVCResize.concurrency int Define limit of concurrent PVC Resizes on the cluster (default 32)
--agency.refresh-delay duration The Agency refresh delay (0 = no delay) (default 500ms)
--agency.refresh-interval duration The Agency refresh interval (0 = do not refresh)
--agency.retries int The Agency retries (0 = no retries) (default 1)
--api.enabled Enable operator HTTP and gRPC API (default true)
--api.grpc-port int gRPC API port to listen on (default 8728)
--api.http-port int HTTP API port to listen on (default 8628)
--api.jwt-key-secret-name string Name of secret containing key used to sign JWT. If there is no such secret present, value will be saved here (default "arangodb-operator-api-jwt-key")
--api.jwt-secret-name string Name of secret which will contain JWT to authenticate API requests. (default "arangodb-operator-api-jwt")
--api.tls-secret-name string Name of secret containing tls.crt & tls.key for HTTPS API (if empty, self-signed certificate is used)
--backup-concurrent-uploads int Number of concurrent uploads per deployment (default 4)
--chaos.allowed Set to allow chaos in deployments. Only activated when allowed and enabled in deployment
--crd.install Install missing CRD if access is possible (default true)
--crd.preserve-unknown-fields stringArray Controls which CRD should have enabled preserve unknown fields in validation schema <crd-name>=<true/false>. To apply for all, use crd-name 'all'.
--crd.validation-schema stringArray Overrides default set of CRDs which should have validation schema enabled <crd-name>=<true/false>. To apply for all, use crd-name 'all'.
--deployment.feature.agency-poll Enable Agency Poll for Enterprise deployments - Required ArangoDB 3.8.0 or higher (default true)
--deployment.feature.all Enable ALL Features
--deployment.feature.async-backup-creation Create backups asynchronously to avoid blocking the operator and reaching the timeout - Required ArangoDB 3.8.0 or higher (default true)
--deployment.feature.backup-cleanup Cleanup imported backups if required - Required ArangoDB 3.8.0 or higher
--deployment.feature.deployment-spec-defaults-restore Restore defaults from last accepted state of deployment - Required ArangoDB 3.8.0 or higher (default true)
--deployment.feature.enforced-resign-leadership Enforce ResignLeadership and ensure that Leaders are moved from restarted DBServer - Required ArangoDB 3.8.0 or higher (default true)
--deployment.feature.ephemeral-volumes Enables ephemeral volumes for apps and tmp directory - Required ArangoDB 3.8.0 or higher
--deployment.feature.failover-leadership Support for leadership in fail-over mode - Required ArangoDB 3.8.0 or higher
--deployment.feature.init-containers-copy-resources Copy resources spec to built-in init containers if they are not specified - Required ArangoDB 3.8.0 or higher (default true)
--deployment.feature.init-containers-upscale-resources Copy resources spec to built-in init containers if they are not specified or lower - Required ArangoDB 3.8.0 or higher (default true)
--deployment.feature.local-storage.pass-reclaim-policy [LocalStorage] Pass ReclaimPolicy from StorageClass instead of using hardcoded Retain - Required ArangoDB 3.8.0 or higher
--deployment.feature.local-volume-replacement-check Replace volume for local-storage if volume is unschedulable (ex. node is gone) - Required ArangoDB 3.8.0 or higher
--deployment.feature.random-pod-names Enables generating random pod names - Required ArangoDB 3.8.0 or higher
--deployment.feature.rebalancer-v2 Rebalancer V2 feature - Required ArangoDB 3.10.0 or higher
--deployment.feature.restart-policy-always Allow to restart containers with always restart policy - Required ArangoDB 3.8.0 or higher
--deployment.feature.secured-containers Create server's containers with non root privileges. It enables 'ephemeral-volumes' feature implicitly - Required ArangoDB 3.8.0 or higher
--deployment.feature.sensitive-information-protection Hide sensitive information from metrics and logs - Required ArangoDB 3.8.0 or higher
--deployment.feature.short-pod-names Enable Short Pod Names - Required ArangoDB 3.8.0 or higher
--deployment.feature.timezone-management Enable timezone management for pods - Required ArangoDB 3.8.0 or higher
--deployment.feature.tls-sni TLS SNI Support - Required ArangoDB EE 3.8.0 or higher (default true)
--deployment.feature.upgrade-version-check Enable initContainer with pre version check - Required ArangoDB 3.8.0 or higher (default true)
--deployment.feature.upgrade-version-check-v2 Enable initContainer with pre version check based by Operator - Required ArangoDB 3.8.0 or higher
--features-config-map-name string Name of the Feature Map ConfigMap (default "arangodb-operator-feature-config-map")
-h, --help help for arangodb_operator
--http1.keep-alive If false, disables HTTP keep-alives and will only use the connection to the server for a single HTTP request (default true)
--http1.transport.dial-timeout duration Maximum amount of time a dial will wait for a connect to complete (default 30s)
--http1.transport.idle-conn-timeout duration Maximum amount of time an idle (keep-alive) connection will remain idle before closing itself. Zero means no limit (default 1m30s)
--http1.transport.idle-conn-timeout-short duration Maximum amount of time an idle (keep-alive) connection will remain idle before closing itself. Zero means no limit (default 100ms)
--http1.transport.keep-alive-timeout duration Interval between keep-alive probes for an active network connection (default 1m30s)
--http1.transport.keep-alive-timeout-short duration Interval between keep-alive probes for an active network connection (default 100ms)
--http1.transport.max-idle-conns int Maximum number of idle (keep-alive) connections across all hosts. Zero means no limit (default 100)
--http1.transport.tls-handshake-timeout duration Maximum amount of time to wait for a TLS handshake. Zero means no timeout (default 10s)
--image.discovery.status Discover Operator Image from Pod Status by default. When disabled Pod Spec is used. (default true)
--image.discovery.timeout duration Timeout for image discovery process (default 1m0s)
--internal.scaling-integration Enable Scaling Integration
--kubernetes.burst int Burst for the k8s API (default 30)
--kubernetes.max-batch-size int Size of batch during objects read (default 256)
--kubernetes.qps float32 Number of queries per second for k8s API (default 15)
--log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty")
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, http, inspector, integration-config-v1, integrations, k8s-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, pod_compare, root, root-event-recorder, server, server-authentication (default [info])
--log.sampling If true, operator will try to minimize duplication of logging events (default true)
--memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing
--metrics.excluded-prefixes stringArray List of the excluded metrics prefixes
--mode.single Enable single mode in Operator. WARNING: There should be only one replica of Operator, otherwise Operator can take unexpected actions
--operator.analytics Enable to run the Analytics operator
--operator.apps Enable to run the ArangoApps operator
--operator.backup Enable to run the ArangoBackup operator
--operator.deployment Enable to run the ArangoDeployment operator
--operator.deployment-replication Enable to run the ArangoDeploymentReplication operator
--operator.ml Enable to run the ArangoML operator
--operator.networking Enable to run the Networking operator
--operator.reconciliation.retry.count int Count of retries during Object Update operations in the Reconciliation loop (default 25)
--operator.reconciliation.retry.delay duration Delay between Object Update operations in the Reconciliation loop (default 1s)
--operator.storage Enable to run the ArangoLocalStorage operator
--operator.version Enable only version endpoint in Operator
--reconciliation.delay duration Delay between reconciliation loops (<= 0 -> Disabled)
--scope string Define scope on which Operator works. Legacy - pre 1.1.0 scope with limited cluster access (default "legacy")
--server.admin-secret-name string Name of secret containing username + password for login to the dashboard (default "arangodb-operator-dashboard")
--server.allow-anonymous-access Allow anonymous access to the dashboard
--server.host string Host to listen on (default "0.0.0.0")
--server.port int Port to listen on (default 8528)
--server.tls-secret-name string Name of secret containing tls.crt & tls.key for HTTPS server (if empty, self-signed certificate is used)
--shutdown.delay duration The delay before running shutdown handlers (default 2s)
--shutdown.timeout duration Timeout for shutdown handlers (default 30s)
--timeout.agency duration The Agency read timeout (default 10s)
--timeout.arangod duration The request timeout to the ArangoDB (default 5s)
--timeout.arangod-check duration The version check request timeout to the ArangoDB (default 2s)
--timeout.backup-arangod duration The request timeout to the ArangoDB during backup calls (default 30s)
--timeout.backup-upload duration The request timeout to the ArangoDB during uploading files (default 5m0s)
--timeout.force-delete-pod-grace-period duration Default period when ArangoDB Pod should be forcefully removed after all containers were stopped - set to 0 to disable forceful removals (default 15m0s)
--timeout.k8s duration The request timeout to the kubernetes (default 2s)
--timeout.pod-scheduling-grace-period duration Default period when ArangoDB Pod should be deleted in case of scheduling info change - set to 0 to disable (default 15s)
--timeout.reconciliation duration The reconciliation timeout to the ArangoDB CR (default 1m0s)
--timeout.shard-rebuild duration Timeout after which particular out-synced shard is considered as failed and rebuild is triggered (default 1h0m0s)
--timeout.shard-rebuild-retry duration Timeout after which rebuild shards retry flow is triggered (default 4h0m0s)
Use "arangodb_operator [command] --help" for more information about a command.
```
[END_INJECT]: # (arangodb_operator_cmd)

View file

@ -0,0 +1,101 @@
---
layout: page
parent: Binaries
title: arangodb_operator_integration
---
# ArangoDB Operator Integration Command
[START_INJECT]: # (arangodb_operator_integration_cmd)
```
Usage:
arangodb_operator_integration [flags]
arangodb_operator_integration [command]
Available Commands:
client
completion Generate the autocompletion script for the specified shell
help Help about any command
Flags:
--health.address string Address to expose health service (default "0.0.0.0:9091")
--health.auth.token string Token for health service (when auth service is token)
--health.auth.type string Auth type for health service (default "None")
--health.shutdown.enabled Determines if shutdown service should be enabled and exposed (default true)
-h, --help help for arangodb_operator_integration
--integration.authentication.v1 Enable AuthenticationV1 Integration Service
--integration.authentication.v1.enabled Defines if Authentication is enabled (default true)
--integration.authentication.v1.external Defones if External access to service authentication.v1 is enabled
--integration.authentication.v1.internal Defones if Internal access to service authentication.v1 is enabled (default true)
--integration.authentication.v1.path string Path to the JWT Folder
--integration.authentication.v1.token.allowed strings Allowed users for the Token
--integration.authentication.v1.token.max-size uint16 Max Token max size in bytes (default 64)
--integration.authentication.v1.token.ttl.default duration Default Token TTL (default 1h0m0s)
--integration.authentication.v1.token.ttl.max duration Max Token TTL (default 1h0m0s)
--integration.authentication.v1.token.ttl.min duration Min Token TTL (default 1m0s)
--integration.authentication.v1.token.user string Default user of the Token (default "root")
--integration.authentication.v1.ttl duration TTL of the JWT cache (default 15s)
--integration.authorization.v0 Enable AuthorizationV0 Integration Service
--integration.authorization.v0.external Defones if External access to service authorization.v0 is enabled
--integration.authorization.v0.internal Defones if Internal access to service authorization.v0 is enabled (default true)
--integration.config.v1 Enable ConfigV1 Integration Service
--integration.config.v1.external Defones if External access to service config.v1 is enabled
--integration.config.v1.internal Defones if Internal access to service config.v1 is enabled (default true)
--integration.config.v1.module strings Module in the reference <name>=<abs path>
--integration.envoy.auth.v3 Enable EnvoyAuthV3 Integration Service
--integration.envoy.auth.v3.external Defones if External access to service envoy.auth.v3 is enabled
--integration.envoy.auth.v3.internal Defones if Internal access to service envoy.auth.v3 is enabled (default true)
--integration.scheduler.v1 SchedulerV1 Integration
--integration.scheduler.v1.external Defones if External access to service scheduler.v1 is enabled
--integration.scheduler.v1.internal Defones if Internal access to service scheduler.v1 is enabled (default true)
--integration.scheduler.v1.namespace string Kubernetes Namespace (default "default")
--integration.scheduler.v1.verify-access Verify the CRD Access (default true)
--integration.shutdown.v1 ShutdownV1 Handler
--integration.shutdown.v1.external Defones if External access to service shutdown.v1 is enabled
--integration.shutdown.v1.internal Defones if Internal access to service shutdown.v1 is enabled (default true)
--integration.storage.v1 StorageBucket Integration
--integration.storage.v1.external Defones if External access to service storage.v1 is enabled
--integration.storage.v1.internal Defones if Internal access to service storage.v1 is enabled (default true)
--integration.storage.v1.s3.access-key string Path to file containing S3 AccessKey
--integration.storage.v1.s3.allow-insecure If set to true, the Endpoint certificates won't be checked
--integration.storage.v1.s3.bucket string Bucket name
--integration.storage.v1.s3.ca-crt string Path to file containing CA certificate to validate endpoint connection
--integration.storage.v1.s3.ca-key string Path to file containing keyfile to validate endpoint connection
--integration.storage.v1.s3.disable-ssl If set to true, the SSL won't be used when connecting to Endpoint
--integration.storage.v1.s3.endpoint string Endpoint of S3 API implementation
--integration.storage.v1.s3.region string Region
--integration.storage.v1.s3.secret-key string Path to file containing S3 SecretKey
--integration.storage.v1.type string Type of the Storage Integration (default "s3")
--services.address string Address to expose internal services (default "127.0.0.1:9092")
--services.auth.token string Token for internal service (when auth service is token)
--services.auth.type string Auth type for internal service (default "None")
--services.enabled Defines if internal access is enabled (default true)
--services.external.address string Address to expose external services (default "0.0.0.0:9093")
--services.external.auth.token string Token for external service (when auth service is token)
--services.external.auth.type string Auth type for external service (default "None")
--services.external.enabled Defines if external access is enabled
Use "arangodb_operator_integration [command] --help" for more information about a command.
```
[END_INJECT]: # (arangodb_operator_integration_cmd)
# ArangoDB Operator Integration Client Subcommand
[START_INJECT]: # (arangodb_operator_integration_cmd_client)
```
Usage:
arangodb_operator_integration client [command]
Available Commands:
health
pong
shutdown
Flags:
--address string GRPC Service Address (default "127.0.0.1:8080")
-h, --help help for client
--token string GRPC Token
Use "arangodb_operator_integration client [command] --help" for more information about a command.
```
[END_INJECT]: # (arangodb_operator_integration_cmd_client)

View file

@ -0,0 +1,88 @@
---
layout: page
parent: Binaries
title: arangodb_operator_ops
---
# ArangoDB Operator Ops Command
[START_INJECT]: # (arangodb_operator_ops_cmd)
```
Usage:
arangodb_operator_ops [flags]
arangodb_operator_ops [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
crd CRD operations
help Help about any command
task
Flags:
-h, --help help for arangodb_operator_ops
Use "arangodb_operator_ops [command] --help" for more information about a command.
```
[END_INJECT]: # (arangodb_operator_ops_cmd)
# ArangoDB Operator Ops CRD Subcommand
[START_INJECT]: # (arangodb_operator_ops_cmd_crd)
```
CRD operations
Usage:
arangodb_operator_ops crd [flags]
arangodb_operator_ops crd [command]
Available Commands:
generate Generates YAML of all required CRDs
install Install and update all required CRDs
Flags:
--crd.force-update Enforce CRD Schema update
--crd.preserve-unknown-fields stringArray Controls which CRD should have enabled preserve unknown fields in validation schema <crd-name>=<true/false>.
--crd.validation-schema stringArray Controls which CRD should have validation schema <crd-name>=<true/false>.
-h, --help help for crd
Use "arangodb_operator_ops crd [command] --help" for more information about a command.
```
[END_INJECT]: # (arangodb_operator_ops_cmd_crd)
# ArangoDB Operator Ops CRD Install Subcommand
[START_INJECT]: # (arangodb_operator_ops_cmd_crd_install)
```
Install and update all required CRDs
Usage:
arangodb_operator_ops crd install [flags]
Flags:
-h, --help help for install
Global Flags:
--crd.force-update Enforce CRD Schema update
--crd.preserve-unknown-fields stringArray Controls which CRD should have enabled preserve unknown fields in validation schema <crd-name>=<true/false>.
--crd.validation-schema stringArray Controls which CRD should have validation schema <crd-name>=<true/false>.
```
[END_INJECT]: # (arangodb_operator_ops_cmd_crd_install)
# ArangoDB Operator Ops CRD Generate Subcommand
[START_INJECT]: # (arangodb_operator_ops_cmd_crd_generate)
```
Generates YAML of all required CRDs
Usage:
arangodb_operator_ops crd generate [flags]
Flags:
-h, --help help for generate
Global Flags:
--crd.force-update Enforce CRD Schema update
--crd.preserve-unknown-fields stringArray Controls which CRD should have enabled preserve unknown fields in validation schema <crd-name>=<true/false>.
--crd.validation-schema stringArray Controls which CRD should have validation schema <crd-name>=<true/false>.
```
[END_INJECT]: # (arangodb_operator_ops_cmd_crd_generate)

View file

@ -0,0 +1,25 @@
//
// 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
//
package definition
const (
Name = "pong.v1"
)

View file

@ -0,0 +1,186 @@
//
// 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
//
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.21.1
// source: integrations/pong/v1/definition/pong.proto
package definition
import (
definition "github.com/arangodb/kube-arangodb/integrations/shared/v1/definition"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// PongV1 Ping Call Response
type PongV1PingResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Current time in UTC
Time *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"`
}
func (x *PongV1PingResponse) Reset() {
*x = PongV1PingResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_integrations_pong_v1_definition_pong_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PongV1PingResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PongV1PingResponse) ProtoMessage() {}
func (x *PongV1PingResponse) ProtoReflect() protoreflect.Message {
mi := &file_integrations_pong_v1_definition_pong_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PongV1PingResponse.ProtoReflect.Descriptor instead.
func (*PongV1PingResponse) Descriptor() ([]byte, []int) {
return file_integrations_pong_v1_definition_pong_proto_rawDescGZIP(), []int{0}
}
func (x *PongV1PingResponse) GetTime() *timestamppb.Timestamp {
if x != nil {
return x.Time
}
return nil
}
var File_integrations_pong_v1_definition_pong_proto protoreflect.FileDescriptor
var file_integrations_pong_v1_definition_pong_proto_rawDesc = []byte{
0x0a, 0x2a, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70,
0x6f, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x2f, 0x70, 0x6f, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x70, 0x6f,
0x6e, 0x67, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0x44, 0x0a, 0x12, 0x50, 0x6f, 0x6e, 0x67, 0x56, 0x31, 0x50, 0x69, 0x6e, 0x67,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x32, 0x39, 0x0a, 0x06, 0x50, 0x6f, 0x6e, 0x67,
0x56, 0x31, 0x12, 0x2f, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x0d, 0x2e, 0x73, 0x68, 0x61,
0x72, 0x65, 0x64, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x18, 0x2e, 0x70, 0x6f, 0x6e, 0x67,
0x2e, 0x50, 0x6f, 0x6e, 0x67, 0x56, 0x31, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x2d,
0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x6f, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65,
0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_integrations_pong_v1_definition_pong_proto_rawDescOnce sync.Once
file_integrations_pong_v1_definition_pong_proto_rawDescData = file_integrations_pong_v1_definition_pong_proto_rawDesc
)
func file_integrations_pong_v1_definition_pong_proto_rawDescGZIP() []byte {
file_integrations_pong_v1_definition_pong_proto_rawDescOnce.Do(func() {
file_integrations_pong_v1_definition_pong_proto_rawDescData = protoimpl.X.CompressGZIP(file_integrations_pong_v1_definition_pong_proto_rawDescData)
})
return file_integrations_pong_v1_definition_pong_proto_rawDescData
}
var file_integrations_pong_v1_definition_pong_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_integrations_pong_v1_definition_pong_proto_goTypes = []interface{}{
(*PongV1PingResponse)(nil), // 0: pong.PongV1PingResponse
(*timestamppb.Timestamp)(nil), // 1: google.protobuf.Timestamp
(*definition.Empty)(nil), // 2: shared.Empty
}
var file_integrations_pong_v1_definition_pong_proto_depIdxs = []int32{
1, // 0: pong.PongV1PingResponse.time:type_name -> google.protobuf.Timestamp
2, // 1: pong.PongV1.Ping:input_type -> shared.Empty
0, // 2: pong.PongV1.Ping:output_type -> pong.PongV1PingResponse
2, // [2:3] is the sub-list for method output_type
1, // [1:2] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_integrations_pong_v1_definition_pong_proto_init() }
func file_integrations_pong_v1_definition_pong_proto_init() {
if File_integrations_pong_v1_definition_pong_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_integrations_pong_v1_definition_pong_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PongV1PingResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_integrations_pong_v1_definition_pong_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_integrations_pong_v1_definition_pong_proto_goTypes,
DependencyIndexes: file_integrations_pong_v1_definition_pong_proto_depIdxs,
MessageInfos: file_integrations_pong_v1_definition_pong_proto_msgTypes,
}.Build()
File_integrations_pong_v1_definition_pong_proto = out.File
file_integrations_pong_v1_definition_pong_proto_rawDesc = nil
file_integrations_pong_v1_definition_pong_proto_goTypes = nil
file_integrations_pong_v1_definition_pong_proto_depIdxs = nil
}

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
//
syntax = "proto3";
package pong;
import "google/protobuf/timestamp.proto";
import "integrations/shared/v1/definition/empty.proto";
option go_package = "github.com/arangodb/kube-arangodb/integrations/pong/v1/definition";
// PongV1 Service implementation
service PongV1 {
rpc Ping(shared.Empty) returns (PongV1PingResponse);
}
// Responses
// PongV1 Ping Call Response
message PongV1PingResponse {
// Current time in UTC
google.protobuf.Timestamp time = 1;
}

View file

@ -0,0 +1,106 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.2.0
// - protoc v3.21.1
// source: integrations/pong/v1/definition/pong.proto
package definition
import (
context "context"
definition "github.com/arangodb/kube-arangodb/integrations/shared/v1/definition"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
// PongV1Client is the client API for PongV1 service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type PongV1Client interface {
Ping(ctx context.Context, in *definition.Empty, opts ...grpc.CallOption) (*PongV1PingResponse, error)
}
type pongV1Client struct {
cc grpc.ClientConnInterface
}
func NewPongV1Client(cc grpc.ClientConnInterface) PongV1Client {
return &pongV1Client{cc}
}
func (c *pongV1Client) Ping(ctx context.Context, in *definition.Empty, opts ...grpc.CallOption) (*PongV1PingResponse, error) {
out := new(PongV1PingResponse)
err := c.cc.Invoke(ctx, "/pong.PongV1/Ping", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// PongV1Server is the server API for PongV1 service.
// All implementations must embed UnimplementedPongV1Server
// for forward compatibility
type PongV1Server interface {
Ping(context.Context, *definition.Empty) (*PongV1PingResponse, error)
mustEmbedUnimplementedPongV1Server()
}
// UnimplementedPongV1Server must be embedded to have forward compatible implementations.
type UnimplementedPongV1Server struct {
}
func (UnimplementedPongV1Server) Ping(context.Context, *definition.Empty) (*PongV1PingResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented")
}
func (UnimplementedPongV1Server) mustEmbedUnimplementedPongV1Server() {}
// UnsafePongV1Server may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to PongV1Server will
// result in compilation errors.
type UnsafePongV1Server interface {
mustEmbedUnimplementedPongV1Server()
}
func RegisterPongV1Server(s grpc.ServiceRegistrar, srv PongV1Server) {
s.RegisterService(&PongV1_ServiceDesc, srv)
}
func _PongV1_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(definition.Empty)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(PongV1Server).Ping(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/pong.PongV1/Ping",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(PongV1Server).Ping(ctx, req.(*definition.Empty))
}
return interceptor(ctx, in, info, handler)
}
// PongV1_ServiceDesc is the grpc.ServiceDesc for PongV1 service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var PongV1_ServiceDesc = grpc.ServiceDesc{
ServiceName: "pong.PongV1",
HandlerType: (*PongV1Server)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Ping",
Handler: _PongV1_Ping_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "integrations/pong/v1/definition/pong.proto",
}

View file

@ -0,0 +1,60 @@
//
// DISCLAIMER
//
// Copyright 2023-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
//
package v1
import (
"context"
"time"
"google.golang.org/grpc"
"google.golang.org/protobuf/types/known/timestamppb"
pbPongV1 "github.com/arangodb/kube-arangodb/integrations/pong/v1/definition"
pbSharedV1 "github.com/arangodb/kube-arangodb/integrations/shared/v1/definition"
pbShutdownV1 "github.com/arangodb/kube-arangodb/integrations/shutdown/v1/definition"
"github.com/arangodb/kube-arangodb/pkg/util/svc"
)
func New() svc.Handler {
return &impl{}
}
var _ pbPongV1.PongV1Server = &impl{}
var _ svc.Handler = &impl{}
type impl struct {
pbPongV1.UnimplementedPongV1Server
}
func (i *impl) Name() string {
return pbShutdownV1.Name
}
func (i *impl) Health() svc.HealthState {
return svc.Healthy
}
func (i *impl) Register(registrar *grpc.Server) {
pbPongV1.RegisterPongV1Server(registrar, i)
}
func (i *impl) Ping(context.Context, *pbSharedV1.Empty) (*pbPongV1.PongV1PingResponse, error) {
return &pbPongV1.PongV1PingResponse{Time: timestamppb.New(time.Now().UTC())}, nil
}

View file

@ -0,0 +1,63 @@
//
// 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
//
package v1
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/require"
pbPongV1 "github.com/arangodb/kube-arangodb/integrations/pong/v1/definition"
pbSharedV1 "github.com/arangodb/kube-arangodb/integrations/shared/v1/definition"
"github.com/arangodb/kube-arangodb/pkg/util/svc"
"github.com/arangodb/kube-arangodb/pkg/util/tests/tgrpc"
)
func Client(t *testing.T, ctx context.Context) pbPongV1.PongV1Client {
local := svc.NewService(svc.Configuration{
Address: "127.0.0.1:0",
}, New())
start := local.Start(ctx)
client := tgrpc.NewGRPCClient(t, ctx, pbPongV1.NewPongV1Client, start.Address())
return client
}
func Test_Ping(t *testing.T) {
ctx, c := context.WithCancel(context.Background())
defer c()
client := Client(t, ctx)
r1, err := client.Ping(ctx, &pbSharedV1.Empty{})
require.NoError(t, err)
time.Sleep(100 * time.Millisecond)
r2, err := client.Ping(ctx, &pbSharedV1.Empty{})
require.NoError(t, err)
require.True(t, r2.GetTime().AsTime().After(r1.GetTime().AsTime()))
}

View file

@ -81,16 +81,10 @@ func ReplaceSection(in, replace, section string) (string, error) {
return "", errors.Errorf("END_INJECT sections is missing for section %s. Note that newline is required at the end and before tag", section) return "", errors.Errorf("END_INJECT sections is missing for section %s. Note that newline is required at the end and before tag", section)
} }
if strings.HasSuffix(replace, "\n\n") { in = moveString(in, endID+len(end))
// if section ends with empty line, we don't need to write newline for END marker
end = strings.TrimLeft(end, "\n")
} else {
end = "\n" + end
}
b.WriteString(end) b.WriteString(end)
in = moveString(in, endID+len(end))
} }
return b.String(), nil return b.String(), nil

View file

@ -144,23 +144,16 @@ func GenerateReadme(root string) error {
return nil return nil
} }
func GenerateHelp(cmd *cobra.Command) (string, error) { func GenerateHelp(cmd *cobra.Command, args ...string) (string, error) {
var lines []string var lines []string
lines = append(lines, "```", "Flags:") lines = append(lines, "```", "Flags:")
buff := bytes.NewBuffer(nil) help, err := GenerateHelpRaw(cmd, args...)
if err != nil {
cmd.SetOut(buff)
cmd.SetArgs([]string{"--help"})
if err := cmd.Execute(); err != nil {
return "", err return "", err
} }
help := buff.String()
for _, line := range strings.Split(help, "\n") { for _, line := range strings.Split(help, "\n") {
if strings.HasPrefix(line, " --") { if strings.HasPrefix(line, " --") {
lines = append(lines, line) lines = append(lines, line)
@ -172,6 +165,29 @@ func GenerateHelp(cmd *cobra.Command) (string, error) {
return md.WrapWithNewLines(md.WrapWithNewLines(strings.Join(lines, "\n"))), nil return md.WrapWithNewLines(md.WrapWithNewLines(strings.Join(lines, "\n"))), nil
} }
func GenerateHelpQuoted(cmd *cobra.Command, args ...string) (string, error) {
h, err := GenerateHelpRaw(cmd, args...)
if err != nil {
return "", err
}
return fmt.Sprintf("```\n%s```\n", h), nil
}
func GenerateHelpRaw(cmd *cobra.Command, args ...string) (string, error) {
buff := bytes.NewBuffer(nil)
cmd.SetOut(buff)
cmd.SetArgs(append(args, "--help"))
if err := cmd.Execute(); err != nil {
return "", err
}
return buff.String(), nil
}
func GenerateReadmeFeatures(root, basePath string, eeOnly bool) (string, error) { func GenerateReadmeFeatures(root, basePath string, eeOnly bool) (string, error) {
feature := md.NewColumn("Feature", md.ColumnLeftAlign) feature := md.NewColumn("Feature", md.ColumnLeftAlign)
introduced := md.NewColumn("Introduced", md.ColumnLeftAlign) introduced := md.NewColumn("Introduced", md.ColumnLeftAlign)

101
internal/readme_cli.go Normal file
View file

@ -0,0 +1,101 @@
//
// 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
//
package internal
import (
"path"
"github.com/arangodb/kube-arangodb/cmd"
"github.com/arangodb/kube-arangodb/cmd/integration"
"github.com/arangodb/kube-arangodb/internal/md"
)
func GenerateCLIArangoDBOperatorReadme(root string) error {
readmeSections := map[string]string{}
if section, err := GenerateHelpQuoted(cmd.Command()); err != nil {
return err
} else {
readmeSections["arangodb_operator_cmd"] = section
}
if err := md.ReplaceSectionsInFile(path.Join(root, "docs", "cli", "arangodb_operator.md"), readmeSections); err != nil {
return err
}
return nil
}
func GenerateCLIArangoDBOperatorOpsReadme(root string) error {
readmeSections := map[string]string{}
if section, err := GenerateHelpQuoted(cmd.CommandOps()); err != nil {
return err
} else {
readmeSections["arangodb_operator_ops_cmd"] = section
}
if section, err := GenerateHelpQuoted(cmd.CommandOps(), "crd"); err != nil {
return err
} else {
readmeSections["arangodb_operator_ops_cmd_crd"] = section
}
if section, err := GenerateHelpQuoted(cmd.CommandOps(), "crd", "install"); err != nil {
return err
} else {
readmeSections["arangodb_operator_ops_cmd_crd_install"] = section
}
if section, err := GenerateHelpQuoted(cmd.CommandOps(), "crd", "generate"); err != nil {
return err
} else {
readmeSections["arangodb_operator_ops_cmd_crd_generate"] = section
}
if err := md.ReplaceSectionsInFile(path.Join(root, "docs", "cli", "arangodb_operator_ops.md"), readmeSections); err != nil {
return err
}
return nil
}
func GenerateCLIArangoDBOperatorIntegrationReadme(root string) error {
readmeSections := map[string]string{}
if section, err := GenerateHelpQuoted(integration.Command()); err != nil {
return err
} else {
readmeSections["arangodb_operator_integration_cmd"] = section
}
if section, err := GenerateHelpQuoted(integration.Command(), "client"); err != nil {
return err
} else {
readmeSections["arangodb_operator_integration_cmd_client"] = section
}
if err := md.ReplaceSectionsInFile(path.Join(root, "docs", "cli", "arangodb_operator_integration.md"), readmeSections); err != nil {
return err
}
return nil
}

View file

@ -1,7 +1,7 @@
// //
// DISCLAIMER // 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"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@ -32,3 +32,21 @@ func Test_GenerateReadme(t *testing.T) {
require.NoError(t, GenerateReadme(root)) require.NoError(t, GenerateReadme(root))
} }
func Test_GenerateCli_ArangoDBOperator(t *testing.T) {
root := os.Getenv("ROOT")
require.NoError(t, GenerateCLIArangoDBOperatorReadme(root))
}
func Test_GenerateCli_ArangoDBOperatorOps(t *testing.T) {
root := os.Getenv("ROOT")
require.NoError(t, GenerateCLIArangoDBOperatorOpsReadme(root))
}
func Test_GenerateCli_ArangoDBOperatorIntegration(t *testing.T) {
root := os.Getenv("ROOT")
require.NoError(t, GenerateCLIArangoDBOperatorIntegrationReadme(root))
}

View file

@ -0,0 +1,67 @@
//
// 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
//
package clients
import (
"github.com/spf13/cobra"
pbPongV1 "github.com/arangodb/kube-arangodb/integrations/pong/v1/definition"
pbSharedV1 "github.com/arangodb/kube-arangodb/integrations/shared/v1/definition"
"github.com/arangodb/kube-arangodb/pkg/util/shutdown"
)
func init() {
registerer.MustRegister("pong/v1", func(cfg *Config) Client {
return &pongV1{
cfg: cfg,
}
})
}
type pongV1 struct {
cfg *Config
}
func (s *pongV1) Name() string {
return "pong"
}
func (s *pongV1) Version() string {
return "v1"
}
func (s *pongV1) Register(cmd *cobra.Command) error {
cmd.RunE = func(cmd *cobra.Command, args []string) error {
client, c, err := client(shutdown.Context(), s.cfg, pbPongV1.NewPongV1Client)
if err != nil {
return err
}
defer c.Close()
_, err = client.Ping(shutdown.Context(), &pbSharedV1.Empty{})
if err != nil {
return err
}
return nil
}
return nil
}

View file

@ -0,0 +1,62 @@
//
// 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
//
package integrations
import (
"fmt"
"testing"
"github.com/stretchr/testify/require"
"github.com/arangodb/kube-arangodb/pkg/util/shutdown"
)
func Test_Pong(t *testing.T) {
c, health, internal, external := startService(t)
defer c.Require(t)
t.Run("Pong", func(t *testing.T) {
t.Run("health", func(t *testing.T) {
require.NoError(t, executeSync(t, shutdown.Context(),
fmt.Sprintf("--address=127.0.0.1:%d", health),
"--token=",
"client",
"pong",
"v1"))
})
t.Run("internal", func(t *testing.T) {
require.NoError(t, executeSync(t, shutdown.Context(),
fmt.Sprintf("--address=127.0.0.1:%d", internal),
"--token=",
"client",
"pong",
"v1"))
})
t.Run("external", func(t *testing.T) {
require.NoError(t, executeSync(t, shutdown.Context(),
fmt.Sprintf("--address=127.0.0.1:%d", external),
"--token=",
"client",
"pong",
"v1"))
})
})
}

View file

@ -30,6 +30,7 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"google.golang.org/grpc" "google.golang.org/grpc"
pbImplPongV1 "github.com/arangodb/kube-arangodb/integrations/pong/v1"
pbImplShutdownV1 "github.com/arangodb/kube-arangodb/integrations/shutdown/v1" pbImplShutdownV1 "github.com/arangodb/kube-arangodb/integrations/shutdown/v1"
"github.com/arangodb/kube-arangodb/pkg/integrations/clients" "github.com/arangodb/kube-arangodb/pkg/integrations/clients"
"github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util"
@ -170,7 +171,13 @@ func (c *configuration) runWithContext(ctx context.Context, cancel context.Cance
return errors.Wrapf(err, "Unable to parse external config") return errors.Wrapf(err, "Unable to parse external config")
} }
var internalHandlers, externalHandlers []svc.Handler var internalHandlers, externalHandlers, healthHandlers []svc.Handler
pong := pbImplPongV1.New()
internalHandlers = append(internalHandlers, pong)
externalHandlers = append(externalHandlers, pong)
healthHandlers = append(healthHandlers, pong)
for _, handler := range c.registered { for _, handler := range c.registered {
if ok, err := cmd.Flags().GetBool(fmt.Sprintf("integration.%s", handler.Name())); err != nil { if ok, err := cmd.Flags().GetBool(fmt.Sprintf("integration.%s", handler.Name())); err != nil {
@ -209,13 +216,11 @@ func (c *configuration) runWithContext(ctx context.Context, cancel context.Cance
} }
} }
var healthServices []svc.Handler
if c.health.shutdownEnabled { if c.health.shutdownEnabled {
healthServices = append(healthServices, pbImplShutdownV1.New(cancel)) healthHandlers = append(healthHandlers, pbImplShutdownV1.New(cancel))
} }
health := svc.NewHealthService(healthConfig, svc.Readiness, healthServices...) health := svc.NewHealthService(healthConfig, svc.Readiness, healthHandlers...)
internalHandlers = append(internalHandlers, health) internalHandlers = append(internalHandlers, health)
externalHandlers = append(externalHandlers, health) externalHandlers = append(externalHandlers, health)