local mirko = import "../../kube/mirko.libsonnet";
local kube = import "../../kube/kube.libsonnet";

local teleimg = import "teleimg.libsonnet";
local pretalx = import "pretalx.libsonnet";

{
    hswaw(name):: mirko.Environment(name) {
        local env = self,
        local cfg = self.cfg,

        cfg+: {
            teleimg: teleimg.cfg,
            pretalx: pretalx.cfg,
        },

        components: {
            teleimg: teleimg.teleimg(cfg.teleimg, env),
            lelegram: teleimg.lelegram(cfg.teleimg, env),
            pretalx: pretalx.component(cfg.pretalx, env) {
                cronjob: null,
            },
        },
    },

    prod: self.hswaw("hswaw-prod") {
        cfg+: {
            teleimg+: {
                webFQDN: "teleimg.hswaw.net",
                secret+: {
                    telegram_token: std.base64(std.split(importstr "secrets/plain/prod-telegram-token", "\n")[0]),
                },
            },
            pretalx+: {
                storageClassName: "waw-hdd-redundant-3",
                webFQDN: "cfp.cebula.camp",
                smtpPassword: std.base64(std.split(importstr "secrets/plain/prod-pretalx-smtp-password", "\n")[0]),
                s3+: {
                    credsSecret: import "secrets/plain/prod-pretalx-s3.json",
                },
            },
        },
    },
}
