-
Notifications
You must be signed in to change notification settings - Fork 65
/
mco_sa.go
49 lines (43 loc) · 1.52 KB
/
mco_sa.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Copyright (c) 2021 Red Hat, Inc.
// Copyright Contributors to the Open Cluster Management project
package utils
import (
"context"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/klog"
)
func DeleteSA(opt TestOptions, isHub bool, namespace string,
name string) error {
clientKube := getKubeClient(opt, isHub)
err := clientKube.CoreV1().ServiceAccounts(namespace).Delete(context.TODO(), name, metav1.DeleteOptions{})
if err != nil {
klog.Errorf("Failed to delete serviceaccount %s due to %v", name, err)
}
return err
}
func UpdateSA(opt TestOptions, isHub bool, namespace string,
sa *v1.ServiceAccount) (error, *v1.ServiceAccount) {
clientKube := getKubeClient(opt, isHub)
updateSA, err := clientKube.CoreV1().ServiceAccounts(namespace).Update(context.TODO(), sa, metav1.UpdateOptions{})
if err != nil {
klog.Errorf("Failed to update serviceaccount %s due to %v", sa.GetName(), err)
}
return err, updateSA
}
func CreateSA(opt TestOptions, isHub bool, namespace string,
sa *v1.ServiceAccount) error {
clientKube := getKubeClient(opt, isHub)
_, err := clientKube.CoreV1().ServiceAccounts(namespace).Create(context.TODO(), sa, metav1.CreateOptions{})
if err != nil {
if errors.IsAlreadyExists(err) {
klog.V(1).Infof("serviceaccount %s already exists, updating...", sa.GetName())
err, _ := UpdateSA(opt, isHub, namespace, sa)
return err
}
klog.Errorf("Failed to create serviceaccount %s due to %v", sa.GetName(), err)
return err
}
return nil
}