mirror of
https://github.com/TECHNOFAB11/zfs-localpv.git
synced 2025-12-12 14:30:12 +01:00
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>
72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
/*
|
|
Copyright 2020 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 snapbuilder
|
|
|
|
import (
|
|
apis "github.com/openebs/zfs-localpv/pkg/apis/openebs.io/zfs/v1alpha1"
|
|
)
|
|
|
|
// ListBuilder enables building an instance of
|
|
// ZFSSnapshotList
|
|
type ListBuilder struct {
|
|
list *apis.ZFSSnapshotList
|
|
filters predicateList
|
|
}
|
|
|
|
// NewListBuilder returns a new instance of ListBuilder
|
|
func NewListBuilder() *ListBuilder {
|
|
return &ListBuilder{
|
|
list: &apis.ZFSSnapshotList{},
|
|
}
|
|
}
|
|
|
|
// ListBuilderFrom returns a new instance of
|
|
// ListBuilder from API list instance
|
|
func ListBuilderFrom(vols apis.ZFSSnapshotList) *ListBuilder {
|
|
b := &ListBuilder{list: &apis.ZFSSnapshotList{}}
|
|
if len(vols.Items) == 0 {
|
|
return b
|
|
}
|
|
|
|
b.list.Items = append(b.list.Items, vols.Items...)
|
|
return b
|
|
}
|
|
|
|
// List returns the list of pod
|
|
// instances that was built by this
|
|
// builder
|
|
func (b *ListBuilder) List() *apis.ZFSSnapshotList {
|
|
if b.filters == nil || len(b.filters) == 0 {
|
|
return b.list
|
|
}
|
|
|
|
filtered := &apis.ZFSSnapshotList{}
|
|
for _, vol := range b.list.Items {
|
|
vol := vol // pin it
|
|
if b.filters.all(From(&vol)) {
|
|
filtered.Items = append(filtered.Items, vol)
|
|
}
|
|
}
|
|
return filtered
|
|
}
|
|
|
|
// WithFilter add filters on which the pod
|
|
// has to be filtered
|
|
func (b *ListBuilder) WithFilter(pred ...Predicate) *ListBuilder {
|
|
b.filters = append(b.filters, pred...)
|
|
return b
|
|
}
|