1 Star 0 Fork 0

不平凡的平凡 / dogo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
storageclass.go 1.87 KB
一键复制 编辑 原始数据 按行查看 历史
lixueping 提交于 2022-10-18 01:10 . 新增常用公共方法
package storageclass
import (
"context"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
"gitee.com/lflxp/dogo/plugin/apicache/pkg/api"
"gitee.com/lflxp/dogo/plugin/apicache/pkg/apiserver/query"
v1alpha3 "gitee.com/lflxp/dogo/plugin/apicache/pkg/resources/v1"
v1storage "k8s.io/api/storage/v1"
)
type storageclassGetter struct {
client client.Client
}
func New(client client.Client) v1alpha3.Interface {
return &storageclassGetter{client: client}
}
func (p *storageclassGetter) Get(namespace, name string) (runtime.Object, error) {
ctx := context.Background()
sc := &v1storage.StorageClass{}
err := p.client.Get(ctx, types.NamespacedName{Name: name}, sc)
return sc, err
}
func (p *storageclassGetter) List(namespace string, query *query.Query) (*api.ListResult, error) {
ctx := context.Background()
list := &v1storage.StorageClassList{}
options := client.ListOptions{
Namespace: namespace,
LabelSelector: query.Selector(),
}
// first retrieves all tenant within given namespace
err := p.client.List(ctx, list, &options)
if err != nil {
return nil, err
}
var result []runtime.Object
for _, sc := range list.Items {
tmp := sc
result = append(result, &tmp)
}
return v1alpha3.DefaultList(result, query, p.compare, p.filter), nil
}
func (p *storageclassGetter) compare(obj1, obj2 runtime.Object, field query.Field) bool {
pv1, ok := obj1.(*v1storage.StorageClass)
if !ok {
return false
}
pv2, ok := obj2.(*v1storage.StorageClass)
if !ok {
return false
}
return v1alpha3.DefaultObjectMetaCompare(pv1.ObjectMeta, pv2.ObjectMeta, field)
}
func (p *storageclassGetter) filter(object runtime.Object, filter query.Filter) bool {
pv, ok := object.(*v1storage.StorageClass)
if !ok {
return false
}
switch filter.Field {
default:
return v1alpha3.DefaultObjectMetaFilter(pv.ObjectMeta, filter)
}
}
1
https://gitee.com/lflxp/dogo.git
git@gitee.com:lflxp/dogo.git
lflxp
dogo
dogo
v0.1.0

搜索帮助