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 }