mirror of
https://github.com/arangodb/kube-arangodb.git
synced 2024-12-14 11:57:37 +00:00
[Feature] ArangoRoute CRD (#1689)
This commit is contained in:
parent
375c89e695
commit
ae55994d68
71 changed files with 2851 additions and 26 deletions
|
@ -77,6 +77,8 @@ linters-settings:
|
||||||
alias: mlSharedTests
|
alias: mlSharedTests
|
||||||
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/analytics/v1alpha1
|
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/analytics/v1alpha1
|
||||||
alias: analyticsApi
|
alias: analyticsApi
|
||||||
|
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1
|
||||||
|
alias: networkingApi
|
||||||
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1
|
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1
|
||||||
alias: mlApi
|
alias: mlApi
|
||||||
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1
|
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A)
|
## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A)
|
||||||
|
- (Feature) ArangoRoute CRD
|
||||||
|
|
||||||
## [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
|
||||||
|
|
6
Makefile
6
Makefile
|
@ -440,7 +440,8 @@ update-generated:
|
||||||
apps:v1 \
|
apps:v1 \
|
||||||
ml:v1alpha1 ml:v1beta1 \
|
ml:v1alpha1 ml:v1beta1 \
|
||||||
scheduler:v1alpha1 scheduler:v1beta1 \
|
scheduler:v1alpha1 scheduler:v1beta1 \
|
||||||
analytics:v1alpha1" \
|
analytics:v1alpha1 \
|
||||||
|
networking:v1alpha1" \
|
||||||
--go-header-file "./tools/codegen/boilerplate.go.txt" \
|
--go-header-file "./tools/codegen/boilerplate.go.txt" \
|
||||||
$(VERIFYARGS)
|
$(VERIFYARGS)
|
||||||
GOPATH=$(GOBUILDDIR) $(VENDORDIR)/k8s.io/code-generator/generate-groups.sh \
|
GOPATH=$(GOBUILDDIR) $(VENDORDIR)/k8s.io/code-generator/generate-groups.sh \
|
||||||
|
@ -894,7 +895,8 @@ CRDS:=apps-job \
|
||||||
replication-deploymentreplication \
|
replication-deploymentreplication \
|
||||||
ml-storage ml-extension ml-job-batch ml-job-cron \
|
ml-storage ml-extension ml-job-batch ml-job-cron \
|
||||||
scheduler-profile \
|
scheduler-profile \
|
||||||
analytics-graphanalyticsengine
|
analytics-graphanalyticsengine \
|
||||||
|
networking-route
|
||||||
|
|
||||||
.PHONY: sync
|
.PHONY: sync
|
||||||
sync:
|
sync:
|
||||||
|
|
22
chart/kube-arangodb-arm64/crds/networking-route.yaml
Normal file
22
chart/kube-arangodb-arm64/crds/networking-route.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoroutes.networking.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: networking.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoRoute
|
||||||
|
listKind: ArangoRouteList
|
||||||
|
plural: arangoroutes
|
||||||
|
singular: arangoroute
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -16,6 +16,9 @@ rules:
|
||||||
- apiGroups: ["database.arangodb.com"]
|
- apiGroups: ["database.arangodb.com"]
|
||||||
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
||||||
verbs: ["*"]
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["networking.arangodb.com"]
|
||||||
|
resources: ["arangoroutes", "arangoroutes/status"]
|
||||||
|
verbs: ["*"]
|
||||||
{{- if .Values.rbac.extensions.acs }}
|
{{- if .Values.rbac.extensions.acs }}
|
||||||
- apiGroups: ["database.arangodb.com"]
|
- apiGroups: ["database.arangodb.com"]
|
||||||
resources: ["arangoclustersynchronizations", "arangoclustersynchronizations/status"]
|
resources: ["arangoclustersynchronizations", "arangoclustersynchronizations/status"]
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoroutes.networking.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: networking.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoRoute
|
||||||
|
listKind: ArangoRouteList
|
||||||
|
plural: arangoroutes
|
||||||
|
singular: arangoroute
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -16,6 +16,9 @@ rules:
|
||||||
- apiGroups: ["database.arangodb.com"]
|
- apiGroups: ["database.arangodb.com"]
|
||||||
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
||||||
verbs: ["*"]
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["networking.arangodb.com"]
|
||||||
|
resources: ["arangoroutes", "arangoroutes/status"]
|
||||||
|
verbs: ["*"]
|
||||||
{{- if .Values.rbac.extensions.acs }}
|
{{- if .Values.rbac.extensions.acs }}
|
||||||
- apiGroups: ["database.arangodb.com"]
|
- apiGroups: ["database.arangodb.com"]
|
||||||
resources: ["arangoclustersynchronizations", "arangoclustersynchronizations/status"]
|
resources: ["arangoclustersynchronizations", "arangoclustersynchronizations/status"]
|
||||||
|
|
22
chart/kube-arangodb-enterprise/crds/networking-route.yaml
Normal file
22
chart/kube-arangodb-enterprise/crds/networking-route.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoroutes.networking.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: networking.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoRoute
|
||||||
|
listKind: ArangoRouteList
|
||||||
|
plural: arangoroutes
|
||||||
|
singular: arangoroute
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -16,6 +16,9 @@ rules:
|
||||||
- apiGroups: ["database.arangodb.com"]
|
- apiGroups: ["database.arangodb.com"]
|
||||||
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
||||||
verbs: ["*"]
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["networking.arangodb.com"]
|
||||||
|
resources: ["arangoroutes", "arangoroutes/status"]
|
||||||
|
verbs: ["*"]
|
||||||
{{- if .Values.rbac.extensions.acs }}
|
{{- if .Values.rbac.extensions.acs }}
|
||||||
- apiGroups: ["database.arangodb.com"]
|
- apiGroups: ["database.arangodb.com"]
|
||||||
resources: ["arangoclustersynchronizations", "arangoclustersynchronizations/status"]
|
resources: ["arangoclustersynchronizations", "arangoclustersynchronizations/status"]
|
||||||
|
|
22
chart/kube-arangodb/crds/networking-route.yaml
Normal file
22
chart/kube-arangodb/crds/networking-route.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoroutes.networking.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: networking.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoRoute
|
||||||
|
listKind: ArangoRouteList
|
||||||
|
plural: arangoroutes
|
||||||
|
singular: arangoroute
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -16,6 +16,9 @@ rules:
|
||||||
- apiGroups: ["database.arangodb.com"]
|
- apiGroups: ["database.arangodb.com"]
|
||||||
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
||||||
verbs: ["*"]
|
verbs: ["*"]
|
||||||
|
- apiGroups: ["networking.arangodb.com"]
|
||||||
|
resources: ["arangoroutes", "arangoroutes/status"]
|
||||||
|
verbs: ["*"]
|
||||||
{{- if .Values.rbac.extensions.acs }}
|
{{- if .Values.rbac.extensions.acs }}
|
||||||
- apiGroups: ["database.arangodb.com"]
|
- apiGroups: ["database.arangodb.com"]
|
||||||
resources: ["arangoclustersynchronizations", "arangoclustersynchronizations/status"]
|
resources: ["arangoclustersynchronizations", "arangoclustersynchronizations/status"]
|
||||||
|
|
91
docs/api/ArangoRoute.V1Alpha1.md
Normal file
91
docs/api/ArangoRoute.V1Alpha1.md
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
parent: CRD reference
|
||||||
|
title: ArangoRoute V1Alpha1
|
||||||
|
---
|
||||||
|
|
||||||
|
# API Reference for ArangoRoute V1Alpha1
|
||||||
|
|
||||||
|
## Spec
|
||||||
|
|
||||||
|
### .spec.deployment
|
||||||
|
|
||||||
|
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/networking/v1alpha1/route_spec.go#L27)</sup>
|
||||||
|
|
||||||
|
Deployment specifies the ArangoDeployment object name
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
### .spec.destination.schema
|
||||||
|
|
||||||
|
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/networking/v1alpha1/route_spec_destination.go#L30)</sup>
|
||||||
|
|
||||||
|
Schema defines HTTP/S schema used for connection
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
### .spec.destination.service.checksum
|
||||||
|
|
||||||
|
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/shared/v1/object.go#L61)</sup>
|
||||||
|
|
||||||
|
UID keeps the information about object Checksum
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
### .spec.destination.service.name
|
||||||
|
|
||||||
|
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/shared/v1/object.go#L52)</sup>
|
||||||
|
|
||||||
|
Name of the object
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
### .spec.destination.service.namespace
|
||||||
|
|
||||||
|
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/shared/v1/object.go#L55)</sup>
|
||||||
|
|
||||||
|
Namespace of the object. Should default to the namespace of the parent object
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
### .spec.destination.service.port
|
||||||
|
|
||||||
|
Type: `intstr.IntOrString` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/networking/v1alpha1/route_spec_destination_service.go#L36)</sup>
|
||||||
|
|
||||||
|
Port defines Port or Port Name used as destination
|
||||||
|
|
||||||
|
Links:
|
||||||
|
* [Documentation](https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/)
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
### .spec.destination.service.uid
|
||||||
|
|
||||||
|
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/shared/v1/object.go#L58)</sup>
|
||||||
|
|
||||||
|
UID keeps the information about object UID
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
### .spec.destination.tls.insecure
|
||||||
|
|
||||||
|
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/networking/v1alpha1/route_spec_destination_tls.go#L25)</sup>
|
||||||
|
|
||||||
|
Insecure allows Insecure traffic
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
### .spec.route.path
|
||||||
|
|
||||||
|
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/networking/v1alpha1/route_spec_route.go#L29)</sup>
|
||||||
|
|
||||||
|
Path specifies the Path route
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
### .status.conditions
|
||||||
|
|
||||||
|
Type: `api.Conditions` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.42/pkg/apis/networking/v1alpha1/route_status.go#L28)</sup>
|
||||||
|
|
||||||
|
Conditions specific to the entire extension
|
||||||
|
|
|
@ -40,6 +40,7 @@ import (
|
||||||
deploymentv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
deploymentv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
||||||
mlApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
mlApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||||
mlApi "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
mlApi "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
||||||
|
networkingApi "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
||||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
||||||
schedulerApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
schedulerApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
||||||
|
@ -283,6 +284,15 @@ func Test_GenerateCRValidationSchemas(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"networking-route": {
|
||||||
|
fmt.Sprintf("%s/pkg/apis/networking/v1alpha1", root): {
|
||||||
|
"v1alpha1": {
|
||||||
|
objects: map[string]interface{}{
|
||||||
|
"spec": networkingApi.ArangoRoute{}.Spec,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for filePrefix, packagesToVersion := range input {
|
for filePrefix, packagesToVersion := range input {
|
||||||
|
|
|
@ -293,7 +293,7 @@ func isSimpleType(obj reflect.Type) (string, string, bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func extractTag(tag string) (string, bool) {
|
func extractTag(tag string) (string, bool) {
|
||||||
parts := strings.SplitN(tag, ",", 2)
|
parts := strings.Split(tag, ",")
|
||||||
|
|
||||||
if len(parts) == 1 {
|
if len(parts) == 1 {
|
||||||
return parts[0], false
|
return parts[0], false
|
||||||
|
|
|
@ -42,6 +42,7 @@ import (
|
||||||
deploymentApi "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
deploymentApi "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||||
mlApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
mlApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||||
mlApi "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
mlApi "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
||||||
|
networkingApi "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
replicationApi "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
replicationApi "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
||||||
schedulerApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
schedulerApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
||||||
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
@ -249,6 +250,19 @@ func Test_GenerateAPIDocs(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"networking": map[string]inputPackage{
|
||||||
|
"v1alpha1": {
|
||||||
|
Types: inputPackageTypes{
|
||||||
|
"ArangoRoute.V1Alpha1": {
|
||||||
|
"Spec": networkingApi.ArangoRoute{}.Spec,
|
||||||
|
"Status": networkingApi.ArangoRoute{}.Status,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Shared: []string{
|
||||||
|
"shared/v1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"analytics": map[string]inputPackage{
|
"analytics": map[string]inputPackage{
|
||||||
"v1alpha1": {
|
"v1alpha1": {
|
||||||
Types: inputPackageTypes{
|
Types: inputPackageTypes{
|
||||||
|
|
|
@ -228,7 +228,7 @@ func (b *schemaBuilder) StructToSchema(t *testing.T, structObj reflect.Type, pat
|
||||||
schema.Properties[k] = v
|
schema.Properties[k] = v
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
require.NotEmpty(t, n, fullFieldName)
|
require.NotEmpty(t, n, fullFieldName, inline)
|
||||||
schema.Properties[n] = *s
|
schema.Properties[n] = *s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
29
pkg/apis/networking/definitions.go
Normal file
29
pkg/apis/networking/definitions.go
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
//
|
||||||
|
// 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 networking
|
||||||
|
|
||||||
|
const (
|
||||||
|
ArangoRouteCRDName = ArangoRouteResourcePlural + "." + ArangoNetworkingGroupName
|
||||||
|
ArangoRouteResourceKind = "ArangoRoute"
|
||||||
|
ArangoRouteResourcePlural = "arangoroutes"
|
||||||
|
|
||||||
|
ArangoNetworkingGroupName = "networking.arangodb.com"
|
||||||
|
)
|
23
pkg/apis/networking/v1alpha1/doc.go
Normal file
23
pkg/apis/networking/v1alpha1/doc.go
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
//
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +groupName=networking.arangodb.com
|
||||||
|
package v1alpha1
|
52
pkg/apis/networking/v1alpha1/register.go
Normal file
52
pkg/apis/networking/v1alpha1/register.go
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
//
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/apis/networking"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ArangoNetworkingVersion = "v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
|
||||||
|
AddToScheme = SchemeBuilder.AddToScheme
|
||||||
|
|
||||||
|
SchemeGroupVersion = schema.GroupVersion{Group: networking.ArangoNetworkingGroupName, Version: ArangoNetworkingVersion}
|
||||||
|
)
|
||||||
|
|
||||||
|
// Resource gets an ArangoCluster GroupResource for a specified resource
|
||||||
|
func Resource(resource string) schema.GroupResource {
|
||||||
|
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||||
|
}
|
||||||
|
|
||||||
|
// addKnownTypes adds the set of types defined in this package to the supplied scheme.
|
||||||
|
func addKnownTypes(s *runtime.Scheme) error {
|
||||||
|
s.AddKnownTypes(SchemeGroupVersion)
|
||||||
|
meta.AddToGroupVersion(s, SchemeGroupVersion)
|
||||||
|
return nil
|
||||||
|
}
|
69
pkg/apis/networking/v1alpha1/route.go
Normal file
69
pkg/apis/networking/v1alpha1/route.go
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
//
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/apis/networking"
|
||||||
|
)
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoRouteList is a list of Arango Routes.
|
||||||
|
type ArangoRouteList struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Items []ArangoRoute `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +genclient
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoRoute contains definition and status of the Arango Route.
|
||||||
|
type ArangoRoute struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec ArangoRouteSpec `json:"spec"`
|
||||||
|
Status ArangoRouteStatus `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AsOwner creates an OwnerReference for the given Extension
|
||||||
|
func (a *ArangoRoute) AsOwner() meta.OwnerReference {
|
||||||
|
trueVar := true
|
||||||
|
return meta.OwnerReference{
|
||||||
|
APIVersion: SchemeGroupVersion.String(),
|
||||||
|
Kind: networking.ArangoRouteResourceKind,
|
||||||
|
Name: a.Name,
|
||||||
|
UID: a.UID,
|
||||||
|
Controller: &trueVar,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *ArangoRoute) GetStatus() ArangoRouteStatus {
|
||||||
|
return a.Status
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *ArangoRoute) SetStatus(status ArangoRouteStatus) {
|
||||||
|
a.Status = status
|
||||||
|
}
|
50
pkg/apis/networking/v1alpha1/route_spec.go
Normal file
50
pkg/apis/networking/v1alpha1/route_spec.go
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
//
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||||
|
|
||||||
|
type ArangoRouteSpec struct {
|
||||||
|
// Deployment specifies the ArangoDeployment object name
|
||||||
|
Deployment string `json:"deployment,omitempty"`
|
||||||
|
|
||||||
|
// Destination defines the route destination
|
||||||
|
Destination *ArangoRouteSpecDestination `json:"destination,omitempty"`
|
||||||
|
|
||||||
|
// Route defines the route spec
|
||||||
|
Route *ArangoRouteSpecRoute `json:"route,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ArangoRouteSpec) Validate() error {
|
||||||
|
if s == nil {
|
||||||
|
s = &ArangoRouteSpec{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := shared.WithErrors(shared.PrefixResourceErrors("spec",
|
||||||
|
shared.PrefixResourceError("deployment", shared.ValidateResourceName(s.Deployment)),
|
||||||
|
shared.ValidateRequiredInterfacePath("destination", s.Destination),
|
||||||
|
shared.ValidateRequiredInterfacePath("route", s.Route),
|
||||||
|
)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
50
pkg/apis/networking/v1alpha1/route_spec_destination.go
Normal file
50
pkg/apis/networking/v1alpha1/route_spec_destination.go
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
//
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||||
|
|
||||||
|
type ArangoRouteSpecDestination struct {
|
||||||
|
// Service defines service upstream reference
|
||||||
|
Service *ArangoRouteSpecDestinationService `json:"service,omitempty"`
|
||||||
|
|
||||||
|
// Schema defines HTTP/S schema used for connection
|
||||||
|
Schema *ArangoRouteSpecDestinationSchema `json:"schema,omitempty"`
|
||||||
|
|
||||||
|
// TLS defines TLS Configuration
|
||||||
|
TLS *ArangoRouteSpecDestinationTLS `json:"tls,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ArangoRouteSpecDestination) Validate() error {
|
||||||
|
if s == nil {
|
||||||
|
s = &ArangoRouteSpecDestination{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := shared.WithErrors(
|
||||||
|
shared.ValidateOptionalInterfacePath("service", s.Service),
|
||||||
|
shared.ValidateOptionalInterfacePath("schema", s.Schema),
|
||||||
|
shared.ValidateOptionalInterfacePath("tls", s.TLS),
|
||||||
|
); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
//
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ArangoRouteSpecDestinationSchema string
|
||||||
|
|
||||||
|
const (
|
||||||
|
ArangoRouteSpecDestinationSchemaHTTP ArangoRouteSpecDestinationSchema = "http"
|
||||||
|
ArangoRouteSpecDestinationSchemaHTTPS ArangoRouteSpecDestinationSchema = "https"
|
||||||
|
ArangoRouteSpecDestinationSchemaDefault = ArangoRouteSpecDestinationSchemaHTTP
|
||||||
|
)
|
||||||
|
|
||||||
|
func (a *ArangoRouteSpecDestinationSchema) Get() ArangoRouteSpecDestinationSchema {
|
||||||
|
if a == nil {
|
||||||
|
return ArangoRouteSpecDestinationSchemaDefault
|
||||||
|
}
|
||||||
|
|
||||||
|
return ArangoRouteSpecDestinationSchema(strings.ToLower(string(*a)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *ArangoRouteSpecDestinationSchema) String() string {
|
||||||
|
return string(a.Get())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *ArangoRouteSpecDestinationSchema) Validate() error {
|
||||||
|
switch x := a.Get(); x {
|
||||||
|
case ArangoRouteSpecDestinationSchemaHTTP, ArangoRouteSpecDestinationSchemaHTTPS:
|
||||||
|
return nil
|
||||||
|
default:
|
||||||
|
return errors.Errorf("Invalid schema: %s", x.String())
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
//
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
|
||||||
|
shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||||
|
sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ArangoRouteSpecDestinationService struct {
|
||||||
|
*sharedApi.Object `json:",inline,omitempty"`
|
||||||
|
|
||||||
|
// Port defines Port or Port Name used as destination
|
||||||
|
// +doc/type: intstr.IntOrString
|
||||||
|
// +doc/link: Documentation|https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/
|
||||||
|
Port *intstr.IntOrString `json:"port,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ArangoRouteSpecDestinationService) Validate() error {
|
||||||
|
if s == nil {
|
||||||
|
s = &ArangoRouteSpecDestinationService{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := shared.WithErrors(s.Object.Validate()); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
30
pkg/apis/networking/v1alpha1/route_spec_destination_tls.go
Normal file
30
pkg/apis/networking/v1alpha1/route_spec_destination_tls.go
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
//
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
type ArangoRouteSpecDestinationTLS struct {
|
||||||
|
// Insecure allows Insecure traffic
|
||||||
|
Insecure *bool `json:"insecure,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ArangoRouteSpecDestinationTLS) Validate() error {
|
||||||
|
return nil
|
||||||
|
}
|
52
pkg/apis/networking/v1alpha1/route_spec_route.go
Normal file
52
pkg/apis/networking/v1alpha1/route_spec_route.go
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
//
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
shared "github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ArangoRouteSpecRoute struct {
|
||||||
|
// Path specifies the Path route
|
||||||
|
Path *string `json:"path,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ArangoRouteSpecRoute) GetPath() string {
|
||||||
|
if s == nil && s.Path == nil {
|
||||||
|
return "/"
|
||||||
|
}
|
||||||
|
|
||||||
|
return *s.Path
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *ArangoRouteSpecRoute) Validate() error {
|
||||||
|
if s == nil {
|
||||||
|
s = &ArangoRouteSpecRoute{}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := shared.WithErrors(
|
||||||
|
shared.PrefixResourceError("path", shared.ValidateAPIPath(s.GetPath())),
|
||||||
|
); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
29
pkg/apis/networking/v1alpha1/route_status.go
Normal file
29
pkg/apis/networking/v1alpha1/route_status.go
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
//
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||||
|
|
||||||
|
type ArangoRouteStatus struct {
|
||||||
|
// Conditions specific to the entire extension
|
||||||
|
// +doc/type: api.Conditions
|
||||||
|
Conditions api.ConditionList `json:"conditions,omitempty"`
|
||||||
|
}
|
242
pkg/apis/networking/v1alpha1/zz_generated.deepcopy.go
generated
Normal file
242
pkg/apis/networking/v1alpha1/zz_generated.deepcopy.go
generated
Normal file
|
@ -0,0 +1,242 @@
|
||||||
|
//go:build !ignore_autogenerated
|
||||||
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
|
//
|
||||||
|
// 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 deepcopy-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
deploymentv1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||||
|
v1 "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
intstr "k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoRoute) DeepCopyInto(out *ArangoRoute) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoRoute.
|
||||||
|
func (in *ArangoRoute) DeepCopy() *ArangoRoute {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoRoute)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoRoute) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoRouteList) DeepCopyInto(out *ArangoRouteList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]ArangoRoute, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoRouteList.
|
||||||
|
func (in *ArangoRouteList) DeepCopy() *ArangoRouteList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoRouteList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoRouteList) DeepCopyObject() runtime.Object {
|
||||||
|
if c := in.DeepCopy(); c != nil {
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoRouteSpec) DeepCopyInto(out *ArangoRouteSpec) {
|
||||||
|
*out = *in
|
||||||
|
if in.Destination != nil {
|
||||||
|
in, out := &in.Destination, &out.Destination
|
||||||
|
*out = new(ArangoRouteSpecDestination)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.Route != nil {
|
||||||
|
in, out := &in.Route, &out.Route
|
||||||
|
*out = new(ArangoRouteSpecRoute)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoRouteSpec.
|
||||||
|
func (in *ArangoRouteSpec) DeepCopy() *ArangoRouteSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoRouteSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoRouteSpecDestination) DeepCopyInto(out *ArangoRouteSpecDestination) {
|
||||||
|
*out = *in
|
||||||
|
if in.Service != nil {
|
||||||
|
in, out := &in.Service, &out.Service
|
||||||
|
*out = new(ArangoRouteSpecDestinationService)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.Schema != nil {
|
||||||
|
in, out := &in.Schema, &out.Schema
|
||||||
|
*out = new(ArangoRouteSpecDestinationSchema)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
if in.TLS != nil {
|
||||||
|
in, out := &in.TLS, &out.TLS
|
||||||
|
*out = new(ArangoRouteSpecDestinationTLS)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoRouteSpecDestination.
|
||||||
|
func (in *ArangoRouteSpecDestination) DeepCopy() *ArangoRouteSpecDestination {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoRouteSpecDestination)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoRouteSpecDestinationService) DeepCopyInto(out *ArangoRouteSpecDestinationService) {
|
||||||
|
*out = *in
|
||||||
|
if in.Object != nil {
|
||||||
|
in, out := &in.Object, &out.Object
|
||||||
|
*out = new(v1.Object)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.Port != nil {
|
||||||
|
in, out := &in.Port, &out.Port
|
||||||
|
*out = new(intstr.IntOrString)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoRouteSpecDestinationService.
|
||||||
|
func (in *ArangoRouteSpecDestinationService) DeepCopy() *ArangoRouteSpecDestinationService {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoRouteSpecDestinationService)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoRouteSpecDestinationTLS) DeepCopyInto(out *ArangoRouteSpecDestinationTLS) {
|
||||||
|
*out = *in
|
||||||
|
if in.Insecure != nil {
|
||||||
|
in, out := &in.Insecure, &out.Insecure
|
||||||
|
*out = new(bool)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoRouteSpecDestinationTLS.
|
||||||
|
func (in *ArangoRouteSpecDestinationTLS) DeepCopy() *ArangoRouteSpecDestinationTLS {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoRouteSpecDestinationTLS)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoRouteSpecRoute) DeepCopyInto(out *ArangoRouteSpecRoute) {
|
||||||
|
*out = *in
|
||||||
|
if in.Path != nil {
|
||||||
|
in, out := &in.Path, &out.Path
|
||||||
|
*out = new(string)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoRouteSpecRoute.
|
||||||
|
func (in *ArangoRouteSpecRoute) DeepCopy() *ArangoRouteSpecRoute {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoRouteSpecRoute)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoRouteStatus) DeepCopyInto(out *ArangoRouteStatus) {
|
||||||
|
*out = *in
|
||||||
|
if in.Conditions != nil {
|
||||||
|
in, out := &in.Conditions, &out.Conditions
|
||||||
|
*out = make(deploymentv1.ConditionList, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoRouteStatus.
|
||||||
|
func (in *ArangoRouteStatus) DeepCopy() *ArangoRouteStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoRouteStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
|
@ -33,12 +33,17 @@ import (
|
||||||
|
|
||||||
var (
|
var (
|
||||||
resourceNameRE = regexp.MustCompile(`^([0-9\-\.a-z])+$`)
|
resourceNameRE = regexp.MustCompile(`^([0-9\-\.a-z])+$`)
|
||||||
|
apiPathRE = regexp.MustCompile(`^/([A-Za-z0-9\-]+/)*$`)
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ServiceTypeNone core.ServiceType = "None"
|
ServiceTypeNone core.ServiceType = "None"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ValidateInterface interface {
|
||||||
|
Validate() error
|
||||||
|
}
|
||||||
|
|
||||||
// ValidateResourceName validates a kubernetes resource name.
|
// ValidateResourceName validates a kubernetes resource name.
|
||||||
// If not valid, an error is returned.
|
// If not valid, an error is returned.
|
||||||
// See https://kubernetes.io/docs/concepts/overview/working-with-objects/names/
|
// See https://kubernetes.io/docs/concepts/overview/working-with-objects/names/
|
||||||
|
@ -70,6 +75,19 @@ func ValidateUID(uid types.UID) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValidateAPIPath validates if it is valid API Path
|
||||||
|
func ValidateAPIPath(path string) error {
|
||||||
|
if path == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if apiPathRE.MatchString(path) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return errors.WithStack(errors.Errorf("String '%s' is not a valid api path", path))
|
||||||
|
}
|
||||||
|
|
||||||
// ValidatePullPolicy Validates core.PullPolicy
|
// ValidatePullPolicy Validates core.PullPolicy
|
||||||
func ValidatePullPolicy(in core.PullPolicy) error {
|
func ValidatePullPolicy(in core.PullPolicy) error {
|
||||||
switch in {
|
switch in {
|
||||||
|
@ -80,19 +98,19 @@ func ValidatePullPolicy(in core.PullPolicy) error {
|
||||||
return errors.Errorf("Unknown pull policy: '%s'", string(in))
|
return errors.Errorf("Unknown pull policy: '%s'", string(in))
|
||||||
}
|
}
|
||||||
|
|
||||||
type ValidateInterface interface {
|
|
||||||
Validate() error
|
|
||||||
}
|
|
||||||
|
|
||||||
func Validate[T interface{}](in T) error {
|
func Validate[T interface{}](in T) error {
|
||||||
return validate(in)
|
res, _ := validate(in)
|
||||||
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
func validate(in any) error {
|
func validate(in any) (error, bool) {
|
||||||
if v, ok := in.(ValidateInterface); ok {
|
if in == nil {
|
||||||
return v.Validate()
|
return nil, false
|
||||||
}
|
}
|
||||||
return nil
|
if v, ok := in.(ValidateInterface); ok {
|
||||||
|
return v.Validate(), true
|
||||||
|
}
|
||||||
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
// ValidateOptional Validates object if is not nil
|
// ValidateOptional Validates object if is not nil
|
||||||
|
@ -104,6 +122,17 @@ func ValidateOptional[T interface{}](in *T, validator func(T) error) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValidateOptionalInterface Validates object if is not nil
|
||||||
|
func ValidateOptionalInterface[T ValidateInterface](in T) error {
|
||||||
|
res, _ := validate(in)
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidateOptionalInterfacePath Validates object if is not nil with path
|
||||||
|
func ValidateOptionalInterfacePath[T ValidateInterface](path string, in T) error {
|
||||||
|
return PrefixResourceError(path, ValidateOptionalInterface(in))
|
||||||
|
}
|
||||||
|
|
||||||
// ValidateRequired Validates object and required not nil value
|
// ValidateRequired Validates object and required not nil value
|
||||||
func ValidateRequired[T interface{}](in *T, validator func(T) error) error {
|
func ValidateRequired[T interface{}](in *T, validator func(T) error) error {
|
||||||
if in != nil {
|
if in != nil {
|
||||||
|
@ -113,6 +142,20 @@ func ValidateRequired[T interface{}](in *T, validator func(T) error) error {
|
||||||
return errors.Errorf("should be not nil")
|
return errors.Errorf("should be not nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValidateRequiredInterface Validates object if is not nil
|
||||||
|
func ValidateRequiredInterface[T ValidateInterface](in T) error {
|
||||||
|
res, ok := validate(in)
|
||||||
|
if !ok {
|
||||||
|
return errors.Errorf("should be not nil")
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidateRequiredInterfacePath Validates object if is not nil with path
|
||||||
|
func ValidateRequiredInterfacePath[T ValidateInterface](path string, in T) error {
|
||||||
|
return PrefixResourceError(path, ValidateRequiredInterface(in))
|
||||||
|
}
|
||||||
|
|
||||||
// ValidateList validates all elements on the list
|
// ValidateList validates all elements on the list
|
||||||
func ValidateList[T interface{}](in []T, validator func(T) error) error {
|
func ValidateList[T interface{}](in []T, validator func(T) error) error {
|
||||||
errors := make([]error, len(in))
|
errors := make([]error, len(in))
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
//
|
//
|
||||||
// DISCLAIMER
|
// DISCLAIMER
|
||||||
//
|
//
|
||||||
// Copyright 2023 ArangoDB GmbH, Cologne, Germany
|
// Copyright 2023-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.
|
||||||
|
@ -31,3 +31,14 @@ func Test_ValidateUID(t *testing.T) {
|
||||||
require.Error(t, ValidateUID(""))
|
require.Error(t, ValidateUID(""))
|
||||||
require.NoError(t, ValidateUID(uuid.NewUUID()))
|
require.NoError(t, ValidateUID(uuid.NewUUID()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_ValidateAPIPath(t *testing.T) {
|
||||||
|
require.NoError(t, ValidateAPIPath(""))
|
||||||
|
require.NoError(t, ValidateAPIPath("/"))
|
||||||
|
require.Error(t, ValidateAPIPath("//"))
|
||||||
|
require.Error(t, ValidateAPIPath("/api/zz"))
|
||||||
|
require.NoError(t, ValidateAPIPath("/api/"))
|
||||||
|
require.NoError(t, ValidateAPIPath("/api/test/qw/"))
|
||||||
|
require.NoError(t, ValidateAPIPath("/api/test/2/"))
|
||||||
|
require.Error(t, ValidateAPIPath("/&/"))
|
||||||
|
}
|
||||||
|
|
|
@ -90,6 +90,9 @@ func AllDefinitions() []Definition {
|
||||||
|
|
||||||
// Analytics
|
// Analytics
|
||||||
AnalyticsGAEDefinitionWithOptions(),
|
AnalyticsGAEDefinitionWithOptions(),
|
||||||
|
|
||||||
|
// Networking
|
||||||
|
NetworkingRouteDefinitionWithOptions(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -144,6 +144,7 @@ func Test_CRDGetters(t *testing.T) {
|
||||||
StorageLocalStorageWithOptions,
|
StorageLocalStorageWithOptions,
|
||||||
SchedulerProfileWithOptions,
|
SchedulerProfileWithOptions,
|
||||||
AnalyticsGAEWithOptions,
|
AnalyticsGAEWithOptions,
|
||||||
|
NetworkingRouteWithOptions,
|
||||||
}
|
}
|
||||||
require.Equal(t, len(AllDefinitions()), len(getters))
|
require.Equal(t, len(AllDefinitions()), len(getters))
|
||||||
|
|
||||||
|
|
51
pkg/crd/crds/networking-route.go
Normal file
51
pkg/crd/crds/networking-route.go
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
//
|
||||||
|
// 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 crds
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "embed"
|
||||||
|
|
||||||
|
apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
func NetworkingRouteWithOptions(opts ...func(*CRDOptions)) *apiextensions.CustomResourceDefinition {
|
||||||
|
return getCRD(NetworkingRouteDefinitionData(), opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NetworkingRouteDefinitionWithOptions(opts ...func(*CRDOptions)) Definition {
|
||||||
|
return Definition{
|
||||||
|
DefinitionData: NetworkingRouteDefinitionData(),
|
||||||
|
CRD: NetworkingRouteWithOptions(opts...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NetworkingRouteDefinitionData() DefinitionData {
|
||||||
|
return DefinitionData{
|
||||||
|
definition: networkingRoute,
|
||||||
|
schemaDefinition: networkingRouteSchemaRaw,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:embed networking-route.yaml
|
||||||
|
var networkingRoute []byte
|
||||||
|
|
||||||
|
//go:embed networking-route.schema.generated.yaml
|
||||||
|
var networkingRouteSchemaRaw []byte
|
55
pkg/crd/crds/networking-route.schema.generated.yaml
Normal file
55
pkg/crd/crds/networking-route.schema.generated.yaml
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
v1alpha1:
|
||||||
|
openAPIV3Schema:
|
||||||
|
properties:
|
||||||
|
spec:
|
||||||
|
properties:
|
||||||
|
deployment:
|
||||||
|
description: Deployment specifies the ArangoDeployment object name
|
||||||
|
type: string
|
||||||
|
destination:
|
||||||
|
description: Destination defines the route destination
|
||||||
|
properties:
|
||||||
|
schema:
|
||||||
|
description: Schema defines HTTP/S schema used for connection
|
||||||
|
type: string
|
||||||
|
service:
|
||||||
|
description: Service defines service upstream reference
|
||||||
|
properties:
|
||||||
|
checksum:
|
||||||
|
description: UID keeps the information about object Checksum
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: Name of the object
|
||||||
|
type: string
|
||||||
|
namespace:
|
||||||
|
description: Namespace of the object. Should default to the namespace of the parent object
|
||||||
|
type: string
|
||||||
|
port:
|
||||||
|
description: Port defines Port or Port Name used as destination
|
||||||
|
type: string
|
||||||
|
x-kubernetes-int-or-string: true
|
||||||
|
uid:
|
||||||
|
description: UID keeps the information about object UID
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
tls:
|
||||||
|
description: TLS defines TLS Configuration
|
||||||
|
properties:
|
||||||
|
insecure:
|
||||||
|
description: Insecure allows Insecure traffic
|
||||||
|
type: boolean
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
route:
|
||||||
|
description: Route defines the route spec
|
||||||
|
properties:
|
||||||
|
path:
|
||||||
|
description: Path specifies the Path route
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: Object with preserved fields for backward compatibility
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
type: object
|
22
pkg/crd/crds/networking-route.yaml
Normal file
22
pkg/crd/crds/networking-route.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoroutes.networking.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: networking.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoRoute
|
||||||
|
listKind: ArangoRouteList
|
||||||
|
plural: arangoroutes
|
||||||
|
singular: arangoroute
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
40
pkg/crd/networking.go
Normal file
40
pkg/crd/networking.go
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
//
|
||||||
|
// 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 crd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/crd/crds"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
defs := []func(...func(options *crds.CRDOptions)) crds.Definition{
|
||||||
|
crds.NetworkingRouteDefinitionWithOptions,
|
||||||
|
}
|
||||||
|
for _, getDef := range defs {
|
||||||
|
defFn := getDef // bring into scope
|
||||||
|
registerCRDWithPanic(func(opts *crds.CRDOptions) crds.Definition {
|
||||||
|
return defFn(opts.AsFunc())
|
||||||
|
}, &crds.CRDOptions{
|
||||||
|
WithSchema: true,
|
||||||
|
WithPreserve: false,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
192
pkg/deployment/resources/inspector/ar.go
Normal file
192
pkg/deployment/resources/inspector/ar.go
Normal file
|
@ -0,0 +1,192 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// 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 inspector
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
networkingApi "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/globals"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/definitions"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/throttle"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/version"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
requireRegisterInspectorLoader(arangoRoutesInspectorLoaderObj)
|
||||||
|
}
|
||||||
|
|
||||||
|
var arangoRoutesInspectorLoaderObj = arangoRoutesInspectorLoader{}
|
||||||
|
|
||||||
|
type arangoRoutesInspectorLoader struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRoutesInspectorLoader) Component() definitions.Component {
|
||||||
|
return definitions.ArangoRoute
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRoutesInspectorLoader) Load(ctx context.Context, i *inspectorState) {
|
||||||
|
var q arangoRoutesInspector
|
||||||
|
p.loadV1Alpha1(ctx, i, &q)
|
||||||
|
i.arangoRoutes = &q
|
||||||
|
q.state = i
|
||||||
|
q.last = time.Now()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRoutesInspectorLoader) loadV1Alpha1(ctx context.Context, i *inspectorState, q *arangoRoutesInspector) {
|
||||||
|
var z arangoRoutesInspectorV1Alpha1
|
||||||
|
|
||||||
|
z.arangoRouteInspector = q
|
||||||
|
|
||||||
|
z.arangoRoutes, z.err = p.getV1ArangoRoutes(ctx, i)
|
||||||
|
|
||||||
|
q.v1alpha1 = &z
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRoutesInspectorLoader) getV1ArangoRoutes(ctx context.Context, i *inspectorState) (map[string]*networkingApi.ArangoRoute, error) {
|
||||||
|
objs, err := p.getV1ArangoRoutesList(ctx, i)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
r := make(map[string]*networkingApi.ArangoRoute, len(objs))
|
||||||
|
|
||||||
|
for id := range objs {
|
||||||
|
r[objs[id].GetName()] = objs[id]
|
||||||
|
}
|
||||||
|
|
||||||
|
return r, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRoutesInspectorLoader) getV1ArangoRoutesList(ctx context.Context, i *inspectorState) ([]*networkingApi.ArangoRoute, error) {
|
||||||
|
ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx)
|
||||||
|
defer cancel()
|
||||||
|
obj, err := i.client.Arango().NetworkingV1alpha1().ArangoRoutes(i.namespace).List(ctxChild, meta.ListOptions{
|
||||||
|
Limit: globals.GetGlobals().Kubernetes().RequestBatchSize().Get(),
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
items := obj.Items
|
||||||
|
cont := obj.Continue
|
||||||
|
var s = int64(len(items))
|
||||||
|
|
||||||
|
if z := obj.RemainingItemCount; z != nil {
|
||||||
|
s += *z
|
||||||
|
}
|
||||||
|
|
||||||
|
ptrs := make([]*networkingApi.ArangoRoute, 0, s)
|
||||||
|
|
||||||
|
for {
|
||||||
|
for id := range items {
|
||||||
|
ptrs = append(ptrs, &items[id])
|
||||||
|
}
|
||||||
|
|
||||||
|
if cont == "" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
items, cont, err = p.getV1ArangoRoutesListRequest(ctx, i, cont)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ptrs, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRoutesInspectorLoader) getV1ArangoRoutesListRequest(ctx context.Context, i *inspectorState, cont string) ([]networkingApi.ArangoRoute, string, error) {
|
||||||
|
ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx)
|
||||||
|
defer cancel()
|
||||||
|
obj, err := i.client.Arango().NetworkingV1alpha1().ArangoRoutes(i.namespace).List(ctxChild, meta.ListOptions{
|
||||||
|
Limit: globals.GetGlobals().Kubernetes().RequestBatchSize().Get(),
|
||||||
|
Continue: cont,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return obj.Items, obj.Continue, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRoutesInspectorLoader) Verify(i *inspectorState) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRoutesInspectorLoader) Copy(from, to *inspectorState, override bool) {
|
||||||
|
if to.arangoRoutes != nil {
|
||||||
|
if !override {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
to.arangoRoutes = from.arangoRoutes
|
||||||
|
to.arangoRoutes.state = to
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRoutesInspectorLoader) Name() string {
|
||||||
|
return "arangoRoutes"
|
||||||
|
}
|
||||||
|
|
||||||
|
type arangoRoutesInspector struct {
|
||||||
|
state *inspectorState
|
||||||
|
|
||||||
|
last time.Time
|
||||||
|
|
||||||
|
v1alpha1 *arangoRoutesInspectorV1Alpha1
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspector) LastRefresh() time.Time {
|
||||||
|
return p.last
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspector) Refresh(ctx context.Context) error {
|
||||||
|
p.Throttle(p.state.throttles).Invalidate()
|
||||||
|
return p.state.refresh(ctx, arangoRoutesInspectorLoaderObj)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspector) Version() version.Version {
|
||||||
|
return version.V1
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspector) Throttle(c throttle.Components) throttle.Throttle {
|
||||||
|
return c.ArangoRoute()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspector) validate() error {
|
||||||
|
if p == nil {
|
||||||
|
return errors.Errorf("ArangoRouteInspector is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.state == nil {
|
||||||
|
return errors.Errorf("Parent is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
return p.v1alpha1.validate()
|
||||||
|
}
|
45
pkg/deployment/resources/inspector/ar_anonymous.go
Normal file
45
pkg/deployment/resources/inspector/ar_anonymous.go
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// 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 inspector
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
|
networkingApi "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/anonymous"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/constants"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspector) Anonymous(gvk schema.GroupVersionKind) (anonymous.Interface, bool) {
|
||||||
|
g := constants.ArangoRouteGKv1()
|
||||||
|
|
||||||
|
if g.Kind == gvk.Kind && g.Group == gvk.Group {
|
||||||
|
switch gvk.Version {
|
||||||
|
case constants.ArangoRouteVersionV1Alpha1, DefaultVersion:
|
||||||
|
if p.v1alpha1 == nil || p.v1alpha1.err != nil {
|
||||||
|
return nil, false
|
||||||
|
}
|
||||||
|
return anonymous.NewAnonymous[*networkingApi.ArangoRoute](g, p.state.arangoRoutes.v1alpha1, p.state.ArangoRouteModInterface().V1Alpha1()), true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, false
|
||||||
|
}
|
43
pkg/deployment/resources/inspector/ar_gvk.go
Normal file
43
pkg/deployment/resources/inspector/ar_gvk.go
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// 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 inspector
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/constants"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) GroupVersionKind() schema.GroupVersionKind {
|
||||||
|
return constants.ArangoRouteGKv1()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) GroupVersionResource() schema.GroupVersionResource {
|
||||||
|
return constants.ArangoRouteGRv1()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspector) GroupKind() schema.GroupKind {
|
||||||
|
return constants.ArangoRouteGK()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspector) GroupResource() schema.GroupResource {
|
||||||
|
return constants.ArangoRouteGR()
|
||||||
|
}
|
47
pkg/deployment/resources/inspector/ar_mod.go
Normal file
47
pkg/deployment/resources/inspector/ar_mod.go
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// 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 inspector
|
||||||
|
|
||||||
|
import (
|
||||||
|
networkingApi "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
arangoRoutev1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoroute/v1alpha1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/definitions"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/generic"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/mods"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i *inspectorState) ArangoRouteModInterface() mods.ArangoRouteMods {
|
||||||
|
return arangoRouteMod{
|
||||||
|
i: i,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type arangoRouteMod struct {
|
||||||
|
i *inspectorState
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRouteMod) V1Alpha1() arangoRoutev1.ModInterface {
|
||||||
|
return wrapMod[*networkingApi.ArangoRoute](definitions.ArangoRoute, p.i.GetThrottles, p.clientv1alpha1)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p arangoRouteMod) clientv1alpha1() generic.ModStatusClient[*networkingApi.ArangoRoute] {
|
||||||
|
return p.i.Client().Arango().NetworkingV1alpha1().ArangoRoutes(p.i.Namespace())
|
||||||
|
}
|
138
pkg/deployment/resources/inspector/ar_v1alpha1.go
Normal file
138
pkg/deployment/resources/inspector/ar_v1alpha1.go
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// 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 inspector
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
apiErrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
networkingApi "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||||
|
ins "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoroute/v1alpha1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/constants"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspector) V1Alpha1() (ins.Inspector, error) {
|
||||||
|
if p.v1alpha1.err != nil {
|
||||||
|
return nil, p.v1alpha1.err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p.v1alpha1, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type arangoRoutesInspectorV1Alpha1 struct {
|
||||||
|
arangoRouteInspector *arangoRoutesInspector
|
||||||
|
|
||||||
|
arangoRoutes map[string]*networkingApi.ArangoRoute
|
||||||
|
err error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) Filter(filters ...ins.Filter) []*networkingApi.ArangoRoute {
|
||||||
|
z := p.ListSimple()
|
||||||
|
|
||||||
|
r := make([]*networkingApi.ArangoRoute, 0, len(z))
|
||||||
|
|
||||||
|
for _, o := range z {
|
||||||
|
if !ins.FilterObject(o, filters...) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
r = append(r, o)
|
||||||
|
}
|
||||||
|
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) validate() error {
|
||||||
|
if p == nil {
|
||||||
|
return errors.Errorf("ArangoRoutesV1AlphaInspector is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.arangoRouteInspector == nil {
|
||||||
|
return errors.Errorf("Parent is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.arangoRoutes == nil && p.err == nil {
|
||||||
|
return errors.Errorf("ArangoRoutes or err should be not nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if p.arangoRoutes != nil && p.err != nil {
|
||||||
|
return errors.Errorf("ArangoRoutes or err cannot be not nil together")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) ListSimple() []*networkingApi.ArangoRoute {
|
||||||
|
var r []*networkingApi.ArangoRoute
|
||||||
|
for _, arangoRoute := range p.arangoRoutes {
|
||||||
|
r = append(r, arangoRoute)
|
||||||
|
}
|
||||||
|
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) GetSimple(name string) (*networkingApi.ArangoRoute, bool) {
|
||||||
|
arangoRoute, ok := p.arangoRoutes[name]
|
||||||
|
if !ok {
|
||||||
|
return nil, false
|
||||||
|
}
|
||||||
|
|
||||||
|
return arangoRoute, true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) Iterate(action ins.Action, filters ...ins.Filter) error {
|
||||||
|
for _, arangoRoute := range p.arangoRoutes {
|
||||||
|
if err := p.iterateArangoRoute(arangoRoute, action, filters...); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) iterateArangoRoute(arangoRoute *networkingApi.ArangoRoute, action ins.Action, filters ...ins.Filter) error {
|
||||||
|
for _, f := range filters {
|
||||||
|
if f == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if !f(arangoRoute) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return action(arangoRoute)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) Read() ins.ReadInterface {
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *arangoRoutesInspectorV1Alpha1) Get(ctx context.Context, name string, opts meta.GetOptions) (*networkingApi.ArangoRoute, error) {
|
||||||
|
if s, ok := p.GetSimple(name); !ok {
|
||||||
|
return nil, apiErrors.NewNotFound(constants.ArangoRouteGR(), name)
|
||||||
|
} else {
|
||||||
|
return s, nil
|
||||||
|
}
|
||||||
|
}
|
|
@ -42,6 +42,7 @@ import (
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/anonymous"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/anonymous"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoclustersynchronization"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoclustersynchronization"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangomember"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangomember"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoroute"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangotask"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangotask"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/definitions"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/definitions"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/endpoints"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/endpoints"
|
||||||
|
@ -134,6 +135,7 @@ type inspectorState struct {
|
||||||
serviceMonitors *serviceMonitorsInspector
|
serviceMonitors *serviceMonitorsInspector
|
||||||
arangoMembers *arangoMembersInspector
|
arangoMembers *arangoMembersInspector
|
||||||
arangoTasks *arangoTasksInspector
|
arangoTasks *arangoTasksInspector
|
||||||
|
arangoRoutes *arangoRoutesInspector
|
||||||
arangoClusterSynchronizations *arangoClusterSynchronizationsInspector
|
arangoClusterSynchronizations *arangoClusterSynchronizationsInspector
|
||||||
endpoints *endpointsInspector
|
endpoints *endpointsInspector
|
||||||
|
|
||||||
|
@ -167,6 +169,10 @@ func (i *inspectorState) RegisterInformers(k8s informers.SharedInformerFactory,
|
||||||
arango.Database().V1().ArangoTasks().Informer().AddEventHandler(i.eventHandler(definitions.ArangoTask))
|
arango.Database().V1().ArangoTasks().Informer().AddEventHandler(i.eventHandler(definitions.ArangoTask))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _, err := i.ArangoRoute().V1Alpha1(); err == nil {
|
||||||
|
arango.Networking().V1alpha1().ArangoRoutes().Informer().AddEventHandler(i.eventHandler(definitions.ArangoRoute))
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := i.ArangoClusterSynchronization().V1(); err == nil {
|
if _, err := i.ArangoClusterSynchronization().V1(); err == nil {
|
||||||
arango.Database().V1().ArangoClusterSynchronizations().Informer().AddEventHandler(i.eventHandler(definitions.ArangoClusterSynchronization))
|
arango.Database().V1().ArangoClusterSynchronizations().Informer().AddEventHandler(i.eventHandler(definitions.ArangoClusterSynchronization))
|
||||||
}
|
}
|
||||||
|
@ -225,6 +231,7 @@ func (i *inspectorState) AnonymousObjects() []anonymous.Impl {
|
||||||
i.serviceMonitors,
|
i.serviceMonitors,
|
||||||
i.arangoMembers,
|
i.arangoMembers,
|
||||||
i.arangoTasks,
|
i.arangoTasks,
|
||||||
|
i.arangoRoutes,
|
||||||
i.arangoClusterSynchronizations,
|
i.arangoClusterSynchronizations,
|
||||||
i.endpoints,
|
i.endpoints,
|
||||||
}
|
}
|
||||||
|
@ -317,6 +324,10 @@ func (i *inspectorState) ArangoTask() arangotask.Definition {
|
||||||
return i.arangoTasks
|
return i.arangoTasks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *inspectorState) ArangoRoute() arangoroute.Definition {
|
||||||
|
return i.arangoRoutes
|
||||||
|
}
|
||||||
|
|
||||||
func (i *inspectorState) Refresh(ctx context.Context) error {
|
func (i *inspectorState) Refresh(ctx context.Context) error {
|
||||||
return i.refresh(ctx, inspectorLoadersList...)
|
return i.refresh(ctx, inspectorLoadersList...)
|
||||||
}
|
}
|
||||||
|
@ -464,6 +475,10 @@ func (i *inspectorState) validate() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := i.arangoRoutes.validate(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if err := i.arangoTasks.validate(); err != nil {
|
if err := i.arangoTasks.validate(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -495,6 +510,7 @@ func (i *inspectorState) copyCore() *inspectorState {
|
||||||
serviceMonitors: i.serviceMonitors,
|
serviceMonitors: i.serviceMonitors,
|
||||||
arangoMembers: i.arangoMembers,
|
arangoMembers: i.arangoMembers,
|
||||||
arangoTasks: i.arangoTasks,
|
arangoTasks: i.arangoTasks,
|
||||||
|
arangoRoutes: i.arangoRoutes,
|
||||||
arangoClusterSynchronizations: i.arangoClusterSynchronizations,
|
arangoClusterSynchronizations: i.arangoClusterSynchronizations,
|
||||||
throttles: i.throttles.Copy(),
|
throttles: i.throttles.Copy(),
|
||||||
versionInfo: i.versionInfo,
|
versionInfo: i.versionInfo,
|
||||||
|
|
|
@ -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.
|
||||||
|
@ -142,7 +142,7 @@ func getAllTypes() []string {
|
||||||
func Test_Inspector_RefreshMatrix(t *testing.T) {
|
func Test_Inspector_RefreshMatrix(t *testing.T) {
|
||||||
c := kclient.NewFakeClient()
|
c := kclient.NewFakeClient()
|
||||||
|
|
||||||
tc := throttle.NewThrottleComponents(time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour)
|
tc := throttle.NewThrottleComponents(time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour)
|
||||||
|
|
||||||
i := NewInspector(tc, c, "test", "test")
|
i := NewInspector(tc, c, "test", "test")
|
||||||
|
|
||||||
|
@ -302,7 +302,7 @@ func Test_Inspector_Load(t *testing.T) {
|
||||||
func Test_Inspector_Invalidate(t *testing.T) {
|
func Test_Inspector_Invalidate(t *testing.T) {
|
||||||
c := kclient.NewFakeClient()
|
c := kclient.NewFakeClient()
|
||||||
|
|
||||||
tc := throttle.NewThrottleComponents(time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour)
|
tc := throttle.NewThrottleComponents(time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour)
|
||||||
|
|
||||||
i := NewInspector(tc, c, "test", "test")
|
i := NewInspector(tc, c, "test", "test")
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
@ -52,7 +52,7 @@ func Test_PDB_Versions(t *testing.T) {
|
||||||
GitVersion: v,
|
GitVersion: v,
|
||||||
})
|
})
|
||||||
|
|
||||||
tc := throttle.NewThrottleComponents(time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour)
|
tc := throttle.NewThrottleComponents(time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour, time.Hour)
|
||||||
|
|
||||||
i := NewInspector(tc, c, "test", "test")
|
i := NewInspector(tc, c, "test", "test")
|
||||||
require.NoError(t, i.Refresh(context.Background()))
|
require.NoError(t, i.Refresh(context.Background()))
|
||||||
|
|
|
@ -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.
|
||||||
|
@ -31,6 +31,7 @@ func NewDefaultThrottle() throttle.Components {
|
||||||
30*time.Second, // ArangoDeploymentSynchronization
|
30*time.Second, // ArangoDeploymentSynchronization
|
||||||
30*time.Second, // ArangoMember
|
30*time.Second, // ArangoMember
|
||||||
30*time.Second, // ArangoTask
|
30*time.Second, // ArangoTask
|
||||||
|
30*time.Second, // ArangoRoute
|
||||||
30*time.Second, // Node
|
30*time.Second, // Node
|
||||||
30*time.Second, // PV
|
30*time.Second, // PV
|
||||||
15*time.Second, // PVC
|
15*time.Second, // PVC
|
||||||
|
|
13
pkg/generated/clientset/versioned/clientset.go
generated
13
pkg/generated/clientset/versioned/clientset.go
generated
|
@ -33,6 +33,7 @@ import (
|
||||||
databasev2alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/deployment/v2alpha1"
|
databasev2alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/deployment/v2alpha1"
|
||||||
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1alpha1"
|
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1alpha1"
|
||||||
mlv1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1beta1"
|
mlv1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1beta1"
|
||||||
|
networkingv1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/networking/v1alpha1"
|
||||||
replicationv1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v1"
|
replicationv1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v1"
|
||||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v2alpha1"
|
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v2alpha1"
|
||||||
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1"
|
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/scheduler/v1alpha1"
|
||||||
|
@ -52,6 +53,7 @@ type Interface interface {
|
||||||
DatabaseV2alpha1() databasev2alpha1.DatabaseV2alpha1Interface
|
DatabaseV2alpha1() databasev2alpha1.DatabaseV2alpha1Interface
|
||||||
MlV1alpha1() mlv1alpha1.MlV1alpha1Interface
|
MlV1alpha1() mlv1alpha1.MlV1alpha1Interface
|
||||||
MlV1beta1() mlv1beta1.MlV1beta1Interface
|
MlV1beta1() mlv1beta1.MlV1beta1Interface
|
||||||
|
NetworkingV1alpha1() networkingv1alpha1.NetworkingV1alpha1Interface
|
||||||
ReplicationV1() replicationv1.ReplicationV1Interface
|
ReplicationV1() replicationv1.ReplicationV1Interface
|
||||||
ReplicationV2alpha1() replicationv2alpha1.ReplicationV2alpha1Interface
|
ReplicationV2alpha1() replicationv2alpha1.ReplicationV2alpha1Interface
|
||||||
SchedulerV1alpha1() schedulerv1alpha1.SchedulerV1alpha1Interface
|
SchedulerV1alpha1() schedulerv1alpha1.SchedulerV1alpha1Interface
|
||||||
|
@ -69,6 +71,7 @@ type Clientset struct {
|
||||||
databaseV2alpha1 *databasev2alpha1.DatabaseV2alpha1Client
|
databaseV2alpha1 *databasev2alpha1.DatabaseV2alpha1Client
|
||||||
mlV1alpha1 *mlv1alpha1.MlV1alpha1Client
|
mlV1alpha1 *mlv1alpha1.MlV1alpha1Client
|
||||||
mlV1beta1 *mlv1beta1.MlV1beta1Client
|
mlV1beta1 *mlv1beta1.MlV1beta1Client
|
||||||
|
networkingV1alpha1 *networkingv1alpha1.NetworkingV1alpha1Client
|
||||||
replicationV1 *replicationv1.ReplicationV1Client
|
replicationV1 *replicationv1.ReplicationV1Client
|
||||||
replicationV2alpha1 *replicationv2alpha1.ReplicationV2alpha1Client
|
replicationV2alpha1 *replicationv2alpha1.ReplicationV2alpha1Client
|
||||||
schedulerV1alpha1 *schedulerv1alpha1.SchedulerV1alpha1Client
|
schedulerV1alpha1 *schedulerv1alpha1.SchedulerV1alpha1Client
|
||||||
|
@ -111,6 +114,11 @@ func (c *Clientset) MlV1beta1() mlv1beta1.MlV1beta1Interface {
|
||||||
return c.mlV1beta1
|
return c.mlV1beta1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NetworkingV1alpha1 retrieves the NetworkingV1alpha1Client
|
||||||
|
func (c *Clientset) NetworkingV1alpha1() networkingv1alpha1.NetworkingV1alpha1Interface {
|
||||||
|
return c.networkingV1alpha1
|
||||||
|
}
|
||||||
|
|
||||||
// ReplicationV1 retrieves the ReplicationV1Client
|
// ReplicationV1 retrieves the ReplicationV1Client
|
||||||
func (c *Clientset) ReplicationV1() replicationv1.ReplicationV1Interface {
|
func (c *Clientset) ReplicationV1() replicationv1.ReplicationV1Interface {
|
||||||
return c.replicationV1
|
return c.replicationV1
|
||||||
|
@ -208,6 +216,10 @@ func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
cs.networkingV1alpha1, err = networkingv1alpha1.NewForConfigAndClient(&configShallowCopy, httpClient)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
cs.replicationV1, err = replicationv1.NewForConfigAndClient(&configShallowCopy, httpClient)
|
cs.replicationV1, err = replicationv1.NewForConfigAndClient(&configShallowCopy, httpClient)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -256,6 +268,7 @@ func New(c rest.Interface) *Clientset {
|
||||||
cs.databaseV2alpha1 = databasev2alpha1.New(c)
|
cs.databaseV2alpha1 = databasev2alpha1.New(c)
|
||||||
cs.mlV1alpha1 = mlv1alpha1.New(c)
|
cs.mlV1alpha1 = mlv1alpha1.New(c)
|
||||||
cs.mlV1beta1 = mlv1beta1.New(c)
|
cs.mlV1beta1 = mlv1beta1.New(c)
|
||||||
|
cs.networkingV1alpha1 = networkingv1alpha1.New(c)
|
||||||
cs.replicationV1 = replicationv1.New(c)
|
cs.replicationV1 = replicationv1.New(c)
|
||||||
cs.replicationV2alpha1 = replicationv2alpha1.New(c)
|
cs.replicationV2alpha1 = replicationv2alpha1.New(c)
|
||||||
cs.schedulerV1alpha1 = schedulerv1alpha1.New(c)
|
cs.schedulerV1alpha1 = schedulerv1alpha1.New(c)
|
||||||
|
|
|
@ -38,6 +38,8 @@ import (
|
||||||
fakemlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1alpha1/fake"
|
fakemlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1alpha1/fake"
|
||||||
mlv1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1beta1"
|
mlv1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1beta1"
|
||||||
fakemlv1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1beta1/fake"
|
fakemlv1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/ml/v1beta1/fake"
|
||||||
|
networkingv1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/networking/v1alpha1"
|
||||||
|
fakenetworkingv1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/networking/v1alpha1/fake"
|
||||||
replicationv1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v1"
|
replicationv1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v1"
|
||||||
fakereplicationv1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v1/fake"
|
fakereplicationv1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v1/fake"
|
||||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v2alpha1"
|
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/replication/v2alpha1"
|
||||||
|
@ -140,6 +142,11 @@ func (c *Clientset) MlV1beta1() mlv1beta1.MlV1beta1Interface {
|
||||||
return &fakemlv1beta1.FakeMlV1beta1{Fake: &c.Fake}
|
return &fakemlv1beta1.FakeMlV1beta1{Fake: &c.Fake}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NetworkingV1alpha1 retrieves the NetworkingV1alpha1Client
|
||||||
|
func (c *Clientset) NetworkingV1alpha1() networkingv1alpha1.NetworkingV1alpha1Interface {
|
||||||
|
return &fakenetworkingv1alpha1.FakeNetworkingV1alpha1{Fake: &c.Fake}
|
||||||
|
}
|
||||||
|
|
||||||
// ReplicationV1 retrieves the ReplicationV1Client
|
// ReplicationV1 retrieves the ReplicationV1Client
|
||||||
func (c *Clientset) ReplicationV1() replicationv1.ReplicationV1Interface {
|
func (c *Clientset) ReplicationV1() replicationv1.ReplicationV1Interface {
|
||||||
return &fakereplicationv1.FakeReplicationV1{Fake: &c.Fake}
|
return &fakereplicationv1.FakeReplicationV1{Fake: &c.Fake}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import (
|
||||||
databasev2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
databasev2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
||||||
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||||
mlv1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
mlv1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
||||||
|
networkingv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
||||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
||||||
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
||||||
|
@ -53,6 +54,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{
|
||||||
databasev2alpha1.AddToScheme,
|
databasev2alpha1.AddToScheme,
|
||||||
mlv1alpha1.AddToScheme,
|
mlv1alpha1.AddToScheme,
|
||||||
mlv1beta1.AddToScheme,
|
mlv1beta1.AddToScheme,
|
||||||
|
networkingv1alpha1.AddToScheme,
|
||||||
replicationv1.AddToScheme,
|
replicationv1.AddToScheme,
|
||||||
replicationv2alpha1.AddToScheme,
|
replicationv2alpha1.AddToScheme,
|
||||||
schedulerv1alpha1.AddToScheme,
|
schedulerv1alpha1.AddToScheme,
|
||||||
|
|
|
@ -30,6 +30,7 @@ import (
|
||||||
databasev2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
databasev2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
||||||
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||||
mlv1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
mlv1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
||||||
|
networkingv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
||||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
||||||
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
||||||
|
@ -53,6 +54,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{
|
||||||
databasev2alpha1.AddToScheme,
|
databasev2alpha1.AddToScheme,
|
||||||
mlv1alpha1.AddToScheme,
|
mlv1alpha1.AddToScheme,
|
||||||
mlv1beta1.AddToScheme,
|
mlv1beta1.AddToScheme,
|
||||||
|
networkingv1alpha1.AddToScheme,
|
||||||
replicationv1.AddToScheme,
|
replicationv1.AddToScheme,
|
||||||
replicationv2alpha1.AddToScheme,
|
replicationv2alpha1.AddToScheme,
|
||||||
schedulerv1alpha1.AddToScheme,
|
schedulerv1alpha1.AddToScheme,
|
||||||
|
|
199
pkg/generated/clientset/versioned/typed/networking/v1alpha1/arangoroute.go
generated
Normal file
199
pkg/generated/clientset/versioned/typed/networking/v1alpha1/arangoroute.go
generated
Normal file
|
@ -0,0 +1,199 @@
|
||||||
|
//
|
||||||
|
// 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 client-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
scheme "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/scheme"
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
types "k8s.io/apimachinery/pkg/types"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoRoutesGetter has a method to return a ArangoRouteInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type ArangoRoutesGetter interface {
|
||||||
|
ArangoRoutes(namespace string) ArangoRouteInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoRouteInterface has methods to work with ArangoRoute resources.
|
||||||
|
type ArangoRouteInterface interface {
|
||||||
|
Create(ctx context.Context, arangoRoute *v1alpha1.ArangoRoute, opts v1.CreateOptions) (*v1alpha1.ArangoRoute, error)
|
||||||
|
Update(ctx context.Context, arangoRoute *v1alpha1.ArangoRoute, opts v1.UpdateOptions) (*v1alpha1.ArangoRoute, error)
|
||||||
|
UpdateStatus(ctx context.Context, arangoRoute *v1alpha1.ArangoRoute, opts v1.UpdateOptions) (*v1alpha1.ArangoRoute, error)
|
||||||
|
Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
|
||||||
|
DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
|
||||||
|
Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ArangoRoute, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ArangoRouteList, error)
|
||||||
|
Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
|
||||||
|
Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ArangoRoute, err error)
|
||||||
|
ArangoRouteExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoRoutes implements ArangoRouteInterface
|
||||||
|
type arangoRoutes struct {
|
||||||
|
client rest.Interface
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
// newArangoRoutes returns a ArangoRoutes
|
||||||
|
func newArangoRoutes(c *NetworkingV1alpha1Client, namespace string) *arangoRoutes {
|
||||||
|
return &arangoRoutes{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
ns: namespace,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the arangoRoute, and returns the corresponding arangoRoute object, and an error if there is any.
|
||||||
|
func (c *arangoRoutes) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ArangoRoute, err error) {
|
||||||
|
result = &v1alpha1.ArangoRoute{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoroutes").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoRoutes that match those selectors.
|
||||||
|
func (c *arangoRoutes) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ArangoRouteList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1alpha1.ArangoRouteList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoroutes").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested arangoRoutes.
|
||||||
|
func (c *arangoRoutes) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
opts.Watch = true
|
||||||
|
return c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoroutes").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoRoute and creates it. Returns the server's representation of the arangoRoute, and an error, if there is any.
|
||||||
|
func (c *arangoRoutes) Create(ctx context.Context, arangoRoute *v1alpha1.ArangoRoute, opts v1.CreateOptions) (result *v1alpha1.ArangoRoute, err error) {
|
||||||
|
result = &v1alpha1.ArangoRoute{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoroutes").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoRoute).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoRoute and updates it. Returns the server's representation of the arangoRoute, and an error, if there is any.
|
||||||
|
func (c *arangoRoutes) Update(ctx context.Context, arangoRoute *v1alpha1.ArangoRoute, opts v1.UpdateOptions) (result *v1alpha1.ArangoRoute, err error) {
|
||||||
|
result = &v1alpha1.ArangoRoute{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoroutes").
|
||||||
|
Name(arangoRoute.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoRoute).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *arangoRoutes) UpdateStatus(ctx context.Context, arangoRoute *v1alpha1.ArangoRoute, opts v1.UpdateOptions) (result *v1alpha1.ArangoRoute, err error) {
|
||||||
|
result = &v1alpha1.ArangoRoute{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoroutes").
|
||||||
|
Name(arangoRoute.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoRoute).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoRoute and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *arangoRoutes) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoroutes").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *arangoRoutes) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
var timeout time.Duration
|
||||||
|
if listOpts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
return c.client.Delete().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoroutes").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoRoute.
|
||||||
|
func (c *arangoRoutes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ArangoRoute, err error) {
|
||||||
|
result = &v1alpha1.ArangoRoute{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoroutes").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
24
pkg/generated/clientset/versioned/typed/networking/v1alpha1/doc.go
generated
Normal file
24
pkg/generated/clientset/versioned/typed/networking/v1alpha1/doc.go
generated
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
//
|
||||||
|
// 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 client-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
// This package has the automatically generated typed clients.
|
||||||
|
package v1alpha1
|
24
pkg/generated/clientset/versioned/typed/networking/v1alpha1/fake/doc.go
generated
Normal file
24
pkg/generated/clientset/versioned/typed/networking/v1alpha1/fake/doc.go
generated
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
//
|
||||||
|
// 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 client-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
// Package fake has the automatically generated clients.
|
||||||
|
package fake
|
145
pkg/generated/clientset/versioned/typed/networking/v1alpha1/fake/fake_arangoroute.go
generated
Normal file
145
pkg/generated/clientset/versioned/typed/networking/v1alpha1/fake/fake_arangoroute.go
generated
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
//
|
||||||
|
// 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 client-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
v1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
labels "k8s.io/apimachinery/pkg/labels"
|
||||||
|
types "k8s.io/apimachinery/pkg/types"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
testing "k8s.io/client-go/testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeArangoRoutes implements ArangoRouteInterface
|
||||||
|
type FakeArangoRoutes struct {
|
||||||
|
Fake *FakeNetworkingV1alpha1
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
var arangoroutesResource = v1alpha1.SchemeGroupVersion.WithResource("arangoroutes")
|
||||||
|
|
||||||
|
var arangoroutesKind = v1alpha1.SchemeGroupVersion.WithKind("ArangoRoute")
|
||||||
|
|
||||||
|
// Get takes name of the arangoRoute, and returns the corresponding arangoRoute object, and an error if there is any.
|
||||||
|
func (c *FakeArangoRoutes) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ArangoRoute, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewGetAction(arangoroutesResource, c.ns, name), &v1alpha1.ArangoRoute{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.ArangoRoute), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoRoutes that match those selectors.
|
||||||
|
func (c *FakeArangoRoutes) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ArangoRouteList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewListAction(arangoroutesResource, arangoroutesKind, c.ns, opts), &v1alpha1.ArangoRouteList{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1alpha1.ArangoRouteList{ListMeta: obj.(*v1alpha1.ArangoRouteList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1alpha1.ArangoRouteList).Items {
|
||||||
|
if label.Matches(labels.Set(item.Labels)) {
|
||||||
|
list.Items = append(list.Items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested arangoRoutes.
|
||||||
|
func (c *FakeArangoRoutes) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewWatchAction(arangoroutesResource, c.ns, opts))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoRoute and creates it. Returns the server's representation of the arangoRoute, and an error, if there is any.
|
||||||
|
func (c *FakeArangoRoutes) Create(ctx context.Context, arangoRoute *v1alpha1.ArangoRoute, opts v1.CreateOptions) (result *v1alpha1.ArangoRoute, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewCreateAction(arangoroutesResource, c.ns, arangoRoute), &v1alpha1.ArangoRoute{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.ArangoRoute), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoRoute and updates it. Returns the server's representation of the arangoRoute, and an error, if there is any.
|
||||||
|
func (c *FakeArangoRoutes) Update(ctx context.Context, arangoRoute *v1alpha1.ArangoRoute, opts v1.UpdateOptions) (result *v1alpha1.ArangoRoute, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateAction(arangoroutesResource, c.ns, arangoRoute), &v1alpha1.ArangoRoute{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.ArangoRoute), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatus was generated because the type contains a Status member.
|
||||||
|
// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
|
||||||
|
func (c *FakeArangoRoutes) UpdateStatus(ctx context.Context, arangoRoute *v1alpha1.ArangoRoute, opts v1.UpdateOptions) (*v1alpha1.ArangoRoute, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateSubresourceAction(arangoroutesResource, "status", c.ns, arangoRoute), &v1alpha1.ArangoRoute{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.ArangoRoute), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoRoute and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeArangoRoutes) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewDeleteActionWithOptions(arangoroutesResource, c.ns, name, opts), &v1alpha1.ArangoRoute{})
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeArangoRoutes) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewDeleteCollectionAction(arangoroutesResource, c.ns, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1alpha1.ArangoRouteList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoRoute.
|
||||||
|
func (c *FakeArangoRoutes) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ArangoRoute, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewPatchSubresourceAction(arangoroutesResource, c.ns, name, pt, data, subresources...), &v1alpha1.ArangoRoute{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.ArangoRoute), err
|
||||||
|
}
|
44
pkg/generated/clientset/versioned/typed/networking/v1alpha1/fake/fake_networking_client.go
generated
Normal file
44
pkg/generated/clientset/versioned/typed/networking/v1alpha1/fake/fake_networking_client.go
generated
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
//
|
||||||
|
// 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 client-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/typed/networking/v1alpha1"
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
testing "k8s.io/client-go/testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FakeNetworkingV1alpha1 struct {
|
||||||
|
*testing.Fake
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeNetworkingV1alpha1) ArangoRoutes(namespace string) v1alpha1.ArangoRouteInterface {
|
||||||
|
return &FakeArangoRoutes{c, namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RESTClient returns a RESTClient that is used to communicate
|
||||||
|
// with API server by this client implementation.
|
||||||
|
func (c *FakeNetworkingV1alpha1) RESTClient() rest.Interface {
|
||||||
|
var ret *rest.RESTClient
|
||||||
|
return ret
|
||||||
|
}
|
25
pkg/generated/clientset/versioned/typed/networking/v1alpha1/generated_expansion.go
generated
Normal file
25
pkg/generated/clientset/versioned/typed/networking/v1alpha1/generated_expansion.go
generated
Normal 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
|
||||||
|
//
|
||||||
|
|
||||||
|
// Code generated by client-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
type ArangoRouteExpansion interface{}
|
111
pkg/generated/clientset/versioned/typed/networking/v1alpha1/networking_client.go
generated
Normal file
111
pkg/generated/clientset/versioned/typed/networking/v1alpha1/networking_client.go
generated
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
//
|
||||||
|
// 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 client-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
v1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/scheme"
|
||||||
|
rest "k8s.io/client-go/rest"
|
||||||
|
)
|
||||||
|
|
||||||
|
type NetworkingV1alpha1Interface interface {
|
||||||
|
RESTClient() rest.Interface
|
||||||
|
ArangoRoutesGetter
|
||||||
|
}
|
||||||
|
|
||||||
|
// NetworkingV1alpha1Client is used to interact with features provided by the networking.arangodb.com group.
|
||||||
|
type NetworkingV1alpha1Client struct {
|
||||||
|
restClient rest.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *NetworkingV1alpha1Client) ArangoRoutes(namespace string) ArangoRouteInterface {
|
||||||
|
return newArangoRoutes(c, namespace)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewForConfig creates a new NetworkingV1alpha1Client for the given config.
|
||||||
|
// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
|
||||||
|
// where httpClient was generated with rest.HTTPClientFor(c).
|
||||||
|
func NewForConfig(c *rest.Config) (*NetworkingV1alpha1Client, error) {
|
||||||
|
config := *c
|
||||||
|
if err := setConfigDefaults(&config); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
httpClient, err := rest.HTTPClientFor(&config)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return NewForConfigAndClient(&config, httpClient)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewForConfigAndClient creates a new NetworkingV1alpha1Client for the given config and http client.
|
||||||
|
// Note the http client provided takes precedence over the configured transport values.
|
||||||
|
func NewForConfigAndClient(c *rest.Config, h *http.Client) (*NetworkingV1alpha1Client, error) {
|
||||||
|
config := *c
|
||||||
|
if err := setConfigDefaults(&config); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
client, err := rest.RESTClientForConfigAndClient(&config, h)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &NetworkingV1alpha1Client{client}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewForConfigOrDie creates a new NetworkingV1alpha1Client for the given config and
|
||||||
|
// panics if there is an error in the config.
|
||||||
|
func NewForConfigOrDie(c *rest.Config) *NetworkingV1alpha1Client {
|
||||||
|
client, err := NewForConfig(c)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
|
// New creates a new NetworkingV1alpha1Client for the given RESTClient.
|
||||||
|
func New(c rest.Interface) *NetworkingV1alpha1Client {
|
||||||
|
return &NetworkingV1alpha1Client{c}
|
||||||
|
}
|
||||||
|
|
||||||
|
func setConfigDefaults(config *rest.Config) error {
|
||||||
|
gv := v1alpha1.SchemeGroupVersion
|
||||||
|
config.GroupVersion = &gv
|
||||||
|
config.APIPath = "/apis"
|
||||||
|
config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
|
||||||
|
|
||||||
|
if config.UserAgent == "" {
|
||||||
|
config.UserAgent = rest.DefaultKubernetesUserAgent()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// RESTClient returns a RESTClient that is used to communicate
|
||||||
|
// with API server by this client implementation.
|
||||||
|
func (c *NetworkingV1alpha1Client) RESTClient() rest.Interface {
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return c.restClient
|
||||||
|
}
|
|
@ -34,6 +34,7 @@ import (
|
||||||
deployment "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/deployment"
|
deployment "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/deployment"
|
||||||
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
||||||
ml "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/ml"
|
ml "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/ml"
|
||||||
|
networking "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/networking"
|
||||||
replication "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/replication"
|
replication "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/replication"
|
||||||
scheduler "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/scheduler"
|
scheduler "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/scheduler"
|
||||||
storage "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/storage"
|
storage "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/storage"
|
||||||
|
@ -269,6 +270,7 @@ type SharedInformerFactory interface {
|
||||||
Backup() backup.Interface
|
Backup() backup.Interface
|
||||||
Database() deployment.Interface
|
Database() deployment.Interface
|
||||||
Ml() ml.Interface
|
Ml() ml.Interface
|
||||||
|
Networking() networking.Interface
|
||||||
Replication() replication.Interface
|
Replication() replication.Interface
|
||||||
Scheduler() scheduler.Interface
|
Scheduler() scheduler.Interface
|
||||||
Storage() storage.Interface
|
Storage() storage.Interface
|
||||||
|
@ -294,6 +296,10 @@ func (f *sharedInformerFactory) Ml() ml.Interface {
|
||||||
return ml.New(f, f.namespace, f.tweakListOptions)
|
return ml.New(f, f.namespace, f.tweakListOptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *sharedInformerFactory) Networking() networking.Interface {
|
||||||
|
return networking.New(f, f.namespace, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
func (f *sharedInformerFactory) Replication() replication.Interface {
|
func (f *sharedInformerFactory) Replication() replication.Interface {
|
||||||
return replication.New(f, f.namespace, f.tweakListOptions)
|
return replication.New(f, f.namespace, f.tweakListOptions)
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ import (
|
||||||
v2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
v2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
||||||
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||||
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1"
|
||||||
|
networkingv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
replicationv1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1"
|
||||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
||||||
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
||||||
|
@ -117,6 +118,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
|
||||||
case v1beta1.SchemeGroupVersion.WithResource("arangomlstorages"):
|
case v1beta1.SchemeGroupVersion.WithResource("arangomlstorages"):
|
||||||
return &genericInformer{resource: resource.GroupResource(), informer: f.Ml().V1beta1().ArangoMLStorages().Informer()}, nil
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Ml().V1beta1().ArangoMLStorages().Informer()}, nil
|
||||||
|
|
||||||
|
// Group=networking.arangodb.com, Version=v1alpha1
|
||||||
|
case networkingv1alpha1.SchemeGroupVersion.WithResource("arangoroutes"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1alpha1().ArangoRoutes().Informer()}, nil
|
||||||
|
|
||||||
// Group=replication.database.arangodb.com, Version=v1
|
// Group=replication.database.arangodb.com, Version=v1
|
||||||
case replicationv1.SchemeGroupVersion.WithResource("arangodeploymentreplications"):
|
case replicationv1.SchemeGroupVersion.WithResource("arangodeploymentreplications"):
|
||||||
return &genericInformer{resource: resource.GroupResource(), informer: f.Replication().V1().ArangoDeploymentReplications().Informer()}, nil
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Replication().V1().ArangoDeploymentReplications().Informer()}, nil
|
||||||
|
|
50
pkg/generated/informers/externalversions/networking/interface.go
generated
Normal file
50
pkg/generated/informers/externalversions/networking/interface.go
generated
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
//
|
||||||
|
// 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package networking
|
||||||
|
|
||||||
|
import (
|
||||||
|
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
||||||
|
v1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/networking/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Interface provides access to each of this group's versions.
|
||||||
|
type Interface interface {
|
||||||
|
// V1alpha1 provides access to shared informers for resources in V1alpha1.
|
||||||
|
V1alpha1() v1alpha1.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
type group struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
namespace string
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// New returns a new Interface.
|
||||||
|
func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
|
||||||
|
return &group{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// V1alpha1 returns a new v1alpha1.Interface.
|
||||||
|
func (g *group) V1alpha1() v1alpha1.Interface {
|
||||||
|
return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions)
|
||||||
|
}
|
94
pkg/generated/informers/externalversions/networking/v1alpha1/arangoroute.go
generated
Normal file
94
pkg/generated/informers/externalversions/networking/v1alpha1/arangoroute.go
generated
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
//
|
||||||
|
// 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
networkingv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
versioned "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned"
|
||||||
|
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
||||||
|
v1alpha1 "github.com/arangodb/kube-arangodb/pkg/generated/listers/networking/v1alpha1"
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
watch "k8s.io/apimachinery/pkg/watch"
|
||||||
|
cache "k8s.io/client-go/tools/cache"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoRouteInformer provides access to a shared informer and lister for
|
||||||
|
// ArangoRoutes.
|
||||||
|
type ArangoRouteInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1alpha1.ArangoRouteLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type arangoRouteInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoRouteInformer constructs a new informer for ArangoRoute type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewArangoRouteInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoRouteInformer(client, namespace, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredArangoRouteInformer constructs a new informer for ArangoRoute type.
|
||||||
|
// Always prefer using an informer factory to get a shared informer instead of getting an independent
|
||||||
|
// one. This reduces memory footprint and number of connections to the server.
|
||||||
|
func NewFilteredArangoRouteInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
|
||||||
|
return cache.NewSharedIndexInformer(
|
||||||
|
&cache.ListWatch{
|
||||||
|
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.NetworkingV1alpha1().ArangoRoutes(namespace).List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.NetworkingV1alpha1().ArangoRoutes(namespace).Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&networkingv1alpha1.ArangoRoute{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoRouteInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoRouteInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoRouteInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&networkingv1alpha1.ArangoRoute{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoRouteInformer) Lister() v1alpha1.ArangoRouteLister {
|
||||||
|
return v1alpha1.NewArangoRouteLister(f.Informer().GetIndexer())
|
||||||
|
}
|
49
pkg/generated/informers/externalversions/networking/v1alpha1/interface.go
generated
Normal file
49
pkg/generated/informers/externalversions/networking/v1alpha1/interface.go
generated
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
//
|
||||||
|
// 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 informer-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Interface provides access to all the informers in this group version.
|
||||||
|
type Interface interface {
|
||||||
|
// ArangoRoutes returns a ArangoRouteInformer.
|
||||||
|
ArangoRoutes() ArangoRouteInformer
|
||||||
|
}
|
||||||
|
|
||||||
|
type version struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
namespace string
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// New returns a new Interface.
|
||||||
|
func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
|
||||||
|
return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoRoutes returns a ArangoRouteInformer.
|
||||||
|
func (v *version) ArangoRoutes() ArangoRouteInformer {
|
||||||
|
return &arangoRouteInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
103
pkg/generated/listers/networking/v1alpha1/arangoroute.go
generated
Normal file
103
pkg/generated/listers/networking/v1alpha1/arangoroute.go
generated
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
//
|
||||||
|
// 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 lister-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoRouteLister helps list ArangoRoutes.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoRouteLister interface {
|
||||||
|
// List lists all ArangoRoutes in the indexer.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1alpha1.ArangoRoute, err error)
|
||||||
|
// ArangoRoutes returns an object that can list and get ArangoRoutes.
|
||||||
|
ArangoRoutes(namespace string) ArangoRouteNamespaceLister
|
||||||
|
ArangoRouteListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoRouteLister implements the ArangoRouteLister interface.
|
||||||
|
type arangoRouteLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoRouteLister returns a new ArangoRouteLister.
|
||||||
|
func NewArangoRouteLister(indexer cache.Indexer) ArangoRouteLister {
|
||||||
|
return &arangoRouteLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoRoutes in the indexer.
|
||||||
|
func (s *arangoRouteLister) List(selector labels.Selector) (ret []*v1alpha1.ArangoRoute, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1alpha1.ArangoRoute))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoRoutes returns an object that can list and get ArangoRoutes.
|
||||||
|
func (s *arangoRouteLister) ArangoRoutes(namespace string) ArangoRouteNamespaceLister {
|
||||||
|
return arangoRouteNamespaceLister{indexer: s.indexer, namespace: namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoRouteNamespaceLister helps list and get ArangoRoutes.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoRouteNamespaceLister interface {
|
||||||
|
// List lists all ArangoRoutes in the indexer for a given namespace.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1alpha1.ArangoRoute, err error)
|
||||||
|
// Get retrieves the ArangoRoute from the indexer for a given namespace and name.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
Get(name string) (*v1alpha1.ArangoRoute, error)
|
||||||
|
ArangoRouteNamespaceListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoRouteNamespaceLister implements the ArangoRouteNamespaceLister
|
||||||
|
// interface.
|
||||||
|
type arangoRouteNamespaceLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoRoutes in the indexer for a given namespace.
|
||||||
|
func (s arangoRouteNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.ArangoRoute, err error) {
|
||||||
|
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1alpha1.ArangoRoute))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the ArangoRoute from the indexer for a given namespace and name.
|
||||||
|
func (s arangoRouteNamespaceLister) Get(name string) (*v1alpha1.ArangoRoute, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1alpha1.Resource("arangoroute"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1alpha1.ArangoRoute), nil
|
||||||
|
}
|
31
pkg/generated/listers/networking/v1alpha1/expansion_generated.go
generated
Normal file
31
pkg/generated/listers/networking/v1alpha1/expansion_generated.go
generated
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
//
|
||||||
|
// 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 lister-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
// ArangoRouteListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoRouteLister.
|
||||||
|
type ArangoRouteListerExpansion interface{}
|
||||||
|
|
||||||
|
// ArangoRouteNamespaceListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoRouteNamespaceLister.
|
||||||
|
type ArangoRouteNamespaceListerExpansion interface{}
|
44
pkg/util/k8sutil/inspector/arangoroute/definition.go
Normal file
44
pkg/util/k8sutil/inspector/arangoroute/definition.go
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// 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 arangoroute
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/anonymous"
|
||||||
|
v1alpha1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoroute/v1alpha1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/gvk"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/refresh"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/version"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Inspector interface {
|
||||||
|
ArangoRoute() Definition
|
||||||
|
}
|
||||||
|
|
||||||
|
type Definition interface {
|
||||||
|
refresh.Inspector
|
||||||
|
|
||||||
|
gvk.GK
|
||||||
|
anonymous.Impl
|
||||||
|
|
||||||
|
Version() version.Version
|
||||||
|
|
||||||
|
V1Alpha1() (v1alpha1.Inspector, error)
|
||||||
|
}
|
53
pkg/util/k8sutil/inspector/arangoroute/v1alpha1/loader.go
Normal file
53
pkg/util/k8sutil/inspector/arangoroute/v1alpha1/loader.go
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
networkingApi "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/gvk"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Inspector interface {
|
||||||
|
gvk.GVK
|
||||||
|
|
||||||
|
ListSimple() []*networkingApi.ArangoRoute
|
||||||
|
GetSimple(name string) (*networkingApi.ArangoRoute, bool)
|
||||||
|
Filter(filters ...Filter) []*networkingApi.ArangoRoute
|
||||||
|
Iterate(action Action, filters ...Filter) error
|
||||||
|
Read() ReadInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
type Filter func(at *networkingApi.ArangoRoute) bool
|
||||||
|
type Action func(at *networkingApi.ArangoRoute) error
|
||||||
|
|
||||||
|
func FilterObject(at *networkingApi.ArangoRoute, filters ...Filter) bool {
|
||||||
|
for _, f := range filters {
|
||||||
|
if f == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if !f(at) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
50
pkg/util/k8sutil/inspector/arangoroute/v1alpha1/reader.go
Normal file
50
pkg/util/k8sutil/inspector/arangoroute/v1alpha1/reader.go
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// 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 v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
|
||||||
|
networkingApi "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ModInterface has methods to work with ArangoTask resources only for creation
|
||||||
|
type ModInterface interface {
|
||||||
|
Create(ctx context.Context, arangotask *networkingApi.ArangoRoute, opts meta.CreateOptions) (*networkingApi.ArangoRoute, error)
|
||||||
|
Update(ctx context.Context, arangotask *networkingApi.ArangoRoute, opts meta.UpdateOptions) (*networkingApi.ArangoRoute, error)
|
||||||
|
UpdateStatus(ctx context.Context, arangotask *networkingApi.ArangoRoute, opts meta.UpdateOptions) (*networkingApi.ArangoRoute, error)
|
||||||
|
Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts meta.PatchOptions, subresources ...string) (result *networkingApi.ArangoRoute, err error)
|
||||||
|
Delete(ctx context.Context, name string, opts meta.DeleteOptions) error
|
||||||
|
}
|
||||||
|
|
||||||
|
// Interface has methods to work with ArangoTask resources.
|
||||||
|
type Interface interface {
|
||||||
|
ModInterface
|
||||||
|
ReadInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReadInterface has methods to work with ArangoTask resources with ReadOnly mode.
|
||||||
|
type ReadInterface interface {
|
||||||
|
Get(ctx context.Context, name string, opts meta.GetOptions) (*networkingApi.ArangoRoute, error)
|
||||||
|
}
|
66
pkg/util/k8sutil/inspector/constants/ar_constants.go
Normal file
66
pkg/util/k8sutil/inspector/constants/ar_constants.go
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// 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 constants
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/apis/networking"
|
||||||
|
networkingApi "github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoRoute
|
||||||
|
const (
|
||||||
|
ArangoRouteGroup = networking.ArangoNetworkingGroupName
|
||||||
|
ArangoRouteResource = networking.ArangoRouteResourcePlural
|
||||||
|
ArangoRouteKind = networking.ArangoRouteResourceKind
|
||||||
|
ArangoRouteVersionV1Alpha1 = networkingApi.ArangoNetworkingVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
func ArangoRouteGK() schema.GroupKind {
|
||||||
|
return schema.GroupKind{
|
||||||
|
Group: ArangoRouteGroup,
|
||||||
|
Kind: ArangoRouteKind,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ArangoRouteGKv1() schema.GroupVersionKind {
|
||||||
|
return schema.GroupVersionKind{
|
||||||
|
Group: ArangoRouteGroup,
|
||||||
|
Kind: ArangoRouteKind,
|
||||||
|
Version: ArangoRouteVersionV1Alpha1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ArangoRouteGR() schema.GroupResource {
|
||||||
|
return schema.GroupResource{
|
||||||
|
Group: ArangoRouteGroup,
|
||||||
|
Resource: ArangoRouteResource,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ArangoRouteGRv1() schema.GroupVersionResource {
|
||||||
|
return schema.GroupVersionResource{
|
||||||
|
Group: ArangoRouteGroup,
|
||||||
|
Resource: ArangoRouteResource,
|
||||||
|
Version: ArangoRouteVersionV1Alpha1,
|
||||||
|
}
|
||||||
|
}
|
|
@ -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.
|
||||||
|
@ -28,6 +28,7 @@ const (
|
||||||
ArangoClusterSynchronization Component = "ArangoClusterSynchronization"
|
ArangoClusterSynchronization Component = "ArangoClusterSynchronization"
|
||||||
ArangoMember Component = "ArangoMember"
|
ArangoMember Component = "ArangoMember"
|
||||||
ArangoTask Component = "ArangoTask"
|
ArangoTask Component = "ArangoTask"
|
||||||
|
ArangoRoute Component = "ArangoRoute"
|
||||||
Node Component = "Node"
|
Node Component = "Node"
|
||||||
PersistentVolume Component = "PersistentVolume"
|
PersistentVolume Component = "PersistentVolume"
|
||||||
PersistentVolumeClaim Component = "PersistentVolumeClaim"
|
PersistentVolumeClaim Component = "PersistentVolumeClaim"
|
||||||
|
@ -45,6 +46,7 @@ func AllComponents() []Component {
|
||||||
ArangoClusterSynchronization,
|
ArangoClusterSynchronization,
|
||||||
ArangoMember,
|
ArangoMember,
|
||||||
ArangoTask,
|
ArangoTask,
|
||||||
|
ArangoRoute,
|
||||||
Node,
|
Node,
|
||||||
PersistentVolume,
|
PersistentVolume,
|
||||||
PersistentVolumeClaim,
|
PersistentVolumeClaim,
|
||||||
|
|
|
@ -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,6 +32,7 @@ import (
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoclustersynchronization"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoclustersynchronization"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangodeployment"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangodeployment"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangomember"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangomember"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoroute"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangotask"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangotask"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/endpoints"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/endpoints"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/mods"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/mods"
|
||||||
|
@ -90,6 +91,7 @@ type Inspector interface {
|
||||||
persistentvolume.Inspector
|
persistentvolume.Inspector
|
||||||
arangoclustersynchronization.Inspector
|
arangoclustersynchronization.Inspector
|
||||||
arangotask.Inspector
|
arangotask.Inspector
|
||||||
|
arangoroute.Inspector
|
||||||
|
|
||||||
mods.Mods
|
mods.Mods
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
@ -23,6 +23,7 @@ package mods
|
||||||
import (
|
import (
|
||||||
arangoclustersynchronizationv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoclustersynchronization/v1"
|
arangoclustersynchronizationv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoclustersynchronization/v1"
|
||||||
arangomemberv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangomember/v1"
|
arangomemberv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangomember/v1"
|
||||||
|
arangoroutev1alpha1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoroute/v1alpha1"
|
||||||
arangotaskv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangotask/v1"
|
arangotaskv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangotask/v1"
|
||||||
endpointsv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/endpoints/v1"
|
endpointsv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/endpoints/v1"
|
||||||
persistentvolumeclaimv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/persistentvolumeclaim/v1"
|
persistentvolumeclaimv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/persistentvolumeclaim/v1"
|
||||||
|
@ -78,6 +79,10 @@ type ArangoClusterSynchronizationMods interface {
|
||||||
V1() arangoclustersynchronizationv1.ModInterface
|
V1() arangoclustersynchronizationv1.ModInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ArangoRouteMods interface {
|
||||||
|
V1Alpha1() arangoroutev1alpha1.ModInterface
|
||||||
|
}
|
||||||
|
|
||||||
type Mods interface {
|
type Mods interface {
|
||||||
PodsModInterface() PodsMods
|
PodsModInterface() PodsMods
|
||||||
ServiceAccountsModInterface() ServiceAccountsMods
|
ServiceAccountsModInterface() ServiceAccountsMods
|
||||||
|
@ -91,4 +96,5 @@ type Mods interface {
|
||||||
ArangoMemberModInterface() ArangoMemberMods
|
ArangoMemberModInterface() ArangoMemberMods
|
||||||
ArangoTaskModInterface() ArangoTaskMods
|
ArangoTaskModInterface() ArangoTaskMods
|
||||||
ArangoClusterSynchronizationModInterface() ArangoClusterSynchronizationMods
|
ArangoClusterSynchronizationModInterface() ArangoClusterSynchronizationMods
|
||||||
|
ArangoRouteModInterface() ArangoRouteMods
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,14 +32,15 @@ type Inspector interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAlwaysThrottleComponents() Components {
|
func NewAlwaysThrottleComponents() Components {
|
||||||
return NewThrottleComponents(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
return NewThrottleComponents(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewThrottleComponents(acs, am, at, node, pvc, pod, pv, pdb, secret, service, serviceAccount, sm, endpoints time.Duration) Components {
|
func NewThrottleComponents(acs, am, at, ar, node, pvc, pod, pv, pdb, secret, service, serviceAccount, sm, endpoints time.Duration) Components {
|
||||||
return &throttleComponents{
|
return &throttleComponents{
|
||||||
arangoClusterSynchronization: NewThrottle(acs),
|
arangoClusterSynchronization: NewThrottle(acs),
|
||||||
arangoMember: NewThrottle(am),
|
arangoMember: NewThrottle(am),
|
||||||
arangoTask: NewThrottle(at),
|
arangoTask: NewThrottle(at),
|
||||||
|
arangoRoute: NewThrottle(ar),
|
||||||
node: NewThrottle(node),
|
node: NewThrottle(node),
|
||||||
persistentVolume: NewThrottle(pv),
|
persistentVolume: NewThrottle(pv),
|
||||||
persistentVolumeClaim: NewThrottle(pvc),
|
persistentVolumeClaim: NewThrottle(pvc),
|
||||||
|
@ -57,6 +58,7 @@ type Components interface {
|
||||||
ArangoClusterSynchronization() Throttle
|
ArangoClusterSynchronization() Throttle
|
||||||
ArangoMember() Throttle
|
ArangoMember() Throttle
|
||||||
ArangoTask() Throttle
|
ArangoTask() Throttle
|
||||||
|
ArangoRoute() Throttle
|
||||||
Node() Throttle
|
Node() Throttle
|
||||||
PersistentVolume() Throttle
|
PersistentVolume() Throttle
|
||||||
PersistentVolumeClaim() Throttle
|
PersistentVolumeClaim() Throttle
|
||||||
|
@ -79,6 +81,7 @@ type throttleComponents struct {
|
||||||
arangoClusterSynchronization Throttle
|
arangoClusterSynchronization Throttle
|
||||||
arangoMember Throttle
|
arangoMember Throttle
|
||||||
arangoTask Throttle
|
arangoTask Throttle
|
||||||
|
arangoRoute Throttle
|
||||||
node Throttle
|
node Throttle
|
||||||
persistentVolume Throttle
|
persistentVolume Throttle
|
||||||
persistentVolumeClaim Throttle
|
persistentVolumeClaim Throttle
|
||||||
|
@ -126,6 +129,8 @@ func (t *throttleComponents) Get(c definitions.Component) Throttle {
|
||||||
return t.arangoMember
|
return t.arangoMember
|
||||||
case definitions.ArangoTask:
|
case definitions.ArangoTask:
|
||||||
return t.arangoTask
|
return t.arangoTask
|
||||||
|
case definitions.ArangoRoute:
|
||||||
|
return t.arangoRoute
|
||||||
case definitions.Node:
|
case definitions.Node:
|
||||||
return t.node
|
return t.node
|
||||||
case definitions.PersistentVolume:
|
case definitions.PersistentVolume:
|
||||||
|
@ -156,6 +161,7 @@ func (t *throttleComponents) Copy() Components {
|
||||||
arangoClusterSynchronization: t.arangoClusterSynchronization.Copy(),
|
arangoClusterSynchronization: t.arangoClusterSynchronization.Copy(),
|
||||||
arangoMember: t.arangoMember.Copy(),
|
arangoMember: t.arangoMember.Copy(),
|
||||||
arangoTask: t.arangoTask.Copy(),
|
arangoTask: t.arangoTask.Copy(),
|
||||||
|
arangoRoute: t.arangoRoute.Copy(),
|
||||||
node: t.node.Copy(),
|
node: t.node.Copy(),
|
||||||
persistentVolume: t.persistentVolume.Copy(),
|
persistentVolume: t.persistentVolume.Copy(),
|
||||||
persistentVolumeClaim: t.persistentVolumeClaim.Copy(),
|
persistentVolumeClaim: t.persistentVolumeClaim.Copy(),
|
||||||
|
@ -181,6 +187,10 @@ func (t *throttleComponents) ArangoTask() Throttle {
|
||||||
return t.arangoTask
|
return t.arangoTask
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *throttleComponents) ArangoRoute() Throttle {
|
||||||
|
return t.arangoRoute
|
||||||
|
}
|
||||||
|
|
||||||
func (t *throttleComponents) Node() Throttle {
|
func (t *throttleComponents) Node() Throttle {
|
||||||
return t.node
|
return t.node
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue