Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从golang中persisten卷的OpenShift API获取并修改yaml文件_Api_Go_Kubernetes_Openshift - Fatal编程技术网

从golang中persisten卷的OpenShift API获取并修改yaml文件

从golang中persisten卷的OpenShift API获取并修改yaml文件,api,go,kubernetes,openshift,Api,Go,Kubernetes,Openshift,我试图通过Go(lang)中的API修改OpenShift中持久卷的yaml文件,我有以下几点 pv, err := clientset.CoreV1().PersistentVolumes().List(metav1.ListOptions{}) for _, persV := range pv.Items { // Check status persistent volume pvStatus, err := clientset.CoreV

我试图通过
Go(lang)
中的API修改
OpenShift
持久卷的
yaml
文件,我有以下几点

    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)
}

my
持久卷
yaml

apiVersion: v1
kind: PersistentVolume
metadata:
...
...
...
persistentVolumeReclaimPolicy: Retain
status:
  phase: Released
如何获取
yaml
文件并从实际的
pvStatus
修改它?
我想将
persistentVolumeClaImplicy:Retain
更改为
persistentVolumeClaImplicy:Delete
基本上我的错误是构造
补丁
[]字节
值,脚本应该如下

 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)