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

local smsgw = import "smsgw.libsonnet";
local teleimg = import "teleimg.libsonnet";
local frab = import "frab.libsonnet";
local pretalx = import "pretalx.libsonnet";
local cebulacamp = import "cebulacamp.libsonnet";
local capacifier = import "capacifier.libsonnet";

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

        cfg+: {
            smsgw: smsgw.cfg,
            teleimg: teleimg.cfg,
            frab: frab.cfg,
            pretalx: pretalx.cfg,
            cebulacamp: cebulacamp.cfg,
            capacifier: capacifier.cfg,
        },

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

    prod: self.hswaw("hswaw-prod") {
        cfg+: {
            smsgw+: {
                secret+: {
                    twilio_token: std.base64(std.split(importstr "secrets/plain/prod-twilio-token", "\n")[0]),
                },
                webhookFQDN: "smsgw-webhook-prod.hswaw.net",
            },
            teleimg+: {
                webFQDN: "teleimg.hswaw.net",
                secret+: {
                    telegram_token: std.base64(std.split(importstr "secrets/plain/prod-telegram-token", "\n")[0]),
                },
            },
            frab+: {
                storageClassName: "waw-hdd-redundant-3",
                webFQDN: "frab.hackerspace.pl",
                secret+: {
                    secretKeyBase: std.base64(std.split(importstr "secrets/plain/prod-frab-smtp-password", "\n")[0]),
                    smtpPassword: std.base64(std.split(importstr "secrets/plain/prod-frab-secret-key-base", "\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",
                },
            },
            cebulacamp+: {
                webFQDN: "cebula.camp",
            },
            capacifier+: {
                ldapBindPassword: std.split(importstr "secrets/plain/prod-capacifier-password", "\n")[0],
            },
        },
    },

    admins: kube.RoleBinding("admins") {
        metadata+: {
            namespace: "hswaw-prod",
        },
        roleRef: {
            apiGroup: "rbac.authorization.k8s.io",
            kind: "ClusterRole",
            name: "system:admin-namespace",
        },
        subjects: [
            kube.User("ar@hackerspace.pl"),
            kube.User("radex@hackerspace.pl"),
        ],
    },
}
