gpt4 book ai didi

api - 从 golang 中持久卷的 OpenShift API 获取和修改 yaml 文件

转载 作者:IT王子 更新时间:2023-10-29 01:40:34 27 4
gpt4 key购买 nike

我正在尝试通过 Go(lang)< 中的 API 修改 OpenShiftpersistent volumeyaml 文件,我有以下内容

    pv, err := clientset.CoreV1().PersistentVolumes().List(metav1.ListOptions{})


for _, persV := range pv.Items {
// Check status persistent volume
pvStatus, err := clientset.CoreV1().PersistentVolumes().Get(persV.Name, metav1.GetOptions{})
if err != nil {
panic(err.Error())
}

patch := []byte(`{"spec":{"template":{"spec":{"containers":[{"persistentVolumeReclaimPolicy":"Retain"}]}}}}`)
a := fmt.Sprintf("%s", patch)
fmt.Println(a)
_, err = clientset.CoreV1().PersistentVolumes().Patch(persV.Name, types.StrategicMergePatchType, patch)
}

我的持久卷 yaml

apiVersion: v1
kind: PersistentVolume
metadata:
...
...
...
persistentVolumeReclaimPolicy: Retain
status:
phase: Released

如何获取 yaml 文件并根据我的实际 pvStatus 修改它?我想将 persistentVolumeReclaimPolicy: Retain 更改为 persistentVolumeReclaimPolicy: Delete

最佳答案

基本上我的错误是构造patch []byte 值,脚本应该看起来像

 pv, err := clientset.CoreV1().PersistentVolumes().List(metav1.ListOptions{})


for _, persV := range pv.Items {
// Check status persistent volume
pvStatus, err := clientset.CoreV1().PersistentVolumes().Get(persV.Name, metav1.GetOptions{})
if err != nil {
panic(err.Error())
}

patch := []byte(`{"spec": {"persistentVolumeReclaimPolicy": "Delete"}}`)
_, err = clientset.CoreV1().PersistentVolumes().Patch(persV.Name, types.StrategicMergePatchType, patch)

关于api - 从 golang 中持久卷的 OpenShift API 获取和修改 yaml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55222830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com