{{/*
# 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: {{ include "common.fullname" (dict "suffix" $role_type "dot" $dot )}}
  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 hasKey $dot.Values.new_roles_definitions $role_type  }}
{{ include "common.tplValue" ( dict "value" (index $dot.Values.new_roles_definitions $role_type ) "context" $dot) }}
{{-     else}}
# if you don't match read or create, then you're not allowed to use API
- apiGroups: []
  resources: []
  verbs: []
{{-     end }}
{{-   end }}
{{- end }}
{{- end }}
