1
0
mirror of https://github.com/rancher/rke.git synced 2025-04-27 11:21:08 +00:00
rke/k8s/configmap.go

52 lines
1.6 KiB
Go
Raw Normal View History

package k8s
import (
"context"
2018-06-08 23:31:39 +00:00
"reflect"
v1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
)
2018-06-08 23:31:39 +00:00
func UpdateConfigMap(k8sClient *kubernetes.Clientset, configYaml []byte, configMapName string) (bool, error) {
cfgMap := &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Name: configMapName,
Namespace: metav1.NamespaceSystem,
},
Data: map[string]string{
configMapName: string(configYaml),
},
}
2018-06-08 23:31:39 +00:00
updated := false
// let's try to get the config map from k8s
existingConfigMap, err := GetConfigMap(k8sClient, configMapName)
if err != nil {
if !apierrors.IsNotFound(err) {
return updated, err
}
2018-06-08 23:31:39 +00:00
// the config map is not in k8s, I will create it and return updated=false
if _, err := k8sClient.CoreV1().ConfigMaps(metav1.NamespaceSystem).Create(context.TODO(), cfgMap, metav1.CreateOptions{}); err != nil {
2018-06-08 23:31:39 +00:00
return updated, err
}
return updated, nil
}
if !reflect.DeepEqual(existingConfigMap.Data, cfgMap.Data) {
if _, err := k8sClient.CoreV1().ConfigMaps(metav1.NamespaceSystem).Update(context.TODO(), cfgMap, metav1.UpdateOptions{}); err != nil {
2018-06-08 23:31:39 +00:00
return updated, err
}
2018-06-08 23:31:39 +00:00
updated = true
}
2018-06-08 23:31:39 +00:00
return updated, nil
}
func GetConfigMap(k8sClient *kubernetes.Clientset, configMapName string) (*v1.ConfigMap, error) {
return k8sClient.CoreV1().ConfigMaps(metav1.NamespaceSystem).Get(context.TODO(), configMapName, metav1.GetOptions{})
}
func DeleteConfigMap(k8sClient *kubernetes.Clientset, configMapName string) error {
return k8sClient.CoreV1().ConfigMaps(metav1.NamespaceSystem).Delete(context.TODO(), configMapName, metav1.DeleteOptions{})
}