Получите и измените файл yaml из OpenShift API постоянного тома в golang - PullRequest
2 голосов
/ 18 марта 2019

Я пытаюсь изменить yaml файл persistent volume в OpenShift через API в Go(lang), у меня есть следующее

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

мой persistent volume yaml

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

Как я могу получить файл yaml и изменить его из моего фактического pvStatus?Я хотел бы изменить persistentVolumeReclaimPolicy: Retain на persistentVolumeReclaimPolicy: Delete

1 Ответ

2 голосов
/ 19 марта 2019

В основном моя ошибка заключалась в построении значения 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...