2024-10-01 01:15:51 +00:00
|
|
|
package kubernetes
|
|
|
|
|
|
|
|
import (
|
2024-11-11 20:55:30 +00:00
|
|
|
"errors"
|
|
|
|
"net/http"
|
2024-10-01 01:15:51 +00:00
|
|
|
"time"
|
|
|
|
|
|
|
|
rbacv1 "k8s.io/api/rbac/v1"
|
2024-11-11 20:55:30 +00:00
|
|
|
"k8s.io/apimachinery/pkg/types"
|
2024-10-01 01:15:51 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type (
|
|
|
|
K8sRoleBinding struct {
|
|
|
|
Name string `json:"name"`
|
2024-11-11 20:55:30 +00:00
|
|
|
UID types.UID `json:"uid"`
|
2024-10-01 01:15:51 +00:00
|
|
|
Namespace string `json:"namespace"`
|
|
|
|
RoleRef rbacv1.RoleRef `json:"roleRef"`
|
|
|
|
Subjects []rbacv1.Subject `json:"subjects"`
|
|
|
|
CreationDate time.Time `json:"creationDate"`
|
2024-11-11 20:55:30 +00:00
|
|
|
IsSystem bool `json:"isSystem"`
|
2024-10-01 01:15:51 +00:00
|
|
|
}
|
2024-11-11 20:55:30 +00:00
|
|
|
|
|
|
|
// K8sRoleBindingDeleteRequests is a mapping of namespace names to a slice of role bindings.
|
|
|
|
K8sRoleBindingDeleteRequests map[string][]string
|
2024-10-01 01:15:51 +00:00
|
|
|
)
|
2024-11-11 20:55:30 +00:00
|
|
|
|
|
|
|
func (r K8sRoleBindingDeleteRequests) Validate(request *http.Request) error {
|
|
|
|
if len(r) == 0 {
|
|
|
|
return errors.New("missing deletion request list in payload")
|
|
|
|
}
|
|
|
|
|
|
|
|
for ns := range r {
|
|
|
|
if len(ns) == 0 {
|
|
|
|
return errors.New("deletion given with empty namespace")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|