Redesign data structures and implement PVC management of create and delete

This commit is contained in:
starryskymeow
2025-07-17 18:16:32 +08:00
parent 2d8e8af80e
commit 9aa8b56922
7 changed files with 166 additions and 90 deletions

45
internal/k8s/pvc.go Normal file
View File

@@ -0,0 +1,45 @@
package k8s
import (
"context"
"gitea.starryskymeow.cn/xkm/educode-controller/internal/types"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
)
func CreatePvc(req types.Pvc, client *kubernetes.Clientset) error {
pvc := &corev1.PersistentVolumeClaim{
ObjectMeta: metav1.ObjectMeta{
Name: req.ID,
Namespace: namespace,
Labels: map[string]string{
"educode/uid": req.UID,
},
},
Spec: corev1.PersistentVolumeClaimSpec{
AccessModes: []corev1.PersistentVolumeAccessMode{
corev1.PersistentVolumeAccessMode(req.AccessMode),
},
StorageClassName: &req.StorageClassName,
Resources: corev1.VolumeResourceRequirements{
Requests: corev1.ResourceList{
corev1.ResourceStorage: resource.MustParse(req.Limit),
},
},
},
}
_, err := client.CoreV1().PersistentVolumeClaims(namespace).Create(context.TODO(), pvc, metav1.CreateOptions{})
if err != nil {
return err
}
return nil
}
func DeletePvc(ID string, client *kubernetes.Clientset) error {
err := client.CoreV1().PersistentVolumeClaims(namespace).Delete(context.TODO(), ID, metav1.DeleteOptions{})
return err
}