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 }