pkg/controller/jenkinsserviceaccount/client/jenkinsserviceaccount_client.go (93 lines of code) (raw):

package client import ( "context" "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest" jenkinsApi "github.com/epam/edp-jenkins-operator/v2/pkg/apis/v2/v1" ) var SchemeGroupVersion = schema.GroupVersion{Group: "v2.edp.epam.com", Version: "v1"} type EdpV1Client struct { crClient *rest.RESTClient } type JenkinsServiceAccountInterface interface { Get(name string, namespace string, options metav1.GetOptions) (result *jenkinsApi.JenkinsServiceAccount, err error) Create(jsa *jenkinsApi.JenkinsServiceAccount, namespace string) (result *jenkinsApi.JenkinsServiceAccount, err error) Update(jsa *jenkinsApi.JenkinsServiceAccount) (result *jenkinsApi.JenkinsServiceAccount, err error) } func NewForConfig(config *rest.Config) (*EdpV1Client, error) { if err := createCrdClient(config); err != nil { return nil, err } crClient, err := rest.RESTClientFor(config) if err != nil { return nil, fmt.Errorf("failed to create REST client: %w", err) } return &EdpV1Client{crClient: crClient}, nil } func (c *EdpV1Client) Get(ctx context.Context, name, namespace string, options metav1.GetOptions) (*jenkinsApi.JenkinsServiceAccount, error) { result := &jenkinsApi.JenkinsServiceAccount{} err := c.crClient.Get(). Namespace(namespace). Resource("jenkinsserviceaccounts"). Name(name). VersionedParams(&options, scheme.ParameterCodec). Do(ctx). Into(result) if err != nil { return result, fmt.Errorf("failed to get JenkinsServiceaccount: %w", err) } return result, nil } // Create takes the representation of a jenkinsserviceaccount and creates it. Returns the server's representation of the jenkinsserviceaccount, and an error, if there is any. func (c *EdpV1Client) Create(ctx context.Context, jsa *jenkinsApi.JenkinsServiceAccount, namespace string) (*jenkinsApi.JenkinsServiceAccount, error) { result := &jenkinsApi.JenkinsServiceAccount{} err := c.crClient.Post(). Namespace(namespace). Resource("jenkinsserviceaccounts"). Body(jsa). Do(ctx). Into(result) if err != nil { return nil, fmt.Errorf("failed to Post JenkinsServiceAccount: %w", err) } return result, nil } func (c *EdpV1Client) Update(ctx context.Context, jsa *jenkinsApi.JenkinsServiceAccount) (*jenkinsApi.JenkinsServiceAccount, error) { result := &jenkinsApi.JenkinsServiceAccount{} err := c.crClient.Put(). Namespace(jsa.Namespace). Resource("jenkinsserviceaccounts"). Name(jsa.Name). Body(jsa). Do(ctx). Into(result) if err != nil { return result, fmt.Errorf("failed to Put JenkinsServiceAccount: %w", err) } return result, nil } func createCrdClient(cfg *rest.Config) error { runtimeScheme := runtime.NewScheme() SchemeBuilder := runtime.NewSchemeBuilder(addKnownTypes) if err := SchemeBuilder.AddToScheme(runtimeScheme); err != nil { return fmt.Errorf("failed to add runtime scheme: %w", err) } config := cfg config.GroupVersion = &SchemeGroupVersion config.APIPath = "/apis" config.ContentType = runtime.ContentTypeJSON config.NegotiatedSerializer = serializer.NewCodecFactory(runtimeScheme) return nil } func addKnownTypes(runtimeScheme *runtime.Scheme) error { runtimeScheme.AddKnownTypes(SchemeGroupVersion, &jenkinsApi.JenkinsServiceAccount{}, &jenkinsApi.JenkinsServiceAccountList{}, ) metav1.AddToGroupVersion(runtimeScheme, SchemeGroupVersion) return nil }