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
|
||||
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/analytics/v1alpha1
|
||||
alias: analyticsApi
|
||||
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/networking/v1alpha1
|
||||
alias: networkingApi
|
||||
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/ml/v1beta1
|
||||
alias: mlApi
|
||||
- pkg: github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Change Log
|
||||
|
||||
## [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)
|
||||
- (Maintenance) Go 1.22.4 & Kubernetes 1.29.6 libraries
|
||||
|
|
6
Makefile
6
Makefile
|
@ -440,7 +440,8 @@ update-generated:
|
|||
apps:v1 \
|
||||
ml:v1alpha1 ml:v1beta1 \
|
||||
scheduler:v1alpha1 scheduler:v1beta1 \
|
||||
analytics:v1alpha1" \
|
||||
analytics:v1alpha1 \
|
||||
networking:v1alpha1" \
|
||||
--go-header-file "./tools/codegen/boilerplate.go.txt" \
|
||||
$(VERIFYARGS)
|
||||
GOPATH=$(GOBUILDDIR) $(VENDORDIR)/k8s.io/code-generator/generate-groups.sh \
|
||||
|
@ -894,7 +895,8 @@ CRDS:=apps-job \
|
|||
replication-deploymentreplication \
|
||||
ml-storage ml-extension ml-job-batch ml-job-cron \
|
||||
scheduler-profile \
|
||||
analytics-graphanalyticsengine
|
||||
analytics-graphanalyticsengine \
|
||||
networking-route
|
||||
|
||||
.PHONY: 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"]
|
||||
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
||||
verbs: ["*"]
|
||||
- apiGroups: ["networking.arangodb.com"]
|
||||
resources: ["arangoroutes", "arangoroutes/status"]
|
||||
verbs: ["*"]
|
||||
{{- if .Values.rbac.extensions.acs }}
|
||||
- apiGroups: ["database.arangodb.com"]
|
||||
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"]
|
||||
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
||||
verbs: ["*"]
|
||||
- apiGroups: ["networking.arangodb.com"]
|
||||
resources: ["arangoroutes", "arangoroutes/status"]
|
||||
verbs: ["*"]
|
||||
{{- if .Values.rbac.extensions.acs }}
|
||||
- apiGroups: ["database.arangodb.com"]
|
||||
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"]
|
||||
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
||||
verbs: ["*"]
|
||||
- apiGroups: ["networking.arangodb.com"]
|
||||
resources: ["arangoroutes", "arangoroutes/status"]
|
||||
verbs: ["*"]
|
||||
{{- if .Values.rbac.extensions.acs }}
|
||||
- apiGroups: ["database.arangodb.com"]
|
||||
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"]
|
||||
resources: ["arangodeployments", "arangodeployments/status","arangomembers", "arangomembers/status"]
|
||||
verbs: ["*"]
|
||||
- apiGroups: ["networking.arangodb.com"]
|
||||
resources: ["arangoroutes", "arangoroutes/status"]
|
||||
verbs: ["*"]
|
||||
{{- if .Values.rbac.extensions.acs }}
|
||||
- apiGroups: ["database.arangodb.com"]
|
||||
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"
|
||||
mlApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||
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"
|
||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
||||
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 {
|
||||
|
|
|
@ -293,7 +293,7 @@ func isSimpleType(obj reflect.Type) (string, string, bool) {
|
|||
}
|
||||
|
||||
func extractTag(tag string) (string, bool) {
|
||||
parts := strings.SplitN(tag, ",", 2)
|
||||
parts := strings.Split(tag, ",")
|
||||
|
||||
if len(parts) == 1 {
|
||||
return parts[0], false
|
||||
|
|
|
@ -42,6 +42,7 @@ import (
|
|||
deploymentApi "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
mlApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||
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"
|
||||
schedulerApiv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
||||
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{
|
||||
"v1alpha1": {
|
||||
Types: inputPackageTypes{
|
||||
|
|
|
@ -228,7 +228,7 @@ func (b *schemaBuilder) StructToSchema(t *testing.T, structObj reflect.Type, pat
|
|||
schema.Properties[k] = v
|
||||
}
|
||||
} else {
|
||||
require.NotEmpty(t, n, fullFieldName)
|
||||
require.NotEmpty(t, n, fullFieldName, inline)
|
||||
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 (
|
||||
resourceNameRE = regexp.MustCompile(`^([0-9\-\.a-z])+$`)
|
||||
apiPathRE = regexp.MustCompile(`^/([A-Za-z0-9\-]+/)*$`)
|
||||
)
|
||||
|
||||
const (
|
||||
ServiceTypeNone core.ServiceType = "None"
|
||||
)
|
||||
|
||||
type ValidateInterface interface {
|
||||
Validate() error
|
||||
}
|
||||
|
||||
// ValidateResourceName validates a kubernetes resource name.
|
||||
// If not valid, an error is returned.
|
||||
// See https://kubernetes.io/docs/concepts/overview/working-with-objects/names/
|
||||
|
@ -70,6 +75,19 @@ func ValidateUID(uid types.UID) error {
|
|||
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
|
||||
func ValidatePullPolicy(in core.PullPolicy) error {
|
||||
switch in {
|
||||
|
@ -80,19 +98,19 @@ func ValidatePullPolicy(in core.PullPolicy) error {
|
|||
return errors.Errorf("Unknown pull policy: '%s'", string(in))
|
||||
}
|
||||
|
||||
type ValidateInterface interface {
|
||||
Validate() error
|
||||
}
|
||||
|
||||
func Validate[T interface{}](in T) error {
|
||||
return validate(in)
|
||||
res, _ := validate(in)
|
||||
return res
|
||||
}
|
||||
|
||||
func validate(in any) error {
|
||||
if v, ok := in.(ValidateInterface); ok {
|
||||
return v.Validate()
|
||||
func validate(in any) (error, bool) {
|
||||
if in == nil {
|
||||
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
|
||||
|
@ -104,6 +122,17 @@ func ValidateOptional[T interface{}](in *T, validator func(T) error) error {
|
|||
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
|
||||
func ValidateRequired[T interface{}](in *T, validator func(T) error) error {
|
||||
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")
|
||||
}
|
||||
|
||||
// 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
|
||||
func ValidateList[T interface{}](in []T, validator func(T) error) error {
|
||||
errors := make([]error, len(in))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2023 ArangoDB GmbH, Cologne, Germany
|
||||
// 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.
|
||||
|
@ -31,3 +31,14 @@ func Test_ValidateUID(t *testing.T) {
|
|||
require.Error(t, ValidateUID(""))
|
||||
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
|
||||
AnalyticsGAEDefinitionWithOptions(),
|
||||
|
||||
// Networking
|
||||
NetworkingRouteDefinitionWithOptions(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -144,6 +144,7 @@ func Test_CRDGetters(t *testing.T) {
|
|||
StorageLocalStorageWithOptions,
|
||||
SchedulerProfileWithOptions,
|
||||
AnalyticsGAEWithOptions,
|
||||
NetworkingRouteWithOptions,
|
||||
}
|
||||
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/arangoclustersynchronization"
|
||||
"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/definitions"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/endpoints"
|
||||
|
@ -134,6 +135,7 @@ type inspectorState struct {
|
|||
serviceMonitors *serviceMonitorsInspector
|
||||
arangoMembers *arangoMembersInspector
|
||||
arangoTasks *arangoTasksInspector
|
||||
arangoRoutes *arangoRoutesInspector
|
||||
arangoClusterSynchronizations *arangoClusterSynchronizationsInspector
|
||||
endpoints *endpointsInspector
|
||||
|
||||
|
@ -167,6 +169,10 @@ func (i *inspectorState) RegisterInformers(k8s informers.SharedInformerFactory,
|
|||
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 {
|
||||
arango.Database().V1().ArangoClusterSynchronizations().Informer().AddEventHandler(i.eventHandler(definitions.ArangoClusterSynchronization))
|
||||
}
|
||||
|
@ -225,6 +231,7 @@ func (i *inspectorState) AnonymousObjects() []anonymous.Impl {
|
|||
i.serviceMonitors,
|
||||
i.arangoMembers,
|
||||
i.arangoTasks,
|
||||
i.arangoRoutes,
|
||||
i.arangoClusterSynchronizations,
|
||||
i.endpoints,
|
||||
}
|
||||
|
@ -317,6 +324,10 @@ func (i *inspectorState) ArangoTask() arangotask.Definition {
|
|||
return i.arangoTasks
|
||||
}
|
||||
|
||||
func (i *inspectorState) ArangoRoute() arangoroute.Definition {
|
||||
return i.arangoRoutes
|
||||
}
|
||||
|
||||
func (i *inspectorState) Refresh(ctx context.Context) error {
|
||||
return i.refresh(ctx, inspectorLoadersList...)
|
||||
}
|
||||
|
@ -464,6 +475,10 @@ func (i *inspectorState) validate() error {
|
|||
return err
|
||||
}
|
||||
|
||||
if err := i.arangoRoutes.validate(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := i.arangoTasks.validate(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -495,6 +510,7 @@ func (i *inspectorState) copyCore() *inspectorState {
|
|||
serviceMonitors: i.serviceMonitors,
|
||||
arangoMembers: i.arangoMembers,
|
||||
arangoTasks: i.arangoTasks,
|
||||
arangoRoutes: i.arangoRoutes,
|
||||
arangoClusterSynchronizations: i.arangoClusterSynchronizations,
|
||||
throttles: i.throttles.Copy(),
|
||||
versionInfo: i.versionInfo,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -142,7 +142,7 @@ func getAllTypes() []string {
|
|||
func Test_Inspector_RefreshMatrix(t *testing.T) {
|
||||
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")
|
||||
|
||||
|
@ -302,7 +302,7 @@ func Test_Inspector_Load(t *testing.T) {
|
|||
func Test_Inspector_Invalidate(t *testing.T) {
|
||||
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")
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -52,7 +52,7 @@ func Test_PDB_Versions(t *testing.T) {
|
|||
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")
|
||||
require.NoError(t, i.Refresh(context.Background()))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -31,6 +31,7 @@ func NewDefaultThrottle() throttle.Components {
|
|||
30*time.Second, // ArangoDeploymentSynchronization
|
||||
30*time.Second, // ArangoMember
|
||||
30*time.Second, // ArangoTask
|
||||
30*time.Second, // ArangoRoute
|
||||
30*time.Second, // Node
|
||||
30*time.Second, // PV
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
|
@ -52,6 +53,7 @@ type Interface interface {
|
|||
DatabaseV2alpha1() databasev2alpha1.DatabaseV2alpha1Interface
|
||||
MlV1alpha1() mlv1alpha1.MlV1alpha1Interface
|
||||
MlV1beta1() mlv1beta1.MlV1beta1Interface
|
||||
NetworkingV1alpha1() networkingv1alpha1.NetworkingV1alpha1Interface
|
||||
ReplicationV1() replicationv1.ReplicationV1Interface
|
||||
ReplicationV2alpha1() replicationv2alpha1.ReplicationV2alpha1Interface
|
||||
SchedulerV1alpha1() schedulerv1alpha1.SchedulerV1alpha1Interface
|
||||
|
@ -69,6 +71,7 @@ type Clientset struct {
|
|||
databaseV2alpha1 *databasev2alpha1.DatabaseV2alpha1Client
|
||||
mlV1alpha1 *mlv1alpha1.MlV1alpha1Client
|
||||
mlV1beta1 *mlv1beta1.MlV1beta1Client
|
||||
networkingV1alpha1 *networkingv1alpha1.NetworkingV1alpha1Client
|
||||
replicationV1 *replicationv1.ReplicationV1Client
|
||||
replicationV2alpha1 *replicationv2alpha1.ReplicationV2alpha1Client
|
||||
schedulerV1alpha1 *schedulerv1alpha1.SchedulerV1alpha1Client
|
||||
|
@ -111,6 +114,11 @@ func (c *Clientset) MlV1beta1() mlv1beta1.MlV1beta1Interface {
|
|||
return c.mlV1beta1
|
||||
}
|
||||
|
||||
// NetworkingV1alpha1 retrieves the NetworkingV1alpha1Client
|
||||
func (c *Clientset) NetworkingV1alpha1() networkingv1alpha1.NetworkingV1alpha1Interface {
|
||||
return c.networkingV1alpha1
|
||||
}
|
||||
|
||||
// ReplicationV1 retrieves the ReplicationV1Client
|
||||
func (c *Clientset) ReplicationV1() replicationv1.ReplicationV1Interface {
|
||||
return c.replicationV1
|
||||
|
@ -208,6 +216,10 @@ func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset,
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cs.networkingV1alpha1, err = networkingv1alpha1.NewForConfigAndClient(&configShallowCopy, httpClient)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
cs.replicationV1, err = replicationv1.NewForConfigAndClient(&configShallowCopy, httpClient)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -256,6 +268,7 @@ func New(c rest.Interface) *Clientset {
|
|||
cs.databaseV2alpha1 = databasev2alpha1.New(c)
|
||||
cs.mlV1alpha1 = mlv1alpha1.New(c)
|
||||
cs.mlV1beta1 = mlv1beta1.New(c)
|
||||
cs.networkingV1alpha1 = networkingv1alpha1.New(c)
|
||||
cs.replicationV1 = replicationv1.New(c)
|
||||
cs.replicationV2alpha1 = replicationv2alpha1.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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
|
@ -140,6 +142,11 @@ func (c *Clientset) MlV1beta1() mlv1beta1.MlV1beta1Interface {
|
|||
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
|
||||
func (c *Clientset) ReplicationV1() replicationv1.ReplicationV1Interface {
|
||||
return &fakereplicationv1.FakeReplicationV1{Fake: &c.Fake}
|
||||
|
|
|
@ -30,6 +30,7 @@ import (
|
|||
databasev2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
||||
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||
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"
|
||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
||||
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
||||
|
@ -53,6 +54,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{
|
|||
databasev2alpha1.AddToScheme,
|
||||
mlv1alpha1.AddToScheme,
|
||||
mlv1beta1.AddToScheme,
|
||||
networkingv1alpha1.AddToScheme,
|
||||
replicationv1.AddToScheme,
|
||||
replicationv2alpha1.AddToScheme,
|
||||
schedulerv1alpha1.AddToScheme,
|
||||
|
|
|
@ -30,6 +30,7 @@ import (
|
|||
databasev2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
||||
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||
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"
|
||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
||||
schedulerv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1alpha1"
|
||||
|
@ -53,6 +54,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{
|
|||
databasev2alpha1.AddToScheme,
|
||||
mlv1alpha1.AddToScheme,
|
||||
mlv1beta1.AddToScheme,
|
||||
networkingv1alpha1.AddToScheme,
|
||||
replicationv1.AddToScheme,
|
||||
replicationv2alpha1.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"
|
||||
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
||||
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"
|
||||
scheduler "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/scheduler"
|
||||
storage "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/storage"
|
||||
|
@ -269,6 +270,7 @@ type SharedInformerFactory interface {
|
|||
Backup() backup.Interface
|
||||
Database() deployment.Interface
|
||||
Ml() ml.Interface
|
||||
Networking() networking.Interface
|
||||
Replication() replication.Interface
|
||||
Scheduler() scheduler.Interface
|
||||
Storage() storage.Interface
|
||||
|
@ -294,6 +296,10 @@ func (f *sharedInformerFactory) Ml() ml.Interface {
|
|||
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 {
|
||||
return replication.New(f, f.namespace, f.tweakListOptions)
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ import (
|
|||
v2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v2alpha1"
|
||||
mlv1alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/ml/v1alpha1"
|
||||
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"
|
||||
replicationv2alpha1 "github.com/arangodb/kube-arangodb/pkg/apis/replication/v2alpha1"
|
||||
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"):
|
||||
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
|
||||
case replicationv1.SchemeGroupVersion.WithResource("arangodeploymentreplications"):
|
||||
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
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -28,6 +28,7 @@ const (
|
|||
ArangoClusterSynchronization Component = "ArangoClusterSynchronization"
|
||||
ArangoMember Component = "ArangoMember"
|
||||
ArangoTask Component = "ArangoTask"
|
||||
ArangoRoute Component = "ArangoRoute"
|
||||
Node Component = "Node"
|
||||
PersistentVolume Component = "PersistentVolume"
|
||||
PersistentVolumeClaim Component = "PersistentVolumeClaim"
|
||||
|
@ -45,6 +46,7 @@ func AllComponents() []Component {
|
|||
ArangoClusterSynchronization,
|
||||
ArangoMember,
|
||||
ArangoTask,
|
||||
ArangoRoute,
|
||||
Node,
|
||||
PersistentVolume,
|
||||
PersistentVolumeClaim,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -32,6 +32,7 @@ import (
|
|||
"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/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/endpoints"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/mods"
|
||||
|
@ -90,6 +91,7 @@ type Inspector interface {
|
|||
persistentvolume.Inspector
|
||||
arangoclustersynchronization.Inspector
|
||||
arangotask.Inspector
|
||||
arangoroute.Inspector
|
||||
|
||||
mods.Mods
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -23,6 +23,7 @@ package mods
|
|||
import (
|
||||
arangoclustersynchronizationv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/arangoclustersynchronization/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"
|
||||
endpointsv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/endpoints/v1"
|
||||
persistentvolumeclaimv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/persistentvolumeclaim/v1"
|
||||
|
@ -78,6 +79,10 @@ type ArangoClusterSynchronizationMods interface {
|
|||
V1() arangoclustersynchronizationv1.ModInterface
|
||||
}
|
||||
|
||||
type ArangoRouteMods interface {
|
||||
V1Alpha1() arangoroutev1alpha1.ModInterface
|
||||
}
|
||||
|
||||
type Mods interface {
|
||||
PodsModInterface() PodsMods
|
||||
ServiceAccountsModInterface() ServiceAccountsMods
|
||||
|
@ -91,4 +96,5 @@ type Mods interface {
|
|||
ArangoMemberModInterface() ArangoMemberMods
|
||||
ArangoTaskModInterface() ArangoTaskMods
|
||||
ArangoClusterSynchronizationModInterface() ArangoClusterSynchronizationMods
|
||||
ArangoRouteModInterface() ArangoRouteMods
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2023 ArangoDB GmbH, Cologne, Germany
|
||||
// Copyright 2016-2024 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
|
@ -32,14 +32,15 @@ type Inspector interface {
|
|||
}
|
||||
|
||||
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{
|
||||
arangoClusterSynchronization: NewThrottle(acs),
|
||||
arangoMember: NewThrottle(am),
|
||||
arangoTask: NewThrottle(at),
|
||||
arangoRoute: NewThrottle(ar),
|
||||
node: NewThrottle(node),
|
||||
persistentVolume: NewThrottle(pv),
|
||||
persistentVolumeClaim: NewThrottle(pvc),
|
||||
|
@ -57,6 +58,7 @@ type Components interface {
|
|||
ArangoClusterSynchronization() Throttle
|
||||
ArangoMember() Throttle
|
||||
ArangoTask() Throttle
|
||||
ArangoRoute() Throttle
|
||||
Node() Throttle
|
||||
PersistentVolume() Throttle
|
||||
PersistentVolumeClaim() Throttle
|
||||
|
@ -79,6 +81,7 @@ type throttleComponents struct {
|
|||
arangoClusterSynchronization Throttle
|
||||
arangoMember Throttle
|
||||
arangoTask Throttle
|
||||
arangoRoute Throttle
|
||||
node Throttle
|
||||
persistentVolume Throttle
|
||||
persistentVolumeClaim Throttle
|
||||
|
@ -126,6 +129,8 @@ func (t *throttleComponents) Get(c definitions.Component) Throttle {
|
|||
return t.arangoMember
|
||||
case definitions.ArangoTask:
|
||||
return t.arangoTask
|
||||
case definitions.ArangoRoute:
|
||||
return t.arangoRoute
|
||||
case definitions.Node:
|
||||
return t.node
|
||||
case definitions.PersistentVolume:
|
||||
|
@ -156,6 +161,7 @@ func (t *throttleComponents) Copy() Components {
|
|||
arangoClusterSynchronization: t.arangoClusterSynchronization.Copy(),
|
||||
arangoMember: t.arangoMember.Copy(),
|
||||
arangoTask: t.arangoTask.Copy(),
|
||||
arangoRoute: t.arangoRoute.Copy(),
|
||||
node: t.node.Copy(),
|
||||
persistentVolume: t.persistentVolume.Copy(),
|
||||
persistentVolumeClaim: t.persistentVolumeClaim.Copy(),
|
||||
|
@ -181,6 +187,10 @@ func (t *throttleComponents) ArangoTask() Throttle {
|
|||
return t.arangoTask
|
||||
}
|
||||
|
||||
func (t *throttleComponents) ArangoRoute() Throttle {
|
||||
return t.arangoRoute
|
||||
}
|
||||
|
||||
func (t *throttleComponents) Node() Throttle {
|
||||
return t.node
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue