service/gitserver/service.go (63 lines of code) (raw):

package gitserver import ( "context" "fmt" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/client" pkgScheme "sigs.k8s.io/controller-runtime/pkg/scheme" "ddm-admin-console/service" ) type Service struct { service.UserConfig k8sClient client.Client scheme *runtime.Scheme namespace string restConfig *rest.Config } func New(sch *runtime.Scheme, k8sConfig *rest.Config, namespace string) (*Service, error) { builder := pkgScheme.Builder{ GroupVersion: schema.GroupVersion{ Group: "v2.edp.epam.com", Version: "v1alpha1", }, } builder.Register(&GitServer{}, &GitServerList{}) if err := builder.AddToScheme(sch); err != nil { return nil, fmt.Errorf("failed to add builder to scheme: %w", err) } cl, err := client.New( k8sConfig, client.Options{ Scheme: sch, }, ) if err != nil { return nil, fmt.Errorf("failed to build k8s client: %w", err) } return &Service{ k8sClient: cl, scheme: sch, namespace: namespace, UserConfig: service.UserConfig{ RestConfig: k8sConfig, }, restConfig: k8sConfig, }, nil } func (s *Service) Get(name string) (*GitServer, error) { var gitServer GitServer if err := s.k8sClient.Get( context.Background(), types.NamespacedName{ Namespace: s.namespace, Name: name, }, &gitServer, ); err != nil { return nil, fmt.Errorf("failed to get codebase %s: %w", name, err) } return &gitServer, nil }