Redesign data structures and implement PVC management of create and delete
This commit is contained in:
5
internal/k8s/define.go
Normal file
5
internal/k8s/define.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package k8s
|
||||
|
||||
const (
|
||||
namespace = "educode"
|
||||
)
|
||||
45
internal/k8s/pvc.go
Normal file
45
internal/k8s/pvc.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user