github.com/operator-framework/operator-lifecycle-manager@v0.30.0/pkg/lib/operatorclient/apiservice.go (about) 1 package operatorclient 2 3 import ( 4 "context" 5 "fmt" 6 7 apierrors "k8s.io/apimachinery/pkg/api/errors" 8 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 "k8s.io/apimachinery/pkg/types" 10 "k8s.io/klog" 11 apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1" 12 ) 13 14 // CreateAPIService creates the APIService or Updates if it already exists. 15 func (c *Client) CreateAPIService(ig *apiregistrationv1.APIService) (*apiregistrationv1.APIService, error) { 16 createdAS, err := c.ApiregistrationV1Interface().ApiregistrationV1().APIServices().Create(context.TODO(), ig, metav1.CreateOptions{}) 17 if apierrors.IsAlreadyExists(err) { 18 return c.UpdateAPIService(ig) 19 } 20 return createdAS, err 21 } 22 23 // GetAPIService returns the existing APIService. 24 func (c *Client) GetAPIService(name string) (*apiregistrationv1.APIService, error) { 25 return c.ApiregistrationV1Interface().ApiregistrationV1().APIServices().Get(context.TODO(), name, metav1.GetOptions{}) 26 } 27 28 // DeleteAPIService deletes the APIService. 29 func (c *Client) DeleteAPIService(name string, options *metav1.DeleteOptions) error { 30 return c.ApiregistrationV1Interface().ApiregistrationV1().APIServices().Delete(context.TODO(), name, *options) 31 } 32 33 // UpdateAPIService will update the given APIService resource. 34 func (c *Client) UpdateAPIService(apiService *apiregistrationv1.APIService) (*apiregistrationv1.APIService, error) { 35 klog.V(4).Infof("[UPDATE APIService]: %s", apiService.GetName()) 36 oldAPIService, err := c.GetAPIService(apiService.GetName()) 37 if err != nil { 38 return nil, err 39 } 40 patchBytes, err := createPatch(oldAPIService, apiService) 41 if err != nil { 42 return nil, fmt.Errorf("error creating patch for APIService: %v", err) 43 } 44 return c.ApiregistrationV1Interface().ApiregistrationV1().APIServices().Patch(context.TODO(), apiService.GetName(), types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}) 45 }