Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
水淹萌龙
kubesphere
提交
1549dd39
K
kubesphere
项目概览
水淹萌龙
/
kubesphere
与 Fork 源项目一致
Fork自
KubeSphere / kubesphere
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kubesphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
1549dd39
编写于
7月 16, 2020
作者:
Z
zhangmin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix "Failed to list *v1beta1.VolumeSnapshotClass" on k8s 1.16
上级
0f63b5ba
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
6 deletion
+18
-6
pkg/controller/storage/capability/capability_controller.go
pkg/controller/storage/capability/capability_controller.go
+18
-6
未找到文件。
pkg/controller/storage/capability/capability_controller.go
浏览文件 @
1549dd39
...
...
@@ -101,6 +101,7 @@ func NewController(
)
*
StorageCapabilityController
{
utilruntime
.
Must
(
crdscheme
.
AddToScheme
(
scheme
.
Scheme
))
controller
:=
&
StorageCapabilityController
{
storageClassCapabilityClient
:
capabilityClient
,
storageCapabilityLister
:
capabilityInformer
.
StorageClassCapabilities
()
.
Lister
(),
...
...
@@ -111,15 +112,18 @@ func NewController(
storageClassLister
:
storageClassInformer
.
Lister
(),
storageClassSynced
:
storageClassInformer
.
Informer
()
.
HasSynced
,
snapshotSupported
:
snapshotSupported
,
snapshotClassClient
:
snapshotClassClient
,
snapshotClassLister
:
snapshotClassInformer
.
Lister
(),
snapshotClassSynced
:
snapshotClassInformer
.
Informer
()
.
HasSynced
,
csiDriverLister
:
csiDriverInformer
.
Lister
(),
csiDriverSynced
:
csiDriverInformer
.
Informer
()
.
HasSynced
,
csiAddressGetter
:
csiAddress
,
workQueue
:
workqueue
.
NewNamedRateLimitingQueue
(
workqueue
.
DefaultControllerRateLimiter
(),
"StorageClasses"
),
}
if
snapshotSupported
{
controller
.
snapshotClassClient
=
snapshotClassClient
controller
.
snapshotClassLister
=
snapshotClassInformer
.
Lister
()
controller
.
snapshotClassSynced
=
snapshotClassInformer
.
Informer
()
.
HasSynced
}
storageClassInformer
.
Informer
()
.
AddEventHandler
(
cache
.
ResourceEventHandlerFuncs
{
AddFunc
:
controller
.
enqueueStorageClass
,
UpdateFunc
:
func
(
old
,
new
interface
{})
{
...
...
@@ -161,6 +165,10 @@ func (c *StorageCapabilityController) Run(threadCnt int, stopCh <-chan struct{})
c
.
csiDriverSynced
,
}
if
c
.
snapshotAllowed
()
{
cacheSyncs
=
append
(
cacheSyncs
,
c
.
snapshotClassSynced
)
}
if
ok
:=
cache
.
WaitForCacheSync
(
stopCh
,
cacheSyncs
...
);
!
ok
{
return
fmt
.
Errorf
(
"failed to wait for caches to sync"
)
}
...
...
@@ -250,7 +258,7 @@ func (c *StorageCapabilityController) syncHandler(key string) error {
if
err
!=
nil
{
// StorageClass has been deleted, delete StorageClassCapability and VolumeSnapshotClass
if
errors
.
IsNotFound
(
err
)
{
if
c
.
snapshot
Supported
{
if
c
.
snapshot
Allowed
()
{
err
=
c
.
deleteSnapshotClass
(
name
)
if
err
!=
nil
{
return
err
...
...
@@ -280,7 +288,7 @@ func (c *StorageCapabilityController) syncHandler(key string) error {
// Handle VolumeSnapshotClass with same name of StorageClass
// annotate "support-snapshot" of StorageClass
withSnapshotCapability
:=
false
if
c
.
snapshot
Supported
&&
capabilitySpec
.
Features
.
Snapshot
.
Create
{
if
c
.
snapshot
Allowed
()
&&
capabilitySpec
.
Features
.
Snapshot
.
Create
{
_
,
err
=
c
.
snapshotClassLister
.
Get
(
name
)
if
err
!=
nil
{
// If VolumeSnapshotClass not exist, create it
...
...
@@ -356,7 +364,7 @@ func (c *StorageCapabilityController) deleteStorageCapability(name string) error
}
func
(
c
*
StorageCapabilityController
)
deleteSnapshotClass
(
name
string
)
error
{
if
!
c
.
snapshot
Supported
{
if
!
c
.
snapshot
Allowed
()
{
return
nil
}
_
,
err
:=
c
.
snapshotClassLister
.
Get
(
name
)
...
...
@@ -429,6 +437,10 @@ func (c *StorageCapabilityController) setCSIAddressGetter(getter csiAddressGette
c
.
csiAddressGetter
=
getter
}
func
(
c
*
StorageCapabilityController
)
snapshotAllowed
()
bool
{
return
c
.
snapshotSupported
&&
c
.
snapshotClassClient
!=
nil
&&
c
.
snapshotClassLister
!=
nil
&&
c
.
snapshotClassSynced
!=
nil
}
func
SnapshotSupported
(
discoveryInterface
discovery
.
DiscoveryInterface
)
bool
{
minVer
:=
version
.
MustParseGeneric
(
minSnapshotSupportedVersion
)
rawVer
,
err
:=
discoveryInterface
.
ServerVersion
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录