github.com/operator-framework/operator-lifecycle-manager@v0.30.0/pkg/lib/operatorclient/serviceaccount.go (about) 1 package operatorclient 2 3 import ( 4 "context" 5 "fmt" 6 7 v1 "k8s.io/api/core/v1" 8 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 "k8s.io/apimachinery/pkg/types" 10 "k8s.io/klog" 11 ) 12 13 // CreateServiceAccount creates the serviceAccount. 14 func (c *Client) CreateServiceAccount(ig *v1.ServiceAccount) (*v1.ServiceAccount, error) { 15 return c.CoreV1().ServiceAccounts(ig.GetNamespace()).Create(context.TODO(), ig, metav1.CreateOptions{}) 16 } 17 18 // GetServiceAccount returns the existing serviceAccount. 19 func (c *Client) GetServiceAccount(namespace, name string) (*v1.ServiceAccount, error) { 20 return c.CoreV1().ServiceAccounts(namespace).Get(context.TODO(), name, metav1.GetOptions{}) 21 } 22 23 // DeleteServiceAccount deletes the serviceAccount. 24 func (c *Client) DeleteServiceAccount(namespace, name string, options *metav1.DeleteOptions) error { 25 return c.CoreV1().ServiceAccounts(namespace).Delete(context.TODO(), name, *options) 26 } 27 28 // UpdateServiceAccount will update the given ServiceAccount resource. 29 func (c *Client) UpdateServiceAccount(sa *v1.ServiceAccount) (*v1.ServiceAccount, error) { 30 klog.V(4).Infof("[UPDATE ServiceAccount]: %s", sa.GetName()) 31 oldSa, err := c.GetServiceAccount(sa.GetNamespace(), sa.GetName()) 32 if err != nil { 33 return nil, err 34 } 35 patchBytes, err := createPatch(oldSa, sa) 36 if err != nil { 37 return nil, fmt.Errorf("error creating patch for ServiceAccount: %v", err) 38 } 39 return c.CoreV1().ServiceAccounts(sa.GetNamespace()).Patch(context.TODO(), sa.GetName(), types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}) 40 }