Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
chinhtranvan committed Dec 19, 2023
1 parent 18e71a5 commit 682325d
Show file tree
Hide file tree
Showing 17 changed files with 565 additions and 20 deletions.
11 changes: 8 additions & 3 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ repo: github.com/vertica/vertica-kubernetes
resources:
- api:
crdVersion: v1
namespaced: false
controller: true
domain: vertica.com
kind: VerticaDB
Expand All @@ -25,7 +24,6 @@ resources:
webhookVersion: v1
- api:
crdVersion: v1
namespaced: false
controller: true
domain: vertica.com
kind: VerticaAutoscaler
Expand All @@ -37,7 +35,6 @@ resources:
webhookVersion: v1
- api:
crdVersion: v1
namespaced: false
controller: true
domain: vertica.com
kind: EventTrigger
Expand All @@ -54,4 +51,12 @@ resources:
kind: VerticaDB
path: github.com/vertica/vertica-kubernetes/api/v1
version: v1
- api:
crdVersion: v1
namespaced: true
controller: true
domain: vertica.com
kind: VerticaRestorePointsQuery
path: github.com/vertica/vertica-kubernetes/api/v1
version: v1
version: "3"
6 changes: 4 additions & 2 deletions api/v1/groupversion_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ const (
Group = "vertica.com"
Version = "v1"

VerticaDBKind = "VerticaDB"
VerticaDBKindPlural = "verticadbs"
VerticaDBKind = "VerticaDB"
VerticaDBKindPlural = "verticadbs"
RestorePointsQueryKind = "VerticaRestorePointsQuery"
)

var (
Expand All @@ -41,4 +42,5 @@ var (

// AddToScheme adds the types in this group-version to the given scheme.
AddToScheme = SchemeBuilder.AddToScheme
GkVRPQ = schema.GroupKind{Group: Group, Kind: RestorePointsQueryKind}
)
104 changes: 104 additions & 0 deletions api/v1/verticarestorepointsquery_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
/*
Copyright [2021-2023] Open Text.
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.
*/

package v1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
)

// VerticaRestorePointsQuerySpec defines the desired state of VerticaRestorePointsQuery
type VerticaRestorePointsQuerySpec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file

// +kubebuilder:validation:Required
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors="urn:alm:descriptor:com.tectonic.ui:text"
// The name of the VerticaDB CR that this VerticaRestorePointsQuery is defined for. The
// VerticaDB object must exist in the same namespace as this object.
VerticaDBName string `json:"verticaDBName"`

// +operator-sdk:csv:customresourcedefinitions:type=spec
// Optional parameter that will limit the query to only restore points
// from this archvie
ArchiveName string `json:"archiveName"`
}

const (
ArchiveNm = "backup"
)

// VerticaRestorePointsQueryStatus defines the observed state of VerticaRestorePointsQuery
type VerticaRestorePointsQueryStatus struct {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
}

//+kubebuilder:object:root=true
//+kubebuilder:subresource:status

// VerticaRestorePointsQuery is the Schema for the verticarestorepointsqueries API
type VerticaRestorePointsQuery struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec VerticaRestorePointsQuerySpec `json:"spec,omitempty"`
Status VerticaRestorePointsQueryStatus `json:"status,omitempty"`
}

//+kubebuilder:object:root=true

// VerticaRestorePointsQueryList contains a list of VerticaRestorePointsQuery
type VerticaRestorePointsQueryList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []VerticaRestorePointsQuery `json:"items"`
}

func init() {
SchemeBuilder.Register(&VerticaRestorePointsQuery{}, &VerticaRestorePointsQueryList{})
}

func (vrqb *VerticaRestorePointsQuery) ExtractNamespacedName() types.NamespacedName {
return types.NamespacedName{
Name: vrqb.ObjectMeta.Name,
Namespace: vrqb.ObjectMeta.Namespace,
}
}

func MakeSampleVrqbName() types.NamespacedName {
return types.NamespacedName{Name: "vrqb-sample", Namespace: "default"}
}

