package resourcemanager

import (
	"context"

	v1 "k8s.io/api/rbac/v1"
	apierrors "k8s.io/apimachinery/pkg/api/errors"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
)

type clusterRoleBindingReaderWriter struct {
	kubeClient kubernetes.Interface
}

func (p clusterRoleBindingReaderWriter) Create(ctx context.Context, data *v1.ClusterRoleBinding) error {
	_, err := p.kubeClient.RbacV1().ClusterRoleBindings().Create(ctx, data, metav1.CreateOptions{})
	if err != nil && apierrors.IsAlreadyExists(err) {
		return nil
	}
	return WrapClientError(err)
}

func (p clusterRoleBindingReaderWriter) Delete(ctx context.Context, name string) error {
	err := p.kubeClient.RbacV1().ClusterRoleBindings().Delete(ctx, name, metav1.DeleteOptions{})
	if err != nil && apierrors.IsNotFound(err) {
		return nil
	}
	return WrapClientError(err)
}
