diff --git a/api/v1alpha1/backupclient.go b/api/v1alpha1/backupclient.go new file mode 100644 index 0000000..08c6ee8 --- /dev/null +++ b/api/v1alpha1/backupclient.go @@ -0,0 +1,41 @@ +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/client-go/rest" +) + +var SchemeGroupVersion = schema.GroupVersion{Group: "formol.desmojim.fr", Version: "v1alpha1"} + +type BackupClient struct { + restClient rest.Interface +} + +func NewClient(conf *rest.Config) (*BackupClient, error){ + scheme := runtime.NewScheme() + schemeBuilder := runtime.NewSchemeBuilder(func (scheme *runtime.Scheme) error { + scheme.AddKnowTypes(SchemeGroupVersion, + &BackupSession{}, + &BackupSessionList{}, + ) + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + }) + if err := schemeBuilder.AddToScheme(scheme); err != nil { + panic(err.Error()) + } + config := *conf + config.GroupVersion = &SchemeGroupVersion + config.APIPath = "/apis" + config.ContentType = runtime.ContentTypeJSON + config.NegotiatedSerializer = serializer.DirectCodecFactory{ + CodecFactory: serializer.NewCodecFactory(scheme) + } + client, err := rest.RESTClientFor(&config) + if err != nil { + panic(err.Error()) + } + return &BackupClient{restClient: client}, nil +} +