// MakeVrqb will make an VerticaRestorePointsQuery for test purposes
func MakeVrqb() *VerticaRestorePointsQuery {
VDBNm := MakeVDBName()
nm := MakeSampleVrqbName()
return &VerticaRestorePointsQuery{
TypeMeta: metav1.TypeMeta{
APIVersion: GroupVersion.String(),
Kind: RestorePointsQueryKind,
},
ObjectMeta: metav1.ObjectMeta{
Name: nm.Name,
Namespace: nm.Namespace,
UID: "zxcvbn-ghi-lkm",
},
Spec: VerticaRestorePointsQuerySpec{
VerticaDBName: VDBNm.Name,
ArchiveName: ArchiveNm,
},
}
}
89 changes: 89 additions & 0 deletions api/v1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions cmd/operator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ import (
"github.com/vertica/vertica-kubernetes/pkg/controllers/et"
"github.com/vertica/vertica-kubernetes/pkg/controllers/vas"
"github.com/vertica/vertica-kubernetes/pkg/controllers/vdb"
"github.com/vertica/vertica-kubernetes/pkg/controllers/vrqb"
vmeta "github.com/vertica/vertica-kubernetes/pkg/meta"
"github.com/vertica/vertica-kubernetes/pkg/opcfg"
"github.com/vertica/vertica-kubernetes/pkg/security"
Expand Down Expand Up @@ -77,6 +78,7 @@ func init() {

utilruntime.Must(vapiB1.AddToScheme(scheme))
utilruntime.Must(vapiV1.AddToScheme(scheme))
utilruntime.Must(vapiV1.AddToScheme(scheme))
//+kubebuilder:scaffold:scheme
}

Expand Down Expand Up @@ -129,6 +131,13 @@ func addReconcilersToManager(mgr manager.Manager, restCfg *rest.Config, oc *opcf
setupLog.Error(err, "unable to create controller", "controller", "EventTrigger")
os.Exit(1)
}
if err := (&vrqb.VerticaRestorePointsQueryReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "VerticaRestorePointsQuery")
os.Exit(1)
}
//+kubebuilder:scaffold:builder
}

Expand Down
2 changes: 2 additions & 0 deletions config/crd/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ resources:
- bases/vertica.com_verticadbs.yaml
- bases/vertica.com_verticaautoscalers.yaml
- bases/vertica.com_eventtriggers.yaml
- bases/vertica.com_verticarestorepointsqueries.yaml
#+kubebuilder:scaffold:crdkustomizeresource

patchesStrategicMerge:
# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix.
- patches/webhook_in_verticadbs.yaml
- patches/webhook_in_verticaautoscalers.yaml
- patches/webhook_in_eventtriggers.yaml
- patches/webhook_in_verticarestorepointsqueries.yaml
#+kubebuilder:scaffold:crdkustomizewebhookpatch

# [CERTMANAGER] there was an optional patch to include an annotation that
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# The following patch adds a directive for certmanager to inject CA into the CRD
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME)
name: verticarestorepointsqueries.vertica.com
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# The following patch enables a conversion webhook for the CRD
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: verticarestorepointsqueries.vertica.com
spec:
conversion:
strategy: None
31 changes: 31 additions & 0 deletions config/rbac/verticarestorepointsquery_editor_role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# permissions for end users to edit verticarestorepointsqueries.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: verticarestorepointsquery-editor-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: verticadb-operator
app.kubernetes.io/part-of: verticadb-operator
app.kubernetes.io/managed-by: kustomize
name: verticarestorepointsquery-editor-role
rules:
- apiGroups:
- vertica.com
resources:
- verticarestorepointsqueries
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- vertica.com
resources:
- verticarestorepointsqueries/status
verbs:
- get
27 changes: 27 additions & 0 deletions config/rbac/verticarestorepointsquery_viewer_role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# permissions for end users to view verticarestorepointsqueries.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: verticarestorepointsquery-viewer-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: verticadb-operator
app.kubernetes.io/part-of: verticadb-operator
app.kubernetes.io/managed-by: kustomize
name: verticarestorepointsquery-viewer-role
rules:
- apiGroups:
- vertica.com
resources:
- verticarestorepointsqueries
verbs:
- get
- list
- watch
- apiGroups:
- vertica.com
resources:
- verticarestorepointsqueries/status
verbs:
- get
1 change: 1 addition & 0 deletions config/samples/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ resources:
- v1beta1_verticaautoscaler.yaml
- v1beta1_eventtrigger.yaml
- v1_verticadb.yaml
- v1_verticarestorepointsquery.yaml
#+kubebuilder:scaffold:manifestskustomizesamples
12 changes: 12 additions & 0 deletions config/samples/v1_verticarestorepointsquery.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: vertica.com/v1
kind: VerticaRestorePointsQuery
metadata:
labels:
app.kubernetes.io/name: verticarestorepointsquery
app.kubernetes.io/instance: verticarestorepointsquery-sample
app.kubernetes.io/part-of: verticadb-operator
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/created-by: verticadb-operator
name: verticarestorepointsquery-sample
spec:
# TODO(user): Add fields here
Loading

0 comments on commit 682325d

Please sign in to comment.