Skip to content

Commit

Permalink
api: scaffolding for volumegroupreplicationclass
Browse files Browse the repository at this point in the history
adding scaffolding for volumegroupreplicationclass
using below commands
```
cp cmd/manager/main.go .
kubebuilder create api --group replication.storage \
--version v1alpha1 --kind VolumeGroupReplicationClass --namespaced=false
mv main.go cmd/manager/
make generate
make manifests
```

Signed-off-by: Madhu Rajanna <[email protected]>
  • Loading branch information
Madhu-1 committed Jun 13, 2024
1 parent c7f7a48 commit 484674c
Show file tree
Hide file tree
Showing 16 changed files with 494 additions and 0 deletions.
9 changes: 9 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,13 @@ resources:
kind: VolumeGroupReplicationClass
path: github.com/csi-addons/kubernetes-csi-addons/apis/replication.storage/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
controller: true
domain: openshift.io
group: replication.storage
kind: VolumeGroupReplication
path: github.com/csi-addons/kubernetes-csi-addons/apis/replication.storage/v1alpha1
version: v1alpha1
version: "3"
64 changes: 64 additions & 0 deletions apis/replication.storage/v1alpha1/volumegroupreplication_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
Copyright 2022 The Kubernetes-CSI-Addons Authors.
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 v1alpha1

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

// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

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

// Foo is an example field of VolumeGroupReplication. Edit volumegroupreplication_types.go to remove/update
Foo string `json:"foo,omitempty"`
}

// VolumeGroupReplicationStatus defines the observed state of VolumeGroupReplication
type VolumeGroupReplicationStatus 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

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

Spec VolumeGroupReplicationSpec `json:"spec,omitempty"`
Status VolumeGroupReplicationStatus `json:"status,omitempty"`
}

//+kubebuilder:object:root=true

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

func init() {
SchemeBuilder.Register(&VolumeGroupReplication{}, &VolumeGroupReplicationList{})
}
89 changes: 89 additions & 0 deletions apis/replication.storage/v1alpha1/zz_generated.deepcopy.go

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

7 changes: 7 additions & 0 deletions cmd/manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,13 @@ func main() {
setupLog.Error(err, "unable to create controller", "controller", "VolumeGroupReplicationClass")
os.Exit(1)
}
if err = (&replicationController.VolumeGroupReplicationReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "VolumeGroupReplication")
os.Exit(1)
}
//+kubebuilder:scaffold:builder

if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.15.0
name: volumegroupreplications.replication.storage.openshift.io
spec:
group: replication.storage.openshift.io
names:
kind: VolumeGroupReplication
listKind: VolumeGroupReplicationList
plural: volumegroupreplications
singular: volumegroupreplication
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: VolumeGroupReplication is the Schema for the volumegroupreplications
API
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: VolumeGroupReplicationSpec defines the desired state of VolumeGroupReplication
properties:
foo:
description: Foo is an example field of VolumeGroupReplication. Edit
volumegroupreplication_types.go to remove/update
type: string
type: object
status:
description: VolumeGroupReplicationStatus defines the observed state of
VolumeGroupReplication
type: object
type: object
served: true
storage: true
subresources:
status: {}
3 changes: 3 additions & 0 deletions config/crd/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ resources:
- bases/replication.storage.openshift.io_volumereplications.yaml
- bases/replication.storage.openshift.io_volumereplicationclasses.yaml
- bases/replication.storage.openshift.io_volumegroupreplicationclasses.yaml
- bases/replication.storage.openshift.io_volumegroupreplications.yaml
# yamllint disable-line rule:comments
#+kubebuilder:scaffold:crdkustomizeresource

Expand All @@ -23,6 +24,7 @@ patchesStrategicMerge:
#- patches/webhook_in_volumereplications.yaml
#- patches/webhook_in_volumereplicationclasses.yaml
#- patches/webhook_in_volumegroupreplicationclasses.yaml
#- patches/webhook_in_volumegroupreplications.yaml
#+kubebuilder:scaffold:crdkustomizewebhookpatch

# [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix.
Expand All @@ -32,6 +34,7 @@ patchesStrategicMerge:
#- patches/cainjection_in_volumereplications.yaml
#- patches/cainjection_in_volumereplicationclasses.yaml
#- patches/cainjection_in_volumegroupreplicationclasses.yaml
#- patches/cainjection_in_volumegroupreplications.yaml
#+kubebuilder:scaffold:crdkustomizecainjectionpatch

# the following config is for teaching kustomize how to do kustomization for CRDs.
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: volumegroupreplications.replication.storage.openshift.io
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# The following patch enables a conversion webhook for the CRD
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: volumegroupreplications.replication.storage.openshift.io
spec:
conversion:
strategy: Webhook
webhook:
clientConfig:
service:
namespace: system
name: webhook-service
path: /convert
conversionReviewVersions:
- v1
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# permissions for end users to edit volumegroupreplications.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: volumegroupreplication-editor-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: kubernetes-csi-addons
app.kubernetes.io/part-of: kubernetes-csi-addons
app.kubernetes.io/managed-by: kustomize
name: volumegroupreplication-editor-role
rules:
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplications
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplications/status
verbs:
- get
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# permissions for end users to view volumegroupreplications.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: volumegroupreplication-viewer-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: kubernetes-csi-addons
app.kubernetes.io/part-of: kubernetes-csi-addons
app.kubernetes.io/managed-by: kustomize
name: volumegroupreplication-viewer-role
rules:
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplications
verbs:
- get
- list
- watch
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplications/status
verbs:
- get
26 changes: 26 additions & 0 deletions config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,32 @@ rules:
- get
- patch
- update
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplications
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplications/finalizers
verbs:
- update
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplications/status
verbs:
- get
- patch
- update
- apiGroups:
- replication.storage.openshift.io
resources:
Expand Down
Loading

0 comments on commit 484674c

Please sign in to comment.