mirror of
https://github.com/arangodb/kube-arangodb.git
synced 2024-12-14 11:57:37 +00:00
[Feature] Scheduler Types (#1730)
This commit is contained in:
parent
367e59fe5b
commit
459462b0dc
143 changed files with 22644 additions and 1478 deletions
|
@ -34,6 +34,7 @@
|
||||||
- (Feature) (Networking) Endpoints Destination
|
- (Feature) (Networking) Endpoints Destination
|
||||||
- (Improvement) Improve Metrics Handling
|
- (Improvement) Improve Metrics Handling
|
||||||
- (Feature) (Scheduler) Create Integration Profile
|
- (Feature) (Scheduler) Create Integration Profile
|
||||||
|
- (Feature) (Scheduler) Additional types
|
||||||
|
|
||||||
## [1.2.42](https://github.com/arangodb/kube-arangodb/tree/1.2.42) (2024-07-23)
|
## [1.2.42](https://github.com/arangodb/kube-arangodb/tree/1.2.42) (2024-07-23)
|
||||||
- (Maintenance) Go 1.22.4 & Kubernetes 1.29.6 libraries
|
- (Maintenance) Go 1.22.4 & Kubernetes 1.29.6 libraries
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -911,7 +911,7 @@ CRDS:=apps-job \
|
||||||
database-clustersynchronization database-deployment database-member database-task \
|
database-clustersynchronization database-deployment database-member database-task \
|
||||||
replication-deploymentreplication \
|
replication-deploymentreplication \
|
||||||
ml-storage ml-extension ml-job-batch ml-job-cron \
|
ml-storage ml-extension ml-job-batch ml-job-cron \
|
||||||
scheduler-profile \
|
scheduler-profile scheduler-pod scheduler-deployment scheduler-batchjob scheduler-cronjob \
|
||||||
analytics-graphanalyticsengine \
|
analytics-graphanalyticsengine \
|
||||||
networking-route
|
networking-route
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ Flags:
|
||||||
--kubernetes.max-batch-size int Size of batch during objects read (default 256)
|
--kubernetes.max-batch-size int Size of batch during objects read (default 256)
|
||||||
--kubernetes.qps float32 Number of queries per second for k8s API (default 15)
|
--kubernetes.qps float32 Number of queries per second for k8s API (default 15)
|
||||||
--log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty")
|
--log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty")
|
||||||
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, http, inspector, integration-config-v1, integration-envoy-auth-v3, integrations, k8s-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, pod_compare, root, root-event-recorder, scheduler-profile-operator, server, server-authentication (default [info])
|
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, generic-parent-operator, http, inspector, integration-config-v1, integration-envoy-auth-v3, integrations, k8s-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, pod_compare, root, root-event-recorder, scheduler-batchjob-operator, scheduler-cronjob-operator, scheduler-deployment-operator, scheduler-pod-operator, scheduler-profile-operator, server, server-authentication (default [info])
|
||||||
--log.sampling If true, operator will try to minimize duplication of logging events (default true)
|
--log.sampling If true, operator will try to minimize duplication of logging events (default true)
|
||||||
--memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing
|
--memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing
|
||||||
--metrics.excluded-prefixes stringArray List of the excluded metrics prefixes
|
--metrics.excluded-prefixes stringArray List of the excluded metrics prefixes
|
||||||
|
|
22
chart/kube-arangodb-arm64/crds/scheduler-batchjob.yaml
Normal file
22
chart/kube-arangodb-arm64/crds/scheduler-batchjob.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerbatchjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerBatchJob
|
||||||
|
listKind: ArangoSchedulerBatchJobList
|
||||||
|
plural: arangoschedulerbatchjobs
|
||||||
|
singular: arangoschedulerbatchjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
22
chart/kube-arangodb-arm64/crds/scheduler-cronjob.yaml
Normal file
22
chart/kube-arangodb-arm64/crds/scheduler-cronjob.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulercronjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerCronJob
|
||||||
|
listKind: ArangoSchedulerCronJobList
|
||||||
|
plural: arangoschedulercronjobs
|
||||||
|
singular: arangoschedulercronjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
22
chart/kube-arangodb-arm64/crds/scheduler-deployment.yaml
Normal file
22
chart/kube-arangodb-arm64/crds/scheduler-deployment.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerdeployments.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerDeployment
|
||||||
|
listKind: ArangoSchedulerDeploymentList
|
||||||
|
plural: arangoschedulerdeployments
|
||||||
|
singular: arangoschedulerdeployment
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
22
chart/kube-arangodb-arm64/crds/scheduler-pod.yaml
Normal file
22
chart/kube-arangodb-arm64/crds/scheduler-pod.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerpods.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerPod
|
||||||
|
listKind: ArangoSchedulerPodList
|
||||||
|
plural: arangoschedulerpods
|
||||||
|
singular: arangoschedulerpod
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -68,6 +68,10 @@ rules:
|
||||||
verbs: ["get", "list", "watch", "update", "delete"]
|
verbs: ["get", "list", "watch", "update", "delete"]
|
||||||
resourceNames:
|
resourceNames:
|
||||||
- "arangoprofiles.scheduler.arangodb.com"
|
- "arangoprofiles.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerpods.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerdeploymets.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerbatchjobs.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulercronjobs.scheduler.arangodb.com"
|
||||||
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -18,6 +18,37 @@ rules:
|
||||||
resources:
|
resources:
|
||||||
- "arangoprofiles"
|
- "arangoprofiles"
|
||||||
- "arangoprofiles/status"
|
- "arangoprofiles/status"
|
||||||
|
- "arangoschedulerpods"
|
||||||
|
- "arangoschedulerpods/status"
|
||||||
|
- "arangoschedulerdeployments"
|
||||||
|
- "arangoschedulerdeployments/status"
|
||||||
|
- "arangoschedulerbatchjobs"
|
||||||
|
- "arangoschedulerbatchjobs/status"
|
||||||
|
- "arangoschedulercronjobs"
|
||||||
|
- "arangoschedulercronjobs/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- "pods"
|
||||||
|
- "pods/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- "apps"
|
||||||
|
resources:
|
||||||
|
- "deployments"
|
||||||
|
- "deployments/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- "batch"
|
||||||
|
resources:
|
||||||
|
- "jobs"
|
||||||
|
- "jobs/status"
|
||||||
|
- "cronjobs"
|
||||||
|
- "cronjobs/status"
|
||||||
verbs:
|
verbs:
|
||||||
- "*"
|
- "*"
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerbatchjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerBatchJob
|
||||||
|
listKind: ArangoSchedulerBatchJobList
|
||||||
|
plural: arangoschedulerbatchjobs
|
||||||
|
singular: arangoschedulerbatchjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulercronjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerCronJob
|
||||||
|
listKind: ArangoSchedulerCronJobList
|
||||||
|
plural: arangoschedulercronjobs
|
||||||
|
singular: arangoschedulercronjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerdeployments.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerDeployment
|
||||||
|
listKind: ArangoSchedulerDeploymentList
|
||||||
|
plural: arangoschedulerdeployments
|
||||||
|
singular: arangoschedulerdeployment
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
22
chart/kube-arangodb-enterprise-arm64/crds/scheduler-pod.yaml
Normal file
22
chart/kube-arangodb-enterprise-arm64/crds/scheduler-pod.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerpods.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerPod
|
||||||
|
listKind: ArangoSchedulerPodList
|
||||||
|
plural: arangoschedulerpods
|
||||||
|
singular: arangoschedulerpod
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -68,6 +68,10 @@ rules:
|
||||||
verbs: ["get", "list", "watch", "update", "delete"]
|
verbs: ["get", "list", "watch", "update", "delete"]
|
||||||
resourceNames:
|
resourceNames:
|
||||||
- "arangoprofiles.scheduler.arangodb.com"
|
- "arangoprofiles.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerpods.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerdeploymets.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerbatchjobs.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulercronjobs.scheduler.arangodb.com"
|
||||||
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -18,6 +18,37 @@ rules:
|
||||||
resources:
|
resources:
|
||||||
- "arangoprofiles"
|
- "arangoprofiles"
|
||||||
- "arangoprofiles/status"
|
- "arangoprofiles/status"
|
||||||
|
- "arangoschedulerpods"
|
||||||
|
- "arangoschedulerpods/status"
|
||||||
|
- "arangoschedulerdeployments"
|
||||||
|
- "arangoschedulerdeployments/status"
|
||||||
|
- "arangoschedulerbatchjobs"
|
||||||
|
- "arangoschedulerbatchjobs/status"
|
||||||
|
- "arangoschedulercronjobs"
|
||||||
|
- "arangoschedulercronjobs/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- "pods"
|
||||||
|
- "pods/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- "apps"
|
||||||
|
resources:
|
||||||
|
- "deployments"
|
||||||
|
- "deployments/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- "batch"
|
||||||
|
resources:
|
||||||
|
- "jobs"
|
||||||
|
- "jobs/status"
|
||||||
|
- "cronjobs"
|
||||||
|
- "cronjobs/status"
|
||||||
verbs:
|
verbs:
|
||||||
- "*"
|
- "*"
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
|
|
22
chart/kube-arangodb-enterprise/crds/scheduler-batchjob.yaml
Normal file
22
chart/kube-arangodb-enterprise/crds/scheduler-batchjob.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerbatchjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerBatchJob
|
||||||
|
listKind: ArangoSchedulerBatchJobList
|
||||||
|
plural: arangoschedulerbatchjobs
|
||||||
|
singular: arangoschedulerbatchjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
22
chart/kube-arangodb-enterprise/crds/scheduler-cronjob.yaml
Normal file
22
chart/kube-arangodb-enterprise/crds/scheduler-cronjob.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulercronjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerCronJob
|
||||||
|
listKind: ArangoSchedulerCronJobList
|
||||||
|
plural: arangoschedulercronjobs
|
||||||
|
singular: arangoschedulercronjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerdeployments.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerDeployment
|
||||||
|
listKind: ArangoSchedulerDeploymentList
|
||||||
|
plural: arangoschedulerdeployments
|
||||||
|
singular: arangoschedulerdeployment
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
22
chart/kube-arangodb-enterprise/crds/scheduler-pod.yaml
Normal file
22
chart/kube-arangodb-enterprise/crds/scheduler-pod.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerpods.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerPod
|
||||||
|
listKind: ArangoSchedulerPodList
|
||||||
|
plural: arangoschedulerpods
|
||||||
|
singular: arangoschedulerpod
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -68,6 +68,10 @@ rules:
|
||||||
verbs: ["get", "list", "watch", "update", "delete"]
|
verbs: ["get", "list", "watch", "update", "delete"]
|
||||||
resourceNames:
|
resourceNames:
|
||||||
- "arangoprofiles.scheduler.arangodb.com"
|
- "arangoprofiles.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerpods.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerdeploymets.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerbatchjobs.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulercronjobs.scheduler.arangodb.com"
|
||||||
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -18,6 +18,37 @@ rules:
|
||||||
resources:
|
resources:
|
||||||
- "arangoprofiles"
|
- "arangoprofiles"
|
||||||
- "arangoprofiles/status"
|
- "arangoprofiles/status"
|
||||||
|
- "arangoschedulerpods"
|
||||||
|
- "arangoschedulerpods/status"
|
||||||
|
- "arangoschedulerdeployments"
|
||||||
|
- "arangoschedulerdeployments/status"
|
||||||
|
- "arangoschedulerbatchjobs"
|
||||||
|
- "arangoschedulerbatchjobs/status"
|
||||||
|
- "arangoschedulercronjobs"
|
||||||
|
- "arangoschedulercronjobs/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- "pods"
|
||||||
|
- "pods/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- "apps"
|
||||||
|
resources:
|
||||||
|
- "deployments"
|
||||||
|
- "deployments/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- "batch"
|
||||||
|
resources:
|
||||||
|
- "jobs"
|
||||||
|
- "jobs/status"
|
||||||
|
- "cronjobs"
|
||||||
|
- "cronjobs/status"
|
||||||
verbs:
|
verbs:
|
||||||
- "*"
|
- "*"
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
|
|
22
chart/kube-arangodb/crds/scheduler-batchjob.yaml
Normal file
22
chart/kube-arangodb/crds/scheduler-batchjob.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerbatchjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerBatchJob
|
||||||
|
listKind: ArangoSchedulerBatchJobList
|
||||||
|
plural: arangoschedulerbatchjobs
|
||||||
|
singular: arangoschedulerbatchjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
22
chart/kube-arangodb/crds/scheduler-cronjob.yaml
Normal file
22
chart/kube-arangodb/crds/scheduler-cronjob.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulercronjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerCronJob
|
||||||
|
listKind: ArangoSchedulerCronJobList
|
||||||
|
plural: arangoschedulercronjobs
|
||||||
|
singular: arangoschedulercronjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
22
chart/kube-arangodb/crds/scheduler-deployment.yaml
Normal file
22
chart/kube-arangodb/crds/scheduler-deployment.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerdeployments.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerDeployment
|
||||||
|
listKind: ArangoSchedulerDeploymentList
|
||||||
|
plural: arangoschedulerdeployments
|
||||||
|
singular: arangoschedulerdeployment
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
22
chart/kube-arangodb/crds/scheduler-pod.yaml
Normal file
22
chart/kube-arangodb/crds/scheduler-pod.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerpods.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerPod
|
||||||
|
listKind: ArangoSchedulerPodList
|
||||||
|
plural: arangoschedulerpods
|
||||||
|
singular: arangoschedulerpod
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
|
@ -68,6 +68,10 @@ rules:
|
||||||
verbs: ["get", "list", "watch", "update", "delete"]
|
verbs: ["get", "list", "watch", "update", "delete"]
|
||||||
resourceNames:
|
resourceNames:
|
||||||
- "arangoprofiles.scheduler.arangodb.com"
|
- "arangoprofiles.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerpods.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerdeploymets.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulerbatchjobs.scheduler.arangodb.com"
|
||||||
|
- "arangoschedulercronjobs.scheduler.arangodb.com"
|
||||||
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -18,6 +18,37 @@ rules:
|
||||||
resources:
|
resources:
|
||||||
- "arangoprofiles"
|
- "arangoprofiles"
|
||||||
- "arangoprofiles/status"
|
- "arangoprofiles/status"
|
||||||
|
- "arangoschedulerpods"
|
||||||
|
- "arangoschedulerpods/status"
|
||||||
|
- "arangoschedulerdeployments"
|
||||||
|
- "arangoschedulerdeployments/status"
|
||||||
|
- "arangoschedulerbatchjobs"
|
||||||
|
- "arangoschedulerbatchjobs/status"
|
||||||
|
- "arangoschedulercronjobs"
|
||||||
|
- "arangoschedulercronjobs/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- "pods"
|
||||||
|
- "pods/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- "apps"
|
||||||
|
resources:
|
||||||
|
- "deployments"
|
||||||
|
- "deployments/status"
|
||||||
|
verbs:
|
||||||
|
- "*"
|
||||||
|
- apiGroups:
|
||||||
|
- "batch"
|
||||||
|
resources:
|
||||||
|
- "jobs"
|
||||||
|
- "jobs/status"
|
||||||
|
- "cronjobs"
|
||||||
|
- "cronjobs/status"
|
||||||
verbs:
|
verbs:
|
||||||
- "*"
|
- "*"
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
|
|
|
@ -80,7 +80,7 @@ Flags:
|
||||||
--kubernetes.max-batch-size int Size of batch during objects read (default 256)
|
--kubernetes.max-batch-size int Size of batch during objects read (default 256)
|
||||||
--kubernetes.qps float32 Number of queries per second for k8s API (default 15)
|
--kubernetes.qps float32 Number of queries per second for k8s API (default 15)
|
||||||
--log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty")
|
--log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty")
|
||||||
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, http, inspector, integration-config-v1, integration-envoy-auth-v3, integrations, k8s-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, pod_compare, root, root-event-recorder, scheduler-profile-operator, server, server-authentication (default [info])
|
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, generic-parent-operator, http, inspector, integration-config-v1, integration-envoy-auth-v3, integrations, k8s-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, pod_compare, root, root-event-recorder, scheduler-batchjob-operator, scheduler-cronjob-operator, scheduler-deployment-operator, scheduler-pod-operator, scheduler-profile-operator, server, server-authentication (default [info])
|
||||||
--log.sampling If true, operator will try to minimize duplication of logging events (default true)
|
--log.sampling If true, operator will try to minimize duplication of logging events (default true)
|
||||||
--memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing
|
--memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing
|
||||||
--metrics.excluded-prefixes stringArray List of the excluded metrics prefixes
|
--metrics.excluded-prefixes stringArray List of the excluded metrics prefixes
|
||||||
|
|
177
integrations/scheduler/v1/batch_job.go
Normal file
177
integrations/scheduler/v1/batch_job.go
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
|
||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"
|
||||||
|
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/debug_package/generators/kubernetes"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/scheduler"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i *implementation) CreateBatchJob(ctx context.Context, request *pbSchedulerV1.CreateBatchJobRequest) (*pbSchedulerV1.CreateBatchJobResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
template := scheduler.SpecAsTemplate(request.GetSpec())
|
||||||
|
|
||||||
|
var spec schedulerApi.ArangoSchedulerBatchJob
|
||||||
|
|
||||||
|
spec.Namespace = i.cfg.Namespace
|
||||||
|
|
||||||
|
if meta := request.GetSpec().GetMetadata(); meta != nil {
|
||||||
|
if util.TypeOrDefault(meta.GenerateName, false) {
|
||||||
|
spec.GenerateName = meta.Name
|
||||||
|
} else {
|
||||||
|
spec.Name = meta.Name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
spec.Spec.Template = *template
|
||||||
|
|
||||||
|
if batchJob := request.GetBatchJob(); batchJob != nil {
|
||||||
|
if v := batchJob.Completions; v != nil {
|
||||||
|
spec.Spec.Completions = v
|
||||||
|
}
|
||||||
|
|
||||||
|
if v := batchJob.Parallelism; v != nil {
|
||||||
|
spec.Spec.Parallelism = v
|
||||||
|
}
|
||||||
|
|
||||||
|
if v := batchJob.BackoffLimit; v != nil {
|
||||||
|
spec.Spec.BackoffLimit = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if batchJobSpec := request.GetSpec(); batchJobSpec != nil {
|
||||||
|
if base := batchJobSpec.Base; base != nil {
|
||||||
|
spec.Labels = base.Labels
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerBatchJobs(i.cfg.Namespace).Create(ctx, &spec, meta.CreateOptions{})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.CreateBatchJobResponse{
|
||||||
|
Name: job.Name,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) GetBatchJob(ctx context.Context, request *pbSchedulerV1.GetBatchJobRequest) (*pbSchedulerV1.GetBatchJobResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerBatchJobs(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.GetBatchJobResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.GetBatchJobResponse{
|
||||||
|
Exists: true,
|
||||||
|
|
||||||
|
BatchJob: &pbSchedulerV1.BatchJob{
|
||||||
|
Metadata: ExtractStatusMetadata(job.Status.ArangoSchedulerStatusMetadata),
|
||||||
|
Spec: &pbSchedulerV1.BatchJobSpec{
|
||||||
|
Parallelism: job.Spec.Parallelism,
|
||||||
|
Completions: job.Spec.Completions,
|
||||||
|
BackoffLimit: job.Spec.BackoffLimit,
|
||||||
|
},
|
||||||
|
Status: &pbSchedulerV1.BatchJobStatus{
|
||||||
|
Active: job.Status.Active,
|
||||||
|
Succeeded: job.Status.Succeeded,
|
||||||
|
Failed: job.Status.Failed,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) DeleteBatchJob(ctx context.Context, request *pbSchedulerV1.DeleteBatchJobRequest) (*pbSchedulerV1.DeleteBatchJobResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
var d meta.DeleteOptions
|
||||||
|
|
||||||
|
if v := request.DeleteChildPods; v != nil {
|
||||||
|
if *v {
|
||||||
|
d.PropagationPolicy = util.NewType(meta.DeletePropagationBackground)
|
||||||
|
} else {
|
||||||
|
d.PropagationPolicy = util.NewType(meta.DeletePropagationOrphan)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerBatchJobs(i.cfg.Namespace).Delete(ctx, request.GetName(), d)
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.DeleteBatchJobResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.DeleteBatchJobResponse{Exists: true}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) ListBatchJob(ctx context.Context, request *pbSchedulerV1.ListBatchJobRequest) (*pbSchedulerV1.ListBatchJobResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
objects, err := kubernetes.ListObjects[*schedulerApi.ArangoSchedulerBatchJobList, *schedulerApi.ArangoSchedulerBatchJob](ctx, i.client.Arango().SchedulerV1beta1().ArangoSchedulerBatchJobs(i.cfg.Namespace), func(result *schedulerApi.ArangoSchedulerBatchJobList) []*schedulerApi.ArangoSchedulerBatchJob {
|
||||||
|
r := make([]*schedulerApi.ArangoSchedulerBatchJob, len(result.Items))
|
||||||
|
|
||||||
|
for id := range result.Items {
|
||||||
|
r[id] = result.Items[id].DeepCopy()
|
||||||
|
}
|
||||||
|
|
||||||
|
return r
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.ListBatchJobResponse{
|
||||||
|
BatchJobs: util.FormatList(objects, func(in *schedulerApi.ArangoSchedulerBatchJob) string {
|
||||||
|
return in.GetName()
|
||||||
|
}),
|
||||||
|
}, nil
|
||||||
|
}
|
|
@ -25,7 +25,6 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
batch "k8s.io/api/batch/v1"
|
|
||||||
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"
|
pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"
|
||||||
|
@ -42,7 +41,7 @@ func Test_BatchJob(t *testing.T) {
|
||||||
client := kclient.NewFakeClientBuilder().Add(
|
client := kclient.NewFakeClientBuilder().Add(
|
||||||
tests.NewMetaObject(t, tests.FakeNamespace, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
tests.NewMetaObject(t, tests.FakeNamespace, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
||||||
obj.Spec = schedulerApi.ProfileSpec{}
|
obj.Spec = schedulerApi.ProfileSpec{}
|
||||||
}),
|
}, tests.MarkArangoProfileAsReady),
|
||||||
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-all", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-all", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
||||||
obj.Spec = schedulerApi.ProfileSpec{
|
obj.Spec = schedulerApi.ProfileSpec{
|
||||||
Selectors: &schedulerApi.ProfileSelectors{
|
Selectors: &schedulerApi.ProfileSelectors{
|
||||||
|
@ -50,7 +49,7 @@ func Test_BatchJob(t *testing.T) {
|
||||||
},
|
},
|
||||||
Template: &schedulerApi.ProfileTemplate{},
|
Template: &schedulerApi.ProfileTemplate{},
|
||||||
}
|
}
|
||||||
}),
|
}, tests.MarkArangoProfileAsReady),
|
||||||
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-specific", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-specific", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
||||||
obj.Spec = schedulerApi.ProfileSpec{
|
obj.Spec = schedulerApi.ProfileSpec{
|
||||||
Selectors: &schedulerApi.ProfileSelectors{
|
Selectors: &schedulerApi.ProfileSelectors{
|
||||||
|
@ -62,7 +61,7 @@ func Test_BatchJob(t *testing.T) {
|
||||||
},
|
},
|
||||||
Template: &schedulerApi.ProfileTemplate{},
|
Template: &schedulerApi.ProfileTemplate{},
|
||||||
}
|
}
|
||||||
}),
|
}, tests.MarkArangoProfileAsReady),
|
||||||
).Client()
|
).Client()
|
||||||
|
|
||||||
scheduler := Client(t, ctx, client, func(c Configuration) Configuration {
|
scheduler := Client(t, ctx, client, func(c Configuration) Configuration {
|
||||||
|
@ -93,7 +92,7 @@ func Test_BatchJob(t *testing.T) {
|
||||||
Metadata: &pbSchedulerV1.Metadata{
|
Metadata: &pbSchedulerV1.Metadata{
|
||||||
Name: "test",
|
Name: "test",
|
||||||
},
|
},
|
||||||
Job: &pbSchedulerV1.JobBase{
|
Base: &pbSchedulerV1.ObjectBase{
|
||||||
Labels: nil,
|
Labels: nil,
|
||||||
Profiles: []string{
|
Profiles: []string{
|
||||||
"test",
|
"test",
|
||||||
|
@ -117,10 +116,6 @@ func Test_BatchJob(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.EqualValues(t, "test", resp.GetName())
|
require.EqualValues(t, "test", resp.GetName())
|
||||||
require.Len(t, resp.Profiles, 2)
|
|
||||||
require.Contains(t, resp.Profiles, "test")
|
|
||||||
require.Contains(t, resp.Profiles, "test-select-all")
|
|
||||||
require.NotContains(t, resp.Profiles, "test-select-specific")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Ensure job exist - get", func(t *testing.T) {
|
t.Run("Ensure job exist - get", func(t *testing.T) {
|
||||||
|
@ -151,7 +146,7 @@ func Test_BatchJob(t *testing.T) {
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Ensure job details - update", func(t *testing.T) {
|
t.Run("Ensure job details - update", func(t *testing.T) {
|
||||||
job := tests.NewMetaObject[*batch.Job](t, tests.FakeNamespace, "test")
|
job := tests.NewMetaObject[*schedulerApi.ArangoSchedulerBatchJob](t, tests.FakeNamespace, "test")
|
||||||
|
|
||||||
tests.RefreshObjectsC(t, client, &job)
|
tests.RefreshObjectsC(t, client, &job)
|
||||||
|
|
||||||
|
|
249
integrations/scheduler/v1/cron_job.go
Normal file
249
integrations/scheduler/v1/cron_job.go
Normal file
|
@ -0,0 +1,249 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
|
||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
core "k8s.io/api/core/v1"
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"
|
||||||
|
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/debug_package/generators/kubernetes"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/scheduler"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i *implementation) CreateCronJob(ctx context.Context, request *pbSchedulerV1.CreateCronJobRequest) (*pbSchedulerV1.CreateCronJobResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
template := scheduler.SpecAsTemplate(request.GetSpec())
|
||||||
|
|
||||||
|
var spec schedulerApi.ArangoSchedulerCronJob
|
||||||
|
|
||||||
|
spec.Namespace = i.cfg.Namespace
|
||||||
|
|
||||||
|
if meta := request.GetSpec().GetMetadata(); meta != nil {
|
||||||
|
if util.TypeOrDefault(meta.GenerateName, false) {
|
||||||
|
spec.GenerateName = meta.Name
|
||||||
|
} else {
|
||||||
|
spec.Name = meta.Name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
spec.Spec.JobTemplate.Spec.Template = *template
|
||||||
|
|
||||||
|
if cronJob := request.GetCronJob(); cronJob != nil {
|
||||||
|
spec.Spec.Schedule = cronJob.Schedule
|
||||||
|
|
||||||
|
if batchJob := cronJob.GetJob(); batchJob != nil {
|
||||||
|
if v := batchJob.Completions; v != nil {
|
||||||
|
spec.Spec.JobTemplate.Spec.Completions = v
|
||||||
|
}
|
||||||
|
|
||||||
|
if v := batchJob.Parallelism; v != nil {
|
||||||
|
spec.Spec.JobTemplate.Spec.Parallelism = v
|
||||||
|
}
|
||||||
|
|
||||||
|
if v := batchJob.BackoffLimit; v != nil {
|
||||||
|
spec.Spec.JobTemplate.Spec.BackoffLimit = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if batchJobSpec := request.GetSpec(); batchJobSpec != nil {
|
||||||
|
if base := batchJobSpec.Base; base != nil {
|
||||||
|
spec.Labels = base.Labels
|
||||||
|
spec.Spec.JobTemplate.Labels = base.Labels
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerCronJobs(i.cfg.Namespace).Create(ctx, &spec, meta.CreateOptions{})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.CreateCronJobResponse{
|
||||||
|
Name: job.Name,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) GetCronJob(ctx context.Context, request *pbSchedulerV1.GetCronJobRequest) (*pbSchedulerV1.GetCronJobResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerCronJobs(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.GetCronJobResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.GetCronJobResponse{
|
||||||
|
Exists: true,
|
||||||
|
|
||||||
|
CronJob: &pbSchedulerV1.CronJob{
|
||||||
|
Metadata: ExtractStatusMetadata(job.Status.ArangoSchedulerStatusMetadata),
|
||||||
|
Spec: &pbSchedulerV1.CronJobSpec{
|
||||||
|
Schedule: job.Spec.Schedule,
|
||||||
|
|
||||||
|
Job: &pbSchedulerV1.BatchJobSpec{
|
||||||
|
Parallelism: job.Spec.JobTemplate.Spec.Parallelism,
|
||||||
|
Completions: job.Spec.JobTemplate.Spec.Completions,
|
||||||
|
BackoffLimit: job.Spec.JobTemplate.Spec.BackoffLimit,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Status: &pbSchedulerV1.CronJobStatus{
|
||||||
|
BatchJobs: util.FormatList(job.Status.Active, func(in core.ObjectReference) string {
|
||||||
|
return in.Name
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) UpdateCronJob(ctx context.Context, request *pbSchedulerV1.UpdateCronJobRequest) (*pbSchedulerV1.UpdateCronJobResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerCronJobs(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.UpdateCronJobResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if cronJob := request.GetSpec(); cronJob != nil {
|
||||||
|
job.Spec.Schedule = cronJob.Schedule
|
||||||
|
|
||||||
|
if batchJob := cronJob.GetJob(); batchJob != nil {
|
||||||
|
if v := batchJob.Completions; v != nil {
|
||||||
|
job.Spec.JobTemplate.Spec.Completions = v
|
||||||
|
}
|
||||||
|
|
||||||
|
if v := batchJob.Parallelism; v != nil {
|
||||||
|
job.Spec.JobTemplate.Spec.Parallelism = v
|
||||||
|
}
|
||||||
|
|
||||||
|
if v := batchJob.BackoffLimit; v != nil {
|
||||||
|
job.Spec.JobTemplate.Spec.BackoffLimit = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err = i.client.Arango().SchedulerV1beta1().ArangoSchedulerCronJobs(i.cfg.Namespace).Update(ctx, job, meta.UpdateOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.UpdateCronJobResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.UpdateCronJobResponse{
|
||||||
|
Exists: true,
|
||||||
|
|
||||||
|
CronJob: &pbSchedulerV1.CronJob{
|
||||||
|
Spec: &pbSchedulerV1.CronJobSpec{
|
||||||
|
Schedule: job.Spec.Schedule,
|
||||||
|
|
||||||
|
Job: &pbSchedulerV1.BatchJobSpec{
|
||||||
|
Parallelism: job.Spec.JobTemplate.Spec.Parallelism,
|
||||||
|
Completions: job.Spec.JobTemplate.Spec.Completions,
|
||||||
|
BackoffLimit: job.Spec.JobTemplate.Spec.BackoffLimit,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) ListCronJob(ctx context.Context, request *pbSchedulerV1.ListCronJobRequest) (*pbSchedulerV1.ListCronJobResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
objects, err := kubernetes.ListObjects[*schedulerApi.ArangoSchedulerCronJobList, *schedulerApi.ArangoSchedulerCronJob](ctx, i.client.Arango().SchedulerV1beta1().ArangoSchedulerCronJobs(i.cfg.Namespace), func(result *schedulerApi.ArangoSchedulerCronJobList) []*schedulerApi.ArangoSchedulerCronJob {
|
||||||
|
r := make([]*schedulerApi.ArangoSchedulerCronJob, len(result.Items))
|
||||||
|
|
||||||
|
for id := range result.Items {
|
||||||
|
r[id] = result.Items[id].DeepCopy()
|
||||||
|
}
|
||||||
|
|
||||||
|
return r
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.ListCronJobResponse{
|
||||||
|
CronJobs: util.FormatList(objects, func(in *schedulerApi.ArangoSchedulerCronJob) string {
|
||||||
|
return in.GetName()
|
||||||
|
}),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) DeleteCronJob(ctx context.Context, request *pbSchedulerV1.DeleteCronJobRequest) (*pbSchedulerV1.DeleteCronJobResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
var d meta.DeleteOptions
|
||||||
|
|
||||||
|
if v := request.DeleteChildPods; v != nil {
|
||||||
|
if *v {
|
||||||
|
d.PropagationPolicy = util.NewType(meta.DeletePropagationBackground)
|
||||||
|
} else {
|
||||||
|
d.PropagationPolicy = util.NewType(meta.DeletePropagationOrphan)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerCronJobs(i.cfg.Namespace).Delete(ctx, request.GetName(), d)
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.DeleteCronJobResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.DeleteCronJobResponse{Exists: true}, nil
|
||||||
|
}
|
|
@ -25,7 +25,6 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
batch "k8s.io/api/batch/v1"
|
|
||||||
core "k8s.io/api/core/v1"
|
core "k8s.io/api/core/v1"
|
||||||
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
@ -43,7 +42,7 @@ func Test_CronJob(t *testing.T) {
|
||||||
client := kclient.NewFakeClientBuilder().Add(
|
client := kclient.NewFakeClientBuilder().Add(
|
||||||
tests.NewMetaObject(t, tests.FakeNamespace, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
tests.NewMetaObject(t, tests.FakeNamespace, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
||||||
obj.Spec = schedulerApi.ProfileSpec{}
|
obj.Spec = schedulerApi.ProfileSpec{}
|
||||||
}),
|
}, tests.MarkArangoProfileAsReady),
|
||||||
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-all", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-all", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
||||||
obj.Spec = schedulerApi.ProfileSpec{
|
obj.Spec = schedulerApi.ProfileSpec{
|
||||||
Selectors: &schedulerApi.ProfileSelectors{
|
Selectors: &schedulerApi.ProfileSelectors{
|
||||||
|
@ -51,7 +50,7 @@ func Test_CronJob(t *testing.T) {
|
||||||
},
|
},
|
||||||
Template: &schedulerApi.ProfileTemplate{},
|
Template: &schedulerApi.ProfileTemplate{},
|
||||||
}
|
}
|
||||||
}),
|
}, tests.MarkArangoProfileAsReady),
|
||||||
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-specific", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-specific", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
||||||
obj.Spec = schedulerApi.ProfileSpec{
|
obj.Spec = schedulerApi.ProfileSpec{
|
||||||
Selectors: &schedulerApi.ProfileSelectors{
|
Selectors: &schedulerApi.ProfileSelectors{
|
||||||
|
@ -63,7 +62,7 @@ func Test_CronJob(t *testing.T) {
|
||||||
},
|
},
|
||||||
Template: &schedulerApi.ProfileTemplate{},
|
Template: &schedulerApi.ProfileTemplate{},
|
||||||
}
|
}
|
||||||
}),
|
}, tests.MarkArangoProfileAsReady),
|
||||||
).Client()
|
).Client()
|
||||||
|
|
||||||
scheduler := Client(t, ctx, client, func(c Configuration) Configuration {
|
scheduler := Client(t, ctx, client, func(c Configuration) Configuration {
|
||||||
|
@ -94,7 +93,7 @@ func Test_CronJob(t *testing.T) {
|
||||||
Metadata: &pbSchedulerV1.Metadata{
|
Metadata: &pbSchedulerV1.Metadata{
|
||||||
Name: "test",
|
Name: "test",
|
||||||
},
|
},
|
||||||
Job: &pbSchedulerV1.JobBase{
|
Base: &pbSchedulerV1.ObjectBase{
|
||||||
Labels: nil,
|
Labels: nil,
|
||||||
Profiles: []string{
|
Profiles: []string{
|
||||||
"test",
|
"test",
|
||||||
|
@ -123,10 +122,6 @@ func Test_CronJob(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.EqualValues(t, "test", resp.GetName())
|
require.EqualValues(t, "test", resp.GetName())
|
||||||
require.Len(t, resp.Profiles, 2)
|
|
||||||
require.Contains(t, resp.Profiles, "test")
|
|
||||||
require.Contains(t, resp.Profiles, "test-select-all")
|
|
||||||
require.NotContains(t, resp.Profiles, "test-select-specific")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Ensure job exist - get", func(t *testing.T) {
|
t.Run("Ensure job exist - get", func(t *testing.T) {
|
||||||
|
@ -153,11 +148,11 @@ func Test_CronJob(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.True(t, resp.GetExists())
|
require.True(t, resp.GetExists())
|
||||||
require.Len(t, resp.GetBatchJobs(), 0)
|
require.Len(t, resp.GetCronJob().GetStatus().GetBatchJobs(), 0)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Ensure job details - update", func(t *testing.T) {
|
t.Run("Ensure job details - update", func(t *testing.T) {
|
||||||
job := tests.NewMetaObject[*batch.CronJob](t, tests.FakeNamespace, "test")
|
job := tests.NewMetaObject[*schedulerApi.ArangoSchedulerCronJob](t, tests.FakeNamespace, "test")
|
||||||
|
|
||||||
tests.RefreshObjectsC(t, client, &job)
|
tests.RefreshObjectsC(t, client, &job)
|
||||||
|
|
||||||
|
@ -177,7 +172,7 @@ func Test_CronJob(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.True(t, resp.GetExists())
|
require.True(t, resp.GetExists())
|
||||||
require.Len(t, resp.GetBatchJobs(), 1)
|
require.Len(t, resp.GetCronJob().GetStatus().GetBatchJobs(), 1)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Update Job - Pre", func(t *testing.T) {
|
t.Run("Update Job - Pre", func(t *testing.T) {
|
||||||
|
|
|
@ -46,10 +46,12 @@ type BatchJob struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// defines object status metadate
|
||||||
|
Metadata *StatusMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||||
// Keeps BatchJob settings
|
// Keeps BatchJob settings
|
||||||
Spec *BatchJobSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"`
|
Spec *BatchJobSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"`
|
||||||
// Keeps current BatchJob Status
|
// Keeps current BatchJob Status
|
||||||
Status *BatchJobStatus `protobuf:"bytes,2,opt,name=status,proto3,oneof" json:"status,omitempty"`
|
Status *BatchJobStatus `protobuf:"bytes,3,opt,name=status,proto3,oneof" json:"status,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *BatchJob) Reset() {
|
func (x *BatchJob) Reset() {
|
||||||
|
@ -84,6 +86,13 @@ func (*BatchJob) Descriptor() ([]byte, []int) {
|
||||||
return file_integrations_scheduler_v1_definition_batchjob_proto_rawDescGZIP(), []int{0}
|
return file_integrations_scheduler_v1_definition_batchjob_proto_rawDescGZIP(), []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *BatchJob) GetMetadata() *StatusMetadata {
|
||||||
|
if x != nil {
|
||||||
|
return x.Metadata
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (x *BatchJob) GetSpec() *BatchJobSpec {
|
func (x *BatchJob) GetSpec() *BatchJobSpec {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Spec
|
return x.Spec
|
||||||
|
@ -239,37 +248,44 @@ var file_integrations_scheduler_v1_definition_batchjob_proto_rawDesc = []byte{
|
||||||
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
|
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
|
||||||
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x6a, 0x6f, 0x62, 0x2e,
|
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x6a, 0x6f, 0x62, 0x2e,
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
|
||||||
0x22, 0x7a, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x12, 0x2b, 0x0a, 0x04,
|
0x1a, 0x31, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73,
|
||||||
0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x68,
|
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
|
||||||
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53,
|
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
|
||||||
0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61,
|
0x6f, 0x74, 0x6f, 0x22, 0xb1, 0x01, 0x0a, 0x08, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62,
|
||||||
0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65,
|
0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
|
||||||
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x74,
|
0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x53,
|
||||||
0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01,
|
0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d,
|
||||||
0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb8, 0x01, 0x0a,
|
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18,
|
||||||
0x0c, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x25, 0x0a,
|
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
|
||||||
0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x01, 0x20, 0x01,
|
0x72, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04,
|
||||||
0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73,
|
0x73, 0x70, 0x65, 0x63, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03,
|
||||||
0x6d, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69,
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
|
||||||
0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6d,
|
0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48,
|
||||||
0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x62,
|
0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07,
|
||||||
0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01,
|
0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb8, 0x01, 0x0a, 0x0c, 0x42, 0x61, 0x74, 0x63,
|
||||||
0x28, 0x05, 0x48, 0x02, 0x52, 0x0c, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4c, 0x69, 0x6d,
|
0x68, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x25, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x61,
|
||||||
0x69, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c,
|
0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52,
|
||||||
0x65, 0x6c, 0x69, 0x73, 0x6d, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
|
0x0b, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d, 0x88, 0x01, 0x01, 0x12,
|
||||||
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66,
|
0x25, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02,
|
||||||
0x66, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x5e, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68,
|
0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69,
|
||||||
0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74,
|
0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66,
|
||||||
0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76,
|
0x66, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x02, 0x52,
|
||||||
0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x02,
|
0x0c, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01,
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12,
|
0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x69, 0x73, 0x6d,
|
||||||
0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
|
0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73,
|
||||||
0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75,
|
0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x6f, 0x66, 0x66, 0x5f, 0x6c, 0x69, 0x6d,
|
||||||
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x6b,
|
0x69, 0x74, 0x22, 0x5e, 0x0a, 0x0e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x74,
|
||||||
0x75, 0x62, 0x65, 0x2d, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x69, 0x6e, 0x74,
|
0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01,
|
||||||
0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1c, 0x0a, 0x09,
|
||||||
0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f,
|
0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61,
|
||||||
|
0x69, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c,
|
||||||
|
0x65, 0x64, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
|
||||||
|
0x2f, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x2d, 0x61,
|
||||||
|
0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74,
|
||||||
|
0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76,
|
||||||
|
0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72,
|
||||||
|
0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -289,15 +305,17 @@ var file_integrations_scheduler_v1_definition_batchjob_proto_goTypes = []interfa
|
||||||
(*BatchJob)(nil), // 0: scheduler.BatchJob
|
(*BatchJob)(nil), // 0: scheduler.BatchJob
|
||||||
(*BatchJobSpec)(nil), // 1: scheduler.BatchJobSpec
|
(*BatchJobSpec)(nil), // 1: scheduler.BatchJobSpec
|
||||||
(*BatchJobStatus)(nil), // 2: scheduler.BatchJobStatus
|
(*BatchJobStatus)(nil), // 2: scheduler.BatchJobStatus
|
||||||
|
(*StatusMetadata)(nil), // 3: scheduler.StatusMetadata
|
||||||
}
|
}
|
||||||
var file_integrations_scheduler_v1_definition_batchjob_proto_depIdxs = []int32{
|
var file_integrations_scheduler_v1_definition_batchjob_proto_depIdxs = []int32{
|
||||||
1, // 0: scheduler.BatchJob.spec:type_name -> scheduler.BatchJobSpec
|
3, // 0: scheduler.BatchJob.metadata:type_name -> scheduler.StatusMetadata
|
||||||
2, // 1: scheduler.BatchJob.status:type_name -> scheduler.BatchJobStatus
|
1, // 1: scheduler.BatchJob.spec:type_name -> scheduler.BatchJobSpec
|
||||||
2, // [2:2] is the sub-list for method output_type
|
2, // 2: scheduler.BatchJob.status:type_name -> scheduler.BatchJobStatus
|
||||||
2, // [2:2] is the sub-list for method input_type
|
3, // [3:3] is the sub-list for method output_type
|
||||||
2, // [2:2] is the sub-list for extension type_name
|
3, // [3:3] is the sub-list for method input_type
|
||||||
2, // [2:2] is the sub-list for extension extendee
|
3, // [3:3] is the sub-list for extension type_name
|
||||||
0, // [0:2] is the sub-list for field type_name
|
3, // [3:3] is the sub-list for extension extendee
|
||||||
|
0, // [0:3] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_integrations_scheduler_v1_definition_batchjob_proto_init() }
|
func init() { file_integrations_scheduler_v1_definition_batchjob_proto_init() }
|
||||||
|
@ -305,6 +323,7 @@ func file_integrations_scheduler_v1_definition_batchjob_proto_init() {
|
||||||
if File_integrations_scheduler_v1_definition_batchjob_proto != nil {
|
if File_integrations_scheduler_v1_definition_batchjob_proto != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
file_integrations_scheduler_v1_definition_common_proto_init()
|
||||||
if !protoimpl.UnsafeEnabled {
|
if !protoimpl.UnsafeEnabled {
|
||||||
file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
file_integrations_scheduler_v1_definition_batchjob_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*BatchJob); i {
|
switch v := v.(*BatchJob); i {
|
||||||
|
|
|
@ -22,15 +22,20 @@ syntax = "proto3";
|
||||||
|
|
||||||
package scheduler;
|
package scheduler;
|
||||||
|
|
||||||
|
import "integrations/scheduler/v1/definition/common.proto";
|
||||||
|
|
||||||
option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition";
|
option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition";
|
||||||
|
|
||||||
// Keeps information about Kubernetes Batch/V1 Job
|
// Keeps information about Kubernetes Batch/V1 Job
|
||||||
message BatchJob {
|
message BatchJob {
|
||||||
|
// defines object status metadate
|
||||||
|
StatusMetadata metadata = 1;
|
||||||
|
|
||||||
// Keeps BatchJob settings
|
// Keeps BatchJob settings
|
||||||
BatchJobSpec spec = 1;
|
BatchJobSpec spec = 2;
|
||||||
|
|
||||||
// Keeps current BatchJob Status
|
// Keeps current BatchJob Status
|
||||||
optional BatchJobStatus status = 2;
|
optional BatchJobStatus status = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Information about BatchJob run settings, like completions and parallelism
|
// Information about BatchJob run settings, like completions and parallelism
|
||||||
|
|
|
@ -40,8 +40,8 @@ const (
|
||||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
)
|
)
|
||||||
|
|
||||||
// Common base of the Jobs
|
// Common base of the objects
|
||||||
type JobBase struct {
|
type ObjectBase struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
@ -52,8 +52,8 @@ type JobBase struct {
|
||||||
Profiles []string `protobuf:"bytes,2,rep,name=profiles,proto3" json:"profiles,omitempty"`
|
Profiles []string `protobuf:"bytes,2,rep,name=profiles,proto3" json:"profiles,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *JobBase) Reset() {
|
func (x *ObjectBase) Reset() {
|
||||||
*x = JobBase{}
|
*x = ObjectBase{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[0]
|
mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[0]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
@ -61,13 +61,13 @@ func (x *JobBase) Reset() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *JobBase) String() string {
|
func (x *ObjectBase) String() string {
|
||||||
return protoimpl.X.MessageStringOf(x)
|
return protoimpl.X.MessageStringOf(x)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*JobBase) ProtoMessage() {}
|
func (*ObjectBase) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *JobBase) ProtoReflect() protoreflect.Message {
|
func (x *ObjectBase) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[0]
|
mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[0]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
@ -79,19 +79,19 @@ func (x *JobBase) ProtoReflect() protoreflect.Message {
|
||||||
return mi.MessageOf(x)
|
return mi.MessageOf(x)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deprecated: Use JobBase.ProtoReflect.Descriptor instead.
|
// Deprecated: Use ObjectBase.ProtoReflect.Descriptor instead.
|
||||||
func (*JobBase) Descriptor() ([]byte, []int) {
|
func (*ObjectBase) Descriptor() ([]byte, []int) {
|
||||||
return file_integrations_scheduler_v1_definition_common_proto_rawDescGZIP(), []int{0}
|
return file_integrations_scheduler_v1_definition_common_proto_rawDescGZIP(), []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *JobBase) GetLabels() map[string]string {
|
func (x *ObjectBase) GetLabels() map[string]string {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Labels
|
return x.Labels
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *JobBase) GetProfiles() []string {
|
func (x *ObjectBase) GetProfiles() []string {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Profiles
|
return x.Profiles
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ type Spec struct {
|
||||||
// Keeps requested Metadata
|
// Keeps requested Metadata
|
||||||
Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||||
// Keeps requested Job base
|
// Keeps requested Job base
|
||||||
Job *JobBase `protobuf:"bytes,2,opt,name=job,proto3" json:"job,omitempty"`
|
Base *ObjectBase `protobuf:"bytes,2,opt,name=base,proto3" json:"base,omitempty"`
|
||||||
// Keeps map of the containers
|
// Keeps map of the containers
|
||||||
Containers map[string]*ContainerBase `protobuf:"bytes,3,rep,name=containers,proto3" json:"containers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
Containers map[string]*ContainerBase `protobuf:"bytes,3,rep,name=containers,proto3" json:"containers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||||
}
|
}
|
||||||
|
@ -276,9 +276,9 @@ func (x *Spec) GetMetadata() *Metadata {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Spec) GetJob() *JobBase {
|
func (x *Spec) GetBase() *ObjectBase {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Job
|
return x.Base
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -290,65 +290,151 @@ func (x *Spec) GetContainers() map[string]*ContainerBase {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Defines status of the scheduled object
|
||||||
|
type StatusMetadata struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Defines if upstream object has been created
|
||||||
|
Created bool `protobuf:"varint,1,opt,name=created,proto3" json:"created,omitempty"`
|
||||||
|
// Defines checksum
|
||||||
|
Checksum *string `protobuf:"bytes,2,opt,name=checksum,proto3,oneof" json:"checksum,omitempty"`
|
||||||
|
// Defines uid
|
||||||
|
Uid *string `protobuf:"bytes,3,opt,name=uid,proto3,oneof" json:"uid,omitempty"`
|
||||||
|
// Defiles list of applied profiles
|
||||||
|
Profiles []string `protobuf:"bytes,4,rep,name=profiles,proto3" json:"profiles,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StatusMetadata) Reset() {
|
||||||
|
*x = StatusMetadata{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[4]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StatusMetadata) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*StatusMetadata) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *StatusMetadata) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_common_proto_msgTypes[4]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use StatusMetadata.ProtoReflect.Descriptor instead.
|
||||||
|
func (*StatusMetadata) Descriptor() ([]byte, []int) {
|
||||||
|
return file_integrations_scheduler_v1_definition_common_proto_rawDescGZIP(), []int{4}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StatusMetadata) GetCreated() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.Created
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StatusMetadata) GetChecksum() string {
|
||||||
|
if x != nil && x.Checksum != nil {
|
||||||
|
return *x.Checksum
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StatusMetadata) GetUid() string {
|
||||||
|
if x != nil && x.Uid != nil {
|
||||||
|
return *x.Uid
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StatusMetadata) GetProfiles() []string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Profiles
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
var File_integrations_scheduler_v1_definition_common_proto protoreflect.FileDescriptor
|
var File_integrations_scheduler_v1_definition_common_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_integrations_scheduler_v1_definition_common_proto_rawDesc = []byte{
|
var file_integrations_scheduler_v1_definition_common_proto_rawDesc = []byte{
|
||||||
0x0a, 0x31, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73,
|
0x0a, 0x31, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73,
|
||||||
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
|
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
|
||||||
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
|
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
|
||||||
0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x22, 0x98,
|
0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x22, 0x9e,
|
||||||
0x01, 0x0a, 0x07, 0x4a, 0x6f, 0x62, 0x42, 0x61, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x6c, 0x61,
|
0x01, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x61, 0x73, 0x65, 0x12, 0x39, 0x0a,
|
||||||
0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x63, 0x68,
|
0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e,
|
||||||
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4a, 0x6f, 0x62, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x4c,
|
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74,
|
||||||
0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65,
|
0x42, 0x61, 0x73, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
||||||
0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02,
|
0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66,
|
||||||
0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x39,
|
0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66,
|
||||||
0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
|
0x69, 0x6c, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e,
|
||||||
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
|
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
|
||||||
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
|
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
|
||||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x08, 0x4d, 0x65, 0x74,
|
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
|
||||||
0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
|
0x5a, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e,
|
||||||
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x67, 0x65, 0x6e,
|
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
|
||||||
0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
|
0x28, 0x0a, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
|
||||||
0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65,
|
0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61,
|
||||||
0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,
|
0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x67, 0x65,
|
||||||
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
|
0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x0d,
|
||||||
0x6e, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65,
|
0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x12, 0x19, 0x0a,
|
||||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x88,
|
0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05,
|
||||||
0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
|
0x69, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73,
|
||||||
0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x67, 0x0a, 0x15, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f,
|
0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x67, 0x0a, 0x15,
|
||||||
0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18,
|
0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69,
|
||||||
0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
|
0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x63,
|
||||||
0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x2e,
|
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
|
||||||
0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61,
|
0x72, 0x42, 0x61, 0x73, 0x65, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e,
|
||||||
0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x65, 0x6e, 0x76, 0x69, 0x72,
|
0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
|
||||||
0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a,
|
0x14, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69,
|
||||||
0x47, 0x0a, 0x19, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61,
|
0x61, 0x62, 0x6c, 0x65, 0x73, 0x1a, 0x47, 0x0a, 0x19, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e,
|
||||||
0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
|
0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74,
|
||||||
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
|
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||||
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
|
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
|
||||||
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6d, 0x61,
|
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x08,
|
||||||
0x67, 0x65, 0x22, 0xf7, 0x01, 0x0a, 0x04, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2f, 0x0a, 0x08, 0x6d,
|
0x0a, 0x06, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x04, 0x53, 0x70, 0x65,
|
||||||
0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
|
0x63, 0x12, 0x2f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20,
|
||||||
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
|
||||||
0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x03,
|
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
|
||||||
0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x68, 0x65,
|
0x74, 0x61, 0x12, 0x29, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
|
||||||
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4a, 0x6f, 0x62, 0x42, 0x61, 0x73, 0x65, 0x52, 0x03, 0x6a,
|
0x32, 0x15, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x4f, 0x62, 0x6a,
|
||||||
0x6f, 0x62, 0x12, 0x3f, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73,
|
0x65, 0x63, 0x74, 0x42, 0x61, 0x73, 0x65, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x12, 0x3f, 0x0a,
|
||||||
0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
|
0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
|
||||||
0x65, 0x72, 0x2e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
|
0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x53, 0x70,
|
||||||
0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
|
0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74,
|
||||||
0x65, 0x72, 0x73, 0x1a, 0x57, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
|
0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x57,
|
||||||
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
|
0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72,
|
||||||
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
|
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
|
||||||
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
|
0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
|
||||||
0x6c, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x61, 0x73,
|
0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43,
|
||||||
0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x48, 0x5a, 0x46,
|
0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x61, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61,
|
||||||
0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x61, 0x6e, 0x67,
|
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x93, 0x01, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x74,
|
||||||
0x6f, 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x2d, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64,
|
0x75, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72,
|
||||||
0x62, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73,
|
0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x72, 0x65,
|
||||||
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
|
0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
|
||||||
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73,
|
||||||
|
0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01,
|
||||||
|
0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1a, 0x0a, 0x08,
|
||||||
|
0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
|
||||||
|
0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, 0x68, 0x65,
|
||||||
|
0x63, 0x6b, 0x73, 0x75, 0x6d, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x75, 0x69, 0x64, 0x42, 0x48, 0x5a,
|
||||||
|
0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x61, 0x6e,
|
||||||
|
0x67, 0x6f, 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x2d, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f,
|
||||||
|
0x64, 0x62, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
|
||||||
|
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66,
|
||||||
|
0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -363,22 +449,23 @@ func file_integrations_scheduler_v1_definition_common_proto_rawDescGZIP() []byte
|
||||||
return file_integrations_scheduler_v1_definition_common_proto_rawDescData
|
return file_integrations_scheduler_v1_definition_common_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_integrations_scheduler_v1_definition_common_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
|
var file_integrations_scheduler_v1_definition_common_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
|
||||||
var file_integrations_scheduler_v1_definition_common_proto_goTypes = []interface{}{
|
var file_integrations_scheduler_v1_definition_common_proto_goTypes = []interface{}{
|
||||||
(*JobBase)(nil), // 0: scheduler.JobBase
|
(*ObjectBase)(nil), // 0: scheduler.ObjectBase
|
||||||
(*Metadata)(nil), // 1: scheduler.Metadata
|
(*Metadata)(nil), // 1: scheduler.Metadata
|
||||||
(*ContainerBase)(nil), // 2: scheduler.ContainerBase
|
(*ContainerBase)(nil), // 2: scheduler.ContainerBase
|
||||||
(*Spec)(nil), // 3: scheduler.Spec
|
(*Spec)(nil), // 3: scheduler.Spec
|
||||||
nil, // 4: scheduler.JobBase.LabelsEntry
|
(*StatusMetadata)(nil), // 4: scheduler.StatusMetadata
|
||||||
nil, // 5: scheduler.ContainerBase.EnvironmentVariablesEntry
|
nil, // 5: scheduler.ObjectBase.LabelsEntry
|
||||||
nil, // 6: scheduler.Spec.ContainersEntry
|
nil, // 6: scheduler.ContainerBase.EnvironmentVariablesEntry
|
||||||
|
nil, // 7: scheduler.Spec.ContainersEntry
|
||||||
}
|
}
|
||||||
var file_integrations_scheduler_v1_definition_common_proto_depIdxs = []int32{
|
var file_integrations_scheduler_v1_definition_common_proto_depIdxs = []int32{
|
||||||
4, // 0: scheduler.JobBase.labels:type_name -> scheduler.JobBase.LabelsEntry
|
5, // 0: scheduler.ObjectBase.labels:type_name -> scheduler.ObjectBase.LabelsEntry
|
||||||
5, // 1: scheduler.ContainerBase.environment_variables:type_name -> scheduler.ContainerBase.EnvironmentVariablesEntry
|
6, // 1: scheduler.ContainerBase.environment_variables:type_name -> scheduler.ContainerBase.EnvironmentVariablesEntry
|
||||||
1, // 2: scheduler.Spec.metadata:type_name -> scheduler.Metadata
|
1, // 2: scheduler.Spec.metadata:type_name -> scheduler.Metadata
|
||||||
0, // 3: scheduler.Spec.job:type_name -> scheduler.JobBase
|
0, // 3: scheduler.Spec.base:type_name -> scheduler.ObjectBase
|
||||||
6, // 4: scheduler.Spec.containers:type_name -> scheduler.Spec.ContainersEntry
|
7, // 4: scheduler.Spec.containers:type_name -> scheduler.Spec.ContainersEntry
|
||||||
2, // 5: scheduler.Spec.ContainersEntry.value:type_name -> scheduler.ContainerBase
|
2, // 5: scheduler.Spec.ContainersEntry.value:type_name -> scheduler.ContainerBase
|
||||||
6, // [6:6] is the sub-list for method output_type
|
6, // [6:6] is the sub-list for method output_type
|
||||||
6, // [6:6] is the sub-list for method input_type
|
6, // [6:6] is the sub-list for method input_type
|
||||||
|
@ -394,7 +481,7 @@ func file_integrations_scheduler_v1_definition_common_proto_init() {
|
||||||
}
|
}
|
||||||
if !protoimpl.UnsafeEnabled {
|
if !protoimpl.UnsafeEnabled {
|
||||||
file_integrations_scheduler_v1_definition_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
file_integrations_scheduler_v1_definition_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*JobBase); i {
|
switch v := v.(*ObjectBase); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -441,16 +528,29 @@ func file_integrations_scheduler_v1_definition_common_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
file_integrations_scheduler_v1_definition_common_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*StatusMetadata); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
file_integrations_scheduler_v1_definition_common_proto_msgTypes[1].OneofWrappers = []interface{}{}
|
file_integrations_scheduler_v1_definition_common_proto_msgTypes[1].OneofWrappers = []interface{}{}
|
||||||
file_integrations_scheduler_v1_definition_common_proto_msgTypes[2].OneofWrappers = []interface{}{}
|
file_integrations_scheduler_v1_definition_common_proto_msgTypes[2].OneofWrappers = []interface{}{}
|
||||||
|
file_integrations_scheduler_v1_definition_common_proto_msgTypes[4].OneofWrappers = []interface{}{}
|
||||||
type x struct{}
|
type x struct{}
|
||||||
out := protoimpl.TypeBuilder{
|
out := protoimpl.TypeBuilder{
|
||||||
File: protoimpl.DescBuilder{
|
File: protoimpl.DescBuilder{
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_integrations_scheduler_v1_definition_common_proto_rawDesc,
|
RawDescriptor: file_integrations_scheduler_v1_definition_common_proto_rawDesc,
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 7,
|
NumMessages: 8,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
|
|
@ -24,8 +24,8 @@ package scheduler;
|
||||||
|
|
||||||
option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition";
|
option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition";
|
||||||
|
|
||||||
// Common base of the Jobs
|
// Common base of the objects
|
||||||
message JobBase {
|
message ObjectBase {
|
||||||
// Map of the Labels assigned to the job. Used for Profile selection
|
// Map of the Labels assigned to the job. Used for Profile selection
|
||||||
map<string, string> labels = 1;
|
map<string, string> labels = 1;
|
||||||
|
|
||||||
|
@ -60,8 +60,23 @@ message Spec {
|
||||||
Metadata metadata = 1;
|
Metadata metadata = 1;
|
||||||
|
|
||||||
// Keeps requested Job base
|
// Keeps requested Job base
|
||||||
JobBase job = 2;
|
ObjectBase base = 2;
|
||||||
|
|
||||||
// Keeps map of the containers
|
// Keeps map of the containers
|
||||||
map<string, ContainerBase> containers = 3;
|
map<string, ContainerBase> containers = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Defines status of the scheduled object
|
||||||
|
message StatusMetadata {
|
||||||
|
// Defines if upstream object has been created
|
||||||
|
bool created = 1;
|
||||||
|
|
||||||
|
// Defines checksum
|
||||||
|
optional string checksum =2;
|
||||||
|
|
||||||
|
// Defines uid
|
||||||
|
optional string uid =3;
|
||||||
|
|
||||||
|
// Defiles list of applied profiles
|
||||||
|
repeated string profiles = 4;
|
||||||
|
}
|
|
@ -46,8 +46,12 @@ type CronJob struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// defines object status metadate
|
||||||
|
Metadata *StatusMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||||
// Keeps the CronJob Settings
|
// Keeps the CronJob Settings
|
||||||
Spec *CronJobSpec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"`
|
Spec *CronJobSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"`
|
||||||
|
// Keeps the CronJob Status
|
||||||
|
Status *CronJobStatus `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CronJob) Reset() {
|
func (x *CronJob) Reset() {
|
||||||
|
@ -82,6 +86,13 @@ func (*CronJob) Descriptor() ([]byte, []int) {
|
||||||
return file_integrations_scheduler_v1_definition_cronjob_proto_rawDescGZIP(), []int{0}
|
return file_integrations_scheduler_v1_definition_cronjob_proto_rawDescGZIP(), []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *CronJob) GetMetadata() *StatusMetadata {
|
||||||
|
if x != nil {
|
||||||
|
return x.Metadata
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (x *CronJob) GetSpec() *CronJobSpec {
|
func (x *CronJob) GetSpec() *CronJobSpec {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Spec
|
return x.Spec
|
||||||
|
@ -89,6 +100,13 @@ func (x *CronJob) GetSpec() *CronJobSpec {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *CronJob) GetStatus() *CronJobStatus {
|
||||||
|
if x != nil {
|
||||||
|
return x.Status
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Information about CronJob run settings
|
// Information about CronJob run settings
|
||||||
type CronJobSpec struct {
|
type CronJobSpec struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
|
@ -147,6 +165,55 @@ func (x *CronJobSpec) GetJob() *BatchJobSpec {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Information about CronJob Status
|
||||||
|
type CronJobStatus struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Keeps list of created BatchJobs
|
||||||
|
BatchJobs []string `protobuf:"bytes,1,rep,name=batch_jobs,json=batchJobs,proto3" json:"batch_jobs,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CronJobStatus) Reset() {
|
||||||
|
*x = CronJobStatus{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[2]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CronJobStatus) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*CronJobStatus) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *CronJobStatus) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[2]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use CronJobStatus.ProtoReflect.Descriptor instead.
|
||||||
|
func (*CronJobStatus) Descriptor() ([]byte, []int) {
|
||||||
|
return file_integrations_scheduler_v1_definition_cronjob_proto_rawDescGZIP(), []int{2}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CronJobStatus) GetBatchJobs() []string {
|
||||||
|
if x != nil {
|
||||||
|
return x.BatchJobs
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
var File_integrations_scheduler_v1_definition_cronjob_proto protoreflect.FileDescriptor
|
var File_integrations_scheduler_v1_definition_cronjob_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_integrations_scheduler_v1_definition_cronjob_proto_rawDesc = []byte{
|
var file_integrations_scheduler_v1_definition_cronjob_proto_rawDesc = []byte{
|
||||||
|
@ -154,24 +221,36 @@ var file_integrations_scheduler_v1_definition_cronjob_proto_rawDesc = []byte{
|
||||||
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
|
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
|
||||||
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x2e, 0x70,
|
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x72, 0x6f, 0x6e, 0x6a, 0x6f, 0x62, 0x2e, 0x70,
|
||||||
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x1a,
|
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x1a,
|
||||||
0x33, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63,
|
0x31, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63,
|
||||||
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e,
|
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e,
|
||||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x6a, 0x6f, 0x62, 0x2e, 0x70,
|
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f,
|
||||||
0x72, 0x6f, 0x74, 0x6f, 0x22, 0x35, 0x0a, 0x07, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12,
|
0x74, 0x6f, 0x1a, 0x33, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
|
||||||
0x2a, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
|
0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65,
|
||||||
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f,
|
0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x6a, 0x6f,
|
||||||
0x62, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x54, 0x0a, 0x0b, 0x43,
|
0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9e, 0x01, 0x0a, 0x07, 0x43, 0x72, 0x6f, 0x6e,
|
||||||
0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63,
|
0x4a, 0x6f, 0x62, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
|
||||||
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63,
|
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
|
||||||
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20,
|
0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
||||||
0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
|
0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x04, 0x73, 0x70,
|
||||||
0x42, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x6a, 0x6f,
|
0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64,
|
||||||
0x62, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
|
0x75, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63,
|
||||||
0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x2d, 0x61, 0x72,
|
0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||||
0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69,
|
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
|
||||||
0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31,
|
0x65, 0x72, 0x2e, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||||
0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f,
|
0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x54, 0x0a, 0x0b, 0x43, 0x72, 0x6f, 0x6e,
|
||||||
0x74, 0x6f, 0x33,
|
0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64,
|
||||||
|
0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x68, 0x65, 0x64,
|
||||||
|
0x75, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
|
||||||
|
0x32, 0x17, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x74,
|
||||||
|
0x63, 0x68, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x2e,
|
||||||
|
0x0a, 0x0d, 0x43, 0x72, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
|
||||||
|
0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20,
|
||||||
|
0x03, 0x28, 0x09, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x73, 0x42, 0x48,
|
||||||
|
0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x61,
|
||||||
|
0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x2d, 0x61, 0x72, 0x61, 0x6e, 0x67,
|
||||||
|
0x6f, 0x64, 0x62, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
|
||||||
|
0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65,
|
||||||
|
0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -186,20 +265,24 @@ func file_integrations_scheduler_v1_definition_cronjob_proto_rawDescGZIP() []byt
|
||||||
return file_integrations_scheduler_v1_definition_cronjob_proto_rawDescData
|
return file_integrations_scheduler_v1_definition_cronjob_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
var file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
|
||||||
var file_integrations_scheduler_v1_definition_cronjob_proto_goTypes = []interface{}{
|
var file_integrations_scheduler_v1_definition_cronjob_proto_goTypes = []interface{}{
|
||||||
(*CronJob)(nil), // 0: scheduler.CronJob
|
(*CronJob)(nil), // 0: scheduler.CronJob
|
||||||
(*CronJobSpec)(nil), // 1: scheduler.CronJobSpec
|
(*CronJobSpec)(nil), // 1: scheduler.CronJobSpec
|
||||||
(*BatchJobSpec)(nil), // 2: scheduler.BatchJobSpec
|
(*CronJobStatus)(nil), // 2: scheduler.CronJobStatus
|
||||||
|
(*StatusMetadata)(nil), // 3: scheduler.StatusMetadata
|
||||||
|
(*BatchJobSpec)(nil), // 4: scheduler.BatchJobSpec
|
||||||
}
|
}
|
||||||
var file_integrations_scheduler_v1_definition_cronjob_proto_depIdxs = []int32{
|
var file_integrations_scheduler_v1_definition_cronjob_proto_depIdxs = []int32{
|
||||||
1, // 0: scheduler.CronJob.spec:type_name -> scheduler.CronJobSpec
|
3, // 0: scheduler.CronJob.metadata:type_name -> scheduler.StatusMetadata
|
||||||
2, // 1: scheduler.CronJobSpec.job:type_name -> scheduler.BatchJobSpec
|
1, // 1: scheduler.CronJob.spec:type_name -> scheduler.CronJobSpec
|
||||||
2, // [2:2] is the sub-list for method output_type
|
2, // 2: scheduler.CronJob.status:type_name -> scheduler.CronJobStatus
|
||||||
2, // [2:2] is the sub-list for method input_type
|
4, // 3: scheduler.CronJobSpec.job:type_name -> scheduler.BatchJobSpec
|
||||||
2, // [2:2] is the sub-list for extension type_name
|
4, // [4:4] is the sub-list for method output_type
|
||||||
2, // [2:2] is the sub-list for extension extendee
|
4, // [4:4] is the sub-list for method input_type
|
||||||
0, // [0:2] is the sub-list for field type_name
|
4, // [4:4] is the sub-list for extension type_name
|
||||||
|
4, // [4:4] is the sub-list for extension extendee
|
||||||
|
0, // [0:4] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_integrations_scheduler_v1_definition_cronjob_proto_init() }
|
func init() { file_integrations_scheduler_v1_definition_cronjob_proto_init() }
|
||||||
|
@ -207,6 +290,7 @@ func file_integrations_scheduler_v1_definition_cronjob_proto_init() {
|
||||||
if File_integrations_scheduler_v1_definition_cronjob_proto != nil {
|
if File_integrations_scheduler_v1_definition_cronjob_proto != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
file_integrations_scheduler_v1_definition_common_proto_init()
|
||||||
file_integrations_scheduler_v1_definition_batchjob_proto_init()
|
file_integrations_scheduler_v1_definition_batchjob_proto_init()
|
||||||
if !protoimpl.UnsafeEnabled {
|
if !protoimpl.UnsafeEnabled {
|
||||||
file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
@ -233,6 +317,18 @@ func file_integrations_scheduler_v1_definition_cronjob_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
file_integrations_scheduler_v1_definition_cronjob_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*CronJobStatus); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
type x struct{}
|
type x struct{}
|
||||||
out := protoimpl.TypeBuilder{
|
out := protoimpl.TypeBuilder{
|
||||||
|
@ -240,7 +336,7 @@ func file_integrations_scheduler_v1_definition_cronjob_proto_init() {
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_integrations_scheduler_v1_definition_cronjob_proto_rawDesc,
|
RawDescriptor: file_integrations_scheduler_v1_definition_cronjob_proto_rawDesc,
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 2,
|
NumMessages: 3,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
|
|
@ -22,14 +22,21 @@ syntax = "proto3";
|
||||||
|
|
||||||
package scheduler;
|
package scheduler;
|
||||||
|
|
||||||
|
import "integrations/scheduler/v1/definition/common.proto";
|
||||||
import "integrations/scheduler/v1/definition/batchjob.proto";
|
import "integrations/scheduler/v1/definition/batchjob.proto";
|
||||||
|
|
||||||
option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition";
|
option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition";
|
||||||
|
|
||||||
// Keeps information about Kubernetes Batch/V1 CronJob
|
// Keeps information about Kubernetes Batch/V1 CronJob
|
||||||
message CronJob {
|
message CronJob {
|
||||||
|
// defines object status metadate
|
||||||
|
StatusMetadata metadata = 1;
|
||||||
|
|
||||||
// Keeps the CronJob Settings
|
// Keeps the CronJob Settings
|
||||||
CronJobSpec spec = 1;
|
CronJobSpec spec = 2;
|
||||||
|
|
||||||
|
// Keeps the CronJob Status
|
||||||
|
CronJobStatus status = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Information about CronJob run settings
|
// Information about CronJob run settings
|
||||||
|
@ -40,3 +47,9 @@ message CronJobSpec {
|
||||||
// Keeps BatchJob settings
|
// Keeps BatchJob settings
|
||||||
BatchJobSpec job = 2;
|
BatchJobSpec job = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Information about CronJob Status
|
||||||
|
message CronJobStatus {
|
||||||
|
// Keeps list of created BatchJobs
|
||||||
|
repeated string batch_jobs = 1;
|
||||||
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -25,6 +25,7 @@ package scheduler;
|
||||||
import "integrations/scheduler/v1/definition/batchjob.proto";
|
import "integrations/scheduler/v1/definition/batchjob.proto";
|
||||||
import "integrations/scheduler/v1/definition/common.proto";
|
import "integrations/scheduler/v1/definition/common.proto";
|
||||||
import "integrations/scheduler/v1/definition/cronjob.proto";
|
import "integrations/scheduler/v1/definition/cronjob.proto";
|
||||||
|
import "integrations/scheduler/v1/definition/deployment.proto";
|
||||||
|
|
||||||
option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition";
|
option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition";
|
||||||
|
|
||||||
|
@ -60,6 +61,23 @@ service SchedulerV1 {
|
||||||
|
|
||||||
// Deletes CronJob. If job does not exists, Exists flag is set to false
|
// Deletes CronJob. If job does not exists, Exists flag is set to false
|
||||||
rpc DeleteCronJob(DeleteCronJobRequest) returns (DeleteCronJobResponse) {};
|
rpc DeleteCronJob(DeleteCronJobRequest) returns (DeleteCronJobResponse) {};
|
||||||
|
|
||||||
|
// Deployment
|
||||||
|
|
||||||
|
// Creates Deployment from specification
|
||||||
|
rpc CreateDeployment(CreateDeploymentRequest) returns (CreateDeploymentResponse) {};
|
||||||
|
|
||||||
|
// Returns Deployment. If job does not exists, Exists flag is set to false
|
||||||
|
rpc GetDeployment(GetDeploymentRequest) returns (GetDeploymentResponse) {};
|
||||||
|
|
||||||
|
// Updates Deployment from specification
|
||||||
|
rpc UpdateDeployment(UpdateDeploymentRequest) returns (UpdateDeploymentResponse) {};
|
||||||
|
|
||||||
|
// Returns list of the Deployments
|
||||||
|
rpc ListDeployment(ListDeploymentRequest) returns (ListDeploymentResponse) {};
|
||||||
|
|
||||||
|
// Deletes Deployment. If job does not exists, Exists flag is set to false
|
||||||
|
rpc DeleteDeployment(DeleteDeploymentRequest) returns (DeleteDeploymentResponse) {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// BatchJob
|
// BatchJob
|
||||||
|
@ -77,9 +95,6 @@ message CreateBatchJobRequest {
|
||||||
message CreateBatchJobResponse {
|
message CreateBatchJobResponse {
|
||||||
// Name of the scheduled job
|
// Name of the scheduled job
|
||||||
string name = 1;
|
string name = 1;
|
||||||
|
|
||||||
// List of the assigned profiles
|
|
||||||
repeated string profiles = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get Request
|
// Get Request
|
||||||
|
@ -138,9 +153,6 @@ message CreateCronJobRequest {
|
||||||
message CreateCronJobResponse {
|
message CreateCronJobResponse {
|
||||||
// Name of the scheduled job
|
// Name of the scheduled job
|
||||||
string name = 1;
|
string name = 1;
|
||||||
|
|
||||||
// List of the assigned profiles
|
|
||||||
repeated string profiles = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get Request
|
// Get Request
|
||||||
|
@ -156,9 +168,6 @@ message GetCronJobResponse {
|
||||||
|
|
||||||
// CronJob run settings and current status
|
// CronJob run settings and current status
|
||||||
optional CronJob cron_job = 2;
|
optional CronJob cron_job = 2;
|
||||||
|
|
||||||
// Keeps list of created BatchJobs
|
|
||||||
repeated string batch_jobs = 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update Request
|
// Update Request
|
||||||
|
@ -202,4 +211,79 @@ message DeleteCronJobRequest {
|
||||||
message DeleteCronJobResponse {
|
message DeleteCronJobResponse {
|
||||||
// Defines if job was found
|
// Defines if job was found
|
||||||
bool exists = 1;
|
bool exists = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deployment
|
||||||
|
|
||||||
|
// Create Request
|
||||||
|
message CreateDeploymentRequest {
|
||||||
|
// Spec of the Schedule request
|
||||||
|
Spec spec = 1;
|
||||||
|
|
||||||
|
// Deployment run settings
|
||||||
|
DeploymentSpec deployment = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create Response
|
||||||
|
message CreateDeploymentResponse {
|
||||||
|
// Name of the scheduled deployment
|
||||||
|
string name = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get Request
|
||||||
|
message GetDeploymentRequest {
|
||||||
|
// Name of the scheduled deployment
|
||||||
|
string name = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get Response
|
||||||
|
message GetDeploymentResponse {
|
||||||
|
// Defines if deployment was found
|
||||||
|
bool exists = 1;
|
||||||
|
|
||||||
|
// Deployment run settings and current status
|
||||||
|
optional Deployment deployment = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update Request
|
||||||
|
message UpdateDeploymentRequest {
|
||||||
|
// Name of the scheduled deployment
|
||||||
|
string name = 1;
|
||||||
|
|
||||||
|
// Deployment spec to be updated
|
||||||
|
DeploymentSpec spec = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update Response
|
||||||
|
message UpdateDeploymentResponse {
|
||||||
|
// Defines if deployment was found
|
||||||
|
bool exists = 1;
|
||||||
|
|
||||||
|
// Deployment run settings and current status
|
||||||
|
optional Deployment deployment = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// List Request
|
||||||
|
message ListDeploymentRequest {
|
||||||
|
}
|
||||||
|
|
||||||
|
// List Response
|
||||||
|
message ListDeploymentResponse {
|
||||||
|
// List of the Deployments
|
||||||
|
repeated string deployments = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete Request
|
||||||
|
message DeleteDeploymentRequest {
|
||||||
|
// Name of the scheduled deployment
|
||||||
|
string name = 1;
|
||||||
|
|
||||||
|
// Defines if all child containers/pods should be removed together with deployment
|
||||||
|
optional bool delete_child_pods = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete Response
|
||||||
|
message DeleteDeploymentResponse {
|
||||||
|
// Defines if deployment was found
|
||||||
|
bool exists = 1;
|
||||||
}
|
}
|
|
@ -40,6 +40,16 @@ type SchedulerV1Client interface {
|
||||||
ListCronJob(ctx context.Context, in *ListCronJobRequest, opts ...grpc.CallOption) (*ListCronJobResponse, error)
|
ListCronJob(ctx context.Context, in *ListCronJobRequest, opts ...grpc.CallOption) (*ListCronJobResponse, error)
|
||||||
// Deletes CronJob. If job does not exists, Exists flag is set to false
|
// Deletes CronJob. If job does not exists, Exists flag is set to false
|
||||||
DeleteCronJob(ctx context.Context, in *DeleteCronJobRequest, opts ...grpc.CallOption) (*DeleteCronJobResponse, error)
|
DeleteCronJob(ctx context.Context, in *DeleteCronJobRequest, opts ...grpc.CallOption) (*DeleteCronJobResponse, error)
|
||||||
|
// Creates Deployment from specification
|
||||||
|
CreateDeployment(ctx context.Context, in *CreateDeploymentRequest, opts ...grpc.CallOption) (*CreateDeploymentResponse, error)
|
||||||
|
// Returns Deployment. If job does not exists, Exists flag is set to false
|
||||||
|
GetDeployment(ctx context.Context, in *GetDeploymentRequest, opts ...grpc.CallOption) (*GetDeploymentResponse, error)
|
||||||
|
// Updates Deployment from specification
|
||||||
|
UpdateDeployment(ctx context.Context, in *UpdateDeploymentRequest, opts ...grpc.CallOption) (*UpdateDeploymentResponse, error)
|
||||||
|
// Returns list of the Deployments
|
||||||
|
ListDeployment(ctx context.Context, in *ListDeploymentRequest, opts ...grpc.CallOption) (*ListDeploymentResponse, error)
|
||||||
|
// Deletes Deployment. If job does not exists, Exists flag is set to false
|
||||||
|
DeleteDeployment(ctx context.Context, in *DeleteDeploymentRequest, opts ...grpc.CallOption) (*DeleteDeploymentResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type schedulerV1Client struct {
|
type schedulerV1Client struct {
|
||||||
|
@ -131,6 +141,51 @@ func (c *schedulerV1Client) DeleteCronJob(ctx context.Context, in *DeleteCronJob
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *schedulerV1Client) CreateDeployment(ctx context.Context, in *CreateDeploymentRequest, opts ...grpc.CallOption) (*CreateDeploymentResponse, error) {
|
||||||
|
out := new(CreateDeploymentResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/CreateDeployment", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *schedulerV1Client) GetDeployment(ctx context.Context, in *GetDeploymentRequest, opts ...grpc.CallOption) (*GetDeploymentResponse, error) {
|
||||||
|
out := new(GetDeploymentResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/GetDeployment", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *schedulerV1Client) UpdateDeployment(ctx context.Context, in *UpdateDeploymentRequest, opts ...grpc.CallOption) (*UpdateDeploymentResponse, error) {
|
||||||
|
out := new(UpdateDeploymentResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/UpdateDeployment", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *schedulerV1Client) ListDeployment(ctx context.Context, in *ListDeploymentRequest, opts ...grpc.CallOption) (*ListDeploymentResponse, error) {
|
||||||
|
out := new(ListDeploymentResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/ListDeployment", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *schedulerV1Client) DeleteDeployment(ctx context.Context, in *DeleteDeploymentRequest, opts ...grpc.CallOption) (*DeleteDeploymentResponse, error) {
|
||||||
|
out := new(DeleteDeploymentResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/scheduler.SchedulerV1/DeleteDeployment", in, out, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
// SchedulerV1Server is the server API for SchedulerV1 service.
|
// SchedulerV1Server is the server API for SchedulerV1 service.
|
||||||
// All implementations must embed UnimplementedSchedulerV1Server
|
// All implementations must embed UnimplementedSchedulerV1Server
|
||||||
// for forward compatibility
|
// for forward compatibility
|
||||||
|
@ -153,6 +208,16 @@ type SchedulerV1Server interface {
|
||||||
ListCronJob(context.Context, *ListCronJobRequest) (*ListCronJobResponse, error)
|
ListCronJob(context.Context, *ListCronJobRequest) (*ListCronJobResponse, error)
|
||||||
// Deletes CronJob. If job does not exists, Exists flag is set to false
|
// Deletes CronJob. If job does not exists, Exists flag is set to false
|
||||||
DeleteCronJob(context.Context, *DeleteCronJobRequest) (*DeleteCronJobResponse, error)
|
DeleteCronJob(context.Context, *DeleteCronJobRequest) (*DeleteCronJobResponse, error)
|
||||||
|
// Creates Deployment from specification
|
||||||
|
CreateDeployment(context.Context, *CreateDeploymentRequest) (*CreateDeploymentResponse, error)
|
||||||
|
// Returns Deployment. If job does not exists, Exists flag is set to false
|
||||||
|
GetDeployment(context.Context, *GetDeploymentRequest) (*GetDeploymentResponse, error)
|
||||||
|
// Updates Deployment from specification
|
||||||
|
UpdateDeployment(context.Context, *UpdateDeploymentRequest) (*UpdateDeploymentResponse, error)
|
||||||
|
// Returns list of the Deployments
|
||||||
|
ListDeployment(context.Context, *ListDeploymentRequest) (*ListDeploymentResponse, error)
|
||||||
|
// Deletes Deployment. If job does not exists, Exists flag is set to false
|
||||||
|
DeleteDeployment(context.Context, *DeleteDeploymentRequest) (*DeleteDeploymentResponse, error)
|
||||||
mustEmbedUnimplementedSchedulerV1Server()
|
mustEmbedUnimplementedSchedulerV1Server()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,6 +252,21 @@ func (UnimplementedSchedulerV1Server) ListCronJob(context.Context, *ListCronJobR
|
||||||
func (UnimplementedSchedulerV1Server) DeleteCronJob(context.Context, *DeleteCronJobRequest) (*DeleteCronJobResponse, error) {
|
func (UnimplementedSchedulerV1Server) DeleteCronJob(context.Context, *DeleteCronJobRequest) (*DeleteCronJobResponse, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method DeleteCronJob not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method DeleteCronJob not implemented")
|
||||||
}
|
}
|
||||||
|
func (UnimplementedSchedulerV1Server) CreateDeployment(context.Context, *CreateDeploymentRequest) (*CreateDeploymentResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method CreateDeployment not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedSchedulerV1Server) GetDeployment(context.Context, *GetDeploymentRequest) (*GetDeploymentResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method GetDeployment not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedSchedulerV1Server) UpdateDeployment(context.Context, *UpdateDeploymentRequest) (*UpdateDeploymentResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method UpdateDeployment not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedSchedulerV1Server) ListDeployment(context.Context, *ListDeploymentRequest) (*ListDeploymentResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method ListDeployment not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedSchedulerV1Server) DeleteDeployment(context.Context, *DeleteDeploymentRequest) (*DeleteDeploymentResponse, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method DeleteDeployment not implemented")
|
||||||
|
}
|
||||||
func (UnimplementedSchedulerV1Server) mustEmbedUnimplementedSchedulerV1Server() {}
|
func (UnimplementedSchedulerV1Server) mustEmbedUnimplementedSchedulerV1Server() {}
|
||||||
|
|
||||||
// UnsafeSchedulerV1Server may be embedded to opt out of forward compatibility for this service.
|
// UnsafeSchedulerV1Server may be embedded to opt out of forward compatibility for this service.
|
||||||
|
@ -362,6 +442,96 @@ func _SchedulerV1_DeleteCronJob_Handler(srv interface{}, ctx context.Context, de
|
||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func _SchedulerV1_CreateDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(CreateDeploymentRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(SchedulerV1Server).CreateDeployment(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/scheduler.SchedulerV1/CreateDeployment",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(SchedulerV1Server).CreateDeployment(ctx, req.(*CreateDeploymentRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _SchedulerV1_GetDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(GetDeploymentRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(SchedulerV1Server).GetDeployment(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/scheduler.SchedulerV1/GetDeployment",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(SchedulerV1Server).GetDeployment(ctx, req.(*GetDeploymentRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _SchedulerV1_UpdateDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(UpdateDeploymentRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(SchedulerV1Server).UpdateDeployment(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/scheduler.SchedulerV1/UpdateDeployment",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(SchedulerV1Server).UpdateDeployment(ctx, req.(*UpdateDeploymentRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _SchedulerV1_ListDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(ListDeploymentRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(SchedulerV1Server).ListDeployment(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/scheduler.SchedulerV1/ListDeployment",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(SchedulerV1Server).ListDeployment(ctx, req.(*ListDeploymentRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _SchedulerV1_DeleteDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(DeleteDeploymentRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(SchedulerV1Server).DeleteDeployment(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: "/scheduler.SchedulerV1/DeleteDeployment",
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(SchedulerV1Server).DeleteDeployment(ctx, req.(*DeleteDeploymentRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
// SchedulerV1_ServiceDesc is the grpc.ServiceDesc for SchedulerV1 service.
|
// SchedulerV1_ServiceDesc is the grpc.ServiceDesc for SchedulerV1 service.
|
||||||
// It's only intended for direct use with grpc.RegisterService,
|
// It's only intended for direct use with grpc.RegisterService,
|
||||||
// and not to be introspected or modified (even as a copy)
|
// and not to be introspected or modified (even as a copy)
|
||||||
|
@ -405,6 +575,26 @@ var SchedulerV1_ServiceDesc = grpc.ServiceDesc{
|
||||||
MethodName: "DeleteCronJob",
|
MethodName: "DeleteCronJob",
|
||||||
Handler: _SchedulerV1_DeleteCronJob_Handler,
|
Handler: _SchedulerV1_DeleteCronJob_Handler,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
MethodName: "CreateDeployment",
|
||||||
|
Handler: _SchedulerV1_CreateDeployment_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "GetDeployment",
|
||||||
|
Handler: _SchedulerV1_GetDeployment_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "UpdateDeployment",
|
||||||
|
Handler: _SchedulerV1_UpdateDeployment_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "ListDeployment",
|
||||||
|
Handler: _SchedulerV1_ListDeployment_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "DeleteDeployment",
|
||||||
|
Handler: _SchedulerV1_DeleteDeployment_Handler,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Streams: []grpc.StreamDesc{},
|
Streams: []grpc.StreamDesc{},
|
||||||
Metadata: "integrations/scheduler/v1/definition/definition.proto",
|
Metadata: "integrations/scheduler/v1/definition/definition.proto",
|
||||||
|
|
388
integrations/scheduler/v1/definition/deployment.pb.go
Normal file
388
integrations/scheduler/v1/definition/deployment.pb.go
Normal file
|
@ -0,0 +1,388 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.26.0
|
||||||
|
// protoc v3.21.1
|
||||||
|
// source: integrations/scheduler/v1/definition/deployment.proto
|
||||||
|
|
||||||
|
package definition
|
||||||
|
|
||||||
|
import (
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// Verify that this generated code is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||||
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||||
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||||
|
)
|
||||||
|
|
||||||
|
// Keeps information about Kubernetes Batch/V1 Job
|
||||||
|
type Deployment struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// defines object status metadate
|
||||||
|
Metadata *StatusMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
||||||
|
// Keeps Deployment settings
|
||||||
|
Spec *DeploymentSpec `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"`
|
||||||
|
// Keeps current Deployment Status
|
||||||
|
Status *DeploymentStatus `protobuf:"bytes,3,opt,name=status,proto3,oneof" json:"status,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Deployment) Reset() {
|
||||||
|
*x = Deployment{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Deployment) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*Deployment) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *Deployment) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use Deployment.ProtoReflect.Descriptor instead.
|
||||||
|
func (*Deployment) Descriptor() ([]byte, []int) {
|
||||||
|
return file_integrations_scheduler_v1_definition_deployment_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Deployment) GetMetadata() *StatusMetadata {
|
||||||
|
if x != nil {
|
||||||
|
return x.Metadata
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Deployment) GetSpec() *DeploymentSpec {
|
||||||
|
if x != nil {
|
||||||
|
return x.Spec
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Deployment) GetStatus() *DeploymentStatus {
|
||||||
|
if x != nil {
|
||||||
|
return x.Status
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Information about Deployment run settings
|
||||||
|
type DeploymentSpec struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Number of Pods which are started within a deployment. Defaults to 1
|
||||||
|
Replicas *int32 `protobuf:"varint,1,opt,name=replicas,proto3,oneof" json:"replicas,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentSpec) Reset() {
|
||||||
|
*x = DeploymentSpec{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[1]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentSpec) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*DeploymentSpec) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *DeploymentSpec) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[1]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use DeploymentSpec.ProtoReflect.Descriptor instead.
|
||||||
|
func (*DeploymentSpec) Descriptor() ([]byte, []int) {
|
||||||
|
return file_integrations_scheduler_v1_definition_deployment_proto_rawDescGZIP(), []int{1}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentSpec) GetReplicas() int32 {
|
||||||
|
if x != nil && x.Replicas != nil {
|
||||||
|
return *x.Replicas
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Information about Deployment Status
|
||||||
|
type DeploymentStatus struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Total number of non-terminated pods targeted by this deployment (their labels match the selector).
|
||||||
|
Replicas int32 `protobuf:"varint,1,opt,name=replicas,proto3" json:"replicas,omitempty"`
|
||||||
|
// Total number of non-terminated pods targeted by this deployment that have the desired template spec.
|
||||||
|
UpdatedReplicas int32 `protobuf:"varint,2,opt,name=updated_replicas,json=updatedReplicas,proto3" json:"updated_replicas,omitempty"`
|
||||||
|
// readyReplicas is the number of pods targeted by this Deployment with a Ready Condition.
|
||||||
|
ReadyReplicas int32 `protobuf:"varint,3,opt,name=ready_replicas,json=readyReplicas,proto3" json:"ready_replicas,omitempty"`
|
||||||
|
// Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.
|
||||||
|
AvailableReplicas int32 `protobuf:"varint,4,opt,name=available_replicas,json=availableReplicas,proto3" json:"available_replicas,omitempty"`
|
||||||
|
// Total number of unavailable pods targeted by this deployment. This is the total number of
|
||||||
|
// pods that are still required for the deployment to have 100% available capacity. They may
|
||||||
|
// either be pods that are running but not yet available or pods that still have not been created.
|
||||||
|
UnavailableReplicas int32 `protobuf:"varint,5,opt,name=unavailable_replicas,json=unavailableReplicas,proto3" json:"unavailable_replicas,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentStatus) Reset() {
|
||||||
|
*x = DeploymentStatus{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[2]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentStatus) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*DeploymentStatus) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *DeploymentStatus) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[2]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use DeploymentStatus.ProtoReflect.Descriptor instead.
|
||||||
|
func (*DeploymentStatus) Descriptor() ([]byte, []int) {
|
||||||
|
return file_integrations_scheduler_v1_definition_deployment_proto_rawDescGZIP(), []int{2}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentStatus) GetReplicas() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Replicas
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentStatus) GetUpdatedReplicas() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.UpdatedReplicas
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentStatus) GetReadyReplicas() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ReadyReplicas
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentStatus) GetAvailableReplicas() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.AvailableReplicas
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *DeploymentStatus) GetUnavailableReplicas() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.UnavailableReplicas
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
var File_integrations_scheduler_v1_definition_deployment_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_integrations_scheduler_v1_definition_deployment_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x35, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73,
|
||||||
|
0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69,
|
||||||
|
0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
|
||||||
|
0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
|
||||||
|
0x65, 0x72, 0x1a, 0x31, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
|
||||||
|
0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65,
|
||||||
|
0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
|
||||||
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb7, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79,
|
||||||
|
0x6d, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
||||||
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
|
||||||
|
0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
|
||||||
|
0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x04, 0x73,
|
||||||
|
0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x63, 0x68, 0x65,
|
||||||
|
0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74,
|
||||||
|
0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x06, 0x73, 0x74,
|
||||||
|
0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x63, 0x68,
|
||||||
|
0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
|
||||||
|
0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
|
||||||
|
0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
|
||||||
|
0x3e, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65,
|
||||||
|
0x63, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x01, 0x20,
|
||||||
|
0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x88,
|
||||||
|
0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x22,
|
||||||
|
0xe2, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74,
|
||||||
|
0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73,
|
||||||
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73,
|
||||||
|
0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x70, 0x6c,
|
||||||
|
0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61,
|
||||||
|
0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72,
|
||||||
|
0x65, 0x61, 0x64, 0x79, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x03, 0x20,
|
||||||
|
0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63,
|
||||||
|
0x61, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f,
|
||||||
|
0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11,
|
||||||
|
0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61,
|
||||||
|
0x73, 0x12, 0x31, 0x0a, 0x14, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65,
|
||||||
|
0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x13, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x70, 0x6c,
|
||||||
|
0x69, 0x63, 0x61, 0x73, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
|
||||||
|
0x6f, 0x6d, 0x2f, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x6b, 0x75, 0x62, 0x65,
|
||||||
|
0x2d, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72,
|
||||||
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
|
||||||
|
0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06,
|
||||||
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_rawDescOnce sync.Once
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_rawDescData = file_integrations_scheduler_v1_definition_deployment_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_integrations_scheduler_v1_definition_deployment_proto_rawDescGZIP() []byte {
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_rawDescOnce.Do(func() {
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_rawDescData = protoimpl.X.CompressGZIP(file_integrations_scheduler_v1_definition_deployment_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_integrations_scheduler_v1_definition_deployment_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_integrations_scheduler_v1_definition_deployment_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
|
||||||
|
var file_integrations_scheduler_v1_definition_deployment_proto_goTypes = []interface{}{
|
||||||
|
(*Deployment)(nil), // 0: scheduler.Deployment
|
||||||
|
(*DeploymentSpec)(nil), // 1: scheduler.DeploymentSpec
|
||||||
|
(*DeploymentStatus)(nil), // 2: scheduler.DeploymentStatus
|
||||||
|
(*StatusMetadata)(nil), // 3: scheduler.StatusMetadata
|
||||||
|
}
|
||||||
|
var file_integrations_scheduler_v1_definition_deployment_proto_depIdxs = []int32{
|
||||||
|
3, // 0: scheduler.Deployment.metadata:type_name -> scheduler.StatusMetadata
|
||||||
|
1, // 1: scheduler.Deployment.spec:type_name -> scheduler.DeploymentSpec
|
||||||
|
2, // 2: scheduler.Deployment.status:type_name -> scheduler.DeploymentStatus
|
||||||
|
3, // [3:3] is the sub-list for method output_type
|
||||||
|
3, // [3:3] is the sub-list for method input_type
|
||||||
|
3, // [3:3] is the sub-list for extension type_name
|
||||||
|
3, // [3:3] is the sub-list for extension extendee
|
||||||
|
0, // [0:3] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_integrations_scheduler_v1_definition_deployment_proto_init() }
|
||||||
|
func file_integrations_scheduler_v1_definition_deployment_proto_init() {
|
||||||
|
if File_integrations_scheduler_v1_definition_deployment_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
file_integrations_scheduler_v1_definition_common_proto_init()
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*Deployment); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*DeploymentSpec); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*DeploymentStatus); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[0].OneofWrappers = []interface{}{}
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_msgTypes[1].OneofWrappers = []interface{}{}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_integrations_scheduler_v1_definition_deployment_proto_rawDesc,
|
||||||
|
NumEnums: 0,
|
||||||
|
NumMessages: 3,
|
||||||
|
NumExtensions: 0,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_integrations_scheduler_v1_definition_deployment_proto_goTypes,
|
||||||
|
DependencyIndexes: file_integrations_scheduler_v1_definition_deployment_proto_depIdxs,
|
||||||
|
MessageInfos: file_integrations_scheduler_v1_definition_deployment_proto_msgTypes,
|
||||||
|
}.Build()
|
||||||
|
File_integrations_scheduler_v1_definition_deployment_proto = out.File
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_rawDesc = nil
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_goTypes = nil
|
||||||
|
file_integrations_scheduler_v1_definition_deployment_proto_depIdxs = nil
|
||||||
|
}
|
66
integrations/scheduler/v1/definition/deployment.proto
Normal file
66
integrations/scheduler/v1/definition/deployment.proto
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
|
||||||
|
syntax = "proto3";
|
||||||
|
|
||||||
|
package scheduler;
|
||||||
|
|
||||||
|
import "integrations/scheduler/v1/definition/common.proto";
|
||||||
|
|
||||||
|
option go_package = "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition";
|
||||||
|
|
||||||
|
// Keeps information about Kubernetes Batch/V1 Job
|
||||||
|
message Deployment {
|
||||||
|
// defines object status metadate
|
||||||
|
StatusMetadata metadata = 1;
|
||||||
|
|
||||||
|
// Keeps Deployment settings
|
||||||
|
DeploymentSpec spec = 2;
|
||||||
|
|
||||||
|
// Keeps current Deployment Status
|
||||||
|
optional DeploymentStatus status = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Information about Deployment run settings
|
||||||
|
message DeploymentSpec {
|
||||||
|
// Number of Pods which are started within a deployment. Defaults to 1
|
||||||
|
optional int32 replicas = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Information about Deployment Status
|
||||||
|
message DeploymentStatus {
|
||||||
|
|
||||||
|
// Total number of non-terminated pods targeted by this deployment (their labels match the selector).
|
||||||
|
int32 replicas=1;
|
||||||
|
|
||||||
|
// Total number of non-terminated pods targeted by this deployment that have the desired template spec.
|
||||||
|
int32 updated_replicas = 2;
|
||||||
|
|
||||||
|
// readyReplicas is the number of pods targeted by this Deployment with a Ready Condition.
|
||||||
|
int32 ready_replicas = 3;
|
||||||
|
|
||||||
|
// Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.
|
||||||
|
int32 available_replicas = 4;
|
||||||
|
|
||||||
|
// Total number of unavailable pods targeted by this deployment. This is the total number of
|
||||||
|
// pods that are still required for the deployment to have 100% available capacity. They may
|
||||||
|
// either be pods that are running but not yet available or pods that still have not been created.
|
||||||
|
int32 unavailable_replicas = 5;
|
||||||
|
}
|
210
integrations/scheduler/v1/deployment.go
Normal file
210
integrations/scheduler/v1/deployment.go
Normal file
|
@ -0,0 +1,210 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
|
||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"
|
||||||
|
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/debug_package/generators/kubernetes"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/scheduler"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i *implementation) CreateDeployment(ctx context.Context, request *pbSchedulerV1.CreateDeploymentRequest) (*pbSchedulerV1.CreateDeploymentResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
template := scheduler.SpecAsTemplate(request.GetSpec())
|
||||||
|
|
||||||
|
var spec schedulerApi.ArangoSchedulerDeployment
|
||||||
|
|
||||||
|
spec.Namespace = i.cfg.Namespace
|
||||||
|
|
||||||
|
if meta := request.GetSpec().GetMetadata(); meta != nil {
|
||||||
|
if util.TypeOrDefault(meta.GenerateName, false) {
|
||||||
|
spec.GenerateName = meta.Name
|
||||||
|
} else {
|
||||||
|
spec.Name = meta.Name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
spec.Spec.Template = *template
|
||||||
|
|
||||||
|
if deployment := request.GetDeployment(); deployment != nil {
|
||||||
|
spec.Spec.Replicas = deployment.Replicas
|
||||||
|
}
|
||||||
|
|
||||||
|
if jobSpec := request.GetSpec(); jobSpec != nil {
|
||||||
|
if base := jobSpec.Base; base != nil {
|
||||||
|
spec.Labels = base.Labels
|
||||||
|
spec.Spec.Template.Labels = base.Labels
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerDeployments(i.cfg.Namespace).Create(ctx, &spec, meta.CreateOptions{})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.CreateDeploymentResponse{
|
||||||
|
Name: job.Name,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) GetDeployment(ctx context.Context, request *pbSchedulerV1.GetDeploymentRequest) (*pbSchedulerV1.GetDeploymentResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
deployment, err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerDeployments(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.GetDeploymentResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.GetDeploymentResponse{
|
||||||
|
Exists: true,
|
||||||
|
|
||||||
|
Deployment: &pbSchedulerV1.Deployment{
|
||||||
|
Metadata: ExtractStatusMetadata(deployment.Status.ArangoSchedulerStatusMetadata),
|
||||||
|
Spec: &pbSchedulerV1.DeploymentSpec{
|
||||||
|
Replicas: deployment.Spec.Replicas,
|
||||||
|
},
|
||||||
|
Status: &pbSchedulerV1.DeploymentStatus{
|
||||||
|
Replicas: deployment.Status.DeploymentStatus.Replicas,
|
||||||
|
UpdatedReplicas: deployment.Status.DeploymentStatus.UpdatedReplicas,
|
||||||
|
ReadyReplicas: deployment.Status.DeploymentStatus.ReadyReplicas,
|
||||||
|
AvailableReplicas: deployment.Status.DeploymentStatus.AvailableReplicas,
|
||||||
|
UnavailableReplicas: deployment.Status.DeploymentStatus.UnavailableReplicas,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) UpdateDeployment(ctx context.Context, request *pbSchedulerV1.UpdateDeploymentRequest) (*pbSchedulerV1.UpdateDeploymentResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerDeployments(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.UpdateDeploymentResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if deployment := request.GetSpec(); deployment != nil {
|
||||||
|
job.Spec.Replicas = deployment.Replicas
|
||||||
|
}
|
||||||
|
|
||||||
|
job, err = i.client.Arango().SchedulerV1beta1().ArangoSchedulerDeployments(i.cfg.Namespace).Update(ctx, job, meta.UpdateOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.UpdateDeploymentResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.UpdateDeploymentResponse{
|
||||||
|
Exists: true,
|
||||||
|
|
||||||
|
Deployment: &pbSchedulerV1.Deployment{
|
||||||
|
Spec: &pbSchedulerV1.DeploymentSpec{
|
||||||
|
Replicas: job.Spec.Replicas,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) ListDeployment(ctx context.Context, request *pbSchedulerV1.ListDeploymentRequest) (*pbSchedulerV1.ListDeploymentResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
objects, err := kubernetes.ListObjects[*schedulerApi.ArangoSchedulerDeploymentList, *schedulerApi.ArangoSchedulerDeployment](ctx, i.client.Arango().SchedulerV1beta1().ArangoSchedulerDeployments(i.cfg.Namespace), func(result *schedulerApi.ArangoSchedulerDeploymentList) []*schedulerApi.ArangoSchedulerDeployment {
|
||||||
|
r := make([]*schedulerApi.ArangoSchedulerDeployment, len(result.Items))
|
||||||
|
|
||||||
|
for id := range result.Items {
|
||||||
|
r[id] = result.Items[id].DeepCopy()
|
||||||
|
}
|
||||||
|
|
||||||
|
return r
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.ListDeploymentResponse{
|
||||||
|
Deployments: util.FormatList(objects, func(in *schedulerApi.ArangoSchedulerDeployment) string {
|
||||||
|
return in.GetName()
|
||||||
|
}),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *implementation) DeleteDeployment(ctx context.Context, request *pbSchedulerV1.DeleteDeploymentRequest) (*pbSchedulerV1.DeleteDeploymentResponse, error) {
|
||||||
|
if request == nil {
|
||||||
|
return nil, errors.Errorf("Request is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
var d meta.DeleteOptions
|
||||||
|
|
||||||
|
if v := request.DeleteChildPods; v != nil {
|
||||||
|
if *v {
|
||||||
|
d.PropagationPolicy = util.NewType(meta.DeletePropagationBackground)
|
||||||
|
} else {
|
||||||
|
d.PropagationPolicy = util.NewType(meta.DeletePropagationOrphan)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err := i.client.Arango().SchedulerV1beta1().ArangoSchedulerDeployments(i.cfg.Namespace).Delete(ctx, request.GetName(), d)
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
return &pbSchedulerV1.DeleteDeploymentResponse{
|
||||||
|
Exists: false,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbSchedulerV1.DeleteDeploymentResponse{Exists: true}, nil
|
||||||
|
}
|
199
integrations/scheduler/v1/deployment_test.go
Normal file
199
integrations/scheduler/v1/deployment_test.go
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
|
||||||
|
//
|
||||||
|
|
||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"
|
||||||
|
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/kclient"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/tests"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_Deployment(t *testing.T) {
|
||||||
|
ctx, c := context.WithCancel(context.Background())
|
||||||
|
defer c()
|
||||||
|
|
||||||
|
client := kclient.NewFakeClientBuilder().Add(
|
||||||
|
tests.NewMetaObject(t, tests.FakeNamespace, "test", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
||||||
|
obj.Spec = schedulerApi.ProfileSpec{}
|
||||||
|
}, tests.MarkArangoProfileAsReady),
|
||||||
|
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-all", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
||||||
|
obj.Spec = schedulerApi.ProfileSpec{
|
||||||
|
Selectors: &schedulerApi.ProfileSelectors{
|
||||||
|
Label: &meta.LabelSelector{},
|
||||||
|
},
|
||||||
|
Template: &schedulerApi.ProfileTemplate{},
|
||||||
|
}
|
||||||
|
}, tests.MarkArangoProfileAsReady),
|
||||||
|
tests.NewMetaObject(t, tests.FakeNamespace, "test-select-specific", func(t *testing.T, obj *schedulerApi.ArangoProfile) {
|
||||||
|
obj.Spec = schedulerApi.ProfileSpec{
|
||||||
|
Selectors: &schedulerApi.ProfileSelectors{
|
||||||
|
Label: &meta.LabelSelector{
|
||||||
|
MatchLabels: map[string]string{
|
||||||
|
"A": "B",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Template: &schedulerApi.ProfileTemplate{},
|
||||||
|
}
|
||||||
|
}, tests.MarkArangoProfileAsReady),
|
||||||
|
).Client()
|
||||||
|
|
||||||
|
scheduler := Client(t, ctx, client, func(c Configuration) Configuration {
|
||||||
|
c.Namespace = tests.FakeNamespace
|
||||||
|
c.VerifyAccess = false
|
||||||
|
return c
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Ensure job does not exist - get", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.GetDeployment(context.Background(), &pbSchedulerV1.GetDeploymentRequest{
|
||||||
|
Name: "test",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.False(t, resp.GetExists())
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Ensure job does not exist - list", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.ListDeployment(context.Background(), &pbSchedulerV1.ListDeploymentRequest{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Len(t, resp.GetDeployments(), 0)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Schedule Job", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.CreateDeployment(context.Background(), &pbSchedulerV1.CreateDeploymentRequest{
|
||||||
|
Spec: &pbSchedulerV1.Spec{
|
||||||
|
Metadata: &pbSchedulerV1.Metadata{
|
||||||
|
Name: "test",
|
||||||
|
},
|
||||||
|
Base: &pbSchedulerV1.ObjectBase{
|
||||||
|
Labels: nil,
|
||||||
|
Profiles: []string{
|
||||||
|
"test",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Containers: map[string]*pbSchedulerV1.ContainerBase{
|
||||||
|
"example": {
|
||||||
|
Image: util.NewType("ubuntu:20.04"),
|
||||||
|
Args: []string{
|
||||||
|
"/bin/bash",
|
||||||
|
"-c",
|
||||||
|
"true",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Deployment: &pbSchedulerV1.DeploymentSpec{
|
||||||
|
Replicas: util.NewType[int32](5),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.EqualValues(t, "test", resp.GetName())
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Ensure job exist - get", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.GetDeployment(context.Background(), &pbSchedulerV1.GetDeploymentRequest{
|
||||||
|
Name: "test",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.True(t, resp.GetExists())
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Ensure job exist - list", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.ListDeployment(context.Background(), &pbSchedulerV1.ListDeploymentRequest{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Len(t, resp.GetDeployments(), 1)
|
||||||
|
require.Contains(t, resp.GetDeployments(), "test")
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Ensure job details - pre", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.GetDeployment(context.Background(), &pbSchedulerV1.GetDeploymentRequest{
|
||||||
|
Name: "test",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.True(t, resp.GetExists())
|
||||||
|
require.EqualValues(t, 0, resp.GetDeployment().GetStatus().GetReplicas())
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Ensure job details - update", func(t *testing.T) {
|
||||||
|
job := tests.NewMetaObject[*schedulerApi.ArangoSchedulerDeployment](t, tests.FakeNamespace, "test")
|
||||||
|
|
||||||
|
tests.RefreshObjectsC(t, client, &job)
|
||||||
|
|
||||||
|
job.Status.Replicas = 1
|
||||||
|
|
||||||
|
tests.UpdateObjectsC(t, client, &job)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Ensure job details - post", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.GetDeployment(context.Background(), &pbSchedulerV1.GetDeploymentRequest{
|
||||||
|
Name: "test",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.True(t, resp.GetExists())
|
||||||
|
require.EqualValues(t, 1, resp.GetDeployment().GetStatus().GetReplicas())
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Delete Job", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.DeleteDeployment(context.Background(), &pbSchedulerV1.DeleteDeploymentRequest{
|
||||||
|
Name: "test",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.True(t, resp.GetExists())
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Re-Delete Job", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.DeleteDeployment(context.Background(), &pbSchedulerV1.DeleteDeploymentRequest{
|
||||||
|
Name: "test",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.False(t, resp.GetExists())
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Ensure job does not exist after deletion - get", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.GetDeployment(context.Background(), &pbSchedulerV1.GetDeploymentRequest{
|
||||||
|
Name: "test",
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.False(t, resp.GetExists())
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Ensure job does not exist after deletion - list", func(t *testing.T) {
|
||||||
|
resp, err := scheduler.ListDeployment(context.Background(), &pbSchedulerV1.ListDeploymentRequest{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Len(t, resp.GetDeployments(), 0)
|
||||||
|
})
|
||||||
|
}
|
43
integrations/scheduler/v1/helpers.go
Normal file
43
integrations/scheduler/v1/helpers.go
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
//
|
||||||
|
// DISCLAIMER
|
||||||
|
//
|
||||||
|
// Copyright 2024 ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
//
|
||||||
|
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||||
|
//
|
||||||
|
|
||||||
|
package v1
|
||||||
|
|
||||||
|
import (
|
||||||
|
pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"
|
||||||
|
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ExtractStatusMetadata(mt schedulerApi.ArangoSchedulerStatusMetadata) *pbSchedulerV1.StatusMetadata {
|
||||||
|
var r pbSchedulerV1.StatusMetadata
|
||||||
|
|
||||||
|
r.Profiles = mt.Profiles
|
||||||
|
|
||||||
|
if obj := mt.Object; obj == nil {
|
||||||
|
r.Created = false
|
||||||
|
} else {
|
||||||
|
r.Created = true
|
||||||
|
r.Checksum = util.NewType(obj.GetChecksum())
|
||||||
|
r.Uid = util.NewType(obj.GetChecksum())
|
||||||
|
}
|
||||||
|
|
||||||
|
return &r
|
||||||
|
}
|
|
@ -24,16 +24,9 @@ import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
batch "k8s.io/api/batch/v1"
|
|
||||||
core "k8s.io/api/core/v1"
|
|
||||||
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
|
|
||||||
pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"
|
pbSchedulerV1 "github.com/arangodb/kube-arangodb/integrations/scheduler/v1/definition"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/debug_package/generators/kubernetes"
|
|
||||||
"github.com/arangodb/kube-arangodb/pkg/scheduler"
|
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors"
|
|
||||||
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
|
kresources "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/resources"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/kclient"
|
"github.com/arangodb/kube-arangodb/pkg/util/kclient"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/svc"
|
"github.com/arangodb/kube-arangodb/pkg/util/svc"
|
||||||
|
@ -52,58 +45,114 @@ func newInternal(ctx context.Context, client kclient.Client, cfg Configuration)
|
||||||
if err := kresources.VerifyAll(ctx, client.Kubernetes(),
|
if err := kresources.VerifyAll(ctx, client.Kubernetes(),
|
||||||
kresources.AccessRequest{
|
kresources.AccessRequest{
|
||||||
Verb: "create",
|
Verb: "create",
|
||||||
Group: "batch",
|
Group: "scheduler.arangodb.com",
|
||||||
Version: "v1",
|
Version: "v1",
|
||||||
Resource: "jobs",
|
Resource: "arangoschedulerbatchjobs",
|
||||||
Namespace: cfg.Namespace,
|
Namespace: cfg.Namespace,
|
||||||
},
|
},
|
||||||
kresources.AccessRequest{
|
kresources.AccessRequest{
|
||||||
Verb: "list",
|
Verb: "list",
|
||||||
Group: "batch",
|
Group: "scheduler.arangodb.com",
|
||||||
Version: "v1",
|
Version: "v1",
|
||||||
Resource: "jobs",
|
Resource: "arangoschedulerbatchjobs",
|
||||||
Namespace: cfg.Namespace,
|
Namespace: cfg.Namespace,
|
||||||
},
|
},
|
||||||
kresources.AccessRequest{
|
kresources.AccessRequest{
|
||||||
Verb: "delete",
|
Verb: "delete",
|
||||||
Group: "batch",
|
Group: "scheduler.arangodb.com",
|
||||||
Version: "v1",
|
Version: "v1",
|
||||||
Resource: "jobs",
|
Resource: "arangoschedulerbatchjobs",
|
||||||
Namespace: cfg.Namespace,
|
Namespace: cfg.Namespace,
|
||||||
},
|
},
|
||||||
kresources.AccessRequest{
|
kresources.AccessRequest{
|
||||||
Verb: "get",
|
Verb: "get",
|
||||||
Group: "batch",
|
Group: "scheduler.arangodb.com",
|
||||||
Version: "v1",
|
Version: "v1",
|
||||||
Resource: "jobs",
|
Resource: "arangoschedulerbatchjobs",
|
||||||
Namespace: cfg.Namespace,
|
Namespace: cfg.Namespace,
|
||||||
},
|
},
|
||||||
kresources.AccessRequest{
|
kresources.AccessRequest{
|
||||||
Verb: "create",
|
Verb: "create",
|
||||||
Group: "batch",
|
Group: "scheduler.arangodb.com",
|
||||||
Version: "v1",
|
Version: "v1",
|
||||||
Resource: "cronjobs",
|
Resource: "arangoschedulercronjobs",
|
||||||
Namespace: cfg.Namespace,
|
Namespace: cfg.Namespace,
|
||||||
},
|
},
|
||||||
kresources.AccessRequest{
|
kresources.AccessRequest{
|
||||||
Verb: "list",
|
Verb: "list",
|
||||||
Group: "batch",
|
Group: "scheduler.arangodb.com",
|
||||||
Version: "v1",
|
Version: "v1",
|
||||||
Resource: "cronjobs",
|
Resource: "arangoschedulercronjobs",
|
||||||
Namespace: cfg.Namespace,
|
Namespace: cfg.Namespace,
|
||||||
},
|
},
|
||||||
kresources.AccessRequest{
|
kresources.AccessRequest{
|
||||||
Verb: "delete",
|
Verb: "delete",
|
||||||
Group: "batch",
|
Group: "scheduler.arangodb.com",
|
||||||
Version: "v1",
|
Version: "v1",
|
||||||
Resource: "cronjobs",
|
Resource: "arangoschedulercronjobs",
|
||||||
Namespace: cfg.Namespace,
|
Namespace: cfg.Namespace,
|
||||||
},
|
},
|
||||||
kresources.AccessRequest{
|
kresources.AccessRequest{
|
||||||
Verb: "get",
|
Verb: "get",
|
||||||
Group: "batch",
|
Group: "scheduler.arangodb.com",
|
||||||
Version: "v1",
|
Version: "v1",
|
||||||
Resource: "cronjobs",
|
Resource: "arangoschedulercronjobs",
|
||||||
|
Namespace: cfg.Namespace,
|
||||||
|
},
|
||||||
|
kresources.AccessRequest{
|
||||||
|
Verb: "create",
|
||||||
|
Group: "scheduler.arangodb.com",
|
||||||
|
Version: "v1",
|
||||||
|
Resource: "arangoschedulerpods",
|
||||||
|
Namespace: cfg.Namespace,
|
||||||
|
},
|
||||||
|
kresources.AccessRequest{
|
||||||
|
Verb: "list",
|
||||||
|
Group: "scheduler.arangodb.com",
|
||||||
|
Version: "v1",
|
||||||
|
Resource: "arangoschedulerpods",
|
||||||
|
Namespace: cfg.Namespace,
|
||||||
|
},
|
||||||
|
kresources.AccessRequest{
|
||||||
|
Verb: "delete",
|
||||||
|
Group: "scheduler.arangodb.com",
|
||||||
|
Version: "v1",
|
||||||
|
Resource: "arangoschedulerpods",
|
||||||
|
Namespace: cfg.Namespace,
|
||||||
|
},
|
||||||
|
kresources.AccessRequest{
|
||||||
|
Verb: "get",
|
||||||
|
Group: "scheduler.arangodb.com",
|
||||||
|
Version: "v1",
|
||||||
|
Resource: "arangoschedulerpods",
|
||||||
|
Namespace: cfg.Namespace,
|
||||||
|
},
|
||||||
|
kresources.AccessRequest{
|
||||||
|
Verb: "create",
|
||||||
|
Group: "scheduler.arangodb.com",
|
||||||
|
Version: "v1",
|
||||||
|
Resource: "arangoschedulerdeployments",
|
||||||
|
Namespace: cfg.Namespace,
|
||||||
|
},
|
||||||
|
kresources.AccessRequest{
|
||||||
|
Verb: "list",
|
||||||
|
Group: "scheduler.arangodb.com",
|
||||||
|
Version: "v1",
|
||||||
|
Resource: "arangoschedulerdeployments",
|
||||||
|
Namespace: cfg.Namespace,
|
||||||
|
},
|
||||||
|
kresources.AccessRequest{
|
||||||
|
Verb: "delete",
|
||||||
|
Group: "scheduler.arangodb.com",
|
||||||
|
Version: "v1",
|
||||||
|
Resource: "arangoschedulerdeployments",
|
||||||
|
Namespace: cfg.Namespace,
|
||||||
|
},
|
||||||
|
kresources.AccessRequest{
|
||||||
|
Verb: "get",
|
||||||
|
Group: "scheduler.arangodb.com",
|
||||||
|
Version: "v1",
|
||||||
|
Resource: "arangoschedulerdeployments",
|
||||||
Namespace: cfg.Namespace,
|
Namespace: cfg.Namespace,
|
||||||
},
|
},
|
||||||
); err != nil {
|
); err != nil {
|
||||||
|
@ -112,17 +161,15 @@ func newInternal(ctx context.Context, client kclient.Client, cfg Configuration)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &implementation{
|
return &implementation{
|
||||||
cfg: cfg,
|
cfg: cfg,
|
||||||
client: client,
|
client: client,
|
||||||
scheduler: scheduler.NewScheduler(client, cfg.Namespace),
|
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type implementation struct {
|
type implementation struct {
|
||||||
cfg Configuration
|
cfg Configuration
|
||||||
|
|
||||||
client kclient.Client
|
client kclient.Client
|
||||||
scheduler scheduler.Scheduler
|
|
||||||
|
|
||||||
pbSchedulerV1.UnimplementedSchedulerV1Server
|
pbSchedulerV1.UnimplementedSchedulerV1Server
|
||||||
}
|
}
|
||||||
|
@ -138,367 +185,3 @@ func (i *implementation) Register(registrar *grpc.Server) {
|
||||||
func (i *implementation) Health() svc.HealthState {
|
func (i *implementation) Health() svc.HealthState {
|
||||||
return svc.Healthy
|
return svc.Healthy
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *implementation) CreateBatchJob(ctx context.Context, request *pbSchedulerV1.CreateBatchJobRequest) (*pbSchedulerV1.CreateBatchJobResponse, error) {
|
|
||||||
if request == nil {
|
|
||||||
return nil, errors.Errorf("Request is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
rendered, profiles, err := i.scheduler.Render(ctx, request.GetSpec())
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
rendered.Spec.RestartPolicy = core.RestartPolicyNever
|
|
||||||
|
|
||||||
var spec batch.Job
|
|
||||||
|
|
||||||
spec.Namespace = i.cfg.Namespace
|
|
||||||
|
|
||||||
if meta := request.GetSpec().GetMetadata(); meta != nil {
|
|
||||||
if util.TypeOrDefault(meta.GenerateName, false) {
|
|
||||||
spec.GenerateName = meta.Name
|
|
||||||
} else {
|
|
||||||
spec.Name = meta.Name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
spec.Spec.Template = *rendered
|
|
||||||
|
|
||||||
if batchJob := request.GetBatchJob(); batchJob != nil {
|
|
||||||
if v := batchJob.Completions; v != nil {
|
|
||||||
spec.Spec.Completions = v
|
|
||||||
}
|
|
||||||
|
|
||||||
if v := batchJob.Parallelism; v != nil {
|
|
||||||
spec.Spec.Parallelism = v
|
|
||||||
}
|
|
||||||
|
|
||||||
if v := batchJob.BackoffLimit; v != nil {
|
|
||||||
spec.Spec.BackoffLimit = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if batchJobSpec := request.GetSpec(); batchJobSpec != nil {
|
|
||||||
if job := batchJobSpec.Job; job != nil {
|
|
||||||
spec.Labels = job.Labels
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
job, err := i.client.Kubernetes().BatchV1().Jobs(i.cfg.Namespace).Create(ctx, &spec, meta.CreateOptions{})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &pbSchedulerV1.CreateBatchJobResponse{
|
|
||||||
Name: job.Name,
|
|
||||||
Profiles: profiles,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *implementation) GetBatchJob(ctx context.Context, request *pbSchedulerV1.GetBatchJobRequest) (*pbSchedulerV1.GetBatchJobResponse, error) {
|
|
||||||
if request == nil {
|
|
||||||
return nil, errors.Errorf("Request is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
job, err := i.client.Kubernetes().BatchV1().Jobs(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{})
|
|
||||||
if err != nil {
|
|
||||||
if kerrors.IsNotFound(err) {
|
|
||||||
return &pbSchedulerV1.GetBatchJobResponse{
|
|
||||||
Exists: false,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &pbSchedulerV1.GetBatchJobResponse{
|
|
||||||
Exists: true,
|
|
||||||
|
|
||||||
BatchJob: &pbSchedulerV1.BatchJob{
|
|
||||||
Spec: &pbSchedulerV1.BatchJobSpec{
|
|
||||||
Parallelism: job.Spec.Parallelism,
|
|
||||||
Completions: job.Spec.Completions,
|
|
||||||
BackoffLimit: job.Spec.BackoffLimit,
|
|
||||||
},
|
|
||||||
Status: &pbSchedulerV1.BatchJobStatus{
|
|
||||||
Active: job.Status.Active,
|
|
||||||
Succeeded: job.Status.Succeeded,
|
|
||||||
Failed: job.Status.Failed,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *implementation) DeleteBatchJob(ctx context.Context, request *pbSchedulerV1.DeleteBatchJobRequest) (*pbSchedulerV1.DeleteBatchJobResponse, error) {
|
|
||||||
if request == nil {
|
|
||||||
return nil, errors.Errorf("Request is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
var d meta.DeleteOptions
|
|
||||||
|
|
||||||
if v := request.DeleteChildPods; v != nil {
|
|
||||||
if *v {
|
|
||||||
d.PropagationPolicy = util.NewType(meta.DeletePropagationBackground)
|
|
||||||
} else {
|
|
||||||
d.PropagationPolicy = util.NewType(meta.DeletePropagationOrphan)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
err := i.client.Kubernetes().BatchV1().Jobs(i.cfg.Namespace).Delete(ctx, request.GetName(), d)
|
|
||||||
if err != nil {
|
|
||||||
if kerrors.IsNotFound(err) {
|
|
||||||
return &pbSchedulerV1.DeleteBatchJobResponse{
|
|
||||||
Exists: false,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &pbSchedulerV1.DeleteBatchJobResponse{Exists: true}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *implementation) ListBatchJob(ctx context.Context, request *pbSchedulerV1.ListBatchJobRequest) (*pbSchedulerV1.ListBatchJobResponse, error) {
|
|
||||||
if request == nil {
|
|
||||||
return nil, errors.Errorf("Request is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
objects, err := kubernetes.ListObjects[*batch.JobList, *batch.Job](ctx, i.client.Kubernetes().BatchV1().Jobs(i.cfg.Namespace), func(result *batch.JobList) []*batch.Job {
|
|
||||||
r := make([]*batch.Job, len(result.Items))
|
|
||||||
|
|
||||||
for id := range result.Items {
|
|
||||||
r[id] = result.Items[id].DeepCopy()
|
|
||||||
}
|
|
||||||
|
|
||||||
return r
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &pbSchedulerV1.ListBatchJobResponse{
|
|
||||||
BatchJobs: kubernetes.Extract(objects, func(in *batch.Job) string {
|
|
||||||
return in.GetName()
|
|
||||||
}),
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *implementation) CreateCronJob(ctx context.Context, request *pbSchedulerV1.CreateCronJobRequest) (*pbSchedulerV1.CreateCronJobResponse, error) {
|
|
||||||
if request == nil {
|
|
||||||
return nil, errors.Errorf("Request is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
rendered, profiles, err := i.scheduler.Render(ctx, request.GetSpec())
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
rendered.Spec.RestartPolicy = core.RestartPolicyNever
|
|
||||||
|
|
||||||
var spec batch.CronJob
|
|
||||||
|
|
||||||
spec.Namespace = i.cfg.Namespace
|
|
||||||
|
|
||||||
if meta := request.GetSpec().GetMetadata(); meta != nil {
|
|
||||||
if util.TypeOrDefault(meta.GenerateName, false) {
|
|
||||||
spec.GenerateName = meta.Name
|
|
||||||
} else {
|
|
||||||
spec.Name = meta.Name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
spec.Spec.JobTemplate.Spec.Template = *rendered
|
|
||||||
|
|
||||||
if cronJob := request.GetCronJob(); cronJob != nil {
|
|
||||||
spec.Spec.Schedule = cronJob.Schedule
|
|
||||||
|
|
||||||
if batchJob := cronJob.GetJob(); batchJob != nil {
|
|
||||||
if v := batchJob.Completions; v != nil {
|
|
||||||
spec.Spec.JobTemplate.Spec.Completions = v
|
|
||||||
}
|
|
||||||
|
|
||||||
if v := batchJob.Parallelism; v != nil {
|
|
||||||
spec.Spec.JobTemplate.Spec.Parallelism = v
|
|
||||||
}
|
|
||||||
|
|
||||||
if v := batchJob.BackoffLimit; v != nil {
|
|
||||||
spec.Spec.JobTemplate.Spec.BackoffLimit = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if batchJobSpec := request.GetSpec(); batchJobSpec != nil {
|
|
||||||
if job := batchJobSpec.Job; job != nil {
|
|
||||||
spec.Labels = job.Labels
|
|
||||||
spec.Spec.JobTemplate.Labels = job.Labels
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
job, err := i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Create(ctx, &spec, meta.CreateOptions{})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &pbSchedulerV1.CreateCronJobResponse{
|
|
||||||
Name: job.Name,
|
|
||||||
Profiles: profiles,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *implementation) GetCronJob(ctx context.Context, request *pbSchedulerV1.GetCronJobRequest) (*pbSchedulerV1.GetCronJobResponse, error) {
|
|
||||||
if request == nil {
|
|
||||||
return nil, errors.Errorf("Request is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
job, err := i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{})
|
|
||||||
if err != nil {
|
|
||||||
if kerrors.IsNotFound(err) {
|
|
||||||
return &pbSchedulerV1.GetCronJobResponse{
|
|
||||||
Exists: false,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &pbSchedulerV1.GetCronJobResponse{
|
|
||||||
Exists: true,
|
|
||||||
|
|
||||||
CronJob: &pbSchedulerV1.CronJob{
|
|
||||||
Spec: &pbSchedulerV1.CronJobSpec{
|
|
||||||
Schedule: job.Spec.Schedule,
|
|
||||||
|
|
||||||
Job: &pbSchedulerV1.BatchJobSpec{
|
|
||||||
Parallelism: job.Spec.JobTemplate.Spec.Parallelism,
|
|
||||||
Completions: job.Spec.JobTemplate.Spec.Completions,
|
|
||||||
BackoffLimit: job.Spec.JobTemplate.Spec.BackoffLimit,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
BatchJobs: kubernetes.Extract(job.Status.Active, func(in core.ObjectReference) string {
|
|
||||||
return in.Name
|
|
||||||
}),
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *implementation) UpdateCronJob(ctx context.Context, request *pbSchedulerV1.UpdateCronJobRequest) (*pbSchedulerV1.UpdateCronJobResponse, error) {
|
|
||||||
if request == nil {
|
|
||||||
return nil, errors.Errorf("Request is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
job, err := i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Get(ctx, request.GetName(), meta.GetOptions{})
|
|
||||||
if err != nil {
|
|
||||||
if kerrors.IsNotFound(err) {
|
|
||||||
return &pbSchedulerV1.UpdateCronJobResponse{
|
|
||||||
Exists: false,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if cronJob := request.GetSpec(); cronJob != nil {
|
|
||||||
job.Spec.Schedule = cronJob.Schedule
|
|
||||||
|
|
||||||
if batchJob := cronJob.GetJob(); batchJob != nil {
|
|
||||||
if v := batchJob.Completions; v != nil {
|
|
||||||
job.Spec.JobTemplate.Spec.Completions = v
|
|
||||||
}
|
|
||||||
|
|
||||||
if v := batchJob.Parallelism; v != nil {
|
|
||||||
job.Spec.JobTemplate.Spec.Parallelism = v
|
|
||||||
}
|
|
||||||
|
|
||||||
if v := batchJob.BackoffLimit; v != nil {
|
|
||||||
job.Spec.JobTemplate.Spec.BackoffLimit = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
job, err = i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Update(ctx, job, meta.UpdateOptions{})
|
|
||||||
if err != nil {
|
|
||||||
if kerrors.IsNotFound(err) {
|
|
||||||
return &pbSchedulerV1.UpdateCronJobResponse{
|
|
||||||
Exists: false,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &pbSchedulerV1.UpdateCronJobResponse{
|
|
||||||
Exists: true,
|
|
||||||
|
|
||||||
CronJob: &pbSchedulerV1.CronJob{
|
|
||||||
Spec: &pbSchedulerV1.CronJobSpec{
|
|
||||||
Schedule: job.Spec.Schedule,
|
|
||||||
|
|
||||||
Job: &pbSchedulerV1.BatchJobSpec{
|
|
||||||
Parallelism: job.Spec.JobTemplate.Spec.Parallelism,
|
|
||||||
Completions: job.Spec.JobTemplate.Spec.Completions,
|
|
||||||
BackoffLimit: job.Spec.JobTemplate.Spec.BackoffLimit,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *implementation) ListCronJob(ctx context.Context, request *pbSchedulerV1.ListCronJobRequest) (*pbSchedulerV1.ListCronJobResponse, error) {
|
|
||||||
if request == nil {
|
|
||||||
return nil, errors.Errorf("Request is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
objects, err := kubernetes.ListObjects[*batch.CronJobList, *batch.CronJob](ctx, i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace), func(result *batch.CronJobList) []*batch.CronJob {
|
|
||||||
r := make([]*batch.CronJob, len(result.Items))
|
|
||||||
|
|
||||||
for id := range result.Items {
|
|
||||||
r[id] = result.Items[id].DeepCopy()
|
|
||||||
}
|
|
||||||
|
|
||||||
return r
|
|
||||||
})
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &pbSchedulerV1.ListCronJobResponse{
|
|
||||||
CronJobs: kubernetes.Extract(objects, func(in *batch.CronJob) string {
|
|
||||||
return in.GetName()
|
|
||||||
}),
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *implementation) DeleteCronJob(ctx context.Context, request *pbSchedulerV1.DeleteCronJobRequest) (*pbSchedulerV1.DeleteCronJobResponse, error) {
|
|
||||||
if request == nil {
|
|
||||||
return nil, errors.Errorf("Request is nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
var d meta.DeleteOptions
|
|
||||||
|
|
||||||
if v := request.DeleteChildPods; v != nil {
|
|
||||||
if *v {
|
|
||||||
d.PropagationPolicy = util.NewType(meta.DeletePropagationBackground)
|
|
||||||
} else {
|
|
||||||
d.PropagationPolicy = util.NewType(meta.DeletePropagationOrphan)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
err := i.client.Kubernetes().BatchV1().CronJobs(i.cfg.Namespace).Delete(ctx, request.GetName(), d)
|
|
||||||
if err != nil {
|
|
||||||
if kerrors.IsNotFound(err) {
|
|
||||||
return &pbSchedulerV1.DeleteCronJobResponse{
|
|
||||||
Exists: false,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &pbSchedulerV1.DeleteCronJobResponse{Exists: true}, nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -229,6 +229,42 @@ func Test_GenerateCRValidationSchemas(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"scheduler-pod": {
|
||||||
|
fmt.Sprintf("%s/pkg/apis/scheduler/v1alpha1", root): {
|
||||||
|
"v1beta1": {
|
||||||
|
objects: map[string]interface{}{
|
||||||
|
"spec": schedulerApi.ArangoSchedulerPod{}.Spec,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"scheduler-deployment": {
|
||||||
|
fmt.Sprintf("%s/pkg/apis/scheduler/v1alpha1", root): {
|
||||||
|
"v1beta1": {
|
||||||
|
objects: map[string]interface{}{
|
||||||
|
"spec": schedulerApi.ArangoSchedulerDeployment{}.Spec,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"scheduler-batchjob": {
|
||||||
|
fmt.Sprintf("%s/pkg/apis/scheduler/v1alpha1", root): {
|
||||||
|
"v1beta1": {
|
||||||
|
objects: map[string]interface{}{
|
||||||
|
"spec": schedulerApi.ArangoSchedulerBatchJob{}.Spec,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"scheduler-cronjob": {
|
||||||
|
fmt.Sprintf("%s/pkg/apis/scheduler/v1alpha1", root): {
|
||||||
|
"v1beta1": {
|
||||||
|
objects: map[string]interface{}{
|
||||||
|
"spec": schedulerApi.ArangoSchedulerCronJob{}.Spec,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"ml-extension": {
|
"ml-extension": {
|
||||||
fmt.Sprintf("%s/pkg/apis/ml/v1alpha1", root): {
|
fmt.Sprintf("%s/pkg/apis/ml/v1alpha1", root): {
|
||||||
"v1alpha1": {
|
"v1alpha1": {
|
||||||
|
|
|
@ -25,5 +25,21 @@ const (
|
||||||
ArangoProfileResourceKind = "ArangoProfile"
|
ArangoProfileResourceKind = "ArangoProfile"
|
||||||
ArangoProfileResourcePlural = "arangoprofiles"
|
ArangoProfileResourcePlural = "arangoprofiles"
|
||||||
|
|
||||||
|
PodCRDName = PodResourcePlural + "." + ArangoSchedulerGroupName
|
||||||
|
PodResourceKind = "ArangoSchedulerPod"
|
||||||
|
PodResourcePlural = "arangoschedulerpods"
|
||||||
|
|
||||||
|
DeploymentCRDName = DeploymentResourcePlural + "." + ArangoSchedulerGroupName
|
||||||
|
DeploymentResourceKind = "ArangoSchedulerDeployment"
|
||||||
|
DeploymentResourcePlural = "arangoschedulerdeployments"
|
||||||
|
|
||||||
|
BatchJobCRDName = BatchJobResourcePlural + "." + ArangoSchedulerGroupName
|
||||||
|
BatchJobResourceKind = "ArangoSchedulerBatchJob"
|
||||||
|
BatchJobResourcePlural = "arangoschedulerbatchjobs"
|
||||||
|
|
||||||
|
CronJobCRDName = CronJobResourcePlural + "." + ArangoSchedulerGroupName
|
||||||
|
CronJobResourceKind = "ArangoSchedulerCronJob"
|
||||||
|
CronJobResourcePlural = "arangoschedulercronjobs"
|
||||||
|
|
||||||
ArangoSchedulerGroupName = "scheduler.arangodb.com"
|
ArangoSchedulerGroupName = "scheduler.arangodb.com"
|
||||||
)
|
)
|
||||||
|
|
|
@ -20,7 +20,11 @@
|
||||||
|
|
||||||
package v1beta1
|
package v1beta1
|
||||||
|
|
||||||
import meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
import (
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler"
|
||||||
|
)
|
||||||
|
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
@ -44,6 +48,18 @@ type ArangoProfile struct {
|
||||||
Status ProfileStatus `json:"status"`
|
Status ProfileStatus `json:"status"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AsOwner creates an OwnerReference for the given ArangoSchedulerBatchJob
|
||||||
|
func (a *ArangoProfile) AsOwner() meta.OwnerReference {
|
||||||
|
trueVar := true
|
||||||
|
return meta.OwnerReference{
|
||||||
|
APIVersion: SchemeGroupVersion.String(),
|
||||||
|
Kind: scheduler.ArangoProfileResourceKind,
|
||||||
|
Name: a.Name,
|
||||||
|
UID: a.UID,
|
||||||
|
Controller: &trueVar,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (a *ArangoProfile) GetStatus() ProfileStatus {
|
func (a *ArangoProfile) GetStatus() ProfileStatus {
|
||||||
return a.Status
|
return a.Status
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,19 +55,19 @@ func (p ProfileTemplates) Merge() *ProfileTemplate {
|
||||||
func (p ProfileTemplates) RenderOnTemplate(pod *core.PodTemplateSpec) error {
|
func (p ProfileTemplates) RenderOnTemplate(pod *core.PodTemplateSpec) error {
|
||||||
t := p.Merge()
|
t := p.Merge()
|
||||||
|
|
||||||
// Apply Pod Spec
|
// Apply ArangoSchedulerPod Spec
|
||||||
if err := t.GetPod().Apply(pod); err != nil {
|
if err := t.GetPod().Apply(pod); err != nil {
|
||||||
return errors.Wrapf(err, "Error while rendering Pod")
|
return errors.Wrapf(err, "Error while rendering ArangoSchedulerPod")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply Generic Containers Spec
|
// Apply Generic Containers Spec
|
||||||
if err := t.GetContainer().ApplyGeneric(pod); err != nil {
|
if err := t.GetContainer().ApplyGeneric(pod); err != nil {
|
||||||
return errors.Wrapf(err, "Error while rendering Pod")
|
return errors.Wrapf(err, "Error while rendering ArangoSchedulerPod")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply Containers Spec
|
// Apply Containers Spec
|
||||||
if err := t.GetContainer().ApplyContainers(pod); err != nil {
|
if err := t.GetContainer().ApplyContainers(pod); err != nil {
|
||||||
return errors.Wrapf(err, "Error while rendering Pod")
|
return errors.Wrapf(err, "Error while rendering ArangoSchedulerPod")
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -50,6 +50,14 @@ func addKnownTypes(s *runtime.Scheme) error {
|
||||||
s.AddKnownTypes(SchemeGroupVersion,
|
s.AddKnownTypes(SchemeGroupVersion,
|
||||||
&ArangoProfile{},
|
&ArangoProfile{},
|
||||||
&ArangoProfileList{},
|
&ArangoProfileList{},
|
||||||
|
&ArangoSchedulerPod{},
|
||||||
|
&ArangoSchedulerPodList{},
|
||||||
|
&ArangoSchedulerDeployment{},
|
||||||
|
&ArangoSchedulerDeploymentList{},
|
||||||
|
&ArangoSchedulerBatchJob{},
|
||||||
|
&ArangoSchedulerBatchJobList{},
|
||||||
|
&ArangoSchedulerCronJob{},
|
||||||
|
&ArangoSchedulerCronJobList{},
|
||||||
)
|
)
|
||||||
meta.AddToGroupVersion(s, SchemeGroupVersion)
|
meta.AddToGroupVersion(s, SchemeGroupVersion)
|
||||||
return nil
|
return nil
|
||||||
|
|
31
pkg/apis/scheduler/v1beta1/types.go
Normal file
31
pkg/apis/scheduler/v1beta1/types.go
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
|
||||||
|
//
|
||||||
|
|
||||||
|
package v1beta1
|
||||||
|
|
||||||
|
import sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||||
|
|
||||||
|
type ArangoSchedulerStatusMetadata struct {
|
||||||
|
// Object keeps the information about object
|
||||||
|
Object *sharedApi.Object `json:"object,omitempty"`
|
||||||
|
|
||||||
|
// Profiles keeps the information about applied profiles
|
||||||
|
Profiles []string `json:"profiles,omitempty"`
|
||||||
|
}
|
83
pkg/apis/scheduler/v1beta1/types_batchjob.go
Normal file
83
pkg/apis/scheduler/v1beta1/types_batchjob.go
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
//
|
||||||
|
// 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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
batch "k8s.io/api/batch/v1"
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler"
|
||||||
|
)
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobList is a list of BatchJobs.
|
||||||
|
type ArangoSchedulerBatchJobList struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Items []ArangoSchedulerBatchJob `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +genclient
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJob wraps batch. ArangoSchedulerBatchJob with profile details
|
||||||
|
type ArangoSchedulerBatchJob struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec ArangoSchedulerBatchJobSpec `json:"spec"`
|
||||||
|
Status ArangoSchedulerBatchJobStatus `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArangoSchedulerBatchJobSpec struct {
|
||||||
|
// Profiles keeps list of the profiles
|
||||||
|
Profiles []string `json:"profiles,omitempty"`
|
||||||
|
|
||||||
|
batch.JobSpec `json:",inline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArangoSchedulerBatchJobStatus struct {
|
||||||
|
ArangoSchedulerStatusMetadata `json:",inline"`
|
||||||
|
|
||||||
|
batch.JobStatus `json:",inline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AsOwner creates an OwnerReference for the given ArangoSchedulerBatchJob
|
||||||
|
func (d *ArangoSchedulerBatchJob) AsOwner() meta.OwnerReference {
|
||||||
|
trueVar := true
|
||||||
|
return meta.OwnerReference{
|
||||||
|
APIVersion: SchemeGroupVersion.String(),
|
||||||
|
Kind: scheduler.BatchJobResourceKind,
|
||||||
|
Name: d.Name,
|
||||||
|
UID: d.UID,
|
||||||
|
Controller: &trueVar,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *ArangoSchedulerBatchJob) GetStatus() ArangoSchedulerBatchJobStatus {
|
||||||
|
return d.Status
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *ArangoSchedulerBatchJob) SetStatus(status ArangoSchedulerBatchJobStatus) {
|
||||||
|
d.Status = status
|
||||||
|
}
|
83
pkg/apis/scheduler/v1beta1/types_cronjob.go
Normal file
83
pkg/apis/scheduler/v1beta1/types_cronjob.go
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
//
|
||||||
|
// 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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
batch "k8s.io/api/batch/v1"
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler"
|
||||||
|
)
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobList is a list of CronJobs.
|
||||||
|
type ArangoSchedulerCronJobList struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Items []ArangoSchedulerCronJob `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +genclient
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJob wraps batch. ArangoSchedulerCronJob with profile details
|
||||||
|
type ArangoSchedulerCronJob struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec ArangoSchedulerCronJobSpec `json:"spec"`
|
||||||
|
Status ArangoSchedulerCronJobStatus `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArangoSchedulerCronJobSpec struct {
|
||||||
|
// Profiles keeps list of the profiles
|
||||||
|
Profiles []string `json:"profiles,omitempty"`
|
||||||
|
|
||||||
|
batch.CronJobSpec `json:",inline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArangoSchedulerCronJobStatus struct {
|
||||||
|
ArangoSchedulerStatusMetadata `json:",inline"`
|
||||||
|
|
||||||
|
batch.CronJobStatus `json:",inline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AsOwner creates an OwnerReference for the given ArangoSchedulerCronJob
|
||||||
|
func (d *ArangoSchedulerCronJob) AsOwner() meta.OwnerReference {
|
||||||
|
trueVar := true
|
||||||
|
return meta.OwnerReference{
|
||||||
|
APIVersion: SchemeGroupVersion.String(),
|
||||||
|
Kind: scheduler.CronJobResourceKind,
|
||||||
|
Name: d.Name,
|
||||||
|
UID: d.UID,
|
||||||
|
Controller: &trueVar,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *ArangoSchedulerCronJob) GetStatus() ArangoSchedulerCronJobStatus {
|
||||||
|
return d.Status
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *ArangoSchedulerCronJob) SetStatus(status ArangoSchedulerCronJobStatus) {
|
||||||
|
d.Status = status
|
||||||
|
}
|
83
pkg/apis/scheduler/v1beta1/types_deployment.go
Normal file
83
pkg/apis/scheduler/v1beta1/types_deployment.go
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
//
|
||||||
|
// 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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
apps "k8s.io/api/apps/v1"
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler"
|
||||||
|
)
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoSchedulerDeploymentList is a list of Deployments.
|
||||||
|
type ArangoSchedulerDeploymentList struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Items []ArangoSchedulerDeployment `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +genclient
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoSchedulerDeployment wraps apps. ArangoSchedulerDeployment with profile details
|
||||||
|
type ArangoSchedulerDeployment struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec ArangoSchedulerDeploymentSpec `json:"spec"`
|
||||||
|
Status ArangoSchedulerDeploymentStatus `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArangoSchedulerDeploymentSpec struct {
|
||||||
|
// Profiles keeps list of the profiles
|
||||||
|
Profiles []string `json:"profiles,omitempty"`
|
||||||
|
|
||||||
|
apps.DeploymentSpec `json:",inline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArangoSchedulerDeploymentStatus struct {
|
||||||
|
ArangoSchedulerStatusMetadata `json:",inline"`
|
||||||
|
|
||||||
|
apps.DeploymentStatus `json:",inline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AsOwner creates an OwnerReference for the given ArangoSchedulerDeployment
|
||||||
|
func (d *ArangoSchedulerDeployment) AsOwner() meta.OwnerReference {
|
||||||
|
trueVar := true
|
||||||
|
return meta.OwnerReference{
|
||||||
|
APIVersion: SchemeGroupVersion.String(),
|
||||||
|
Kind: scheduler.DeploymentResourceKind,
|
||||||
|
Name: d.Name,
|
||||||
|
UID: d.UID,
|
||||||
|
Controller: &trueVar,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *ArangoSchedulerDeployment) GetStatus() ArangoSchedulerDeploymentStatus {
|
||||||
|
return d.Status
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *ArangoSchedulerDeployment) SetStatus(status ArangoSchedulerDeploymentStatus) {
|
||||||
|
d.Status = status
|
||||||
|
}
|
83
pkg/apis/scheduler/v1beta1/types_pod.go
Normal file
83
pkg/apis/scheduler/v1beta1/types_pod.go
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
//
|
||||||
|
// 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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
core "k8s.io/api/core/v1"
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/apis/scheduler"
|
||||||
|
)
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoSchedulerPodList is a list of Pods.
|
||||||
|
type ArangoSchedulerPodList struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Items []ArangoSchedulerPod `json:"items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +genclient
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// ArangoSchedulerPod wraps core. ArangoSchedulerPod with profile details
|
||||||
|
type ArangoSchedulerPod struct {
|
||||||
|
meta.TypeMeta `json:",inline"`
|
||||||
|
meta.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
Spec ArangoSchedulerPodSpec `json:"spec"`
|
||||||
|
Status ArangoSchedulerPodStatus `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArangoSchedulerPodSpec struct {
|
||||||
|
// Profiles keeps list of the profiles
|
||||||
|
Profiles []string `json:"profiles,omitempty"`
|
||||||
|
|
||||||
|
core.PodSpec `json:",inline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArangoSchedulerPodStatus struct {
|
||||||
|
ArangoSchedulerStatusMetadata `json:",inline"`
|
||||||
|
|
||||||
|
core.PodStatus `json:",inline"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AsOwner creates an OwnerReference for the given ArangoSchedulerPod
|
||||||
|
func (d *ArangoSchedulerPod) AsOwner() meta.OwnerReference {
|
||||||
|
trueVar := true
|
||||||
|
return meta.OwnerReference{
|
||||||
|
APIVersion: SchemeGroupVersion.String(),
|
||||||
|
Kind: scheduler.PodResourceKind,
|
||||||
|
Name: d.Name,
|
||||||
|
UID: d.UID,
|
||||||
|
Controller: &trueVar,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *ArangoSchedulerPod) GetStatus() ArangoSchedulerPodStatus {
|
||||||
|
return d.Status
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *ArangoSchedulerPod) SetStatus(status ArangoSchedulerPodStatus) {
|
||||||
|
d.Status = status
|
||||||
|
}
|
435
pkg/apis/scheduler/v1beta1/zz_generated.deepcopy.go
generated
435
pkg/apis/scheduler/v1beta1/zz_generated.deepcopy.go
generated
|
@ -29,7 +29,8 @@ import (
|
||||||
deploymentv1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
deploymentv1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||||
container "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1/container"
|
container "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1/container"
|
||||||
pod "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1/pod"
|
pod "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1/pod"
|
||||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
v1 "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -94,6 +95,436 @@ func (in *ArangoProfileList) DeepCopyObject() runtime.Object {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoSchedulerBatchJob) DeepCopyInto(out *ArangoSchedulerBatchJob) {
|
||||||
|
*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 ArangoSchedulerBatchJob.
|
||||||
|
func (in *ArangoSchedulerBatchJob) DeepCopy() *ArangoSchedulerBatchJob {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerBatchJob)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoSchedulerBatchJob) 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 *ArangoSchedulerBatchJobList) DeepCopyInto(out *ArangoSchedulerBatchJobList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]ArangoSchedulerBatchJob, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerBatchJobList.
|
||||||
|
func (in *ArangoSchedulerBatchJobList) DeepCopy() *ArangoSchedulerBatchJobList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerBatchJobList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoSchedulerBatchJobList) 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 *ArangoSchedulerBatchJobSpec) DeepCopyInto(out *ArangoSchedulerBatchJobSpec) {
|
||||||
|
*out = *in
|
||||||
|
if in.Profiles != nil {
|
||||||
|
in, out := &in.Profiles, &out.Profiles
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
in.JobSpec.DeepCopyInto(&out.JobSpec)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerBatchJobSpec.
|
||||||
|
func (in *ArangoSchedulerBatchJobSpec) DeepCopy() *ArangoSchedulerBatchJobSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerBatchJobSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoSchedulerBatchJobStatus) DeepCopyInto(out *ArangoSchedulerBatchJobStatus) {
|
||||||
|
*out = *in
|
||||||
|
in.ArangoSchedulerStatusMetadata.DeepCopyInto(&out.ArangoSchedulerStatusMetadata)
|
||||||
|
in.JobStatus.DeepCopyInto(&out.JobStatus)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerBatchJobStatus.
|
||||||
|
func (in *ArangoSchedulerBatchJobStatus) DeepCopy() *ArangoSchedulerBatchJobStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerBatchJobStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoSchedulerCronJob) DeepCopyInto(out *ArangoSchedulerCronJob) {
|
||||||
|
*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 ArangoSchedulerCronJob.
|
||||||
|
func (in *ArangoSchedulerCronJob) DeepCopy() *ArangoSchedulerCronJob {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerCronJob)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoSchedulerCronJob) 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 *ArangoSchedulerCronJobList) DeepCopyInto(out *ArangoSchedulerCronJobList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]ArangoSchedulerCronJob, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerCronJobList.
|
||||||
|
func (in *ArangoSchedulerCronJobList) DeepCopy() *ArangoSchedulerCronJobList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerCronJobList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoSchedulerCronJobList) 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 *ArangoSchedulerCronJobSpec) DeepCopyInto(out *ArangoSchedulerCronJobSpec) {
|
||||||
|
*out = *in
|
||||||
|
if in.Profiles != nil {
|
||||||
|
in, out := &in.Profiles, &out.Profiles
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
in.CronJobSpec.DeepCopyInto(&out.CronJobSpec)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerCronJobSpec.
|
||||||
|
func (in *ArangoSchedulerCronJobSpec) DeepCopy() *ArangoSchedulerCronJobSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerCronJobSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoSchedulerCronJobStatus) DeepCopyInto(out *ArangoSchedulerCronJobStatus) {
|
||||||
|
*out = *in
|
||||||
|
in.ArangoSchedulerStatusMetadata.DeepCopyInto(&out.ArangoSchedulerStatusMetadata)
|
||||||
|
in.CronJobStatus.DeepCopyInto(&out.CronJobStatus)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerCronJobStatus.
|
||||||
|
func (in *ArangoSchedulerCronJobStatus) DeepCopy() *ArangoSchedulerCronJobStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerCronJobStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoSchedulerDeployment) DeepCopyInto(out *ArangoSchedulerDeployment) {
|
||||||
|
*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 ArangoSchedulerDeployment.
|
||||||
|
func (in *ArangoSchedulerDeployment) DeepCopy() *ArangoSchedulerDeployment {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerDeployment)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoSchedulerDeployment) 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 *ArangoSchedulerDeploymentList) DeepCopyInto(out *ArangoSchedulerDeploymentList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]ArangoSchedulerDeployment, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerDeploymentList.
|
||||||
|
func (in *ArangoSchedulerDeploymentList) DeepCopy() *ArangoSchedulerDeploymentList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerDeploymentList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoSchedulerDeploymentList) 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 *ArangoSchedulerDeploymentSpec) DeepCopyInto(out *ArangoSchedulerDeploymentSpec) {
|
||||||
|
*out = *in
|
||||||
|
if in.Profiles != nil {
|
||||||
|
in, out := &in.Profiles, &out.Profiles
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
in.DeploymentSpec.DeepCopyInto(&out.DeploymentSpec)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerDeploymentSpec.
|
||||||
|
func (in *ArangoSchedulerDeploymentSpec) DeepCopy() *ArangoSchedulerDeploymentSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerDeploymentSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoSchedulerDeploymentStatus) DeepCopyInto(out *ArangoSchedulerDeploymentStatus) {
|
||||||
|
*out = *in
|
||||||
|
in.ArangoSchedulerStatusMetadata.DeepCopyInto(&out.ArangoSchedulerStatusMetadata)
|
||||||
|
in.DeploymentStatus.DeepCopyInto(&out.DeploymentStatus)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerDeploymentStatus.
|
||||||
|
func (in *ArangoSchedulerDeploymentStatus) DeepCopy() *ArangoSchedulerDeploymentStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerDeploymentStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoSchedulerPod) DeepCopyInto(out *ArangoSchedulerPod) {
|
||||||
|
*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 ArangoSchedulerPod.
|
||||||
|
func (in *ArangoSchedulerPod) DeepCopy() *ArangoSchedulerPod {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerPod)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoSchedulerPod) 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 *ArangoSchedulerPodList) DeepCopyInto(out *ArangoSchedulerPodList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]ArangoSchedulerPod, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerPodList.
|
||||||
|
func (in *ArangoSchedulerPodList) DeepCopy() *ArangoSchedulerPodList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerPodList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *ArangoSchedulerPodList) 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 *ArangoSchedulerPodSpec) DeepCopyInto(out *ArangoSchedulerPodSpec) {
|
||||||
|
*out = *in
|
||||||
|
if in.Profiles != nil {
|
||||||
|
in, out := &in.Profiles, &out.Profiles
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
in.PodSpec.DeepCopyInto(&out.PodSpec)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerPodSpec.
|
||||||
|
func (in *ArangoSchedulerPodSpec) DeepCopy() *ArangoSchedulerPodSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerPodSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoSchedulerPodStatus) DeepCopyInto(out *ArangoSchedulerPodStatus) {
|
||||||
|
*out = *in
|
||||||
|
in.ArangoSchedulerStatusMetadata.DeepCopyInto(&out.ArangoSchedulerStatusMetadata)
|
||||||
|
in.PodStatus.DeepCopyInto(&out.PodStatus)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerPodStatus.
|
||||||
|
func (in *ArangoSchedulerPodStatus) DeepCopy() *ArangoSchedulerPodStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerPodStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ArangoSchedulerStatusMetadata) DeepCopyInto(out *ArangoSchedulerStatusMetadata) {
|
||||||
|
*out = *in
|
||||||
|
if in.Object != nil {
|
||||||
|
in, out := &in.Object, &out.Object
|
||||||
|
*out = new(v1.Object)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.Profiles != nil {
|
||||||
|
in, out := &in.Profiles, &out.Profiles
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArangoSchedulerStatusMetadata.
|
||||||
|
func (in *ArangoSchedulerStatusMetadata) DeepCopy() *ArangoSchedulerStatusMetadata {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ArangoSchedulerStatusMetadata)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *ProfileAcceptedTemplate) DeepCopyInto(out *ProfileAcceptedTemplate) {
|
func (in *ProfileAcceptedTemplate) DeepCopyInto(out *ProfileAcceptedTemplate) {
|
||||||
*out = *in
|
*out = *in
|
||||||
|
@ -148,7 +579,7 @@ func (in *ProfileSelectors) DeepCopyInto(out *ProfileSelectors) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Label != nil {
|
if in.Label != nil {
|
||||||
in, out := &in.Label, &out.Label
|
in, out := &in.Label, &out.Label
|
||||||
*out = new(v1.LabelSelector)
|
*out = new(metav1.LabelSelector)
|
||||||
(*in).DeepCopyInto(*out)
|
(*in).DeepCopyInto(*out)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
|
@ -87,6 +87,10 @@ func AllDefinitions() []Definition {
|
||||||
|
|
||||||
// Scheduler
|
// Scheduler
|
||||||
SchedulerProfileDefinitionWithOptions(),
|
SchedulerProfileDefinitionWithOptions(),
|
||||||
|
SchedulerPodDefinitionWithOptions(),
|
||||||
|
SchedulerDeploymentDefinitionWithOptions(),
|
||||||
|
SchedulerBatchJobDefinitionWithOptions(),
|
||||||
|
SchedulerCronJobDefinitionWithOptions(),
|
||||||
|
|
||||||
// Analytics
|
// Analytics
|
||||||
AnalyticsGAEDefinitionWithOptions(),
|
AnalyticsGAEDefinitionWithOptions(),
|
||||||
|
|
|
@ -92,6 +92,10 @@ func Test_CRD(t *testing.T) {
|
||||||
{ml.ArangoMLCronJobCRDName, MLCronJobDefinitionWithOptions},
|
{ml.ArangoMLCronJobCRDName, MLCronJobDefinitionWithOptions},
|
||||||
{ml.ArangoMLBatchJobCRDName, MLBatchJobDefinitionWithOptions},
|
{ml.ArangoMLBatchJobCRDName, MLBatchJobDefinitionWithOptions},
|
||||||
{scheduler.ArangoProfileCRDName, SchedulerProfileDefinitionWithOptions},
|
{scheduler.ArangoProfileCRDName, SchedulerProfileDefinitionWithOptions},
|
||||||
|
{scheduler.PodCRDName, SchedulerPodDefinitionWithOptions},
|
||||||
|
{scheduler.DeploymentCRDName, SchedulerDeploymentDefinitionWithOptions},
|
||||||
|
{scheduler.BatchJobCRDName, SchedulerBatchJobDefinitionWithOptions},
|
||||||
|
{scheduler.CronJobCRDName, SchedulerCronJobDefinitionWithOptions},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
|
@ -143,6 +147,10 @@ func Test_CRDGetters(t *testing.T) {
|
||||||
ReplicationDeploymentReplicationWithOptions,
|
ReplicationDeploymentReplicationWithOptions,
|
||||||
StorageLocalStorageWithOptions,
|
StorageLocalStorageWithOptions,
|
||||||
SchedulerProfileWithOptions,
|
SchedulerProfileWithOptions,
|
||||||
|
SchedulerPodWithOptions,
|
||||||
|
SchedulerDeploymentWithOptions,
|
||||||
|
SchedulerBatchJobWithOptions,
|
||||||
|
SchedulerCronJobWithOptions,
|
||||||
AnalyticsGAEWithOptions,
|
AnalyticsGAEWithOptions,
|
||||||
NetworkingRouteWithOptions,
|
NetworkingRouteWithOptions,
|
||||||
}
|
}
|
||||||
|
|
51
pkg/crd/crds/scheduler-batchjob.go
Normal file
51
pkg/crd/crds/scheduler-batchjob.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 SchedulerBatchJobWithOptions(opts ...func(*CRDOptions)) *apiextensions.CustomResourceDefinition {
|
||||||
|
return getCRD(SchedulerBatchJobDefinitionData(), opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SchedulerBatchJobDefinitionWithOptions(opts ...func(*CRDOptions)) Definition {
|
||||||
|
return Definition{
|
||||||
|
DefinitionData: SchedulerBatchJobDefinitionData(),
|
||||||
|
CRD: SchedulerBatchJobWithOptions(opts...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func SchedulerBatchJobDefinitionData() DefinitionData {
|
||||||
|
return DefinitionData{
|
||||||
|
definition: schedulerBatchJob,
|
||||||
|
schemaDefinition: schedulerBatchJobSchemaRaw,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:embed scheduler-batchjob.yaml
|
||||||
|
var schedulerBatchJob []byte
|
||||||
|
|
||||||
|
//go:embed scheduler-batchjob.schema.generated.yaml
|
||||||
|
var schedulerBatchJobSchemaRaw []byte
|
2985
pkg/crd/crds/scheduler-batchjob.schema.generated.yaml
Normal file
2985
pkg/crd/crds/scheduler-batchjob.schema.generated.yaml
Normal file
File diff suppressed because it is too large
Load diff
22
pkg/crd/crds/scheduler-batchjob.yaml
Normal file
22
pkg/crd/crds/scheduler-batchjob.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerbatchjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerBatchJob
|
||||||
|
listKind: ArangoSchedulerBatchJobList
|
||||||
|
plural: arangoschedulerbatchjobs
|
||||||
|
singular: arangoschedulerbatchjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
51
pkg/crd/crds/scheduler-cronjob.go
Normal file
51
pkg/crd/crds/scheduler-cronjob.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 SchedulerCronJobWithOptions(opts ...func(*CRDOptions)) *apiextensions.CustomResourceDefinition {
|
||||||
|
return getCRD(SchedulerCronJobDefinitionData(), opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SchedulerCronJobDefinitionWithOptions(opts ...func(*CRDOptions)) Definition {
|
||||||
|
return Definition{
|
||||||
|
DefinitionData: SchedulerCronJobDefinitionData(),
|
||||||
|
CRD: SchedulerCronJobWithOptions(opts...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func SchedulerCronJobDefinitionData() DefinitionData {
|
||||||
|
return DefinitionData{
|
||||||
|
definition: schedulerCronJob,
|
||||||
|
schemaDefinition: schedulerCronJobSchemaRaw,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:embed scheduler-cronjob.yaml
|
||||||
|
var schedulerCronJob []byte
|
||||||
|
|
||||||
|
//go:embed scheduler-cronjob.schema.generated.yaml
|
||||||
|
var schedulerCronJobSchemaRaw []byte
|
3084
pkg/crd/crds/scheduler-cronjob.schema.generated.yaml
Normal file
3084
pkg/crd/crds/scheduler-cronjob.schema.generated.yaml
Normal file
File diff suppressed because it is too large
Load diff
22
pkg/crd/crds/scheduler-cronjob.yaml
Normal file
22
pkg/crd/crds/scheduler-cronjob.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulercronjobs.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerCronJob
|
||||||
|
listKind: ArangoSchedulerCronJobList
|
||||||
|
plural: arangoschedulercronjobs
|
||||||
|
singular: arangoschedulercronjob
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
51
pkg/crd/crds/scheduler-deployment.go
Normal file
51
pkg/crd/crds/scheduler-deployment.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 SchedulerDeploymentWithOptions(opts ...func(*CRDOptions)) *apiextensions.CustomResourceDefinition {
|
||||||
|
return getCRD(SchedulerDeploymentDefinitionData(), opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SchedulerDeploymentDefinitionWithOptions(opts ...func(*CRDOptions)) Definition {
|
||||||
|
return Definition{
|
||||||
|
DefinitionData: SchedulerDeploymentDefinitionData(),
|
||||||
|
CRD: SchedulerDeploymentWithOptions(opts...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func SchedulerDeploymentDefinitionData() DefinitionData {
|
||||||
|
return DefinitionData{
|
||||||
|
definition: schedulerDeployment,
|
||||||
|
schemaDefinition: schedulerDeploymentSchemaRaw,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:embed scheduler-deployment.yaml
|
||||||
|
var schedulerDeployment []byte
|
||||||
|
|
||||||
|
//go:embed scheduler-deployment.schema.generated.yaml
|
||||||
|
var schedulerDeploymentSchemaRaw []byte
|
2953
pkg/crd/crds/scheduler-deployment.schema.generated.yaml
Normal file
2953
pkg/crd/crds/scheduler-deployment.schema.generated.yaml
Normal file
File diff suppressed because it is too large
Load diff
22
pkg/crd/crds/scheduler-deployment.yaml
Normal file
22
pkg/crd/crds/scheduler-deployment.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerdeployments.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerDeployment
|
||||||
|
listKind: ArangoSchedulerDeploymentList
|
||||||
|
plural: arangoschedulerdeployments
|
||||||
|
singular: arangoschedulerdeployment
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
51
pkg/crd/crds/scheduler-pod.go
Normal file
51
pkg/crd/crds/scheduler-pod.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 SchedulerPodWithOptions(opts ...func(*CRDOptions)) *apiextensions.CustomResourceDefinition {
|
||||||
|
return getCRD(SchedulerPodDefinitionData(), opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SchedulerPodDefinitionWithOptions(opts ...func(*CRDOptions)) Definition {
|
||||||
|
return Definition{
|
||||||
|
DefinitionData: SchedulerPodDefinitionData(),
|
||||||
|
CRD: SchedulerPodWithOptions(opts...),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func SchedulerPodDefinitionData() DefinitionData {
|
||||||
|
return DefinitionData{
|
||||||
|
definition: schedulerPod,
|
||||||
|
schemaDefinition: schedulerPodSchemaRaw,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:embed scheduler-pod.yaml
|
||||||
|
var schedulerPod []byte
|
||||||
|
|
||||||
|
//go:embed scheduler-pod.schema.generated.yaml
|
||||||
|
var schedulerPodSchemaRaw []byte
|
2823
pkg/crd/crds/scheduler-pod.schema.generated.yaml
Normal file
2823
pkg/crd/crds/scheduler-pod.schema.generated.yaml
Normal file
File diff suppressed because it is too large
Load diff
22
pkg/crd/crds/scheduler-pod.yaml
Normal file
22
pkg/crd/crds/scheduler-pod.yaml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: arangoschedulerpods.scheduler.arangodb.com
|
||||||
|
spec:
|
||||||
|
group: scheduler.arangodb.com
|
||||||
|
names:
|
||||||
|
kind: ArangoSchedulerPod
|
||||||
|
listKind: ArangoSchedulerPodList
|
||||||
|
plural: arangoschedulerpods
|
||||||
|
singular: arangoschedulerpod
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1beta1
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
58
pkg/crd/scheduling.go
Normal file
58
pkg/crd/scheduling.go
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
//
|
||||||
|
// 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() {
|
||||||
|
registerCRDWithPanic(func(opts *crds.CRDOptions) crds.Definition {
|
||||||
|
return crds.SchedulerProfileDefinitionWithOptions(opts.AsFunc())
|
||||||
|
}, &crds.CRDOptions{
|
||||||
|
WithSchema: true,
|
||||||
|
WithPreserve: false,
|
||||||
|
})
|
||||||
|
registerCRDWithPanic(func(opts *crds.CRDOptions) crds.Definition {
|
||||||
|
return crds.SchedulerPodDefinitionWithOptions(opts.AsFunc())
|
||||||
|
}, &crds.CRDOptions{
|
||||||
|
WithSchema: true,
|
||||||
|
WithPreserve: false,
|
||||||
|
})
|
||||||
|
registerCRDWithPanic(func(opts *crds.CRDOptions) crds.Definition {
|
||||||
|
return crds.SchedulerDeploymentDefinitionWithOptions(opts.AsFunc())
|
||||||
|
}, &crds.CRDOptions{
|
||||||
|
WithSchema: true,
|
||||||
|
WithPreserve: false,
|
||||||
|
})
|
||||||
|
registerCRDWithPanic(func(opts *crds.CRDOptions) crds.Definition {
|
||||||
|
return crds.SchedulerBatchJobDefinitionWithOptions(opts.AsFunc())
|
||||||
|
}, &crds.CRDOptions{
|
||||||
|
WithSchema: true,
|
||||||
|
WithPreserve: false,
|
||||||
|
})
|
||||||
|
registerCRDWithPanic(func(opts *crds.CRDOptions) crds.Definition {
|
||||||
|
return crds.SchedulerCronJobDefinitionWithOptions(opts.AsFunc())
|
||||||
|
}, &crds.CRDOptions{
|
||||||
|
WithSchema: true,
|
||||||
|
WithPreserve: false,
|
||||||
|
})
|
||||||
|
}
|
|
@ -22,82 +22,15 @@ package kubernetes
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"sort"
|
|
||||||
|
|
||||||
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/generic"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Extract[T1, T2 any](in List[T1], ex func(in T1) T2) List[T2] {
|
|
||||||
r := make(List[T2], len(in))
|
|
||||||
|
|
||||||
for id := range r {
|
|
||||||
r[id] = ex(in[id])
|
|
||||||
}
|
|
||||||
|
|
||||||
return r
|
|
||||||
}
|
|
||||||
|
|
||||||
type List[T any] []T
|
|
||||||
|
|
||||||
func (l List[T]) Sort(pred func(a, b T) bool) List[T] {
|
|
||||||
sort.Slice(l, func(i, j int) bool {
|
|
||||||
return pred(l[i], l[j])
|
|
||||||
})
|
|
||||||
|
|
||||||
return l
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l List[T]) Append(obj ...T) List[T] {
|
|
||||||
r := make(List[T], 0, len(l)+len(obj))
|
|
||||||
|
|
||||||
r = append(r, l...)
|
|
||||||
r = append(r, obj...)
|
|
||||||
|
|
||||||
return r
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l List[T]) Filter(f func(a T) bool) List[T] {
|
|
||||||
r := make(List[T], 0, len(l))
|
|
||||||
|
|
||||||
for _, o := range l {
|
|
||||||
if !f(o) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
r = append(r, o)
|
|
||||||
}
|
|
||||||
|
|
||||||
return r
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l List[T]) Contains(f func(a T) bool) bool {
|
|
||||||
for _, o := range l {
|
|
||||||
if f(o) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l List[T]) Unique(f func(existing List[T], a T) bool) List[T] {
|
|
||||||
r := make(List[T], 0, len(l))
|
|
||||||
|
|
||||||
for _, o := range l {
|
|
||||||
if f(r, o) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
r = append(r, o)
|
|
||||||
}
|
|
||||||
|
|
||||||
return r
|
|
||||||
}
|
|
||||||
|
|
||||||
type ObjectList[T meta.Object] map[types.UID]T
|
type ObjectList[T meta.Object] map[types.UID]T
|
||||||
|
|
||||||
func (d ObjectList[T]) ByName(name string) (T, bool) {
|
func (d ObjectList[T]) ByName(name string) (T, bool) {
|
||||||
|
@ -110,7 +43,7 @@ func (d ObjectList[T]) ByName(name string) (T, bool) {
|
||||||
return util.Default[T](), false
|
return util.Default[T](), false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d ObjectList[T]) AsList() List[T] {
|
func (d ObjectList[T]) AsList() util.List[T] {
|
||||||
list := make([]T, 0, len(d))
|
list := make([]T, 0, len(d))
|
||||||
for _, p := range d {
|
for _, p := range d {
|
||||||
list = append(list, p)
|
list = append(list, p)
|
||||||
|
@ -119,7 +52,7 @@ func (d ObjectList[T]) AsList() List[T] {
|
||||||
return list
|
return list
|
||||||
}
|
}
|
||||||
|
|
||||||
func MapObjects[L k8sutil.ListContinue, T meta.Object](ctx context.Context, k k8sutil.ListAPI[L], extract func(result L) []T) (ObjectList[T], error) {
|
func MapObjects[L generic.ListContinue, T meta.Object](ctx context.Context, k generic.ListInterface[L], extract func(result L) []T) (ObjectList[T], error) {
|
||||||
objects := ObjectList[T]{}
|
objects := ObjectList[T]{}
|
||||||
|
|
||||||
if err := k8sutil.APIList[L](ctx, k, meta.ListOptions{}, func(result L, err error) error {
|
if err := k8sutil.APIList[L](ctx, k, meta.ListOptions{}, func(result L, err error) error {
|
||||||
|
@ -140,7 +73,7 @@ func MapObjects[L k8sutil.ListContinue, T meta.Object](ctx context.Context, k k8
|
||||||
return objects, nil
|
return objects, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ListObjects[L k8sutil.ListContinue, T meta.Object](ctx context.Context, k k8sutil.ListAPI[L], extract func(result L) []T) ([]T, error) {
|
func ListObjects[L generic.ListContinue, T meta.Object](ctx context.Context, k generic.ListInterface[L], extract func(result L) []T) ([]T, error) {
|
||||||
objects, err := MapObjects[L, T](ctx, k, extract)
|
objects, err := MapObjects[L, T](ctx, k, extract)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -153,7 +153,7 @@ func (ib *imagesBuilder) fetchArangoDBImageIDAndVersion(ctx context.Context, cac
|
||||||
defer cancel()
|
defer cancel()
|
||||||
pod, err := ib.Context.ACS().CurrentClusterCache().Pod().V1().Read().Get(ctxChild, podName, meta.GetOptions{})
|
pod, err := ib.Context.ACS().CurrentClusterCache().Pod().V1().Read().Get(ctxChild, podName, meta.GetOptions{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// Pod found
|
// ArangoSchedulerPod found
|
||||||
if k8sutil.IsPodFailed(pod, utils.StringList{shared.ServerContainerName}) {
|
if k8sutil.IsPodFailed(pod, utils.StringList{shared.ServerContainerName}) {
|
||||||
// Wait some time before deleting the pod
|
// Wait some time before deleting the pod
|
||||||
if time.Now().After(pod.GetCreationTimestamp().Add(30 * time.Second)) {
|
if time.Now().After(pod.GetCreationTimestamp().Add(30 * time.Second)) {
|
||||||
|
@ -161,14 +161,14 @@ func (ib *imagesBuilder) fetchArangoDBImageIDAndVersion(ctx context.Context, cac
|
||||||
return ib.Context.ACS().CurrentClusterCache().PodsModInterface().V1().Delete(ctxChild, podName, meta.DeleteOptions{})
|
return ib.Context.ACS().CurrentClusterCache().PodsModInterface().V1().Delete(ctxChild, podName, meta.DeleteOptions{})
|
||||||
})
|
})
|
||||||
if err != nil && !kerrors.IsNotFound(err) {
|
if err != nil && !kerrors.IsNotFound(err) {
|
||||||
log.Err(err).Warn("Failed to delete Image ID Pod")
|
log.Err(err).Warn("Failed to delete Image ID ArangoSchedulerPod")
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
if !k8sutil.IsPodReady(pod) {
|
if !k8sutil.IsPodReady(pod) {
|
||||||
log.Debug("Image ID Pod is not yet ready")
|
log.Debug("Image ID ArangoSchedulerPod is not yet ready")
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,14 +181,14 @@ func (ib *imagesBuilder) fetchArangoDBImageIDAndVersion(ctx context.Context, cac
|
||||||
// Try fetching the ArangoDB version
|
// Try fetching the ArangoDB version
|
||||||
client, err := arangod.CreateArangodImageIDClient(ctx, ib.APIObject, pod.Status.PodIP, false)
|
client, err := arangod.CreateArangodImageIDClient(ctx, ib.APIObject, pod.Status.PodIP, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Err(err).Warn("Failed to create Image ID Pod client")
|
log.Err(err).Warn("Failed to create Image ID ArangoSchedulerPod client")
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
ctxChild, cancel = globals.GetGlobalTimeouts().ArangoD().WithTimeout(ctx)
|
ctxChild, cancel = globals.GetGlobalTimeouts().ArangoD().WithTimeout(ctx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
v, err := client.Version(ctxChild)
|
v, err := client.Version(ctxChild)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Err(err).Debug("Failed to fetch version from Image ID Pod")
|
log.Err(err).Debug("Failed to fetch version from Image ID ArangoSchedulerPod")
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
version := v.Version
|
version := v.Version
|
||||||
|
@ -199,7 +199,7 @@ func (ib *imagesBuilder) fetchArangoDBImageIDAndVersion(ctx context.Context, cac
|
||||||
return ib.Context.ACS().CurrentClusterCache().PodsModInterface().V1().Delete(ctxChild, podName, meta.DeleteOptions{})
|
return ib.Context.ACS().CurrentClusterCache().PodsModInterface().V1().Delete(ctxChild, podName, meta.DeleteOptions{})
|
||||||
})
|
})
|
||||||
if err != nil && !kerrors.IsNotFound(err) {
|
if err != nil && !kerrors.IsNotFound(err) {
|
||||||
log.Err(err).Warn("Failed to delete Image ID Pod")
|
log.Err(err).Warn("Failed to delete Image ID ArangoSchedulerPod")
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/apimachinery/pkg/api/equality"
|
||||||
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
@ -33,8 +34,11 @@ import (
|
||||||
"github.com/arangodb/kube-arangodb/pkg/integrations/sidecar"
|
"github.com/arangodb/kube-arangodb/pkg/integrations/sidecar"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/metrics"
|
"github.com/arangodb/kube-arangodb/pkg/metrics"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/constants"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
|
||||||
inspectorInterface "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector"
|
inspectorInterface "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors"
|
||||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/patcher"
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/patcher"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -43,11 +47,22 @@ var (
|
||||||
inspectArangoProfilesDurationGauges = metrics.MustRegisterGaugeVec(metricsComponent, "inspect_arango_profiles_duration", "Amount of time taken by a single inspection of all ArangoProfiles for a deployment (in sec)", metrics.DeploymentName)
|
inspectArangoProfilesDurationGauges = metrics.MustRegisterGaugeVec(metricsComponent, "inspect_arango_profiles_duration", "Amount of time taken by a single inspection of all ArangoProfiles for a deployment (in sec)", metrics.DeploymentName)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func matchArangoProfilesLabels(labels map[string]string) *schedulerApi.ProfileSelectors {
|
||||||
|
if labels == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return &schedulerApi.ProfileSelectors{
|
||||||
|
Label: &meta.LabelSelector{
|
||||||
|
MatchLabels: labels,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// EnsureArangoProfiles creates all ArangoProfiles needed to run the given deployment
|
// EnsureArangoProfiles creates all ArangoProfiles needed to run the given deployment
|
||||||
func (r *Resources) EnsureArangoProfiles(ctx context.Context, cachedStatus inspectorInterface.Inspector) error {
|
func (r *Resources) EnsureArangoProfiles(ctx context.Context, cachedStatus inspectorInterface.Inspector) error {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
spec := r.context.GetSpec()
|
spec := r.context.GetSpec()
|
||||||
arangoProfiles := cachedStatus.ArangoProfileModInterface().V1Beta1()
|
|
||||||
apiObject := r.context.GetAPIObject()
|
apiObject := r.context.GetAPIObject()
|
||||||
deploymentName := apiObject.GetName()
|
deploymentName := apiObject.GetName()
|
||||||
|
|
||||||
|
@ -56,74 +71,167 @@ func (r *Resources) EnsureArangoProfiles(ctx context.Context, cachedStatus inspe
|
||||||
|
|
||||||
reconcileRequired := k8sutil.NewReconcile(cachedStatus)
|
reconcileRequired := k8sutil.NewReconcile(cachedStatus)
|
||||||
|
|
||||||
intName := fmt.Sprintf("%s-int", deploymentName)
|
gen := func(name, version string, integrations ...sidecar.Integration) func() (string, *schedulerApi.ArangoProfile, error) {
|
||||||
|
return func() (string, *schedulerApi.ArangoProfile, error) {
|
||||||
|
counterMetric.Inc()
|
||||||
|
fullName := fmt.Sprintf("%s-int-%s-%s", deploymentName, name, version)
|
||||||
|
|
||||||
integration, err := sidecar.NewIntegration(&schedulerContainerResourcesApi.Image{
|
integration, err := sidecar.NewIntegrationEnablement(integrations...)
|
||||||
Image: util.NewType(r.context.GetOperatorImage()),
|
if err != nil {
|
||||||
}, spec.Integration.GetSidecar())
|
return "", nil, err
|
||||||
if err != nil {
|
}
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
integrationChecksum, err := integration.Checksum()
|
return fullName, &schedulerApi.ArangoProfile{
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if c, err := cachedStatus.ArangoProfile().V1Beta1(); err == nil {
|
|
||||||
counterMetric.Inc()
|
|
||||||
if s, ok := c.GetSimple(intName); !ok {
|
|
||||||
s = &schedulerApi.ArangoProfile{
|
|
||||||
ObjectMeta: meta.ObjectMeta{
|
ObjectMeta: meta.ObjectMeta{
|
||||||
Name: intName,
|
Name: fullName,
|
||||||
Namespace: apiObject.GetNamespace(),
|
Namespace: apiObject.GetNamespace(),
|
||||||
OwnerReferences: []meta.OwnerReference{
|
OwnerReferences: []meta.OwnerReference{
|
||||||
apiObject.AsOwner(),
|
apiObject.AsOwner(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Spec: schedulerApi.ProfileSpec{
|
Spec: schedulerApi.ProfileSpec{
|
||||||
|
Selectors: matchArangoProfilesLabels(map[string]string{
|
||||||
|
constants.ProfilesDeployment: deploymentName,
|
||||||
|
fmt.Sprintf("%s/%s", constants.ProfilesIntegrationPrefix, name): version,
|
||||||
|
}),
|
||||||
Template: integration,
|
Template: integration,
|
||||||
},
|
},
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if changed, err := r.ensureArangoProfilesFactory(ctx, cachedStatus,
|
||||||
|
func() (string, *schedulerApi.ArangoProfile, error) {
|
||||||
|
counterMetric.Inc()
|
||||||
|
name := fmt.Sprintf("%s-int", deploymentName)
|
||||||
|
|
||||||
|
integration, err := sidecar.NewIntegration(&schedulerContainerResourcesApi.Image{
|
||||||
|
Image: util.NewType(r.context.GetOperatorImage()),
|
||||||
|
}, spec.Integration.GetSidecar())
|
||||||
|
if err != nil {
|
||||||
|
return "", nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := cachedStatus.ArangoProfileModInterface().V1Beta1().Create(ctx, s, meta.CreateOptions{}); err != nil {
|
return name, &schedulerApi.ArangoProfile{
|
||||||
return err
|
ObjectMeta: meta.ObjectMeta{
|
||||||
}
|
Name: name,
|
||||||
|
Namespace: apiObject.GetNamespace(),
|
||||||
|
OwnerReferences: []meta.OwnerReference{
|
||||||
|
apiObject.AsOwner(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Spec: schedulerApi.ProfileSpec{
|
||||||
|
Selectors: matchArangoProfilesLabels(map[string]string{
|
||||||
|
constants.ProfilesDeployment: deploymentName,
|
||||||
|
}),
|
||||||
|
Template: integration,
|
||||||
|
},
|
||||||
|
}, nil
|
||||||
|
},
|
||||||
|
gen("authz", "v0", sidecar.IntegrationAuthorizationV0{}),
|
||||||
|
gen("authn", "v1", sidecar.IntegrationAuthenticationV1{Spec: spec, DeploymentName: apiObject.GetName()}),
|
||||||
|
); err != nil {
|
||||||
|
return err
|
||||||
|
} else if changed {
|
||||||
|
reconcileRequired.Required()
|
||||||
|
}
|
||||||
|
|
||||||
reconcileRequired.Required()
|
return reconcileRequired.Reconcile(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Resources) ensureArangoProfilesFactory(ctx context.Context, cachedStatus inspectorInterface.Inspector, expected ...func() (string, *schedulerApi.ArangoProfile, error)) (bool, error) {
|
||||||
|
var changed bool
|
||||||
|
|
||||||
|
for _, e := range expected {
|
||||||
|
name, profile, err := e()
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
if c, err := r.ensureArangoProfile(ctx, cachedStatus, name, profile); err != nil {
|
||||||
|
return false, err
|
||||||
|
} else if c {
|
||||||
|
changed = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return changed, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Resources) ensureArangoProfile(ctx context.Context, cachedStatus inspectorInterface.Inspector, name string, expected *schedulerApi.ArangoProfile) (bool, error) {
|
||||||
|
arangoProfiles := cachedStatus.ArangoProfileModInterface().V1Beta1()
|
||||||
|
|
||||||
|
if expected.GetName() != name {
|
||||||
|
return false, errors.Errorf("Name mismatch")
|
||||||
|
}
|
||||||
|
|
||||||
|
if c, err := cachedStatus.ArangoProfile().V1Beta1(); err == nil {
|
||||||
|
if s, ok := c.GetSimple(name); !ok {
|
||||||
|
if expected != nil {
|
||||||
|
if _, err := arangoProfiles.Create(ctx, expected, meta.CreateOptions{}); err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if expected == nil {
|
||||||
|
if err := arangoProfiles.Delete(ctx, s.GetName(), meta.DeleteOptions{}); err != nil {
|
||||||
|
if !kerrors.IsNotFound(err) {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
expectedChecksum, err := expected.Spec.Template.Checksum()
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
currChecksum, err := s.Spec.Template.Checksum()
|
currChecksum, err := s.Spec.Template.Checksum()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.Spec.Selectors != nil {
|
if expected.Spec.Selectors == nil && s.Spec.Selectors != nil {
|
||||||
|
// Remove
|
||||||
if _, changed, err := patcher.Patcher[*schedulerApi.ArangoProfile](ctx, arangoProfiles, s, meta.PatchOptions{},
|
if _, changed, err := patcher.Patcher[*schedulerApi.ArangoProfile](ctx, arangoProfiles, s, meta.PatchOptions{},
|
||||||
func(in *schedulerApi.ArangoProfile) []patch.Item {
|
func(in *schedulerApi.ArangoProfile) []patch.Item {
|
||||||
return []patch.Item{
|
return []patch.Item{
|
||||||
patch.ItemRemove(patch.NewPath("spec", "selectors")),
|
patch.ItemRemove(patch.NewPath("spec", "selectors")),
|
||||||
}
|
}
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return err
|
return false, err
|
||||||
} else if changed {
|
} else if changed {
|
||||||
reconcileRequired.Required()
|
return true, nil
|
||||||
}
|
}
|
||||||
}
|
} else if !equality.Semantic.DeepEqual(expected.Spec.Selectors, s.Spec.Selectors) {
|
||||||
|
|
||||||
if currChecksum != integrationChecksum {
|
|
||||||
if _, changed, err := patcher.Patcher[*schedulerApi.ArangoProfile](ctx, arangoProfiles, s, meta.PatchOptions{},
|
if _, changed, err := patcher.Patcher[*schedulerApi.ArangoProfile](ctx, arangoProfiles, s, meta.PatchOptions{},
|
||||||
func(in *schedulerApi.ArangoProfile) []patch.Item {
|
func(in *schedulerApi.ArangoProfile) []patch.Item {
|
||||||
return []patch.Item{
|
return []patch.Item{
|
||||||
patch.ItemReplace(patch.NewPath("spec", "template"), integration),
|
patch.ItemReplace(patch.NewPath("spec", "selectors"), expected.Spec.Selectors),
|
||||||
}
|
}
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return err
|
return false, err
|
||||||
} else if changed {
|
} else if changed {
|
||||||
reconcileRequired.Required()
|
return true, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if currChecksum != expectedChecksum {
|
||||||
|
if _, changed, err := patcher.Patcher[*schedulerApi.ArangoProfile](ctx, arangoProfiles, s, meta.PatchOptions{},
|
||||||
|
func(in *schedulerApi.ArangoProfile) []patch.Item {
|
||||||
|
return []patch.Item{
|
||||||
|
patch.ItemReplace(patch.NewPath("spec", "template"), util.TypeOrDefault(expected.Spec.Template)),
|
||||||
|
}
|
||||||
|
}); err != nil {
|
||||||
|
return false, err
|
||||||
|
} else if changed {
|
||||||
|
return true, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return reconcileRequired.Reconcile(ctx)
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
199
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/arangoschedulerbatchjob.go
generated
Normal file
199
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/arangoschedulerbatchjob.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobsGetter has a method to return a ArangoSchedulerBatchJobInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type ArangoSchedulerBatchJobsGetter interface {
|
||||||
|
ArangoSchedulerBatchJobs(namespace string) ArangoSchedulerBatchJobInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobInterface has methods to work with ArangoSchedulerBatchJob resources.
|
||||||
|
type ArangoSchedulerBatchJobInterface interface {
|
||||||
|
Create(ctx context.Context, arangoSchedulerBatchJob *v1beta1.ArangoSchedulerBatchJob, opts v1.CreateOptions) (*v1beta1.ArangoSchedulerBatchJob, error)
|
||||||
|
Update(ctx context.Context, arangoSchedulerBatchJob *v1beta1.ArangoSchedulerBatchJob, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerBatchJob, error)
|
||||||
|
UpdateStatus(ctx context.Context, arangoSchedulerBatchJob *v1beta1.ArangoSchedulerBatchJob, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerBatchJob, 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) (*v1beta1.ArangoSchedulerBatchJob, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ArangoSchedulerBatchJobList, 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 *v1beta1.ArangoSchedulerBatchJob, err error)
|
||||||
|
ArangoSchedulerBatchJobExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerBatchJobs implements ArangoSchedulerBatchJobInterface
|
||||||
|
type arangoSchedulerBatchJobs struct {
|
||||||
|
client rest.Interface
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
// newArangoSchedulerBatchJobs returns a ArangoSchedulerBatchJobs
|
||||||
|
func newArangoSchedulerBatchJobs(c *SchedulerV1beta1Client, namespace string) *arangoSchedulerBatchJobs {
|
||||||
|
return &arangoSchedulerBatchJobs{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
ns: namespace,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the arangoSchedulerBatchJob, and returns the corresponding arangoSchedulerBatchJob object, and an error if there is any.
|
||||||
|
func (c *arangoSchedulerBatchJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerBatchJob{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerbatchjobs").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoSchedulerBatchJobs that match those selectors.
|
||||||
|
func (c *arangoSchedulerBatchJobs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ArangoSchedulerBatchJobList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1beta1.ArangoSchedulerBatchJobList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerbatchjobs").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested arangoSchedulerBatchJobs.
|
||||||
|
func (c *arangoSchedulerBatchJobs) 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("arangoschedulerbatchjobs").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoSchedulerBatchJob and creates it. Returns the server's representation of the arangoSchedulerBatchJob, and an error, if there is any.
|
||||||
|
func (c *arangoSchedulerBatchJobs) Create(ctx context.Context, arangoSchedulerBatchJob *v1beta1.ArangoSchedulerBatchJob, opts v1.CreateOptions) (result *v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerBatchJob{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerbatchjobs").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerBatchJob).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoSchedulerBatchJob and updates it. Returns the server's representation of the arangoSchedulerBatchJob, and an error, if there is any.
|
||||||
|
func (c *arangoSchedulerBatchJobs) Update(ctx context.Context, arangoSchedulerBatchJob *v1beta1.ArangoSchedulerBatchJob, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerBatchJob{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerbatchjobs").
|
||||||
|
Name(arangoSchedulerBatchJob.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerBatchJob).
|
||||||
|
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 *arangoSchedulerBatchJobs) UpdateStatus(ctx context.Context, arangoSchedulerBatchJob *v1beta1.ArangoSchedulerBatchJob, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerBatchJob{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerbatchjobs").
|
||||||
|
Name(arangoSchedulerBatchJob.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerBatchJob).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoSchedulerBatchJob and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *arangoSchedulerBatchJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerbatchjobs").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *arangoSchedulerBatchJobs) 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("arangoschedulerbatchjobs").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoSchedulerBatchJob.
|
||||||
|
func (c *arangoSchedulerBatchJobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerBatchJob{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerbatchjobs").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
199
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/arangoschedulercronjob.go
generated
Normal file
199
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/arangoschedulercronjob.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobsGetter has a method to return a ArangoSchedulerCronJobInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type ArangoSchedulerCronJobsGetter interface {
|
||||||
|
ArangoSchedulerCronJobs(namespace string) ArangoSchedulerCronJobInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobInterface has methods to work with ArangoSchedulerCronJob resources.
|
||||||
|
type ArangoSchedulerCronJobInterface interface {
|
||||||
|
Create(ctx context.Context, arangoSchedulerCronJob *v1beta1.ArangoSchedulerCronJob, opts v1.CreateOptions) (*v1beta1.ArangoSchedulerCronJob, error)
|
||||||
|
Update(ctx context.Context, arangoSchedulerCronJob *v1beta1.ArangoSchedulerCronJob, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerCronJob, error)
|
||||||
|
UpdateStatus(ctx context.Context, arangoSchedulerCronJob *v1beta1.ArangoSchedulerCronJob, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerCronJob, 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) (*v1beta1.ArangoSchedulerCronJob, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ArangoSchedulerCronJobList, 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 *v1beta1.ArangoSchedulerCronJob, err error)
|
||||||
|
ArangoSchedulerCronJobExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerCronJobs implements ArangoSchedulerCronJobInterface
|
||||||
|
type arangoSchedulerCronJobs struct {
|
||||||
|
client rest.Interface
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
// newArangoSchedulerCronJobs returns a ArangoSchedulerCronJobs
|
||||||
|
func newArangoSchedulerCronJobs(c *SchedulerV1beta1Client, namespace string) *arangoSchedulerCronJobs {
|
||||||
|
return &arangoSchedulerCronJobs{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
ns: namespace,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the arangoSchedulerCronJob, and returns the corresponding arangoSchedulerCronJob object, and an error if there is any.
|
||||||
|
func (c *arangoSchedulerCronJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerCronJob{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulercronjobs").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoSchedulerCronJobs that match those selectors.
|
||||||
|
func (c *arangoSchedulerCronJobs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ArangoSchedulerCronJobList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1beta1.ArangoSchedulerCronJobList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulercronjobs").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested arangoSchedulerCronJobs.
|
||||||
|
func (c *arangoSchedulerCronJobs) 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("arangoschedulercronjobs").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoSchedulerCronJob and creates it. Returns the server's representation of the arangoSchedulerCronJob, and an error, if there is any.
|
||||||
|
func (c *arangoSchedulerCronJobs) Create(ctx context.Context, arangoSchedulerCronJob *v1beta1.ArangoSchedulerCronJob, opts v1.CreateOptions) (result *v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerCronJob{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulercronjobs").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerCronJob).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoSchedulerCronJob and updates it. Returns the server's representation of the arangoSchedulerCronJob, and an error, if there is any.
|
||||||
|
func (c *arangoSchedulerCronJobs) Update(ctx context.Context, arangoSchedulerCronJob *v1beta1.ArangoSchedulerCronJob, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerCronJob{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulercronjobs").
|
||||||
|
Name(arangoSchedulerCronJob.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerCronJob).
|
||||||
|
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 *arangoSchedulerCronJobs) UpdateStatus(ctx context.Context, arangoSchedulerCronJob *v1beta1.ArangoSchedulerCronJob, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerCronJob{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulercronjobs").
|
||||||
|
Name(arangoSchedulerCronJob.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerCronJob).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoSchedulerCronJob and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *arangoSchedulerCronJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulercronjobs").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *arangoSchedulerCronJobs) 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("arangoschedulercronjobs").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoSchedulerCronJob.
|
||||||
|
func (c *arangoSchedulerCronJobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerCronJob{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulercronjobs").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
199
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/arangoschedulerdeployment.go
generated
Normal file
199
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/arangoschedulerdeployment.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerDeploymentsGetter has a method to return a ArangoSchedulerDeploymentInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type ArangoSchedulerDeploymentsGetter interface {
|
||||||
|
ArangoSchedulerDeployments(namespace string) ArangoSchedulerDeploymentInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerDeploymentInterface has methods to work with ArangoSchedulerDeployment resources.
|
||||||
|
type ArangoSchedulerDeploymentInterface interface {
|
||||||
|
Create(ctx context.Context, arangoSchedulerDeployment *v1beta1.ArangoSchedulerDeployment, opts v1.CreateOptions) (*v1beta1.ArangoSchedulerDeployment, error)
|
||||||
|
Update(ctx context.Context, arangoSchedulerDeployment *v1beta1.ArangoSchedulerDeployment, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerDeployment, error)
|
||||||
|
UpdateStatus(ctx context.Context, arangoSchedulerDeployment *v1beta1.ArangoSchedulerDeployment, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerDeployment, 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) (*v1beta1.ArangoSchedulerDeployment, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ArangoSchedulerDeploymentList, 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 *v1beta1.ArangoSchedulerDeployment, err error)
|
||||||
|
ArangoSchedulerDeploymentExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerDeployments implements ArangoSchedulerDeploymentInterface
|
||||||
|
type arangoSchedulerDeployments struct {
|
||||||
|
client rest.Interface
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
// newArangoSchedulerDeployments returns a ArangoSchedulerDeployments
|
||||||
|
func newArangoSchedulerDeployments(c *SchedulerV1beta1Client, namespace string) *arangoSchedulerDeployments {
|
||||||
|
return &arangoSchedulerDeployments{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
ns: namespace,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the arangoSchedulerDeployment, and returns the corresponding arangoSchedulerDeployment object, and an error if there is any.
|
||||||
|
func (c *arangoSchedulerDeployments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerDeployment{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerdeployments").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoSchedulerDeployments that match those selectors.
|
||||||
|
func (c *arangoSchedulerDeployments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ArangoSchedulerDeploymentList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1beta1.ArangoSchedulerDeploymentList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerdeployments").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested arangoSchedulerDeployments.
|
||||||
|
func (c *arangoSchedulerDeployments) 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("arangoschedulerdeployments").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoSchedulerDeployment and creates it. Returns the server's representation of the arangoSchedulerDeployment, and an error, if there is any.
|
||||||
|
func (c *arangoSchedulerDeployments) Create(ctx context.Context, arangoSchedulerDeployment *v1beta1.ArangoSchedulerDeployment, opts v1.CreateOptions) (result *v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerDeployment{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerdeployments").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerDeployment).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoSchedulerDeployment and updates it. Returns the server's representation of the arangoSchedulerDeployment, and an error, if there is any.
|
||||||
|
func (c *arangoSchedulerDeployments) Update(ctx context.Context, arangoSchedulerDeployment *v1beta1.ArangoSchedulerDeployment, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerDeployment{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerdeployments").
|
||||||
|
Name(arangoSchedulerDeployment.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerDeployment).
|
||||||
|
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 *arangoSchedulerDeployments) UpdateStatus(ctx context.Context, arangoSchedulerDeployment *v1beta1.ArangoSchedulerDeployment, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerDeployment{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerdeployments").
|
||||||
|
Name(arangoSchedulerDeployment.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerDeployment).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoSchedulerDeployment and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *arangoSchedulerDeployments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerdeployments").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *arangoSchedulerDeployments) 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("arangoschedulerdeployments").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoSchedulerDeployment.
|
||||||
|
func (c *arangoSchedulerDeployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerDeployment{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerdeployments").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
199
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/arangoschedulerpod.go
generated
Normal file
199
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/arangoschedulerpod.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerPodsGetter has a method to return a ArangoSchedulerPodInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type ArangoSchedulerPodsGetter interface {
|
||||||
|
ArangoSchedulerPods(namespace string) ArangoSchedulerPodInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerPodInterface has methods to work with ArangoSchedulerPod resources.
|
||||||
|
type ArangoSchedulerPodInterface interface {
|
||||||
|
Create(ctx context.Context, arangoSchedulerPod *v1beta1.ArangoSchedulerPod, opts v1.CreateOptions) (*v1beta1.ArangoSchedulerPod, error)
|
||||||
|
Update(ctx context.Context, arangoSchedulerPod *v1beta1.ArangoSchedulerPod, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerPod, error)
|
||||||
|
UpdateStatus(ctx context.Context, arangoSchedulerPod *v1beta1.ArangoSchedulerPod, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerPod, 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) (*v1beta1.ArangoSchedulerPod, error)
|
||||||
|
List(ctx context.Context, opts v1.ListOptions) (*v1beta1.ArangoSchedulerPodList, 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 *v1beta1.ArangoSchedulerPod, err error)
|
||||||
|
ArangoSchedulerPodExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerPods implements ArangoSchedulerPodInterface
|
||||||
|
type arangoSchedulerPods struct {
|
||||||
|
client rest.Interface
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
// newArangoSchedulerPods returns a ArangoSchedulerPods
|
||||||
|
func newArangoSchedulerPods(c *SchedulerV1beta1Client, namespace string) *arangoSchedulerPods {
|
||||||
|
return &arangoSchedulerPods{
|
||||||
|
client: c.RESTClient(),
|
||||||
|
ns: namespace,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the arangoSchedulerPod, and returns the corresponding arangoSchedulerPod object, and an error if there is any.
|
||||||
|
func (c *arangoSchedulerPods) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerPod{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerpods").
|
||||||
|
Name(name).
|
||||||
|
VersionedParams(&options, scheme.ParameterCodec).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoSchedulerPods that match those selectors.
|
||||||
|
func (c *arangoSchedulerPods) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ArangoSchedulerPodList, err error) {
|
||||||
|
var timeout time.Duration
|
||||||
|
if opts.TimeoutSeconds != nil {
|
||||||
|
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
|
||||||
|
}
|
||||||
|
result = &v1beta1.ArangoSchedulerPodList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerpods").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested arangoSchedulerPods.
|
||||||
|
func (c *arangoSchedulerPods) 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("arangoschedulerpods").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Watch(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoSchedulerPod and creates it. Returns the server's representation of the arangoSchedulerPod, and an error, if there is any.
|
||||||
|
func (c *arangoSchedulerPods) Create(ctx context.Context, arangoSchedulerPod *v1beta1.ArangoSchedulerPod, opts v1.CreateOptions) (result *v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerPod{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerpods").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerPod).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoSchedulerPod and updates it. Returns the server's representation of the arangoSchedulerPod, and an error, if there is any.
|
||||||
|
func (c *arangoSchedulerPods) Update(ctx context.Context, arangoSchedulerPod *v1beta1.ArangoSchedulerPod, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerPod{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerpods").
|
||||||
|
Name(arangoSchedulerPod.Name).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerPod).
|
||||||
|
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 *arangoSchedulerPods) UpdateStatus(ctx context.Context, arangoSchedulerPod *v1beta1.ArangoSchedulerPod, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerPod{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerpods").
|
||||||
|
Name(arangoSchedulerPod.Name).
|
||||||
|
SubResource("status").
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(arangoSchedulerPod).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoSchedulerPod and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *arangoSchedulerPods) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerpods").
|
||||||
|
Name(name).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *arangoSchedulerPods) 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("arangoschedulerpods").
|
||||||
|
VersionedParams(&listOpts, scheme.ParameterCodec).
|
||||||
|
Timeout(timeout).
|
||||||
|
Body(&opts).
|
||||||
|
Do(ctx).
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoSchedulerPod.
|
||||||
|
func (c *arangoSchedulerPods) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
result = &v1beta1.ArangoSchedulerPod{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Namespace(c.ns).
|
||||||
|
Resource("arangoschedulerpods").
|
||||||
|
Name(name).
|
||||||
|
SubResource(subresources...).
|
||||||
|
VersionedParams(&opts, scheme.ParameterCodec).
|
||||||
|
Body(data).
|
||||||
|
Do(ctx).
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
145
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/fake/fake_arangoschedulerbatchjob.go
generated
Normal file
145
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/fake/fake_arangoschedulerbatchjob.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"
|
||||||
|
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeArangoSchedulerBatchJobs implements ArangoSchedulerBatchJobInterface
|
||||||
|
type FakeArangoSchedulerBatchJobs struct {
|
||||||
|
Fake *FakeSchedulerV1beta1
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
var arangoschedulerbatchjobsResource = v1beta1.SchemeGroupVersion.WithResource("arangoschedulerbatchjobs")
|
||||||
|
|
||||||
|
var arangoschedulerbatchjobsKind = v1beta1.SchemeGroupVersion.WithKind("ArangoSchedulerBatchJob")
|
||||||
|
|
||||||
|
// Get takes name of the arangoSchedulerBatchJob, and returns the corresponding arangoSchedulerBatchJob object, and an error if there is any.
|
||||||
|
func (c *FakeArangoSchedulerBatchJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewGetAction(arangoschedulerbatchjobsResource, c.ns, name), &v1beta1.ArangoSchedulerBatchJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerBatchJob), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoSchedulerBatchJobs that match those selectors.
|
||||||
|
func (c *FakeArangoSchedulerBatchJobs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ArangoSchedulerBatchJobList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewListAction(arangoschedulerbatchjobsResource, arangoschedulerbatchjobsKind, c.ns, opts), &v1beta1.ArangoSchedulerBatchJobList{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1beta1.ArangoSchedulerBatchJobList{ListMeta: obj.(*v1beta1.ArangoSchedulerBatchJobList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1beta1.ArangoSchedulerBatchJobList).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 arangoSchedulerBatchJobs.
|
||||||
|
func (c *FakeArangoSchedulerBatchJobs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewWatchAction(arangoschedulerbatchjobsResource, c.ns, opts))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoSchedulerBatchJob and creates it. Returns the server's representation of the arangoSchedulerBatchJob, and an error, if there is any.
|
||||||
|
func (c *FakeArangoSchedulerBatchJobs) Create(ctx context.Context, arangoSchedulerBatchJob *v1beta1.ArangoSchedulerBatchJob, opts v1.CreateOptions) (result *v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewCreateAction(arangoschedulerbatchjobsResource, c.ns, arangoSchedulerBatchJob), &v1beta1.ArangoSchedulerBatchJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerBatchJob), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoSchedulerBatchJob and updates it. Returns the server's representation of the arangoSchedulerBatchJob, and an error, if there is any.
|
||||||
|
func (c *FakeArangoSchedulerBatchJobs) Update(ctx context.Context, arangoSchedulerBatchJob *v1beta1.ArangoSchedulerBatchJob, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateAction(arangoschedulerbatchjobsResource, c.ns, arangoSchedulerBatchJob), &v1beta1.ArangoSchedulerBatchJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerBatchJob), 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 *FakeArangoSchedulerBatchJobs) UpdateStatus(ctx context.Context, arangoSchedulerBatchJob *v1beta1.ArangoSchedulerBatchJob, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerBatchJob, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateSubresourceAction(arangoschedulerbatchjobsResource, "status", c.ns, arangoSchedulerBatchJob), &v1beta1.ArangoSchedulerBatchJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerBatchJob), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoSchedulerBatchJob and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeArangoSchedulerBatchJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewDeleteActionWithOptions(arangoschedulerbatchjobsResource, c.ns, name, opts), &v1beta1.ArangoSchedulerBatchJob{})
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeArangoSchedulerBatchJobs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewDeleteCollectionAction(arangoschedulerbatchjobsResource, c.ns, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1beta1.ArangoSchedulerBatchJobList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoSchedulerBatchJob.
|
||||||
|
func (c *FakeArangoSchedulerBatchJobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewPatchSubresourceAction(arangoschedulerbatchjobsResource, c.ns, name, pt, data, subresources...), &v1beta1.ArangoSchedulerBatchJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerBatchJob), err
|
||||||
|
}
|
145
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/fake/fake_arangoschedulercronjob.go
generated
Normal file
145
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/fake/fake_arangoschedulercronjob.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"
|
||||||
|
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeArangoSchedulerCronJobs implements ArangoSchedulerCronJobInterface
|
||||||
|
type FakeArangoSchedulerCronJobs struct {
|
||||||
|
Fake *FakeSchedulerV1beta1
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
var arangoschedulercronjobsResource = v1beta1.SchemeGroupVersion.WithResource("arangoschedulercronjobs")
|
||||||
|
|
||||||
|
var arangoschedulercronjobsKind = v1beta1.SchemeGroupVersion.WithKind("ArangoSchedulerCronJob")
|
||||||
|
|
||||||
|
// Get takes name of the arangoSchedulerCronJob, and returns the corresponding arangoSchedulerCronJob object, and an error if there is any.
|
||||||
|
func (c *FakeArangoSchedulerCronJobs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewGetAction(arangoschedulercronjobsResource, c.ns, name), &v1beta1.ArangoSchedulerCronJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerCronJob), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoSchedulerCronJobs that match those selectors.
|
||||||
|
func (c *FakeArangoSchedulerCronJobs) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ArangoSchedulerCronJobList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewListAction(arangoschedulercronjobsResource, arangoschedulercronjobsKind, c.ns, opts), &v1beta1.ArangoSchedulerCronJobList{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1beta1.ArangoSchedulerCronJobList{ListMeta: obj.(*v1beta1.ArangoSchedulerCronJobList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1beta1.ArangoSchedulerCronJobList).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 arangoSchedulerCronJobs.
|
||||||
|
func (c *FakeArangoSchedulerCronJobs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewWatchAction(arangoschedulercronjobsResource, c.ns, opts))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoSchedulerCronJob and creates it. Returns the server's representation of the arangoSchedulerCronJob, and an error, if there is any.
|
||||||
|
func (c *FakeArangoSchedulerCronJobs) Create(ctx context.Context, arangoSchedulerCronJob *v1beta1.ArangoSchedulerCronJob, opts v1.CreateOptions) (result *v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewCreateAction(arangoschedulercronjobsResource, c.ns, arangoSchedulerCronJob), &v1beta1.ArangoSchedulerCronJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerCronJob), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoSchedulerCronJob and updates it. Returns the server's representation of the arangoSchedulerCronJob, and an error, if there is any.
|
||||||
|
func (c *FakeArangoSchedulerCronJobs) Update(ctx context.Context, arangoSchedulerCronJob *v1beta1.ArangoSchedulerCronJob, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateAction(arangoschedulercronjobsResource, c.ns, arangoSchedulerCronJob), &v1beta1.ArangoSchedulerCronJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerCronJob), 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 *FakeArangoSchedulerCronJobs) UpdateStatus(ctx context.Context, arangoSchedulerCronJob *v1beta1.ArangoSchedulerCronJob, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerCronJob, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateSubresourceAction(arangoschedulercronjobsResource, "status", c.ns, arangoSchedulerCronJob), &v1beta1.ArangoSchedulerCronJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerCronJob), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoSchedulerCronJob and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeArangoSchedulerCronJobs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewDeleteActionWithOptions(arangoschedulercronjobsResource, c.ns, name, opts), &v1beta1.ArangoSchedulerCronJob{})
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeArangoSchedulerCronJobs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewDeleteCollectionAction(arangoschedulercronjobsResource, c.ns, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1beta1.ArangoSchedulerCronJobList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoSchedulerCronJob.
|
||||||
|
func (c *FakeArangoSchedulerCronJobs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewPatchSubresourceAction(arangoschedulercronjobsResource, c.ns, name, pt, data, subresources...), &v1beta1.ArangoSchedulerCronJob{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerCronJob), err
|
||||||
|
}
|
145
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/fake/fake_arangoschedulerdeployment.go
generated
Normal file
145
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/fake/fake_arangoschedulerdeployment.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"
|
||||||
|
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeArangoSchedulerDeployments implements ArangoSchedulerDeploymentInterface
|
||||||
|
type FakeArangoSchedulerDeployments struct {
|
||||||
|
Fake *FakeSchedulerV1beta1
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
var arangoschedulerdeploymentsResource = v1beta1.SchemeGroupVersion.WithResource("arangoschedulerdeployments")
|
||||||
|
|
||||||
|
var arangoschedulerdeploymentsKind = v1beta1.SchemeGroupVersion.WithKind("ArangoSchedulerDeployment")
|
||||||
|
|
||||||
|
// Get takes name of the arangoSchedulerDeployment, and returns the corresponding arangoSchedulerDeployment object, and an error if there is any.
|
||||||
|
func (c *FakeArangoSchedulerDeployments) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewGetAction(arangoschedulerdeploymentsResource, c.ns, name), &v1beta1.ArangoSchedulerDeployment{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerDeployment), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoSchedulerDeployments that match those selectors.
|
||||||
|
func (c *FakeArangoSchedulerDeployments) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ArangoSchedulerDeploymentList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewListAction(arangoschedulerdeploymentsResource, arangoschedulerdeploymentsKind, c.ns, opts), &v1beta1.ArangoSchedulerDeploymentList{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1beta1.ArangoSchedulerDeploymentList{ListMeta: obj.(*v1beta1.ArangoSchedulerDeploymentList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1beta1.ArangoSchedulerDeploymentList).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 arangoSchedulerDeployments.
|
||||||
|
func (c *FakeArangoSchedulerDeployments) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewWatchAction(arangoschedulerdeploymentsResource, c.ns, opts))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoSchedulerDeployment and creates it. Returns the server's representation of the arangoSchedulerDeployment, and an error, if there is any.
|
||||||
|
func (c *FakeArangoSchedulerDeployments) Create(ctx context.Context, arangoSchedulerDeployment *v1beta1.ArangoSchedulerDeployment, opts v1.CreateOptions) (result *v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewCreateAction(arangoschedulerdeploymentsResource, c.ns, arangoSchedulerDeployment), &v1beta1.ArangoSchedulerDeployment{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerDeployment), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoSchedulerDeployment and updates it. Returns the server's representation of the arangoSchedulerDeployment, and an error, if there is any.
|
||||||
|
func (c *FakeArangoSchedulerDeployments) Update(ctx context.Context, arangoSchedulerDeployment *v1beta1.ArangoSchedulerDeployment, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateAction(arangoschedulerdeploymentsResource, c.ns, arangoSchedulerDeployment), &v1beta1.ArangoSchedulerDeployment{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerDeployment), 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 *FakeArangoSchedulerDeployments) UpdateStatus(ctx context.Context, arangoSchedulerDeployment *v1beta1.ArangoSchedulerDeployment, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerDeployment, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateSubresourceAction(arangoschedulerdeploymentsResource, "status", c.ns, arangoSchedulerDeployment), &v1beta1.ArangoSchedulerDeployment{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerDeployment), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoSchedulerDeployment and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeArangoSchedulerDeployments) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewDeleteActionWithOptions(arangoschedulerdeploymentsResource, c.ns, name, opts), &v1beta1.ArangoSchedulerDeployment{})
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeArangoSchedulerDeployments) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewDeleteCollectionAction(arangoschedulerdeploymentsResource, c.ns, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1beta1.ArangoSchedulerDeploymentList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoSchedulerDeployment.
|
||||||
|
func (c *FakeArangoSchedulerDeployments) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewPatchSubresourceAction(arangoschedulerdeploymentsResource, c.ns, name, pt, data, subresources...), &v1beta1.ArangoSchedulerDeployment{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerDeployment), err
|
||||||
|
}
|
145
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/fake/fake_arangoschedulerpod.go
generated
Normal file
145
pkg/generated/clientset/versioned/typed/scheduler/v1beta1/fake/fake_arangoschedulerpod.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"
|
||||||
|
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeArangoSchedulerPods implements ArangoSchedulerPodInterface
|
||||||
|
type FakeArangoSchedulerPods struct {
|
||||||
|
Fake *FakeSchedulerV1beta1
|
||||||
|
ns string
|
||||||
|
}
|
||||||
|
|
||||||
|
var arangoschedulerpodsResource = v1beta1.SchemeGroupVersion.WithResource("arangoschedulerpods")
|
||||||
|
|
||||||
|
var arangoschedulerpodsKind = v1beta1.SchemeGroupVersion.WithKind("ArangoSchedulerPod")
|
||||||
|
|
||||||
|
// Get takes name of the arangoSchedulerPod, and returns the corresponding arangoSchedulerPod object, and an error if there is any.
|
||||||
|
func (c *FakeArangoSchedulerPods) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewGetAction(arangoschedulerpodsResource, c.ns, name), &v1beta1.ArangoSchedulerPod{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerPod), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of ArangoSchedulerPods that match those selectors.
|
||||||
|
func (c *FakeArangoSchedulerPods) List(ctx context.Context, opts v1.ListOptions) (result *v1beta1.ArangoSchedulerPodList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewListAction(arangoschedulerpodsResource, arangoschedulerpodsKind, c.ns, opts), &v1beta1.ArangoSchedulerPodList{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label, _, _ := testing.ExtractFromListOptions(opts)
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1beta1.ArangoSchedulerPodList{ListMeta: obj.(*v1beta1.ArangoSchedulerPodList).ListMeta}
|
||||||
|
for _, item := range obj.(*v1beta1.ArangoSchedulerPodList).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 arangoSchedulerPods.
|
||||||
|
func (c *FakeArangoSchedulerPods) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(testing.NewWatchAction(arangoschedulerpodsResource, c.ns, opts))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a arangoSchedulerPod and creates it. Returns the server's representation of the arangoSchedulerPod, and an error, if there is any.
|
||||||
|
func (c *FakeArangoSchedulerPods) Create(ctx context.Context, arangoSchedulerPod *v1beta1.ArangoSchedulerPod, opts v1.CreateOptions) (result *v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewCreateAction(arangoschedulerpodsResource, c.ns, arangoSchedulerPod), &v1beta1.ArangoSchedulerPod{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerPod), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a arangoSchedulerPod and updates it. Returns the server's representation of the arangoSchedulerPod, and an error, if there is any.
|
||||||
|
func (c *FakeArangoSchedulerPods) Update(ctx context.Context, arangoSchedulerPod *v1beta1.ArangoSchedulerPod, opts v1.UpdateOptions) (result *v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateAction(arangoschedulerpodsResource, c.ns, arangoSchedulerPod), &v1beta1.ArangoSchedulerPod{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerPod), 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 *FakeArangoSchedulerPods) UpdateStatus(ctx context.Context, arangoSchedulerPod *v1beta1.ArangoSchedulerPod, opts v1.UpdateOptions) (*v1beta1.ArangoSchedulerPod, error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewUpdateSubresourceAction(arangoschedulerpodsResource, "status", c.ns, arangoSchedulerPod), &v1beta1.ArangoSchedulerPod{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerPod), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the arangoSchedulerPod and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *FakeArangoSchedulerPods) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(testing.NewDeleteActionWithOptions(arangoschedulerpodsResource, c.ns, name, opts), &v1beta1.ArangoSchedulerPod{})
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *FakeArangoSchedulerPods) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
|
||||||
|
action := testing.NewDeleteCollectionAction(arangoschedulerpodsResource, c.ns, listOpts)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1beta1.ArangoSchedulerPodList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched arangoSchedulerPod.
|
||||||
|
func (c *FakeArangoSchedulerPods) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(testing.NewPatchSubresourceAction(arangoschedulerpodsResource, c.ns, name, pt, data, subresources...), &v1beta1.ArangoSchedulerPod{})
|
||||||
|
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerPod), err
|
||||||
|
}
|
|
@ -36,6 +36,22 @@ func (c *FakeSchedulerV1beta1) ArangoProfiles(namespace string) v1beta1.ArangoPr
|
||||||
return &FakeArangoProfiles{c, namespace}
|
return &FakeArangoProfiles{c, namespace}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *FakeSchedulerV1beta1) ArangoSchedulerBatchJobs(namespace string) v1beta1.ArangoSchedulerBatchJobInterface {
|
||||||
|
return &FakeArangoSchedulerBatchJobs{c, namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeSchedulerV1beta1) ArangoSchedulerCronJobs(namespace string) v1beta1.ArangoSchedulerCronJobInterface {
|
||||||
|
return &FakeArangoSchedulerCronJobs{c, namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeSchedulerV1beta1) ArangoSchedulerDeployments(namespace string) v1beta1.ArangoSchedulerDeploymentInterface {
|
||||||
|
return &FakeArangoSchedulerDeployments{c, namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeSchedulerV1beta1) ArangoSchedulerPods(namespace string) v1beta1.ArangoSchedulerPodInterface {
|
||||||
|
return &FakeArangoSchedulerPods{c, namespace}
|
||||||
|
}
|
||||||
|
|
||||||
// RESTClient returns a RESTClient that is used to communicate
|
// RESTClient returns a RESTClient that is used to communicate
|
||||||
// with API server by this client implementation.
|
// with API server by this client implementation.
|
||||||
func (c *FakeSchedulerV1beta1) RESTClient() rest.Interface {
|
func (c *FakeSchedulerV1beta1) RESTClient() rest.Interface {
|
||||||
|
|
|
@ -23,3 +23,11 @@
|
||||||
package v1beta1
|
package v1beta1
|
||||||
|
|
||||||
type ArangoProfileExpansion interface{}
|
type ArangoProfileExpansion interface{}
|
||||||
|
|
||||||
|
type ArangoSchedulerBatchJobExpansion interface{}
|
||||||
|
|
||||||
|
type ArangoSchedulerCronJobExpansion interface{}
|
||||||
|
|
||||||
|
type ArangoSchedulerDeploymentExpansion interface{}
|
||||||
|
|
||||||
|
type ArangoSchedulerPodExpansion interface{}
|
||||||
|
|
|
@ -33,6 +33,10 @@ import (
|
||||||
type SchedulerV1beta1Interface interface {
|
type SchedulerV1beta1Interface interface {
|
||||||
RESTClient() rest.Interface
|
RESTClient() rest.Interface
|
||||||
ArangoProfilesGetter
|
ArangoProfilesGetter
|
||||||
|
ArangoSchedulerBatchJobsGetter
|
||||||
|
ArangoSchedulerCronJobsGetter
|
||||||
|
ArangoSchedulerDeploymentsGetter
|
||||||
|
ArangoSchedulerPodsGetter
|
||||||
}
|
}
|
||||||
|
|
||||||
// SchedulerV1beta1Client is used to interact with features provided by the scheduler.arangodb.com group.
|
// SchedulerV1beta1Client is used to interact with features provided by the scheduler.arangodb.com group.
|
||||||
|
@ -44,6 +48,22 @@ func (c *SchedulerV1beta1Client) ArangoProfiles(namespace string) ArangoProfileI
|
||||||
return newArangoProfiles(c, namespace)
|
return newArangoProfiles(c, namespace)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *SchedulerV1beta1Client) ArangoSchedulerBatchJobs(namespace string) ArangoSchedulerBatchJobInterface {
|
||||||
|
return newArangoSchedulerBatchJobs(c, namespace)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *SchedulerV1beta1Client) ArangoSchedulerCronJobs(namespace string) ArangoSchedulerCronJobInterface {
|
||||||
|
return newArangoSchedulerCronJobs(c, namespace)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *SchedulerV1beta1Client) ArangoSchedulerDeployments(namespace string) ArangoSchedulerDeploymentInterface {
|
||||||
|
return newArangoSchedulerDeployments(c, namespace)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *SchedulerV1beta1Client) ArangoSchedulerPods(namespace string) ArangoSchedulerPodInterface {
|
||||||
|
return newArangoSchedulerPods(c, namespace)
|
||||||
|
}
|
||||||
|
|
||||||
// NewForConfig creates a new SchedulerV1beta1Client for the given config.
|
// NewForConfig creates a new SchedulerV1beta1Client for the given config.
|
||||||
// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
|
// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient),
|
||||||
// where httpClient was generated with rest.HTTPClientFor(c).
|
// where httpClient was generated with rest.HTTPClientFor(c).
|
||||||
|
|
|
@ -137,6 +137,14 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
|
||||||
// Group=scheduler.arangodb.com, Version=v1beta1
|
// Group=scheduler.arangodb.com, Version=v1beta1
|
||||||
case schedulerv1beta1.SchemeGroupVersion.WithResource("arangoprofiles"):
|
case schedulerv1beta1.SchemeGroupVersion.WithResource("arangoprofiles"):
|
||||||
return &genericInformer{resource: resource.GroupResource(), informer: f.Scheduler().V1beta1().ArangoProfiles().Informer()}, nil
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Scheduler().V1beta1().ArangoProfiles().Informer()}, nil
|
||||||
|
case schedulerv1beta1.SchemeGroupVersion.WithResource("arangoschedulerbatchjobs"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Scheduler().V1beta1().ArangoSchedulerBatchJobs().Informer()}, nil
|
||||||
|
case schedulerv1beta1.SchemeGroupVersion.WithResource("arangoschedulercronjobs"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Scheduler().V1beta1().ArangoSchedulerCronJobs().Informer()}, nil
|
||||||
|
case schedulerv1beta1.SchemeGroupVersion.WithResource("arangoschedulerdeployments"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Scheduler().V1beta1().ArangoSchedulerDeployments().Informer()}, nil
|
||||||
|
case schedulerv1beta1.SchemeGroupVersion.WithResource("arangoschedulerpods"):
|
||||||
|
return &genericInformer{resource: resource.GroupResource(), informer: f.Scheduler().V1beta1().ArangoSchedulerPods().Informer()}, nil
|
||||||
|
|
||||||
// Group=storage.arangodb.com, Version=v1alpha
|
// Group=storage.arangodb.com, Version=v1alpha
|
||||||
case v1alpha.SchemeGroupVersion.WithResource("arangolocalstorages"):
|
case v1alpha.SchemeGroupVersion.WithResource("arangolocalstorages"):
|
||||||
|
|
94
pkg/generated/informers/externalversions/scheduler/v1beta1/arangoschedulerbatchjob.go
generated
Normal file
94
pkg/generated/informers/externalversions/scheduler/v1beta1/arangoschedulerbatchjob.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
schedulerv1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
versioned "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned"
|
||||||
|
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/listers/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobInformer provides access to a shared informer and lister for
|
||||||
|
// ArangoSchedulerBatchJobs.
|
||||||
|
type ArangoSchedulerBatchJobInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1beta1.ArangoSchedulerBatchJobLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type arangoSchedulerBatchJobInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoSchedulerBatchJobInformer constructs a new informer for ArangoSchedulerBatchJob 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 NewArangoSchedulerBatchJobInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoSchedulerBatchJobInformer(client, namespace, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredArangoSchedulerBatchJobInformer constructs a new informer for ArangoSchedulerBatchJob 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 NewFilteredArangoSchedulerBatchJobInformer(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.SchedulerV1beta1().ArangoSchedulerBatchJobs(namespace).List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.SchedulerV1beta1().ArangoSchedulerBatchJobs(namespace).Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&schedulerv1beta1.ArangoSchedulerBatchJob{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerBatchJobInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoSchedulerBatchJobInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerBatchJobInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&schedulerv1beta1.ArangoSchedulerBatchJob{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerBatchJobInformer) Lister() v1beta1.ArangoSchedulerBatchJobLister {
|
||||||
|
return v1beta1.NewArangoSchedulerBatchJobLister(f.Informer().GetIndexer())
|
||||||
|
}
|
94
pkg/generated/informers/externalversions/scheduler/v1beta1/arangoschedulercronjob.go
generated
Normal file
94
pkg/generated/informers/externalversions/scheduler/v1beta1/arangoschedulercronjob.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
schedulerv1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
versioned "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned"
|
||||||
|
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/listers/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobInformer provides access to a shared informer and lister for
|
||||||
|
// ArangoSchedulerCronJobs.
|
||||||
|
type ArangoSchedulerCronJobInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1beta1.ArangoSchedulerCronJobLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type arangoSchedulerCronJobInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoSchedulerCronJobInformer constructs a new informer for ArangoSchedulerCronJob 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 NewArangoSchedulerCronJobInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoSchedulerCronJobInformer(client, namespace, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredArangoSchedulerCronJobInformer constructs a new informer for ArangoSchedulerCronJob 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 NewFilteredArangoSchedulerCronJobInformer(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.SchedulerV1beta1().ArangoSchedulerCronJobs(namespace).List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.SchedulerV1beta1().ArangoSchedulerCronJobs(namespace).Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&schedulerv1beta1.ArangoSchedulerCronJob{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerCronJobInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoSchedulerCronJobInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerCronJobInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&schedulerv1beta1.ArangoSchedulerCronJob{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerCronJobInformer) Lister() v1beta1.ArangoSchedulerCronJobLister {
|
||||||
|
return v1beta1.NewArangoSchedulerCronJobLister(f.Informer().GetIndexer())
|
||||||
|
}
|
94
pkg/generated/informers/externalversions/scheduler/v1beta1/arangoschedulerdeployment.go
generated
Normal file
94
pkg/generated/informers/externalversions/scheduler/v1beta1/arangoschedulerdeployment.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
schedulerv1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
versioned "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned"
|
||||||
|
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/listers/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerDeploymentInformer provides access to a shared informer and lister for
|
||||||
|
// ArangoSchedulerDeployments.
|
||||||
|
type ArangoSchedulerDeploymentInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1beta1.ArangoSchedulerDeploymentLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type arangoSchedulerDeploymentInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoSchedulerDeploymentInformer constructs a new informer for ArangoSchedulerDeployment 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 NewArangoSchedulerDeploymentInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoSchedulerDeploymentInformer(client, namespace, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredArangoSchedulerDeploymentInformer constructs a new informer for ArangoSchedulerDeployment 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 NewFilteredArangoSchedulerDeploymentInformer(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.SchedulerV1beta1().ArangoSchedulerDeployments(namespace).List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.SchedulerV1beta1().ArangoSchedulerDeployments(namespace).Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&schedulerv1beta1.ArangoSchedulerDeployment{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerDeploymentInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoSchedulerDeploymentInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerDeploymentInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&schedulerv1beta1.ArangoSchedulerDeployment{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerDeploymentInformer) Lister() v1beta1.ArangoSchedulerDeploymentLister {
|
||||||
|
return v1beta1.NewArangoSchedulerDeploymentLister(f.Informer().GetIndexer())
|
||||||
|
}
|
94
pkg/generated/informers/externalversions/scheduler/v1beta1/arangoschedulerpod.go
generated
Normal file
94
pkg/generated/informers/externalversions/scheduler/v1beta1/arangoschedulerpod.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
time "time"
|
||||||
|
|
||||||
|
schedulerv1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
versioned "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned"
|
||||||
|
internalinterfaces "github.com/arangodb/kube-arangodb/pkg/generated/informers/externalversions/internalinterfaces"
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/generated/listers/scheduler/v1beta1"
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerPodInformer provides access to a shared informer and lister for
|
||||||
|
// ArangoSchedulerPods.
|
||||||
|
type ArangoSchedulerPodInformer interface {
|
||||||
|
Informer() cache.SharedIndexInformer
|
||||||
|
Lister() v1beta1.ArangoSchedulerPodLister
|
||||||
|
}
|
||||||
|
|
||||||
|
type arangoSchedulerPodInformer struct {
|
||||||
|
factory internalinterfaces.SharedInformerFactory
|
||||||
|
tweakListOptions internalinterfaces.TweakListOptionsFunc
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoSchedulerPodInformer constructs a new informer for ArangoSchedulerPod 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 NewArangoSchedulerPodInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoSchedulerPodInformer(client, namespace, resyncPeriod, indexers, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewFilteredArangoSchedulerPodInformer constructs a new informer for ArangoSchedulerPod 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 NewFilteredArangoSchedulerPodInformer(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.SchedulerV1beta1().ArangoSchedulerPods(namespace).List(context.TODO(), options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.SchedulerV1beta1().ArangoSchedulerPods(namespace).Watch(context.TODO(), options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&schedulerv1beta1.ArangoSchedulerPod{},
|
||||||
|
resyncPeriod,
|
||||||
|
indexers,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerPodInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
|
||||||
|
return NewFilteredArangoSchedulerPodInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerPodInformer) Informer() cache.SharedIndexInformer {
|
||||||
|
return f.factory.InformerFor(&schedulerv1beta1.ArangoSchedulerPod{}, f.defaultInformer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *arangoSchedulerPodInformer) Lister() v1beta1.ArangoSchedulerPodLister {
|
||||||
|
return v1beta1.NewArangoSchedulerPodLister(f.Informer().GetIndexer())
|
||||||
|
}
|
|
@ -30,6 +30,14 @@ import (
|
||||||
type Interface interface {
|
type Interface interface {
|
||||||
// ArangoProfiles returns a ArangoProfileInformer.
|
// ArangoProfiles returns a ArangoProfileInformer.
|
||||||
ArangoProfiles() ArangoProfileInformer
|
ArangoProfiles() ArangoProfileInformer
|
||||||
|
// ArangoSchedulerBatchJobs returns a ArangoSchedulerBatchJobInformer.
|
||||||
|
ArangoSchedulerBatchJobs() ArangoSchedulerBatchJobInformer
|
||||||
|
// ArangoSchedulerCronJobs returns a ArangoSchedulerCronJobInformer.
|
||||||
|
ArangoSchedulerCronJobs() ArangoSchedulerCronJobInformer
|
||||||
|
// ArangoSchedulerDeployments returns a ArangoSchedulerDeploymentInformer.
|
||||||
|
ArangoSchedulerDeployments() ArangoSchedulerDeploymentInformer
|
||||||
|
// ArangoSchedulerPods returns a ArangoSchedulerPodInformer.
|
||||||
|
ArangoSchedulerPods() ArangoSchedulerPodInformer
|
||||||
}
|
}
|
||||||
|
|
||||||
type version struct {
|
type version struct {
|
||||||
|
@ -47,3 +55,23 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList
|
||||||
func (v *version) ArangoProfiles() ArangoProfileInformer {
|
func (v *version) ArangoProfiles() ArangoProfileInformer {
|
||||||
return &arangoProfileInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
|
return &arangoProfileInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobs returns a ArangoSchedulerBatchJobInformer.
|
||||||
|
func (v *version) ArangoSchedulerBatchJobs() ArangoSchedulerBatchJobInformer {
|
||||||
|
return &arangoSchedulerBatchJobInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobs returns a ArangoSchedulerCronJobInformer.
|
||||||
|
func (v *version) ArangoSchedulerCronJobs() ArangoSchedulerCronJobInformer {
|
||||||
|
return &arangoSchedulerCronJobInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerDeployments returns a ArangoSchedulerDeploymentInformer.
|
||||||
|
func (v *version) ArangoSchedulerDeployments() ArangoSchedulerDeploymentInformer {
|
||||||
|
return &arangoSchedulerDeploymentInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerPods returns a ArangoSchedulerPodInformer.
|
||||||
|
func (v *version) ArangoSchedulerPods() ArangoSchedulerPodInformer {
|
||||||
|
return &arangoSchedulerPodInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
|
||||||
|
}
|
||||||
|
|
103
pkg/generated/listers/scheduler/v1beta1/arangoschedulerbatchjob.go
generated
Normal file
103
pkg/generated/listers/scheduler/v1beta1/arangoschedulerbatchjob.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobLister helps list ArangoSchedulerBatchJobs.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoSchedulerBatchJobLister interface {
|
||||||
|
// List lists all ArangoSchedulerBatchJobs in the indexer.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerBatchJob, err error)
|
||||||
|
// ArangoSchedulerBatchJobs returns an object that can list and get ArangoSchedulerBatchJobs.
|
||||||
|
ArangoSchedulerBatchJobs(namespace string) ArangoSchedulerBatchJobNamespaceLister
|
||||||
|
ArangoSchedulerBatchJobListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerBatchJobLister implements the ArangoSchedulerBatchJobLister interface.
|
||||||
|
type arangoSchedulerBatchJobLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoSchedulerBatchJobLister returns a new ArangoSchedulerBatchJobLister.
|
||||||
|
func NewArangoSchedulerBatchJobLister(indexer cache.Indexer) ArangoSchedulerBatchJobLister {
|
||||||
|
return &arangoSchedulerBatchJobLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoSchedulerBatchJobs in the indexer.
|
||||||
|
func (s *arangoSchedulerBatchJobLister) List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1beta1.ArangoSchedulerBatchJob))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobs returns an object that can list and get ArangoSchedulerBatchJobs.
|
||||||
|
func (s *arangoSchedulerBatchJobLister) ArangoSchedulerBatchJobs(namespace string) ArangoSchedulerBatchJobNamespaceLister {
|
||||||
|
return arangoSchedulerBatchJobNamespaceLister{indexer: s.indexer, namespace: namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobNamespaceLister helps list and get ArangoSchedulerBatchJobs.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoSchedulerBatchJobNamespaceLister interface {
|
||||||
|
// List lists all ArangoSchedulerBatchJobs in the indexer for a given namespace.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerBatchJob, err error)
|
||||||
|
// Get retrieves the ArangoSchedulerBatchJob from the indexer for a given namespace and name.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
Get(name string) (*v1beta1.ArangoSchedulerBatchJob, error)
|
||||||
|
ArangoSchedulerBatchJobNamespaceListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerBatchJobNamespaceLister implements the ArangoSchedulerBatchJobNamespaceLister
|
||||||
|
// interface.
|
||||||
|
type arangoSchedulerBatchJobNamespaceLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoSchedulerBatchJobs in the indexer for a given namespace.
|
||||||
|
func (s arangoSchedulerBatchJobNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerBatchJob, err error) {
|
||||||
|
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1beta1.ArangoSchedulerBatchJob))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the ArangoSchedulerBatchJob from the indexer for a given namespace and name.
|
||||||
|
func (s arangoSchedulerBatchJobNamespaceLister) Get(name string) (*v1beta1.ArangoSchedulerBatchJob, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1beta1.Resource("arangoschedulerbatchjob"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerBatchJob), nil
|
||||||
|
}
|
103
pkg/generated/listers/scheduler/v1beta1/arangoschedulercronjob.go
generated
Normal file
103
pkg/generated/listers/scheduler/v1beta1/arangoschedulercronjob.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobLister helps list ArangoSchedulerCronJobs.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoSchedulerCronJobLister interface {
|
||||||
|
// List lists all ArangoSchedulerCronJobs in the indexer.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerCronJob, err error)
|
||||||
|
// ArangoSchedulerCronJobs returns an object that can list and get ArangoSchedulerCronJobs.
|
||||||
|
ArangoSchedulerCronJobs(namespace string) ArangoSchedulerCronJobNamespaceLister
|
||||||
|
ArangoSchedulerCronJobListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerCronJobLister implements the ArangoSchedulerCronJobLister interface.
|
||||||
|
type arangoSchedulerCronJobLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoSchedulerCronJobLister returns a new ArangoSchedulerCronJobLister.
|
||||||
|
func NewArangoSchedulerCronJobLister(indexer cache.Indexer) ArangoSchedulerCronJobLister {
|
||||||
|
return &arangoSchedulerCronJobLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoSchedulerCronJobs in the indexer.
|
||||||
|
func (s *arangoSchedulerCronJobLister) List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1beta1.ArangoSchedulerCronJob))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobs returns an object that can list and get ArangoSchedulerCronJobs.
|
||||||
|
func (s *arangoSchedulerCronJobLister) ArangoSchedulerCronJobs(namespace string) ArangoSchedulerCronJobNamespaceLister {
|
||||||
|
return arangoSchedulerCronJobNamespaceLister{indexer: s.indexer, namespace: namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobNamespaceLister helps list and get ArangoSchedulerCronJobs.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoSchedulerCronJobNamespaceLister interface {
|
||||||
|
// List lists all ArangoSchedulerCronJobs in the indexer for a given namespace.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerCronJob, err error)
|
||||||
|
// Get retrieves the ArangoSchedulerCronJob from the indexer for a given namespace and name.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
Get(name string) (*v1beta1.ArangoSchedulerCronJob, error)
|
||||||
|
ArangoSchedulerCronJobNamespaceListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerCronJobNamespaceLister implements the ArangoSchedulerCronJobNamespaceLister
|
||||||
|
// interface.
|
||||||
|
type arangoSchedulerCronJobNamespaceLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoSchedulerCronJobs in the indexer for a given namespace.
|
||||||
|
func (s arangoSchedulerCronJobNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerCronJob, err error) {
|
||||||
|
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1beta1.ArangoSchedulerCronJob))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the ArangoSchedulerCronJob from the indexer for a given namespace and name.
|
||||||
|
func (s arangoSchedulerCronJobNamespaceLister) Get(name string) (*v1beta1.ArangoSchedulerCronJob, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1beta1.Resource("arangoschedulercronjob"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerCronJob), nil
|
||||||
|
}
|
103
pkg/generated/listers/scheduler/v1beta1/arangoschedulerdeployment.go
generated
Normal file
103
pkg/generated/listers/scheduler/v1beta1/arangoschedulerdeployment.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerDeploymentLister helps list ArangoSchedulerDeployments.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoSchedulerDeploymentLister interface {
|
||||||
|
// List lists all ArangoSchedulerDeployments in the indexer.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerDeployment, err error)
|
||||||
|
// ArangoSchedulerDeployments returns an object that can list and get ArangoSchedulerDeployments.
|
||||||
|
ArangoSchedulerDeployments(namespace string) ArangoSchedulerDeploymentNamespaceLister
|
||||||
|
ArangoSchedulerDeploymentListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerDeploymentLister implements the ArangoSchedulerDeploymentLister interface.
|
||||||
|
type arangoSchedulerDeploymentLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoSchedulerDeploymentLister returns a new ArangoSchedulerDeploymentLister.
|
||||||
|
func NewArangoSchedulerDeploymentLister(indexer cache.Indexer) ArangoSchedulerDeploymentLister {
|
||||||
|
return &arangoSchedulerDeploymentLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoSchedulerDeployments in the indexer.
|
||||||
|
func (s *arangoSchedulerDeploymentLister) List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1beta1.ArangoSchedulerDeployment))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerDeployments returns an object that can list and get ArangoSchedulerDeployments.
|
||||||
|
func (s *arangoSchedulerDeploymentLister) ArangoSchedulerDeployments(namespace string) ArangoSchedulerDeploymentNamespaceLister {
|
||||||
|
return arangoSchedulerDeploymentNamespaceLister{indexer: s.indexer, namespace: namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerDeploymentNamespaceLister helps list and get ArangoSchedulerDeployments.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoSchedulerDeploymentNamespaceLister interface {
|
||||||
|
// List lists all ArangoSchedulerDeployments in the indexer for a given namespace.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerDeployment, err error)
|
||||||
|
// Get retrieves the ArangoSchedulerDeployment from the indexer for a given namespace and name.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
Get(name string) (*v1beta1.ArangoSchedulerDeployment, error)
|
||||||
|
ArangoSchedulerDeploymentNamespaceListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerDeploymentNamespaceLister implements the ArangoSchedulerDeploymentNamespaceLister
|
||||||
|
// interface.
|
||||||
|
type arangoSchedulerDeploymentNamespaceLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoSchedulerDeployments in the indexer for a given namespace.
|
||||||
|
func (s arangoSchedulerDeploymentNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerDeployment, err error) {
|
||||||
|
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1beta1.ArangoSchedulerDeployment))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the ArangoSchedulerDeployment from the indexer for a given namespace and name.
|
||||||
|
func (s arangoSchedulerDeploymentNamespaceLister) Get(name string) (*v1beta1.ArangoSchedulerDeployment, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1beta1.Resource("arangoschedulerdeployment"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerDeployment), nil
|
||||||
|
}
|
103
pkg/generated/listers/scheduler/v1beta1/arangoschedulerpod.go
generated
Normal file
103
pkg/generated/listers/scheduler/v1beta1/arangoschedulerpod.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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1beta1 "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
"k8s.io/client-go/tools/cache"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ArangoSchedulerPodLister helps list ArangoSchedulerPods.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoSchedulerPodLister interface {
|
||||||
|
// List lists all ArangoSchedulerPods in the indexer.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerPod, err error)
|
||||||
|
// ArangoSchedulerPods returns an object that can list and get ArangoSchedulerPods.
|
||||||
|
ArangoSchedulerPods(namespace string) ArangoSchedulerPodNamespaceLister
|
||||||
|
ArangoSchedulerPodListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerPodLister implements the ArangoSchedulerPodLister interface.
|
||||||
|
type arangoSchedulerPodLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewArangoSchedulerPodLister returns a new ArangoSchedulerPodLister.
|
||||||
|
func NewArangoSchedulerPodLister(indexer cache.Indexer) ArangoSchedulerPodLister {
|
||||||
|
return &arangoSchedulerPodLister{indexer: indexer}
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoSchedulerPods in the indexer.
|
||||||
|
func (s *arangoSchedulerPodLister) List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
err = cache.ListAll(s.indexer, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1beta1.ArangoSchedulerPod))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerPods returns an object that can list and get ArangoSchedulerPods.
|
||||||
|
func (s *arangoSchedulerPodLister) ArangoSchedulerPods(namespace string) ArangoSchedulerPodNamespaceLister {
|
||||||
|
return arangoSchedulerPodNamespaceLister{indexer: s.indexer, namespace: namespace}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArangoSchedulerPodNamespaceLister helps list and get ArangoSchedulerPods.
|
||||||
|
// All objects returned here must be treated as read-only.
|
||||||
|
type ArangoSchedulerPodNamespaceLister interface {
|
||||||
|
// List lists all ArangoSchedulerPods in the indexer for a given namespace.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerPod, err error)
|
||||||
|
// Get retrieves the ArangoSchedulerPod from the indexer for a given namespace and name.
|
||||||
|
// Objects returned here must be treated as read-only.
|
||||||
|
Get(name string) (*v1beta1.ArangoSchedulerPod, error)
|
||||||
|
ArangoSchedulerPodNamespaceListerExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// arangoSchedulerPodNamespaceLister implements the ArangoSchedulerPodNamespaceLister
|
||||||
|
// interface.
|
||||||
|
type arangoSchedulerPodNamespaceLister struct {
|
||||||
|
indexer cache.Indexer
|
||||||
|
namespace string
|
||||||
|
}
|
||||||
|
|
||||||
|
// List lists all ArangoSchedulerPods in the indexer for a given namespace.
|
||||||
|
func (s arangoSchedulerPodNamespaceLister) List(selector labels.Selector) (ret []*v1beta1.ArangoSchedulerPod, err error) {
|
||||||
|
err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
|
||||||
|
ret = append(ret, m.(*v1beta1.ArangoSchedulerPod))
|
||||||
|
})
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get retrieves the ArangoSchedulerPod from the indexer for a given namespace and name.
|
||||||
|
func (s arangoSchedulerPodNamespaceLister) Get(name string) (*v1beta1.ArangoSchedulerPod, error) {
|
||||||
|
obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if !exists {
|
||||||
|
return nil, errors.NewNotFound(v1beta1.Resource("arangoschedulerpod"), name)
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.ArangoSchedulerPod), nil
|
||||||
|
}
|
|
@ -29,3 +29,35 @@ type ArangoProfileListerExpansion interface{}
|
||||||
// ArangoProfileNamespaceListerExpansion allows custom methods to be added to
|
// ArangoProfileNamespaceListerExpansion allows custom methods to be added to
|
||||||
// ArangoProfileNamespaceLister.
|
// ArangoProfileNamespaceLister.
|
||||||
type ArangoProfileNamespaceListerExpansion interface{}
|
type ArangoProfileNamespaceListerExpansion interface{}
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoSchedulerBatchJobLister.
|
||||||
|
type ArangoSchedulerBatchJobListerExpansion interface{}
|
||||||
|
|
||||||
|
// ArangoSchedulerBatchJobNamespaceListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoSchedulerBatchJobNamespaceLister.
|
||||||
|
type ArangoSchedulerBatchJobNamespaceListerExpansion interface{}
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoSchedulerCronJobLister.
|
||||||
|
type ArangoSchedulerCronJobListerExpansion interface{}
|
||||||
|
|
||||||
|
// ArangoSchedulerCronJobNamespaceListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoSchedulerCronJobNamespaceLister.
|
||||||
|
type ArangoSchedulerCronJobNamespaceListerExpansion interface{}
|
||||||
|
|
||||||
|
// ArangoSchedulerDeploymentListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoSchedulerDeploymentLister.
|
||||||
|
type ArangoSchedulerDeploymentListerExpansion interface{}
|
||||||
|
|
||||||
|
// ArangoSchedulerDeploymentNamespaceListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoSchedulerDeploymentNamespaceLister.
|
||||||
|
type ArangoSchedulerDeploymentNamespaceListerExpansion interface{}
|
||||||
|
|
||||||
|
// ArangoSchedulerPodListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoSchedulerPodLister.
|
||||||
|
type ArangoSchedulerPodListerExpansion interface{}
|
||||||
|
|
||||||
|
// ArangoSchedulerPodNamespaceListerExpansion allows custom methods to be added to
|
||||||
|
// ArangoSchedulerPodNamespaceLister.
|
||||||
|
type ArangoSchedulerPodNamespaceListerExpansion interface{}
|
||||||
|
|
114
pkg/handlers/generic/parent/parent.go
Normal file
114
pkg/handlers/generic/parent/parent.go
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
//
|
||||||
|
// 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 parent
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/logging"
|
||||||
|
operator "github.com/arangodb/kube-arangodb/pkg/operatorV2"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/operatorV2/operation"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/generic"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors"
|
||||||
|
)
|
||||||
|
|
||||||
|
var logger = logging.Global().RegisterAndGetLogger("generic-parent-operator", logging.Info)
|
||||||
|
|
||||||
|
type NotifyHandlerClientFactory[T meta.Object, C NotifyHandlerClient[T]] func(namespace string) C
|
||||||
|
|
||||||
|
type NotifyHandlerClient[T meta.Object] interface {
|
||||||
|
generic.GetInterface[T]
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewNotifyHandler[T meta.Object, C NotifyHandlerClient[T]](name string, operator operator.Operator, client NotifyHandlerClientFactory[T, C], gvk schema.GroupVersionKind, notifiable ...schema.GroupVersionKind) operator.Handler {
|
||||||
|
return notifyHandler[T, C]{
|
||||||
|
name: name,
|
||||||
|
client: client,
|
||||||
|
gvk: gvk,
|
||||||
|
operator: operator,
|
||||||
|
notifiable: notifiable,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type notifyHandler[T meta.Object, C NotifyHandlerClient[T]] struct {
|
||||||
|
operator operator.Operator
|
||||||
|
name string
|
||||||
|
client NotifyHandlerClientFactory[T, C]
|
||||||
|
gvk schema.GroupVersionKind
|
||||||
|
notifiable []schema.GroupVersionKind
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p notifyHandler[T, C]) Name() string {
|
||||||
|
return p.name
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p notifyHandler[T, C]) Handle(ctx context.Context, item operation.Item) error {
|
||||||
|
logger := logger.WrapObj(item)
|
||||||
|
if item.Operation == operation.Update {
|
||||||
|
obj, err := p.client(item.Namespace).Get(ctx, item.Name, meta.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
logger.Debug("Not Found")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
logger.Err(err).Warn("Unexpected Error")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, owner := range obj.GetOwnerReferences() {
|
||||||
|
if i, err := operation.NewItemFromGVKObject(item.Operation, schema.FromAPIVersionAndKind(owner.APIVersion, owner.Kind), obj); err == nil {
|
||||||
|
if p.isNotifiable(i) {
|
||||||
|
logger.Debug("Parent notified")
|
||||||
|
p.operator.EnqueueItem(i)
|
||||||
|
} else {
|
||||||
|
logger.Debug("Parent notify skipped")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p notifyHandler[T, C]) isNotifiable(i operation.Item) bool {
|
||||||
|
for _, g := range p.notifiable {
|
||||||
|
if version := g.Version; version != "" && version != i.Version {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if kind := g.Kind; kind != "" && kind != i.Kind {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if group := g.Group; group != "" && group != i.Group {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p notifyHandler[T, C]) CanBeHandled(item operation.Item) bool {
|
||||||
|
return item.GVK(p.gvk)
|
||||||
|
}
|
228
pkg/handlers/scheduler/batchjob/handler.go
Normal file
228
pkg/handlers/scheduler/batchjob/handler.go
Normal file
|
@ -0,0 +1,228 @@
|
||||||
|
//
|
||||||
|
// 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 batchjob
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
batch "k8s.io/api/batch/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/equality"
|
||||||
|
apiErrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/client-go/kubernetes"
|
||||||
|
|
||||||
|
schedulerApi "github.com/arangodb/kube-arangodb/pkg/apis/scheduler/v1beta1"
|
||||||
|
sharedApi "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/deployment/patch"
|
||||||
|
arangoClientSet "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/logging"
|
||||||
|
operator "github.com/arangodb/kube-arangodb/pkg/operatorV2"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/operatorV2/event"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/operatorV2/operation"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/scheduler"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/kerrors"
|
||||||
|
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/patcher"
|
||||||
|
)
|
||||||
|
|
||||||
|
var logger = logging.Global().RegisterAndGetLogger("scheduler-batchjob-operator", logging.Info)
|
||||||
|
|
||||||
|
type handler struct {
|
||||||
|
client arangoClientSet.Interface
|
||||||
|
kubeClient kubernetes.Interface
|
||||||
|
|
||||||
|
eventRecorder event.RecorderInstance
|
||||||
|
|
||||||
|
operator operator.Operator
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *handler) Name() string {
|
||||||
|
return Kind()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *handler) Handle(ctx context.Context, item operation.Item) error {
|
||||||
|
// Get Backup object. It also covers NotFound case
|
||||||
|
|
||||||
|
object, err := util.WithKubernetesContextTimeoutP2A2(ctx, h.client.SchedulerV1beta1().ArangoSchedulerBatchJobs(item.Namespace).Get, item.Name, meta.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if apiErrors.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
status := object.Status.DeepCopy()
|
||||||
|
|
||||||
|
changed, reconcileErr := operator.HandleP3WithStop(ctx, item, object, status, h.handle)
|
||||||
|
if reconcileErr != nil && !operator.IsReconcile(reconcileErr) {
|
||||||
|
logger.Err(reconcileErr).Warn("Fail for %s %s/%s",
|
||||||
|
item.Kind,
|
||||||
|
item.Namespace,
|
||||||
|
item.Name)
|
||||||
|
|
||||||
|
return reconcileErr
|
||||||
|
}
|
||||||
|
|
||||||
|
if !changed {
|
||||||
|
return reconcileErr
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Debug("Updating %s %s/%s",
|
||||||
|
item.Kind,
|
||||||
|
item.Namespace,
|
||||||
|
item.Name)
|
||||||
|
|
||||||
|
if _, err := operator.WithSchedulerBatchJobUpdateStatusInterfaceRetry(context.Background(), h.client.SchedulerV1beta1().ArangoSchedulerBatchJobs(object.GetNamespace()), object, *status, meta.UpdateOptions{}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return reconcileErr
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *handler) handle(ctx context.Context, item operation.Item, extension *schedulerApi.ArangoSchedulerBatchJob, status *schedulerApi.ArangoSchedulerBatchJobStatus) (bool, error) {
|
||||||
|
return operator.HandleP3(ctx, item, extension, status, h.HandleObject)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *handler) HandleObject(ctx context.Context, item operation.Item, extension *schedulerApi.ArangoSchedulerBatchJob, status *schedulerApi.ArangoSchedulerBatchJobStatus) (bool, error) {
|
||||||
|
calculatedProfiles, profilesChecksum, err := scheduler.Profiles(ctx, h.client.SchedulerV1beta1().ArangoProfiles(extension.GetNamespace()), extension.GetLabels(), extension.Spec.Profiles...)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var batchJobTemplate batch.Job
|
||||||
|
batchJobTemplate.ObjectMeta = meta.ObjectMeta{
|
||||||
|
Name: extension.ObjectMeta.Name,
|
||||||
|
Labels: extension.ObjectMeta.Labels,
|
||||||
|
Annotations: extension.ObjectMeta.Annotations,
|
||||||
|
}
|
||||||
|
|
||||||
|
extension.Spec.JobSpec.DeepCopyInto(&batchJobTemplate.Spec)
|
||||||
|
|
||||||
|
deploymentSpecHash, err := util.SHA256FromJSON(batchJobTemplate)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
hash := util.SHA256FromString(fmt.Sprintf("%s|%s", profilesChecksum, deploymentSpecHash))
|
||||||
|
|
||||||
|
if err := schedulerApi.ProfileTemplates(util.FormatList(calculatedProfiles, func(a util.KV[string, schedulerApi.ProfileAcceptedTemplate]) *schedulerApi.ProfileTemplate {
|
||||||
|
return a.V.Template
|
||||||
|
})).RenderOnTemplate(&batchJobTemplate.Spec.Template); err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if status.Object == nil {
|
||||||
|
// Create
|
||||||
|
|
||||||
|
obj := &batch.Job{}
|
||||||
|
obj.ObjectMeta = meta.ObjectMeta{
|
||||||
|
Name: extension.ObjectMeta.Name,
|
||||||
|
Labels: extension.ObjectMeta.Labels,
|
||||||
|
Annotations: extension.ObjectMeta.Annotations,
|
||||||
|
}
|
||||||
|
batchJobTemplate.Spec.DeepCopyInto(&obj.Spec)
|
||||||
|
|
||||||
|
obj.OwnerReferences = append(obj.OwnerReferences, extension.AsOwner())
|
||||||
|
|
||||||
|
newObj, err := h.kubeClient.BatchV1().Jobs(extension.GetNamespace()).Create(ctx, obj, meta.CreateOptions{})
|
||||||
|
if err != nil {
|
||||||
|
h.eventRecorder.Warning(extension, "Create Failed", "Unable to create Job: %s", err.Error())
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
h.eventRecorder.Normal(extension, "Created", "Job %s created", newObj.GetName())
|
||||||
|
|
||||||
|
status.Object = util.NewType(sharedApi.NewObjectWithChecksum(newObj, hash))
|
||||||
|
return true, operator.Reconcile("Job Reference Changed")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find existing
|
||||||
|
obj, err := h.kubeClient.BatchV1().Jobs(status.Object.GetNamespace(extension)).Get(ctx, status.Object.GetName(), meta.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
if kerrors.IsNotFound(err) {
|
||||||
|
// Object removed
|
||||||
|
h.eventRecorder.Warning(extension, "Removed", "Job %s is gone", status.Object.GetName())
|
||||||
|
status.Object = nil
|
||||||
|
return true, operator.Reconcile("Job Reference Removed")
|
||||||
|
}
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
profileNames := util.FormatList(calculatedProfiles, func(a util.KV[string, schedulerApi.ProfileAcceptedTemplate]) string {
|
||||||
|
return a.K
|
||||||
|
})
|
||||||
|
|
||||||
|
// Try to fetch status
|
||||||
|
if !equality.Semantic.DeepEqual(status.Profiles, profileNames) {
|
||||||
|
status.Profiles = profileNames
|
||||||
|
return true, operator.Reconcile("Status Changed")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try to fetch status
|
||||||
|
if !equality.Semantic.DeepEqual(status.JobStatus, obj.Status) {
|
||||||
|
obj.Status.DeepCopyInto(&status.JobStatus)
|
||||||
|
return true, operator.Reconcile("Status Changed")
|
||||||
|
}
|
||||||
|
|
||||||
|
if obj.GetDeletionTimestamp() != nil {
|
||||||
|
// Object is deleting, check later
|
||||||
|
return false, operator.Reconcile("Job Deleting")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !status.Object.Equals(obj) {
|
||||||
|
// Object changed or was recreated
|
||||||
|
h.eventRecorder.Warning(extension, "Removed", "Job %s reference is invalid", status.Object.GetName())
|
||||||
|
if err := h.kubeClient.BatchV1().Jobs(status.Object.GetNamespace(extension)).Delete(ctx, status.Object.GetName(), meta.DeleteOptions{}); err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, operator.Reconcile("Job Deleted")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Object is equal, lets check if changed
|
||||||
|
if hash != status.Object.GetChecksum() {
|
||||||
|
// Checksum changed, lets apply changes
|
||||||
|
_, _, err := patcher.Patcher[*batch.Job](ctx, h.kubeClient.BatchV1().Jobs(status.Object.GetNamespace(extension)), obj, meta.PatchOptions{}, func(in *batch.Job) []patch.Item {
|
||||||
|
return []patch.Item{
|
||||||
|
patch.ItemReplace(patch.NewPath("spec"), batchJobTemplate.Spec),
|
||||||
|
}
|
||||||
|
}, patcher.PatchMetadata(obj))
|
||||||
|
if err != nil {
|
||||||
|
h.eventRecorder.Warning(extension, "Patch Failed", "Unable to patch Job: %s", err.Error())
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
h.eventRecorder.Normal(extension, "Updated", "Job %s patched", obj.GetName())
|
||||||
|
status.Object.Checksum = util.NewType(hash)
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *handler) CanBeHandled(item operation.Item) bool {
|
||||||
|
return item.Group == Group() &&
|
||||||
|
item.Version == Version() &&
|
||||||
|
item.Kind == Kind()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *handler) init() {}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue