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 <madhupr007@gmail.com>
  • Loading branch information
Madhu-1 committed Jun 13, 2024
1 parent 702a98b commit c7f7a48
Show file tree
Hide file tree
Showing 16 changed files with 500 additions and 0 deletions.
12 changes: 12 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Code generated by tool. DO NOT EDIT.
# This file is used to track the info used to scaffold your project
# and allow the plugins properly work.
# More info: https://book.kubebuilder.io/reference/project-config.html
domain: openshift.io
layout:
- go.kubebuilder.io/v3
Expand Down Expand Up @@ -58,4 +62,12 @@ resources:
kind: VolumeReplicationClass
path: github.com/csi-addons/kubernetes-csi-addons/apis/replication.storage/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
controller: true
domain: openshift.io
group: replication.storage
kind: VolumeGroupReplicationClass
path: github.com/csi-addons/kubernetes-csi-addons/apis/replication.storage/v1alpha1
version: v1alpha1
version: "3"
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/*
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.

// VolumeGroupReplicationClassSpec defines the desired state of VolumeGroupReplicationClass
type VolumeGroupReplicationClassSpec 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 VolumeGroupReplicationClass. Edit volumegroupreplicationclass_types.go to remove/update
Foo string `json:"foo,omitempty"`
}

// VolumeGroupReplicationClassStatus defines the observed state of VolumeGroupReplicationClass
type VolumeGroupReplicationClassStatus 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
//+kubebuilder:resource:scope=Cluster

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

Spec VolumeGroupReplicationClassSpec `json:"spec,omitempty"`
Status VolumeGroupReplicationClassStatus `json:"status,omitempty"`
}

//+kubebuilder:object:root=true

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

func init() {
SchemeBuilder.Register(&VolumeGroupReplicationClass{}, &VolumeGroupReplicationClassList{})
}
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 @@ -197,6 +197,13 @@ func main() {
os.Exit(1)
}

if err = (&replicationController.VolumeGroupReplicationClassReconciler{
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "VolumeGroupReplicationClass")
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,57 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.15.0
name: volumegroupreplicationclasses.replication.storage.openshift.io
spec:
group: replication.storage.openshift.io
names:
kind: VolumeGroupReplicationClass
listKind: VolumeGroupReplicationClassList
plural: volumegroupreplicationclasses
singular: volumegroupreplicationclass
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: VolumeGroupReplicationClass is the Schema for the volumegroupreplicationclasses
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: VolumeGroupReplicationClassSpec defines the desired state
of VolumeGroupReplicationClass
properties:
foo:
description: Foo is an example field of VolumeGroupReplicationClass.
Edit volumegroupreplicationclass_types.go to remove/update
type: string
type: object
status:
description: VolumeGroupReplicationClassStatus defines the observed state
of VolumeGroupReplicationClass
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 @@ -11,6 +11,7 @@ resources:
- bases/csiaddons.openshift.io_networkfences.yaml
- bases/replication.storage.openshift.io_volumereplications.yaml
- bases/replication.storage.openshift.io_volumereplicationclasses.yaml
- bases/replication.storage.openshift.io_volumegroupreplicationclasses.yaml
# yamllint disable-line rule:comments
#+kubebuilder:scaffold:crdkustomizeresource

Expand All @@ -21,6 +22,7 @@ patchesStrategicMerge:
#- patches/webhook_in_reclaimspacejobs.yaml
#- patches/webhook_in_volumereplications.yaml
#- patches/webhook_in_volumereplicationclasses.yaml
#- patches/webhook_in_volumegroupreplicationclasses.yaml
#+kubebuilder:scaffold:crdkustomizewebhookpatch

# [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix.
Expand All @@ -29,6 +31,7 @@ patchesStrategicMerge:
#- patches/cainjection_in_reclaimspacejobs.yaml
#- patches/cainjection_in_volumereplications.yaml
#- patches/cainjection_in_volumereplicationclasses.yaml
#- patches/cainjection_in_volumegroupreplicationclasses.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: volumegroupreplicationclasses.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: volumegroupreplicationclasses.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 volumegroupreplicationclasses.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: volumegroupreplicationclass-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: volumegroupreplicationclass-editor-role
rules:
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplicationclasses
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplicationclasses/status
verbs:
- get
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# permissions for end users to view volumegroupreplicationclasses.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: volumegroupreplicationclass-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: volumegroupreplicationclass-viewer-role
rules:
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplicationclasses
verbs:
- get
- list
- watch
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplicationclasses/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 @@ -164,6 +164,32 @@ rules:
- get
- patch
- update
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplicationclasses
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplicationclasses/finalizers
verbs:
- update
- apiGroups:
- replication.storage.openshift.io
resources:
- volumegroupreplicationclasses/status
verbs:
- get
- patch
- update
- apiGroups:
- replication.storage.openshift.io
resources:
Expand Down
Loading

0 comments on commit c7f7a48

Please sign in to comment.