Add "snapshot-count" annotation for volumesnapshotClass
Signed-off-by: f10atin9 <f10atin9@kubesphere.io>
This commit is contained in:
@@ -17,8 +17,11 @@ limitations under the License.
|
|||||||
package volumesnapshotclass
|
package volumesnapshotclass
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"k8s.io/apimachinery/pkg/labels"
|
||||||
|
|
||||||
v1 "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1"
|
v1 "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1"
|
||||||
"github.com/kubernetes-csi/external-snapshotter/client/v4/informers/externalversions"
|
"github.com/kubernetes-csi/external-snapshotter/client/v4/informers/externalversions"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
@@ -53,6 +56,11 @@ func (v *volumeSnapshotClassGetter) List(namespace string, query *query.Query) (
|
|||||||
|
|
||||||
var result []runtime.Object
|
var result []runtime.Object
|
||||||
for _, snapshotClass := range all {
|
for _, snapshotClass := range all {
|
||||||
|
count := v.countVolumeSnapshots(snapshotClass.Name)
|
||||||
|
if snapshotClass.Annotations == nil {
|
||||||
|
snapshotClass.Annotations = make(map[string]string)
|
||||||
|
}
|
||||||
|
snapshotClass.Annotations["kubesphere.io/snapshot-count"] = strconv.Itoa(count)
|
||||||
result = append(result, snapshotClass)
|
result = append(result, snapshotClass)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,3 +94,18 @@ func (v *volumeSnapshotClassGetter) filter(object runtime.Object, filter query.F
|
|||||||
return v1alpha3.DefaultObjectMetaFilter(snapshotClass.ObjectMeta, filter)
|
return v1alpha3.DefaultObjectMetaFilter(snapshotClass.ObjectMeta, filter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (v *volumeSnapshotClassGetter) countVolumeSnapshots(name string) int {
|
||||||
|
snapshots, err := v.informers.Snapshot().V1().VolumeSnapshots().Lister().VolumeSnapshots("").List(labels.Everything())
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
var count int
|
||||||
|
|
||||||
|
for _, snapshot := range snapshots {
|
||||||
|
if snapshot.Spec.VolumeSnapshotClassName != nil && *snapshot.Spec.VolumeSnapshotClassName == name {
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user