fix
This commit is contained in:
73
meta/domain-devspaces/stations.tf
Normal file
73
meta/domain-devspaces/stations.tf
Normal file
@@ -0,0 +1,73 @@
|
||||
locals {
|
||||
sorted-station-names = reverse(distinct(sort([
|
||||
for station in var.stations: station.name
|
||||
])))
|
||||
sorted-stations = flatten([
|
||||
for name in local.sorted-station-names: [
|
||||
for station in var.stations:
|
||||
station if station.name == name
|
||||
]
|
||||
])
|
||||
// le tableau de toutes les BDs requises dans toutes les devstations (aka de toutes les orga dont la devstation depend) triées par station/orga/ds
|
||||
sorted-datasets = flatten([
|
||||
for station in local.sorted-stations: flatten([
|
||||
for name in distinct(sort(station.organisations)):
|
||||
for org in local.sorted-organisations: flatten([
|
||||
for dsname in reverse(distinct(sort([for d in org.datasets: d.name]))):
|
||||
for ds in org.datasets:
|
||||
merge(ds, {
|
||||
"name" = "${org.name}-${ds.name}"
|
||||
"namespace" = "${var.domain}-devspaces-${station.name}"
|
||||
"organisation" = organisation
|
||||
"usage" = "station"
|
||||
"station" = station
|
||||
}) if ds.name = dsname
|
||||
]) if org.name == name
|
||||
])
|
||||
])
|
||||
}
|
||||
|
||||
resource "kubernetes_namespace_v1" "dev-ns" {
|
||||
count = length(local.sorted-stations)
|
||||
metadata {
|
||||
annotations = local.annotations
|
||||
labels = merge(local.common-labels, local.annotations)
|
||||
name = "${var.domain}-devspaces-${local.sorted-stations[count.index].name}"
|
||||
}
|
||||
}
|
||||
|
||||
resource "kubectl_manifest" "devstations" {
|
||||
count = length(local.sorted-stations)
|
||||
depends_on = [kubernetes_namespace_v1.dev-ns]
|
||||
yaml_body = <<-EOF
|
||||
apiVersion: "vynil.solidite.fr/v1"
|
||||
kind: "Install"
|
||||
metadata:
|
||||
name: "${local.sorted-stations[count.index].name}"
|
||||
namespace: "${var.domain}-devspaces-${local.sorted-stations[count.index].name}"
|
||||
labels: ${jsonencode(local.common-labels)}
|
||||
spec:
|
||||
distrib: "${var.distributions.domain}"
|
||||
category: "share"
|
||||
component: "code-server"
|
||||
options: ${jsonencode(merge(local.global, { for k, v in local.sorted-stations[count.index] : k => v if !contains(["name"], k) }))}
|
||||
EOF
|
||||
}
|
||||
|
||||
resource "kubectl_manifest" "datasets" {
|
||||
count = length(local.sorted-datasets)
|
||||
depends_on = [kubernetes_namespace_v1.dev-ns]
|
||||
yaml_body = <<-EOF
|
||||
apiVersion: "vynil.solidite.fr/v1"
|
||||
kind: "Install"
|
||||
metadata:
|
||||
name: "${local.sorted-datasets[count.index].name}"
|
||||
namespace: "${local.sorted-datasets[count.index].name}"
|
||||
labels: ${jsonencode(local.common-labels)}
|
||||
spec:
|
||||
distrib: "${var.distributions.domain}"
|
||||
category: "share"
|
||||
component: "dataset-${local.sorted-datasets[count.index].engine}"
|
||||
options: ${jsonencode(merge(local.global, { for k, v in local.sorted-datasets[count.index] : k => v if !contains(["name", "namespace", "engine", "organisation", "station", "usage"], k) }))}
|
||||
EOF
|
||||
}
|
||||
Reference in New Issue
Block a user