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

// This deploys factorio instances and the modproxy in the `factorio`
// Kubernetes namespace.
//
// Available factorio versions:
//  - 0.18.40-1
//  - 1.0.0-1
// See: //third_party/factorio.

{
    local prod = self,

    proxyImage:: "registry.k0.hswaw.net/games/factorio/modproxy:1589157915-eafe7be328477e8a6590c4210466ef12901f1b9a",

    namespace: kube.Namespace("factorio"),
    instance(name, tag):: factorio {
        cfg+: {
            namespace: "factorio",
            prefix: name + "-",
            tag: tag,
            proxyImage: prod.proxyImage,
        }
    },

    proxy: {
        pvc: kube.PersistentVolumeClaim("proxy-cas") {
            metadata+: {
                namespace: "factorio",
            },
            spec+: {
                storageClassName: "waw-hdd-redundant-3",
                accessModes: [ "ReadWriteOnce" ],
                resources: {
                    requests: {
                        storage: "32Gi",
                    },
                },
            },
        },
        deploy: kube.Deployment("proxy") {
            metadata+: {
                namespace: "factorio",
            },
            spec+: {
                template+: {
                    spec+: {
                        volumes_: {
                            cas: kube.PersistentVolumeClaimVolume(prod.proxy.pvc),
                        },
                        containers_: {
                            proxy: kube.Container("proxy") {
                                image:prod.proxyImage,
                                command: [
                                    "/games/factorio/modproxy/modproxy",
                                    "-hspki_disable",
                                    "-cas_directory", "/mnt/cas",
                                    "-listen_address", "0.0.0.0:4200",
                                ],
                                volumeMounts_: {
                                    cas: { mountPath: "/mnt/cas" },
                                },
                                ports_: {
                                    client: { containerPort: 4200 },
                                },
                            },
                        },
                    },
                },
            },
        },
        svc: kube.Service("proxy") {
            metadata+: {
                namespace: "factorio",
            },
            target_pod:: prod.proxy.deploy.spec.template,
            spec+: {
                ports: [
                    { name: "client", port: 4200, targetPort: 4200, protocol: "TCP" },
                ],
            },
        },
    },

    local mod = function(name, version) { name: name, version: version },
}
