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