{{/*
# Copyright © 2020 Orange
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
*/}}

{{- $dot := . -}}
{{- range $role_type := $dot.Values.roles }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: {{ printf "%s-%s" (include "common.release" $dot) $role_type }}
  namespace: {{ include "common.namespace" $dot }}
rules:
{{-   if eq $role_type "read" }}
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  - batch
  - extensions
  resources:
  - endpoints
  - services
  - nodes
  - pods
  - deployments
  - deployments/status
  - jobs
  - jobs/status
  - statefulsets
  - replicasets
  - replicasets/status
  - daemonsets
  verbs:
  - get
  - watch
  - list
{{-   else  }}
{{-     if eq $role_type "create" }}
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  - batch
  - extensions
  resources:
  - pods
  - deployments
  - deployments/status
  - jobs
  - jobs/status
  - statefulsets
  - replicasets
  - replicasets/status
  - daemonsets
  - secrets
  - services
  verbs:
  - get
  - watch
  - list
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  resources:
  - statefulsets
  - configmaps
  verbs:
  - patch
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  resources:
  - deployments
  - secrets
  - services
  - pods
  verbs:
  - create
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  resources:
  - pods
  - persistentvolumeclaims
  - secrets
  - deployments
  - services
  verbs:
  - delete
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  resources:
  - pods/exec
  verbs:
  - create
- apiGroups:
  - cert-manager.io
  resources:
  - certificates
  verbs:
  - create
  - delete
{{-     else }}
# if you don't match read or create, then you're not allowed to use API
# except to see basic information about yourself
- apiGroups:
  - authorization.k8s.io
  resources:
  - selfsubjectaccessreviews
  - selfsubjectrulesreviews
  verbs:
  - create
{{-     end }}
{{-   end }}
{{- end }}
