pkg/client/edp_client.go (45 lines of code) (raw):
package client
import (
"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/rest"
gerritApi "github.com/epam/edp-gerrit-operator/v2/api/v1"
)
var SchemeGroupVersion = schema.GroupVersion{Group: "v2.edp.epam.com", Version: "v1"}
type EdpV1Client struct {
crClient *rest.RESTClient
}
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 a REST client from config: %w", err)
}
return &EdpV1Client{crClient: crClient}, nil
}
func createCrdClient(cfg *rest.Config) error {
scheme := runtime.NewScheme()
SchemeBuilder := runtime.NewSchemeBuilder(addKnownTypes)
if err := SchemeBuilder.AddToScheme(scheme); err != nil {
return fmt.Errorf("fail to configure required K8s scheme: %w", err)
}
config := cfg
config.GroupVersion = &SchemeGroupVersion
config.APIPath = "/apis"
config.ContentType = runtime.ContentTypeJSON
config.NegotiatedSerializer = serializer.NewCodecFactory(scheme)
return nil
}
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&gerritApi.Gerrit{},
&gerritApi.GerritList{},
)
metaV1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}