github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/pkg/kubernetes/resources/clusterrole/adapt.go (about)

     1  package clusterrole
     2  
     3  import (
     4  	"github.com/caos/orbos/pkg/kubernetes"
     5  	"github.com/caos/orbos/pkg/kubernetes/resources"
     6  	"github.com/caos/orbos/pkg/labels"
     7  	rbac "k8s.io/api/rbac/v1"
     8  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     9  )
    10  
    11  func AdaptFuncToEnsure(nameLabels *labels.Name, apiGroups, kubeResources, verbs []string) (resources.QueryFunc, error) {
    12  	cr := &rbac.ClusterRole{
    13  		ObjectMeta: metav1.ObjectMeta{
    14  			Name:   nameLabels.Name(),
    15  			Labels: labels.MustK8sMap(nameLabels),
    16  		},
    17  		Rules: []rbac.PolicyRule{{
    18  			APIGroups: apiGroups,
    19  			Resources: kubeResources,
    20  			Verbs:     verbs,
    21  		}},
    22  	}
    23  	return func(_ kubernetes.ClientInt, _ map[string]interface{}) (resources.EnsureFunc, error) {
    24  		return func(k8sClient kubernetes.ClientInt) error {
    25  			return k8sClient.ApplyClusterRole(cr)
    26  		}, nil
    27  	}, nil
    28  }
    29  
    30  func AdaptFuncToDestroy(name string) (resources.DestroyFunc, error) {
    31  	return func(client kubernetes.ClientInt) error {
    32  		return client.DeleteClusterRole(name)
    33  	}, nil
    34  }