# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
#
# SPDX-License-Identifier: Apache-2.0

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "aether-roc-gui.fullname" . }}
  namespace: {{ .Release.Namespace }}
  labels:
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  server-block.conf: |-
    server {
        listen {{.Values.Nginx.port}};
        ssl_certificate /usr/share/certs/aether-roc-gui.crt;
        ssl_certificate_key /usr/share/certs/aether-roc-gui.key;
        {{- if .Values.grafana.proxyEnabled }}
        location /grafana/ {
            proxy_pass {{ .Values.grafana.protocol }}://{{tpl (.Values.grafana.service | default .Values.grafana.service) . }}:{{ .Values.grafana.port }}/;
            proxy_http_version 1.1;
            proxy_redirect off;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_hide_header 'X-Frame-Options';
            add_header X-Frame-Options SAMEORIGIN;
        }{{end}}
        {{- if .Values.prometheus.acc.proxyEnabled }}
        location /prometheus-acc/ {
            proxy_pass {{ .Values.prometheus.acc.protocol }}://{{tpl (.Values.prometheus.acc.service | default .Values.prometheus.acc.service) . }}:{{ .Values.prometheus.acc.port }}/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            add_header X-Frame-Options SAMEORIGIN;
        }{{end}}
        {{- if .Values.prometheus.amp.proxyEnabled }}
        location /prometheus-amp/ {
            proxy_pass {{ .Values.prometheus.amp.protocol }}://{{tpl (.Values.prometheus.amp.service | default .Values.prometheus.amp.service) . }}:{{ .Values.prometheus.amp.port }}/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            add_header X-Frame-Options SAMEORIGIN;
        }{{end}}
        {{- range $siteid, $site := .Values.prometheus.site }}
        location /prometheus-{{$site.name}}/ {
            proxy_pass {{ $site.protocol }}://{{ tpl $site.service $ }}:{{ $site.port }}/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            add_header X-Frame-Options SAMEORIGIN;
        }{{end}}
        location / {
          root /usr/share/nginx/html;
        }
        location /rs/nav/uiextensions {
          root /usr/share/nginx/html;
        }
        location /kubernetes-api/ {
            proxy_pass http://localhost:8001/;
            proxy_http_version 1.1;
        }
        {{- range $key, $value := .Values.aetherservices }}
        location /{{ $key }}/ {
            proxy_pass {{ $value.protocol}}://{{ tpl $value.service $ }}:{{ $value.http }}/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_connect_timeout       {{ $value.streamTimeout }};
            proxy_send_timeout          {{ $value.streamTimeout }};
            proxy_read_timeout          {{ $value.streamTimeout }};
            send_timeout                {{ $value.streamTimeout }};
        }
        {{ end }}
    }

