{{/*
# 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:
  - pods
  - deployments
  - 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
  - jobs
  - jobs/status
  - statefulsets
  - replicasets
  - replicasets/status
  - daemonsets
  - secrets
  verbs:
  - get
  - watch
  - list
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  resources:
  - statefulsets
  verbs:
  - patch
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  resources:
  - deployments
  - secrets
  verbs:
  - create
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  resources:
  - pods
  - persistentvolumeclaims
  - secrets
  - deployment
  verbs:
  - delete
- apiGroups:
  - "" # "" indicates the core API group
  - apps
  resources:
  - pods/exec
  verbs:
  - create
{{-     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 }}
