mirror of
https://github.com/TECHNOFAB11/zfs-localpv.git
synced 2025-12-12 06:20:11 +01:00
refactor(crd): move CR from openebs.io to zfs.openebs.io (#70)
Changed the group name from openebs.io to zfs.openebs.io.
Now ZFS Volume CR will look like this :
```
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: zfszvolumes.zfs.openebs.io
spec:
group: zfs.openebs.io
version: v1alpha1
scope: Namespaced
names:
plural: zfsvolumes
singular: zfsvolume
kind:ZFSVolume
shortNames:
- zfsvol
- zv
```
Snapshot CR will look like this :
```
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: zfssnapshots.zfs.openebs.io
spec:
group: zfs.openebs.io
version: v1alpha1
scope: Namespaced
names:
plural: fssnapshots
singular: zfssnapshot
kind: ZFSSnapshot
shortNames:
- zfssnapshot
- zfssnap
```
Signed-off-by: Pawan <pawan@mayadata.io>
This commit is contained in:
parent
3e874ffad7
commit
c4c2278d2f
48 changed files with 52 additions and 52 deletions
21
pkg/apis/openebs.io/zfs/v1alpha1/doc.go
Normal file
21
pkg/apis/openebs.io/zfs/v1alpha1/doc.go
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
Copyright © 2019 The OpenEBS 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.
|
||||
*/
|
||||
|
||||
// +k8s:deepcopy-gen=package,register
|
||||
|
||||
// Package v1alpha1 is the API version
|
||||
// +groupName=openebs.io
|
||||
package v1alpha1
|
||||
79
pkg/apis/openebs.io/zfs/v1alpha1/register.go
Normal file
79
pkg/apis/openebs.io/zfs/v1alpha1/register.go
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
/*
|
||||
Copyright © 2019 The OpenEBS 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"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
)
|
||||
|
||||
// SchemeGroupVersion is group version used
|
||||
// to register custom resources
|
||||
//
|
||||
// NOTE:
|
||||
// This variable name should not be changed
|
||||
var SchemeGroupVersion = schema.GroupVersion{
|
||||
Group: "zfs.openebs.io",
|
||||
Version: "v1alpha1",
|
||||
}
|
||||
|
||||
// Resource takes an unqualified resource and
|
||||
// returns a Group qualified GroupResource
|
||||
func Resource(resource string) schema.GroupResource {
|
||||
return SchemeGroupVersion.
|
||||
WithResource(resource).
|
||||
GroupResource()
|
||||
}
|
||||
|
||||
var (
|
||||
// SchemeBuilder is the scheme builder
|
||||
// with scheme init functions to run
|
||||
// for this API package
|
||||
SchemeBuilder runtime.SchemeBuilder
|
||||
|
||||
localSchemeBuilder = &SchemeBuilder
|
||||
|
||||
// AddToScheme is a global function that
|
||||
// registers this API group & version to
|
||||
// a scheme
|
||||
AddToScheme = localSchemeBuilder.AddToScheme
|
||||
)
|
||||
|
||||
func init() {
|
||||
// We only register manually written functions
|
||||
// here. This registration of generated functions
|
||||
// takes place in the generated files.
|
||||
//
|
||||
// NOTE:
|
||||
// This separation makes the code compile even
|
||||
// when the generated files are missing.
|
||||
localSchemeBuilder.Register(addKnownTypes)
|
||||
}
|
||||
|
||||
// Adds the list of known types to api.Scheme.
|
||||
func addKnownTypes(scheme *runtime.Scheme) error {
|
||||
scheme.AddKnownTypes(
|
||||
SchemeGroupVersion,
|
||||
&ZFSVolume{},
|
||||
&ZFSVolumeList{},
|
||||
&ZFSSnapshot{},
|
||||
&ZFSSnapshotList{},
|
||||
)
|
||||
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
|
||||
return nil
|
||||
}
|
||||
49
pkg/apis/openebs.io/zfs/v1alpha1/zfssnapshot.go
Normal file
49
pkg/apis/openebs.io/zfs/v1alpha1/zfssnapshot.go
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
Copyright © 2019 The OpenEBS 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"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +resource:path=zfssnapshot
|
||||
|
||||
// ZFSSnapshot represents a ZFS Snapshot of the zfsvolume
|
||||
type ZFSSnapshot struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec VolumeInfo `json:"spec"`
|
||||
Status SnapStatus `json:"status"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +resource:path=zfssnapshots
|
||||
|
||||
// ZFSSnapshotList is a list of ZFSSnapshot resources
|
||||
type ZFSSnapshotList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata"`
|
||||
|
||||
Items []ZFSSnapshot `json:"items"`
|
||||
}
|
||||
|
||||
type SnapStatus struct {
|
||||
State string `json:"state,omitempty"`
|
||||
}
|
||||
127
pkg/apis/openebs.io/zfs/v1alpha1/zfsvolume.go
Normal file
127
pkg/apis/openebs.io/zfs/v1alpha1/zfsvolume.go
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
/*
|
||||
Copyright © 2019 The OpenEBS 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"
|
||||
)
|
||||
|
||||
// +genclient
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +resource:path=zfsvolume
|
||||
|
||||
// ZFSVolume represents a ZFS based volume
|
||||
type ZFSVolume struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ObjectMeta `json:"metadata,omitempty"`
|
||||
|
||||
Spec VolumeInfo `json:"spec"`
|
||||
}
|
||||
|
||||
// MountInfo contains the volume related info
|
||||
// for all types of volumes in ZFSVolume
|
||||
type MountInfo struct {
|
||||
// FSType of a volume will specify the
|
||||
// format type - ext4(default), xfs of PV
|
||||
FSType string `json:"fsType"`
|
||||
|
||||
// AccessMode of a volume will hold the
|
||||
// access mode of the volume
|
||||
AccessModes []string `json:"accessModes"`
|
||||
|
||||
// MountPath of the volume will hold the
|
||||
// path on which the volume is mounted
|
||||
// on that node
|
||||
MountPath string `json:"mountPath"`
|
||||
|
||||
// ReadOnly specifies if the volume needs
|
||||
// to be mounted in ReadOnly mode
|
||||
ReadOnly bool `json:"readOnly"`
|
||||
|
||||
// MountOptions specifies the options with
|
||||
// which mount needs to be attempted
|
||||
MountOptions []string `json:"mountOptions"`
|
||||
}
|
||||
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
// +resource:path=zfsvolumes
|
||||
|
||||
// ZFSVolumeList is a list of ZFSVolume resources
|
||||
type ZFSVolumeList struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.ListMeta `json:"metadata"`
|
||||
|
||||
Items []ZFSVolume `json:"items"`
|
||||
}
|
||||
|
||||
// VolumeInfo contains the volume related info
|
||||
// for all types of volumes in ZFSVolume
|
||||
type VolumeInfo struct {
|
||||
// OwnerNodeID is the Node ID which
|
||||
// is the owner of this Volume
|
||||
OwnerNodeID string `json:"ownerNodeID"`
|
||||
|
||||
// poolName specifies the name of the
|
||||
// pool where this volume should be created
|
||||
PoolName string `json:"poolName"`
|
||||
|
||||
// SnapName specifies the name of the
|
||||
// snapshot where this volume should be cloned
|
||||
SnapName string `json:"snapname,omitempty"`
|
||||
|
||||
// Capacity of the volume
|
||||
Capacity string `json:"capacity"`
|
||||
|
||||
// RecordSize specifies the record size
|
||||
// for the zfs dataset
|
||||
RecordSize string `json:"recordsize,omitempty"`
|
||||
|
||||
// VolBlockSize specifies the block size for the zvol
|
||||
VolBlockSize string `json:"volblocksize,omitempty"`
|
||||
|
||||
// Compression specifies if the it should
|
||||
// enabled on the zvol
|
||||
Compression string `json:"compression,omitempty"`
|
||||
|
||||
// Dedup specifies the deduplication
|
||||
// should be enabled on the zvol
|
||||
Dedup string `json:"dedup,omitempty"`
|
||||
|
||||
// Encryption specifies the encryption
|
||||
// should be enabled on the zvol
|
||||
Encryption string `json:"encryption,omitempty"`
|
||||
|
||||
// KeyLocation is the location of key
|
||||
// for the encryption
|
||||
KeyLocation string `json:"keylocation,omitempty"`
|
||||
|
||||
// KeyFormat specifies format of the
|
||||
// encryption key
|
||||
KeyFormat string `json:"keyformat,omitempty"`
|
||||
|
||||
// Thinprovision specifies if we should
|
||||
// thin provisioned the volume or not
|
||||
ThinProvision string `json:"thinProvision,omitempty"`
|
||||
|
||||
// VolumeType specifies whether the volume is
|
||||
// zvol or a dataset
|
||||
VolumeType string `json:"volumeType"`
|
||||
|
||||
// FsType specifies filesystem type for the
|
||||
// zfs volume/dataset
|
||||
FsType string `json:"fsType,omitempty"`
|
||||
}
|
||||
204
pkg/apis/openebs.io/zfs/v1alpha1/zz_generated.deepcopy.go
Normal file
204
pkg/apis/openebs.io/zfs/v1alpha1/zz_generated.deepcopy.go
Normal file
|
|
@ -0,0 +1,204 @@
|
|||
// +build !ignore_autogenerated
|
||||
|
||||
/*
|
||||
Copyright 2019 The OpenEBS 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.
|
||||
*/
|
||||
|
||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
||||
|
||||
package v1alpha1
|
||||
|
||||
import (
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *MountInfo) DeepCopyInto(out *MountInfo) {
|
||||
*out = *in
|
||||
if in.AccessModes != nil {
|
||||
in, out := &in.AccessModes, &out.AccessModes
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
if in.MountOptions != nil {
|
||||
in, out := &in.MountOptions, &out.MountOptions
|
||||
*out = make([]string, len(*in))
|
||||
copy(*out, *in)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MountInfo.
|
||||
func (in *MountInfo) DeepCopy() *MountInfo {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(MountInfo)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *SnapStatus) DeepCopyInto(out *SnapStatus) {
|
||||
*out = *in
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SnapStatus.
|
||||
func (in *SnapStatus) DeepCopy() *SnapStatus {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(SnapStatus)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *VolumeInfo) DeepCopyInto(out *VolumeInfo) {
|
||||
*out = *in
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeInfo.
|
||||
func (in *VolumeInfo) DeepCopy() *VolumeInfo {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(VolumeInfo)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ZFSSnapshot) DeepCopyInto(out *ZFSSnapshot) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
out.Spec = in.Spec
|
||||
out.Status = in.Status
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZFSSnapshot.
|
||||
func (in *ZFSSnapshot) DeepCopy() *ZFSSnapshot {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ZFSSnapshot)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ZFSSnapshot) 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 *ZFSSnapshotList) DeepCopyInto(out *ZFSSnapshotList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
out.ListMeta = in.ListMeta
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]ZFSSnapshot, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZFSSnapshotList.
|
||||
func (in *ZFSSnapshotList) DeepCopy() *ZFSSnapshotList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ZFSSnapshotList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ZFSSnapshotList) 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 *ZFSVolume) DeepCopyInto(out *ZFSVolume) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
out.Spec = in.Spec
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZFSVolume.
|
||||
func (in *ZFSVolume) DeepCopy() *ZFSVolume {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ZFSVolume)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ZFSVolume) 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 *ZFSVolumeList) DeepCopyInto(out *ZFSVolumeList) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
out.ListMeta = in.ListMeta
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]ZFSVolume, len(*in))
|
||||
for i := range *in {
|
||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ZFSVolumeList.
|
||||
func (in *ZFSVolumeList) DeepCopy() *ZFSVolumeList {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ZFSVolumeList)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ZFSVolumeList) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue