aboutsummaryrefslogtreecommitdiff
path: root/deploy/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet
diff options
context:
space:
mode:
Diffstat (limited to 'deploy/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet')
-rw-r--r--deploy/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet156
1 files changed, 156 insertions, 0 deletions
diff --git a/deploy/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet b/deploy/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet
new file mode 100644
index 0000000..e81e6a8
--- /dev/null
+++ b/deploy/vendor/github.com/grafana/jsonnet-libs/ksonnet-util/legacy-custom.libsonnet
@@ -0,0 +1,156 @@
+// legacy-custom.libsonnet retrofits k8s-alpha functionality into ksonnet-lib
+{
+ core+: {
+ v1+: {
+ configMap+: {
+ // allow configMap without data
+ new(name, data={})::
+ super.new(name, data),
+ withData(data)::
+ // don't add 'data' key if data={}
+ if (data == {}) then {}
+ else super.withData(data),
+ withDataMixin(data)::
+ // don't add 'data' key if data={}
+ if (data == {}) then {}
+ else super.withDataMixin(data),
+ },
+
+ volume+:: {
+ // Make items parameter optional from fromConfigMap
+ fromConfigMap(name, configMapName, configMapItems=[])::
+ {
+ configMap+:
+ if configMapItems == [] then { items:: null }
+ else {},
+ }
+ + super.fromConfigMap(name, configMapName, configMapItems),
+
+ // Shortcut constructor for secret volumes.
+ fromSecret(name, secretName)::
+ super.withName(name) +
+ super.mixin.secret.withSecretName(secretName),
+
+ // Rename emptyDir to claimName
+ fromPersistentVolumeClaim(name='', claimName=''):: super.fromPersistentVolumeClaim(name=name, emptyDir=claimName),
+ },
+
+ volumeMount+:: {
+ // Override new, such that it doesn't always set readOnly: false.
+ new(name, mountPath, readOnly=false)::
+ {} + self.withName(name) + self.withMountPath(mountPath) +
+ if readOnly
+ then self.withReadOnly(readOnly)
+ else {},
+ },
+
+ containerPort+:: {
+ // Shortcut constructor for UDP ports.
+ newNamedUDP(name, containerPort)::
+ super.newNamed(name=name, containerPort=containerPort) +
+ super.withProtocol('UDP'),
+ },
+
+ persistentVolumeClaim+:: {
+ new(name='')::
+ super.new()
+ + (if name != ''
+ then super.mixin.metadata.withName(name)
+ else {}),
+ },
+
+ container+:: {
+ withEnvMixin(es)::
+ // if an envvar has an empty value ("") we want to remove that property
+ // because k8s will remove that and then it would always
+ // show up as a difference.
+ local removeEmptyValue(obj) =
+ if std.objectHas(obj, 'value') && std.length(obj.value) == 0 then
+ {
+ [k]: obj[k]
+ for k in std.objectFields(obj)
+ if k != 'value'
+ }
+ else
+ obj;
+ super.withEnvMixin([
+ removeEmptyValue(envvar)
+ for envvar in es
+ ]),
+
+ withEnvMap(es)::
+ self.withEnvMixin([
+ $.core.v1.envVar.new(k, es[k])
+ for k in std.objectFields(es)
+ ]),
+ },
+ },
+ },
+
+ batch+: {
+ v1beta1+: {
+ cronJob+: {
+ new(name='', schedule='', containers=[])::
+ super.new()
+ + super.mixin.spec.jobTemplate.spec.template.spec.withContainers(containers)
+ + (if name != ''
+ then
+ super.mixin.metadata.withName(name)
+ + super.mixin.spec.jobTemplate.spec.template.metadata.withLabels({ name: name })
+ else {})
+ + (
+ if schedule != ''
+ then super.mixin.spec.withSchedule(schedule)
+ else {}
+ ),
+ },
+ },
+ },
+
+ local appsExtentions = {
+ daemonSet+: {
+ new(name, containers, podLabels={})::
+ local labels = podLabels { name: name };
+ super.new() +
+ super.mixin.metadata.withName(name) +
+ super.mixin.spec.template.metadata.withLabels(labels) +
+ super.mixin.spec.template.spec.withContainers(containers) +
+ // apps.v1 requires an explicit selector:
+ super.mixin.spec.selector.withMatchLabels(labels),
+ },
+ deployment+: {
+ new(name, replicas, containers, podLabels={})::
+ local labels = podLabels { name: name };
+ super.new(name, replicas, containers, labels) +
+
+ // apps.v1 requires an explicit selector:
+ super.mixin.spec.selector.withMatchLabels(labels),
+ },
+ statefulSet+: {
+ new(name, replicas, containers, volumeClaims=[], podLabels={})::
+ local labels = podLabels { name: name };
+ super.new(name, replicas, containers, volumeClaims, labels) +
+
+ // apps.v1 requires an explicit selector:
+ super.mixin.spec.selector.withMatchLabels(labels) +
+
+ // remove volumeClaimTemplates if empty
+ // (otherwise it will create a diff all the time)
+ (
+ if std.length(volumeClaims) > 0
+ then super.mixin.spec.withVolumeClaimTemplates(volumeClaims)
+ else {}
+ ),
+ },
+ },
+
+ extensions+: {
+ v1beta1+: appsExtentions,
+ },
+
+ apps+: {
+ v1beta1+: appsExtentions,
+ v1+: appsExtentions,
+ },
+
+}