This repository has been archived on 2026-05-13. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
educode-controller/internal/k8s/pvc.go

46 lines
1.2 KiB
Go

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
}