kube: standardize on a `local top = self` convention
A convention is introduced to specify `local top = self` declaration at the top of an app/service/component's jsonnet, representing the top-level object. Reasoning is as following:
- `top` is more universal/unambiguous than `app`
- `top` is usually shorter than $NAME
- a conventional `top` instead of $NAME (coupled with other conventions introduced) makes app jsonnets wonderfully copy-paste'able, aiding in learning and quickly building
Change-Id: I7ece83ce7e97021ad98a6abb3500fb9839936811
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1805
Reviewed-by: q3k <q3k@hackerspace.pl>
diff --git a/app/matrix/lib/matrix.libsonnet b/app/matrix/lib/matrix.libsonnet
index fef0bd8..c17a934 100644
--- a/app/matrix/lib/matrix.libsonnet
+++ b/app/matrix/lib/matrix.libsonnet
@@ -32,8 +32,8 @@
local postgres = import "../../../kube/postgres.libsonnet";
{
- local app = self,
- local cfg = app.cfg,
+ local top = self,
+ local cfg = top.cfg,
cfg:: {
namespace: error "cfg.namespace must be set",
# webDomain is the domain name at which element will run
@@ -96,7 +96,7 @@
},
dataVolume: kube.PersistentVolumeClaim("synapse-data-waw3") {
- metadata+: app.metadata("synapse-data"),
+ metadata+: top.metadata("synapse-data"),
storage:: "50Gi",
storageClass:: cfg.storageClassName,
},
@@ -112,7 +112,7 @@
signing_key_path: "/data/%s.signing.key" % [cfg.serverName],
app_service_config_files: [
"/appservices/%s/registration.yaml" % [k]
- for k in std.objectFields(app.appservices)
+ for k in std.objectFields(top.appservices)
],
} + (if cfg.cas.enable then {
cas_config: {
@@ -123,15 +123,15 @@
} else {}),
synapseConfigMap: kube.ConfigMap("synapse") {
- metadata+: app.metadata("synapse"),
+ metadata+: top.metadata("synapse"),
data: {
- "homeserver.yaml": std.manifestYamlDoc(app.synapseConfig),
+ "homeserver.yaml": std.manifestYamlDoc(top.synapseConfig),
"log.config": importstr "synapse/log.config",
},
},
casDeployment: if cfg.cas.enable then kube.Deployment("oauth2-cas-proxy") {
- metadata+: app.metadata("oauth2-cas-proxy"),
+ metadata+: top.metadata("oauth2-cas-proxy"),
spec+: {
replicas: 1,
template+: {
@@ -160,22 +160,22 @@
},
casSvc: if cfg.cas.enable then kube.Service("oauth2-cas-proxy") {
- metadata+: app.metadata("oauth2-cas-proxy"),
- target:: app.casDeployment,
+ metadata+: top.metadata("oauth2-cas-proxy"),
+ target:: top.casDeployment,
},
synapseDeployment: kube.Deployment("synapse") {
- metadata+: app.metadata("synapse"),
+ metadata+: top.metadata("synapse"),
spec+: {
replicas: 1,
template+: {
spec+: {
volumes_: {
- data: kube.PersistentVolumeClaimVolume(app.dataVolume),
- config: kube.ConfigMapVolume(app.synapseConfigMap),
+ data: kube.PersistentVolumeClaimVolume(top.dataVolume),
+ config: kube.ConfigMapVolume(top.synapseConfigMap),
} + {
[k]: { secret: { secretName: "appservice-%s-registration" % [k] } }
- for k in std.objectFields(app.appservices)
+ for k in std.objectFields(top.appservices)
},
containers_: {
web: kube.Container("synapse") {
@@ -203,7 +203,7 @@
config: { mountPath: "/conf", },
} + {
[k]: { mountPath: "/appservices/%s" % [k] }
- for k in std.objectFields(app.appservices)
+ for k in std.objectFields(top.appservices)
},
},
},
@@ -218,8 +218,8 @@
},
synapseSvc: kube.Service("synapse") {
- metadata+: app.metadata("synapse"),
- target:: app.synapseDeployment,
+ metadata+: top.metadata("synapse"),
+ target:: top.synapseDeployment,
},
riotConfig:: {
@@ -253,9 +253,9 @@
},
riotConfigMap: kube.ConfigMap("riot-web-config") {
- metadata+: app.metadata("riot-web-config"),
+ metadata+: top.metadata("riot-web-config"),
data: {
- "config.json": std.manifestJsonEx(app.riotConfig, ""),
+ "config.json": std.manifestJsonEx(top.riotConfig, ""),
// Standard nginx.conf, made to work when running as unprivileged user.
"nginx.conf": |||
worker_processes auto;
@@ -304,13 +304,13 @@
},
riotDeployment: kube.Deployment("riot-web") {
- metadata+: app.metadata("riot-web"),
+ metadata+: top.metadata("riot-web"),
spec+: {
replicas: 1,
template+: {
spec+: {
volumes_: {
- config: kube.ConfigMapVolume(app.riotConfigMap),
+ config: kube.ConfigMapVolume(top.riotConfigMap),
},
containers_: {
web: kube.Container("riot-web") {
@@ -343,13 +343,13 @@
},
riotSvc: kube.Service("riot-web") {
- metadata+: app.metadata("riot-web"),
- target:: app.riotDeployment,
+ metadata+: top.metadata("riot-web"),
+ target:: top.riotDeployment,
},
wellKnown: if cfg.wellKnown then {
deployment: kube.Deployment("wellknown") {
- metadata+: app.metadata("wellknown"),
+ metadata+: top.metadata("wellknown"),
spec+: {
replicas: 1,
template+: {
@@ -373,8 +373,8 @@
},
},
svc: kube.Service("wellknown") {
- metadata+: app.metadata("wellknown"),
- target:: app.wellKnown.deployment,
+ metadata+: top.metadata("wellknown"),
+ target:: top.wellKnown.deployment,
},
} else {},
@@ -388,14 +388,14 @@
ingress: kube.SimpleIngress("matrix") {
hosts:: [cfg.webDomain],
- target_service:: app.riotSvc,
- metadata+: app.metadata("matrix"),
+ target_service:: top.riotSvc,
+ metadata+: top.metadata("matrix"),
extra_paths:: [
- { path: "/_matrix", backend: app.synapseSvc.name_port },
+ { path: "/_matrix", backend: top.synapseSvc.name_port },
] + (if cfg.cas.enable then [
- { path: "/_cas", backend: app.casSvc.name_port },
+ { path: "/_cas", backend: top.casSvc.name_port },
] else []) + (if cfg.wellKnown then [
- { path: "/.well-known/matrix", backend: app.wellKnown.svc.name_port },
+ { path: "/.well-known/matrix", backend: top.wellKnown.svc.name_port },
] else [])
},
}