1
0
mirror of https://github.com/rancher/rke.git synced 2025-04-28 03:31:24 +00:00
rke/k8s/psp.go

39 lines
920 B
Go
Raw Normal View History

2017-12-20 01:51:07 +00:00
package k8s
import (
"time"
"k8s.io/api/extensions/v1beta1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/client-go/kubernetes"
)
func UpdatePodSecurityPolicyFromYaml(k8sClient *kubernetes.Clientset, pspYaml string) error {
psp := v1beta1.PodSecurityPolicy{}
err := decodeYamlResource(&psp, pspYaml)
if err != nil {
return err
}
for retries := 0; retries <= 5; retries++ {
if err = updatePodSecurityPolicy(k8sClient, psp); err != nil {
time.Sleep(time.Second * 5)
continue
}
return nil
}
return err
}
func updatePodSecurityPolicy(k8sClient *kubernetes.Clientset, psp v1beta1.PodSecurityPolicy) error {
if _, err := k8sClient.ExtensionsV1beta1().PodSecurityPolicies().Create(&psp); err != nil {
if !apierrors.IsAlreadyExists(err) {
return err
}
if _, err := k8sClient.ExtensionsV1beta1().PodSecurityPolicies().Update(&psp); err != nil {
return err
}
}
return nil
}